org.bouncycastle.mail.smime

## Class SMIMEEnvelopedGenerator

- java.lang.Object
- - org.bouncycastle.mail.smime.SMIMEGenerator
  - - org.bouncycastle.mail.smime.SMIMEEnvelopedGenerator

    public class SMIMEEnvelopedGenerator
    extends SMIMEGenerator

General class for generating a pkcs7-mime message. A simple example of usage.

          SMIMEEnvelopedGenerator  fact = new SMIMEEnvelopedGenerator();

          fact.addKeyTransRecipient(cert);

          MimeBodyPart           smime = fact.generate(content, algorithm, "BC");

Note: Most clients expect the MimeBodyPart to be in a MimeMultipart when it's sent.

### Field Summary

Fields
`static java.lang.String` `AES128_CBC`
`static java.lang.String` `AES128_WRAP`
`static java.lang.String` `AES192_CBC`
`static java.lang.String` `AES256_CBC`
`static java.lang.String` `AES256_WRAP`
`static java.lang.String` `CAMELLIA128_CBC`
`static java.lang.String` `CAMELLIA128_WRAP`
`static java.lang.String` `CAMELLIA192_CBC`
`static java.lang.String` `CAMELLIA192_WRAP`
`static java.lang.String` `CAMELLIA256_CBC`
`static java.lang.String` `CAMELLIA256_WRAP`
`static java.lang.String` `CAST5_CBC`
`static java.lang.String` `DES_EDE3_CBC`
`static java.lang.String` `DES_EDE3_WRAP`
`static java.lang.String` `ECDH_SHA1KDF`
`static java.lang.String` `IDEA_CBC`
`static java.lang.String` `RC2_CBC`
`static java.lang.String` `SEED_CBC`
`static java.lang.String` `SEED_WRAP`

### Fields inherited from class org.bouncycastle.mail.smime.SMIMEGenerator

`encoding, useBase64`

### Constructor Summary

Constructors
Constructor and Description
`SMIMEEnvelopedGenerator()` base constructor

### Method Summary

