View Javadoc
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="http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> Java
29   *      6 Cryptography Architecture Sun Providers Documentation</a>
30   * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> Java
31   *      7 Cryptography Architecture Sun Providers Documentation</a>
32   * @see <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider"> Java
33   *      8 Cryptography Architecture Sun Providers Documentation</a>
34   * @see <a href=
35   *      "http://docs.oracle.com/javase/9/security/oracleproviders.htm#JSSEC-GUID-A47B1249-593C-4C38-A0D0-68FA7681E0A7">
36   *      Java 9 Cryptography Architecture Sun Providers Documentation</a>
37   * @since 1.10
38   * @version $Id: HmacAlgorithms.java 1811624 2017-10-09 23:07:49Z ggregory $
39   */
40  public enum HmacAlgorithms {
41  
42      /**
43       * The HmacMD5 Message Authentication Code (MAC) algorithm specified in RFC 2104 and RFC 1321.
44       * <p>
45       * Every implementation of the Java platform is required to support this standard MAC algorithm.
46       * </p>
47       */
48      HMAC_MD5("HmacMD5"),
49  
50      /**
51       * The HmacSHA1 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2.
52       * <p>
53       * Every implementation of the Java platform is required to support this standard MAC algorithm.
54       * </p>
55       */
56      HMAC_SHA_1("HmacSHA1"),
57  
58      /**
59       * The HmacSHA224 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2.
60       * <p>
61       * Every implementation of the Java 8+ platform is required to support this standard MAC algorithm.
62       * </p>
63       * @since 1.11
64       */
65      HMAC_SHA_224("HmacSHA224"),
66  
67      /**
68       * The HmacSHA256 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2.
69       * <p>
70       * Every implementation of the Java platform is required to support this standard MAC algorithm.
71       * </p>
72       */
73      HMAC_SHA_256("HmacSHA256"),
74  
75      /**
76       * The HmacSHA384 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2.
77       * <p>
78       * This MAC algorithm is <em>optional</em>; not all implementations support it.
79       * </p>
80       */
81      HMAC_SHA_384("HmacSHA384"),
82  
83      /**
84       * The HmacSHA512 Message Authentication Code (MAC) algorithm specified in RFC 2104 and FIPS PUB 180-2.
85       * <p>
86       * This MAC algorithm is <em>optional</em>; not all implementations support it.
87       * </p>
88       */
89      HMAC_SHA_512("HmacSHA512");
90  
91      private final String name;
92  
93      private HmacAlgorithms(final String algorithm) {
94          this.name = algorithm;
95      }
96  
97      /**
98       * Gets the algorithm name.
99       *
100      * @return the algorithm name.
101      * @since 1.11
102      */
103     public String getName() {
104         return name;
105     }
106 
107     /**
108      * The algorithm name
109      *
110      * @see <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunJCEProvider">
111      *      Java 6 Cryptography Architecture Sun Providers Documentation</a>
112      * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunJCEProvider">
113      *      Java 7 Cryptography Architecture Sun Providers Documentation</a>
114      * @see <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJCEProvider">
115      *      Java 8 Cryptography Architecture Sun Providers Documentation</a>
116      * @see <a href=
117      *      "http://docs.oracle.com/javase/9/security/oracleproviders.htm#JSSEC-GUID-A47B1249-593C-4C38-A0D0-68FA7681E0A7">
118      *      Java 9 Cryptography Architecture Sun Providers Documentation</a>
119      * @return The algorithm name ("HmacSHA512" for example)
120      */
121     @Override
122     public String toString() {
123         return name;
124     }
125 
126 }