Skip to content

Commit 0efca17

Browse files
committed
Tracking upgrade to bouncycastle 1.47
Change-Id: I4a3c508c5e65dd46a2df22935b5351092550fad5
1 parent bd0fe87 commit 0efca17

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

core/java/android/webkit/CertTool.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package android.webkit;
1818

19+
import com.android.org.bouncycastle.asn1.ASN1Encoding;
1920
import com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
2021
import com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier;
2122
import com.android.org.bouncycastle.jce.netscape.NetscapeCertRequest;
@@ -57,7 +58,7 @@ static String getSignedPublicKey(Context context, int index, String challenge) {
5758
NetscapeCertRequest request = new NetscapeCertRequest(challenge,
5859
MD5_WITH_RSA, pair.getPublic());
5960
request.sign(pair.getPrivate());
60-
byte[] signed = request.toASN1Object().getDEREncoded();
61+
byte[] signed = request.toASN1Primitive().getEncoded(ASN1Encoding.DER);
6162

6263
Credentials.getInstance().install(context, pair);
6364
return new String(Base64.encode(signed));

keystore/java/android/security/Credentials.java

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
import android.content.Context;
2121
import android.content.Intent;
2222
import android.util.Log;
23-
import com.android.org.bouncycastle.openssl.PEMReader;
24-
import com.android.org.bouncycastle.openssl.PEMWriter;
23+
import com.android.org.bouncycastle.util.io.pem.PemObject;
24+
import com.android.org.bouncycastle.util.io.pem.PemReader;
25+
import com.android.org.bouncycastle.util.io.pem.PemWriter;
2526
import java.io.ByteArrayInputStream;
2627
import java.io.ByteArrayOutputStream;
2728
import java.io.IOException;
@@ -32,6 +33,10 @@
3233
import java.io.Writer;
3334
import java.nio.charset.Charsets;
3435
import java.security.KeyPair;
36+
import java.security.cert.Certificate;
37+
import java.security.cert.CertificateEncodingException;
38+
import java.security.cert.CertificateException;
39+
import java.security.cert.CertificateFactory;
3540
import java.security.cert.X509Certificate;
3641
import java.util.ArrayList;
3742
import java.util.List;
@@ -108,34 +113,41 @@ public class Credentials {
108113
public static final String EXTRA_CA_CERTIFICATES_DATA = "ca_certificates_data";
109114

110115
/**
111-
* Convert objects to a PEM format, which is used for
112-
* CA_CERTIFICATE, USER_CERTIFICATE, and USER_PRIVATE_KEY
113-
* entries.
116+
* Convert objects to a PEM format which is used for
117+
* CA_CERTIFICATE and USER_CERTIFICATE entries.
114118
*/
115-
public static byte[] convertToPem(Object... objects) throws IOException {
119+
public static byte[] convertToPem(Certificate... objects)
120+
throws IOException, CertificateEncodingException {
116121
ByteArrayOutputStream bao = new ByteArrayOutputStream();
117122
Writer writer = new OutputStreamWriter(bao, Charsets.US_ASCII);
118-
PEMWriter pw = new PEMWriter(writer);
119-
for (Object o : objects) {
120-
pw.writeObject(o);
123+
PemWriter pw = new PemWriter(writer);
124+
for (Certificate o : objects) {
125+
pw.writeObject(new PemObject("CERTIFICATE", o.getEncoded()));
121126
}
122127
pw.close();
123128
return bao.toByteArray();
124129
}
125130
/**
126131
* Convert objects from PEM format, which is used for
127-
* CA_CERTIFICATE, USER_CERTIFICATE, and USER_PRIVATE_KEY
128-
* entries.
132+
* CA_CERTIFICATE and USER_CERTIFICATE entries.
129133
*/
130-
public static List<Object> convertFromPem(byte[] bytes) throws IOException {
134+
public static List<X509Certificate> convertFromPem(byte[] bytes)
135+
throws IOException, CertificateException {
131136
ByteArrayInputStream bai = new ByteArrayInputStream(bytes);
132137
Reader reader = new InputStreamReader(bai, Charsets.US_ASCII);
133-
PEMReader pr = new PEMReader(reader);
134-
135-
List<Object> result = new ArrayList<Object>();
136-
Object o;
137-
while ((o = pr.readObject()) != null) {
138-
result.add(o);
138+
PemReader pr = new PemReader(reader);
139+
140+
CertificateFactory cf = CertificateFactory.getInstance("X509");
141+
142+
List<X509Certificate> result = new ArrayList<X509Certificate>();
143+
PemObject o;
144+
while ((o = pr.readPemObject()) != null) {
145+
if (o.getType().equals("CERTIFICATE")) {
146+
Certificate c = cf.generateCertificate(new ByteArrayInputStream(o.getContent()));
147+
result.add((X509Certificate) c);
148+
} else {
149+
throw new IllegalArgumentException("Unknown type " + o.getType());
150+
}
139151
}
140152
pr.close();
141153
return result;

0 commit comments

Comments
 (0)