Mercurial > 510Connectbot
view src/com/trilead/ssh2/crypto/digest/HashForSSH2Types.java @ 9:731e70088af0 tn5250
adding tn5250 files
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 22 May 2014 15:42:48 -0700 |
parents | 0ce5cc452d02 |
children |
line wrap: on
line source
package com.trilead.ssh2.crypto.digest; import java.math.BigInteger; import java.security.DigestException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 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 { MessageDigest md; public HashForSSH2Types(String type) { try { md = MessageDigest.getInstance(type); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("Unsupported 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) { try { md.digest(out, off, out.length - off); } catch (DigestException e) { // TODO is this right?! throw new RuntimeException("Unable to digest", e); } } }