List of usage examples for org.bouncycastle.cms CMSSignedDataStreamGenerator open
public OutputStream open(OutputStream out, boolean encapsulate) throws IOException
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; }