Class EncryptedPrivateKeyInfo

  • All Implemented Interfaces:
    ASN1Value

    public class EncryptedPrivateKeyInfo
    extends java.lang.Object
    implements ASN1Value
    PKCS #8 EncryptedPrivateKeyInfo.
     EncryptedPrivateKeyInfo ::= SEQUENCE {
          encryptionAlgorithm     AlgorithmIdentifier,
          encryptedData           OCTET STRING }
     
    • Constructor Detail

      • EncryptedPrivateKeyInfo

        public EncryptedPrivateKeyInfo​(AlgorithmIdentifier encryptionAlgorithm,
                                       OCTET_STRING encryptedData)
        Creates an EncryptedPrivateKeyInfo from its components.
    • Method Detail

      • createPBE

        public static EncryptedPrivateKeyInfo createPBE​(PBEAlgorithm keyGenAlg,
                                                        Password password,
                                                        byte[] salt,
                                                        int iterationCount,
                                                        KeyGenerator.CharToByteConverter charToByteConverter,
                                                        PrivateKeyInfo pki)
                                                 throws NotInitializedException,
                                                        java.security.NoSuchAlgorithmException,
                                                        java.security.InvalidKeyException,
                                                        java.security.InvalidAlgorithmParameterException,
                                                        TokenException,
                                                        java.io.CharConversionException
        Creates a new EncryptedPrivateKeyInfo, where the data is encrypted with a password-based key.
        Parameters:
        keyGenAlg - The algorithm for generating a symmetric key from a password, salt, and iteration count.
        password - The password to use in generating the key.
        salt - The salt to use in generating the key.
        iterationCount - The number of hashing iterations to perform while generating the key.
        charToByteConverter - The mechanism for converting the characters in the password into bytes. If null, the default mechanism will be used, which is UTF8.
        pki - The PrivateKeyInfo to be encrypted and stored in the EncryptedContentInfo. Before they are encrypted, they will be padded using PKCS padding.
        Throws:
        NotInitializedException
        java.security.NoSuchAlgorithmException
        java.security.InvalidKeyException
        java.security.InvalidAlgorithmParameterException
        TokenException
        java.io.CharConversionException
      • createPBES2

        public static EncryptedPrivateKeyInfo createPBES2​(int saltLen,
                                                          int kdfIterations,
                                                          EncryptionAlgorithm encAlg,
                                                          Password pwd,
                                                          KeyGenerator.CharToByteConverter charToByteConverter,
                                                          PrivateKeyInfo privateKeyInfo)
                                                   throws NotInitializedException,
                                                          java.security.NoSuchAlgorithmException,
                                                          java.security.InvalidKeyException,
                                                          java.security.InvalidAlgorithmParameterException,
                                                          TokenException,
                                                          java.io.CharConversionException
        Export a private key in PBES2 format, using a random PBKDF2 salt. Token must support the CKM_PKCS5_PBKD2 mechanism.
        Parameters:
        saltLen - Length of salt in bytes (default: 16)
        kdfIterations - PBKDF2 iterations (default: 2000)
        encAlg - The symmetric encryption algorithm for enciphering the private key. Determines the size of derived key.
        pwd - Password
        charToByteConverter - The mechanism for converting the characters in the password into bytes. If null, the default mechanism will be used, which is UTF8.
        privateKeyInfo - The encoded PrivateKeyInfo to be encrypted and stored in the EncryptedContentInfo.
        Throws:
        NotInitializedException
        java.security.NoSuchAlgorithmException
        java.security.InvalidKeyException
        java.security.InvalidAlgorithmParameterException
        TokenException
        java.io.CharConversionException
      • createPBE

        public static EncryptedPrivateKeyInfo createPBE​(PBEAlgorithm keyGenAlg,
                                                        Password password,
                                                        byte[] salt,
                                                        int iterationCount,
                                                        KeyGenerator.CharToByteConverter charToByteConverter,
                                                        PrivateKey pri,
                                                        CryptoToken token)
                                                 throws NotInitializedException,
                                                        java.security.NoSuchAlgorithmException,
                                                        java.security.InvalidKeyException,
                                                        java.security.InvalidAlgorithmParameterException,
                                                        TokenException,
                                                        java.io.CharConversionException
        Creates a new EncryptedPrivateKeyInfo, where the data is encrypted with a password-based key- with wrapping/unwrapping happening on token.
        Parameters:
        keyGenAlg - The algorithm for generating a symmetric key from a password, salt, and iteration count.
        password - The password to use in generating the key.
        salt - The salt to use in generating the key.
        iterationCount - The number of hashing iterations to perform while generating the key.
        charToByteConverter - The mechanism for converting the characters in the password into bytes. If null, the default mechanism will be used, which is UTF8.
        pri - The PrivateKey to be encrypted and stored in the EncryptedContentInfo.
        Throws:
        NotInitializedException
        java.security.NoSuchAlgorithmException
        java.security.InvalidKeyException
        java.security.InvalidAlgorithmParameterException
        TokenException
        java.io.CharConversionException
      • getTag

        public Tag getTag()
        Description copied from interface: ASN1Value
        Returns the base tag for this type, not counting any tags that may be imposed on it by its context.
        Specified by:
        getTag in interface ASN1Value
        Returns:
        Base tag.
      • encode

        public void encode​(java.io.OutputStream ostream)
                    throws java.io.IOException
        Description copied from interface: ASN1Value
        Write this value's DER encoding to an output stream using its own base tag.
        Specified by:
        encode in interface ASN1Value
        Parameters:
        ostream - Output stream.
        Throws:
        java.io.IOException - If an error occurred.
      • encode

        public void encode​(Tag implicitTag,
                           java.io.OutputStream ostream)
                    throws java.io.IOException
        Description copied from interface: ASN1Value
        Write this value's DER encoding to an output stream using an implicit tag.
        Specified by:
        encode in interface ASN1Value
        Parameters:
        implicitTag - Implicit tag.
        ostream - Output stream.
        Throws:
        java.io.IOException - If an error occurred.