1 /*
2 * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.security.spec;
27
28 import java.security.spec.AlgorithmParameterSpec;
29
30 /**
31 * This class specifies the set of parameters used with mask generation
32 * function MGF1 in OAEP Padding and RSASSA-PSS signature scheme, as
33 * defined in the
34 * <a href="https://tools.ietf.org/rfc/rfc8017.txt">PKCS#1 v2.2</a> standard.
35 *
36 * <p>Its ASN.1 definition in PKCS#1 standard is described below:
37 * <pre>
38 * PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
39 * { OID id-mgf1 PARAMETERS HashAlgorithm },
40 * ... -- Allows for future expansion --
41 * }
42 * </pre>
43 * where
44 * <pre>
45 * HashAlgorithm ::= AlgorithmIdentifier {
46 * {OAEP-PSSDigestAlgorithms}
47 * }
48 *
49 * OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
50 * { OID id-sha1 PARAMETERS NULL }|
51 * { OID id-sha224 PARAMETERS NULL }|
52 * { OID id-sha256 PARAMETERS NULL }|
53 * { OID id-sha384 PARAMETERS NULL }|
54 * { OID id-sha512 PARAMETERS NULL }|
55 * { OID id-sha512-224 PARAMETERS NULL }|
56 * { OID id-sha512-256 PARAMETERS NULL },
57 * ... -- Allows for future expansion --
58 * }
59 * </pre>
60 * @see PSSParameterSpec
61 * @see javax.crypto.spec.OAEPParameterSpec
62 *
63 * @author Valerie Peng
64 *
65 * @since 1.5
66 */
67 public class MGF1ParameterSpec implements AlgorithmParameterSpec {
68
69 /**
70 * The MGF1ParameterSpec which uses "SHA-1" message digest
71 */
72 public static final MGF1ParameterSpec SHA1 =
73 new MGF1ParameterSpec("SHA-1");
74
75 /**
76 * The MGF1ParameterSpec which uses "SHA-224" message digest
77 */
78 public static final MGF1ParameterSpec SHA224 =
79 new MGF1ParameterSpec("SHA-224");
80
81 /**
82 * The MGF1ParameterSpec which uses "SHA-256" message digest
83 */
84 public static final MGF1ParameterSpec SHA256 =
85 new MGF1ParameterSpec("SHA-256");
86
87 /**
88 * The MGF1ParameterSpec which uses "SHA-384" message digest
89 */
90 public static final MGF1ParameterSpec SHA384 =
91 new MGF1ParameterSpec("SHA-384");
92
93 /**
94 * The MGF1ParameterSpec which uses SHA-512 message digest
95 */
96 public static final MGF1ParameterSpec SHA512 =
97 new MGF1ParameterSpec("SHA-512");
98
99 /**
100 * The MGF1ParameterSpec which uses SHA-512/224 message digest
101 */
102 public static final MGF1ParameterSpec SHA512_224 =
103 new MGF1ParameterSpec("SHA-512/224");
104
105 /**
106 * The MGF1ParameterSpec which uses SHA-512/256 message digest
107 */
108 public static final MGF1ParameterSpec SHA512_256 =
109 new MGF1ParameterSpec("SHA-512/256");
110
111 private String mdName;
112
113 /**
114 * Constructs a parameter set for mask generation function MGF1
115 * as defined in the PKCS #1 standard.
116 *
117 * @param mdName the algorithm name for the message digest
118 * used in this mask generation function MGF1.
119 * @exception NullPointerException if {@code mdName} is null.
120 */
121 public MGF1ParameterSpec(String mdName) {
122 if (mdName == null) {
123 throw new NullPointerException("digest algorithm is null");
124 }
125 this.mdName = mdName;
126 }
127
128 /**
129 * Returns the algorithm name of the message digest used by the mask
130 * generation function.
131 *
132 * @return the algorithm name of the message digest.
133 */
134 public String getDigestAlgorithm() {
135 return mdName;
136 }
137 }
138