/* This code is part of Freenet. It is distributed under the GNU General * Public License, version 2 (or at your option any later version). See * http://www.gnu.org/ for further details of the GPL. */ package freenet.crypt; import java.security.*; /* Implements an SHA-1 digest using javax.crypto */ class JavaSHA1 implements Digest { MessageDigest digest; public Object clone() throws CloneNotSupportedException { return new JavaSHA1((MessageDigest)(digest.clone())); } protected JavaSHA1(MessageDigest d) { digest = d; } public JavaSHA1() throws Exception { digest = MessageDigest.getInstance("SHA1"); } public void extract(int[] digest, int offset) { throw new UnsupportedOperationException(); } public void update(byte b) { digest.update(b); } public void update(byte[] data, int offset, int length) { digest.update(data, offset, length); } public void update(byte[] data) { digest.update(data); } public byte[] digest() { return digest.digest(); } public void digest(boolean reset, byte[] buffer, int offset) { if(reset != true) throw new UnsupportedOperationException(); try { digest.digest(buffer, offset, digest.getDigestLength()); } catch (DigestException e) { throw new IllegalStateException(e.toString()); } } // protected final int blockIndex() { // return (int)((count / 8) & 63); // } // public void finish() { // byte bits[] = new byte[8]; // int i, j; // for (i = 0; i < 8; i++) { // bits[i] = (byte)((count >>> (((7 - i) << 3))) & 0xff); // } // update((byte) 128); // while (blockIndex() != 56) // update((byte) 0); // // This should cause a transform to happen. // for(i=0; i<8; ++i) update(bits[i]); // } public int digestSize() { return 160; } }