package org.bouncycastle.jce.provider; import java.security.MessageDigest; import org.bouncycastle.crypto.Digest; import org.bouncycastle.crypto.digests.*; public class JDKMessageDigest extends MessageDigest { Digest digest; protected JDKMessageDigest( Digest digest) { super(digest.getAlgorithmName()); this.digest = digest; } 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 byte[] engineDigest() { byte[] digestBytes = new byte[digest.getDigestSize()]; digest.doFinal(digestBytes, 0); return digestBytes; } /** * classes that extend directly off us. */ static public class SHA1 extends JDKMessageDigest implements Cloneable { public SHA1() { super(new SHA1Digest()); } public Object clone() throws CloneNotSupportedException { SHA1 d = (SHA1)super.clone(); d.digest = new SHA1Digest((SHA1Digest)digest); return d; } } static public class SHA224 extends JDKMessageDigest implements Cloneable { public SHA224() { super(new SHA224Digest()); } public Object clone() throws CloneNotSupportedException { SHA224 d = (SHA224)super.clone(); d.digest = new SHA224Digest((SHA224Digest)digest); return d; } } static public class SHA256 extends JDKMessageDigest implements Cloneable { public SHA256() { super(new SHA256Digest()); } public Object clone() throws CloneNotSupportedException { SHA256 d = (SHA256)super.clone(); d.digest = new SHA256Digest((SHA256Digest)digest); return d; } } static public class SHA384 extends JDKMessageDigest implements Cloneable { public SHA384() { super(new SHA384Digest()); } public Object clone() throws CloneNotSupportedException { SHA384 d = (SHA384)super.clone(); d.digest = new SHA384Digest((SHA384Digest)digest); return d; } } static public class SHA512 extends JDKMessageDigest implements Cloneable { public SHA512() { super(new SHA512Digest()); } public Object clone() throws CloneNotSupportedException { SHA512 d = (SHA512)super.clone(); d.digest = new SHA512Digest((SHA512Digest)digest); return d; } } // BEGIN android-removed // static public class MD2 // extends JDKMessageDigest // implements Cloneable // { // public MD2() // { // super(new MD2Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // MD2 d = (MD2)super.clone(); // d.digest = new MD2Digest((MD2Digest)digest); // // return d; // } // } // // static public class MD4 // extends JDKMessageDigest // implements Cloneable // { // public MD4() // { // super(new MD4Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // MD4 d = (MD4)super.clone(); // d.digest = new MD4Digest((MD4Digest)digest); // // return d; // } // } // END android-removed static public class MD5 extends JDKMessageDigest implements Cloneable { public MD5() { super(new MD5Digest()); } public Object clone() throws CloneNotSupportedException { MD5 d = (MD5)super.clone(); d.digest = new MD5Digest((MD5Digest)digest); return d; } } // BEGIN android-removed // static public class RIPEMD128 // extends JDKMessageDigest // implements Cloneable // { // public RIPEMD128() // { // super(new RIPEMD128Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // RIPEMD128 d = (RIPEMD128)super.clone(); // d.digest = new RIPEMD128Digest((RIPEMD128Digest)digest); // // return d; // } // } // // static public class RIPEMD160 // extends JDKMessageDigest // implements Cloneable // { // public RIPEMD160() // { // super(new RIPEMD160Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // RIPEMD160 d = (RIPEMD160)super.clone(); // d.digest = new RIPEMD160Digest((RIPEMD160Digest)digest); // // return d; // } // } // // static public class RIPEMD256 // extends JDKMessageDigest // implements Cloneable // { // public RIPEMD256() // { // super(new RIPEMD256Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // RIPEMD256 d = (RIPEMD256)super.clone(); // d.digest = new RIPEMD256Digest((RIPEMD256Digest)digest); // // return d; // } // } // // static public class RIPEMD320 // extends JDKMessageDigest // implements Cloneable // { // public RIPEMD320() // { // super(new RIPEMD320Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // RIPEMD320 d = (RIPEMD320)super.clone(); // d.digest = new RIPEMD320Digest((RIPEMD320Digest)digest); // // return d; // } // } // // static public class Tiger // extends JDKMessageDigest // implements Cloneable // { // public Tiger() // { // super(new TigerDigest()); // } // // public Object clone() // throws CloneNotSupportedException // { // Tiger d = (Tiger)super.clone(); // d.digest = new TigerDigest((TigerDigest)digest); // // return d; // } // } // // static public class GOST3411 // extends JDKMessageDigest // implements Cloneable // { // public GOST3411() // { // super(new GOST3411Digest()); // } // // public Object clone() // throws CloneNotSupportedException // { // GOST3411 d = (GOST3411)super.clone(); // d.digest = new GOST3411Digest((GOST3411Digest)digest); // // return d; // } // } // // static public class Whirlpool // extends JDKMessageDigest // implements Cloneable // { // public Whirlpool() // { // super(new WhirlpoolDigest()); // } // // public Object clone() // throws CloneNotSupportedException // { // Whirlpool d = (Whirlpool)super.clone(); // d.digest = new WhirlpoolDigest((WhirlpoolDigest)digest); // // return d; // } // } // END android-removed }