use of com.github.zhenwei.core.crypto.digests.SHAKEDigest in project LinLong-Java by zhenwei1108.
the class XMSSMTKeyPairGeneratorSpi method initialize.
public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException {
if (!(params instanceof XMSSMTParameterSpec)) {
throw new InvalidAlgorithmParameterException("parameter object not a XMSSMTParameterSpec");
}
XMSSMTParameterSpec xmssParams = (XMSSMTParameterSpec) params;
if (xmssParams.getTreeDigest().equals(XMSSParameterSpec.SHA256)) {
treeDigest = NISTObjectIdentifiers.id_sha256;
param = new XMSSMTKeyGenerationParameters(new XMSSMTParameters(xmssParams.getHeight(), xmssParams.getLayers(), new SHA256Digest()), random);
} else if (xmssParams.getTreeDigest().equals(XMSSParameterSpec.SHA512)) {
treeDigest = NISTObjectIdentifiers.id_sha512;
param = new XMSSMTKeyGenerationParameters(new XMSSMTParameters(xmssParams.getHeight(), xmssParams.getLayers(), new SHA512Digest()), random);
} else if (xmssParams.getTreeDigest().equals(XMSSParameterSpec.SHAKE128)) {
treeDigest = NISTObjectIdentifiers.id_shake128;
param = new XMSSMTKeyGenerationParameters(new XMSSMTParameters(xmssParams.getHeight(), xmssParams.getLayers(), new SHAKEDigest(128)), random);
} else if (xmssParams.getTreeDigest().equals(XMSSParameterSpec.SHAKE256)) {
treeDigest = NISTObjectIdentifiers.id_shake256;
param = new XMSSMTKeyGenerationParameters(new XMSSMTParameters(xmssParams.getHeight(), xmssParams.getLayers(), new SHAKEDigest(256)), random);
}
engine.init(param);
initialised = true;
}
use of com.github.zhenwei.core.crypto.digests.SHAKEDigest in project LinLong-Java by zhenwei1108.
the class Fingerprint method calculateFingerprint.
/**
* Return a byte array containing a calculated fingerprint for the passed in input data. This
* calculation is compatible with the BC FIPS API.
*
* @param input data to base the fingerprint on.
* @param bitLength bit length of finger print to be produced.
* @return a byte array containing a 20 byte fingerprint.
*/
public static byte[] calculateFingerprint(byte[] input, int bitLength) {
if (bitLength % 8 != 0) {
throw new IllegalArgumentException("bitLength must be a multiple of 8");
}
SHAKEDigest digest = new SHAKEDigest(256);
digest.update(input, 0, input.length);
byte[] rv = new byte[bitLength / 8];
digest.doFinal(rv, 0, bitLength / 8);
return rv;
}
Aggregations