1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.codec.digest; 19 20 /** 21 * Standard {@link HmacUtils} algorithm names from the <cite>Java Cryptography Architecture Standard Algorithm Name 22 * Documentation</cite>. 23 * 24 * <p> 25 * <strong>Note: Not all JCE implementations support all the algorithms in this enum.</strong> 26 * </p> 27 * 28 * @see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> Java 29 * 8 Cryptography Architecture Sun Providers Documentation</a> 30 * @see <a href= 31 * "https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-A47B1249-593C-4C38-A0D0-68FA7681E0A7"> 32 * Java 11 Cryptography Architecture Sun Providers Documentation</a> 33 * @see <a href= 34 * "https://docs.oracle.com/en/java/javase/17/security/oracle-providers.html#GUID-A47B1249-593C-4C38-A0D0-68FA7681E0A7"> 35 * Java 17 Cryptography Architecture Sun Providers Documentation</a> 36 * 37 * @since 1.10 38 */ 39 public enum HmacAlgorithms { 40 41 /** 42 * The HmacMD5 Message Authentication Code (MAC) algorithm specified in RFC 2104 and RFC 1321. 43 * <p> 44 * Every implementation of the Java platform is required to support this standard MAC algorithm. 45 * </p> 46 */ 47 HMAC_MD5("HmacMD5"), 48 49 /** 50 * The HmacSHA1 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2. 51 * <p> 52 * Every implementation of the Java platform is required to support this standard MAC algorithm. 53 * </p> 54 */ 55 HMAC_SHA_1("HmacSHA1"), 56 57 /** 58 * The HmacSHA224 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2. 59 * <p> 60 * Every implementation of the Java 8+ platform is required to support this standard MAC algorithm. 61 * </p> 62 * @since 1.11 63 */ 64 HMAC_SHA_224("HmacSHA224"), 65 66 /** 67 * The HmacSHA256 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2. 68 * <p> 69 * Every implementation of the Java platform is required to support this standard MAC algorithm. 70 * </p> 71 */ 72 HMAC_SHA_256("HmacSHA256"), 73 74 /** 75 * The HmacSHA384 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2. 76 * <p> 77 * This MAC algorithm is <em>optional</em>; not all implementations support it. 78 * </p> 79 */ 80 HMAC_SHA_384("HmacSHA384"), 81 82 /** 83 * The HmacSHA512 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2. 84 * <p> 85 * This MAC algorithm is <em>optional</em>; not all implementations support it. 86 * </p> 87 */ 88 HMAC_SHA_512("HmacSHA512"); 89 90 private final String name; 91 92 HmacAlgorithms(final String algorithm) { 93 this.name = algorithm; 94 } 95 96 /** 97 * Gets the algorithm name. 98 * 99 * @return the algorithm name. 100 * @since 1.11 101 */ 102 public String getName() { 103 return name; 104 } 105 106 /** 107 * The algorithm name. 108 * 109 * @see <a href="https://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> 110 * Java 6 Cryptography Architecture Sun Providers Documentation</a> 111 * @see <a href="https://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> 112 * Java 7 Cryptography Architecture Sun Providers Documentation</a> 113 * @see <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> 114 * Java 8 Cryptography Architecture Sun Providers Documentation</a> 115 * @see <a href= 116 * "https://docs.oracle.com/javase/9/security/oracleproviders.htm#JSSEC-GUID-A47B1249-593C-4C38-A0D0-68FA7681E0A7"> 117 * Java 9 Cryptography Architecture Sun Providers Documentation</a> 118 * @return The algorithm name ("HmacSHA512" for example) 119 */ 120 @Override 121 public String toString() { 122 return name; 123 } 124 125 }