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)
{
}
}
}