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-jdk14 Show documentation
Show all versions of bcprov-jdk14 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.4.
package org.bouncycastle.crypto.tls;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.CryptoException;
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
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;
public abstract class TlsDSASigner
extends AbstractTlsSigner
{
public byte[] generateRawSignature(AsymmetricKeyParameter privateKey, byte[] md5AndSha1)
throws CryptoException
{
// Note: Only use the SHA1 part of the hash
Signer signer = makeSigner(new NullDigest(), true,
new ParametersWithRandom(privateKey, this.context.getSecureRandom()));
signer.update(md5AndSha1, 16, 20);
return signer.generateSignature();
}
public boolean verifyRawSignature(byte[] sigBytes, AsymmetricKeyParameter publicKey, byte[] md5AndSha1)
throws CryptoException
{
// Note: Only use the SHA1 part of the hash
Signer signer = makeSigner(new NullDigest(), false, publicKey);
signer.update(md5AndSha1, 16, 20);
return signer.verifySignature(sigBytes);
}
public Signer createSigner(AsymmetricKeyParameter privateKey)
{
return makeSigner(new SHA1Digest(), true, new ParametersWithRandom(privateKey, this.context.getSecureRandom()));
}
public Signer createVerifyer(AsymmetricKeyParameter publicKey)
{
return makeSigner(new SHA1Digest(), false, publicKey);
}
protected Signer makeSigner(Digest d, boolean forSigning, CipherParameters cp)
{
Signer s = new DSADigestSigner(createDSAImpl(), d);
s.init(forSigning, cp);
return s;
}
protected abstract DSA createDSAImpl();
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy