Prevent storing known root certificates

master
M66B 2 weeks ago
parent e739ecdb70
commit 6f1867e47a

@ -234,6 +234,11 @@ public class EntityCertificate {
return certificate.getSubjectX500Principal().getName(X500Principal.RFC2253); return certificate.getSubjectX500Principal().getName(X500Principal.RFC2253);
} }
static boolean sameCaKey(X509Certificate a, X509Certificate b) {
return (a.getSubjectX500Principal().equals(b.getSubjectX500Principal()) &&
Arrays.equals(a.getPublicKey().getEncoded(), b.getPublicKey().getEncoded()));
}
static List<String> getEmailAddresses(X509Certificate certificate) { static List<String> getEmailAddresses(X509Certificate certificate) {
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();

@ -232,6 +232,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -10488,11 +10489,23 @@ public class FragmentMessages extends FragmentBase
boolean found = false; boolean found = false;
String issuer = (c.getIssuerDN() == null ? "" : c.getIssuerDN().getName()); String issuer = (c.getIssuerDN() == null ? "" : c.getIssuerDN().getName());
EntityCertificate record = EntityCertificate.from(c, true, issuer); EntityCertificate record = EntityCertificate.from(c, true, issuer);
for (EntityCertificate ec : ecs)
if (ec.fingerprint.equals(record.fingerprint)) { Enumeration<String> aliases = ks.aliases();
found = true; while (aliases.hasMoreElements()) {
break; Certificate certificate = ks.getCertificate(aliases.nextElement());
} if (certificate instanceof X509Certificate)
if (EntityCertificate.sameCaKey(c, (X509Certificate) certificate)) {
found = true;
break;
}
}
if (!found)
for (EntityCertificate ec : ecs)
if (ec.fingerprint.equals(record.fingerprint)) {
found = true;
break;
}
if (!found) { if (!found) {
Log.i("Storing certificate subject=" + record.subject); Log.i("Storing certificate subject=" + record.subject);

Loading…
Cancel
Save