| /* |
| * 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 java.security.spec; |
| |
| /** |
| * The parameter specification for the RSA-PSS Signature scheme. |
| * <p> |
| * Defined in the <a |
| * href="http://www.rsa.com/rsalabs/pubs/PKCS/html/pkcs-1.html">PKCS #1 v2.1</a> |
| * standard. |
| */ |
| public class PSSParameterSpec implements AlgorithmParameterSpec { |
| |
| /** |
| * The default parameter specification. It specifies the following parameters: |
| * <ul> |
| * <li>message digest: {@code "SHA-1"}</li> |
| * <li>mask generation function (<i>mgf</i>): {@code "MGF1"}</li> |
| * <li>parameters for the <i>mgf</i>: {@link MGF1ParameterSpec#SHA1}</li> |
| * <li>salt length: {@code 20}</li> |
| * <li>trailer field: {@code -1}</li> |
| * </ul> |
| */ |
| public static final PSSParameterSpec DEFAULT = new PSSParameterSpec(20); |
| |
| // Message digest algorithm name |
| private final String mdName; |
| // Mask generation function algorithm name |
| private final String mgfName; |
| // Mask generation function parameters |
| private final AlgorithmParameterSpec mgfSpec; |
| // Trailer field value |
| private final int trailerField; |
| // Salt length in bits |
| private final int saltLen; |
| |
| /** |
| * Creates a new {@code PSSParameterSpec} with the specified salt length |
| * and the default values. |
| * |
| * @param saltLen |
| * the salt length (in bits). |
| * @throws IllegalArgumentException |
| * if {@code saltLen} is negative. |
| */ |
| public PSSParameterSpec(int saltLen) { |
| if (saltLen < 0) { |
| throw new IllegalArgumentException("saltLen < 0"); |
| } |
| this.saltLen = saltLen; |
| this.mdName = "SHA-1"; |
| this.mgfName = "MGF1"; |
| this.mgfSpec = MGF1ParameterSpec.SHA1; |
| this.trailerField = 1; |
| } |
| |
| /** |
| * Creates a new {@code PSSParameterSpec} with the specified message digest |
| * name, mask generation function name, mask generation function parameters, |
| * salt length, and trailer field value. |
| * |
| * @param mdName |
| * the name of the message digest algorithm. |
| * @param mgfName |
| * the name of the mask generation function algorithm. |
| * @param mgfSpec |
| * the parameter for the mask generation function algorithm. |
| * @param saltLen |
| * the salt length (in bits). |
| * @param trailerField |
| * the trailer field value. |
| * @throws IllegalArgumentException |
| * if {@code saltLen} or {@code trailerField} is negative. |
| */ |
| public PSSParameterSpec(String mdName, String mgfName, |
| AlgorithmParameterSpec mgfSpec, int saltLen, int trailerField) { |
| |
| if (mdName == null) { |
| throw new NullPointerException("mdName == null"); |
| } |
| if (mgfName == null) { |
| throw new NullPointerException("mgfName == null"); |
| } |
| if (saltLen < 0) { |
| throw new IllegalArgumentException("saltLen < 0"); |
| } |
| if (trailerField < 0) { |
| throw new IllegalArgumentException("trailerField < 0"); |
| } |
| this.mdName = mdName; |
| this.mgfName = mgfName; |
| this.mgfSpec = mgfSpec; |
| this.saltLen = saltLen; |
| this.trailerField = trailerField; |
| } |
| |
| /** |
| * Returns the length of the salt (in bits). |
| * |
| * @return the length of the salt (in bits). |
| */ |
| public int getSaltLength() { |
| return saltLen; |
| } |
| |
| /** |
| * Returns the name of the message digest algorithm. |
| * |
| * @return the name of the message digest algorithm. |
| */ |
| public String getDigestAlgorithm() { |
| return mdName; |
| } |
| |
| /** |
| * Returns the name of the mask generation function algorithm. |
| * |
| * @return the name of the mask generation function algorithm. |
| */ |
| public String getMGFAlgorithm() { |
| return mgfName; |
| } |
| |
| /** |
| * Returns the parameter for the mask generation function algorithm. |
| * |
| * @return the parameter for the mask generation function algorithm, or |
| * {@code null} if none specified. |
| */ |
| public AlgorithmParameterSpec getMGFParameters() { |
| return mgfSpec; |
| } |
| |
| /** |
| * Returns the trailer field value. |
| * |
| * @return the trailer field value. |
| */ |
| public int getTrailerField() { |
| return trailerField; |
| } |
| } |