package org.limewire.security.certificate; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.limewire.io.IOUtils; public class HashCalculatorSHA1Impl implements HashCalculator { public byte[] calculate(byte[] in) { try { return calculate(new ByteArrayInputStream(in)); } catch (IOException ex) { throw new RuntimeException("Impossible IOException caught: ", ex); } } public byte[] calculate(InputStream in) throws IOException { try { final MessageDigest outputSHA1 = MessageDigest.getInstance("SHA-1"); final byte[] data = new byte[64 * 1024]; // 64k Chunks while (true) { final int bytesRead = in.read(data); if (bytesRead < 0) break; outputSHA1.update(data, 0, bytesRead); } // Done, let's compute the hash return outputSHA1.digest(); } catch (NoSuchAlgorithmException ex) { throw IOUtils.getIOException("NoSuchAlgorithmException during computation: ", ex); } } }