org.bouncycastle.crypto.macs.Blake3Mac Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-lts8on Show documentation
Show all versions of bcprov-lts8on Show documentation
The Long Term Stable (LTS) Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains the JCA/JCE provider and low-level API for the BC LTS version 2.73.7 for Java 8 and later.
package org.bouncycastle.crypto.macs;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.Mac;
import org.bouncycastle.crypto.digests.Blake3Digest;
import org.bouncycastle.crypto.params.Blake3Parameters;
import org.bouncycastle.crypto.params.KeyParameter;
/**
* Bouncy implementation of Blake3Mac.
*/
public class Blake3Mac
implements Mac
{
/**
* Digest.
*/
private final Blake3Digest theDigest;
/**
* Create a blake3Mac with the specified digest.
*
* @param pDigest the base digest.
*/
public Blake3Mac(final Blake3Digest pDigest)
{
/* Store the digest */
theDigest = pDigest;
}
public String getAlgorithmName()
{
return theDigest.getAlgorithmName() + "Mac";
}
public void init(final CipherParameters pParams)
{
CipherParameters myParams = pParams;
if (myParams instanceof KeyParameter)
{
myParams = Blake3Parameters.key(((KeyParameter)myParams).getKey());
}
if (!(myParams instanceof Blake3Parameters))
{
throw new IllegalArgumentException("Invalid parameter passed to Blake3Mac init - "
+ pParams.getClass().getName());
}
final Blake3Parameters myBlakeParams = (Blake3Parameters)myParams;
if (myBlakeParams.getKey() == null)
{
throw new IllegalArgumentException("Blake3Mac requires a key parameter.");
}
/* Configure the digest */
theDigest.init(myBlakeParams);
}
public int getMacSize()
{
return theDigest.getDigestSize();
}
public void update(final byte in)
{
theDigest.update(in);
}
public void update(final byte[] in, final int inOff, final int len)
{
theDigest.update(in, inOff, len);
}
public int doFinal(final byte[] out, final int outOff)
{
return theDigest.doFinal(out, outOff);
}
public void reset()
{
theDigest.reset();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy