Example usage for org.bouncycastle.cms SignerInfoGeneratorBuilder setUnsignedAttributeGenerator

List of usage examples for org.bouncycastle.cms SignerInfoGeneratorBuilder setUnsignedAttributeGenerator

Introduction

In this page you can find the example usage for org.bouncycastle.cms SignerInfoGeneratorBuilder setUnsignedAttributeGenerator.

Prototype

public SignerInfoGeneratorBuilder setUnsignedAttributeGenerator(CMSAttributeTableGenerator unsignedGen) 

Source Link

Document

Provide a generator of unsigned attributes.

Usage

From source file:eu.europa.ec.markt.dss.signature.cades.CMSSignedDataBuilder.java

License:Open Source License

/**
 * @param signedAttributeGenerator   the signedAttribute generator
 * @param unsignedAttributeGenerator the unsignedAttribute generator
 * @return a SignerInfoGeneratorBuilder that generate the signed and unsigned attributes according to the parameters
 *//*w  w w. j a v  a 2s. com*/
private SignerInfoGeneratorBuilder getSignerInfoGeneratorBuilder(
        DefaultSignedAttributeTableGenerator signedAttributeGenerator,
        SimpleAttributeTableGenerator unsignedAttributeGenerator) {

    final DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider();
    SignerInfoGeneratorBuilder sigInfoGeneratorBuilder = new SignerInfoGeneratorBuilder(
            digestCalculatorProvider);
    sigInfoGeneratorBuilder.setSignedAttributeGenerator(signedAttributeGenerator);
    sigInfoGeneratorBuilder.setUnsignedAttributeGenerator(unsignedAttributeGenerator);
    return sigInfoGeneratorBuilder;
}

From source file:eu.europa.ec.markt.dss.signature.pades.PadesCMSSignedDataBuilder.java

License:Open Source License

/**
 * @param parameters the parameters of the signature containing values for the attributes
 * @return a SignerInfoGeneratorBuilder that generate the signed and unsigned attributes according to the CAdESLevelBaselineB and
 * PAdESLevelBaselineB//  w w w. ja  v  a 2  s.c om
 */
protected SignerInfoGeneratorBuilder getSignerInfoGeneratorBuilder(final SignatureParameters parameters,
        final byte[] messageDigest) {

    final CAdESLevelBaselineB cAdESLevelBaselineB = new CAdESLevelBaselineB(true);
    final PAdESLevelBaselineB pAdESProfileEPES = new PAdESLevelBaselineB();

    final DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider();

    SignerInfoGeneratorBuilder signerInfoGeneratorBuilder = new SignerInfoGeneratorBuilder(
            digestCalculatorProvider);
    signerInfoGeneratorBuilder = signerInfoGeneratorBuilder
            .setSignedAttributeGenerator(new CMSAttributeTableGenerator() {

                @SuppressWarnings("unchecked")
                @Override
                public AttributeTable getAttributes(@SuppressWarnings("rawtypes") Map params)
                        throws CMSAttributeTableGenerationException {

                    return pAdESProfileEPES.getSignedAttributes(params, cAdESLevelBaselineB, parameters,
                            messageDigest);
                }
            });

    signerInfoGeneratorBuilder.setUnsignedAttributeGenerator(new CMSAttributeTableGenerator() {
        @Override
        public AttributeTable getAttributes(Map params) throws CMSAttributeTableGenerationException {
            return pAdESProfileEPES.getUnsignedAttributes();
        }
    });

    return signerInfoGeneratorBuilder;
}

From source file:eu.europa.esig.dss.cookbook.mock.MockTSPSource.java

License:Open Source License

