
org.bouncycastle.pqc.jcajce.provider.lms.DigestUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-ext-debug-jdk18on Show documentation
Show all versions of bcprov-ext-debug-jdk18on 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.8 and up. Note: this package includes the NTRU encryption algorithms.
package org.bouncycastle.pqc.jcajce.provider.lms;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.Xof;
import org.bouncycastle.pqc.jcajce.spec.XMSSParameterSpec;
class DigestUtil
{
public static byte[] getDigestResult(Digest digest)
{
byte[] hash = new byte[DigestUtil.getDigestSize(digest)];
if (digest instanceof Xof)
{
((Xof)digest).doFinal(hash, 0, hash.length);
}
else
{
digest.doFinal(hash, 0);
}
return hash;
}
public static int getDigestSize(Digest digest)
{
if (digest instanceof Xof)
{
return digest.getDigestSize() * 2;
}
return digest.getDigestSize();
}
public static String getXMSSDigestName(ASN1ObjectIdentifier treeDigest)
{
if (treeDigest.equals(NISTObjectIdentifiers.id_sha256))
{
return XMSSParameterSpec.SHA256;
}
if (treeDigest.equals(NISTObjectIdentifiers.id_sha512))
{
return XMSSParameterSpec.SHA512;
}
if (treeDigest.equals(NISTObjectIdentifiers.id_shake128))
{
return XMSSParameterSpec.SHAKE128;
}
if (treeDigest.equals(NISTObjectIdentifiers.id_shake256))
{
return XMSSParameterSpec.SHAKE256;
}
throw new IllegalArgumentException("unrecognized digest OID: " + treeDigest);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy