Makefile.in: Rebuilt.
* Makefile.in: Rebuilt. * Makefile.am (ordinary_java_source_files): Added new files. * java/security/AlgorithmParameterGenerator.java, java/security/AlgorithmParameters.java, java/security/Engine.java, java/security/Identity.java, java/security/IdentityScope.java, java/security/KeyFactory.java, java/security/KeyPairGenerator.java, java/security/KeyStore.java, java/security/MessageDigest.java, java/security/Policy.java, java/security/ProtectionDomain.java, java/security/SecureRandom.java, java/security/Security.java, java/security/Signature.java, java/security/SignatureSpi.java, java/security/SignedObject.java, java/security/Signer.java, java/security/interfaces/RSAMultiPrimePrivateCrtKey.java, java/security/spec/PSSParameterSpec.java, java/security/spec/RSAMultiPrimePrivateCrtKeySpec.java, java/security/spec/RSAOtherPrimeInfo.java: New versions from Classpath. From-SVN: r65829
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
/* PSSParameterSpec.java --
|
||||
Copyright (C) 2003, Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
package java.security.spec;
|
||||
|
||||
/**
|
||||
* This class specifies a parameter spec for RSA PSS encoding scheme, as
|
||||
* defined in the PKCS#1 v2.1.
|
||||
*
|
||||
* @since 1.4
|
||||
* @see AlgorithmParameterSpec
|
||||
* @see java.security.Signature
|
||||
*/
|
||||
public class PSSParameterSpec implements AlgorithmParameterSpec
|
||||
{
|
||||
// Constants and fields
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
private int saltLen;
|
||||
|
||||
// Constructor(s)
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Creates a new <code>PSSParameterSpec</code> given the salt length as
|
||||
* defined in PKCS#1.
|
||||
*
|
||||
* @param saltLen the length of salt in bits to be used in PKCS#1 PSS encoding.
|
||||
* @throws IllegalArgumentException if <code>saltLen</code> is less than
|
||||
* <code>0</code>.
|
||||
*/
|
||||
public PSSParameterSpec(int saltLen)
|
||||
{
|
||||
super();
|
||||
|
||||
if (saltLen < 0)
|
||||
throw new IllegalArgumentException();
|
||||
this.saltLen = saltLen;
|
||||
}
|
||||
|
||||
// Class methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Instance methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns the salt length in bits.
|
||||
*
|
||||
* @return the salt length.
|
||||
*/
|
||||
public int getSaltLength()
|
||||
{
|
||||
return this.saltLen;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
/* PSSParameterSpec.java --
|
||||
Copyright (C) 2003, Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
package java.security.spec;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.security.spec.RSAOtherPrimeInfo;
|
||||
|
||||
/**
|
||||
* This class specifies an RSA multi-prime private key, as defined in the
|
||||
* PKCS#1 v2.1, using the <i>Chinese Remainder Theorem</i> (CRT) information
|
||||
* values for efficiency.
|
||||
*
|
||||
* @since 1.4
|
||||
* @see java.security.Key
|
||||
* @see java.security.KeyFactory
|
||||
* @see KeySpec
|
||||
* @see PKCS8EncodedKeySpec
|
||||
* @see RSAPrivateKeySpec
|
||||
* @see RSAPublicKeySpec
|
||||
* @see RSAOtherPrimeInfo
|
||||
*/
|
||||
public class RSAMultiPrimePrivateCrtKeySpec extends RSAPrivateKeySpec
|
||||
{
|
||||
// Constants and fields
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
private BigInteger publicExponent;
|
||||
private BigInteger primeP;
|
||||
private BigInteger primeQ;
|
||||
private BigInteger primeExponentP;
|
||||
private BigInteger primeExponentQ;
|
||||
private BigInteger crtCoefficient;
|
||||
private RSAOtherPrimeInfo[] otherPrimeInfo;
|
||||
|
||||
// Constructor(s)
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* <p>Creates a new <code>RSAMultiPrimePrivateCrtKeySpec</code> given the
|
||||
* modulus, publicExponent, privateExponent, primeP, primeQ, primeExponentP,
|
||||
* primeExponentQ, crtCoefficient, and otherPrimeInfo as defined in PKCS#1
|
||||
* v2.1.</p>
|
||||
*
|
||||
* <p>Note that <code>otherPrimeInfo</code> is cloned when constructing this
|
||||
* object.</p>
|
||||
*
|
||||
* @param modulus the modulus n.
|
||||
* @param publicExponent the public exponent e.
|
||||
* @param privateExponent the private exponent d.
|
||||
* @param primeP the prime factor p of n.
|
||||
* @param primeQ the prime factor q of n.
|
||||
* @param primeExponentP this is d mod (p-1).
|
||||
* @param primeExponentQ this is d mod (q-1).
|
||||
* @param crtCoefficient the Chinese Remainder Theorem coefficient q-1 mod p.
|
||||
* @param otherPrimeInfo triplets of the rest of primes, <code>null</code>
|
||||
* can be specified if there are only two prime factors (p and q).
|
||||
* @throws NullPointerException if any of the parameters, i.e. modulus,
|
||||
* publicExponent, privateExponent, primeP, primeQ, primeExponentP,
|
||||
* primeExponentQ, crtCoefficient, is <code>null</code>.
|
||||
* @throws IllegalArgumentException if an empty, i.e. 0-length,
|
||||
* otherPrimeInfo is specified.
|
||||
*/
|
||||
public RSAMultiPrimePrivateCrtKeySpec(BigInteger modulus,
|
||||
BigInteger publicExponent,
|
||||
BigInteger privateExponent,
|
||||
BigInteger primeP,
|
||||
BigInteger primeQ,
|
||||
BigInteger primeExponentP,
|
||||
BigInteger primeExponentQ,
|
||||
BigInteger crtCoefficient,
|
||||
RSAOtherPrimeInfo[] otherPrimeInfo)
|
||||
{
|
||||
super(modulus, privateExponent);
|
||||
|
||||
if (modulus == null)
|
||||
throw new NullPointerException("modulus");
|
||||
if (publicExponent == null)
|
||||
throw new NullPointerException("publicExponent");
|
||||
if (privateExponent == null)
|
||||
throw new NullPointerException("privateExponent");
|
||||
if (primeP == null)
|
||||
throw new NullPointerException("primeP");
|
||||
if (primeQ == null)
|
||||
throw new NullPointerException("primeQ");
|
||||
if (primeExponentP == null)
|
||||
throw new NullPointerException("primeExponentP");
|
||||
if (primeExponentQ == null)
|
||||
throw new NullPointerException("primeExponentQ");
|
||||
if (crtCoefficient == null)
|
||||
throw new NullPointerException("crtCoefficient");
|
||||
if (otherPrimeInfo != null)
|
||||
if (otherPrimeInfo.length == 0)
|
||||
throw new IllegalArgumentException();
|
||||
else
|
||||
this.otherPrimeInfo = (RSAOtherPrimeInfo[]) otherPrimeInfo.clone();
|
||||
|
||||
this.publicExponent = publicExponent;
|
||||
this.primeP = primeP;
|
||||
this.primeQ = primeQ;
|
||||
this.primeExponentP = primeExponentP;
|
||||
this.primeExponentQ = primeExponentQ;
|
||||
this.crtCoefficient = crtCoefficient;
|
||||
}
|
||||
|
||||
// Class methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Instance methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns the public exponent.
|
||||
*
|
||||
* @return the public exponent.
|
||||
*/
|
||||
public BigInteger getPublicExponent()
|
||||
{
|
||||
return this.publicExponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the primeP.
|
||||
*
|
||||
* @return the primeP.
|
||||
*/
|
||||
public BigInteger getPrimeP()
|
||||
{
|
||||
return this.primeP;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the primeQ.
|
||||
*
|
||||
* @return the primeQ.
|
||||
*/
|
||||
public BigInteger getPrimeQ()
|
||||
{
|
||||
return this.primeQ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the primeExponentP.
|
||||
*
|
||||
* @return the primeExponentP.
|
||||
*/
|
||||
public BigInteger getPrimeExponentP()
|
||||
{
|
||||
return this.primeExponentP;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the primeExponentQ.
|
||||
*
|
||||
* @return the primeExponentQ.
|
||||
*/
|
||||
public BigInteger getPrimeExponentQ()
|
||||
{
|
||||
return this.primeExponentQ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the crtCoefficient.
|
||||
*
|
||||
* @return the crtCoefficient.
|
||||
*/
|
||||
public BigInteger getCrtCoefficient()
|
||||
{
|
||||
return this.crtCoefficient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copy of the otherPrimeInfo or <code>null</code> if there are
|
||||
* only two prime factors (p and q).
|
||||
*
|
||||
* @return the otherPrimeInfo.
|
||||
*/
|
||||
public RSAOtherPrimeInfo[] getOtherPrimeInfo()
|
||||
{
|
||||
return this.otherPrimeInfo == null
|
||||
? null
|
||||
: (RSAOtherPrimeInfo[]) this.otherPrimeInfo.clone();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
/* RSAOtherPrimeInfo.java --
|
||||
Copyright (C) 2003, Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
package java.security.spec;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
/**
|
||||
* This class represents the triplet (prime, exponent, and coefficient) inside
|
||||
* RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1. The ASN.1
|
||||
* syntax of RSA's OtherPrimeInfo is as follows:
|
||||
*
|
||||
* <pre>
|
||||
* OtherPrimeInfo ::= SEQUENCE {
|
||||
* prime INTEGER,
|
||||
* exponent INTEGER,
|
||||
* coefficient INTEGER
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @since 1.4
|
||||
* @see RSAPrivateCrtKeySpec
|
||||
* @see java.security.interfaces.RSAMultiPrimePrivateCrtKey
|
||||
*/
|
||||
public class RSAOtherPrimeInfo
|
||||
{
|
||||
// Constants and fields
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
private BigInteger prime;
|
||||
private BigInteger primeExponent;
|
||||
private BigInteger crtCoefficient;
|
||||
|
||||
// Constructor(s)
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Creates a new <code>RSAOtherPrimeInfo</code> given the prime,
|
||||
* primeExponent, and crtCoefficient as defined in PKCS#1.
|
||||
*
|
||||
* @param prime the prime factor of n.
|
||||
* @param primeExponent the exponent.
|
||||
* @param crtCoefficient the Chinese Remainder Theorem coefficient.
|
||||
* @throws NullPointerException if any of the parameters, i.e. prime,
|
||||
* primeExponent, crtCoefficient, is <code>null</code>.
|
||||
*/
|
||||
public RSAOtherPrimeInfo(BigInteger prime, BigInteger primeExponent,
|
||||
BigInteger crtCoefficient)
|
||||
{
|
||||
super();
|
||||
|
||||
if (prime == null)
|
||||
throw new NullPointerException("prime");
|
||||
if (primeExponent == null)
|
||||
throw new NullPointerException("primeExponent");
|
||||
if (crtCoefficient == null)
|
||||
throw new NullPointerException("crtCoefficient");
|
||||
|
||||
this.prime = prime;
|
||||
this.primeExponent = primeExponent;
|
||||
this.crtCoefficient = crtCoefficient;
|
||||
}
|
||||
|
||||
// Class methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// Instance methods
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns the prime.
|
||||
*
|
||||
* @return the prime.
|
||||
*/
|
||||
public final BigInteger getPrime()
|
||||
{
|
||||
return this.prime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the prime's exponent.
|
||||
*
|
||||
* @return the primeExponent.
|
||||
*/
|
||||
public final BigInteger getExponent()
|
||||
{
|
||||
return this.primeExponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the prime's crtCoefficient.
|
||||
*
|
||||
* @return the crtCoefficient.
|
||||
*/
|
||||
public final BigInteger getCrtCoefficient()
|
||||
{
|
||||
return this.crtCoefficient;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user