@Override
public TimeStampToken getTimeStampResponse(final DigestAlgorithm digestAlgorithm, final byte[] digest)
        throws DSSException {

    final String signatureAlgorithm = getSignatureAlgorithm(digestAlgorithm, digest);

    final TimeStampRequestGenerator tsqGenerator = new TimeStampRequestGenerator();
    tsqGenerator.setCertReq(true);/*from   w  ww. ja v a 2  s .  c  o  m*/

    /**
     * The code below guarantee that the dates of the two successive
     * timestamps are different. This is activated only if timestampDate is provided at
     * construction time
     */
    Date timestampDate_ = new Date();

    if (policyOid != null) {
        tsqGenerator.setReqPolicy(policyOid);
    }

    TimeStampRequest tsRequest = null;
    if (useNonce) {
        final BigInteger nonce = BigInteger.valueOf(random.nextLong());
        tsRequest = tsqGenerator.generate(new ASN1ObjectIdentifier(digestAlgorithm.getOid()), digest, nonce);
    } else {
        tsRequest = tsqGenerator.generate(new ASN1ObjectIdentifier(digestAlgorithm.getOid()), digest);
    }

    try {
        final ContentSigner sigGen = new JcaContentSignerBuilder(signatureAlgorithm).build(key);
        final JcaX509CertificateHolder certHolder = new JcaX509CertificateHolder(cert.getCertificate());

        // that to make sure we generate the same timestamp data for the
        // same timestamp date
        AttributeTable signedAttributes = new AttributeTable(new Hashtable<ASN1ObjectIdentifier, Object>());
        signedAttributes = signedAttributes.add(PKCSObjectIdentifiers.pkcs_9_at_signingTime,
                new Time(timestampDate_));
        final DefaultSignedAttributeTableGenerator signedAttributeGenerator = new DefaultSignedAttributeTableGenerator(
                signedAttributes);
        AttributeTable unsignedAttributes = new AttributeTable(new Hashtable<ASN1ObjectIdentifier, Object>());
        final SimpleAttributeTableGenerator unsignedAttributeGenerator = new SimpleAttributeTableGenerator(
                unsignedAttributes);

        final DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider();
        SignerInfoGeneratorBuilder sigInfoGeneratorBuilder = new SignerInfoGeneratorBuilder(
                digestCalculatorProvider);
        sigInfoGeneratorBuilder.setSignedAttributeGenerator(signedAttributeGenerator);
        sigInfoGeneratorBuilder.setUnsignedAttributeGenerator(unsignedAttributeGenerator);
        final SignerInfoGenerator sig = sigInfoGeneratorBuilder.build(sigGen, certHolder);

        final DigestCalculator sha1DigestCalculator = DSSRevocationUtils.getSHA1DigestCalculator();

        final TimeStampTokenGenerator tokenGenerator = new TimeStampTokenGenerator(sig, sha1DigestCalculator,
                policyOid);
        final Set<X509Certificate> singleton = new HashSet<X509Certificate>();
        singleton.add(cert.getCertificate());
        tokenGenerator.addCertificates(new JcaCertStore(singleton));
        final TimeStampResponseGenerator generator = new TimeStampResponseGenerator(tokenGenerator,
                TSPAlgorithms.ALLOWED);

        Date responseDate = new Date();
        TimeStampResponse tsResponse = generator.generate(tsRequest, BigInteger.ONE, responseDate);
        final TimeStampToken timeStampToken = tsResponse.getTimeStampToken();
        return timeStampToken;
    } catch (OperatorCreationException e) {
        throw new DSSException(e);
    } catch (CertificateEncodingException e) {
        throw new DSSException(e);
    } catch (TSPException e) {
        throw new DSSException(e);
    }
}

From source file:eu.europa.esig.dss.pades.signature.PadesCMSSignedDataBuilder.java

License:Open Source License

/**
 * @param parameters the parameters of the signature containing values for the attributes
 * @return a SignerInfoGeneratorBuilder that generate the signed and unsigned attributes according to the CAdESLevelBaselineB and
 * PAdESLevelBaselineB/*ww  w. j a va  2s .  c o m*/
 */
