Example usage for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers id_spq_ets_uri

List of usage examples for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers id_spq_ets_uri

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers id_spq_ets_uri.

Prototype

ASN1ObjectIdentifier id_spq_ets_uri

To view the source code for org.bouncycastle.asn1.pkcs PKCSObjectIdentifiers id_spq_ets_uri.

Click Source Link

Document

SMIME SPQ URI: 1.2.840.113549.1.9.16.5.1

Usage

From source file:com.itextpdf.signatures.SignaturePolicyInfo.java

License:Open Source License

SignaturePolicyIdentifier toSignaturePolicyIdentifier() {
    String algId = DigestAlgorithms.getAllowedDigest(this.policyDigestAlgorithm);

    if (algId == null || algId.length() == 0) {
        throw new IllegalArgumentException("Invalid policy hash algorithm");
    }//w  w  w  .j  a  v  a2s. com

    SignaturePolicyIdentifier signaturePolicyIdentifier = null;
    SigPolicyQualifierInfo spqi = null;

    if (this.policyUri != null && this.policyUri.length() > 0) {
        spqi = new SigPolicyQualifierInfo(PKCSObjectIdentifiers.id_spq_ets_uri,
                new DERIA5String(this.policyUri));
    }

    signaturePolicyIdentifier = new SignaturePolicyIdentifier(new SignaturePolicyId(
            DERObjectIdentifier
                    .getInstance(new DERObjectIdentifier(this.policyIdentifier.replace("urn:oid:", ""))),
            new OtherHashAlgAndValue(new AlgorithmIdentifier(algId), new DEROctetString(this.policyHash)),
            SignUtils.createSigPolicyQualifiers(spqi)));

    return signaturePolicyIdentifier;
}

From source file:es.gob.afirma.envelopers.cades.SigPolicyQualifierInfo.java

License:Open Source License

/** Crea un nuevo <code>SigPolicyQualifierInfo</code> con su calificador
 * cPSuri./*from w ww  . j a  v a 2  s.co m*/
 * @param cps
 *        El CPS (certification practice statement) uri como <code>String</code>. */
SigPolicyQualifierInfo(final String cps) {
    this.sigPolicyQualifierId = PKCSObjectIdentifiers.id_spq_ets_uri;
    this.sigQualifier = new DERIA5String(cps);
}

From source file:es.gob.afirma.signers.cades.AOSigPolicyQualifierInfo.java

License:Open Source License

/** Crea un nuevo <code>AOSigPolicyQualifierInfo</code> con su calificador
 * cPSuri./*from ww  w.j  a  v  a2s  .  c  o  m*/
 * @param cps
 *        El CPS (certification practice statement) uri como <code>String</code>. */
AOSigPolicyQualifierInfo(final String cps) {
    this.sigPolicyQualifierId = PKCSObjectIdentifiers.id_spq_ets_uri;
    this.sigQualifier = new DERIA5String(cps);
}

From source file:eu.europa.ec.markt.dss.validation102853.cades.CAdESSignature.java

License:Open Source License

/**
 * 31 ETSI TS 101 733 V2.2.1 (2013-04)//  w  ww  .  j a  v  a  2  s.  c  om
 * <p/>
 * 5.8.1 signature-policy-identifier
 * The present document mandates that for CAdES-EPES, a reference to the signature policy is included in the
 * signedData. This reference is explicitly identified. A signature policy defines the rules for creation and validation of
 * an electronic signature, and is included as a signed attribute with every Explicit Policy-based Electronic Signature. The
 * signature-policy-identifier shall be a signed attribute.
 * <p/>
 * The following object identifier identifies the signature-policy-identifier attribute:
 * ... id-aa-ets-sigPolicyId OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 15 }
 * signature-policy-identifier attribute values have ASN.1 type SignaturePolicyIdentifier:
 * ... SignaturePolicyIdentifier ::=CHOICE{
 * ...... signaturePolicyId ......... SignaturePolicyId,
 * ...... signaturePolicyImplied .... SignaturePolicyImplied -- not used in this version}
 * <p/>
 * ... SignaturePolicyId ::= SEQUENCE {
 * ...... sigPolicyId ......... SigPolicyId,
 * ...... sigPolicyHash ....... SigPolicyHash,
 * ...... sigPolicyQualifiers . SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL}
 * <p/>
 * ... SignaturePolicyImplied ::= NULL
 * <p/>
 * NOTE: {@code SignaturePolicyImplied} -- not used in this version
 *
 * @return
 */
