Example usage for org.bouncycastle.asn1.x500 X500Name getRDNs

List of usage examples for org.bouncycastle.asn1.x500 X500Name getRDNs

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x500 X500Name getRDNs.

Prototype

public RDN[] getRDNs() 

Source Link

Document

return an array of RDNs in structure order.

Usage

From source file:org.jruby.ext.openssl.X509Extension.java

License:LGPL

@SuppressWarnings("unchecked")
private static boolean formatGeneralName(final GeneralName name, final ByteList out, final boolean slashed) {
    final ASN1Encodable obj = name.getName();
    String val;
    boolean tagged = false;
    switch (name.getTagNo()) {
    case GeneralName.rfc822Name:
        if (!tagged)
            out.append('e').append('m').append('a').append('i').append('l').append(':');
        tagged = true;/*  w  w w.ja v  a 2 s. co  m*/
    case GeneralName.dNSName:
        if (!tagged)
            out.append('D').append('N').append('S').append(':');
        tagged = true;
    case GeneralName.uniformResourceIdentifier:
        if (!tagged)
            out.append('U').append('R').append('I').append(':');
        val = DERIA5String.getInstance(obj).getString();
        out.append(ByteList.plain(val));
        break;
    case GeneralName.directoryName:
        out.append('D').append('i').append('r').append('N').append('a').append('m').append('e').append(':');
        final X500Name dirName = X500Name.getInstance(obj);
        if (slashed) {
            final RDN[] rdns = dirName.getRDNs();
            final Hashtable defaultSymbols = getDefaultSymbols();
            for (int i = 0; i < rdns.length; i++) {
                appendRDN(out.append('/'), rdns[i], defaultSymbols);
            }
        } else {
            out.append(ByteList.plain(dirName.toString()));
        }
        break;
    case GeneralName.iPAddress:
        out.append('I').append('P').append(':');
        final byte[] ip = ((ASN1OctetString) name.getName()).getOctets();
        int len = ip.length;
        boolean ip4 = len == 4;
        for (int i = 0; i < ip.length; i++) {
            out.append(ConvertBytes.intToCharBytes(((int) ip[i]) & 0xff));
            if (i != len - 1) {
                if (ip4)
                    out.append('.');
                else
                    out.append(':').append(':');
            }
        }
        break;
    case GeneralName.otherName:
        out.append('o').append('t').append('h').append('e').append('r').append('N').append('a').append('m')
                .append('e').append(':');
        out.append(ByteList.plain(obj.toString()));
        return true;
    //tagged = true;
    case GeneralName.registeredID:
        out.append('R').append('I').append('D').append(':');
        //tagged = true;
    default:
        out.append(ByteList.plain(obj.toString()));
    }
    return false;
}

From source file:org.kse.gui.dnchooser.DistinguishedNameChooser.java

License:Open Source License

public DistinguishedNameChooser(X500Name dn, boolean editable, String defaultDN) {
    this.editable = editable;
    if (dn == null || dn.getRDNs().length == 0) {
        if (defaultDN == null || defaultDN.isEmpty()) {
            defaultDN = "CN=, OU=, O=, L=, ST=, C=";
        }/*from w  w w.  j  av a  2  s.c  o  m*/
        currentName = new X500Name(KseX500NameStyle.INSTANCE, defaultDN);
    } else {
        this.currentName = dn;
    }
    this.defaultName = defaultDN;
    init();
}

From source file:org.kse.gui.dnchooser.RdnPanelList.java

License:Open Source License

public RdnPanelList(X500Name x500Name, boolean editable) {
    setLayout(new MigLayout("insets dialog, flowy", "[right]", "[]rel[]"));

    // we have to reverse RDN order for dialog
    List<RDN> rdnsAsList = Arrays.asList(x500Name.getRDNs());
    Collections.reverse(rdnsAsList);

    for (RDN rdn : rdnsAsList) {
        this.editable = editable;
        for (AttributeTypeAndValue atav : rdn.getTypesAndValues()) {
            String type = OidDisplayNameMapping.getDisplayNameForOid(atav.getType().getId());
            String value = atav.getValue().toString();
            addItem(new RdnPanel(new JComboBox<Object>(comboBoxEntries), type, value, this, editable));
        }/*  ww w  .jav  a  2  s .c o m*/
    }
}

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

License:Open Source License