Methods
`void` `addKEKRecipient(javax.crypto.SecretKey key, byte[] keyIdentifier)` add a KEK recipient.
`void` `addKeyAgreementRecipient(java.lang.String agreementAlgorithm, java.security.PrivateKey senderPrivateKey, java.security.PublicKey senderPublicKey, java.security.cert.X509Certificate recipientCert, java.lang.String cekWrapAlgorithm, java.security.Provider provider)` Add a key agreement based recipient.
`void` `addKeyAgreementRecipient(java.lang.String agreementAlgorithm, java.security.PrivateKey senderPrivateKey, java.security.PublicKey senderPublicKey, java.security.cert.X509Certificate recipientCert, java.lang.String cekWrapAlgorithm, java.lang.String provider)` Add a key agreement based recipient.
`void` `addKeyTransRecipient(java.security.PublicKey key, byte[] subKeyId)` add a recipient - note: this will only work on V3 and later clients.
`void` `addKeyTransRecipient(java.security.cert.X509Certificate cert)` add a recipient.
`MimeBodyPart` `generate(MimeBodyPart content, java.lang.String encryptionOID, int keySize, java.security.Provider provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider.
`MimeBodyPart` `generate(MimeBodyPart content, java.lang.String encryptionOID, int keySize, java.lang.String provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider.
`MimeBodyPart` `generate(MimeBodyPart content, java.lang.String encryptionOID, java.security.Provider provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider.
`MimeBodyPart` `generate(MimeBodyPart content, java.lang.String encryptionOID, java.lang.String provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider.
`MimeBodyPart` `generate(MimeMessage message, java.lang.String encryptionOID, int keySize, java.security.Provider provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message.
`MimeBodyPart` `generate(MimeMessage message, java.lang.String encryptionOID, int keySize, java.lang.String provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message.
`MimeBodyPart` `generate(MimeMessage message, java.lang.String encryptionOID, java.security.Provider provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message
`MimeBodyPart` `generate(MimeMessage message, java.lang.String encryptionOID, java.lang.String provider)` generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message
`void` `setBerEncodeRecipients(boolean berEncodeRecipientSet)` Use a BER Set to store the recipient information

### Methods inherited from class org.bouncycastle.mail.smime.SMIMEGenerator

`createSymmetricKeyGenerator, makeContentBodyPart, makeContentBodyPart, setContentTransferEncoding`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DES_EDE3_CBC

    public static final java.lang.String DES_EDE3_CBC

#### RC2_CBC

    public static final java.lang.String RC2_CBC

#### IDEA_CBC

    public static final java.lang.String IDEA_CBC

See Also:
  Constant Field Values

#### CAST5_CBC

    public static final java.lang.String CAST5_CBC

See Also:
  Constant Field Values

#### AES128_CBC

    public static final java.lang.String AES128_CBC

#### AES192_CBC

    public static final java.lang.String AES192_CBC

#### AES256_CBC

    public static final java.lang.String AES256_CBC

#### CAMELLIA128_CBC

    public static final java.lang.String CAMELLIA128_CBC

#### CAMELLIA192_CBC

    public static final java.lang.String CAMELLIA192_CBC

#### CAMELLIA256_CBC

    public static final java.lang.String CAMELLIA256_CBC

#### SEED_CBC

    public static final java.lang.String SEED_CBC

#### DES_EDE3_WRAP

    public static final java.lang.String DES_EDE3_WRAP

#### AES128_WRAP

    public static final java.lang.String AES128_WRAP

#### AES256_WRAP

    public static final java.lang.String AES256_WRAP

#### CAMELLIA128_WRAP

    public static final java.lang.String CAMELLIA128_WRAP

#### CAMELLIA192_WRAP

    public static final java.lang.String CAMELLIA192_WRAP

#### CAMELLIA256_WRAP

    public static final java.lang.String CAMELLIA256_WRAP

#### SEED_WRAP

    public static final java.lang.String SEED_WRAP

#### ECDH_SHA1KDF

    public static final java.lang.String ECDH_SHA1KDF

### Constructor Detail

#### SMIMEEnvelopedGenerator

    public SMIMEEnvelopedGenerator()

base constructor

### Method Detail

#### addKeyTransRecipient

    public void addKeyTransRecipient(java.security.cert.X509Certificate cert)
                              throws java.lang.IllegalArgumentException

add a recipient.

Throws:
  `java.lang.IllegalArgumentException`

#### addKeyTransRecipient

    public void addKeyTransRecipient(java.security.PublicKey key,
                            byte[] subKeyId)
                              throws java.lang.IllegalArgumentException

add a recipient - note: this will only work on V3 and later clients.

Parameters:
  `key` - the recipient's public key
  `subKeyId` - the subject key id for the recipient's public key
Throws:
  `java.lang.IllegalArgumentException`

#### addKEKRecipient

    public void addKEKRecipient(javax.crypto.SecretKey key,
                       byte[] keyIdentifier)
                         throws java.lang.IllegalArgumentException

add a KEK recipient.

Throws:
  `java.lang.IllegalArgumentException`

#### addKeyAgreementRecipient

    public void addKeyAgreementRecipient(java.lang.String agreementAlgorithm,
                                java.security.PrivateKey senderPrivateKey,
                                java.security.PublicKey senderPublicKey,
                                java.security.cert.X509Certificate recipientCert,
                                java.lang.String cekWrapAlgorithm,
                                java.lang.String provider)
                                  throws java.security.NoSuchProviderException,
                                         java.security.NoSuchAlgorithmException,
                                         java.security.InvalidKeyException

Add a key agreement based recipient.

Parameters:
  `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:
  `java.security.NoSuchProviderException`
  `java.security.NoSuchAlgorithmException`
  `java.security.InvalidKeyException`

#### addKeyAgreementRecipient

    public void addKeyAgreementRecipient(java.lang.String agreementAlgorithm,
                                java.security.PrivateKey senderPrivateKey,
                                java.security.PublicKey senderPublicKey,
                                java.security.cert.X509Certificate recipientCert,
                                java.lang.String cekWrapAlgorithm,
                                java.security.Provider provider)
                                  throws java.security.NoSuchProviderException,
                                         java.security.NoSuchAlgorithmException,
                                         java.security.InvalidKeyException

Add a key agreement based recipient.

Parameters:
  `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:
  `java.security.NoSuchProviderException`
  `java.security.NoSuchAlgorithmException`
  `java.security.InvalidKeyException`

#### setBerEncodeRecipients

    public void setBerEncodeRecipients(boolean berEncodeRecipientSet)

Use a BER Set to store the recipient information

#### generate

    public MimeBodyPart generate(MimeBodyPart content,
                        java.lang.String encryptionOID,
                        java.lang.String provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider.

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeBodyPart content,
                        java.lang.String encryptionOID,
                        java.security.Provider provider)
                          throws java.security.NoSuchAlgorithmException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider.

Throws:
  `java.security.NoSuchAlgorithmException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeMessage message,
                        java.lang.String encryptionOID,
                        java.lang.String provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeMessage message,
                        java.lang.String encryptionOID,
                        java.security.Provider provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeBodyPart content,
                        java.lang.String encryptionOID,
                        int keySize,
                        java.lang.String provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider. The size of the encryption key is determined by keysize.

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeBodyPart content,
                        java.lang.String encryptionOID,
                        int keySize,
                        java.security.Provider provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider. The size of the encryption key is determined by keysize.

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeMessage message,
                        java.lang.String encryptionOID,
                        int keySize,
                        java.lang.String provider)
                          throws java.security.NoSuchAlgorithmException,
                                 java.security.NoSuchProviderException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message. The size of the encryption key used to protect the message is determined by keysize.

Throws:
  `java.security.NoSuchAlgorithmException`
  `java.security.NoSuchProviderException`
  `SMIMEException`

#### generate

    public MimeBodyPart generate(MimeMessage message,
                        java.lang.String encryptionOID,
                        int keySize,
                        java.security.Provider provider)
                          throws java.security.NoSuchAlgorithmException,
                                 SMIMEException

generate an enveloped object that contains an SMIME Enveloped object using the given provider from the contents of the passed in message. The size of the encryption key used to protect the message is determined by keysize.

Throws:
  `java.security.NoSuchAlgorithmException`
  `SMIMEException`