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;
+ }
+}
+