List of usage examples for org.bouncycastle.asn1.esf SignaturePolicyId getInstance
public static SignaturePolicyId getInstance(Object obj)
From source file:eu.europa.ec.markt.dss.validation.cades.CAdESSignature.java
License:Open Source License
@Override public PolicyValue getPolicyId() { if (signerInformation.getSignedAttributes() == null) { return null; }/*w ww. j ava2 s . c o m*/ Attribute sigPolicytAttr = signerInformation.getSignedAttributes() .get(PKCSObjectIdentifiers.id_aa_ets_sigPolicyId); if (sigPolicytAttr == null) { return null; } if (sigPolicytAttr.getAttrValues().getObjectAt(0) instanceof DERNull) { return new PolicyValue(); } SignaturePolicyId sigPolicy = null; sigPolicy = SignaturePolicyId.getInstance(sigPolicytAttr.getAttrValues().getObjectAt(0)); if (sigPolicy == null) { return new PolicyValue(); } return new PolicyValue(sigPolicy.getSigPolicyId().getId()); }
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 w ww. j a v a 2s . 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.validation.CAdESSignature.java
License:Open Source License
/** * 31 ETSI TS 101 733 V2.2.1 (2013-04)//from w w w .j a v a 2 s . com * 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; }