org.bouncycastle.cms

Class CMSEnvelopedGenerator

public class CMSEnvelopedGenerator extends Object

General class for generating a CMS enveloped-data message. A simple example of usage.
      CMSEnvelopedDataGenerator  fact = new CMSEnvelopedDataGenerator();

      fact.addKeyTransRecipient(cert);

      CMSEnvelopedData         data = fact.generate(content, algorithm, "BC");
 
Nested Class Summary
protected classCMSEnvelopedGenerator.RecipientInf
Field Summary
static StringAES128_CBC
static StringAES128_WRAP
static StringAES192_CBC
static StringAES192_WRAP
static StringAES256_CBC
static StringAES256_WRAP
static StringCAMELLIA128_CBC
static StringCAMELLIA128_WRAP
static StringCAMELLIA192_CBC
static StringCAMELLIA192_WRAP
static StringCAMELLIA256_CBC
static StringCAMELLIA256_WRAP
static StringCAST5_CBC
static StringDES_EDE3_CBC
static StringDES_EDE3_WRAP
static StringECDH_SHA1KDF
static StringIDEA_CBC
static StringRC2_CBC
static StringSEED_CBC
static StringSEED_WRAP
Constructor Summary
CMSEnvelopedGenerator()
base constructor
Method Summary
voidaddKeyAgreementRecipient(String agreementAlgorithm, PrivateKey senderPrivateKey, PublicKey senderPublicKey, X509Certificate recipientCert, String cekWrapAlgorithm, String provider)
Add a key agreement based recipient.
voidaddKeyTransRecipient(X509Certificate cert)
add a recipient.
voidaddKeyTransRecipient(PublicKey key, byte[] subKeyId)
add a recipient
voidaddKEKRecipient(SecretKey key, byte[] keyIdentifier)
add a KEK recipient.
voidaddPasswordRecipient(CMSPBEKey pbeKey, String kekAlgorithmOid)
protected AlgorithmParametersgenerateParameters(String encryptionOID, SecretKey encKey, String encProvider)
protected AlgorithmIdentifiergetAlgorithmIdentifier(String encryptionOID, AlgorithmParameters params)

Field Detail

AES128_CBC

public static final String AES128_CBC

AES128_WRAP

public static final String AES128_WRAP

AES192_CBC

public static final String AES192_CBC

AES192_WRAP

public static final String AES192_WRAP

AES256_CBC

public static final String AES256_CBC

AES256_WRAP

public static final String AES256_WRAP

CAMELLIA128_CBC

public static final String CAMELLIA128_CBC

CAMELLIA128_WRAP

public static final String CAMELLIA128_WRAP

CAMELLIA192_CBC

public static final String CAMELLIA192_CBC

CAMELLIA192_WRAP

public static final String CAMELLIA192_WRAP

CAMELLIA256_CBC

public static final String CAMELLIA256_CBC

CAMELLIA256_WRAP

public static final String CAMELLIA256_WRAP

CAST5_CBC

public static final String CAST5_CBC

DES_EDE3_CBC

public static final String DES_EDE3_CBC

DES_EDE3_WRAP

public static final String DES_EDE3_WRAP

ECDH_SHA1KDF

public static final String ECDH_SHA1KDF

IDEA_CBC

public static final String IDEA_CBC

RC2_CBC

public static final String RC2_CBC

SEED_CBC

public static final String SEED_CBC

SEED_WRAP

public static final String SEED_WRAP

Constructor Detail

CMSEnvelopedGenerator

public CMSEnvelopedGenerator()
base constructor

Method Detail

addKeyAgreementRecipient

public void addKeyAgreementRecipient(String agreementAlgorithm, PrivateKey senderPrivateKey, PublicKey senderPublicKey, X509Certificate recipientCert, String cekWrapAlgorithm, String provider)
Add a key agreement based recipient.

Parameters: agreementAlgorithm key agreement algorithm to use. senderPrivateKey private key to initialise sender side of agreement with. senderPublicKey sender public key to include with message. recipientCert recipient's public key certificate. cekWrapAlgorithm OID for key wrapping algorithm to use. provider provider to use for the agreement calculation.

Throws: NoSuchProviderException if the specified provider cannot be found NoSuchAlgorithmException if the algorithm requested cannot be found InvalidKeyException if the keys are inappropriate for the algorithm specified

addKeyTransRecipient

public void addKeyTransRecipient(X509Certificate cert)
add a recipient.

Parameters: cert recipient's public key certificate

Throws: IllegalArgumentException if there is a problem with the certificate

addKeyTransRecipient

public void addKeyTransRecipient(PublicKey key, byte[] subKeyId)
add a recipient

Parameters: key the public key used by the recipient subKeyId the identifier for the recipient's public key

Throws: IllegalArgumentException if there is a problem with the key

addKEKRecipient

public void addKEKRecipient(SecretKey key, byte[] keyIdentifier)
add a KEK recipient.

Parameters: key the secret key to use for wrapping keyIdentifier the byte string that identifies the key

addPasswordRecipient

public void addPasswordRecipient(CMSPBEKey pbeKey, String kekAlgorithmOid)

generateParameters

protected AlgorithmParameters generateParameters(String encryptionOID, SecretKey encKey, String encProvider)

getAlgorithmIdentifier

protected AlgorithmIdentifier getAlgorithmIdentifier(String encryptionOID, AlgorithmParameters params)