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