Android 2.3 Gingerbread

javax.crypto
Class EncryptedPrivateKeyInfo

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

public class EncryptedPrivateKeyInfo
extends Object

This class implements the EncryptedPrivateKeyInfo ASN.1 type as specified in PKCS #8 - Private-Key Information Syntax Standard.

The definition of ASN.1 is as follows:

EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm AlgorithmIdentifier,
encryptedData OCTET STRING }
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }


Constructor Summary
EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData)
          Creates an EncryptedPrivateKeyInfo instance from the encryption algorithm parameters an its encrypted data.
EncryptedPrivateKeyInfo(byte[] encoded)
          Creates an EncryptedPrivateKeyInfo instance from its encoded representation by parsing it.
EncryptedPrivateKeyInfo(String encrAlgName, byte[] encryptedData)
          Creates an EncryptedPrivateKeyInfo instance from an algorithm name and its encrypted data.
 
Method Summary
 String getAlgName()
          Returns the name of the encryption algorithm.
 AlgorithmParameters getAlgParameters()
          Returns the parameters used by the encryption algorithm.
 byte[] getEncoded()
          Returns the ASN.1 encoded representation of this object.
 byte[] getEncryptedData()
          Returns the encrypted data of this key.
 PKCS8EncodedKeySpec getKeySpec(Cipher cipher)
          Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey)
          Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey, Provider provider)
          Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.
 PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName)
          Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EncryptedPrivateKeyInfo

public EncryptedPrivateKeyInfo(byte[] encoded)
                        throws IOException
Creates an EncryptedPrivateKeyInfo instance from its encoded representation by parsing it.

Parameters:
encoded - the encoded representation of this object
Throws:
IOException - if parsing the encoded representation fails.
NullPointerException - if encoded is null.

EncryptedPrivateKeyInfo

public EncryptedPrivateKeyInfo(String encrAlgName,
                               byte[] encryptedData)
                        throws NoSuchAlgorithmException
Creates an EncryptedPrivateKeyInfo instance from an algorithm name and its encrypted data.

Parameters:
encrAlgName - the name of an algorithm.
encryptedData - the encrypted data.
Throws:
NoSuchAlgorithmException - if the encrAlgName is not a supported algorithm.
NullPointerException - if encrAlgName or encryptedData is null.
IllegalArgumentException - if encryptedData is empty.

EncryptedPrivateKeyInfo

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

Parameters:
algParams - the encryption algorithm parameters.
encryptedData - the encrypted data.
Throws:
NoSuchAlgorithmException - if the algorithm name of the specified algParams parameter is not supported.
NullPointerException - if algParams or encryptedData is null.
Method Detail

getAlgName

public String getAlgName()
Returns the name of the encryption algorithm.

Returns:
the name of the encryption algorithm.

getAlgParameters

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

Returns:
the parameters used by the encryption algorithm.

getEncryptedData

public byte[] getEncryptedData()
Returns the encrypted data of this key.

Returns:
the encrypted data of this key, each time this method is called a new array is returned.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Cipher cipher)
                               throws InvalidKeySpecException
Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.

The cipher must be initialize in either Cipher.DECRYPT_MODE or Cipher.UNWRAP_MODE with the same parameters and key used for encrypting this.

Parameters:
cipher - the cipher initialized for decrypting the encrypted data.
Returns:
the extracted PKCS8EncodedKeySpec.
Throws:
InvalidKeySpecException - if the specified cipher is not suited to decrypt the encrypted data.
NullPointerException - if cipher is null.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey)
                               throws NoSuchAlgorithmException,
                                      InvalidKeyException
Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.

Parameters:
decryptKey - the key to decrypt the encrypted data with.
Returns:
the extracted PKCS8EncodedKeySpec.
Throws:
NoSuchAlgorithmException - if no usable cipher can be found to decrypt the encrypted data.
InvalidKeyException - if decryptKey is not usable to decrypt the encrypted data.
NullPointerException - if decryptKey is null.

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey,
                                      String providerName)
                               throws NoSuchProviderException,
                                      NoSuchAlgorithmException,
                                      InvalidKeyException
Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.

Parameters:
decryptKey - the key to decrypt the encrypted data with.
providerName - the name of a provider whose cipher implementation should be used.
Returns:
the extracted PKCS8EncodedKeySpec.
Throws:
NoSuchProviderException - if no provider with providerName can be found.
NoSuchAlgorithmException - if no usable cipher can be found to decrypt the encrypted data.
InvalidKeyException - if decryptKey is not usable to decrypt the encrypted data.
NullPointerException - if decryptKey or providerName is null .

getKeySpec

public PKCS8EncodedKeySpec getKeySpec(Key decryptKey,
                                      Provider provider)
                               throws NoSuchAlgorithmException,
                                      InvalidKeyException
Returns the PKCS8EncodedKeySpec object extracted from the encrypted data.

Parameters:
decryptKey - the key to decrypt the encrypted data with.
provider - the provider whose cipher implementation should be used.
Returns:
the extracted PKCS8EncodedKeySpec.
Throws:
NoSuchAlgorithmException - if no usable cipher can be found to decrypt the encrypted data.
InvalidKeyException - if decryptKey is not usable to decrypt the encrypted data.
NullPointerException - if decryptKey or provider is null.

getEncoded

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

Returns:
the ASN.1 encoded representation of this object.
Throws:
IOException - if encoding this object fails.

Android 2.3 Gingerbread