/** * Gets the common name attribute (CN) of the certificate subject distinguished name. * * @param cert Certificate to examine. * * @return Subject CN or null if no CN attribute is defined in the subject DN. * * @throws EncodingException on cert field extraction. */ public static String subjectCN(final X509Certificate cert) throws EncodingException { return new NameReader(cert).readSubject().getValue(StandardAttributeType.CommonName); }
/** * Reads the subject field from the certificate. * * @return Subject DN as an RDN sequence. */ public RDNSequence readSubject() { return readX500Principal(certificate.getSubjectX500Principal()); }
@Override protected String resolvePrincipalInternal(final X509Certificate certificate) { LOGGER.debug("Resolving principal for [{}]", certificate); val sb = new StringBuffer(); val m = ATTR_PATTERN.matcher(this.descriptor); val attrMap = new HashMap<String, AttributeContext>(); val rdnSequence = new NameReader(certificate).readSubject(); while (m.find()) { val name = m.group(1); if (!attrMap.containsKey(name)) { val values = getAttributeValues(rdnSequence, StandardAttributeType.fromName(name)); attrMap.put(name, new AttributeContext(values)); } val context = attrMap.get(name); m.appendReplacement(sb, context.nextValue()); } m.appendTail(sb); return sb.toString(); }
/** * Reads the issuer field from the certificate. * * @return Issuer DN as an RDN sequence. */ public RDNSequence readIssuer() { return readX500Principal(certificate.getIssuerX500Principal()); }
final Matcher m = ATTR_PATTERN.matcher(this.descriptor); final Map<String, AttributeContext> attrMap = new HashMap<>(); final RDNSequence rdnSequence = new NameReader(certificate).readSubject(); String name; String[] values;
@Override public String format(final X500Principal dn) { final StringBuilder builder = new StringBuilder(); final RDNSequence sequence = NameReader.readX500Principal(dn); int i = 0; for (RDN rdn : sequence.backward()) { if (i++ > 0) { builder.append(RDN_SEPARATOR); } int j = 0; for (Attribute attr : rdn.getAttributes()) { if (j++ > 0) { builder.append(ATV_SEPARATOR); } builder.append(attr.getType()).append('='); final AttributeType type = attr.getType(); if (type instanceof StandardAttributeType) { escape(attr.getValue(), builder); } else { encode(attr.getValue(), builder); } } } return builder.toString(); }
final RDNSequence dnAttrs = NameReader.readX500Principal(x500Principal); for (final String oid : objectIds) { final String rdn = findRDN(dnAttrs, oid);