From 531d9aad631dbfe1d4ef0e82939bcc09e4d43253 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 19 Feb 2012 15:05:02 +0000 Subject: [PATCH] Factorize Digest git-svn-id: https://svn.argeo.org/slc/trunk@5104 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- demo/log4j.properties | 2 + .../META-INF/spring/jcr.xml | 12 ++ runtime/org.argeo.slc.core/pom.xml | 6 + .../argeo/slc/core/deploy/DigestCheck.java | 110 +----------------- 4 files changed, 23 insertions(+), 107 deletions(-) diff --git a/demo/log4j.properties b/demo/log4j.properties index 26304cc11..f1f38c20d 100644 --- a/demo/log4j.properties +++ b/demo/log4j.properties @@ -14,6 +14,8 @@ log4j.logger.org.argeo.slc.client.ui.dist=TRACE #log4j.logger.org.apache.jackrabbit.webdav=DEBUG #log4j.logger.org.apache.jackrabbit.jcr2spi=DEBUG +log4j.logger.org.springframework.security=DEBUG + log4j.logger.org.apache.catalina=INFO log4j.logger.org.apache.coyote=INFO log4j.logger.org.apache.directory.server=ERROR diff --git a/modules/server/org.argeo.slc.server.repo/META-INF/spring/jcr.xml b/modules/server/org.argeo.slc.server.repo/META-INF/spring/jcr.xml index 25ad02fa6..428dab3f0 100644 --- a/modules/server/org.argeo.slc.server.repo/META-INF/spring/jcr.xml +++ b/modules/server/org.argeo.slc.server.repo/META-INF/spring/jcr.xml @@ -22,4 +22,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.core/pom.xml b/runtime/org.argeo.slc.core/pom.xml index d77f8bc3e..d14cb4c0c 100644 --- a/runtime/org.argeo.slc.core/pom.xml +++ b/runtime/org.argeo.slc.core/pom.xml @@ -43,6 +43,12 @@ 0.13.1-SNAPSHOT + + org.argeo.commons.basic + org.argeo.basic.nodeps + ${version.argeo-commons} + + org.aspectj com.springsource.org.aspectj.runtime 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)); - } - } - } -- 2.39.2