protected SignerInfoGeneratorBuilder getSignerInfoGeneratorBuilder(final PAdESSignatureParameters parameters,
        final byte[] messageDigest) {

    final CAdESLevelBaselineB cAdESLevelBaselineB = new CAdESLevelBaselineB(true);
    final PAdESLevelBaselineB pAdESProfileB = new PAdESLevelBaselineB();

    final DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider();

    SignerInfoGeneratorBuilder signerInfoGeneratorBuilder = new SignerInfoGeneratorBuilder(
            digestCalculatorProvider);

    signerInfoGeneratorBuilder = signerInfoGeneratorBuilder
            .setSignedAttributeGenerator(new CMSAttributeTableGenerator() {
                @Override
                public AttributeTable getAttributes(@SuppressWarnings("rawtypes") Map params)
                        throws CMSAttributeTableGenerationException {
                    return pAdESProfileB.getSignedAttributes(params, cAdESLevelBaselineB, parameters,
                            messageDigest);
                }
            });

    signerInfoGeneratorBuilder = signerInfoGeneratorBuilder
            .setUnsignedAttributeGenerator(new CMSAttributeTableGenerator() {
                @Override
                public AttributeTable getAttributes(@SuppressWarnings("rawtypes") Map params)
                        throws CMSAttributeTableGenerationException {
                    return pAdESProfileB.getUnsignedAttributes();
                }
            });

    return signerInfoGeneratorBuilder;
}

From source file:mitm.common.security.smime.SMIMEBuilderImpl.java

License:Open Source License

private void addSigner(PrivateKey privateKey, X509Certificate signer, SMIMESigningAlgorithm algorithm,
        AttributeTable signedAttr, AttributeTable unsignedAttr) throws SMIMEBuilderException {
    try {//from  w w w  . j  a va  2 s  . c  o m
        JcaDigestCalculatorProviderBuilder digestBuilder = new JcaDigestCalculatorProviderBuilder();

        digestBuilder.setProvider(nonSensitiveProvider);

        SignerInfoGeneratorBuilder signerInfoBuilder = new SignerInfoGeneratorBuilder(digestBuilder.build());

        if (signedAttr != null) {
            signerInfoBuilder.setSignedAttributeGenerator(new DefaultSignedAttributeTableGenerator(signedAttr));
        }

        if (unsignedAttr != null) {
            signerInfoBuilder.setUnsignedAttributeGenerator(new SimpleAttributeTableGenerator(unsignedAttr));
        }

        JcaContentSignerBuilder contentSignerBuilder = new JcaContentSignerBuilder(algorithm.getAlgorithm());

        contentSignerBuilder.setProvider(sensitiveProvider);

        SignerInfoGenerator signerInfoGenerator = signerInfoBuilder
                .build(contentSignerBuilder.build(privateKey), new JcaX509CertificateHolder(signer));

        signedGenerator.addSignerInfoGenerator(signerInfoGenerator);
    } catch (OperatorCreationException e) {
        throw new SMIMEBuilderException(e);
    } catch (CertificateEncodingException e) {
        throw new SMIMEBuilderException(e);
    }
}

From source file:mitm.common.security.smime.SMIMEBuilderImpl.java

License:Open Source License

public void addSigner(PrivateKey privateKey, byte[] subjectKeyIdentifier, SMIMESigningAlgorithm algorithm,
        AttributeTable signedAttr, AttributeTable unsignedAttr) throws SMIMEBuilderException {
    try {//from  ww w . j  a v  a  2 s. com
        JcaDigestCalculatorProviderBuilder digestBuilder = new JcaDigestCalculatorProviderBuilder();

        digestBuilder.setProvider(nonSensitiveProvider);

        SignerInfoGeneratorBuilder signerInfoBuilder = new SignerInfoGeneratorBuilder(digestBuilder.build());

        if (signedAttr != null) {
            signerInfoBuilder.setSignedAttributeGenerator(new DefaultSignedAttributeTableGenerator(signedAttr));
        }

        if (unsignedAttr != null) {
            signerInfoBuilder.setUnsignedAttributeGenerator(new SimpleAttributeTableGenerator(unsignedAttr));
        }

        JcaContentSignerBuilder contentSignerBuilder = new JcaContentSignerBuilder(algorithm.getAlgorithm());

        contentSignerBuilder.setProvider(sensitiveProvider);

        SignerInfoGenerator signerInfoGenerator = signerInfoBuilder
                .build(contentSignerBuilder.build(privateKey), subjectKeyIdentifier);

        signedGenerator.addSignerInfoGenerator(signerInfoGenerator);
    } catch (OperatorCreationException e) {
        throw new SMIMEBuilderException(e);
    }
}