package org.bouncycastle.tls.crypto.impl.bc; import org.bouncycastle.crypto.params.AsymmetricKeyParameter; import org.bouncycastle.crypto.params.DSAPrivateKeyParameters; import org.bouncycastle.crypto.params.ECPrivateKeyParameters; import org.bouncycastle.crypto.params.RSAKeyParameters; import org.bouncycastle.tls.Certificate; import org.bouncycastle.tls.DefaultTlsCredentialedSigner; import org.bouncycastle.tls.SignatureAndHashAlgorithm; import org.bouncycastle.tls.crypto.TlsCryptoParameters; import org.bouncycastle.tls.crypto.TlsSigner; /** * Credentialed class for generating signatures based on the use of primitives from the BC light-weight API. */ public class BcDefaultTlsCredentialedSigner extends DefaultTlsCredentialedSigner { private static TlsSigner makeSigner(BcTlsCrypto crypto, AsymmetricKeyParameter privateKey) { TlsSigner signer; if (privateKey instanceof RSAKeyParameters) { signer = new BcTlsRSASigner(crypto, privateKey); } else if (privateKey instanceof DSAPrivateKeyParameters) { signer = new BcTlsDSASigner(crypto, privateKey); } else if (privateKey instanceof ECPrivateKeyParameters) { signer = new BcTlsECDSASigner(crypto, privateKey); } else { throw new IllegalArgumentException("'privateKey' type not supported: " + privateKey.getClass().getName()); } return signer; } public BcDefaultTlsCredentialedSigner(TlsCryptoParameters cryptoParams, BcTlsCrypto crypto, AsymmetricKeyParameter privateKey, Certificate certificate, SignatureAndHashAlgorithm signatureAndHashAlgorithm) { super(cryptoParams, makeSigner(crypto, privateKey), certificate, signatureAndHashAlgorithm); } }