org.bouncycastle.jce.provider
Class OldPKCS12ParametersGenerator

java.lang.Object
  extended by org.bouncycastle.crypto.PBEParametersGenerator
      extended by org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator

 class OldPKCS12ParametersGenerator
extends PBEParametersGenerator

Generator for PBE derived keys and ivs as defined by PKCS 12 V1.0, with a bug affecting 180 bit plus keys - this class is only here to allow smooth migration of the version 0 keystore to version 1. Don't use it (it won't be staying around).

The document this implementation is based on can be found at RSA's PKCS12 Page


Field Summary
private  Digest digest
           
static int IV_MATERIAL
           
static int KEY_MATERIAL
           
static int MAC_MATERIAL
           
private  int u
           
private  int v
           
 
Fields inherited from class org.bouncycastle.crypto.PBEParametersGenerator
iterationCount, password, salt
 
Constructor Summary
OldPKCS12ParametersGenerator(Digest digest)
          Construct a PKCS 12 Parameters generator.
 
Method Summary
private  void adjust(byte[] a, int aOff, byte[] b)
          add a + b + 1, returning the result in a.
private  byte[] generateDerivedKey(int idByte, int n)
          generation of a derived key ala PKCS12 V1.0.
 CipherParameters generateDerivedMacParameters(int keySize)
          Generate a key parameter for use with a MAC derived from the password, salt, and iteration count we are currently initialised with.
 CipherParameters generateDerivedParameters(int keySize)
          Generate a key parameter derived from the password, salt, and iteration count we are currently initialised with.
 CipherParameters generateDerivedParameters(int keySize, int ivSize)
          Generate a key with initialisation vector parameter derived from the password, salt, and iteration count we are currently initialised with.
 
Methods inherited from class org.bouncycastle.crypto.PBEParametersGenerator
getIterationCount, getPassword, getSalt, init, PKCS12PasswordToBytes, PKCS5PasswordToBytes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

KEY_MATERIAL

public static final int KEY_MATERIAL
See Also:
Constant Field Values

IV_MATERIAL

public static final int IV_MATERIAL
See Also:
Constant Field Values

MAC_MATERIAL

public static final int MAC_MATERIAL
See Also:
Constant Field Values

digest

private Digest digest

u

private int u

v

private int v
Constructor Detail

OldPKCS12ParametersGenerator

public OldPKCS12ParametersGenerator(Digest digest)
Construct a PKCS 12 Parameters generator. This constructor will accept MD5, SHA1, and RIPEMD160.

Parameters:
digest - the digest to be used as the source of derived keys.
Throws:
java.lang.IllegalArgumentException - if an unknown digest is passed in.
Method Detail

adjust

private void adjust(byte[] a,
                    int aOff,
                    byte[] b)
add a + b + 1, returning the result in a. The a value is treated as a BigInteger of length (b.length * 8) bits. The result is modulo 2^b.length in case of overflow.


generateDerivedKey

private byte[] generateDerivedKey(int idByte,
                                  int n)
generation of a derived key ala PKCS12 V1.0.


generateDerivedParameters

public CipherParameters generateDerivedParameters(int keySize)
Generate a key parameter derived from the password, salt, and iteration count we are currently initialised with.

Specified by:
generateDerivedParameters in class PBEParametersGenerator
Parameters:
keySize - the size of the key we want (in bits)
Returns:
a KeyParameter object.

generateDerivedParameters

public CipherParameters generateDerivedParameters(int keySize,
                                                  int ivSize)
Generate a key with initialisation vector parameter derived from the password, salt, and iteration count we are currently initialised with.

Specified by:
generateDerivedParameters in class PBEParametersGenerator
Parameters:
keySize - the size of the key we want (in bits)
ivSize - the size of the iv we want (in bits)
Returns:
a ParametersWithIV object.

generateDerivedMacParameters

public CipherParameters generateDerivedMacParameters(int keySize)
Generate a key parameter for use with a MAC derived from the password, salt, and iteration count we are currently initialised with.

Specified by:
generateDerivedMacParameters in class PBEParametersGenerator
Parameters:
keySize - the size of the key we want (in bits)
Returns:
a KeyParameter object.