1package org.bouncycastle.cms.jcajce; 2 3import java.security.cert.CertificateEncodingException; 4import java.security.cert.X509Certificate; 5 6import org.bouncycastle.cert.X509CertificateHolder; 7import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder; 8import org.bouncycastle.cms.CMSAttributeTableGenerator; 9import org.bouncycastle.cms.SignerInfoGenerator; 10import org.bouncycastle.cms.SignerInfoGeneratorBuilder; 11import org.bouncycastle.operator.ContentSigner; 12import org.bouncycastle.operator.DigestCalculatorProvider; 13import org.bouncycastle.operator.OperatorCreationException; 14 15public class JcaSignerInfoGeneratorBuilder 16{ 17 private SignerInfoGeneratorBuilder builder; 18 19 public JcaSignerInfoGeneratorBuilder(DigestCalculatorProvider digestProvider) 20 { 21 builder = new SignerInfoGeneratorBuilder(digestProvider); 22 } 23 24 /** 25 * If the passed in flag is true, the signer signature will be based on the data, not 26 * a collection of signed attributes, and no signed attributes will be included. 27 * 28 * @return the builder object 29 */ 30 public JcaSignerInfoGeneratorBuilder setDirectSignature(boolean hasNoSignedAttributes) 31 { 32 builder.setDirectSignature(hasNoSignedAttributes); 33 34 return this; 35 } 36 37 public JcaSignerInfoGeneratorBuilder setSignedAttributeGenerator(CMSAttributeTableGenerator signedGen) 38 { 39 builder.setSignedAttributeGenerator(signedGen); 40 41 return this; 42 } 43 44 public JcaSignerInfoGeneratorBuilder setUnsignedAttributeGenerator(CMSAttributeTableGenerator unsignedGen) 45 { 46 builder.setUnsignedAttributeGenerator(unsignedGen); 47 48 return this; 49 } 50 51 public SignerInfoGenerator build(ContentSigner contentSigner, X509CertificateHolder certHolder) 52 throws OperatorCreationException 53 { 54 return builder.build(contentSigner, certHolder); 55 } 56 57 public SignerInfoGenerator build(ContentSigner contentSigner, byte[] keyIdentifier) 58 throws OperatorCreationException 59 { 60 return builder.build(contentSigner, keyIdentifier); 61 } 62 63 public SignerInfoGenerator build(ContentSigner contentSigner, X509Certificate certificate) 64 throws OperatorCreationException, CertificateEncodingException 65 { 66 return this.build(contentSigner, new JcaX509CertificateHolder(certificate)); 67 } 68} 69