package org.bouncycastle.jcajce.provider.symmetric.util;

import java.security.spec.KeySpec;

import javax.crypto.interfaces.PBEKey;
import javax.crypto.spec.PBEKeySpec;

import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.PBEParametersGenerator;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.ParametersWithIV;

public class BCPBEKey
    implements PBEKey
{
    String              algorithm;
    ASN1ObjectIdentifier oid;
    int                 type;
    int                 digest;
    int                 keySize;
    int                 ivSize;
    CipherParameters    param;
    PBEKeySpec          pbeKeySpec;
    boolean             tryWrong = false;

    
Params:
  • param –
/** * @param param */
public BCPBEKey( String algorithm, ASN1ObjectIdentifier oid, int type, int digest, int keySize, int ivSize, PBEKeySpec pbeKeySpec, CipherParameters param) { this.algorithm = algorithm; this.oid = oid; this.type = type; this.digest = digest; this.keySize = keySize; this.ivSize = ivSize; this.pbeKeySpec = pbeKeySpec; this.param = param; } public BCPBEKey(String algName, KeySpec pbeSpec, CipherParameters param) { this.algorithm = algName; this.param = param; } public String getAlgorithm() { return algorithm; } public String getFormat() { return "RAW"; } public byte[] getEncoded() { if (param != null) { KeyParameter kParam; if (param instanceof ParametersWithIV) { kParam = (KeyParameter)((ParametersWithIV)param).getParameters(); } else { kParam = (KeyParameter)param; } return kParam.getKey(); } else { if (type == PBE.PKCS12) { return PBEParametersGenerator.PKCS12PasswordToBytes(pbeKeySpec.getPassword()); } else if (type == PBE.PKCS5S2_UTF8) { return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(pbeKeySpec.getPassword()); } else { return PBEParametersGenerator.PKCS5PasswordToBytes(pbeKeySpec.getPassword()); } } } int getType() { return type; } int getDigest() { return digest; } int getKeySize() { return keySize; } public int getIvSize() { return ivSize; } public CipherParameters getParam() { return param; } /* (non-Javadoc) * @see javax.crypto.interfaces.PBEKey#getPassword() */ public char[] getPassword() { return pbeKeySpec.getPassword(); } /* (non-Javadoc) * @see javax.crypto.interfaces.PBEKey#getSalt() */ public byte[] getSalt() { return pbeKeySpec.getSalt(); } /* (non-Javadoc) * @see javax.crypto.interfaces.PBEKey#getIterationCount() */ public int getIterationCount() { return pbeKeySpec.getIterationCount(); } public ASN1ObjectIdentifier getOID() { return oid; } public void setTryWrongPKCS12Zero(boolean tryWrong) { this.tryWrong = tryWrong; } boolean shouldTryWrongPKCS12() { return tryWrong; } }