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