diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-09-01 16:47:51 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-09-01 16:47:51 +0400 |
commit | 53f9f55010d2132a4430de9eb938e67f207a8724 (patch) | |
tree | 0587fd706f5afac5ad39b35db0905053c5f06af2 /core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java | |
parent | 9c25ba42b8f25ece8731194e59729dd702b6c152 (diff) |
Add TLS 1.2 support to TlsSigner and implementations
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java index 3aeeb8f6..257ece0b 100644 --- a/core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java +++ b/core/src/main/java/org/bouncycastle/crypto/tls/TlsDSASigner.java @@ -33,14 +33,25 @@ public abstract class TlsDSASigner return signer.verifySignature(sigBytes); } - public Signer createSigner(AsymmetricKeyParameter privateKey) + public Signer createSigner(SignatureAndHashAlgorithm algorithm, AsymmetricKeyParameter privateKey) { - return makeSigner(new SHA1Digest(), true, new ParametersWithRandom(privateKey, this.context.getSecureRandom())); + return makeSigner(algorithm, true, new ParametersWithRandom(privateKey, this.context.getSecureRandom())); } - public Signer createVerifyer(AsymmetricKeyParameter publicKey) + public Signer createVerifyer(SignatureAndHashAlgorithm algorithm, AsymmetricKeyParameter publicKey) { - return makeSigner(new SHA1Digest(), false, publicKey); + return makeSigner(algorithm, false, publicKey); + } + + protected Signer makeSigner(SignatureAndHashAlgorithm algorithm, boolean forSigning, CipherParameters cp) + { + if (algorithm != null + && (algorithm.getHash() != HashAlgorithm.sha1 || algorithm.getSignature() != getSignatureAlgorithm())) + { + throw new IllegalStateException(); + } + + return makeSigner(TlsUtils.createHash(HashAlgorithm.sha1), forSigning, cp); } protected Signer makeSigner(Digest d, boolean forSigning, CipherParameters cp) @@ -50,5 +61,7 @@ public abstract class TlsDSASigner return s; } + protected abstract short getSignatureAlgorithm(); + protected abstract DSA createDSAImpl(); } |