@Override
public SignaturePolicy getPolicyId() {

    final AttributeTable attributes = signerInformation.getSignedAttributes();
    if (attributes == null) {
        return null;
    }

    final Attribute attribute = attributes.get(PKCSObjectIdentifiers.id_aa_ets_sigPolicyId);
    if (attribute == null) {
        return null;
    }

    final ASN1Encodable attrValue = attribute.getAttrValues().getObjectAt(0);
    if (attrValue instanceof DERNull) {
        return null;
    }

    final SignaturePolicyId sigPolicy = SignaturePolicyId.getInstance(attrValue);
    if (sigPolicy == null) {
        return null;
    }

    final String policyId = sigPolicy.getSigPolicyId().getId();
    final SignaturePolicy signaturePolicy = new SignaturePolicy(policyId);

    final OtherHashAlgAndValue hashAlgAndValue = sigPolicy.getSigPolicyHash();

    final AlgorithmIdentifier digestAlgorithmIdentifier = hashAlgAndValue.getHashAlgorithm();
    final String digestAlgorithmOID = digestAlgorithmIdentifier.getAlgorithm().getId();
    final DigestAlgorithm digestAlgorithm = DigestAlgorithm.forOID(digestAlgorithmOID);
    signaturePolicy.setDigestAlgorithm(digestAlgorithm);

    final ASN1OctetString digestValue = hashAlgAndValue.getHashValue();
    final byte[] digestValueBytes = digestValue.getOctets();
    final String policyDigestHexValue = DSSUtils.toHex(digestValueBytes);
    signaturePolicy.setDigestValue(policyDigestHexValue);

    final SigPolicyQualifiers sigPolicyQualifiers = sigPolicy.getSigPolicyQualifiers();
    if (sigPolicyQualifiers == null) {

        return signaturePolicy;
    }
    for (int ii = 0; ii < sigPolicyQualifiers.size(); ii++) {

        final SigPolicyQualifierInfo policyQualifierInfo = sigPolicyQualifiers.getInfoAt(ii);
        final ASN1ObjectIdentifier policyQualifierInfoId = policyQualifierInfo.getSigPolicyQualifierId();
        final String policyQualifierInfoValue = policyQualifierInfo.getSigQualifier().toString();

        if (PKCSObjectIdentifiers.id_spq_ets_unotice.equals(policyQualifierInfoId)) {

            signaturePolicy.setNotice(policyQualifierInfoValue);
        } else if (PKCSObjectIdentifiers.id_spq_ets_uri.equals(policyQualifierInfoId)) {

            signaturePolicy.setUrl(policyQualifierInfoValue);
        } else {
            LOG.error("Unknown signature policy qualifier id: " + policyQualifierInfoId + " with value: "
                    + policyQualifierInfoValue);
        }
    }
    return signaturePolicy;
}

From source file:eu.europa.esig.dss.cades.signature.CAdESLevelBaselineB.java

License:Open Source License

private void addSignaturePolicyId(final CAdESSignatureParameters parameters,
        final ASN1EncodableVector signedAttributes) {

    Policy policy = parameters.bLevel().getSignaturePolicy();
    if (policy != null) {

        final String policyId = policy.getId();
        SignaturePolicyIdentifier sigPolicy = null;

        if (StringUtils.isEmpty(policyId)) {// implicit
            sigPolicy = new SignaturePolicyIdentifier();
        } else { // explicit
            final ASN1ObjectIdentifier derOIPolicyId = new ASN1ObjectIdentifier(policyId);
            final ASN1ObjectIdentifier oid = new ASN1ObjectIdentifier(policy.getDigestAlgorithm().getOid());
            final AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(oid);
            OtherHashAlgAndValue otherHashAlgAndValue = new OtherHashAlgAndValue(algorithmIdentifier,
                    new DEROctetString(policy.getDigestValue()));

            if (StringUtils.isNotEmpty(policy.getSpuri())) {
                SigPolicyQualifierInfo policyQualifierInfo = new SigPolicyQualifierInfo(
                        PKCSObjectIdentifiers.id_spq_ets_uri, new DERUTF8String(policy.getSpuri()));
                SigPolicyQualifierInfo[] qualifierInfos = new SigPolicyQualifierInfo[] { policyQualifierInfo };
                SigPolicyQualifiers qualifiers = new SigPolicyQualifiers(qualifierInfos);

                sigPolicy = new SignaturePolicyIdentifier(
                        new SignaturePolicyId(derOIPolicyId, otherHashAlgAndValue, qualifiers));
            } else {
                sigPolicy = new SignaturePolicyIdentifier(
                        new SignaturePolicyId(derOIPolicyId, otherHashAlgAndValue));
            }/*from   w ww  . jav  a2 s. co m*/
        }

        final DERSet attrValues = new DERSet(sigPolicy);
        final Attribute attribute = new Attribute(id_aa_ets_sigPolicyId, attrValues);
        signedAttributes.add(attribute);
    }
}