@Override
public SubjectInfo getSubject(final X500Name requestedSubject)
        throws CertprofileException, BadCertTemplateException {
    verifySubjectDNOccurence(requestedSubject);
    checkSubjectContent(requestedSubject);

    RDN[] requstedRDNs = requestedSubject.getRDNs();
    Set<RDNControl> controls = getSubjectDNControls();
    List<RDN> rdns = new LinkedList<>();
    List<ASN1ObjectIdentifier> types = backwardsSubject() ? ObjectIdentifiers.getBackwardDNs()
            : ObjectIdentifiers.getForwardDNs();

    for (ASN1ObjectIdentifier type : types) {
        RDNControl control = null;/*from www.jav a2s  .  c o m*/
        if (controls != null) {
            control = getRDNControl(controls, type);
            if (control == null || control.getMaxOccurs() < 1) {
                continue;
            }
        }

        RDN[] thisRDNs = getRDNs(requstedRDNs, type);
        int n = thisRDNs == null ? 0 : thisRDNs.length;
        if (n == 0) {
            continue;
        }

        if (n == 1) {
            String value = X509Util.rdnValueToString(thisRDNs[0].getFirst().getValue());
            rdns.add(createSubjectRDN(value, type, control, 0));
        } else {
            String[] values = new String[n];
            for (int i = 0; i < n; i++) {
                values[i] = X509Util.rdnValueToString(thisRDNs[i].getFirst().getValue());
            }
            values = sortRDNs(type, values);

            int index = 0;
            for (String value : values) {
                rdns.add(createSubjectRDN(value, type, control, index++));
            }
        }
    }

    X500Name grantedSubject = new X500Name(rdns.toArray(new RDN[0]));
    return new SubjectInfo(grantedSubject, null);
}

From source file:org.xipki.ca.certprofile.XmlX509Certprofile.java

License:Open Source License

@Override
public SubjectInfo getSubject(final X500Name requestedSubject)
        throws CertprofileException, BadCertTemplateException {
    verifySubjectDNOccurence(requestedSubject);
    checkSubjectContent(requestedSubject);

    RDN[] requstedRDNs = requestedSubject.getRDNs();
    Set<RDNControl> occurences = getSubjectDNControls();
    List<RDN> rdns = new LinkedList<>();
    List<ASN1ObjectIdentifier> types = backwardsSubject() ? ObjectIdentifiers.getBackwardDNs()
            : ObjectIdentifiers.getForwardDNs();

    for (ASN1ObjectIdentifier type : types) {
        if (Extension.subjectAlternativeName.equals(type) || Extension.subjectInfoAccess.equals(type)) {
            continue;
        }/*from www .j  a  va2 s.  c  o m*/

        RDNControl control = null;
        if (occurences != null) {
            control = getRDNControl(occurences, type);
            if (control == null || control.getMaxOccurs() < 1) {
                continue;
            }
        }

        RDN[] thisRDNs = getRDNs(requstedRDNs, type);
        int n = thisRDNs == null ? 0 : thisRDNs.length;
        if (n == 0) {
            continue;
        }

        if (n == 1) {
            String value = X509Util.rdnValueToString(thisRDNs[0].getFirst().getValue());
            rdns.add(createSubjectRDN(value, type, control, 0));
        } else {
            String[] values = new String[n];
            for (int i = 0; i < n; i++) {
                values[i] = X509Util.rdnValueToString(thisRDNs[i].getFirst().getValue());
            }
            values = sortRDNs(type, values);

            int i = 0;
            for (String value : values) {
                rdns.add(createSubjectRDN(value, type, control, i++));
            }
        }
    }

    X500Name grantedSubject = new X500Name(rdns.toArray(new RDN[0]));
    return new SubjectInfo(grantedSubject, null);
}

From source file:org.xipki.ca.server.impl.RdnUpperBounds.java

License:Open Source License

public static void checkUpperBounds(final X500Name name) throws BadCertTemplateException {
    RDN[] rdns = name.getRDNs();
    for (RDN rdn : rdns) {
        for (AttributeTypeAndValue atv : rdn.getTypesAndValues()) {
            ASN1ObjectIdentifier type = atv.getType();
            if (ubs.containsKey(type) == false) {
                continue;
            }/*from  w  w  w . j  a  va  2  s  . c  o  m*/
            int ub = ubs.get(type);
            String value = X509Util.rdnValueToString(atv.getValue());
            if (value.length() > ub) {
                throw new BadCertTemplateException("attribute " + ObjectIdentifiers.getName(type)
                        + " overrides the upper bound (" + value.length() + " > " + ub + "): '" + value + "'");
            }
        }
    }
}

From source file:org.xipki.ca.server.impl.store.CertStoreQueryExecutor.java

License:Open Source License

