in httpclient5/src/main/java/org/apache/hc/client5/http/ssl/DefaultHostnameVerifier.java [303:334]
static List<SubjectName> getSubjectAltNames(final X509Certificate cert, final int subjectName) {
try {
final Collection<List<?>> entries = cert.getSubjectAlternativeNames();
if (entries == null) {
return Collections.emptyList();
}
final List<SubjectName> result = new ArrayList<>();
for (final List<?> entry : entries) {
final Integer type = entry.size() >= 2 ? (Integer) entry.get(0) : null;
if (type != null) {
if (type == subjectName || -1 == subjectName) {
final Object o = entry.get(1);
if (o instanceof String) {
result.add(new SubjectName((String) o, type));
} else if (o instanceof byte[]) {
final byte[] bytes = (byte[]) o;
if (type == SubjectName.IP) {
if (bytes.length == 4) {
result.add(new SubjectName(byteArrayToIp(bytes), type)); // IPv4
} else if (bytes.length == 16) {
result.add(new SubjectName(byteArrayToIPv6(bytes), type)); // IPv6
}
}
}
}
}
}
return result;
} catch (final CertificateParsingException ignore) {
return Collections.emptyList();
}
}