use of org.openecard.bouncycastle.asn1.x500.AttributeTypeAndValue in project nifi-registry by apache.
the class CertificateUtils method reorderDn.
/**
* Reorders DN to the order the elements appear in the RFC 2253 table
*
* https://www.ietf.org/rfc/rfc2253.txt
*
* String X.500 AttributeType
* ------------------------------
* CN commonName
* L localityName
* ST stateOrProvinceName
* O organizationName
* OU organizationalUnitName
* C countryName
* STREET streetAddress
* DC domainComponent
* UID userid
*
* @param dn a possibly unordered DN
* @return the ordered dn
*/
public static String reorderDn(String dn) {
RDN[] rdNs = new X500Name(dn).getRDNs();
Arrays.sort(rdNs, new Comparator<RDN>() {
@Override
public int compare(RDN o1, RDN o2) {
AttributeTypeAndValue o1First = o1.getFirst();
AttributeTypeAndValue o2First = o2.getFirst();
ASN1ObjectIdentifier o1Type = o1First.getType();
ASN1ObjectIdentifier o2Type = o2First.getType();
Integer o1Rank = dnOrderMap.get(o1Type);
Integer o2Rank = dnOrderMap.get(o2Type);
if (o1Rank == null) {
if (o2Rank == null) {
int idComparison = o1Type.getId().compareTo(o2Type.getId());
if (idComparison != 0) {
return idComparison;
}
return String.valueOf(o1Type).compareTo(String.valueOf(o2Type));
}
return 1;
} else if (o2Rank == null) {
return -1;
}
return o1Rank - o2Rank;
}
});
return new X500Name(rdNs).toString();
}
use of org.openecard.bouncycastle.asn1.x500.AttributeTypeAndValue in project open-ecard by ecsec.
the class ListCertificates method matchesRdn.
private boolean matchesRdn(Pattern searchPattern, X500Name name, ASN1ObjectIdentifier rdnIdentifier) {
RDN[] rdns = name.getRDNs(rdnIdentifier);
if (rdns.length >= 1) {
// only compare first as everything else would be non standard in X509 certs
AttributeTypeAndValue rdnAttr = rdns[0].getFirst();
ASN1String attrStr = (ASN1String) rdnAttr.getValue().toASN1Primitive();
String rdnStr = attrStr.getString();
return searchPattern.matcher(rdnStr).matches();
} else {
return false;
}
}
Aggregations