javax.crypto
Class EncryptedPrivateKeyInfo

java.lang.Object
  extended by javax.crypto.EncryptedPrivateKeyInfo

public class EncryptedPrivateKeyInfo
extends Object

This class implements the EncryptedPrivateKeyInfo type as defined in PKCS #8.

Its ASN.1 definition is as follows:

 EncryptedPrivateKeyInfo ::=  SEQUENCE {
     encryptionAlgorithm  AlgorithmIdentifier,
     encryptedData        OCTET STRING }

 AlgorithmIdentifier  ::=  SEQUENCE {
     algorithm   OBJECT IDENTIFIER,
     parameters  ANY DEFINED BY algorithm OPTIONAL }
 

TODO: This class is not fully implemented, yet!

Version:
$Id: EncryptedPrivateKeyInfo.java 1913 2007-08-08 02:41:53Z jpeters $
Author:
Jan Peters

Field Summary
private  byte[] encodedData_
          The ASN.1 encoded data.
private  byte[] encryptedData_
          The encrypted data.
 
Constructor Summary
EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData)
          Constructs an EncryptedPrivateKeyInfo from the encryption algorithm parameters and the encrypted data.
EncryptedPrivateKeyInfo(byte[] encoded)
          Constructs (i.e., parses) an EncryptedPrivateKeyInfo from its ASN.1 encoding.
EncryptedPrivateKeyInfo(String algName, byte[] encryptedData)
          Constructs an EncryptedPrivateKeyInfo from the encryption algorithm name and the encrypted data.
 
Method Summary
 String getAlgName()
          Returns the encryption algorithm.
 AlgorithmParameters getAlgParameters()
          Returns the algorithm parameters used by the encryption algorithm.
 byte[] getEncoded()
          Returns the ASN.1 encoding of this object.
 byte[] getEncryptedData()
          Returns a copy of the encrypted data.
 PKCS8EncodedKeySpec getKeySpec(Cipher cipher)
          Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey)
          Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey, Provider provider)
          Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName)
          Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

encryptedData_

private byte[] encryptedData_
The encrypted data.


encodedData_

private byte[] encodedData_
The ASN.1 encoded data.

Constructor Detail

EncryptedPrivateKeyInfo

public EncryptedPrivateKeyInfo(byte[] encoded)
                        throws IOException
Constructs (i.e., parses) an EncryptedPrivateKeyInfo from its ASN.1 encoding.

Parameters:
encoded - the ASN.1 encoding of this object.
Throws:
IOException - if error occurs when parsing the ASN.1 encoding.
NullPointerException - if the encoded is null.

EncryptedPrivateKeyInfo

public EncryptedPrivateKeyInfo(String algName,
                               byte[] encryptedData)
                        throws NoSuchAlgorithmException
Constructs an EncryptedPrivateKeyInfo from the encryption algorithm name and the encrypted data.

Note: the encrypedData is cloned when constructing this object. If encryption algorithm has associated parameters use the constructor with AlgorithmParameters as the parameter.

Parameters:
algName - algorithm name.
encryptedData - encrypted data.
Throws:
NullPointerException - if algName or encryptedData is null.
IllegalArgumentException - if encryptedData is empty, i.e. 0-length.
NoSuchAlgorithmException - if the specified algName is not supported.

EncryptedPrivateKeyInfo

public EncryptedPrivateKeyInfo(AlgorithmParameters algParams,
                               byte[] encryptedData)
                        throws NoSuchAlgorithmException
Constructs an EncryptedPrivateKeyInfo from the encryption algorithm parameters and the encrypted data.

Note: the encrypedData is cloned when constructing this object.

Parameters:
algParams - the algorithm parameters for the encryption algorithm. algParams.getEncoded() should return the ASN.1 encoded bytes of the parameters field of the AlgorithmIdentifer component of the EncryptedPrivateKeyInfo type.
encryptedData - encrypted data.
Throws:
NullPointerException - if algParams or encryptedData is null.
IllegalArgumentException - if encryptedData is empty, i.e. 0-length.
NoSuchAlgorithmException - if the specified algName of the specified algParams parameter is not supported.
Method Detail

getAlgName

public String getAlgName()
Returns the encryption algorithm.

Returns:
the algorithm name.

getAlgParameters

public AlgorithmParameters getAlgParameters()
Returns the algorithm parameters used by the encryption algorithm.

Returns:
the algorithm parameters.

getEncryptedData

public byte[] getEncryptedData()
Returns a copy of the encrypted data.

Returns:
a copy of the encrypted data.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Cipher cipher)
                               throws InvalidKeySpecException
Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.

Parameters:
cipher - the cipher.
Returns:
the PKCS8EncodedKeySpec object.
Throws:
NullPointerException - if cipher is null.
InvalidKeySpecException - if the given cipher is inappropriate for the encrypted data or the encrypted data is corrupted and cannot be decrypted.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey)
                               throws NoSuchAlgorithmException,
                                      InvalidKeyException
Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.

Parameters:
decryptKey - key used for decrypting the encrypted data.
Returns:
the PKCS8EncodedKeySpec object.
Throws:
NullPointerException - if decryptKey is null.
NoSuchAlgorithmException - if cannot find appropriate cipher to decrypt the encrypted data.
InvalidKeyException - if decryptKey cannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8KeySpec.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey,
                                      String providerName)
                               throws NoSuchProviderException,
                                      NoSuchAlgorithmException,
                                      InvalidKeyException
Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.

Parameters:
decryptKey - key used for decrypting the encrypted data.
providerName - the name of provider whose Cipher implementation will be used.
Returns:
the PKCS8EncodedKeySpec object.
Throws:
NullPointerException - if decryptKey or providerName is null.
NoSuchProviderException - if no provider providerName is registered.
NoSuchAlgorithmException - if cannot find appropriate cipher to decrypt the encrypted data.
InvalidKeyException - if decryptKey cannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8KeySpec.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey,
                                      Provider provider)
                               throws NoSuchAlgorithmException,
                                      InvalidKeyException
Extract the enclosed PKCS8EncodedKeySpec object from the encrypted data and return it.

Parameters:
decryptKey - key used for decrypting the encrypted data.
provider - the name of provider whose Cipher implementation will be used.
Returns:
the PKCS8EncodedKeySpec object.
Throws:
NullPointerException - if decryptKey or provider is null.
NoSuchAlgorithmException - if cannot find appropriate cipher to decrypt the encrypted data in provider.
InvalidKeyException - if decryptKey cannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8KeySpec.

getEncoded

public byte[] getEncoded()
                  throws IOException
Returns the ASN.1 encoding of this object.

Returns:
the ASN.1 encoding.Returns a new array each time this method is called.
Throws:
IOException - if error occurs when constructing its ASN.1 encoding.


Copyright © Fraunhofer Gesellschaft. All Rights Reserved.