List of usage examples for org.bouncycastle.asn1.x500 X500Name getRDNs
public RDN[] getRDNs()
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); }