aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2007-11-17 05:58:42 +0000
committerKenny Root <kenny@the-b.org>2007-11-17 05:58:42 +0000
commitdfa41d090260eed63f3d8510571a2f6236a5ff45 (patch)
tree1eaca308ba9bb913161edf83bfef5f9295784e56 /src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java
parentedfccaafe3e754ed124afa67465b6044eacd3987 (diff)
downloadconnectbot-dfa41d090260eed63f3d8510571a2f6236a5ff45.tar.gz
connectbot-dfa41d090260eed63f3d8510571a2f6236a5ff45.tar.bz2
connectbot-dfa41d090260eed63f3d8510571a2f6236a5ff45.zip
Initial import.
Diffstat (limited to 'src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java')
-rw-r--r--src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java b/src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java
new file mode 100644
index 0000000..df84952
--- /dev/null
+++ b/src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java
@@ -0,0 +1,93 @@
+
+package com.trilead.ssh2.crypto.digest;
+
+import java.math.BigInteger;
+
+/**
+ * HashForSSH2Types.
+ *
+ * @author Christian Plattner, plattner@trilead.com
+ * @version $Id: HashForSSH2Types.java,v 1.1 2007/10/15 12:49:57 cplattne Exp $
+ */
+public class HashForSSH2Types
+{
+ Digest md;
+
+ public HashForSSH2Types(Digest md)
+ {
+ this.md = md;
+ }
+
+ public HashForSSH2Types(String type)
+ {
+ if (type.equals("SHA1"))
+ {
+ md = new SHA1();
+ }
+ else if (type.equals("MD5"))
+ {
+ md = new MD5();
+ }
+ else
+ throw new IllegalArgumentException("Unknown algorithm " + type);
+ }
+
+ public void updateByte(byte b)
+ {
+ /* HACK - to test it with J2ME */
+ byte[] tmp = new byte[1];
+ tmp[0] = b;
+ md.update(tmp);
+ }
+
+ public void updateBytes(byte[] b)
+ {
+ md.update(b);
+ }
+
+ public void updateUINT32(int v)
+ {
+ md.update((byte) (v >> 24));
+ md.update((byte) (v >> 16));
+ md.update((byte) (v >> 8));
+ md.update((byte) (v));
+ }
+
+ public void updateByteString(byte[] b)
+ {
+ updateUINT32(b.length);
+ updateBytes(b);
+ }
+
+ public void updateBigInt(BigInteger b)
+ {
+ updateByteString(b.toByteArray());
+ }
+
+ public void reset()
+ {
+ md.reset();
+ }
+
+ public int getDigestLength()
+ {
+ return md.getDigestLength();
+ }
+
+ public byte[] getDigest()
+ {
+ byte[] tmp = new byte[md.getDigestLength()];
+ getDigest(tmp);
+ return tmp;
+ }
+
+ public void getDigest(byte[] out)
+ {
+ getDigest(out, 0);
+ }
+
+ public void getDigest(byte[] out, int off)
+ {
+ md.digest(out, off);
+ }
+}