Always parse certificate subject to extract email addresses

This commit is contained in:
M66B
2020-04-12 11:33:39 +02:00
parent fe86c5ff45
commit 317221939e
3 changed files with 34 additions and 29 deletions

View File

@@ -84,7 +84,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.security.Principal;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
@@ -1101,29 +1100,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
}
String fingerprint = EntityCertificate.getFingerprint(cert);
List<String> emails = EntityCertificate.getAltSubjectName(cert);
if (emails.size() == 0) {
Principal principal = cert.getSubjectDN();
if (principal != null) {
String subject = principal.getName();
if (subject != null) {
Log.i("Parsing subject=" + subject);
for (String p : subject.split(",")) {
String[] kv = p.split("=");
if (kv.length == 2) {
String key = kv[0].trim();
String value = kv[1].trim().toLowerCase();
if (Helper.EMAIL_ADDRESS.matcher(value).matches() &&
("CN".equalsIgnoreCase(key) ||
"emailAddress".equalsIgnoreCase(key))) {
if (!emails.contains(value))
emails.add(value);
}
}
}
}
}
}
List<String> emails = EntityCertificate.getEmailAddresses(cert);
if (emails.size() == 0)
throw new IllegalArgumentException("No email address found in key");