You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2004/09/29 15:41:09 UTC

svn commit: rev 47483 - incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum

Author: erodriguez
Date: Wed Sep 29 06:41:08 2004
New Revision: 47483

Added:
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumEngine.java
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumType.java
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Crc32Checksum.java
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java
   incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Sha1Checksum.java
Log:
kerberos checksum package

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumEngine.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumEngine.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,32 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+public interface ChecksumEngine {
+	
+	public ChecksumType checksumType();
+	public int keyType();
+	public int checksumSize();
+	public int keySize();
+	public int confounderSize();
+	public boolean isSafe();
+	public byte[] calculateChecksum(byte[] data);
+	public byte[] calculateKeyedChecksum(byte[] data, byte[] key);
+	public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum);
+
+}
+

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumType.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/ChecksumType.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,82 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+import java.util.*;
+
+public final class ChecksumType implements Comparable {
+
+	/**
+	 * Enumeration elements are constructed once upon class loading.
+	 * Order of appearance here determines the order of compareTo.
+	 */
+	public static final ChecksumType NULL           = new ChecksumType("null");
+	public static final ChecksumType CRC32          = new ChecksumType("CRC32");
+	public static final ChecksumType RSA_MD4        = new ChecksumType("RSA MD4");
+	public static final ChecksumType RSA_MD4_DES    = new ChecksumType("RSA MD4 DES");
+	public static final ChecksumType DES_MAC        = new ChecksumType("DES MAC");
+	public static final ChecksumType DES_MAC_K      = new ChecksumType("DES MAC K");
+	public static final ChecksumType RSA_MD4_DES_K  = new ChecksumType("RSA MD4 DES K");
+	public static final ChecksumType RSA_MD5        = new ChecksumType("RSA MD5");
+	public static final ChecksumType RSA_MD5_DES    = new ChecksumType("RSA MD5 DES");
+	public static final ChecksumType RSA_MD5_DES3   = new ChecksumType("RSA MD5 DES3");
+	public static final ChecksumType SHA1           = new ChecksumType("SHA1");
+	public static final ChecksumType UNKNOWN11      = new ChecksumType("UNKNOWN 11");
+	public static final ChecksumType HMAC_SHA1_DES3 = new ChecksumType("HMAC SHA1 DES3");
+
+	public String toString() {
+		return _fName;
+	}
+
+	public int compareTo(Object that) {
+		return _fOrdinal - ((ChecksumType) that)._fOrdinal;
+	}
+
+	public static ChecksumType getTypeByOrdinal(int type) {
+		for (int i = 0; i < fValues.length; i++)
+			if (fValues[i]._fOrdinal == type)
+				return fValues[i];
+		return NULL;
+	}
+	
+	public int getOrdinal() {
+		return _fOrdinal;
+	}
+
+	/// PRIVATE /////
+	private final String _fName;
+	private static int fNextOrdinal = 0;
+	private final int _fOrdinal = fNextOrdinal++;
+
+	/**
+	 * Private constructor prevents construction outside of this class.
+	 */
+	private ChecksumType(String aName) {
+		_fName = aName;
+	}
+
+	/**
+	 * These two lines are all that's necessary to export a List of VALUES.
+	 */
+	private static final ChecksumType[] fValues = {NULL, CRC32, RSA_MD4, RSA_MD4_DES,
+			DES_MAC, DES_MAC_K, RSA_MD4_DES_K, RSA_MD5, RSA_MD5_DES, RSA_MD5_DES3,
+			SHA1, UNKNOWN11, HMAC_SHA1_DES3};
+	// VALUES needs to be located here, otherwise illegal forward reference
+	public static final List VALUES = Collections.unmodifiableList(Arrays.asList(fValues));
+
+}
+

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Crc32Checksum.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Crc32Checksum.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,66 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+import org.apache.kerberos.messages.value.*;
+import org.apache.kerberos.util.*;
+
+import java.util.zip.*;
+
+public class Crc32Checksum implements ChecksumEngine {
+
+	private static final CRC32 crc32 = new CRC32();
+
+	public ChecksumType checksumType() {
+		return ChecksumType.CRC32;
+	}
+
+	public int keyType() {
+		return EncryptionKey.KEYTYPE_NULL;
+	}
+
+	public int checksumSize() {
+		return 4;
+	}
+
+	public int keySize() {
+		return 0;
+	}
+
+	public int confounderSize() {
+		return 0;
+	}
+
+	public boolean isSafe() {
+		return false;
+	}
+
+	public synchronized byte[] calculateChecksum(byte[] data) {
+		crc32.reset();
+		crc32.update(data);
+		return ConversionUtils.int2octet((int) crc32.getValue());
+	}
+
+	public byte[] calculateKeyedChecksum(byte[] data, byte[] key) {
+		return null;
+	}
+
+	public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+		return false;
+	}
+}
+

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,67 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+import org.apache.kerberos.messages.value.*;
+import org.bouncycastle.crypto.*;
+import org.bouncycastle.crypto.digests.*;
+
+public class RsaMd4Checksum implements ChecksumEngine {
+
+	private static final Digest digester = new MD4Digest();
+
+	public ChecksumType checksumType() {
+		return ChecksumType.RSA_MD4;
+	}
+
+	public int keyType() {
+		return EncryptionKey.KEYTYPE_NULL;
+	}
+	
+	public int checksumSize() {
+		return 16;
+	}
+
+	public int keySize() {
+		return 0;
+	}
+
+	public int confounderSize() {
+		return 0;
+	}
+
+	public boolean isSafe() {
+		return false;
+	}
+
+	public synchronized byte[] calculateChecksum(byte[] data) {
+		digester.reset();
+		digester.update(data, 0, data.length);
+		byte[] returnValue = new byte[digester.getDigestSize()];
+		digester.doFinal(returnValue, 0);
+		return returnValue;
+	}
+
+	public byte[] calculateKeyedChecksum(byte[] data, byte[] key) {
+		return null;
+	}
+
+	public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+		return false;
+	}
+}
+

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,67 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+import org.apache.kerberos.messages.value.*;
+import org.bouncycastle.crypto.*;
+import org.bouncycastle.crypto.digests.*;
+
+public class RsaMd5Checksum implements ChecksumEngine {
+
+	private static final Digest digester = new MD5Digest();
+
+	public ChecksumType checksumType() {
+		return ChecksumType.RSA_MD5;
+	}
+
+	public int keyType() {
+		return EncryptionKey.KEYTYPE_NULL;
+	}
+
+	public int checksumSize() {
+		return 16;
+	}
+
+	public int keySize() {
+		return 0;
+	}
+
+	public int confounderSize() {
+		return 0;
+	}
+
+	public boolean isSafe() {
+		return false;
+	}
+
+	public synchronized byte[] calculateChecksum(byte[] data) {
+		digester.reset();
+		digester.update(data, 0, data.length);
+		byte[] returnValue = new byte[digester.getDigestSize()];
+		digester.doFinal(returnValue, 0);
+		return returnValue;
+	}
+
+	public byte[] calculateKeyedChecksum(byte[] data, byte[] key) {
+		return null;
+	}
+
+	public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+		return false;
+	}
+}
+

Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Sha1Checksum.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/crypto/checksum/Sha1Checksum.java	Wed Sep 29 06:41:08 2004
@@ -0,0 +1,67 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.kerberos.crypto.checksum;
+
+import org.apache.kerberos.messages.value.*;
+import org.bouncycastle.crypto.*;
+import org.bouncycastle.crypto.digests.*;
+
+public class Sha1Checksum implements ChecksumEngine {
+
+	private static final Digest digester = new SHA1Digest();
+
+	public ChecksumType checksumType() {
+		return ChecksumType.SHA1;
+	}
+
+	public int keyType() {
+		return EncryptionKey.KEYTYPE_NULL;
+	}
+	
+	public int checksumSize() {
+		return 20;
+	}
+
+	public int keySize() {
+		return 0;
+	}
+
+	public int confounderSize() {
+		return 0;
+	}
+
+	public boolean isSafe() {
+		return false;
+	}
+
+	public synchronized byte[] calculateChecksum(byte[] data) {
+		digester.reset();
+		digester.update(data, 0, data.length);
+		byte[] returnValue = new byte[digester.getDigestSize()];
+		digester.doFinal(returnValue, 0);
+		return returnValue;
+	}
+
+	public byte[] calculateKeyedChecksum(byte[] data, byte[] key) {
+		return null;
+	}
+
+	public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+		return false;
+	}
+}
+