org.bouncycastle.jcajce.provider.digest.BCMessageDigest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 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.5 to JDK 1.8.
package org.bouncycastle.jcajce.provider.digest;
import java.security.DigestException;
import java.security.MessageDigest;
import org.bouncycastle.crypto.Digest;
public class BCMessageDigest
extends MessageDigest
{
protected Digest digest;
protected int digestSize;
protected BCMessageDigest(
Digest digest)
{
super(digest.getAlgorithmName());
this.digest = digest;
this.digestSize = digest.getDigestSize();
}
public void engineReset()
{
digest.reset();
}
public void engineUpdate(
byte input)
{
digest.update(input);
}
public void engineUpdate(
byte[] input,
int offset,
int len)
{
digest.update(input, offset, len);
}
public int engineGetDigestLength()
{
return digestSize;
}
public byte[] engineDigest()
{
byte[] digestBytes = new byte[digestSize];
digest.doFinal(digestBytes, 0);
return digestBytes;
}
public int engineDigest(byte[] buf, int off, int len) throws DigestException
{
if (len < digestSize)
throw new DigestException("partial digests not returned");
if (buf.length - off < digestSize)
throw new DigestException("insufficient space in the output buffer to store the digest");
digest.doFinal(buf, off);
return digestSize;
}
}