[#124] Added length to DigestAlgorithm enum values. (#125)

Added length to DigestAlgorithm enum values.
This commit is contained in:
apldev4 2019-04-15 10:52:22 -04:00 committed by apldev3
parent 2e767994ff
commit 7ab8d11dbb
2 changed files with 22 additions and 41 deletions

View File

@ -64,39 +64,8 @@ public abstract class AbstractDigest {
throw new IllegalArgumentException(msg);
}
switch (algorithm) {
case MD2:
if (digest.length != MD2_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
case MD5:
if (digest.length != MD5_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
case SHA1:
if (digest.length != SHA1_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
case SHA256:
if (digest.length != SHA256_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
case SHA384:
if (digest.length != SHA384_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
case SHA512:
if (digest.length != SHA512_DIGEST_LENGTH) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
break;
default:
throw new IllegalArgumentException("Digest length does not match algorithm type");
if (digest.length != algorithm.getLengthInBytes()) {
throw new AbstractDigest.IllegalDigestLength(algorithm, digest);
}
}

View File

@ -9,38 +9,42 @@ public enum DigestAlgorithm {
/**
* MD2 digest algorithm.
*/
MD2("MD2"),
MD2("MD2", AbstractDigest.MD2_DIGEST_LENGTH),
/**
* MD5 digest algorithm.
*/
MD5("MD5"),
MD5("MD5", AbstractDigest.MD5_DIGEST_LENGTH),
/**
* SHA-1 digest algorithm.
*/
SHA1("SHA-1"),
SHA1("SHA-1", AbstractDigest.SHA1_DIGEST_LENGTH),
/**
* SHA-256 digest algorithm.
*/
SHA256("SHA-256"),
SHA256("SHA-256", AbstractDigest.SHA256_DIGEST_LENGTH),
/**
* SHA-384 digest algorithm.
*/
SHA384("SHA-384"),
SHA384("SHA-384", AbstractDigest.SHA384_DIGEST_LENGTH),
/**
* SHA-512 digest algorithm.
*/
SHA512("SHA-512");
SHA512("SHA-512", AbstractDigest.SHA512_DIGEST_LENGTH);
private String standardAlgorithmName;
private final String standardAlgorithmName;
private final int lengthInBytes;
/**
* Creates a new <code>DigestAlgorithm</code>.
*
* @param standardAlgorithmName
* Java standard algorithm name
* @param lengthInBytes length of hash in bytes
*/
DigestAlgorithm(final String standardAlgorithmName) {
DigestAlgorithm(final String standardAlgorithmName, final int lengthInBytes) {
this.standardAlgorithmName = standardAlgorithmName;
this.lengthInBytes = lengthInBytes;
}
/**
@ -52,6 +56,14 @@ public enum DigestAlgorithm {
return this.standardAlgorithmName;
}
/**
* Returns the hash length in bytes (not hex characters).
* @return hash length in bytes (not hex characters)
*/
public int getLengthInBytes() {
return lengthInBytes;
}
/**
* Returns a DigestAlgorithm object given a String. The String is expected to be one of the
* options for standardAlgorithmName. Throws an IllegalArgumentException if no Enum exists with