You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@depot.apache.org by mm...@apache.org on 2004/01/23 21:11:12 UTC

svn commit: rev 6252 - in incubator/depot/trunk/ruper/whiteboard: . mmay

Author: mmay
Date: Fri Jan 23 13:11:12 2004
New Revision: 6252

Added:
   incubator/depot/trunk/ruper/whiteboard/
   incubator/depot/trunk/ruper/whiteboard/mmay/
   incubator/depot/trunk/ruper/whiteboard/mmay/HashHelper.java
   incubator/depot/trunk/ruper/whiteboard/mmay/MD5Manager.java
   incubator/depot/trunk/ruper/whiteboard/mmay/md5Utility.xml
Log:
1) Creation of the whiteboard Sub-Folder for new ideas in Ruper
2) Added some first ideas concerning MD5 to the Repository

Added: incubator/depot/trunk/ruper/whiteboard/mmay/HashHelper.java
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/ruper/whiteboard/mmay/HashHelper.java	Fri Jan 23 13:11:12 2004
@@ -0,0 +1,136 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache Maven" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache Maven", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+package org.apache.ruper.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.security.MessageDigest;
+
+/**
+ * Encode an MD5 digest into a String. <p>
+ *
+ * The 128 bit MD5 hash is converted into a 32 character long String. Each
+ * character of the String is the hexadecimal representation of 4 bits of the
+ * digest.
+ *
+ * XXX The API here is a mess.  It is combining a static utility class with a
+ *     message digest API. Some methods which should be static are not, presumably
+ *     so Jelly can easily access them.
+ *
+ * @author Remy Maucherat
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ * @version $Revision: 1.11 $ $Date: 2003/08/28 23:32:44 $
+ */
+public class HashHelper {
+    /** Hex digits. */
+    private static final char[] HEX_CODES =  {
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+            'a', 'b', 'c', 'd', 'e', 'f'
+    };
+
+    /**
+     * Encodes the 128 bit (16 bytes) MD5 into a 32 character String.
+     *
+     * @param binaryData Array containing the digest
+     *
+     * @return Encoded MD5, or null if encoding failed
+     */
+    public static String encode(byte[] binaryData)
+    {
+
+        if ( binaryData.length != 16 ) {
+            return null;
+        }
+
+        char[] buffer = new char[32];
+
+        for ( int i = 0; i < 16; i++ ) {
+            int low = ( binaryData[i] & 0x0f );
+            int high = ( ( binaryData[i] & 0xf0 ) >> 4 );
+            buffer[i * 2] = HashHelper.HEX_CODES[high];
+            buffer[i * 2 + 1] = HashHelper.HEX_CODES[low];
+        }
+
+        return new String( buffer );
+    }
+
+    /** Pull in static content and store it
+     *
+     *  @param file The file to read.
+     *
+     *  @return The bytes of the file.
+     *
+     *  @throws Exception If an error occurs reading in the file's bytes.
+     */
+    public static byte[] getBytes(File file)
+        throws Exception
+    {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        InputStream stream = new FileInputStream( file );
+
+        byte buf[] = new byte[1024];
+        int len = 0;
+
+        while ( ( len = stream.read( buf, 0, 1024 ) ) != -1 )
+        {
+            baos.write( buf, 0, len );
+        }
+
+        return baos.toByteArray();
+    }
+}

Added: incubator/depot/trunk/ruper/whiteboard/mmay/MD5Manager.java
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/ruper/whiteboard/mmay/MD5Manager.java	Fri Jan 23 13:11:12 2004
@@ -0,0 +1,108 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache Maven" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache Maven", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * ====================================================================
+ */
+package org.apache.ruper.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.security.MessageDigest;
+
+/**
+ * Encode an MD5 digest into a String. <p>
+ *
+ * The 128 bit MD5 hash is converted into a 32 character long String. Each
+ * character of the String is the hexadecimal representation of 4 bits of the
+ * digest.
+ *
+ * XXX The API here is a mess.  It is combining a static utility class with a
+ *     message digest API. Some methods which should be static are not, presumably
+ *     so Jelly can easily access them.
+ *
+ * @author Remy Maucherat
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ * @version $Revision: 1.11 $ $Date: 2003/08/28 23:32:44 $
+ */
+public class MD5Manager {
+
+	private MD5Manager() {
+	}
+
+    /**
+     * Perform the MD5-Sum work.
+     *
+     * @throws Exception If an error occurs while calculating the sum.
+     */
+    public static byte[] generateHash(File file)
+        throws Exception
+    {
+        if ( file.exists() == false ) {
+            System.err.println( "Specified file " + file + " doesn't exist." );
+        }
+
+        MessageDigest md5Helper = MessageDigest.getInstance( "MD5" );
+        byte[] bytes = HashHelper.getBytes(file);
+
+        byte[] digestBytes = md5Helper.digest(bytes);
+
+		return digestBytes;
+    }
+
+    public static byte[] readHashFromFile(File file) {
+
+
+	}
+}

Added: incubator/depot/trunk/ruper/whiteboard/mmay/md5Utility.xml
==============================================================================
--- (empty file)
+++ incubator/depot/trunk/ruper/whiteboard/mmay/md5Utility.xml	Fri Jan 23 13:11:12 2004
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<document> 
+  <header> 
+    <title>MD5 Utilities for Apache Ruper (of Depot)</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>MD5 Utilities</title>
+      <p>
+      	At the Apache.org Servers it is a common procedure to store MD5-Data for published files to guarantee the integrety of the file. Therefor a Resource Updater like Ruper should
+      	be able to handle such data. 
+      </p>
+    </section>
+    
+    <section><title>Use-Cases</title>
+    	<p>
+    	  Here are some Use-Cases which have to be handled by the utility classes.
+    	</p>
+	<subsection><title>Read Hash from .md5-file</title>
+	
+	</subsection>
+
+	<subsection><title>Generate Hash from original-file</title>
+	
+	</subsection>
+
+	<subsection><title>Compare Hashs</title>
+	
+	</subsection>
+
+	<subsection><title>Write own .md5-files?</title>
+	
+	</subsection>
+
+
+    <source>
+  </body>
+</document>