String getLatestSN(final X500Name nameWithSN) throws OperationException {
    RDN[] rdns1 = nameWithSN.getRDNs();
    RDN[] rdns2 = new RDN[rdns1.length];
    for (int i = 0; i < rdns1.length; i++) {
        RDN rdn = rdns1[i];/*from  w  w  w. j a  v  a2  s.  com*/
        if (rdn.getFirst().getType().equals(ObjectIdentifiers.DN_SERIALNUMBER)) {
            rdns2[i] = new RDN(ObjectIdentifiers.DN_SERIALNUMBER, new DERPrintableString("%"));
        } else {
            rdns2[i] = rdn;
        }
    }

    String namePattern = X509Util.getRFC4519Name(new X500Name(rdns2));

    final String sql = dataSource.createFetchFirstSelectSQL("SUBJECT FROM CERT WHERE SUBJECT LIKE ?", 1,
            "NOTBEFORE DESC");
    ResultSet rs = null;
    PreparedStatement ps;
    try {
        ps = borrowPreparedStatement(sql);
    } catch (DataAccessException e) {
        throw new OperationException(ErrorCode.DATABASE_FAILURE, e.getMessage());
    }

    try {
        ps.setString(1, namePattern);
        rs = ps.executeQuery();
        if (rs.next()) {
            String str = rs.getString("SUBJECT");
            X500Name lastName = new X500Name(str);
            RDN[] rdns = lastName.getRDNs(ObjectIdentifiers.DN_SERIALNUMBER);
            if (rdns == null || rdns.length == 0) {
                return null;
            } else {
                return X509Util.rdnValueToString(rdns[0].getFirst().getValue());
            }
        }
    } catch (SQLException e) {
        throw new OperationException(ErrorCode.DATABASE_FAILURE, e.getMessage());
    } finally {
        releaseDbResources(ps, rs);
    }

    return null;
}

From source file:org.xipki.ca.server.impl.X509CA.java

License:Open Source License

private static X500Name removeEmptyRDNs(final X500Name name) {
    RDN[] rdns = name.getRDNs();
    List<RDN> l = new ArrayList<RDN>(rdns.length);
    boolean changed = false;
    for (RDN rdn : rdns) {
        String textValue = X509Util.rdnValueToString(rdn.getFirst().getValue());
        if (StringUtil.isBlank(textValue)) {
            changed = true;//from  w w  w . j a  va 2  s  .c  o  m
        } else {
            l.add(rdn);
        }
    }

    if (changed) {
        return new X500Name(l.toArray(new RDN[0]));
    } else {
        return name;
    }
}

From source file:org.xipki.ca.server.impl.X509CA.java

License:Open Source License

private static Object[] incSerialNumber(final IdentifiedX509Certprofile profile, final X500Name origName,
        final String latestSN) throws BadFormatException {
    RDN[] rdns = origName.getRDNs();

    int commonNameIndex = -1;
    int serialNumberIndex = -1;
    for (int i = 0; i < rdns.length; i++) {
        RDN rdn = rdns[i];//from w  w w .  ja  v  a2  s  .c o m
        ASN1ObjectIdentifier type = rdn.getFirst().getType();
        if (ObjectIdentifiers.DN_CN.equals(type)) {
            commonNameIndex = i;
        } else if (ObjectIdentifiers.DN_SERIALNUMBER.equals(type)) {
            serialNumberIndex = i;
        }
    }

    String newSerialNumber = profile.incSerialNumber(latestSN);
    RDN serialNumberRdn = new RDN(ObjectIdentifiers.DN_SERIALNUMBER, new DERPrintableString(newSerialNumber));

    X500Name newName;
    if (serialNumberIndex != -1) {
        rdns[serialNumberIndex] = serialNumberRdn;
        newName = new X500Name(rdns);
    } else {
        List<RDN> newRdns = new ArrayList<>(rdns.length + 1);

        if (commonNameIndex == -1) {
            newRdns.add(serialNumberRdn);
        }

        for (int i = 0; i < rdns.length; i++) {
            newRdns.add(rdns[i]);
            if (i == commonNameIndex) {
                newRdns.add(serialNumberRdn);
            }
        }

        newName = new X500Name(newRdns.toArray(new RDN[0]));
    }

    return new Object[] { newName, newSerialNumber };
}

From source file:org.xipki.common.util.X509Util.java

License:Open Source License

public static X500Name reverse(final X500Name name) {
    RDN[] orig = name.getRDNs();
    int n = orig.length;
    RDN[] _new = new RDN[n];
    for (int i = 0; i < n; i++) {
        _new[i] = orig[n - 1 - i];
    }/*ww  w .j av a  2s.  c om*/
    return new X500Name(_new);
}