X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fdeploy%2FDigestCheck.java;fp=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fdeploy%2FDigestCheck.java;h=4567f273db16861f1324e72b48e49d744f54e8a4;hb=531d9aad631dbfe1d4ef0e82939bcc09e4d43253;hp=f94599e1619596e9378a53e98ab2899b40237837;hpb=193e349b476c6437e196b8a492d2a2c260dffc1e;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DigestCheck.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DigestCheck.java index f94599e16..4567f273d 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DigestCheck.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DigestCheck.java @@ -17,24 +17,14 @@ package org.argeo.slc.core.deploy; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; -import java.nio.ByteBuffer; -import java.nio.channels.FileChannel; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import org.apache.commons.codec.binary.Hex; -import org.apache.commons.io.IOUtils; import org.argeo.slc.SlcException; +import org.argeo.util.security.DigestUtils; import org.springframework.core.io.Resource; -public class DigestCheck { - private static Boolean debug = true; - // TODO: make it writable - private final static Integer byteBufferCapacity = 100 * 1024;// 100 KB - +/** Add Spring capabilities to {@link DigestUtils} */ +public class DigestCheck extends DigestUtils { public static String digest(String algorithm, Resource resource) { try { File file = resource.getFile(); @@ -48,98 +38,4 @@ public class DigestCheck { } } } - - public static String digest(String algorithm, InputStream in) { - try { - MessageDigest digest = MessageDigest.getInstance(algorithm); - // ReadableByteChannel channel = Channels.newChannel(in); - // ByteBuffer bb = ByteBuffer.allocateDirect(byteBufferCapacity); - // while (channel.read(bb) > 0) - // digest.update(bb); - byte[] buffer = new byte[byteBufferCapacity]; - int read = 0; - while ((read = in.read(buffer)) > 0) { - digest.update(buffer, 0, read); - } - - byte[] checksum = digest.digest(); - String res = Hex.encodeHexString(checksum); - return res; - } catch (Exception e) { - throw new SlcException("Cannot digest with algorithm " + algorithm, - e); - } finally { - IOUtils.closeQuietly(in); - } - } - - public static String digest(String algorithm, File file) { - FileInputStream fis = null; - FileChannel fc = null; - try { - fis = new FileInputStream(file); - fc = fis.getChannel(); - - // Get the file's size and then map it into memory - int sz = (int) fc.size(); - ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz); - return digest(algorithm, bb); - } catch (IOException e) { - throw new SlcException("Cannot digest " + file + " with algorithm " - + algorithm, e); - } finally { - IOUtils.closeQuietly(fis); - if (fc.isOpen()) - try { - fc.close(); - } catch (IOException e) { - // silent - } - } - } - - protected static String digest(String algorithm, ByteBuffer bb) { - long begin = System.currentTimeMillis(); - try { - MessageDigest digest = MessageDigest.getInstance(algorithm); - digest.update(bb); - byte[] checksum = digest.digest(); - String res = Hex.encodeHexString(checksum); - long end = System.currentTimeMillis(); - if (debug) - System.out.println((end - begin) + " ms / " - + ((end - begin) / 1000) + " s"); - return res; - } catch (NoSuchAlgorithmException e) { - throw new SlcException("Cannot digest with algorithm " + algorithm, - e); - } - } - - public static void main(String[] args) { - File file; - if (args.length > 0) - file = new File(args[0]); - else { - System.err.println("Usage: []" - + " (see http://java.sun.com/j2se/1.5.0/" - + "docs/guide/security/CryptoSpec.html#AppA)"); - return; - } - - if (args.length > 1) { - String algorithm = args[1]; - System.out.println(digest(algorithm, file)); - } else { - String algorithm = "MD5"; - System.out.println(algorithm + ": " + digest(algorithm, file)); - algorithm = "SHA"; - System.out.println(algorithm + ": " + digest(algorithm, file)); - algorithm = "SHA-256"; - System.out.println(algorithm + ": " + digest(algorithm, file)); - algorithm = "SHA-512"; - System.out.println(algorithm + ": " + digest(algorithm, file)); - } - } - }