diff options
| author | 2012-08-08 14:49:29 -0700 | |
|---|---|---|
| committer | 2012-08-08 14:49:30 -0700 | |
| commit | 6ab4511aa61f48cd2b4fe0444077d78cd404bab7 (patch) | |
| tree | 3a777d9bf9060249aeac8488a2370c88513a8b19 | |
| parent | 603af61a7cd49f214743b286520419a3fe460774 (diff) | |
| parent | 54e03afcfe34e9875efa56650c1af3ebc8f58a89 (diff) | |
Merge "Use TrustedCertificateStore for chain building" into jb-mr1-dev
| -rw-r--r-- | keystore/java/android/security/KeyChain.java | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index 483ccb258f1e..31c38d58febf 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -26,20 +26,16 @@ import android.os.Looper; import android.os.RemoteException; import java.io.ByteArrayInputStream; import java.io.Closeable; -import java.io.IOException; import java.security.InvalidKeyException; -import java.security.KeyPair; import java.security.Principal; import java.security.PrivateKey; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; -import libcore.util.Objects; import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine; import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore; @@ -341,20 +337,9 @@ public final class KeyChain { try { IKeyChainService keyChainService = keyChainConnection.getService(); byte[] certificateBytes = keyChainService.getCertificate(alias); - List<X509Certificate> chain = new ArrayList<X509Certificate>(); - chain.add(toCertificate(certificateBytes)); TrustedCertificateStore store = new TrustedCertificateStore(); - for (int i = 0; true; i++) { - X509Certificate cert = chain.get(i); - if (Objects.equal(cert.getSubjectX500Principal(), cert.getIssuerX500Principal())) { - break; - } - X509Certificate issuer = store.findIssuer(cert); - if (issuer == null) { - break; - } - chain.add(issuer); - } + List<X509Certificate> chain = store + .getCertificateChain(toCertificate(certificateBytes)); return chain.toArray(new X509Certificate[chain.size()]); } catch (RemoteException e) { throw new KeyChainException(e); |