<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" />

BcDefaultTlsCredentialedSigner

Credentialed class for generating signatures based on the use of primitives from the BC light-weight API.
using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using System; namespace Org.BouncyCastle.Tls.Crypto.Impl.BC { public class BcDefaultTlsCredentialedSigner : DefaultTlsCredentialedSigner { private static TlsSigner MakeSigner(BcTlsCrypto crypto, AsymmetricKeyParameter privateKey, Certificate certificate, SignatureAndHashAlgorithm signatureAndHashAlgorithm) { RsaKeyParameters rsaKeyParameters = privateKey as RsaKeyParameters; if (rsaKeyParameters == null) { if (!(privateKey is DsaPrivateKeyParameters)) { if (!(privateKey is ECPrivateKeyParameters)) { if (!(privateKey is Ed25519PrivateKeyParameters)) { if (!(privateKey is Ed448PrivateKeyParameters)) throw new ArgumentException("'privateKey' type not supported: " + privateKey.GetType().FullName); return new BcTlsEd448Signer(crypto, (Ed448PrivateKeyParameters)privateKey); } return new BcTlsEd25519Signer(crypto, (Ed25519PrivateKeyParameters)privateKey); } ECPrivateKeyParameters privateKey2 = (ECPrivateKeyParameters)privateKey; if (signatureAndHashAlgorithm != null) { int signatureScheme = SignatureScheme.From(signatureAndHashAlgorithm); if (SignatureScheme.IsECDsa(signatureScheme)) return new BcTlsECDsa13Signer(crypto, privateKey2, signatureScheme); } return new BcTlsECDsaSigner(crypto, privateKey2); } return new BcTlsDsaSigner(crypto, (DsaPrivateKeyParameters)privateKey); } if (signatureAndHashAlgorithm != null) { int signatureScheme2 = SignatureScheme.From(signatureAndHashAlgorithm); if (SignatureScheme.IsRsaPss(signatureScheme2)) return new BcTlsRsaPssSigner(crypto, rsaKeyParameters, signatureScheme2); } return new BcTlsRsaSigner(crypto, rsaKeyParameters); } public BcDefaultTlsCredentialedSigner(TlsCryptoParameters cryptoParams, BcTlsCrypto crypto, AsymmetricKeyParameter privateKey, Certificate certificate, SignatureAndHashAlgorithm signatureAndHashAlgorithm) : base(cryptoParams, MakeSigner(crypto, privateKey, certificate, signatureAndHashAlgorithm), certificate, signatureAndHashAlgorithm) { } } }