[freenet-cvs] r19673 - trunk/freenet/src/freenet/crypt

j16sdiz at freenetproject.org j16sdiz at freenetproject.org
Fri May 2 09:44:53 UTC 2008


Author: j16sdiz
Date: 2008-05-02 09:44:53 +0000 (Fri, 02 May 2008)
New Revision: 19673

Modified:
   trunk/freenet/src/freenet/crypt/SHA256.java
Log:
remove unused method (all our method now use JVM provided SHA-256)


Modified: trunk/freenet/src/freenet/crypt/SHA256.java
===================================================================
--- trunk/freenet/src/freenet/crypt/SHA256.java	2008-05-02 03:50:03 UTC (rev 19672)
+++ trunk/freenet/src/freenet/crypt/SHA256.java	2008-05-02 09:44:53 UTC (rev 19673)
@@ -43,264 +43,17 @@
 
 import freenet.node.Node;
 import freenet.node.NodeInitException;
-import freenet.support.HexUtil;
 import freenet.support.Logger;
 import freenet.support.io.Closer;
 
 /**
  * @author  Jeroen C. van Gelderen (gelderen at cryptix.org)
  */
-public class SHA256 implements Digest {
-
-// Constants
-//...........................................................................
+public class SHA256 {
 	/** Size (in bytes) of this hash */
 	private static final int HASH_SIZE = 32;
-	private static final int BLOCK_SIZE = 64;
-	/** 64 byte buffer */
-	private final byte[] buf;
-	/** Buffer offset */
-	private int bufOff;
-	/** Number of bytes hashed 'till now. */
-	private long byteCount;
-	/** Round constants */
-	private static final int K[] = {
-		0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
-		0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
-		0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
-		0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
-		0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
-		0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
-		0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
-		0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
-		0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
-		0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
-		0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
-		0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
-		0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
-		0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
-		0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
-		0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-	};
-// Instance variables
-//...........................................................................
-	/** 8 32-bit words (interim result) */
-	private final int[] context;
-	/** Expanded message block buffer */
-	private final int[] buffer;
 
-// Constructors
-//...........................................................................
-	public SHA256() {
-		this.context = new int[8];
-		this.buffer = new int[64];
-		this.buf = new byte[64];
-		coreReset();
-	}
-
-// Concreteness
-//...........................................................................
-	protected void coreDigest(byte[] buf, int off) {
-		for(int i = 0; i < context.length; i++)
-			for(int j = 0; j < 4; j++)
-				buf[off + (i * 4 + (3 - j))] = (byte) (context[i] >>> (8 * j));
-	}
-
-	protected void coreReset() {
-		this.bufOff = 0;
-		this.byteCount = 0;
-
-		// initial values
-		context[0] = 0x6a09e667;
-		context[1] = 0xbb67ae85;
-		context[2] = 0x3c6ef372;
-		context[3] = 0xa54ff53a;
-		context[4] = 0x510e527f;
-		context[5] = 0x9b05688c;
-		context[6] = 0x1f83d9ab;
-		context[7] = 0x5be0cd19;
-	}
-
-	protected void coreUpdate(byte[] block, int offset) {
-
-		int[] W = buffer;
-
-		// extract the bytes into our working buffer
-		for(int i = 0; i < 16; i++)
-			W[i] = (block[offset++]) << 24 |
-				(block[offset++] & 0xFF) << 16 |
-				(block[offset++] & 0xFF) << 8 |
-				(block[offset++] & 0xFF);
-
-		// expand
-		for(int i = 16; i < 64; i++)
-			W[i] = sig1(W[i - 2]) + W[i - 7] + sig0(W[i - 15]) + W[i - 16];
-
-		int a = context[0];
-		int b = context[1];
-		int c = context[2];
-		int d = context[3];
-		int e = context[4];
-		int f = context[5];
-		int g = context[6];
-		int h = context[7];
-
-		// run 64 rounds
-		for(int i = 0; i < 64; i++) {
-			int T1 = h + Sig1(e) + Ch(e, f, g) + K[i] + W[i];
-			int T2 = Sig0(a) + Maj(a, b, c);
-			h = g;
-			g = f;
-			f = e;
-			e = d + T1;
-			d = c;
-			c = b;
-			b = a;
-			a = T1 + T2;
-		}
-
-		// merge
-		context[0] += a;
-		context[1] += b;
-		context[2] += c;
-		context[3] += d;
-		context[4] += e;
-		context[5] += f;
-		context[6] += g;
-		context[7] += h;
-	}
-
-	private final int Ch(int x, int y, int z) {
-		return (x & y) ^ (~x & z);
-	}
-
-	private final int Maj(int x, int y, int z) {
-		return (x & y) ^ (x & z) ^ (y & z);
-	}
-
-	private final int Sig0(int x) {
-		return S(2, x) ^ S(13, x) ^ S(22, x);
-	}
-
-	private final int Sig1(int x) {
-		return S(6, x) ^ S(11, x) ^ S(25, x);
-	}
-
-	private final int sig0(int x) {
-		return S(7, x) ^ S(18, x) ^ R(3, x);
-	}
-
-	private final int sig1(int x) {
-		return S(17, x) ^ S(19, x) ^ R(10, x);
-	}
-
-	private final int R(int off, int x) {
-		return (x >>> off);
-	}
-
-	private final int S(int off, int x) {
-		return (x >>> off) | (x << (32 - off));
-	}
-
-	private int privateDigest(byte[] buf, int offset, int len, boolean reset) {
-		//#ASSERT(this.bufOff < BLOCK_SIZE);
-
-		this.buf[this.bufOff++] = (byte) 0x80;
-
-		int lenOfBitLen = 8;
-		int C = BLOCK_SIZE - lenOfBitLen;
-		if(this.bufOff > C) {
-			while(this.bufOff < BLOCK_SIZE) {
-				this.buf[this.bufOff++] = (byte) 0x00;
-			}
-
-			coreUpdate(this.buf, 0);
-			this.bufOff = 0;
-		}
-
-		while(this.bufOff < C) {
-			this.buf[this.bufOff++] = (byte) 0x00;
-		}
-
-		long bitCount = byteCount * 8;
-
-		for(int i = 56; i >= 0; i -= 8)
-			this.buf[this.bufOff++] = (byte) (bitCount >>> (i));
-
-		coreUpdate(this.buf, 0);
-		coreDigest(buf, offset);
-
-		if(reset)
-			coreReset();
-		return HASH_SIZE;
-	}
-
-
-	// Freenet Digest interface methods
 	/**
-	 * retrieve the value of a hash, by filling the provided int[] with
-	 * n elements of the hash (where n is the bitlength of the hash/32)
-	 * @param digest int[] into which to place n elements
-	 * @param offset index of first of the n elements
-	 **/
-	public void extract(int[] digest, int offset) {
-		System.arraycopy(context, 0, digest, offset, context.length);
-	}
-
-	/**
-	 * Add one byte to the digest. When this is implemented
-	 * all of the abstract class methods end up calling
-	 * this method for types other than bytes.
-	 * @param b byte to add
-	 */
-	public void update(byte b) {
-
-		byteCount += 1;
-		buf[bufOff++] = b;
-		if(bufOff == BLOCK_SIZE) {
-			coreUpdate(buf, 0);
-			bufOff = 0;
-		}
-
-	}
-
-	/**
-	 * Add many bytes to the digest.
-	 * @param input byte data to add
-	 * @param offset start byte
-	 * @param length number of bytes to hash
-	 */
-	public void update(byte[] input, int offset, int length) {
-		byteCount += length;
-
-		int todo;
-		while(length >= (todo = BLOCK_SIZE - this.bufOff)) {
-			System.arraycopy(input, offset, this.buf, this.bufOff, todo);
-			coreUpdate(this.buf, 0);
-			length -= todo;
-			offset += todo;
-			this.bufOff = 0;
-		}
-
-		System.arraycopy(input, offset, this.buf, this.bufOff, length);
-		bufOff += length;
-	}
-
-	public void update(byte[] data) {
-		update(data, 0, data.length);
-	}
-
-	/**
-	 * Returns the completed digest, reinitializing the hash function;
-	 * @return the byte array result
-	 */
-	public byte[] digest() {
-		byte[] tmp = new byte[HASH_SIZE];
-		privateDigest(tmp, 0, HASH_SIZE, true);
-		return tmp;
-	}
-
-	/**
 	 * It won't reset the Message Digest for you!
 	 * @param InputStream
 	 * @param MessageDigest
@@ -321,39 +74,6 @@
 		}
 	}
 
-	public static byte[] hash(InputStream is) throws IOException {
-		MessageDigest md = SHA256.getMessageDigest();
-		md.reset();
-		hash(is, md);
-		byte[] result = md.digest();
-		SHA256.returnMessageDigest(md);
-
-		return result;
-	}
-
-	/**
-	 * Write the completed digest into the given buffer.
-	 * @param reset If true, the hash function is reinitialized
-	 */
-	public void digest(boolean reset, byte[] buffer, int offset) {
-		privateDigest(buf, offset, buffer.length, true);
-	}
-
-	/**
-	 * Return the hash size of this digest in bits
-	 */
-	public final int digestSize() {
-		return HASH_SIZE << 3;
-	}
-
-	public String doHash(String s) {
-		coreReset();
-		for(int i = 0; i < s.length(); i++) {
-			this.update((byte) s.charAt(i));
-		}
-		byte[] d = digest();
-		return HexUtil.bytesToHex(d);
-	}
 	static private final Vector digests = new Vector();
 
 	/**
@@ -396,28 +116,7 @@
 		return hash;
 	}
 
-	public static void main(String[] args) {
-		byte[] buffer = new byte[1024];
-		SHA256 s = new SHA256();
-		try {
-			while(true) {
-				int rc = System.in.read(buffer);
-				if(rc > 0)
-					s.update(buffer, 0, rc);
-				else
-					break;
-			}
-		} catch(java.io.IOException e) {
-		}
-		byte[] rv = s.digest();
-		System.out.println(HexUtil.bytesToHex(rv));
-	}
-
 	public static int getDigestLength() {
 		return HASH_SIZE;
 	}
-
-	public static Digest getInstance() {
-		return new SHA256();
-	}
 }




More information about the cvs mailing list