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

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

Introduction

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

Prototype

ASN1ObjectIdentifier id_spq_ets_unotice

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

Click Source Link

Document

SMIME SPQ UNOTICE: 1.2.840.113549.1.9.16.5.2

Usage

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)/*from www. j ava  2 s. co  m*/
 * <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.validation.CAdESSignature.java

License:Open Source License

/**
 * 31 ETSI TS 101 733 V2.2.1 (2013-04)//from   w  w w .  j  av  a 2 s. c om
 * 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;
}

From source file:org.xipki.ca.api.profile.x509.X509CertUtil.java

License:Open Source License

private static ASN1Sequence createPolicyQualifiers(final List<CertificatePolicyQualifier> qualifiers) {
    List<PolicyQualifierInfo> qualifierInfos = new ArrayList<>(qualifiers.size());
    for (CertificatePolicyQualifier qualifier : qualifiers) {
        PolicyQualifierInfo qualifierInfo;
        if (qualifier.getCpsUri() != null) {
            qualifierInfo = new PolicyQualifierInfo(qualifier.getCpsUri());
        } else if (qualifier.getUserNotice() != null) {
            UserNotice userNotice = new UserNotice(null, qualifier.getUserNotice());
            qualifierInfo = new PolicyQualifierInfo(PKCSObjectIdentifiers.id_spq_ets_unotice, userNotice);
        } else {/*ww w  .  java2s .  c om*/
            qualifierInfo = null;
        }

        if (qualifierInfo != null) {
            qualifierInfos.add(qualifierInfo);
        }
        //PolicyQualifierId qualifierId
    }

    return new DERSequence(qualifierInfos.toArray(new PolicyQualifierInfo[0]));
}

From source file:org.xipki.pki.ca.certprofile.XmlX509CertprofileUtil.java

License:Open Source License

private static ASN1Sequence createPolicyQualifiers(final List<CertificatePolicyQualifier> qualifiers) {
    ParamUtil.requireNonNull("qualifiers", qualifiers);
    List<PolicyQualifierInfo> qualifierInfos = new ArrayList<>(qualifiers.size());
    for (CertificatePolicyQualifier qualifier : qualifiers) {
        PolicyQualifierInfo qualifierInfo;
        if (qualifier.getCpsUri() != null) {
            qualifierInfo = new PolicyQualifierInfo(qualifier.getCpsUri());
        } else if (qualifier.getUserNotice() != null) {
            UserNotice userNotice = new UserNotice(null, qualifier.getUserNotice());
            qualifierInfo = new PolicyQualifierInfo(PKCSObjectIdentifiers.id_spq_ets_unotice, userNotice);
        } else {/*from ww w  .  jav  a2s  .  co  m*/
            qualifierInfo = null;
        }

        if (qualifierInfo != null) {
            qualifierInfos.add(qualifierInfo);
        }
        //PolicyQualifierId qualifierId
    }

    return new DERSequence(qualifierInfos.toArray(new PolicyQualifierInfo[0]));
}