Example usage for org.bouncycastle.asn1.esf SignerLocation getPostalAddress

List of usage examples for org.bouncycastle.asn1.esf SignerLocation getPostalAddress

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.esf SignerLocation getPostalAddress.

Prototype

public ASN1Sequence getPostalAddress() 

Source Link

Usage

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

License:Open Source License

@Override
public SignatureProductionPlace getSignatureProductionPlace() {

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

        return null;
    }/*from  www .j a v a  2  s  .c om*/
    Attribute signatureProductionPlaceAttr = attributes.get(PKCSObjectIdentifiers.id_aa_ets_signerLocation);
    if (signatureProductionPlaceAttr == null) {

        return null;
    }

    final ASN1Encodable asn1Encodable = signatureProductionPlaceAttr.getAttrValues().getObjectAt(0);
    SignerLocation signerLocation = null;
    try {
        signerLocation = SignerLocation.getInstance(asn1Encodable);
    } catch (Exception e) {
        /*
                    // TODO: (Bob: 2013 Dec 11) ---> Validation: /C:/ws_trunk/apps/dss/core/dss-document/target/test-classes/cades2013/CAdES-EPES.SCOK/BULL/Signature-C-EPES-2.p7s
                
                    WARN  SignedDocumentValidator.java:557 - org.bouncycastle.asn1.DERUTF8String cannot be cast to org.bouncycastle.asn1.DERTaggedObject
                    java.lang.ClassCastException: org.bouncycastle.asn1.DERUTF8String cannot be cast to org.bouncycastle.asn1.DERTaggedObject
                    at org.bouncycastle.asn1.esf.SignerLocation.<init>(Unknown Source) ~[bcprov-ext-jdk15on-1.49.jar:1.49.0]
                    at org.bouncycastle.asn1.esf.SignerLocation.getInstance(Unknown Source) ~[bcprov-ext-jdk15on-1.49.jar:1.49.0]
                    at eu.europa.ec.markt.dss.validation102853.cades.CAdESSignature.getSignatureProductionPlace(CAdESSignature.java:663) ~[classes/:na]
                    at eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator.dealSignature(SignedDocumentValidator.java:1209) [classes/:na]
                    at eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator.validateSignature(SignedDocumentValidator.java:535) [classes/:na]
                    at eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator.generateDiagnosticData(SignedDocumentValidator.java:510) [classes/:na]
                    at eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator.validateDocument(SignedDocumentValidator.java:469) [classes/:na]
                    at eu.europa.ec.markt.dss.validation102853.SignedDocumentValidator.validateDocument(SignedDocumentValidator.java:450) [classes/:na]
        */
        LOG.error(e.getMessage(), e);
    }
    if (signerLocation == null) {
        return null;
    }
    final SignatureProductionPlace signatureProductionPlace = new SignatureProductionPlace();
    final DERUTF8String countryName = signerLocation.getCountryName();
    if (countryName != null) {

        signatureProductionPlace.setCountryName(countryName.getString());
    }
    final DERUTF8String localityName = signerLocation.getLocalityName();
    if (localityName != null) {

        signatureProductionPlace.setCity(localityName.getString());
    }
    final StringBuilder address = new StringBuilder();
    final ASN1Sequence seq = signerLocation.getPostalAddress();
    if (seq != null) {

        for (int ii = 0; ii < seq.size(); ii++) {

            if (seq.getObjectAt(ii) instanceof DEROctetString) {
                if (address.length() > 0) {
                    address.append(" / ");
                }
                // TODO: getOctets returns an array
                address.append(new String(((DEROctetString) seq.getObjectAt(ii)).getOctets()));
            } else if (seq.getObjectAt(ii) instanceof DERUTF8String) {

                if (address.length() > 0) {
                    address.append(" / ");
                }
                final DERUTF8String derutf8String = (DERUTF8String) seq.getObjectAt(ii);
                address.append(derutf8String.getString());
            }
        }
    }
    signatureProductionPlace.setAddress(address.toString());
    // This property is not used in CAdES version of signature
    // signatureProductionPlace.setStateOrProvince(stateOrProvince);
    return signatureProductionPlace;
}

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

License:Open Source License

