<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.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 (signatureAndHashAlgorithm != null) { int signatureScheme = SignatureScheme.From(signatureAndHashAlgorithm); if (SignatureScheme.IsRsaPss(signatureScheme)) return new BcTlsRsaPssSigner(crypto, rsaKeyParameters, signatureScheme); } return new BcTlsRsaSigner(crypto, rsaKeyParameters); } DsaPrivateKeyParameters dsaPrivateKeyParameters = privateKey as DsaPrivateKeyParameters; if (dsaPrivateKeyParameters != null) return new BcTlsDsaSigner(crypto, dsaPrivateKeyParameters); ECPrivateKeyParameters eCPrivateKeyParameters = privateKey as ECPrivateKeyParameters; if (eCPrivateKeyParameters != null) { if (signatureAndHashAlgorithm != null) { int signatureScheme2 = SignatureScheme.From(signatureAndHashAlgorithm); if (SignatureScheme.IsECDsa(signatureScheme2)) return new BcTlsECDsa13Signer(crypto, eCPrivateKeyParameters, signatureScheme2); } return new BcTlsECDsaSigner(crypto, eCPrivateKeyParameters); } Ed25519PrivateKeyParameters ed25519PrivateKeyParameters = privateKey as Ed25519PrivateKeyParameters; if (ed25519PrivateKeyParameters != null) return new BcTlsEd25519Signer(crypto, ed25519PrivateKeyParameters); Ed448PrivateKeyParameters ed448PrivateKeyParameters = privateKey as Ed448PrivateKeyParameters; if (ed448PrivateKeyParameters != null) return new BcTlsEd448Signer(crypto, ed448PrivateKeyParameters); MLDsaPrivateKeyParameters mLDsaPrivateKeyParameters = privateKey as MLDsaPrivateKeyParameters; if (mLDsaPrivateKeyParameters != null) { if (signatureAndHashAlgorithm != null) { int signatureScheme3 = SignatureScheme.From(signatureAndHashAlgorithm); TlsSigner tlsSigner = BcTlsMLDsaSigner.Create(crypto, mLDsaPrivateKeyParameters, signatureScheme3); if (tlsSigner != null) return tlsSigner; } throw new ArgumentException("ML-DSA private key of wrong type for signature algorithm"); } throw new ArgumentException("'privateKey' type not supported: " + privateKey.GetType().FullName); } public BcDefaultTlsCredentialedSigner(TlsCryptoParameters cryptoParams, BcTlsCrypto crypto, AsymmetricKeyParameter privateKey, Certificate certificate, SignatureAndHashAlgorithm signatureAndHashAlgorithm) : base(cryptoParams, MakeSigner(crypto, privateKey, certificate, signatureAndHashAlgorithm), certificate, signatureAndHashAlgorithm) { } } }