Class EncryptedPrivateKeyInfo
- All Implemented Interfaces:
BinaryEncodablePREVIEW
public non-sealed class EncryptedPrivateKeyInfo extends Object implements BinaryEncodablePREVIEW
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 }
- Since:
- 1.4
- See Also:
Constructor Summary
| Constructor | Description |
|---|---|
EncryptedPrivateKeyInfo |
Constructs an EncryptedPrivateKeyInfo from a given encrypted PKCS#8 ASN.1 encoding. |
EncryptedPrivateKeyInfo |
Constructs an EncryptedPrivateKeyInfo from the encryption algorithm name and the encrypted data. |
EncryptedPrivateKeyInfo |
Constructs an EncryptedPrivateKeyInfo from the encryption algorithm parameters and the encrypted data. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
static EncryptedPrivateKeyInfo |
encrypt |
Preview. Creates an EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. |
static EncryptedPrivateKeyInfo |
encrypt |
Preview. Creates an EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. |
static EncryptedPrivateKeyInfo |
encrypt |
Preview. Creates an EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. |
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 the encrypted data. |
PrivateKey |
getKey |
Preview. Extracts and returns the enclosed PrivateKey using the specified password. |
PrivateKey |
getKey |
Preview. Extracts and returns the enclosed PrivateKey using the specified decryption key. |
KeyPair |
getKeyPair |
Preview. Extracts and returns the enclosed KeyPair using the specified password. |
KeyPair |
getKeyPair |
Preview. Extracts and returns the enclosed KeyPair using the specified decryption key. |
PKCS8EncodedKeySpec |
getKeySpec |
Extracts the enclosed PKCS8EncodedKeySpec object from the encrypted data and returns it. |
PKCS8EncodedKeySpec |
getKeySpec |
Extracts the enclosed PKCS8EncodedKeySpec object from the encrypted data and returns it. |
PKCS8EncodedKeySpec |
getKeySpec |
Extracts the enclosed PKCS8EncodedKeySpec object from the encrypted data and returns it. |
PKCS8EncodedKeySpec |
getKeySpec |
Extracts the enclosed PKCS8EncodedKeySpec object from the encrypted data and returns it. |
Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Modifier and Type | Method | Description |
|---|---|---|
protected Object |
clone() |
Creates and returns a copy of this object. |
boolean |
equals |
Indicates whether some other object is "equal to" this one. |
protected void |
finalize() |
Deprecated, for removal: This API element is subject to removal in a future version. Finalization is deprecated and subject to removal in a future release. |
final Class |
getClass() |
Returns the runtime class of this Object. |
int |
hashCode() |
Returns a hash code value for this object. |
final void |
notify() |
Wakes up a single thread that is waiting on this object's monitor. |
final void |
notifyAll() |
Wakes up all threads that are waiting on this object's monitor. |
String |
toString() |
Returns a string representation of the object. |
final void |
wait() |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
final void |
wait |
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed. |
Constructor Details
EncryptedPrivateKeyInfo
public EncryptedPrivateKeyInfo(byte[] encoded) throws IOException
EncryptedPrivateKeyInfo from a given encrypted PKCS#8 ASN.1 encoding.- Parameters:
-
encoded- the ASN.1 encoding of this object. The contents of the array are copied to protect against subsequent modification. - Throws:
-
NullPointerException- ifencodedisnull. -
IOException- if error occurs when parsing the ASN.1 encoding.
EncryptedPrivateKeyInfo
public EncryptedPrivateKeyInfo(String algName, byte[] encryptedData) throws NoSuchAlgorithmException
EncryptedPrivateKeyInfo from the encryption algorithm name and the encrypted data. Note: This constructor will use null as the value of the algorithm parameters. If the encryption algorithm has parameters whose value is not null, a different constructor, e.g. EncryptedPrivateKeyInfo(AlgorithmParameters, byte[]), should be used.
- Parameters:
-
algName- encryption algorithm name. See the Java Security Standard Algorithm Names document for information about standard Cipher algorithm names. -
encryptedData- encrypted data. The contents ofencryptedDataare copied to protect against subsequent modification when constructing this object. - Throws:
-
NullPointerException- ifalgNameorencryptedDataisnull. -
IllegalArgumentException- ifencryptedDatais empty, i.e. 0-length. -
NoSuchAlgorithmException- if the specified algName is not supported. - External Specifications
EncryptedPrivateKeyInfo
public EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData) throws NoSuchAlgorithmException
EncryptedPrivateKeyInfo from the encryption algorithm parameters and the encrypted data.- Parameters:
-
algParams- the algorithm parameters for the encryption algorithm.algParams.getEncoded()should return the ASN.1 encoded bytes of theparametersfield of theAlgorithmIdentifiercomponent of theEncryptedPrivateKeyInfotype. -
encryptedData- encrypted data. The contents ofencryptedDataare copied to protect against subsequent modification when constructing this object. - Throws:
-
NullPointerException- ifalgParamsorencryptedDataisnull. -
IllegalArgumentException- ifencryptedDatais empty, i.e. 0-length. -
NoSuchAlgorithmException- if the specified algName of the specifiedalgParamsparameter is not supported.
Method Details
getAlgName
public String getAlgName()
Note: Standard name is returned instead of the specified one in the constructor when such mapping is available. See the Java Security Standard Algorithm Names document for information about standard Cipher algorithm names.
- Returns:
- the encryption algorithm name.
- External Specifications
getAlgParameters
public AlgorithmParameters getAlgParameters()
- Returns:
- the algorithm parameters.
getEncryptedData
public byte[] getEncryptedData()
- Returns:
- the encrypted data. Returns a new array each time this method is called.
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Cipher cipher) throws InvalidKeySpecException
Note: In order to successfully retrieve the enclosed PKCS8EncodedKeySpec object,
cipher needs to be initialized to either Cipher.DECRYPT_MODE or Cipher.UNWRAP_MODE, with the same key and parameters used for generating the encrypted data.- Parameters:
-
cipher- the initializedCipherobject which will be used for decrypting the encrypted data. - Returns:
- the PKCS8EncodedKeySpec object
- Throws:
-
NullPointerException- ifcipherisnull. -
InvalidKeySpecException- if the given cipher is inappropriate for the encrypted data or the encrypted data is corrupted and cannot be decrypted.
encrypt
public static EncryptedPrivateKeyInfo encrypt(BinaryEncodablePREVIEW be, char[] password, String algorithm, AlgorithmParameterSpec params, Provider provider)
encrypt is a preview API of the Java platform. encrypt when preview features are enabled.EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. A valid password-based encryption (PBE) algorithm and password must be specified. The format of the PBE algorithm string is described in the Cipher Algorithms section of the Java Security Standard Algorithm Names Specification.
- Parameters:
-
be- theBinaryEncodableto encrypt. Supported types includePrivateKey,KeyPair, andPKCS8EncodedKeySpec. -
password- the password used for PBE encryption. This array is cloned before use. -
algorithm- the PBE encryption algorithm -
params- theAlgorithmParameterSpecused for encryption. Ifnull, the providerâs default parameters are applied. -
provider- theProviderforSecretKeyFactoryandCipheroperations. Ifnull, the default provider list is used. - Returns:
- an
EncryptedPrivateKeyInfo - Throws:
-
NullPointerException- ifbe,password, oralgorithmisnull -
IllegalArgumentException- ifbeis an unsupportedBinaryEncodableor has no encoding -
CryptoExceptionPREVIEW- if an error occurs while generating the PBE key, ifalgorithmorparamsare not supported by any provider, or if an error occurs during encryption - Since:
- 27
encrypt
public static EncryptedPrivateKeyInfo encrypt(BinaryEncodablePREVIEW be, char[] password)
encrypt is a preview API of the Java platform. encrypt when preview features are enabled.EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. A valid password must be specified. A default password-based encryption (PBE) algorithm and provider are used.- Implementation Note:
- The
jdk.epkcs8.defaultAlgorithmsecurity property defines the default encryption algorithm. TheAlgorithmParameterSpecdefaults are determined by the provider. - Parameters:
-
be- theBinaryEncodableto encrypt. Supported types includePrivateKey,KeyPair, andPKCS8EncodedKeySpec. -
password- the password used for PBE encryption. This array is cloned before use. - Returns:
- an
EncryptedPrivateKeyInfo - Throws:
-
NullPointerException- ifbeorpasswordisnull -
IllegalArgumentException- ifbeis an unsupportedBinaryEncodableor has no encoding -
CryptoExceptionPREVIEW- if an error occurs while generating the PBE key, if the default algorithm is misconfigured, or if an error occurs during encryption - Since:
- 27
encrypt
public static EncryptedPrivateKeyInfo encrypt(BinaryEncodablePREVIEW be, Key encryptKey, String algorithm, AlgorithmParameterSpec params, Provider provider, SecureRandom random)
encrypt is a preview API of the Java platform. encrypt when preview features are enabled.EncryptedPrivateKeyInfo by encrypting the specified BinaryEncodable. A valid encryption algorithm and Key must be specified. The format of the algorithm string is described in the Cipher Algorithms section of the Java Security Standard Algorithm Names Specification.
- Parameters:
-
be- theBinaryEncodableto encrypt. Supported types includePrivateKey,KeyPair, andPKCS8EncodedKeySpec. -
encryptKey- the key used to encrypt the encoding -
algorithm- the encryption algorithm, such as a password-based encryption (PBE) algorithm -
params- theAlgorithmParameterSpecused for encryption. Ifnull, the providerâs default parameters are applied. -
provider- theProviderforCipheroperations. Ifnull, the default provider list is used. -
random- theSecureRandominstance used during encryption. Ifnull, the default is used. - Returns:
- an
EncryptedPrivateKeyInfo - Throws:
-
NullPointerException- ifbe,encryptKey, oralgorithmisnull -
IllegalArgumentException- ifbeis an unsupportedBinaryEncodableor has no encoding -
CryptoExceptionPREVIEW- ifencryptKeyis invalid, ifalgorithmorparamsare not supported by any provider, or if an error occurs during encryption - Since:
- 27
getKey
public PrivateKey getKey(char[] password) throws NoSuchAlgorithmException, InvalidKeyException
getKey is a preview API of the Java platform. getKey when preview features are enabled.PrivateKey using the specified password.- Parameters:
-
password- the password used for PBE decryption. The array is cloned before use. - Returns:
- the decrypted
PrivateKey - Throws:
-
NullPointerException- ifpasswordisnull -
NoSuchAlgorithmException- if the decryption algorithm is unsupported -
InvalidKeyException- if an error occurs during parsing, decryption, or key generation - Since:
- 25
getKey
public PrivateKey getKey(Key decryptKey) throws NoSuchAlgorithmException, InvalidKeyException
getKey is a preview API of the Java platform. getKey when preview features are enabled.PrivateKey using the specified decryption key.- Parameters:
-
decryptKey- the decryption key; must not benull - Returns:
- the decrypted
PrivateKey - Throws:
-
NullPointerException- ifdecryptKeyisnull -
NoSuchAlgorithmException- if the decryption algorithm is unsupported -
InvalidKeyException- if an error occurs during parsing, decryption, or key generation - Since:
- 27
getKeyPair
public KeyPair getKeyPair(char[] password) throws NoSuchAlgorithmException, InvalidKeyException
getKeyPair is a preview API of the Java platform. getKeyPair when preview features are enabled.KeyPair using the specified password. If the encoded data does not contain both a public and private key, an InvalidKeyException is thrown.- Parameters:
-
password- the password used for PBE decryption. The array is cloned before use. - Returns:
- a decrypted
KeyPair - Throws:
-
NullPointerException- ifpasswordisnull -
NoSuchAlgorithmException- if the decryption algorithm is unsupported -
InvalidKeyException- if the encoded data lacks a public key, or if an error occurs during parsing, decryption, or key generation - Since:
- 26
getKeyPair
public KeyPair getKeyPair(Key decryptKey) throws NoSuchAlgorithmException, InvalidKeyException
getKeyPair is a preview API of the Java platform. getKeyPair when preview features are enabled.KeyPair using the specified decryption key. If the encoded data does not contain both a public and private key, an InvalidKeyException is thrown.- Parameters:
-
decryptKey- the decryption key; must not benull - Returns:
- a decrypted
KeyPair - Throws:
-
NullPointerException- ifdecryptKeyisnull -
NoSuchAlgorithmException- if the decryption algorithm is unsupported -
InvalidKeyException- if the encoded data lacks a public key, or if an error occurs during parsing, decryption, or key generation - Since:
- 27
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey) throws NoSuchAlgorithmException, InvalidKeyException
- Parameters:
-
decryptKey- key used for decrypting the encrypted data. - Returns:
- the PKCS8EncodedKeySpec object with a specified algorithm
- Throws:
-
NullPointerException- ifdecryptKeyisnull. -
NoSuchAlgorithmException- if cannot find appropriate cipher to decrypt the encrypted data. -
InvalidKeyException- ifdecryptKeycannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8EncodedKeySpec. - Since:
- 1.5
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException
- Parameters:
-
decryptKey- key used for decrypting the encrypted data. -
providerName- the name of provider whose cipher implementation will be used. - Returns:
- the PKCS8EncodedKeySpec object with a specified algorithm
- Throws:
-
NullPointerException- ifdecryptKeyorproviderNameisnull. -
NoSuchProviderException- if no providerproviderNameis registered. -
NoSuchAlgorithmException- if cannot find appropriate cipher to decrypt the encrypted data. -
InvalidKeyException- ifdecryptKeycannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8EncodedKeySpec. - Since:
- 1.5
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, Provider provider) throws NoSuchAlgorithmException, InvalidKeyException
- Parameters:
-
decryptKey- key used for decrypting the encrypted data. -
provider- the provider whose cipher implementation will be used. - Returns:
- the PKCS8EncodedKeySpec object with a specified algorithm
- Throws:
-
NullPointerException- ifdecryptKeyorproviderisnull. -
NoSuchAlgorithmException- if cannot find appropriate cipher to decrypt the encrypted data inprovider. -
InvalidKeyException- ifdecryptKeycannot be used to decrypt the encrypted data or the decryption result is not a valid PKCS8EncodedKeySpec. - Since:
- 1.5
getEncoded
public byte[] getEncoded() throws IOException
- 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.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.