On Mon, May 16, 2016 at 5:33 PM, sebb <seb...@gmail.com> wrote: > On 17 May 2016 at 00:05, Gary Gregory <garydgreg...@gmail.com> wrote: > > On Mon, May 16, 2016 at 3:50 PM, sebb <seb...@gmail.com> wrote: > > > >> On 16 May 2016 at 21:47, <ggreg...@apache.org> wrote: > >> > Author: ggregory > >> > Date: Mon May 16 20:47:47 2016 > >> > New Revision: 1744132 > >> > > >> > URL: http://svn.apache.org/viewvc?rev=1744132&view=rev > >> > Log: > >> > [CODEC-218] Refactor HmacUtils methods into the HmacAlgorithms enum. > >> > >> -1 > >> > >> I don't see the point in deprecating perfectly good methods and > >> forcing users to update their source. > >> > > > > Because when the next major version of [codec] comes out we can remove > > deprecated methods, which are clearly not OO. Using the enum (yes, it > could > > be a class too) is OO, cleaner, leaner, and clearer IMO. > > I suppose it's possible that using an enum instead of multiple > HmacUtils methods will require less code. > But it would be even less code to drop all the specific HmacUtils > methods and replace with string versions. > > It's not cleaner because the enum cannot replace all the possible Hmac > instances. > The String interfaces will still be needed. > > And it's not clearer because there will be two different ways of using > the methods. > One which works with every algorithm and the enum style which only > works for some algos. > > > I suppose that in a new major version we can do whatever we want with > APIs, > > so we strictly do not need to deprecate. Is that what you'd rather see? > > No, because non-standard Hmac methods will still need to use Strings. > > Enums only make sense when they fully "enum"erate the parameter range. >
So it would make sense to define a SunMessageDigestAlgorithm enum per https://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html for MD2 MD5 SHA-1 SHA-256 SHA-384 SHA-512 It looks like IBM supports the same in Java 7: https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.security.component.71.doc/security-component/JceDocs/architecture.html%23Architecture__j2sdkenginelist?lang=en I seems reasonable to leave it as is for now... Gary > > Also I see no point in deprecating the methods which produce identical > results as the enum versions just because of what is effectively a > style issue. > > > Gary > > > > > >> > >> > Added: > >> > > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacAlgorithmsTest.java > >> > Modified: > >> > commons/proper/codec/trunk/src/changes/changes.xml > >> > > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacAlgorithms.java > >> > > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacUtils.java > >> > > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacUtilsTest.java > >> > > >> > Modified: commons/proper/codec/trunk/src/changes/changes.xml > >> > URL: > >> > http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1744132&r1=1744131&r2=1744132&view=diff > >> > > >> > ============================================================================== > >> > --- commons/proper/codec/trunk/src/changes/changes.xml (original) > >> > +++ commons/proper/codec/trunk/src/changes/changes.xml Mon May 16 > >> 20:47:47 2016 > >> > @@ -47,6 +47,7 @@ The <action> type attribute can be add,u > >> > <action dev="ggregory" type="fix" issue="CODEC-207" > due-to="Gary > >> Gregory">Charsets Javadoc breaks build when using Java 8</action> > >> > <action dev="ggregory" type="fix" issue="CODEC-199" > due-to="Yossi > >> Tamari">Bug in HW rule in Soundex</action> > >> > <action dev="ggregory" type="fix" issue="CODEC-209" > due-to="Gary > >> Gregory">Javadoc for SHA-224 DigestUtils methods should mention Java > 1.8.0 > >> restriction instead of 1.4.0.</action> > >> > + <action dev="ggregory" type="add" issue="CODEC-218" > due-to="Gary > >> Gregory">Refactor HmacUtils methods into the HmacAlgorithms > enum</action> > >> > <action dev="ggregory" type="add" issue="CODEC-217" > due-to="Gary > >> Gregory">Add HmacAlgorithms.HMAC_SHA_224 (Java 8 only)</action> > >> > <action dev="ggregory" type="add" issue="CODEC-213" > due-to="Gary > >> Gregory">Support JEP 287: SHA-3 Hash Algorithms</action> > >> > <action dev="ggregory" type="add" issue="CODEC-212" > due-to="Gary > >> Gregory">Create a minimal Digest command line utility: > >> org.apache.commons.codec.digest.Digest</action> > >> > > >> > Modified: > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacAlgorithms.java > >> > URL: > >> > http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacAlgorithms.java?rev=1744132&r1=1744131&r2=1744132&view=diff > >> > > >> > ============================================================================== > >> > --- > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacAlgorithms.java > >> (original) > >> > +++ > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacAlgorithms.java > >> Mon May 16 20:47:47 2016 > >> > @@ -17,6 +17,16 @@ > >> > > >> > package org.apache.commons.codec.digest; > >> > > >> > +import java.io.IOException; > >> > +import java.io.InputStream; > >> > +import java.security.Key; > >> > +import java.security.NoSuchAlgorithmException; > >> > + > >> > +import javax.crypto.Mac; > >> > + > >> > +import org.apache.commons.codec.binary.Hex; > >> > +import org.apache.commons.codec.binary.StringUtils; > >> > + > >> > /** > >> > * Standard {@link HmacUtils} algorithm names from the <cite>Java > >> Cryptography Architecture Standard Algorithm Name > >> > * Documentation</cite>. > >> > @@ -25,8 +35,12 @@ package org.apache.commons.codec.digest; > >> > * <strong>Note: Not all JCE implementations support all the > algorithms > >> in this enum.</strong> > >> > * </p> > >> > * > >> > - * @see <a href=" > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html > ">Java > >> Cryptography > >> > - * Architecture Standard Algorithm Name Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > "> > >> Java > >> > + * 6 Cryptography Architecture Sun Providers Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > "> > >> Java > >> > + * 7 Cryptography Architecture Sun Providers Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > "> > >> Java > >> > + * 8 Cryptography Architecture Sun Providers Documentation</a> > >> > * @since 1.10 > >> > * @version $Id$ > >> > */ > >> > @@ -51,7 +65,7 @@ public enum HmacAlgorithms { > >> > /** > >> > * The HmacSHA256 Message Authentication Code (MAC) algorithm > >> specified in RFC 2104 and FIPS PUB 180-2. > >> > * <p> > >> > - * Every implementation of the Java 8 platform is required to > >> support this standard MAC algorithm. > >> > + * Every implementation of the Java platform is required to > support > >> this standard MAC algorithm. > >> > * </p> > >> > */ > >> > HMAC_SHA_224("HmacSHA224"), > >> > @@ -80,23 +94,181 @@ public enum HmacAlgorithms { > >> > */ > >> > HMAC_SHA_512("HmacSHA512"); > >> > > >> > - private final String algorithm; > >> > + private final String name; > >> > > >> > private HmacAlgorithms(final String algorithm) { > >> > - this.algorithm = algorithm; > >> > + this.name = algorithm; > >> > + } > >> > + > >> > + /** > >> > + * Returns an initialized <code>Mac</code> for the this > algorithm. > >> > + * <p> > >> > + * Every implementation of the Java platform is required to > support > >> this standard Mac algorithm. > >> > + * </p> > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @return A Mac instance initialized with the given key. > >> > + * @see Mac#getInstance(String) > >> > + * @see Mac#init(Key) > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public Mac getHmac(final byte[] key) { > >> > + return HmacUtils.getInitializedMac(name, key); > >> > + } > >> > + > >> > + /** > >> > + * Returns an initialized <code>Mac</code> for this algorithm. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @return A Mac instance initialized with the given key. > >> > + * @see Mac#getInstance(String) > >> > + * @see Mac#init(Key) > >> > + * @throws IllegalArgumentException > >> > + * when key is null or invalid. > >> > + */ > >> > + public Mac getInitializedMac(final byte[] key) { > >> > + return HmacUtils.getInitializedMac(name, key); > >> > + } > >> > + > >> > + /** > >> > + * Gets the algorithm name. > >> > + * > >> > + * @return the algorithm name. > >> > + */ > >> > + public String getName() { > >> > + return name; > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) for > the > >> given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest (maybe > empty > >> or null) > >> > + * @return HMAC for the given key and value > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public byte[] hmac(final byte[] key, final byte[] valueToDigest) > { > >> > + try { > >> > + return getHmac(key).doFinal(valueToDigest); > >> > + } catch (final IllegalStateException e) { > >> > + // cannot happen > >> > + throw new IllegalArgumentException(e); > >> > + } > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) for > the > >> given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest. The > >> InputStream must not be null and will not be closed. > >> > + * @return HMAC for the given key and value > >> > + * @throws IOException > >> > + * If an I/O error occurs. > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public byte[] hmac(final byte[] key, final InputStream > >> valueToDigest) throws IOException { > >> > + return HmacUtils.updateHmac(getHmac(key), > >> valueToDigest).doFinal(); > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) for > the > >> given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest (maybe > empty > >> or null) > >> > + * @return HMAC for the given key and value > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public byte[] hmac(final String key, final String valueToDigest) > { > >> > + return hmac(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) as a > hex > >> string (lowercase) for the given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest (maybe > empty > >> or null) > >> > + * @return HMAC for the given key and value as a hex string > >> (lowercase) > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public String hmacHex(final byte[] key, final byte[] > valueToDigest) > >> { > >> > + return Hex.encodeHexString(hmac(key, valueToDigest)); > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) as a > hex > >> string (lowercase) for the given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest. The > >> InputStream must not be null and will not be closed. > >> > + * @return HMAC for the given key and value as a hex string > >> (lowercase) > >> > + * @throws IOException > >> > + * If an I/O error occurs. > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public String hmacHex(final byte[] key, final InputStream > >> valueToDigest) throws IOException { > >> > + return Hex.encodeHexString(hmac(key, valueToDigest)); > >> > + } > >> > + > >> > + /** > >> > + * Returns a keyed-Hash Message Authentication Code (HMAC) as a > hex > >> string (lowercase) for the given key and value. > >> > + * > >> > + * @param key > >> > + * They key for the keyed digest (must not be null) > >> > + * @param valueToDigest > >> > + * The value (data) which should to digest (maybe > empty > >> or null) > >> > + * @return HMAC for the given key and value as a hex string > >> (lowercase) > >> > + * @throws IllegalArgumentException > >> > + * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + */ > >> > + public String hmacHex(final String key, final String > valueToDigest) > >> { > >> > + return Hex.encodeHexString(hmac(key, valueToDigest)); > >> > + } > >> > + > >> > + /** > >> > + * Returns whether this algorithm is available > >> > + * > >> > + * @return whether this algorithm is available > >> > + */ > >> > + public boolean isAvailable() { > >> > + try { > >> > + Mac.getInstance(name); > >> > + return true; > >> > + } catch (NoSuchAlgorithmException e) { > >> > + return false; > >> > + } > >> > } > >> > > >> > /** > >> > * The algorithm name > >> > * > >> > - * @see <a > >> > - * href=" > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > >> ">Java > >> > - * Cryptography Architecture Sun Providers Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > >> "> > >> > + * Java 6 Cryptography Architecture Sun Providers > >> Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > >> "> > >> > + * Java 7 Cryptography Architecture Sun Providers > >> Documentation</a> > >> > + * @see <a href=" > >> > http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider > >> "> > >> > + * Java 8 Cryptography Architecture Sun Providers > >> Documentation</a> > >> > * @return The algorithm name ("HmacSHA512" for example) > >> > */ > >> > @Override > >> > public String toString() { > >> > - return algorithm; > >> > + return name; > >> > } > >> > - > >> > + > >> > } > >> > > >> > Modified: > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacUtils.java > >> > URL: > >> > http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacUtils.java?rev=1744132&r1=1744131&r2=1744132&view=diff > >> > > >> > ============================================================================== > >> > --- > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacUtils.java > >> (original) > >> > +++ > >> > commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/HmacUtils.java > >> Mon May 16 20:47:47 2016 > >> > @@ -26,7 +26,6 @@ import java.security.NoSuchAlgorithmExce > >> > import javax.crypto.Mac; > >> > import javax.crypto.spec.SecretKeySpec; > >> > > >> > -import org.apache.commons.codec.binary.Hex; > >> > import org.apache.commons.codec.binary.StringUtils; > >> > > >> > /** > >> > @@ -57,9 +56,11 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.HMAC_MD5.getHmac(byte[])} > >> > */ > >> > + @Deprecated > >> > public static Mac getHmacMd5(final byte[] key) { > >> > - return getInitializedMac(HmacAlgorithms.HMAC_MD5, key); > >> > + return HmacAlgorithms.HMAC_MD5.getHmac(key); > >> > } > >> > > >> > /** > >> > @@ -75,9 +76,11 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.HMAC_SHA1.getHmac(byte[])} > >> > */ > >> > + @Deprecated > >> > public static Mac getHmacSha1(final byte[] key) { > >> > - return getInitializedMac(HmacAlgorithms.HMAC_SHA_1, key); > >> > + return HmacAlgorithms.HMAC_SHA_1.getHmac(key); > >> > } > >> > > >> > /** > >> > @@ -93,9 +96,11 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > >> HmacAlgorithms.HMAC_SHA256.getHmac(byte[])} > >> > */ > >> > + @Deprecated > >> > public static Mac getHmacSha256(final byte[] key) { > >> > - return getInitializedMac(HmacAlgorithms.HMAC_SHA_256, key); > >> > + return HmacAlgorithms.HMAC_SHA_256.getHmac(key); > >> > } > >> > > >> > /** > >> > @@ -111,9 +116,11 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > >> HmacAlgorithms.HMAC_SHA384.getHmac(byte[])} > >> > */ > >> > + @Deprecated > >> > public static Mac getHmacSha384(final byte[] key) { > >> > - return getInitializedMac(HmacAlgorithms.HMAC_SHA_384, key); > >> > + return HmacAlgorithms.HMAC_SHA_384.getHmac(key); > >> > } > >> > > >> > /** > >> > @@ -129,19 +136,21 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > >> HmacAlgorithms.HMAC_SHA512.getHmac(byte[])} > >> > */ > >> > + @Deprecated > >> > public static Mac getHmacSha512(final byte[] key) { > >> > - return getInitializedMac(HmacAlgorithms.HMAC_SHA_512, key); > >> > + return HmacAlgorithms.HMAC_SHA_512.getHmac(key); > >> > } > >> > > >> > /** > >> > * Returns an initialized <code>Mac</code> for the given > >> <code>algorithm</code>. > >> > * > >> > * @param algorithm > >> > - * the name of the algorithm requested. See <a href= > >> > - * " > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA > " > >> >Appendix > >> > - * A in the Java Cryptography Architecture Reference > >> Guide</a> for information about standard algorithm > >> > - * names. > >> > + * the name of the algorithm requested. See > >> > + * <a href= " > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA > >> " > >> > + * >Appendix A in the Java Cryptography Architecture > >> Reference Guide</a> for information about standard > >> > + * algorithm names. > >> > * @param key > >> > * They key for the keyed digest (must not be null) > >> > * @return A Mac instance initialized with the given key. > >> > @@ -149,19 +158,21 @@ public final class HmacUtils { > >> > * @see Mac#init(Key) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@link > HmacAlgorithms#getInitializedMac(byte[])}. > >> > */ > >> > + @Deprecated > >> > public static Mac getInitializedMac(final HmacAlgorithms > algorithm, > >> final byte[] key) { > >> > - return getInitializedMac(algorithm.toString(), key); > >> > + return algorithm.getInitializedMac(key); > >> > } > >> > > >> > /** > >> > * Returns an initialized <code>Mac</code> for the given > >> <code>algorithm</code>. > >> > * > >> > * @param algorithm > >> > - * the name of the algorithm requested. See <a href= > >> > - * " > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA > " > >> >Appendix > >> > - * A in the Java Cryptography Architecture Reference > >> Guide</a> for information about standard algorithm > >> > - * names. > >> > + * the name of the algorithm requested. See > >> > + * <a href= " > >> > http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA > >> " > >> > + * >Appendix A in the Java Cryptography Architecture > >> Reference Guide</a> for information about standard > >> > + * algorithm names. > >> > * @param key > >> > * They key for the keyed digest (must not be null) > >> > * @return A Mac instance initialized with the given key. > >> > @@ -200,14 +211,11 @@ public final class HmacUtils { > >> > * @return HmacMD5 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmac(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacMd5(final byte[] key, final byte[] > >> valueToDigest) { > >> > - try { > >> > - return getHmacMd5(key).doFinal(valueToDigest); > >> > - } catch (final IllegalStateException e) { > >> > - // cannot happen > >> > - throw new IllegalArgumentException(e); > >> > - } > >> > + return HmacAlgorithms.HMAC_MD5.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -225,9 +233,11 @@ public final class HmacUtils { > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmac(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacMd5(final byte[] key, final InputStream > >> valueToDigest) throws IOException { > >> > - return updateHmac(getHmacMd5(key), valueToDigest).doFinal(); > >> > + return HmacAlgorithms.HMAC_MD5.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -240,9 +250,11 @@ public final class HmacUtils { > >> > * @return HmacMD5 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmac(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacMd5(final String key, final String > >> valueToDigest) { > >> > - return hmacMd5(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + return HmacAlgorithms.HMAC_MD5.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -255,9 +267,11 @@ public final class HmacUtils { > >> > * @return HmacMD5 MAC for the given key and value as a hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmacHex(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static String hmacMd5Hex(final byte[] key, final byte[] > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacMd5(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_MD5.hmacHex(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -275,9 +289,11 @@ public final class HmacUtils { > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmacHex(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static String hmacMd5Hex(final byte[] key, final > InputStream > >> valueToDigest) throws IOException { > >> > - return Hex.encodeHexString(hmacMd5(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_MD5.hmacHex(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -290,9 +306,11 @@ public final class HmacUtils { > >> > * @return HmacMD5 MAC for the given key and value as a hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.MD5.getHmacHex(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static String hmacMd5Hex(final String key, final String > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacMd5(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_MD5.hmacHex(key, valueToDigest); > >> > } > >> > > >> > // hmacSha1 > >> > @@ -307,14 +325,11 @@ public final class HmacUtils { > >> > * @return HmacSHA1 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmac(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha1(final byte[] key, final byte[] > >> valueToDigest) { > >> > - try { > >> > - return getHmacSha1(key).doFinal(valueToDigest); > >> > - } catch (final IllegalStateException e) { > >> > - // cannot happen > >> > - throw new IllegalArgumentException(e); > >> > - } > >> > + return HmacAlgorithms.HMAC_SHA_1.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -332,9 +347,11 @@ public final class HmacUtils { > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmac(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha1(final byte[] key, final InputStream > >> valueToDigest) throws IOException { > >> > - return updateHmac(getHmacSha1(key), valueToDigest).doFinal(); > >> > + return HmacAlgorithms.HMAC_SHA_1.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -347,9 +364,11 @@ public final class HmacUtils { > >> > * @return HmacSHA1 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmac(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha1(final String key, final String > >> valueToDigest) { > >> > - return hmacSha1(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_1.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -362,9 +381,11 @@ public final class HmacUtils { > >> > * @return HmacSHA1 MAC for the given key and value as hex string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmacHex(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha1Hex(final byte[] key, final byte[] > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha1(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_1.hmacHex(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -382,9 +403,11 @@ public final class HmacUtils { > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmacHex(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha1Hex(final byte[] key, final > >> InputStream valueToDigest) throws IOException { > >> > - return Hex.encodeHexString(hmacSha1(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_1.hmacHex(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -397,9 +420,11 @@ public final class HmacUtils { > >> > * @return HmacSHA1 MAC for the given key and value as hex string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_1.getHmacHex(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha1Hex(final String key, final String > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha1(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_1.hmacHex(key, valueToDigest); > >> > } > >> > > >> > // hmacSha256 > >> > @@ -414,14 +439,11 @@ public final class HmacUtils { > >> > * @return HmacSHA256 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_256.getHmac(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha256(final byte[] key, final byte[] > >> valueToDigest) { > >> > - try { > >> > - return getHmacSha256(key).doFinal(valueToDigest); > >> > - } catch (final IllegalStateException e) { > >> > - // cannot happen > >> > - throw new IllegalArgumentException(e); > >> > - } > >> > + return HmacAlgorithms.HMAC_SHA_256.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -437,11 +459,13 @@ public final class HmacUtils { > >> > * @return HmacSHA256 MAC for the given key and value > >> > * @throws IOException > >> > * If an I/O error occurs. > >> > -s * @throws IllegalArgumentException > >> > + * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_256.getHmac(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha256(final byte[] key, final > InputStream > >> valueToDigest) throws IOException { > >> > - return updateHmac(getHmacSha256(key), > valueToDigest).doFinal(); > >> > + return HmacAlgorithms.HMAC_SHA_256.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -454,9 +478,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA256 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_256.getHmac(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha256(final String key, final String > >> valueToDigest) { > >> > - return hmacSha256(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_256.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -469,9 +495,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA256 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_256.getHmacHex(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha256Hex(final byte[] key, final byte[] > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha256(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_256.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -489,9 +517,11 @@ s * @throws IllegalArgumentException > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_256.getHmacHex(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha256Hex(final byte[] key, final > >> InputStream valueToDigest) throws IOException { > >> > - return Hex.encodeHexString(hmacSha256(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_256.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -504,9 +534,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA256 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_256.getHmacHex(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha256Hex(final String key, final String > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha256(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_256.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > // hmacSha384 > >> > @@ -521,14 +553,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA384 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_384.getHmac(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha384(final byte[] key, final byte[] > >> valueToDigest) { > >> > - try { > >> > - return getHmacSha384(key).doFinal(valueToDigest); > >> > - } catch (final IllegalStateException e) { > >> > - // cannot happen > >> > - throw new IllegalArgumentException(e); > >> > - } > >> > + return HmacAlgorithms.HMAC_SHA_384.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -546,9 +575,11 @@ s * @throws IllegalArgumentException > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_384.getHmac(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha384(final byte[] key, final > InputStream > >> valueToDigest) throws IOException { > >> > - return updateHmac(getHmacSha384(key), > valueToDigest).doFinal(); > >> > + return HmacAlgorithms.HMAC_SHA_384.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -561,9 +592,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA384 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_384.getHmac(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha384(final String key, final String > >> valueToDigest) { > >> > - return hmacSha384(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_384.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -576,9 +609,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA384 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_384.getHmacHex(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha384Hex(final byte[] key, final byte[] > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha384(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_384.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -596,9 +631,11 @@ s * @throws IllegalArgumentException > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_384.getHmacHex(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha384Hex(final byte[] key, final > >> InputStream valueToDigest) throws IOException { > >> > - return Hex.encodeHexString(hmacSha384(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_384.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -611,9 +648,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA384 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_384.getHmacHex(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha384Hex(final String key, final String > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha384(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_384.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > // hmacSha512 > >> > @@ -628,14 +667,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA512 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_512.getHmac(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha512(final byte[] key, final byte[] > >> valueToDigest) { > >> > - try { > >> > - return getHmacSha512(key).doFinal(valueToDigest); > >> > - } catch (final IllegalStateException e) { > >> > - // cannot happen > >> > - throw new IllegalArgumentException(e); > >> > - } > >> > + return HmacAlgorithms.HMAC_SHA_512.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -653,9 +689,11 @@ s * @throws IllegalArgumentException > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_512.getHmac(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha512(final byte[] key, final > InputStream > >> valueToDigest) throws IOException { > >> > - return updateHmac(getHmacSha512(key), > valueToDigest).doFinal(); > >> > + return HmacAlgorithms.HMAC_SHA_512.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -668,9 +706,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA512 MAC for the given key and value > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code HmacAlgorithms.SHA_512.getHmac(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static byte[] hmacSha512(final String key, final String > >> valueToDigest) { > >> > - return hmacSha512(StringUtils.getBytesUtf8(key), > >> StringUtils.getBytesUtf8(valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_512.hmac(key, valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -683,9 +723,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA512 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_512.getHmacHex(byte[], > >> byte[])} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha512Hex(final byte[] key, final byte[] > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha512(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_512.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -703,9 +745,11 @@ s * @throws IllegalArgumentException > >> > * If an I/O error occurs. > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_512.getHmacHex(byte[], > >> InputStream)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha512Hex(final byte[] key, final > >> InputStream valueToDigest) throws IOException { > >> > - return Hex.encodeHexString(hmacSha512(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_512.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > /** > >> > @@ -718,9 +762,11 @@ s * @throws IllegalArgumentException > >> > * @return HmacSHA512 MAC for the given key and value as hex > string > >> (lowercase) > >> > * @throws IllegalArgumentException > >> > * when a {@link NoSuchAlgorithmException} is caught > or > >> key is null or key is invalid. > >> > + * @deprecated Use {@code > HmacAlgorithms.SHA_512.getHmacHex(String, > >> String)} > >> > */ > >> > + @Deprecated > >> > public static String hmacSha512Hex(final String key, final String > >> valueToDigest) { > >> > - return Hex.encodeHexString(hmacSha512(key, valueToDigest)); > >> > + return HmacAlgorithms.HMAC_SHA_512.hmacHex(key, > valueToDigest); > >> > } > >> > > >> > // update > >> > > >> > Added: > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacAlgorithmsTest.java > >> > URL: > >> > http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacAlgorithmsTest.java?rev=1744132&view=auto > >> > > >> > ============================================================================== > >> > --- > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacAlgorithmsTest.java > >> (added) > >> > +++ > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacAlgorithmsTest.java > >> Mon May 16 20:47:47 2016 > >> > @@ -0,0 +1,219 @@ > >> > +/* > >> > + * Licensed to the Apache Software Foundation (ASF) under one or more > >> > + * contributor license agreements. See the NOTICE file distributed > with > >> > + * this work for additional information regarding copyright > ownership. > >> > + * The ASF licenses this file to You 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.commons.codec.digest; > >> > + > >> > +import java.io.ByteArrayInputStream; > >> > +import java.io.File; > >> > +import java.io.IOException; > >> > +import java.security.NoSuchAlgorithmException; > >> > +import java.util.Arrays; > >> > +import java.util.Collection; > >> > + > >> > +import javax.crypto.Mac; > >> > + > >> > +import org.junit.After; > >> > +import org.junit.Assert; > >> > +import org.junit.Assume; > >> > +import org.junit.Before; > >> > +import org.junit.Test; > >> > +import org.junit.runner.RunWith; > >> > +import org.junit.runners.Parameterized; > >> > +import org.junit.runners.Parameterized.Parameters; > >> > + > >> > +/** > >> > + * Tests {@link MessageDigestAlgorithm}. > >> > + * > >> > + * @since 1.11 > >> > + */ > >> > +@RunWith(Parameterized.class) > >> > +public class HmacAlgorithmsTest { > >> > + > >> > + static final String STANDARD_KEY_STRING = "key"; > >> > + > >> > + static final byte[] STANDARD_KEY_BYTES = > >> STANDARD_KEY_STRING.getBytes(); > >> > + > >> > + static final byte[] STANDARD_MD5_RESULT_BYTES = new byte[] { > -128, > >> 7, 7, 19, 70, 62, 119, 73, -71, 12, 45, -62, 73, > >> > + 17, -30, 117 }; > >> > + > >> > + static final String STANDARD_MD5_RESULT_STRING = > >> "80070713463e7749b90c2dc24911e275"; > >> > + > >> > + static final String STANDARD_PHRASE_STRING = "The quick brown fox > >> jumps over the lazy dog"; > >> > + > >> > + static final byte[] STANDARD_PHRASE_BYTES = > >> STANDARD_PHRASE_STRING.getBytes(); > >> > + > >> > + static final byte[] STANDARD_SHA1_RESULT_BYTES = new byte[] { > -34, > >> 124, -101, -123, -72, -73, -118, -90, -68, -118, > >> > + 122, 54, -9, 10, -112, 112, 28, -99, -76, -39 }; > >> > + > >> > + static final String STANDARD_SHA1_RESULT_STRING = > >> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"; > >> > + > >> > + static final byte[] STANDARD_SHA256_RESULT_BYTES = new byte[] { > -9, > >> -68, -125, -12, 48, 83, -124, 36, -79, 50, -104, > >> > + -26, -86, 111, -79, 67, -17, 77, 89, -95, 73, 70, 23, 89, > >> -105, 71, -99, -68, 45, 26, 60, -40 }; > >> > + > >> > + static final String STANDARD_SHA256_RESULT_STRING = > >> "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"; > >> > + > >> > + static final byte[] STANDARD_SHA384_RESULT_BYTES = new byte[] { > >> -41, -12, 114, 126, 44, 11, 57, -82, 15, 30, 64, > >> > + -52, -106, -10, 2, 66, -43, -73, -128, 24, 65, -50, -90, > >> -4, 89, 44, 93, 62, 26, -27, 7, 0, 88, 42, -106, > >> > + -49, 53, -31, -27, 84, -103, 95, -28, -32, 51, -127, -62, > >> 55 }; > >> > + > >> > + static final String STANDARD_SHA384_RESULT_STRING = > >> > "D7F4727E2C0B39AE0F1E40CC96F60242D5B7801841CEA6FC592C5D3E1AE50700582A96CF35E1E554995FE4E03381C237" > >> > + .toLowerCase(); > >> > + > >> > + static final byte[] STANDARD_SHA512_RESULT_BYTES = new byte[] { > >> -76, 42, -16, -112, 87, -70, -63, -30, -44, 23, 8, > >> > + -28, -118, -112, 46, 9, -75, -1, 127, 18, -85, 66, -118, > >> 79, -24, 102, 83, -57, 61, -46, 72, -5, -126, -7, > >> > + 72, -91, 73, -9, -73, -111, -91, -76, 25, 21, -18, 77, > 30, > >> -61, -109, 83, 87, -28, -30, 49, 114, 80, -48, > >> > + 55, 42, -6, 46, -66, -21, 58 }; > >> > + > >> > + static final String STANDARD_SHA512_RESULT_STRING = > >> > "B42AF09057BAC1E2D41708E48A902E09B5FF7F12AB428A4FE86653C73DD248FB82F948A549F7B791A5B41915EE4D1EC3935357E4E2317250D0372AFA2EBEEB3A" > >> > + .toLowerCase(); > >> > + > >> > + private static final byte[] EMPTY_BYTE_ARRAY = new byte[] {}; > >> > + > >> > + // TODO HMAC_SHA_224 > >> > + @Parameters(name = "{0}") > >> > + public static Collection<Object[]> data() { > >> > + return Arrays.asList( > >> > + new Object[][] { { HmacAlgorithms.HMAC_MD5, > >> STANDARD_MD5_RESULT_BYTES, STANDARD_MD5_RESULT_STRING }, > >> > + { HmacAlgorithms.HMAC_SHA_1, > >> STANDARD_SHA1_RESULT_BYTES, STANDARD_SHA1_RESULT_STRING }, > >> > + { HmacAlgorithms.HMAC_SHA_256, > >> STANDARD_SHA256_RESULT_BYTES, STANDARD_SHA256_RESULT_STRING }, > >> > + { HmacAlgorithms.HMAC_SHA_384, > >> STANDARD_SHA384_RESULT_BYTES, STANDARD_SHA384_RESULT_STRING }, > >> > + { HmacAlgorithms.HMAC_SHA_512, > >> STANDARD_SHA512_RESULT_BYTES, STANDARD_SHA512_RESULT_STRING } }); > >> > + } > >> > + > >> > + private DigestUtilsTest digestUtilsTest; > >> > + > >> > + private final HmacAlgorithms hmacAlgorithm; > >> > + > >> > + private final byte[] standardResultBytes; > >> > + private final String standardResultString; > >> > + > >> > + public HmacAlgorithmsTest(HmacAlgorithms hmacAlgorithm, byte[] > >> standardResultBytes, String standardResultString) { > >> > + Assume.assumeTrue(hmacAlgorithm.isAvailable()); > >> > + this.hmacAlgorithm = hmacAlgorithm; > >> > + this.standardResultBytes = standardResultBytes; > >> > + this.standardResultString = standardResultString; > >> > + } > >> > + > >> > + private byte[] getTestData() { > >> > + return digestUtilsTest.getTestData(); > >> > + } > >> > + > >> > + private File getTestFile() { > >> > + return digestUtilsTest.getTestFile(); > >> > + } > >> > + > >> > + @Before > >> > + public void setUp() throws Exception { > >> > + digestUtilsTest = new DigestUtilsTest(); > >> > + digestUtilsTest.setUp(); > >> > + } > >> > + > >> > + @After > >> > + public void tearDown() throws Exception { > >> > + digestUtilsTest.tearDown(); > >> > + digestUtilsTest = null; > >> > + } > >> > + > >> > + @Test > >> > + public void testAlgorithm() throws IOException, > >> NoSuchAlgorithmException { > >> > + final String algorithm = hmacAlgorithm.getName(); > >> > + Assert.assertNotNull(algorithm); > >> > + Assert.assertFalse(algorithm.isEmpty()); > >> > + Assume.assumeTrue(hmacAlgorithm.isAvailable()); > >> > + Mac.getInstance(algorithm); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testGetHmacEmptyKey() { > >> > + hmacAlgorithm.getHmac(EMPTY_BYTE_ARRAY); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testGetHmacNullKey() { > >> > + hmacAlgorithm.getHmac(null); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacFailByteArray() throws IOException { > >> > + hmacAlgorithm.hmac((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacFailInputStream() throws IOException { > >> > + hmacAlgorithm.hmac((byte[]) null, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES)); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacFailString() throws IOException { > >> > + hmacAlgorithm.hmac((String) null, STANDARD_PHRASE_STRING); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacHexFailByteArray() throws IOException { > >> > + hmacAlgorithm.hmacHex((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacHexFailInputStream() throws IOException { > >> > + hmacAlgorithm.hmacHex((byte[]) null, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES)); > >> > + } > >> > + > >> > + @Test(expected = IllegalArgumentException.class) > >> > + public void testHmacHexFailString() throws IOException { > >> > + hmacAlgorithm.hmacHex((String) null, STANDARD_PHRASE_STRING); > >> > + } > >> > + > >> > + @Test > >> > + public void testInitializedMac() throws IOException { > >> > + final Mac mac = HmacUtils.getInitializedMac(hmacAlgorithm, > >> STANDARD_KEY_BYTES); > >> > + final Mac mac2 = > >> HmacUtils.getInitializedMac(hmacAlgorithm.getName(), > STANDARD_KEY_BYTES); > >> > + Assert.assertArrayEquals(standardResultBytes, > >> HmacUtils.updateHmac(mac, STANDARD_PHRASE_STRING).doFinal()); > >> > + Assert.assertArrayEquals(standardResultBytes, > >> HmacUtils.updateHmac(mac2, STANDARD_PHRASE_STRING).doFinal()); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacByteArary() throws IOException { > >> > + Assert.assertArrayEquals(standardResultBytes, > >> hmacAlgorithm.hmac(STANDARD_KEY_BYTES, STANDARD_PHRASE_BYTES)); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacHexByteArray() throws IOException { > >> > + Assert.assertEquals(standardResultString, > >> hmacAlgorithm.hmacHex(STANDARD_KEY_BYTES, STANDARD_PHRASE_BYTES)); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacHexInputStream() throws IOException { > >> > + Assert.assertEquals(standardResultString, > >> > + hmacAlgorithm.hmacHex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacHexString() throws IOException { > >> > + Assert.assertEquals(standardResultString, > >> hmacAlgorithm.hmacHex(STANDARD_KEY_STRING, STANDARD_PHRASE_STRING)); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacInputStream() throws IOException { > >> > + Assert.assertArrayEquals(standardResultBytes, > >> > + hmacAlgorithm.hmac(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > + } > >> > + > >> > + @Test > >> > + public void testMacString() throws IOException { > >> > + Assert.assertArrayEquals(standardResultBytes, > >> hmacAlgorithm.hmac(STANDARD_KEY_STRING, STANDARD_PHRASE_STRING)); > >> > + } > >> > + > >> > +} > >> > > >> > Modified: > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacUtilsTest.java > >> > URL: > >> > http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacUtilsTest.java?rev=1744132&r1=1744131&r2=1744132&view=diff > >> > > >> > ============================================================================== > >> > --- > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacUtilsTest.java > >> (original) > >> > +++ > >> > commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/HmacUtilsTest.java > >> Mon May 16 20:47:47 2016 > >> > @@ -36,31 +36,6 @@ import org.junit.Test; > >> > * @version $Id$ > >> > */ > >> > public class HmacUtilsTest { > >> > - private static final String STANDARD_KEY_STRING = "key"; > >> > - private static final byte[] STANDARD_KEY_BYTES = > >> STANDARD_KEY_STRING.getBytes(); > >> > - private static final byte[] STANDARD_MD5_RESULT_BYTES = new > byte[] > >> { -128, 7, 7, 19, 70, 62, 119, 73, -71, 12, 45, > >> > - -62, 73, 17, -30, 117 }; > >> > - private static final String STANDARD_MD5_RESULT_STRING = > >> "80070713463e7749b90c2dc24911e275"; > >> > - private static final String STANDARD_PHRASE_STRING = "The quick > >> brown fox jumps over the lazy dog"; > >> > - private static final byte[] STANDARD_PHRASE_BYTES = > >> STANDARD_PHRASE_STRING.getBytes(); > >> > - private static final byte[] STANDARD_SHA1_RESULT_BYTES = new > byte[] > >> { -34, 124, -101, -123, -72, -73, -118, -90, > >> > - -68, -118, 122, 54, -9, 10, -112, 112, 28, -99, -76, -39 > }; > >> > - private static final String STANDARD_SHA1_RESULT_STRING = > >> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"; > >> > - private static final byte[] STANDARD_SHA256_RESULT_BYTES = new > >> byte[] { -9, -68, -125, -12, 48, 83, -124, 36, -79, > >> > - 50, -104, -26, -86, 111, -79, 67, -17, 77, 89, -95, 73, > 70, > >> 23, 89, -105, 71, -99, -68, 45, 26, 60, -40 }; > >> > - private static final String STANDARD_SHA256_RESULT_STRING = > >> "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"; > >> > - private static final byte[] STANDARD_SHA384_RESULT_BYTES = new > >> byte[] { -41, -12, 114, 126, 44, 11, 57, -82, 15, > >> > - 30, 64, -52, -106, -10, 2, 66, -43, -73, -128, 24, 65, > -50, > >> -90, -4, 89, 44, 93, 62, 26, -27, 7, 0, 88, 42, > >> > - -106, -49, 53, -31, -27, 84, -103, 95, -28, -32, 51, > -127, > >> -62, 55 }; > >> > - private static final String STANDARD_SHA384_RESULT_STRING = > >> > "D7F4727E2C0B39AE0F1E40CC96F60242D5B7801841CEA6FC592C5D3E1AE50700582A96CF35E1E554995FE4E03381C237" > >> > - .toLowerCase(); > >> > - private static final byte[] STANDARD_SHA512_RESULT_BYTES = new > >> byte[] { -76, 42, -16, -112, 87, -70, -63, -30, -44, > >> > - 23, 8, -28, -118, -112, 46, 9, -75, -1, 127, 18, -85, 66, > >> -118, 79, -24, 102, 83, -57, 61, -46, 72, -5, > >> > - -126, -7, 72, -91, 73, -9, -73, -111, -91, -76, 25, 21, > >> -18, 77, 30, -61, -109, 83, 87, -28, -30, 49, 114, > >> > - 80, -48, 55, 42, -6, 46, -66, -21, 58 }; > >> > - private static final String STANDARD_SHA512_RESULT_STRING = > >> > "B42AF09057BAC1E2D41708E48A902E09B5FF7F12AB428A4FE86653C73DD248FB82F948A549F7B791A5B41915EE4D1EC3935357E4E2317250D0372AFA2EBEEB3A" > >> > - .toLowerCase(); > >> > - > >> > @Test > >> > public void testConstructor() { > >> > assertNotNull(new HmacUtils()); > >> > @@ -73,22 +48,22 @@ public class HmacUtilsTest { > >> > > >> > @Test > >> > public void testGetHMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> > - > >> > HmacUtils.getHmacMd5(STANDARD_KEY_BYTES).doFinal(STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA1_RESULT_BYTES, > >> > - > >> > HmacUtils.getHmacSha1(STANDARD_KEY_BYTES).doFinal(STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA256_RESULT_BYTES, > >> > - > >> > HmacUtils.getHmacSha256(STANDARD_KEY_BYTES).doFinal(STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA384_RESULT_BYTES, > >> > - > >> > HmacUtils.getHmacSha384(STANDARD_KEY_BYTES).doFinal(STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA512_RESULT_BYTES, > >> > - > >> > HmacUtils.getHmacSha512(STANDARD_KEY_BYTES).doFinal(STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> > + > >> > HmacUtils.getHmacMd5(HmacAlgorithmsTest.STANDARD_KEY_BYTES).doFinal(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_BYTES, > >> > + > >> > HmacUtils.getHmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES).doFinal(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_BYTES, > >> > + > >> > HmacUtils.getHmacSha256(HmacAlgorithmsTest.STANDARD_KEY_BYTES).doFinal(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_BYTES, > >> > + > >> > HmacUtils.getHmacSha384(HmacAlgorithmsTest.STANDARD_KEY_BYTES).doFinal(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_BYTES, > >> > + > >> > HmacUtils.getHmacSha512(HmacAlgorithmsTest.STANDARD_KEY_BYTES).doFinal(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > } > >> > > >> > @Test > >> > public void testHmacMd5Hex() throws IOException { > >> > - assertEquals("80070713463e7749b90c2dc24911e275", > >> > - HmacUtils.hmacMd5Hex(STANDARD_KEY_STRING, "The quick > >> brown fox jumps over the lazy dog")); > >> > + assertEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_STRING, > >> > + > >> HmacUtils.hmacMd5Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, "The quick > >> brown fox jumps over the lazy dog")); > >> > assertEquals("750c783e6ab0b503eaa86e310a5db738", > >> HmacUtils.hmacMd5Hex("Jefe", "what do ya want for nothing?")); > >> > assertEquals( > >> > "750c783e6ab0b503eaa86e310a5db738", > >> > @@ -98,8 +73,8 @@ public class HmacUtilsTest { > >> > > >> > @Test > >> > public void testHmacSha1Hex() throws IOException { > >> > - assertEquals(STANDARD_SHA1_RESULT_STRING, > >> HmacUtils.hmacSha1Hex(STANDARD_KEY_STRING, STANDARD_PHRASE_STRING)); > >> > - assertEquals("f42bb0eeb018ebbd4597ae7213711ec60760843f", > >> HmacUtils.hmacSha1Hex(STANDARD_KEY_STRING, "")); > >> > + assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> HmacUtils.hmacSha1Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + assertEquals("f42bb0eeb018ebbd4597ae7213711ec60760843f", > >> HmacUtils.hmacSha1Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, "")); > >> > assertEquals("effcdf6ae5eb2fa2d27416d5f184df9c259a7c79", > >> > HmacUtils.hmacSha1Hex("Jefe", "what do ya want for > >> nothing?")); > >> > assertEquals( > >> > @@ -110,44 +85,44 @@ public class HmacUtilsTest { > >> > > >> > @Test > >> > public void testHmacSha1UpdateWithByteArray() throws IOException > { > >> > - final Mac mac = HmacUtils.getHmacSha1(STANDARD_KEY_BYTES); > >> > - HmacUtils.updateHmac(mac, STANDARD_PHRASE_BYTES); > >> > - assertEquals(STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > + final Mac mac = > >> HmacUtils.getHmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > + HmacUtils.updateHmac(mac, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > + assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > HmacUtils.updateHmac(mac, "".getBytes()); > >> > assertEquals("f42bb0eeb018ebbd4597ae7213711ec60760843f", > >> Hex.encodeHexString(mac.doFinal())); > >> > } > >> > > >> > @Test > >> > public void testHmacSha1UpdateWithInpustream() throws > IOException { > >> > - final Mac mac = HmacUtils.getHmacSha1(STANDARD_KEY_BYTES); > >> > - HmacUtils.updateHmac(mac, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES)); > >> > - assertEquals(STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > + final Mac mac = > >> HmacUtils.getHmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > + HmacUtils.updateHmac(mac, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > HmacUtils.updateHmac(mac, new > >> ByteArrayInputStream("".getBytes())); > >> > assertEquals("f42bb0eeb018ebbd4597ae7213711ec60760843f", > >> Hex.encodeHexString(mac.doFinal())); > >> > } > >> > > >> > @Test > >> > public void testHmacSha1UpdateWithString() throws IOException { > >> > - final Mac mac = HmacUtils.getHmacSha1(STANDARD_KEY_BYTES); > >> > - HmacUtils.updateHmac(mac, STANDARD_PHRASE_STRING); > >> > - assertEquals(STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > + final Mac mac = > >> HmacUtils.getHmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > + HmacUtils.updateHmac(mac, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING); > >> > + assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> Hex.encodeHexString(mac.doFinal())); > >> > HmacUtils.updateHmac(mac, ""); > >> > assertEquals("f42bb0eeb018ebbd4597ae7213711ec60760843f", > >> Hex.encodeHexString(mac.doFinal())); > >> > } > >> > > >> > @Test > >> > public void testInitializedMac() throws IOException { > >> > - final Mac md5Mac = > >> HmacUtils.getInitializedMac(HmacAlgorithms.HMAC_MD5, > STANDARD_KEY_BYTES); > >> > - final Mac md5Mac2 = HmacUtils.getInitializedMac("HmacMD5", > >> STANDARD_KEY_BYTES); > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> HmacUtils.updateHmac(md5Mac, STANDARD_PHRASE_STRING) > >> > + final Mac md5Mac = > >> HmacUtils.getInitializedMac(HmacAlgorithms.HMAC_MD5, > >> HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > + final Mac md5Mac2 = HmacUtils.getInitializedMac("HmacMD5", > >> HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> HmacUtils.updateHmac(md5Mac, HmacAlgorithmsTest.STANDARD_PHRASE_STRING) > >> > .doFinal()); > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> HmacUtils.updateHmac(md5Mac2, STANDARD_PHRASE_STRING) > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> HmacUtils.updateHmac(md5Mac2, HmacAlgorithmsTest.STANDARD_PHRASE_STRING) > >> > .doFinal()); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testInitializedMacNullAlgo() throws IOException { > >> > - HmacUtils.getInitializedMac((String) null, > STANDARD_KEY_BYTES); > >> > + HmacUtils.getInitializedMac((String) null, > >> HmacAlgorithmsTest.STANDARD_KEY_BYTES); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > @@ -162,22 +137,22 @@ public class HmacUtilsTest { > >> > > >> > @Test > >> > public void testMd5HMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> > - HmacUtils.hmacMd5(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> > - HmacUtils.hmacMd5(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertArrayEquals(STANDARD_MD5_RESULT_BYTES, > >> > - HmacUtils.hmacMd5(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > - Assert.assertEquals(STANDARD_MD5_RESULT_STRING, > >> HmacUtils.hmacMd5Hex(STANDARD_KEY_BYTES, STANDARD_PHRASE_BYTES)); > >> > - Assert.assertEquals(STANDARD_MD5_RESULT_STRING, > >> > - HmacUtils.hmacMd5Hex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertEquals(STANDARD_MD5_RESULT_STRING, > >> > - HmacUtils.hmacMd5Hex(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> > + > >> HmacUtils.hmacMd5(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> > + > >> HmacUtils.hmacMd5(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_BYTES, > >> > + > >> HmacUtils.hmacMd5(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_STRING, > >> HmacUtils.hmacMd5Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_STRING, > >> > + > >> HmacUtils.hmacMd5Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_MD5_RESULT_STRING, > >> > + > >> HmacUtils.hmacMd5Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testMd5HMacFail() throws IOException { > >> > - HmacUtils.hmacMd5((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + HmacUtils.hmacMd5((byte[]) null, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > @@ -192,85 +167,85 @@ public class HmacUtilsTest { > >> > > >> > @Test > >> > public void testSha1HMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_SHA1_RESULT_BYTES, > >> > - HmacUtils.hmacSha1(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA1_RESULT_BYTES, > >> > - HmacUtils.hmacSha1(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertArrayEquals(STANDARD_SHA1_RESULT_BYTES, > >> > - HmacUtils.hmacSha1(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > - Assert.assertEquals(STANDARD_SHA1_RESULT_STRING, > >> > - HmacUtils.hmacSha1Hex(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertEquals(STANDARD_SHA1_RESULT_STRING, > >> > - HmacUtils.hmacSha1Hex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertEquals(STANDARD_SHA1_RESULT_STRING, > >> > - HmacUtils.hmacSha1Hex(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha1(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha1(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha1Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha1Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA1_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha1Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testSha1HMacFail() throws IOException { > >> > - HmacUtils.hmacSha1((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + HmacUtils.hmacSha1((byte[]) null, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > } > >> > > >> > @Test > >> > public void testSha256HMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_SHA256_RESULT_BYTES, > >> > - HmacUtils.hmacSha256(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA256_RESULT_BYTES, > >> > - HmacUtils.hmacSha256(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertArrayEquals(STANDARD_SHA256_RESULT_BYTES, > >> > - HmacUtils.hmacSha256(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > - Assert.assertEquals(STANDARD_SHA256_RESULT_STRING, > >> > - HmacUtils.hmacSha256Hex(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertEquals(STANDARD_SHA256_RESULT_STRING, > >> > - HmacUtils.hmacSha256Hex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertEquals(STANDARD_SHA256_RESULT_STRING, > >> > - HmacUtils.hmacSha256Hex(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha256(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha256(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha256(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha256Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha256Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA256_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha256Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testSha256HMacFail() throws IOException { > >> > - HmacUtils.hmacSha256((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + HmacUtils.hmacSha256((byte[]) null, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > } > >> > > >> > @Test > >> > public void testSha384HMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_SHA384_RESULT_BYTES, > >> > - HmacUtils.hmacSha384(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA384_RESULT_BYTES, > >> > - HmacUtils.hmacSha384(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertArrayEquals(STANDARD_SHA384_RESULT_BYTES, > >> > - HmacUtils.hmacSha384(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > - Assert.assertEquals(STANDARD_SHA384_RESULT_STRING, > >> > - HmacUtils.hmacSha384Hex(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertEquals(STANDARD_SHA384_RESULT_STRING, > >> > - HmacUtils.hmacSha384Hex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertEquals(STANDARD_SHA384_RESULT_STRING, > >> > - HmacUtils.hmacSha384Hex(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha384(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha384(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha384(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha384Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha384Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA384_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha384Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testSha384HMacFail() throws IOException { > >> > - HmacUtils.hmacSha384((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + HmacUtils.hmacSha384((byte[]) null, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > } > >> > > >> > @Test > >> > public void testSha512HMac() throws IOException { > >> > - Assert.assertArrayEquals(STANDARD_SHA512_RESULT_BYTES, > >> > - HmacUtils.hmacSha512(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertArrayEquals(STANDARD_SHA512_RESULT_BYTES, > >> > - HmacUtils.hmacSha512(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertArrayEquals(STANDARD_SHA512_RESULT_BYTES, > >> > - HmacUtils.hmacSha512(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > - Assert.assertEquals(STANDARD_SHA512_RESULT_STRING, > >> > - HmacUtils.hmacSha512Hex(STANDARD_KEY_BYTES, > >> STANDARD_PHRASE_BYTES)); > >> > - Assert.assertEquals(STANDARD_SHA512_RESULT_STRING, > >> > - HmacUtils.hmacSha512Hex(STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(STANDARD_PHRASE_BYTES))); > >> > - Assert.assertEquals(STANDARD_SHA512_RESULT_STRING, > >> > - HmacUtils.hmacSha512Hex(STANDARD_KEY_STRING, > >> STANDARD_PHRASE_STRING)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha512(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha512(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> > Assert.assertArrayEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_BYTES, > >> > + > >> HmacUtils.hmacSha512(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha512Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES)); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha512Hex(HmacAlgorithmsTest.STANDARD_KEY_BYTES, new > >> ByteArrayInputStream(HmacAlgorithmsTest.STANDARD_PHRASE_BYTES))); > >> > + > >> Assert.assertEquals(HmacAlgorithmsTest.STANDARD_SHA512_RESULT_STRING, > >> > + > >> HmacUtils.hmacSha512Hex(HmacAlgorithmsTest.STANDARD_KEY_STRING, > >> HmacAlgorithmsTest.STANDARD_PHRASE_STRING)); > >> > } > >> > > >> > @Test(expected = IllegalArgumentException.class) > >> > public void testSha512HMacFail() throws IOException { > >> > - HmacUtils.hmacSha512((byte[]) null, STANDARD_PHRASE_BYTES); > >> > + HmacUtils.hmacSha512((byte[]) null, > >> HmacAlgorithmsTest.STANDARD_PHRASE_BYTES); > >> > } > >> > } > >> > \ No newline at end of file > >> > > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> For additional commands, e-mail: dev-h...@commons.apache.org > >> > >> > > > > > > -- > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > Java Persistence with Hibernate, Second Edition > > <http://www.manning.com/bauer3/> > > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > > Spring Batch in Action <http://www.manning.com/templier/> > > Blog: http://garygregory.wordpress.com > > Home: http://garygregory.com/ > > Tweet! http://twitter.com/GaryGregory > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory