Example usage for org.bouncycastle.cms CMSSignedDataStreamGenerator open

List of usage examples for org.bouncycastle.cms CMSSignedDataStreamGenerator open

Introduction

In this page you can find the example usage for org.bouncycastle.cms CMSSignedDataStreamGenerator open.

Prototype

public OutputStream open(OutputStream out, boolean encapsulate) throws IOException 

Source Link

Document

generate a signed object that for a CMS Signed Data object using the given provider - if encapsulate is true a copy of the message will be included in the signature with the default content type "data".

Usage

From source file:de.mendelson.util.security.BCCryptoHelper.java

public void signCMS(InputStream unsigned, OutputStream signed, final String ALGORITHM_NAME,
        Certificate signCert, Key signKey, boolean inMemory) throws Exception {
    CMSSignedDataStreamGenerator generator = new CMSSignedDataStreamGenerator();
    PrivateKey signPrivKey = this.getPrivateKey(signKey);
    ContentSigner contentSigner = new JcaContentSignerBuilder(ALGORITHM_NAME).setProvider("BC")
            .build(signPrivKey);/*from  w ww  .j  a v a  2 s  . co m*/
    generator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(
            new JcaDigestCalculatorProviderBuilder().setProvider("BC").build()).build(contentSigner,
                    new X509CertificateHolder(signCert.getEncoded())));
    if (inMemory) {
        ByteArrayOutputStream memBuffer = new ByteArrayOutputStream();
        OutputStream signedOut = generator.open(memBuffer, true);
        this.copyStreams(unsigned, signedOut);
        signedOut.flush();
        signedOut.close();
        signed.write(memBuffer.toByteArray());
    } else {
        File tempFile = File.createTempFile("sign", ".temp");
        FileOutputStream fileBuffer = null;
        OutputStream signedOut = null;
        try {
            fileBuffer = new FileOutputStream(tempFile);
            signedOut = generator.open(fileBuffer, true);
            this.copyStreams(unsigned, signedOut);
        } finally {
            if (signedOut != null) {
                signedOut.flush();
                signedOut.close();
            }
            if (fileBuffer != null) {
                fileBuffer.flush();
                fileBuffer.close();
            }
        }
        FileInputStream fileIn = null;
        try {
            fileIn = new FileInputStream(tempFile);
            this.copyStreams(fileIn, signed);
        } finally {
            if (fileIn != null) {
                fileIn.close();
            }
        }
        boolean deleted = tempFile.delete();
    }
}

From source file:org.cryptoworkshop.ximix.client.verify.test.VerifierTest.java

License:Apache License

private byte[] getSequence(byte[] init, MessageChooser chooser) throws Exception {
    CMSSignedDataParser cmsParser = new CMSSignedDataParser(new BcDigestCalculatorProvider(),
            new ByteArrayInputStream(init));
    ASN1InputStream aIn = new ASN1InputStream(cmsParser.getSignedContent().getContentStream());
    ByteArrayOutputStream bOut = new ByteArrayOutputStream();

    CMSSignedDataStreamGenerator cmsGen = new CMSSignedDataStreamGenerator();

    OutputStream outputStream = cmsGen.open(bOut, true);
    DEROutputStream dOut = new DEROutputStream(outputStream);
    ASN1Primitive obj;// ww  w. j  av  a 2 s. c om

    int count = 0;
    while ((obj = aIn.readObject()) != null) {
        if (chooser.chooseMessage(count++)) {
            dOut.writeObject(obj);
        }
    }

    dOut.close();
    cmsParser.close();
    outputStream.close();

    return bOut.toByteArray();
}

From source file:org.ejbca.util.CMS.java

License:Open Source License

/**
 * @param is data to be signed/*from   w ww  .  ja  v a2  s  .  co  m*/
 * @param os signed data
 * @param key to do be used for signing
 * @param providerName the provider that should do the signing
 * @throws Exception
 */
public static void sign(final InputStream is, OutputStream os, PrivateKey key, String providerName,
        X509Certificate cert) throws Exception {
    final InputStream bis = new BufferedInputStream(is, bufferSize);
    final OutputStream bos = new BufferedOutputStream(os, bufferSize);
    final CMSSignedDataStreamGenerator gen = new CMSSignedDataStreamGenerator();
    JcaDigestCalculatorProviderBuilder calculatorProviderBuilder = new JcaDigestCalculatorProviderBuilder()
            .setProvider(BouncyCastleProvider.PROVIDER_NAME);
    JcaSignerInfoGeneratorBuilder builder = new JcaSignerInfoGeneratorBuilder(
            calculatorProviderBuilder.build());
    final String digest = CMSSignedGenerator.DIGEST_SHA256;
    String signatureAlgorithmName = AlgorithmTools.getAlgorithmNameFromDigestAndKey(digest, key.getAlgorithm());
    ContentSigner contentSigner = new JcaContentSignerBuilder(signatureAlgorithmName).setProvider(providerName)
            .build(key);
    if (cert != null) {
        gen.addSignerInfoGenerator(builder.build(contentSigner, cert));
    } else {
        gen.addSignerInfoGenerator(builder.build(contentSigner, "hej".getBytes()));
    }
    final OutputStream out = gen.open(bos, true);
    fromInToOut(bis, out);
    bos.close();
    os.close();
}

From source file:org.neociclo.odetteftp.util.EnvelopingUtil.java

License:Apache License

public static OutputStream openSignedDataStreamGenerator(OutputStream outStream, CipherSuite cipherSuite,
        X509Certificate cert, PrivateKey key) throws NoSuchAlgorithmException, NoSuchProviderException,
        CMSException, IOException, InvalidKeyException {

    installBouncyCastleProviderIfNecessary();

    // set up the generator
    CMSSignedDataStreamGenerator gen = new CMSSignedDataStreamGenerator();

    gen.addSigner(key, cert, asDigestAlgorithm(cipherSuite), BC_PROVIDER);

    // create the signed-data stream
    OutputStream signed = gen.open(outStream, true);

    return signed;
}