<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

PskTlsServer

using Org.BouncyCastle.Tls.Crypto; namespace Org.BouncyCastle.Tls { public class PskTlsServer : AbstractTlsServer { private static readonly int[] DefaultCipherSuites = new int[12] { 52396, 49208, 49207, 49206, 49205, 52397, 171, 170, 179, 178, 145, 144 }; protected readonly TlsPskIdentityManager m_pskIdentityManager; public PskTlsServer(TlsCrypto crypto, TlsPskIdentityManager pskIdentityManager) : base(crypto) { m_pskIdentityManager = pskIdentityManager; } protected virtual TlsCredentialedDecryptor GetRsaEncryptionCredentials() { throw new TlsFatalAlert(80); } protected override ProtocolVersion[] GetSupportedVersions() { return ProtocolVersion.TLSv12.Only(); } protected override int[] GetSupportedCipherSuites() { return TlsUtilities.GetSupportedCipherSuites(Crypto, DefaultCipherSuites); } public override TlsCredentials GetCredentials() { int keyExchangeAlgorithm = m_context.SecurityParameters.KeyExchangeAlgorithm; if ((uint)(keyExchangeAlgorithm - 13) > 1) { switch (keyExchangeAlgorithm) { case 24: break; case 15: return GetRsaEncryptionCredentials(); default: throw new TlsFatalAlert(80); } } return null; } public override TlsPskIdentityManager GetPskIdentityManager() { return m_pskIdentityManager; } } }