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/11/10 04:41:26 UTC
svn commit: rev 57126 - incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum
Author: erodriguez
Date: Tue Nov 9 19:41:26 2004
New Revision: 57126
Modified:
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/ChecksumEngine.java
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Crc32Checksum.java
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java
incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Sha1Checksum.java
Log:
Refactoring. Added a template method for digest selection which allowed the consolidation of all checksum calculation to the ChecksumEngine base class.
Modified: incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/ChecksumEngine.java
==============================================================================
--- incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/ChecksumEngine.java (original)
+++ incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/ChecksumEngine.java Tue Nov 9 19:41:26 2004
@@ -16,19 +16,30 @@
*/
package org.apache.kerberos.crypto.checksum;
-import org.apache.kerberos.crypto.encryption.*;
+import org.apache.kerberos.crypto.encryption.CipherType;
+import org.bouncycastle.crypto.Digest;
-public interface ChecksumEngine {
-
- public ChecksumType checksumType();
- public CipherType 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);
+public abstract class ChecksumEngine
+{
+ public abstract Digest getDigest();
+ public abstract ChecksumType checksumType();
+ public abstract CipherType keyType();
+ public abstract int checksumSize();
+ public abstract int keySize();
+ public abstract int confounderSize();
+ public abstract boolean isSafe();
+ public abstract byte[] calculateKeyedChecksum( byte[] data, byte[] key );
+ public abstract boolean verifyKeyedChecksum( byte[] data, byte[] key, byte[] checksum );
+ public byte[] calculateChecksum( byte[] data )
+ {
+ Digest digester = getDigest();
+
+ digester.reset();
+ digester.update( data, 0, data.length );
+ byte[] returnValue = new byte[ digester.getDigestSize() ];
+ digester.doFinal( returnValue, 0 );
+ return returnValue;
+ }
}
Modified: incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Crc32Checksum.java
==============================================================================
--- incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Crc32Checksum.java (original)
+++ incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Crc32Checksum.java Tue Nov 9 19:41:26 2004
@@ -17,12 +17,16 @@
package org.apache.kerberos.crypto.checksum;
import org.apache.kerberos.crypto.encryption.CipherType;
+import org.bouncycastle.crypto.Digest;
import java.util.zip.CRC32;
-public class Crc32Checksum implements ChecksumEngine
+public class Crc32Checksum extends ChecksumEngine
{
- private final CRC32 crc32 = new CRC32();
+ public Digest getDigest()
+ {
+ return new CRC32Digest();
+ }
public ChecksumType checksumType()
{
@@ -54,13 +58,6 @@
return false;
}
- public synchronized byte[] calculateChecksum( byte[] data )
- {
- crc32.reset();
- crc32.update( data );
- return int2octet( (int)crc32.getValue() );
- }
-
public byte[] calculateKeyedChecksum( byte[] data, byte[] key )
{
return null;
@@ -71,14 +68,51 @@
return false;
}
- private byte[] int2octet( int value )
+ private class CRC32Digest implements Digest
{
- byte[] bytes = new byte[4];
- int i, shift;
+ private CRC32 crc32 = new CRC32();
- for (i = 0, shift = 24; i < 4; i++, shift -= 8)
- bytes[i] = (byte) (0xFF & (value >> shift));
- return bytes;
- }
+ public String getAlgorithmName()
+ {
+ return "CRC-32";
+ }
+
+ public int getDigestSize()
+ {
+ return 4;
+ }
+
+ public void reset()
+ {
+ crc32.reset();
+ }
+
+ public void update( byte in )
+ {
+ crc32.update( in );
+ }
+
+ public void update( byte[] in, int inOff, int len )
+ {
+ crc32.update( in, inOff, len );
+ }
+
+ public int doFinal(byte[] out, int outOff)
+ {
+ out = int2octet( (int)crc32.getValue() );
+
+ return 0;
+ }
+
+ private byte[] int2octet( int value )
+ {
+ byte[] bytes = new byte[4];
+ int i, shift;
+
+ for (i = 0, shift = 24; i < 4; i++, shift -= 8)
+ bytes[i] = (byte) (0xFF & (value >> shift));
+ return bytes;
+ }
+ }
}
Modified: incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java
==============================================================================
--- incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java (original)
+++ incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd4Checksum.java Tue Nov 9 19:41:26 2004
@@ -16,51 +16,54 @@
*/
package org.apache.kerberos.crypto.checksum;
-import org.apache.kerberos.crypto.encryption.*;
-import org.bouncycastle.crypto.*;
-import org.bouncycastle.crypto.digests.*;
+import org.apache.kerberos.crypto.encryption.CipherType;
+import org.bouncycastle.crypto.Digest;
+import org.bouncycastle.crypto.digests.MD4Digest;
+
+public class RsaMd4Checksum extends ChecksumEngine
+{
+ public Digest getDigest()
+ {
+ return new MD4Digest();
+ }
-public class RsaMd4Checksum implements ChecksumEngine {
-
- private static final Digest digester = new MD4Digest();
-
- public ChecksumType checksumType() {
+ public ChecksumType checksumType()
+ {
return ChecksumType.RSA_MD4;
}
- public CipherType keyType() {
+ public CipherType keyType()
+ {
return CipherType.NULL;
}
- public int checksumSize() {
+ public int checksumSize()
+ {
return 16;
}
- public int keySize() {
+ public int keySize()
+ {
return 0;
}
- public int confounderSize() {
+ public int confounderSize()
+ {
return 0;
}
- public boolean isSafe() {
+ 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) {
+ public byte[] calculateKeyedChecksum(byte[] data, byte[] key)
+ {
return null;
}
- public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+ public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum)
+ {
return false;
}
}
Modified: incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java
==============================================================================
--- incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java (original)
+++ incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/RsaMd5Checksum.java Tue Nov 9 19:41:26 2004
@@ -16,51 +16,54 @@
*/
package org.apache.kerberos.crypto.checksum;
-import org.apache.kerberos.crypto.encryption.*;
-import org.bouncycastle.crypto.*;
-import org.bouncycastle.crypto.digests.*;
+import org.apache.kerberos.crypto.encryption.CipherType;
+import org.bouncycastle.crypto.Digest;
+import org.bouncycastle.crypto.digests.MD5Digest;
+
+public class RsaMd5Checksum extends ChecksumEngine
+{
+ public Digest getDigest()
+ {
+ return new MD5Digest();
+ }
-public class RsaMd5Checksum implements ChecksumEngine {
-
- private static final Digest digester = new MD5Digest();
-
- public ChecksumType checksumType() {
+ public ChecksumType checksumType()
+ {
return ChecksumType.RSA_MD5;
}
- public CipherType keyType() {
+ public CipherType keyType()
+ {
return CipherType.NULL;
}
- public int checksumSize() {
+ public int checksumSize()
+ {
return 16;
}
- public int keySize() {
+ public int keySize()
+ {
return 0;
}
- public int confounderSize() {
+ public int confounderSize()
+ {
return 0;
}
- public boolean isSafe() {
+ 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) {
+ public byte[] calculateKeyedChecksum( byte[] data, byte[] key )
+ {
return null;
}
- public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+ public boolean verifyKeyedChecksum( byte[] data, byte[] key, byte[] checksum )
+ {
return false;
}
}
Modified: incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Sha1Checksum.java
==============================================================================
--- incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Sha1Checksum.java (original)
+++ incubator/directory/kerberos/trunk/kerberos/src/java/org/apache/kerberos/crypto/checksum/Sha1Checksum.java Tue Nov 9 19:41:26 2004
@@ -16,51 +16,54 @@
*/
package org.apache.kerberos.crypto.checksum;
-import org.apache.kerberos.crypto.encryption.*;
-import org.bouncycastle.crypto.*;
-import org.bouncycastle.crypto.digests.*;
+import org.apache.kerberos.crypto.encryption.CipherType;
+import org.bouncycastle.crypto.Digest;
+import org.bouncycastle.crypto.digests.SHA1Digest;
+
+public class Sha1Checksum extends ChecksumEngine
+{
+ public Digest getDigest()
+ {
+ return new SHA1Digest();
+ }
-public class Sha1Checksum implements ChecksumEngine {
-
- private static final Digest digester = new SHA1Digest();
-
- public ChecksumType checksumType() {
+ public ChecksumType checksumType()
+ {
return ChecksumType.SHA1;
}
- public CipherType keyType() {
+ public CipherType keyType()
+ {
return CipherType.NULL;
}
- public int checksumSize() {
+ public int checksumSize()
+ {
return 20;
}
- public int keySize() {
+ public int keySize()
+ {
return 0;
}
- public int confounderSize() {
+ public int confounderSize()
+ {
return 0;
}
- public boolean isSafe() {
+ 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) {
+ public byte[] calculateKeyedChecksum( byte[] data, byte[] key )
+ {
return null;
}
- public boolean verifyKeyedChecksum(byte[] data, byte[] key, byte[] checksum) {
+ public boolean verifyKeyedChecksum( byte[] data, byte[] key, byte[] checksum )
+ {
return false;
}
}