Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d92314e authored by Chad Brubaker's avatar Chad Brubaker Committed by android-build-merger
Browse files

Merge "Expose findByIssuerAndSignature" am: b27d8209

am: f1870eee

* commit 'f1870eee':
  Expose findByIssuerAndSignature
parents 98cb23dc f1870eee
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23,4 +23,5 @@ import java.security.cert.X509Certificate;
public interface CertificateSource {
    Set<X509Certificate> getCertificates();
    X509Certificate findBySubjectAndPublicKey(X509Certificate cert);
    X509Certificate findByIssuerAndSignature(X509Certificate cert);
}
+9 −0
Original line number Diff line number Diff line
@@ -51,4 +51,13 @@ public final class CertificatesEntryRef {

        return new TrustAnchor(foundCert, mOverridesPins);
    }

    public TrustAnchor findByIssuerAndSignature(X509Certificate cert) {
        X509Certificate foundCert = mSource.findByIssuerAndSignature(cert);
        if (foundCert == null) {
            return null;
        }

        return new TrustAnchor(foundCert, mOverridesPins);
    }
}
+15 −0
Original line number Diff line number Diff line
@@ -95,6 +95,21 @@ abstract class DirectoryCertificateSource implements CertificateSource {
        });
    }

    @Override
    public X509Certificate findByIssuerAndSignature(final X509Certificate cert) {
        return findCert(cert.getIssuerX500Principal(), new CertSelector() {
            @Override
            public boolean match(X509Certificate ca) {
                try {
                    cert.verify(ca.getPublicKey());
                    return true;
                } catch (Exception e) {
                    return false;
                }
            }
        });
    }

    private static interface CertSelector {
        boolean match(X509Certificate cert);
    }
+10 −0
Original line number Diff line number Diff line
@@ -80,4 +80,14 @@ class KeyStoreCertificateSource implements CertificateSource {
        }
        return anchor.getTrustedCert();
    }

    @Override
    public X509Certificate findByIssuerAndSignature(X509Certificate cert) {
        ensureInitialized();
        java.security.cert.TrustAnchor anchor = mIndex.findByIssuerAndSignature(cert);
        if (anchor == null) {
            return null;
        }
        return anchor.getTrustedCert();
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -134,6 +134,17 @@ public final class NetworkSecurityConfig {
        return null;
    }

    /** @hide */
    public TrustAnchor findTrustAnchorByIssuerAndSignature(X509Certificate cert) {
        for (CertificatesEntryRef ref : mCertificatesEntryRefs) {
            TrustAnchor anchor = ref.findByIssuerAndSignature(cert);
            if (anchor != null) {
                return anchor;
            }
        }
        return null;
    }

    /**
     * Return a {@link Builder} for the default {@code NetworkSecurityConfig}.
     *
Loading