Class CMSEnvelopedDataStreamGenerator
java.lang.Object
org.bouncycastle.cms.CMSEnvelopedGenerator
org.bouncycastle.cms.CMSEnvelopedDataStreamGenerator
General class for generating a CMS enveloped-data message stream.
A simple example of usage.
CMSEnvelopedDataStreamGenerator edGen = new CMSEnvelopedDataStreamGenerator();
edGen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(recipientCert).setProvider("BC"));
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
OutputStream out = edGen.open(
bOut, new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC)
.setProvider("BC").build());
out.write(data);
out.close();
Stream handling note:
- The returned OutputStream must be closed to finalize the CMS structure.
- Closing the returned stream does not close the underlying OutputStream
passed to
open(). - Callers are responsible for closing the underlying OutputStream separately.
If the underlying OutputStream is a buffering encoder whose tail state
only flushes on close (e.g. Apache Commons
Base64OutputStream), failing to close it will cause the encoded output to be truncated.
-
Field Summary
Fields inherited from class CMSEnvelopedGenerator
AES128_CBC, AES128_WRAP, AES192_CBC, AES192_WRAP, AES256_CBC, AES256_WRAP, CAMELLIA128_CBC, CAMELLIA128_WRAP, CAMELLIA192_CBC, CAMELLIA192_WRAP, CAMELLIA256_CBC, CAMELLIA256_WRAP, CAST5_CBC, DES_EDE3_CBC, DES_EDE3_WRAP, ECDH_SHA1KDF, ECMQV_SHA1KDF, ECMQV_SHA224KDF, ECMQV_SHA256KDF, ECMQV_SHA384KDF, ECMQV_SHA512KDF, encoding, IDEA_CBC, originatorInfo, RC2_CBC, SEED_CBC, SEED_WRAP, unprotectedAttributeGenerator -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionopen(OutputStream out, long inputLength, OutputEncryptor encryptor) Generate an enveloped object that contains a CMS Enveloped Data object forinputLengthcontent octets, using the given encryptor.protected OutputStreamopen(OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor) open(OutputStream out, OutputEncryptor encryptor) generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor.open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, long inputLength, OutputEncryptor encryptor) Generate an enveloped object that contains a CMS Enveloped Data object forinputLengthcontent octets of the passed in type, using the given encryptor - seeopen(OutputStream, long, OutputEncryptor).protected OutputStreamopen(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor) open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, OutputEncryptor encryptor) generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor and marking the data as being of the passed in type.voidsetBEREncodeRecipients(boolean berEncodeRecipientSet) Use a BER Set to store the recipient informationvoidsetBufferSize(int bufferSize) Set the underlying string size for encapsulated dataMethods inherited from class CMSEnvelopedGenerator
addRecipientInfoGenerator, setEncoding, setOriginatorInfo, setUnprotectedAttributeGenerator
-
Constructor Details
-
CMSEnvelopedDataStreamGenerator
public CMSEnvelopedDataStreamGenerator()base constructor
-
-
Method Details
-
setBufferSize
public void setBufferSize(int bufferSize) Set the underlying string size for encapsulated data- Parameters:
bufferSize- length of octet strings to buffer the data.
-
setBEREncodeRecipients
public void setBEREncodeRecipients(boolean berEncodeRecipientSet) Use a BER Set to store the recipient information -
open
protected OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor) throws IOException - Throws:
IOException
-
open
protected OutputStream open(OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor) throws CMSException - Throws:
CMSException
-
open
public OutputStream open(OutputStream out, OutputEncryptor encryptor) throws CMSException, IOException generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor.- Throws:
CMSExceptionIOException
-
open
public OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, OutputEncryptor encryptor) throws CMSException, IOException generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor and marking the data as being of the passed in type.- Throws:
CMSExceptionIOException
-
open
public OutputStream open(OutputStream out, long inputLength, OutputEncryptor encryptor) throws CMSException, IOException Generate an enveloped object that contains a CMS Enveloped Data object forinputLengthcontent octets, using the given encryptor. In definite-length mode (seeCMSEnvelopedGenerator.setEncoding(String)) the length is used to pre-compute every enclosing header, so exactly that many content octets must then be written to the returned stream - a mismatch fails with an IOException, by which point the output is unusable and must be discarded. In BER mode the length is ignored.In definite-length mode the
buffer sizeandBER recipient setsettings are ignored (an indefinite-length encoding may not appear inside a definite-length one). Nothing is buffered, so content larger than a Java array can carry is supported.- Throws:
CMSExceptionIOException
-
open
public OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, OutputStream out, long inputLength, OutputEncryptor encryptor) throws CMSException, IOException Generate an enveloped object that contains a CMS Enveloped Data object forinputLengthcontent octets of the passed in type, using the given encryptor - seeopen(OutputStream, long, OutputEncryptor).- Throws:
CMSExceptionIOException
-