/**
 * ETSI TS 101 733 V2.2.1 (2013-04)/*from   www  . ja v  a 2  s.c o  m*/
 * 5.11.2 signer-location Attribute
 * The signer-location attribute specifies a mnemonic for an address associated with the signer at a particular
 * geographical (e.g. city) location. The mnemonic is registered in the country in which the signer is located and
 * is used in
 * the provision of the Public Telegram Service (according to Recommendation ITU-T F.1 [11]).
 * The signer-location attribute shall be a signed attribute.
 *
 * @param parameters
 * @param signedAttributes
 * @return
 */
private void addSignerLocation(final CAdESSignatureParameters parameters,
        final ASN1EncodableVector signedAttributes) {

    if (!padesUsage) {
        /*
         * In PAdES, the role is in the signature dictionary
         */
        final eu.europa.esig.dss.SignerLocation signerLocationParameter = parameters.bLevel()
                .getSignerLocation();
        if (signerLocationParameter != null) {

            final DERUTF8String country = signerLocationParameter.getCountry() == null ? null
                    : new DERUTF8String(signerLocationParameter.getCountry());
            final DERUTF8String locality = signerLocationParameter.getLocality() == null ? null
                    : new DERUTF8String(signerLocationParameter.getLocality());
            final ASN1EncodableVector postalAddress = new ASN1EncodableVector();
            final List<String> postalAddressParameter = signerLocationParameter.getPostalAddress();
            if (postalAddressParameter != null) {
                for (final String addressLine : postalAddressParameter) {
                    postalAddress.add(new DERUTF8String(addressLine));
                }
            }
            final DERSequence derSequencePostalAddress = new DERSequence(postalAddress);
            final SignerLocation signerLocation = new SignerLocation(country, locality,
                    derSequencePostalAddress);
            final DERSet attrValues = new DERSet(signerLocation);
            final Attribute attribute = new Attribute(id_aa_ets_signerLocation, attrValues);
            signedAttributes.add(attribute);
        }
    }
}

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

License:Open Source License

@Override
public SignatureProductionPlace getSignatureProductionPlace() {

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

        return null;
    }/*from   w ww .jav a2s  .  c  om*/
    Attribute signatureProductionPlaceAttr = attributes.get(PKCSObjectIdentifiers.id_aa_ets_signerLocation);
    if (signatureProductionPlaceAttr == null) {

        return null;
    }

    final ASN1Encodable asn1Encodable = signatureProductionPlaceAttr.getAttrValues().getObjectAt(0);
    SignerLocation signerLocation = null;
    try {
        signerLocation = SignerLocation.getInstance(asn1Encodable);
    } catch (Exception e) {
        LOG.error(e.getMessage(), e);
    }
    if (signerLocation == null) {
        return null;
    }
    final SignatureProductionPlace signatureProductionPlace = new SignatureProductionPlace();
    final DERUTF8String countryName = signerLocation.getCountryName();
    if (countryName != null) {

        signatureProductionPlace.setCountryName(countryName.getString());
    }
    final DERUTF8String localityName = signerLocation.getLocalityName();
    if (localityName != null) {

        signatureProductionPlace.setCity(localityName.getString());
    }
    final StringBuilder address = new StringBuilder();
    final ASN1Sequence seq = signerLocation.getPostalAddress();
    if (seq != null) {

        for (int ii = 0; ii < seq.size(); ii++) {

            if (seq.getObjectAt(ii) instanceof DEROctetString) {
                if (address.length() > 0) {
                    address.append(" / ");
                }
                // TODO: getOctets returns an array
                address.append(new String(((DEROctetString) seq.getObjectAt(ii)).getOctets()));
            } else if (seq.getObjectAt(ii) instanceof DERUTF8String) {

                if (address.length() > 0) {
                    address.append(" / ");
                }
                final DERUTF8String derutf8String = (DERUTF8String) seq.getObjectAt(ii);
                address.append(derutf8String.getString());
            }
        }
    }
    signatureProductionPlace.setStreetAddress(address.toString());
    // This property is not used in CAdES version of signature
    // signatureProductionPlace.setStateOrProvince(stateOrProvince);
    return signatureProductionPlace;
}