List of usage examples for org.bouncycastle.asn1.x500 RDN RDN
public RDN(AttributeTypeAndValue[] aAndVs)
From source file:org.kse.gui.dnchooser.RdnPanelList.java
License:Open Source License
public List<RDN> getRdns(boolean noEmptyRdns) { List<RDN> rdns = new ArrayList<RDN>(); for (RdnPanel rdnPanel : entries) { ASN1ObjectIdentifier attrType = OidDisplayNameMapping.getOidForDisplayName(rdnPanel.getAttributeName()); if (noEmptyRdns && StringUtils.trimAndConvertEmptyToNull(rdnPanel.getAttributeValue()) == null) { continue; }// w ww . j av a2 s . c o m ASN1Encodable attrValue = KseX500NameStyle.INSTANCE.stringToValue(attrType, rdnPanel.getAttributeValue()); rdns.add(new RDN(new AttributeTypeAndValue(attrType, attrValue))); } return rdns; }
From source file:org.xipki.pki.ca.api.profile.x509.BaseX509Certprofile.java
License:Open Source License
@Override public SubjectInfo getSubject(final X500Name requestedSubject) throws CertprofileException, BadCertTemplateException { ParamUtil.requireNonNull("requestedSubject", requestedSubject); verifySubjectDnOccurence(requestedSubject); RDN[] requstedRdns = requestedSubject.getRDNs(); SubjectControl scontrol = getSubjectControl(); List<RDN> rdns = new LinkedList<>(); for (ASN1ObjectIdentifier type : scontrol.getTypes()) { RdnControl control = scontrol.getControl(type); if (control == null) { continue; }// w w w .java2 s . c o m RDN[] thisRdns = getRdns(requstedRdns, type); if (thisRdns == null) { continue; } int len = thisRdns.length; if (len == 0) { continue; } if (ObjectIdentifiers.DN_EmailAddress.equals(type)) { throw new BadCertTemplateException("emailAddress is not allowed"); } if (len == 1) { ASN1Encodable rdnValue = thisRdns[0].getFirst().getValue(); RDN rdn; if (ObjectIdentifiers.DN_DATE_OF_BIRTH.equals(type)) { rdn = createDateOfBirthRdn(type, rdnValue); } else if (ObjectIdentifiers.DN_POSTAL_ADDRESS.equals(type)) { rdn = createPostalAddressRdn(type, rdnValue, control, 0); } else { String value = X509Util.rdnValueToString(rdnValue); rdn = createSubjectRdn(value, type, control, 0); } if (rdn != null) { rdns.add(rdn); } } else { if (ObjectIdentifiers.DN_DATE_OF_BIRTH.equals(type)) { for (int i = 0; i < len; i++) { RDN rdn = createDateOfBirthRdn(type, thisRdns[i].getFirst().getValue()); rdns.add(rdn); } } else if (ObjectIdentifiers.DN_POSTAL_ADDRESS.equals(type)) { for (int i = 0; i < len; i++) { RDN rdn = createPostalAddressRdn(type, thisRdns[i].getFirst().getValue(), control, i); rdns.add(rdn); } } else { String[] values = new String[len]; for (int i = 0; i < len; i++) { values[i] = X509Util.rdnValueToString(thisRdns[i].getFirst().getValue()); } values = sortRdns(control, values); int idx = 0; for (String value : values) { rdns.add(createSubjectRdn(value, type, control, idx++)); } } // if } // if } // for Set<String> subjectDnGroups = scontrol.getGroups(); if (CollectionUtil.isNonEmpty(subjectDnGroups)) { Set<String> consideredGroups = new HashSet<>(); final int n = rdns.size(); List<RDN> newRdns = new ArrayList<>(rdns.size()); for (int i = 0; i < n; i++) { RDN rdn = rdns.get(i); ASN1ObjectIdentifier type = rdn.getFirst().getType(); String group = scontrol.getGroup(type); if (group == null) { newRdns.add(rdn); } else if (!consideredGroups.contains(group)) { List<AttributeTypeAndValue> atvs = new LinkedList<>(); atvs.add(rdn.getFirst()); for (int j = i + 1; j < n; j++) { RDN rdn2 = rdns.get(j); ASN1ObjectIdentifier type2 = rdn2.getFirst().getType(); String group2 = scontrol.getGroup(type2); if (group.equals(group2)) { atvs.add(rdn2.getFirst()); } } newRdns.add(new RDN(atvs.toArray(new AttributeTypeAndValue[0]))); consideredGroups.add(group); } } // for rdns = newRdns; } // if X500Name grantedSubject = new X500Name(rdns.toArray(new RDN[0])); return new SubjectInfo(grantedSubject, null); }