1 /* 2 * Copyright (c) 2003, 2013, 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 RSA-PSS signature scheme, as 33 * defined in the 34 * <a href="http://www.ietf.org/rfc/rfc3447.txt">PKCS #1 v2.1</a> 35 * standard. 36 * 37 * <p>Its ASN.1 definition in PKCS#1 standard is described below: 38 * <pre> 39 * MGF1Parameters ::= OAEP-PSSDigestAlgorthms 40 * </pre> 41 * where 42 * <pre> 43 * OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= { 44 * { OID id-sha1 PARAMETERS NULL }| 45 * { OID id-sha224 PARAMETERS NULL }| 46 * { OID id-sha256 PARAMETERS NULL }| 47 * { OID id-sha384 PARAMETERS NULL }| 48 * { OID id-sha512 PARAMETERS NULL }, 49 * ... -- Allows for future expansion -- 50 * } 51 * </pre> 52 * @see PSSParameterSpec 53 * @see javax.crypto.spec.OAEPParameterSpec 54 * 55 * @author Valerie Peng 56 * 57 * @since 1.5 58 */ 59 public class MGF1ParameterSpec implements AlgorithmParameterSpec { 60 61 /** 62 * The MGF1ParameterSpec which uses "SHA-1" message digest. 63 */ 64 public static final MGF1ParameterSpec SHA1 = 65 new MGF1ParameterSpec("SHA-1"); 66 /** 67 * The MGF1ParameterSpec which uses "SHA-224" message digest. 68 */ 69 public static final MGF1ParameterSpec SHA224 = 70 new MGF1ParameterSpec("SHA-224"); 71 /** 72 * The MGF1ParameterSpec which uses "SHA-256" message digest. 73 */ 74 public static final MGF1ParameterSpec SHA256 = 75 new MGF1ParameterSpec("SHA-256"); 76 /** 77 * The MGF1ParameterSpec which uses "SHA-384" message digest. 78 */ 79 public static final MGF1ParameterSpec SHA384 = 80 new MGF1ParameterSpec("SHA-384"); 81 /** 82 * The MGF1ParameterSpec which uses SHA-512 message digest. 83 */ 84 public static final MGF1ParameterSpec SHA512 = 85 new MGF1ParameterSpec("SHA-512"); 86 87 private String mdName; 88 89 /** 90 * Constructs a parameter set for mask generation function MGF1 91 * as defined in the PKCS #1 standard. 92 * 93 * @param mdName the algorithm name for the message digest 94 * used in this mask generation function MGF1. 95 * @exception NullPointerException if {@code mdName} is null. 96 */ MGF1ParameterSpec(String mdName)97 public MGF1ParameterSpec(String mdName) { 98 if (mdName == null) { 99 throw new NullPointerException("digest algorithm is null"); 100 } 101 this.mdName = mdName; 102 } 103 104 /** 105 * Returns the algorithm name of the message digest used by the mask 106 * generation function. 107 * 108 * @return the algorithm name of the message digest. 109 */ getDigestAlgorithm()110 public String getDigestAlgorithm() { 111 return mdName; 112 } 113 } 114