Class LegacyP12Generator

java.lang.Object
org.cryptacular.generator.AbstractP12Generator
org.cryptacular.generator.LegacyP12Generator
All Implemented Interfaces:
P12Generator

public class LegacyP12Generator extends AbstractP12Generator
Generates PKCS12 containers using DES3+SHA1 for private keys and 40-bit RC2+SHA1 for encrypted data. These algorithms are considered unsecure by today's standards (2024), but are needed for interoperability in some cases. Importing a keypair into the Mac keychain is a notable use case.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final org.bouncycastle.pkcs.bc.BcPKCS12PBEOutputEncryptorBuilder
    Data encryptor builder.
    private final int
    Number of hashing rounds.
    private final org.bouncycastle.pkcs.bc.BcPKCS12PBEOutputEncryptorBuilder
    Key encryptor builder.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new instance that encrypts with 1024 rounds of hashing.
    LegacyP12Generator(int iterations)
    Creates a new instance that encrypts with the given number of hashing rounds.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected org.bouncycastle.operator.OutputEncryptor
    dataOutputEncryptor(char[] password)
    Builds a new output encryptor that performs password-based encryption on encrypted data in the P12 file.
    protected org.bouncycastle.asn1.ASN1ObjectIdentifier
     
    protected DigestSpec
     
    int
     
    protected org.bouncycastle.operator.OutputEncryptor
    keyOutputEncryptor(char[] password)
    Builds a new output encryptor that performs password-based encryption on keys in the P12 file.

    Methods inherited from class org.cryptacular.generator.AbstractP12Generator

    generate, generate

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • iterations

      private final int iterations
      Number of hashing rounds.
    • keyEncryptorBuilder

      private final org.bouncycastle.pkcs.bc.BcPKCS12PBEOutputEncryptorBuilder keyEncryptorBuilder
      Key encryptor builder.
    • dataEncryptorBuilder

      private final org.bouncycastle.pkcs.bc.BcPKCS12PBEOutputEncryptorBuilder dataEncryptorBuilder
      Data encryptor builder.
  • Constructor Details

    • LegacyP12Generator

      public LegacyP12Generator()
      Creates a new instance that encrypts with 1024 rounds of hashing.
    • LegacyP12Generator

      public LegacyP12Generator(int iterations)
      Creates a new instance that encrypts with the given number of hashing rounds.
      Parameters:
      iterations - Number of hashing rounds.
  • Method Details

    • getIterations

      public int getIterations()
      Specified by:
      getIterations in class AbstractP12Generator
      Returns:
      Number of hashing rounds.
    • getDigestAlgorithmId

      protected org.bouncycastle.asn1.ASN1ObjectIdentifier getDigestAlgorithmId()
      Specified by:
      getDigestAlgorithmId in class AbstractP12Generator
      Returns:
      Digest algorithm object identifier.
    • getDigestSpec

      protected DigestSpec getDigestSpec()
      Specified by:
      getDigestSpec in class AbstractP12Generator
      Returns:
      Digest specification.
    • keyOutputEncryptor

      protected org.bouncycastle.operator.OutputEncryptor keyOutputEncryptor(char[] password)
      Description copied from class: AbstractP12Generator
      Builds a new output encryptor that performs password-based encryption on keys in the P12 file.
      Specified by:
      keyOutputEncryptor in class AbstractP12Generator
      Parameters:
      password - Password tha will the basis of an encryption key.
      Returns:
      Output encryptor.
    • dataOutputEncryptor

      protected org.bouncycastle.operator.OutputEncryptor dataOutputEncryptor(char[] password)
      Description copied from class: AbstractP12Generator
      Builds a new output encryptor that performs password-based encryption on encrypted data in the P12 file.
      Specified by:
      dataOutputEncryptor in class AbstractP12Generator
      Parameters:
      password - Password tha will the basis of an encryption key.
      Returns:
      Output encryptor.