package net.i2p.crypto; /* * free (adj.): unencumbered; not under the control of others * Written by jrandom in 2003 and released into the public domain * with no warranty of any kind, either expressed or implied. * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ import java.io.IOException; import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.SimpleDataStructure; /** * Because DSAEngine was abusing Hash for 20-byte hashes * * @since 0.8.1 * @author zzz */ public class SHA1Hash extends SimpleDataStructure { private int _cachedHashCode; public final static int HASH_LENGTH = SHA1.HASH_LENGTH; /** @since 0.9.9 */ public SHA1Hash() { super(); } /** @throws IllegalArgumentException if data is not 20 bytes (null is ok) */ public SHA1Hash(byte data[]) { super(data); } public int length() { return HASH_LENGTH; } /** @throws IllegalArgumentException if data is not 20 bytes (null is ok) */ @Override public void setData(byte[] data) { super.setData(data); _cachedHashCode = super.hashCode(); } @Override public void readBytes(InputStream in) throws DataFormatException, IOException { super.readBytes(in); _cachedHashCode = super.hashCode(); } /** a Hash is a hash, so just use the first 4 bytes for speed */ @Override public int hashCode() { return _cachedHashCode; } }