Example usage for org.bouncycastle.asn1.x509 X509DefaultEntryConverter getConvertedValue

List of usage examples for org.bouncycastle.asn1.x509 X509DefaultEntryConverter getConvertedValue

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x509 X509DefaultEntryConverter getConvertedValue.

Prototype

public ASN1Primitive getConvertedValue(ASN1ObjectIdentifier oid, String value) 

Source Link

Document

Apply default coversion for the given value depending on the oid and the character range of the value.

Usage

From source file:org.cesecore.certificates.util.cert.SubjectDirAttrExtension.java

License:Open Source License

/**
 * From subjectDirAttributes string as defined in getSubjectDirAttribute 
 * @param dirAttr string of SubjectDirectoryAttributes
 * @return A Collection of ASN.1 Attribute (org.bouncycastle.asn1.x509), or an empty Collection, never null
 * @see #getSubjectDirectoryAttributes(Certificate)
 *//* w ww .  j a v  a  2 s  .c  o m*/
public static Collection<Attribute> getSubjectDirectoryAttributes(String dirAttr) {
    ArrayList<Attribute> ret = new ArrayList<Attribute>();
    Attribute attr = null;
    String value = CertTools.getPartFromDN(dirAttr, "countryOfResidence");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new ASN1ObjectIdentifier(id_pda_countryOfResidence), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "countryOfCitizenship");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new ASN1ObjectIdentifier(id_pda_countryOfCitizenship), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "gender");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new ASN1ObjectIdentifier(id_pda_gender), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "placeOfBirth");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        X509DefaultEntryConverter conv = new X509DefaultEntryConverter();
        ASN1Primitive obj = conv.getConvertedValue(new ASN1ObjectIdentifier(id_pda_placeOfBirth), value);
        vec.add(obj);
        attr = new Attribute(new ASN1ObjectIdentifier(id_pda_placeOfBirth), new DERSet(vec));
        ret.add(attr);
    }
    // dateOfBirth that is a GeneralizedTime
    // The correct format for this is YYYYMMDD, it will be padded to YYYYMMDD120000Z
    value = CertTools.getPartFromDN(dirAttr, "dateOfBirth");
    if (!StringUtils.isEmpty(value)) {
        if (value.length() == 8) {
            value += "120000Z"; // standard format according to rfc3739
            ASN1EncodableVector vec = new ASN1EncodableVector();
            vec.add(new DERGeneralizedTime(value));
            attr = new Attribute(new ASN1ObjectIdentifier(id_pda_dateOfBirth), new DERSet(vec));
            ret.add(attr);
        } else {
            log.error("Wrong length of data for 'dateOfBirth', should be of format YYYYMMDD, skipping...");
        }
    }
    return ret;
}

From source file:org.ejbca.util.cert.SubjectDirAttrExtension.java

License:Open Source License

/**
 * From subjectDirAttributes string as defined in getSubjectDirAttribute 
 * @param dirAttr string of SubjectDirectoryAttributes
 * @return A Collection of ASN.1 Attribute (org.bouncycastle.asn1.x509), or an empty Collection, never null
 * @see #getSubjectDirectoryAttributes(Certificate)
 */// w w  w .j av  a2  s  .  c  o m
public static Collection<Attribute> getSubjectDirectoryAttributes(String dirAttr) {
    ArrayList<Attribute> ret = new ArrayList<Attribute>();
    Attribute attr = null;
    String value = CertTools.getPartFromDN(dirAttr, "countryOfResidence");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new DERObjectIdentifier(id_pda_countryOfResidence), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "countryOfCitizenship");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new DERObjectIdentifier(id_pda_countryOfCitizenship), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "gender");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        vec.add(new DERPrintableString(value));
        attr = new Attribute(new DERObjectIdentifier(id_pda_gender), new DERSet(vec));
        ret.add(attr);
    }
    value = CertTools.getPartFromDN(dirAttr, "placeOfBirth");
    if (!StringUtils.isEmpty(value)) {
        ASN1EncodableVector vec = new ASN1EncodableVector();
        X509DefaultEntryConverter conv = new X509DefaultEntryConverter();
        DERObject obj = conv.getConvertedValue(new DERObjectIdentifier(id_pda_placeOfBirth), value);
        vec.add(obj);
        attr = new Attribute(new DERObjectIdentifier(id_pda_placeOfBirth), new DERSet(vec));
        ret.add(attr);
    }
    // dateOfBirth that is a GeneralizedTime
    // The correct format for this is YYYYMMDD, it will be padded to YYYYMMDD120000Z
    value = CertTools.getPartFromDN(dirAttr, "dateOfBirth");
    if (!StringUtils.isEmpty(value)) {
        if (value.length() == 8) {
            value += "120000Z"; // standard format according to rfc3739
            ASN1EncodableVector vec = new ASN1EncodableVector();
            vec.add(new DERGeneralizedTime(value));
            attr = new Attribute(new DERObjectIdentifier(id_pda_dateOfBirth), new DERSet(vec));
            ret.add(attr);
        } else {
            log.error("Wrong length of data for 'dateOfBirth', should be of format YYYYMMDD, skipping...");
        }
    }
    return ret;
}