001 /*
002 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package java.security.spec;
027
028 import java.math.BigInteger;
029
030 /**
031 * This class represents the triplet (prime, exponent, and coefficient)
032 * inside RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1.
033 * The ASN.1 syntax of RSA's OtherPrimeInfo is as follows:
034 *
035 * <pre>
036 * OtherPrimeInfo ::= SEQUENCE {
037 * prime INTEGER,
038 * exponent INTEGER,
039 * coefficient INTEGER
040 * }
041 *
042 * </pre>
043 *
044 * @author Valerie Peng
045 *
046 * @version 1.13 07/05/05
047 *
048 * @see RSAPrivateCrtKeySpec
049 * @see java.security.interfaces.RSAMultiPrimePrivateCrtKey
050 *
051 * @since 1.4
052 */
053
054 public class RSAOtherPrimeInfo {
055
056 private BigInteger prime;
057 private BigInteger primeExponent;
058 private BigInteger crtCoefficient;
059
060 /**
061 * Creates a new <code>RSAOtherPrimeInfo</code>
062 * given the prime, primeExponent, and
063 * crtCoefficient as defined in PKCS#1.
064 *
065 * @param prime the prime factor of n.
066 * @param primeExponent the exponent.
067 * @param crtCoefficient the Chinese Remainder Theorem
068 * coefficient.
069 * @exception NullPointerException if any of the parameters, i.e.
070 * <code>prime</code>, <code>primeExponent</code>,
071 * <code>crtCoefficient</code>, is null.
072 *
073 */
074 public RSAOtherPrimeInfo(BigInteger prime,
075 BigInteger primeExponent, BigInteger crtCoefficient) {
076 if (prime == null) {
077 throw new NullPointerException(
078 "the prime parameter must be " + "non-null");
079 }
080 if (primeExponent == null) {
081 throw new NullPointerException(
082 "the primeExponent parameter " + "must be non-null");
083 }
084 if (crtCoefficient == null) {
085 throw new NullPointerException(
086 "the crtCoefficient parameter "
087 + "must be non-null");
088 }
089 this .prime = prime;
090 this .primeExponent = primeExponent;
091 this .crtCoefficient = crtCoefficient;
092 }
093
094 /**
095 * Returns the prime.
096 *
097 * @return the prime.
098 */
099 public final BigInteger getPrime() {
100 return this .prime;
101 }
102
103 /**
104 * Returns the prime's exponent.
105 *
106 * @return the primeExponent.
107 */
108 public final BigInteger getExponent() {
109 return this .primeExponent;
110 }
111
112 /**
113 * Returns the prime's crtCoefficient.
114 *
115 * @return the crtCoefficient.
116 */
117 public final BigInteger getCrtCoefficient() {
118 return this.crtCoefficient;
119 }
120 }
|