1 /* 2 * Copyright (c) 2001, 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.math.BigInteger; 29 30 /** 31 * This class represents the triplet (prime, exponent, and coefficient) 32 * inside RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1. 33 * The ASN.1 syntax of RSA's OtherPrimeInfo is as follows: 34 * 35 * <pre> 36 * OtherPrimeInfo ::= SEQUENCE { 37 * prime INTEGER, 38 * exponent INTEGER, 39 * coefficient INTEGER 40 * } 41 * 42 * </pre> 43 * 44 * @author Valerie Peng 45 * 46 * 47 * @see RSAPrivateCrtKeySpec 48 * @see java.security.interfaces.RSAMultiPrimePrivateCrtKey 49 * 50 * @since 1.4 51 */ 52 53 public class RSAOtherPrimeInfo { 54 55 private BigInteger prime; 56 private BigInteger primeExponent; 57 private BigInteger crtCoefficient; 58 59 60 /** 61 * Creates a new {@code RSAOtherPrimeInfo} 62 * given the prime, primeExponent, and 63 * crtCoefficient as defined in PKCS#1. 64 * 65 * @param prime the prime factor of n. 66 * @param primeExponent the exponent. 67 * @param crtCoefficient the Chinese Remainder Theorem 68 * coefficient. 69 * @exception NullPointerException if any of the parameters, i.e. 70 * {@code prime}, {@code primeExponent}, 71 * {@code crtCoefficient}, is null. 72 * 73 */ 74 public RSAOtherPrimeInfo(BigInteger prime, 75 BigInteger primeExponent, 76 BigInteger crtCoefficient) { 77 if (prime == null) { 78 throw new NullPointerException("the prime parameter must be " + 79 "non-null"); 80 } 81 if (primeExponent == null) { 82 throw new NullPointerException("the primeExponent parameter " + 83 "must be non-null"); 84 } 85 if (crtCoefficient == null) { 86 throw new NullPointerException("the crtCoefficient parameter " + 87 "must be non-null"); 88 } 89 this.prime = prime; 90 this.primeExponent = primeExponent; 91 this.crtCoefficient = crtCoefficient; 92 } 93 94 /** 95 * Returns the prime. 96 * 97 * @return the prime. 98 */ 99 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 } 121