org.bouncycastle.crypto.tls.TlsDSASigner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk16 Show documentation
Show all versions of bcprov-jdk16 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.6.
The newest version!
package org.bouncycastle.crypto.tls;
import java.security.SecureRandom;
import org.bouncycastle.crypto.CryptoException;
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Signer;
import org.bouncycastle.crypto.digests.NullDigest;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.crypto.params.ParametersWithRandom;
import org.bouncycastle.crypto.signers.DSADigestSigner;
abstract class TlsDSASigner implements TlsSigner
{
public byte[] calculateRawSignature(SecureRandom secureRandom, AsymmetricKeyParameter privateKey, byte[] md5andsha1)
throws CryptoException
{
// Note: Only use the SHA1 part of the hash
Signer signer = new DSADigestSigner(createDSAImpl(), new NullDigest());
signer.init(true, new ParametersWithRandom(privateKey, secureRandom));
signer.update(md5andsha1, 16, 20);
return signer.generateSignature();
}
public Signer createVerifyer(AsymmetricKeyParameter publicKey)
{
Signer verifyer = new DSADigestSigner(createDSAImpl(), new SHA1Digest());
verifyer.init(false, publicKey);
return verifyer;
}
protected abstract DSA createDSAImpl();
}