public class RSAPrivateKey extends RSAKey implements PrivateKey, java.security.interfaces.RSAPrivateCrtKey
RSA private keys are output in PKCS #8 PrivateKeyInfo format, and this is also the preferred format for input. However, for backwards compatibility reasons, the PKCS #1 RSAPrivateKey format is recognized for input as well.
Constructor and Description |
---|
RSAPrivateKey()
Creates a new, uninitialized RSA private key.
|
RSAPrivateKey(java.math.BigInteger mod, java.math.BigInteger exp)
Construct a new
RSAPrivateKey object with the given parameters. |
RSAPrivateKey(java.math.BigInteger mod, java.math.BigInteger exp, java.math.BigInteger e, java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger e1, java.math.BigInteger e2, java.math.BigInteger c)
Construct a new
RSAPrivateKey object with the given parameters. |
RSAPrivateKey(byte[] encoded)
Makes a new RSA private key from a specified encoding.
|
RSAPrivateKey(java.io.File f)
Construct a new
RSAPrivateKey object from a file. |
RSAPrivateKey(java.io.InputStream is)
Initializes this RSA private key by reading its encoding from the given stream.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Creates a deep copy of this
RSAPrivateKey instance. |
void |
erase()
Erases the key material making the key un-usable.
|
void |
finalize()
Erases this object prior to being reclaimed by the garbage collector.
|
AlgorithmIdentifier |
getAlgID()
Returns the algorithm identifier for this key.
|
boolean |
getAllowExport()
Returns
false if plaintext export of this key's key material is not allowed; returns true if plaintext export is allowed. |
ASN1Object |
getContents()
Returns this
RSAPrivateKey 's contents in PKCS #1 privateKey format (as opposed to PKCS #8 privateKeyInfo format). |
java.math.BigInteger |
getCrtCoefficient()
Returns the CRT coefficient.
|
byte[] |
getEncoded()
Returns ASN.1 DER bytes containing the PKCS#8 PrivateKeyInfo encoding of this private key.
|
java.lang.String |
getFormat()
Returns a string which indicates the format of this object's encoding.
|
java.math.BigInteger |
getPrimeExponentP()
Returns the prime exponent p.
|
java.math.BigInteger |
getPrimeExponentQ()
Returns the prime exponent q.
|
java.math.BigInteger |
getPrimeP()
Returns the prime p.
|
java.math.BigInteger |
getPrimeQ()
Returns the prime q.
|
java.math.BigInteger |
getPrivateExponent() |
java.math.BigInteger |
getPublicExponent()
Returns the public exponent.
|
RSAPublicKey |
getPublicKey()
Get the public key from this private key.
|
void |
initialize(AlgorithmIdentifier algID, ASN1Object contents)
Initializes this instance from the given algorithm paramters and key contents.
|
void |
input(java.io.InputStream is)
Reads an RSA private key from the specified input stream.
|
boolean |
isPublic()
Indicates whether this is a public key.
|
int |
length()
Length of this object's encoding.
|
void |
output(java.io.OutputStream os)
Writes the DER encoding of this key in PKCS #8 privateKeyInfo format (as opposed to PKCS #1 privateKey format) to the given output stream.
|
void |
setAllowExport(boolean value)
Set to
false to disallow plaintext export of this key's key material; set to true to allow plaintext export if the global value in FIPS_140_2 is also set to true . |
java.lang.String |
toString()
Returns a description of this RSAPrivateKey.
|
assertAllowExport, getAlgorithm, getBitLength, getExponent, getModulus, modulusLength, readExternal, setBytes, setModulusExponent, writeExternal
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAlgorithm, getBitLength
public RSAPrivateKey()
public RSAPrivateKey(java.math.BigInteger mod, java.math.BigInteger exp)
RSAPrivateKey
object with the given parameters.
Note: A RSAPrivateKey
constructed using only the modulus and private exponent cannot be used to derive the corresponding public key, nor can it be output to a DER-encoded ASN.1 representation.
mod
- The modulus.exp
- The private exponent.public RSAPrivateKey(java.math.BigInteger mod, java.math.BigInteger exp, java.math.BigInteger e, java.math.BigInteger p, java.math.BigInteger q, java.math.BigInteger e1, java.math.BigInteger e2, java.math.BigInteger c)
RSAPrivateKey
object with the given parameters.mod
- The modulus.exp
- The private exponent.e
- The public exponent.p
- A big prime p.q
- A big prime q.e1
- Prime exponent p.e2
- Prime exponent q.c
- The CRT coefficient.public RSAPrivateKey(java.io.File f) throws java.io.FileNotFoundException, java.io.IOException
RSAPrivateKey
object from a file.f
- The file that stores the RSAPrivateKey.java.io.FileNotFoundException
- If the file does not exist.java.io.IOException
- If an input exception occured.public RSAPrivateKey(byte[] encoded) throws java.io.IOException
encoded
- A BER encoding of an RSA private key.java.io.IOException
public RSAPrivateKey(java.io.InputStream is) throws java.io.IOException
java.io.IOException
public byte[] getEncoded()
getEncoded
in interface java.security.Key
public boolean getAllowExport()
false
if plaintext export of this key's key material is not allowed; returns true
if plaintext export is allowed.
If either this value or the global value is false
, the output(java.io.OutputStream)
, getContents()
and getEncoded()
methods will throw a KeyExportException
.
false
if plaintext key material export is not allowed, true
if allowed.FIPS_140_2.getAllowKeyExport()
, Cipher.wrapKey(PrivateKey key)
public void setAllowExport(boolean value)
false
to disallow plaintext export of this key's key material; set to true
to allow plaintext export if the global value in FIPS_140_2
is also set to true
.
If either this value or the global value is false
, the output(java.io.OutputStream)
, getContents()
and getEncoded()
methods will throw a KeyExportException
.
value
- false
to disallow plaintext key material export, true
to allow.FIPS_140_2.setAllowKeyExport(boolean)
, Cipher.wrapKey(PrivateKey key)
public void erase()
Keys can be erased multiple times with no consequence.
public void finalize()
Note: There is no guarantee of when, if ever, finalize
will be invoked by the Java runtime.
finalize
in class java.lang.Object
public java.lang.String getFormat()
getFormat
in interface java.security.Key
public java.lang.Object clone()
RSAPrivateKey
instance.public void initialize(AlgorithmIdentifier algID, ASN1Object contents) throws AlgorithmIdentifierException, InvalidInputException
PrivateKey
public ASN1Object getContents()
RSAPrivateKey
's contents in PKCS #1 privateKey format (as opposed to PKCS #8 privateKeyInfo format).
To output the key in this format in DER encoding, use code like the following:
RSAPrivateKey key = ... ; OutputStream os = ... ; key.getContents().output(os);
for PKCS #8 privateKeyInfo format.
public AlgorithmIdentifier getAlgID()
PrivateKey
public boolean isPublic()
public RSAPublicKey getPublicKey()
public java.math.BigInteger getPublicExponent()
getPublicExponent
in interface java.security.interfaces.RSAPrivateCrtKey
public java.math.BigInteger getPrivateExponent()
getPrivateExponent
in interface java.security.interfaces.RSAPrivateKey
public java.math.BigInteger getPrimeP()
getPrimeP
in interface java.security.interfaces.RSAPrivateCrtKey
public java.math.BigInteger getPrimeQ()
getPrimeQ
in interface java.security.interfaces.RSAPrivateCrtKey
public java.math.BigInteger getPrimeExponentP()
getPrimeExponentP
in interface java.security.interfaces.RSAPrivateCrtKey
public java.math.BigInteger getPrimeExponentQ()
getPrimeExponentQ
in interface java.security.interfaces.RSAPrivateCrtKey
public java.math.BigInteger getCrtCoefficient()
getCrtCoefficient
in interface java.security.interfaces.RSAPrivateCrtKey
public void input(java.io.InputStream is) throws java.io.IOException
input
in interface Streamable
java.io.IOException
public void output(java.io.OutputStream os) throws java.io.IOException
output
in interface Streamable
java.io.IOException
for PKCS #1 privateKey format.
public int length()
Streamable
length
in interface Streamable
public java.lang.String toString()
toString
in class java.lang.Object