Skip to content

Commit 54e03af

Browse files
committed
Use TrustedCertificateStore for chain building
Move chain building to TrustedCertificateStore since it has more information about the certificates. Change-Id: I3030e94eb1abb8a2047a4151bdaad9922706dd0f
1 parent bec1d13 commit 54e03af

File tree

1 file changed

+2
-17
lines changed

1 file changed

+2
-17
lines changed

keystore/java/android/security/KeyChain.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,16 @@
2626
import android.os.RemoteException;
2727
import java.io.ByteArrayInputStream;
2828
import java.io.Closeable;
29-
import java.io.IOException;
3029
import java.security.InvalidKeyException;
31-
import java.security.KeyPair;
3230
import java.security.Principal;
3331
import java.security.PrivateKey;
3432
import java.security.cert.Certificate;
3533
import java.security.cert.CertificateException;
3634
import java.security.cert.CertificateFactory;
3735
import java.security.cert.X509Certificate;
38-
import java.util.ArrayList;
3936
import java.util.List;
4037
import java.util.concurrent.BlockingQueue;
4138
import java.util.concurrent.LinkedBlockingQueue;
42-
import libcore.util.Objects;
4339

4440
import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
4541
import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore;
@@ -341,20 +337,9 @@ public static X509Certificate[] getCertificateChain(Context context, String alia
341337
try {
342338
IKeyChainService keyChainService = keyChainConnection.getService();
343339
byte[] certificateBytes = keyChainService.getCertificate(alias);
344-
List<X509Certificate> chain = new ArrayList<X509Certificate>();
345-
chain.add(toCertificate(certificateBytes));
346340
TrustedCertificateStore store = new TrustedCertificateStore();
347-
for (int i = 0; true; i++) {
348-
X509Certificate cert = chain.get(i);
349-
if (Objects.equal(cert.getSubjectX500Principal(), cert.getIssuerX500Principal())) {
350-
break;
351-
}
352-
X509Certificate issuer = store.findIssuer(cert);
353-
if (issuer == null) {
354-
break;
355-
}
356-
chain.add(issuer);
357-
}
341+
List<X509Certificate> chain = store
342+
.getCertificateChain(toCertificate(certificateBytes));
358343
return chain.toArray(new X509Certificate[chain.size()]);
359344
} catch (RemoteException e) {
360345
throw new KeyChainException(e);

0 commit comments

Comments
 (0)