private static void initDigesters() { digesters.put("Blake2b", Blake2bDigest.class); digesters.put("GOST3411", GOST3411Digest.class); digesters.put("Keccak", KeccakDigest.class); digesters.put("MD2", MD2Digest.class); digesters.put("MD4", MD4Digest.class); digesters.put("MD5", MD5Digest.class); digesters.put("RIPEMD128", RIPEMD128Digest.class); digesters.put("RIPEMD160", RIPEMD160Digest.class); digesters.put("RIPEMD256", RIPEMD256Digest.class); digesters.put("RIPEMD320", RIPEMD320Digest.class); digesters.put("SHA1", SHA1Digest.class); digesters.put("SHA224", SHA224Digest.class); digesters.put("SHA256", SHA256Digest.class); digesters.put("SHA384", SHA384Digest.class); digesters.put("SHA3-512", SHA3Digest.class); digesters.put("SHA3-256", SHA3Digest.class); digesters.put("SHA3-224", SHA3Digest.class); digesters.put("SHA3-384", SHA3Digest.class); digesters.put("SHA512", SHA512Digest.class); digesters.put("SHAKE-128", SHAKEDigest.class); digesters.put("SHAKE-256", SHAKEDigest.class); digesters.put("Skein256", SkeinDigest.class); digesters.put("Skein512", SkeinDigest.class); digesters.put("Skein1024", SkeinDigest.class); digesters.put("SM3", SM3Digest.class); digesters.put("Tiger", TigerDigest.class); digesters.put("Whirlpool", WhirlpoolDigest.class); }
public Object clone() throws CloneNotSupportedException { BCMessageDigest d = (BCMessageDigest)super.clone(); d.digest = new SkeinDigest((SkeinDigest)digest); return d; }
private void runTest(Case dc) { SkeinDigest digest = new SkeinDigest(dc.getBlockSize(), dc.getOutputSize()); byte[] message = dc.getMessage(); digest.update(message, 0, message.length); byte[] output = new byte[digest.getDigestSize()]; digest.doFinal(output, 0); if (!Arrays.areEqual(output, dc.getDigest())) { fail(digest.getAlgorithmName() + " message mismatch.\n Message " + new String(Hex.encode(dc.getMessage())), new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } // Clone test digest.update(message, 0, message.length / 2); // clone the Digest Digest d = new SkeinDigest(digest); digest.update(message, message.length / 2, message.length - message.length / 2); digest.doFinal(output, 0); if (!areEqual(dc.getDigest(), output)) { fail("failing clone vector test", new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } d.update(message, message.length / 2, message.length - message.length / 2); d.doFinal(output, 0); if (!areEqual(dc.getDigest(), output)) { fail("failing second clone vector test", new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } // // memo test // Memoable m = (Memoable)digest; digest.update(message, 0, message.length / 2); // copy the Digest Memoable copy1 = m.copy(); Memoable copy2 = copy1.copy(); digest.update(message, message.length / 2, message.length - message.length / 2); digest.doFinal(output, 0); if (!areEqual(dc.getDigest(), output)) { fail("failing memo vector test", new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } m.reset(copy1); digest.update(message, message.length / 2, message.length - message.length / 2); digest.doFinal(output, 0); if (!areEqual(dc.getDigest(), output)) { fail("failing memo reset vector test", new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } Digest md = (Digest)copy2; md.update(message, message.length / 2, message.length - message.length / 2); md.doFinal(output, 0); if (!areEqual(dc.getDigest(), output)) { fail("failing memo copy vector test", new String(Hex.encode(dc.getDigest())), new String(Hex.encode(output))); } }
public DigestSkein256(int outputSize) { super(new SkeinDigest(SkeinDigest.SKEIN_256, outputSize)); }
public DigestSkein512(int outputSize) { super(new SkeinDigest(SkeinDigest.SKEIN_512, outputSize)); }
public DigestSkein1024(int outputSize) { super(new SkeinDigest(SkeinDigest.SKEIN_1024, outputSize)); }
public HashMac_256_128() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_256, 128))); }
public HashMac_256_160() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_256, 160))); }
public HashMac_256_224() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_256, 224))); }
public HashMac_256_256() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_256, 256))); }
public HashMac_512_128() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 128))); }
public HashMac_512_160() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 160))); }
public HashMac_512_224() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 224))); }
public HashMac_512_256() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 256))); }
public HashMac_512_384() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 384))); }
public HashMac_512_512() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_512, 512))); }
public HashMac_1024_384() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_1024, 384))); }
public HashMac_1024_512() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_1024, 512))); }
public HashMac_1024_1024() { super(new HMac(new SkeinDigest(SkeinDigest.SKEIN_1024, 1024))); }
public static final void register(final Map<String, Hasher> hashers) { hashers.put(BouncyCastleHasher.GOST, new BouncyCastleHasher(new GOST3411Digest())); hashers.put(BouncyCastleHasher.MD2, new BouncyCastleHasher(new MD2Digest())); hashers.put(BouncyCastleHasher.MD4, new BouncyCastleHasher(new MD4Digest())); hashers.put(BouncyCastleHasher.MD5, new BouncyCastleHasher(new MD5Digest())); hashers.put(BouncyCastleHasher.RIPEMD128, new BouncyCastleHasher(new RIPEMD128Digest())); hashers.put(BouncyCastleHasher.RIPEMD160, new BouncyCastleHasher(new RIPEMD160Digest())); hashers.put(BouncyCastleHasher.RIPEMD256, new BouncyCastleHasher(new RIPEMD256Digest())); hashers.put(BouncyCastleHasher.RIPEMD320, new BouncyCastleHasher(new RIPEMD320Digest())); hashers.put(BouncyCastleHasher.SHA1, new BouncyCastleHasher(new SHA1Digest())); hashers.put(BouncyCastleHasher.SHA224, new BouncyCastleHasher(new SHA224Digest())); hashers.put(BouncyCastleHasher.SHA256, new BouncyCastleHasher(new SHA256Digest())); hashers.put(BouncyCastleHasher.SHA3, new BouncyCastleHasher(new SHA3Digest())); hashers.put(BouncyCastleHasher.SHA384, new BouncyCastleHasher(new SHA384Digest())); hashers.put(BouncyCastleHasher.SHA512, new BouncyCastleHasher(new SHA512Digest())); hashers.put(BouncyCastleHasher.SHA512_T, new BouncyCastleHasher(new SHA512tDigest(7 * 8))); hashers.put(BouncyCastleHasher.SKEIN1024, new BouncyCastleHasher( new SkeinDigest(SkeinDigest.SKEIN_1024, Long.BYTES * 8))); hashers.put(BouncyCastleHasher.SKEIN256, new BouncyCastleHasher( new SkeinDigest(SkeinDigest.SKEIN_256, Long.BYTES * 8))); hashers.put(BouncyCastleHasher.SKEIN512, new BouncyCastleHasher( new SkeinDigest(SkeinDigest.SKEIN_512, Long.BYTES * 8))); hashers.put(BouncyCastleHasher.SM3, new BouncyCastleHasher(new SM3Digest())); hashers.put(BouncyCastleHasher.TIGER, new BouncyCastleHasher(new TigerDigest())); hashers.put(BouncyCastleHasher.WHIRLPOOL2, new BouncyCastleHasher(new WhirlpoolDigest())); }