From source file:eu.europa.esig.dss.cades.validation.CAdESSignature.java

License:Open Source License

/**
 * 31 ETSI TS 101 733 V2.2.1 (2013-04)//w ww  . j a v a2  s  . co  m
 * 5.8.1 signature-policy-identifier The present document mandates that for
 * CAdES-EPES, a reference to the signature policy is included in the
 * signedData. This reference is explicitly identified. A signature policy
 * defines the rules for creation and validation of an electronic signature,
 * and is included as a signed attribute with every Explicit Policy-based
 * Electronic Signature. The signature-policy-identifier shall be a signed
 * attribute.
 * The following object identifier identifies the
 * signature-policy-identifier attribute: ... id-aa-ets-sigPolicyId OBJECT
 * IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
 * pkcs9(9) smime(16) id-aa(2) 15 } signature-policy-identifier attribute
 * values have ASN.1 type SignaturePolicyIdentifier: ...
 * SignaturePolicyIdentifier ::=CHOICE{ ...... signaturePolicyId .........
 * SignaturePolicyId, ...... signaturePolicyImplied ....
 * SignaturePolicyImplied -- not used in this version}
 * ... SignaturePolicyId ::= SEQUENCE { ...... sigPolicyId .........
 * SigPolicyId, ...... sigPolicyHash ....... SigPolicyHash, ......
 * sigPolicyQualifiers . SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo
 * OPTIONAL}
 * ... SignaturePolicyImplied ::= NULL
 * NOTE: {@code SignaturePolicyImplied} -- not used in this version
 *
 * @return
 */
@Override
public SignaturePolicy getPolicyId() {

    final AttributeTable attributes = signerInformation.getSignedAttributes();
    if (attributes == null) {
        return null;
    }

    final Attribute attribute = attributes.get(PKCSObjectIdentifiers.id_aa_ets_sigPolicyId);
    if (attribute == null) {
        return null;
    }

    final ASN1Encodable attrValue = attribute.getAttrValues().getObjectAt(0);
    if (attrValue instanceof DERNull) {
        return null;
    }

    final SignaturePolicyId sigPolicy = SignaturePolicyId.getInstance(attrValue);
    if (sigPolicy == null) {
        return null;
    }

    final String policyId = sigPolicy.getSigPolicyId().getId();
    final SignaturePolicy signaturePolicy = new SignaturePolicy(policyId);

    final OtherHashAlgAndValue hashAlgAndValue = sigPolicy.getSigPolicyHash();

    final AlgorithmIdentifier digestAlgorithmIdentifier = hashAlgAndValue.getHashAlgorithm();
    final String digestAlgorithmOID = digestAlgorithmIdentifier.getAlgorithm().getId();
    final DigestAlgorithm digestAlgorithm = DigestAlgorithm.forOID(digestAlgorithmOID);
    signaturePolicy.setDigestAlgorithm(digestAlgorithm);

    final ASN1OctetString digestValue = hashAlgAndValue.getHashValue();
    final byte[] digestValueBytes = digestValue.getOctets();
    signaturePolicy.setDigestValue(digestValueBytes);

    final SigPolicyQualifiers sigPolicyQualifiers = sigPolicy.getSigPolicyQualifiers();
    if (sigPolicyQualifiers == null) {
        return signaturePolicy;
    }
    for (int ii = 0; ii < sigPolicyQualifiers.size(); ii++) {

        final SigPolicyQualifierInfo policyQualifierInfo = sigPolicyQualifiers.getInfoAt(ii);
        final ASN1ObjectIdentifier policyQualifierInfoId = policyQualifierInfo.getSigPolicyQualifierId();
        final String policyQualifierInfoValue = policyQualifierInfo.getSigQualifier().toString();

        if (PKCSObjectIdentifiers.id_spq_ets_unotice.equals(policyQualifierInfoId)) {

            signaturePolicy.setNotice(policyQualifierInfoValue);
        } else if (PKCSObjectIdentifiers.id_spq_ets_uri.equals(policyQualifierInfoId)) {

            signaturePolicy.setUrl(policyQualifierInfoValue);
        } else {
            LOG.error("Unknown signature policy qualifier id: " + policyQualifierInfoId + " with value: "
                    + policyQualifierInfoValue);
        }
    }
    return signaturePolicy;
}