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