blob: bc8f7ddaec76b69ab3d2e2229e9455279d7db921 [file] [log] [blame]
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
}