From 6309c61d337d0a800015688686bd65e74ca533d9 Mon Sep 17 00:00:00 2001 From: Adam Vartanian Date: Fri, 27 Jul 2018 10:35:14 +0100 Subject: [PATCH] Add getter for X509 certificate Users have requested access to the underlying certificate, which is usually available (as all non-deprecated constructors set it) and can give access to additional properties that are useful to developers, allow them to validate it with an X509TrustManager, or otherwise use it with APIs that take an X509Certificate object. Bug: 111696337 Bug: 36984840 Test: cts -m CtsNetTestCases -t android.net.http Change-Id: I6aebaa38fad683e09e095e5b5e2f3424694ec426 --- api/current.txt | 1 + core/java/android/net/http/SslCertificate.java | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/api/current.txt b/api/current.txt index 5d7b8c8eb107b..d780177ec08c0 100644 --- a/api/current.txt +++ b/api/current.txt @@ -26412,6 +26412,7 @@ package android.net.http { method public java.util.Date getValidNotAfterDate(); method public deprecated java.lang.String getValidNotBefore(); method public java.util.Date getValidNotBeforeDate(); + method public java.security.cert.X509Certificate getX509Certificate(); method public static android.net.http.SslCertificate restoreState(android.os.Bundle); method public static android.os.Bundle saveState(android.net.http.SslCertificate); } diff --git a/core/java/android/net/http/SslCertificate.java b/core/java/android/net/http/SslCertificate.java index 4c0f4181e83f3..21ada363b3eaa 100644 --- a/core/java/android/net/http/SslCertificate.java +++ b/core/java/android/net/http/SslCertificate.java @@ -16,8 +16,6 @@ package android.net.http; -import com.android.internal.util.HexDump; - import android.content.Context; import android.os.Bundle; import android.text.format.DateFormat; @@ -25,6 +23,9 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; +import com.android.internal.util.HexDump; +import com.android.org.bouncycastle.asn1.x509.X509Name; + import java.io.ByteArrayInputStream; import java.math.BigInteger; import java.security.MessageDigest; @@ -39,8 +40,6 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Vector; -import com.android.org.bouncycastle.asn1.x509.X509Name; - /** * SSL certificate info (certificate details) class */ @@ -247,6 +246,14 @@ public class SslCertificate { return mIssuedBy; } + /** + * @return The {@code X509Certificate} used to create this {@code SslCertificate} or + * {@code null} if no certificate was provided. + */ + public X509Certificate getX509Certificate() { + return mX509Certificate; + } + /** * Convenience for UI presentation, not intended as public API. */