blob: a22ef4d654b36bddfc8207a71aec09da17ad1aa0 [file] [log] [blame]
Kenny Root5db505e2013-12-11 16:35:05 -08001diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk15on-150/org/bouncycastle/asn1/ASN1Null.java
2--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/ASN1Null.java 2013-12-03 20:18:20.000000000 +0000
3+++ bcprov-jdk15on-150/org/bouncycastle/asn1/ASN1Null.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -08004@@ -11,9 +11,11 @@
5 /**
6 * @deprecated use DERNull.INSTANCE
7 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008- public ASN1Null()
9+ // BEGIN android-changed
10+ /*package*/ ASN1Null()
11 {
12 }
13+ // END android-changed
14
15 public static ASN1Null getInstance(Object o)
16 {
Kenny Root5db505e2013-12-11 16:35:05 -080017diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERBoolean.java
18--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERBoolean.java 2013-12-03 20:18:20.000000000 +0000
19+++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERBoolean.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070020@@ -10,7 +10,9 @@
21 private static final byte[] TRUE_VALUE = new byte[] { (byte)0xff };
22 private static final byte[] FALSE_VALUE = new byte[] { 0 };
23
24- private byte[] value;
25+ // BEGIN android-changed
26+ final private byte[] value;
27+ // END android-changed
28
29 public static final ASN1Boolean FALSE = new ASN1Boolean(false);
30 public static final ASN1Boolean TRUE = new ASN1Boolean(true);
Brian Carlstrome1142c12013-01-30 18:26:40 -080031@@ -55,6 +57,17 @@
32 return (value != 0 ? TRUE : FALSE);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070033 }
34
35+ // BEGIN android-added
36+ /**
37+ * return a DERBoolean from the passed in array.
38+ */
39+ public static DERBoolean getInstance(
40+ byte[] octets)
41+ {
42+ return (octets[0] != 0) ? TRUE : FALSE;
43+ }
44+
45+ // END android-added
46 /**
47 * return a Boolean from a tagged object.
48 *
Brian Carlstrome1142c12013-01-30 18:26:40 -080049@@ -80,7 +93,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070050 }
51 }
52
53- DERBoolean(
54+ // BEGIN android-changed
55+ protected DERBoolean(
56+ // END android-changed
57 byte[] value)
58 {
59 if (value.length != 1)
Brian Carlstrome1142c12013-01-30 18:26:40 -080060@@ -106,8 +121,10 @@
61 * @deprecated use getInstance(boolean) method.
62 * @param value
63 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070064- public DERBoolean(
65+ // BEGIN android-changed
66+ protected DERBoolean(
67 boolean value)
68+ // END android-changed
69 {
70 this.value = (value) ? TRUE_VALUE : FALSE_VALUE;
71 }
Kenny Root5db505e2013-12-11 16:35:05 -080072diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERNull.java
73--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERNull.java 2013-12-03 20:18:20.000000000 +0000
74+++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERNull.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -080075@@ -15,7 +15,9 @@
76 /**
77 * @deprecated use DERNull.INSTANCE
78 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070079- public DERNull()
80+ // BEGIN android-changed
81+ protected DERNull()
82+ // END android-changed
83 {
84 }
85
Kenny Root5db505e2013-12-11 16:35:05 -080086diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERObjectIdentifier.java
87--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-12-03 20:18:20.000000000 +0000
88+++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-12-12 00:35:05.000000000 +0000
89@@ -162,7 +162,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -070090 }
91 }
92
93- this.identifier = objId.toString();
94+ // BEGIN android-changed
95+ /*
96+ * Intern the identifier so there aren't hundreds of duplicates
97+ * (in practice).
98+ */
99+ this.identifier = objId.toString().intern();
100+ // END android-changed
Brian Carlstrome1142c12013-01-30 18:26:40 -0800101 this.body = Arrays.clone(bytes);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700102 }
103
Kenny Root5db505e2013-12-11 16:35:05 -0800104@@ -181,7 +187,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700105 throw new IllegalArgumentException("string " + identifier + " not an OID");
106 }
107
108- this.identifier = identifier;
109+ // BEGIN android-changed
110+ /*
111+ * Intern the identifier so there aren't hundreds of duplicates
112+ * (in practice).
113+ */
114+ this.identifier = identifier.intern();
115+ // END android-changed
116 }
117
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700118 DERObjectIdentifier(DERObjectIdentifier oid, String branchID)
Kenny Root5db505e2013-12-11 16:35:05 -0800119diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERPrintableString.java
120--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERPrintableString.java 2013-12-03 20:18:20.000000000 +0000
121+++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERPrintableString.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700122@@ -12,7 +12,9 @@
123 extends ASN1Primitive
124 implements ASN1String
125 {
126- private byte[] string;
127+ // BEGIN android-changed
128+ private final byte[] string;
129+ // END android-changed
130
131 /**
132 * return a printable string from the passed in object.
Kenny Rootebe71112014-05-05 10:17:14 -0700133diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/StreamUtil.java bcprov-jdk15on-150/org/bouncycastle/asn1/StreamUtil.java
134--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/StreamUtil.java 2013-12-03 20:18:20.000000000 +0000
135+++ bcprov-jdk15on-150/org/bouncycastle/asn1/StreamUtil.java 2014-05-05 17:17:14.000000000 +0000
136@@ -8,7 +8,9 @@
137
138 class StreamUtil
139 {
140- private static final long MAX_MEMORY = Runtime.getRuntime().maxMemory();
141+ // BEGIN android-removed
142+ // private static final long MAX_MEMORY = Runtime.getRuntime().maxMemory();
143+ // END android-removed
144
145 /**
146 * Find out possible longest length...
147@@ -48,12 +50,15 @@
148 }
149 }
150
151- if (MAX_MEMORY > Integer.MAX_VALUE)
152+ // BEGIN android-changed
153+ long maxMemory = Runtime.getRuntime().maxMemory();
154+ if (maxMemory > Integer.MAX_VALUE)
155 {
156 return Integer.MAX_VALUE;
157 }
158
159- return (int)MAX_MEMORY;
160+ return (int) maxMemory;
161+ // END android-changed
162 }
163
164 static int calculateBodyLength(
Kenny Root5db505e2013-12-11 16:35:05 -0800165diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk15on-150/org/bouncycastle/asn1/cms/ContentInfo.java
166--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/cms/ContentInfo.java 2013-12-03 20:18:20.000000000 +0000
167+++ bcprov-jdk15on-150/org/bouncycastle/asn1/cms/ContentInfo.java 2013-12-12 00:35:05.000000000 +0000
168@@ -28,7 +28,9 @@
169 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700170 public class ContentInfo
171 extends ASN1Object
172- implements CMSObjectIdentifiers
173+ // BEGIN android-removed
174+ // implements CMSObjectIdentifiers
175+ // END android-removed
176 {
177 private ASN1ObjectIdentifier contentType;
178 private ASN1Encodable content;
Kenny Root5db505e2013-12-11 16:35:05 -0800179diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk15on-150/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
180--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-12-03 20:18:20.000000000 +0000
181+++ bcprov-jdk15on-150/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-12-12 00:35:05.000000000 +0000
182@@ -13,10 +13,12 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700183 static final ASN1ObjectIdentifier pkcs_1 = new ASN1ObjectIdentifier("1.2.840.113549.1.1");
Kenny Root5db505e2013-12-11 16:35:05 -0800184 /** PKCS#1: 1.2.840.113549.1.1.1 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700185 static final ASN1ObjectIdentifier rsaEncryption = pkcs_1.branch("1");
Kenny Root5db505e2013-12-11 16:35:05 -0800186- /** PKCS#1: 1.2.840.113549.1.1.2 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700187- static final ASN1ObjectIdentifier md2WithRSAEncryption = pkcs_1.branch("2");
Kenny Root5db505e2013-12-11 16:35:05 -0800188- /** PKCS#1: 1.2.840.113549.1.1.3 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700189- static final ASN1ObjectIdentifier md4WithRSAEncryption = pkcs_1.branch("3");
190+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -0800191+ // /** PKCS#1: 1.2.840.113549.1.1.2 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700192+ // static final ASN1ObjectIdentifier md2WithRSAEncryption = pkcs_1.branch("2");
Kenny Root5db505e2013-12-11 16:35:05 -0800193+ // /** PKCS#1: 1.2.840.113549.1.1.3 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700194+ // static final ASN1ObjectIdentifier md4WithRSAEncryption = pkcs_1.branch("3");
195+ // END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -0800196 /** PKCS#1: 1.2.840.113549.1.1.4 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700197 static final ASN1ObjectIdentifier md5WithRSAEncryption = pkcs_1.branch("4");
Kenny Root5db505e2013-12-11 16:35:05 -0800198 /** PKCS#1: 1.2.840.113549.1.1.5 */
199@@ -96,15 +98,19 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700200 // md2 OBJECT IDENTIFIER ::=
201 // {iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 2}
202 //
Kenny Root5db505e2013-12-11 16:35:05 -0800203- /** 1.2.840.113549.2.2 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700204- static final ASN1ObjectIdentifier md2 = digestAlgorithm.branch("2");
205+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -0800206+ // /** 1.2.840.113549.2.2 */
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700207+ // static final ASN1ObjectIdentifier md2 = digestAlgorithm.branch("2");
208+ // END android-removed
209
210 //
211 // md4 OBJECT IDENTIFIER ::=
212 // {iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 4}
213 //
Kenny Root5db505e2013-12-11 16:35:05 -0800214- /** 1.2.840.113549.2.4 */
215- static final ASN1ObjectIdentifier md4 = digestAlgorithm.branch("4");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700216+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -0800217+ // /** 1.2.840.113549.2.4 */
218+ // static final ASN1ObjectIdentifier md4 = digestAlgorithm.branch("4");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700219+ // END android-removed
220
221 //
222 // md5 OBJECT IDENTIFIER ::=
Kenny Root5db505e2013-12-11 16:35:05 -0800223diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java
224--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-12-03 20:18:20.000000000 +0000
225+++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700226@@ -14,7 +14,9 @@
227 import org.bouncycastle.asn1.DERSequence;
228 import org.bouncycastle.asn1.DERTaggedObject;
229 import org.bouncycastle.crypto.Digest;
230-import org.bouncycastle.crypto.digests.SHA1Digest;
231+// BEGIN android-changed
232+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
233+// END android-changed
234
235 /**
236 * The AuthorityKeyIdentifier object.
Brian Carlstrome1142c12013-01-30 18:26:40 -0800237@@ -106,7 +108,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700238 public AuthorityKeyIdentifier(
239 SubjectPublicKeyInfo spki)
240 {
241- Digest digest = new SHA1Digest();
242+ // BEGIN android-changed
243+ Digest digest = AndroidDigestFactory.getSHA1();
244+ // END android-changed
245 byte[] resBuf = new byte[digest.getDigestSize()];
246
247 byte[] bytes = spki.getPublicKeyData().getBytes();
Brian Carlstrome1142c12013-01-30 18:26:40 -0800248@@ -124,7 +128,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700249 GeneralNames name,
250 BigInteger serialNumber)
251 {
252- Digest digest = new SHA1Digest();
253+ // BEGIN android-changed
254+ Digest digest = AndroidDigestFactory.getSHA1();
255+ // END android-changed
256 byte[] resBuf = new byte[digest.getDigestSize()];
257
258 byte[] bytes = spki.getPublicKeyData().getBytes();
Kenny Root5db505e2013-12-11 16:35:05 -0800259diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java
260--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-12-03 20:18:20.000000000 +0000
261+++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700262@@ -6,7 +6,9 @@
263 import org.bouncycastle.asn1.ASN1TaggedObject;
264 import org.bouncycastle.asn1.DEROctetString;
265 import org.bouncycastle.crypto.Digest;
266-import org.bouncycastle.crypto.digests.SHA1Digest;
267+// BEGIN android-changed
268+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
269+// END android-changed
270
271 /**
272 * The SubjectKeyIdentifier object.
Brian Carlstrome1142c12013-01-30 18:26:40 -0800273@@ -124,7 +126,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700274
275 private static byte[] getDigest(SubjectPublicKeyInfo spki)
276 {
277- Digest digest = new SHA1Digest();
278+ // BEGIN android-changed
279+ Digest digest = AndroidDigestFactory.getSHA1();
280+ // END android-changed
281 byte[] resBuf = new byte[digest.getDigestSize()];
282
283 byte[] bytes = spki.getPublicKeyData().getBytes();
Kenny Root5db505e2013-12-11 16:35:05 -0800284diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509Name.java
285--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509Name.java 2013-12-03 20:18:20.000000000 +0000
286+++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509Name.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700287@@ -255,8 +255,10 @@
288 */
289 public static final Hashtable SymbolLookUp = DefaultLookUp;
290
291- private static final Boolean TRUE = new Boolean(true); // for J2ME compatibility
292- private static final Boolean FALSE = new Boolean(false);
293+ // BEGIN android-changed
294+ private static final Boolean TRUE = Boolean.TRUE;
295+ private static final Boolean FALSE = Boolean.FALSE;
296+ // END android-changed
297
298 static
299 {
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700300@@ -446,7 +448,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700301 throw new IllegalArgumentException("cannot encode value");
302 }
303 }
304- added.addElement((i != 0) ? TRUE : FALSE); // to allow earlier JDK compatibility
305+ // BEGIN android-changed
306+ added.addElement(Boolean.valueOf(i != 0));
307+ // END android-changed
308 }
309 }
310 }
Kenny Root5db505e2013-12-11 16:35:05 -0800311diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509NameTokenizer.java
312--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-12-03 20:18:20.000000000 +0000
313+++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700314@@ -78,6 +78,17 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700315 }
316 else
317 {
318+ // BEGIN android-added
319+ // copied from a newer version of BouncyCastle
320+ if (c == '#' && buf.charAt(buf.length() - 1) == '=')
321+ {
322+ buf.append('\\');
323+ }
Brian Carlstrome1142c12013-01-30 18:26:40 -0800324+ else if (c == '+' && separator != '+')
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700325+ {
326+ buf.append('\\');
327+ }
328+ // END android-added
329 buf.append(c);
330 }
Brian Carlstrome1142c12013-01-30 18:26:40 -0800331 }
Kenny Root5db505e2013-12-11 16:35:05 -0800332diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x9/ECNamedCurveTable.java bcprov-jdk15on-150/org/bouncycastle/asn1/x9/ECNamedCurveTable.java
333--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x9/ECNamedCurveTable.java 2013-12-03 20:18:20.000000000 +0000
334+++ bcprov-jdk15on-150/org/bouncycastle/asn1/x9/ECNamedCurveTable.java 2013-12-12 00:35:05.000000000 +0000
335@@ -6,7 +6,9 @@
336 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
337 import org.bouncycastle.asn1.nist.NISTNamedCurves;
338 import org.bouncycastle.asn1.sec.SECNamedCurves;
339-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
340+// BEGIN android-removed
341+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
342+// END android-removed
343
344 /**
345 * A general class that reads all X9.62 style EC curve tables.
346@@ -30,10 +32,12 @@
347 ecP = SECNamedCurves.getByName(name);
348 }
349
350- if (ecP == null)
351- {
352- ecP = TeleTrusTNamedCurves.getByName(name);
353- }
354+ // BEGIN android-removed
355+ // if (ecP == null)
356+ // {
357+ // ecP = TeleTrusTNamedCurves.getByName(name);
358+ // }
359+ // END android-removed
360
361 if (ecP == null)
362 {
363@@ -60,10 +64,12 @@
364 ecP = SECNamedCurves.getByOID(oid);
365 }
366
367- if (ecP == null)
368- {
369- ecP = TeleTrusTNamedCurves.getByOID(oid);
370- }
371+ // BEGIN android-removed
372+ // if (ecP == null)
373+ // {
374+ // ecP = TeleTrusTNamedCurves.getByOID(oid);
375+ // }
376+ // END android-removed
377
378 // NOTE: All the NIST curves are currently from SEC, so no point in redundant OID lookup
379
380@@ -82,7 +88,9 @@
381 addEnumeration(v, X962NamedCurves.getNames());
382 addEnumeration(v, SECNamedCurves.getNames());
383 addEnumeration(v, NISTNamedCurves.getNames());
384- addEnumeration(v, TeleTrusTNamedCurves.getNames());
385+ // BEGIN android-removed
386+ // addEnumeration(v, TeleTrusTNamedCurves.getNames());
387+ // END android-removed
388
389 return v.elements();
390 }
391diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
392--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 1970-01-01 00:00:00.000000000 +0000
393+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700394@@ -0,0 +1,87 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700395+/*
396+ * Copyright (C) 2012 The Android Open Source Project
397+ *
398+ * Licensed under the Apache License, Version 2.0 (the "License");
399+ * you may not use this file except in compliance with the License.
400+ * You may obtain a copy of the License at
401+ *
402+ * http://www.apache.org/licenses/LICENSE-2.0
403+ *
404+ * Unless required by applicable law or agreed to in writing, software
405+ * distributed under the License is distributed on an "AS IS" BASIS,
406+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
407+ * See the License for the specific language governing permissions and
408+ * limitations under the License.
409+ */
410+
411+package org.bouncycastle.crypto.digests;
412+
413+import org.bouncycastle.crypto.Digest;
414+
415+/**
416+ * Level of indirection to let us select OpenSSLDigest implementations
417+ * for libcore but fallback to BouncyCastle ones on the RI.
418+ */
419+public final class AndroidDigestFactory {
420+ private static final String OpenSSLFactoryClassName
421+ = AndroidDigestFactory.class.getName() + "OpenSSL";
422+ private static final String BouncyCastleFactoryClassName
423+ = AndroidDigestFactory.class.getName() + "BouncyCastle";
424+
425+ private static final AndroidDigestFactoryInterface FACTORY;
426+ static {
427+ Class factoryImplementationClass;
428+ try {
429+ factoryImplementationClass = Class.forName(OpenSSLFactoryClassName);
Brian Carlstromf847b1b2012-09-28 10:07:22 -0700430+ // Double check for NativeCrypto in case we are running on RI for testing
Kenny Root580c7192013-04-30 18:48:41 -0700431+ Class.forName("com.android.org.conscrypt.NativeCrypto");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700432+ } catch (ClassNotFoundException e1) {
433+ try {
434+ factoryImplementationClass = Class.forName(BouncyCastleFactoryClassName);
435+ } catch (ClassNotFoundException e2) {
Kenny Root580c7192013-04-30 18:48:41 -0700436+ AssertionError e = new AssertionError("Failed to load "
437+ + "AndroidDigestFactoryInterface "
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700438+ + "implementation. Looked for "
439+ + OpenSSLFactoryClassName + " and "
440+ + BouncyCastleFactoryClassName);
Kenny Root580c7192013-04-30 18:48:41 -0700441+ e.initCause(e1);
442+ throw e;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700443+ }
444+ }
445+ if (!AndroidDigestFactoryInterface.class.isAssignableFrom(factoryImplementationClass)) {
446+ throw new AssertionError(factoryImplementationClass
447+ + "does not implement AndroidDigestFactoryInterface");
448+ }
449+ try {
450+ FACTORY = (AndroidDigestFactoryInterface) factoryImplementationClass.newInstance();
451+ } catch (InstantiationException e) {
452+ throw new AssertionError(e);
453+ } catch (IllegalAccessException e) {
454+ throw new AssertionError(e);
455+ }
456+ }
457+
458+ public static Digest getMD5() {
459+ return FACTORY.getMD5();
460+ }
461+
462+ public static Digest getSHA1() {
463+ return FACTORY.getSHA1();
464+ }
465+
Kenny Root87490ac2013-09-26 11:06:21 -0700466+ public static Digest getSHA224() {
467+ return FACTORY.getSHA224();
468+ }
469+
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700470+ public static Digest getSHA256() {
471+ return FACTORY.getSHA256();
472+ }
473+
474+ public static Digest getSHA384() {
475+ return FACTORY.getSHA384();
476+ }
477+
478+ public static Digest getSHA512() {
479+ return FACTORY.getSHA512();
480+ }
481+}
Kenny Root5db505e2013-12-11 16:35:05 -0800482diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java
483--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 1970-01-01 00:00:00.000000000 +0000
484+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700485@@ -0,0 +1,40 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700486+/*
487+ * Copyright (C) 2012 The Android Open Source Project
488+ *
489+ * Licensed under the Apache License, Version 2.0 (the "License");
490+ * you may not use this file except in compliance with the License.
491+ * You may obtain a copy of the License at
492+ *
493+ * http://www.apache.org/licenses/LICENSE-2.0
494+ *
495+ * Unless required by applicable law or agreed to in writing, software
496+ * distributed under the License is distributed on an "AS IS" BASIS,
497+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
498+ * See the License for the specific language governing permissions and
499+ * limitations under the License.
500+ */
501+
502+package org.bouncycastle.crypto.digests;
503+
504+import org.bouncycastle.crypto.Digest;
505+
506+public class AndroidDigestFactoryBouncyCastle implements AndroidDigestFactoryInterface {
507+ public Digest getMD5() {
508+ return new MD5Digest();
509+ }
510+ public Digest getSHA1() {
511+ return new SHA1Digest();
512+ }
Kenny Root87490ac2013-09-26 11:06:21 -0700513+ public Digest getSHA224() {
514+ return new SHA224Digest();
515+ }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700516+ public Digest getSHA256() {
517+ return new SHA256Digest();
518+ }
519+ public Digest getSHA384() {
520+ return new SHA384Digest();
521+ }
522+ public Digest getSHA512() {
523+ return new SHA512Digest();
524+ }
525+}
Kenny Root5db505e2013-12-11 16:35:05 -0800526diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java
527--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 1970-01-01 00:00:00.000000000 +0000
528+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700529@@ -0,0 +1,28 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700530+/*
531+ * Copyright (C) 2012 The Android Open Source Project
532+ *
533+ * Licensed under the Apache License, Version 2.0 (the "License");
534+ * you may not use this file except in compliance with the License.
535+ * You may obtain a copy of the License at
536+ *
537+ * http://www.apache.org/licenses/LICENSE-2.0
538+ *
539+ * Unless required by applicable law or agreed to in writing, software
540+ * distributed under the License is distributed on an "AS IS" BASIS,
541+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
542+ * See the License for the specific language governing permissions and
543+ * limitations under the License.
544+ */
545+
546+package org.bouncycastle.crypto.digests;
547+
548+import org.bouncycastle.crypto.Digest;
549+
550+interface AndroidDigestFactoryInterface {
551+ public Digest getMD5();
552+ public Digest getSHA1();
Kenny Root87490ac2013-09-26 11:06:21 -0700553+ public Digest getSHA224();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700554+ public Digest getSHA256();
555+ public Digest getSHA384();
556+ public Digest getSHA512();
557+}
Kenny Root5db505e2013-12-11 16:35:05 -0800558diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java
559--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 1970-01-01 00:00:00.000000000 +0000
560+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700561@@ -0,0 +1,40 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700562+/*
563+ * Copyright (C) 2012 The Android Open Source Project
564+ *
565+ * Licensed under the Apache License, Version 2.0 (the "License");
566+ * you may not use this file except in compliance with the License.
567+ * You may obtain a copy of the License at
568+ *
569+ * http://www.apache.org/licenses/LICENSE-2.0
570+ *
571+ * Unless required by applicable law or agreed to in writing, software
572+ * distributed under the License is distributed on an "AS IS" BASIS,
573+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
574+ * See the License for the specific language governing permissions and
575+ * limitations under the License.
576+ */
577+
578+package org.bouncycastle.crypto.digests;
579+
580+import org.bouncycastle.crypto.Digest;
581+
582+public class AndroidDigestFactoryOpenSSL implements AndroidDigestFactoryInterface {
583+ public Digest getMD5() {
584+ return new OpenSSLDigest.MD5();
585+ }
586+ public Digest getSHA1() {
587+ return new OpenSSLDigest.SHA1();
588+ }
Kenny Root87490ac2013-09-26 11:06:21 -0700589+ public Digest getSHA224() {
590+ return new OpenSSLDigest.SHA224();
591+ }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700592+ public Digest getSHA256() {
593+ return new OpenSSLDigest.SHA256();
594+ }
595+ public Digest getSHA384() {
596+ return new OpenSSLDigest.SHA384();
597+ }
598+ public Digest getSHA512() {
599+ return new OpenSSLDigest.SHA512();
600+ }
601+}
Kenny Root5db505e2013-12-11 16:35:05 -0800602diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/OpenSSLDigest.java
603--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000
Kenny Root9e52a4c2014-02-27 10:09:19 -0800604+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2014-02-27 18:09:19.000000000 +0000
Kenny Rootbab34fd2014-02-25 14:51:56 -0800605@@ -0,0 +1,97 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700606+/*
607+ * Copyright (C) 2008 The Android Open Source Project
608+ *
609+ * Licensed under the Apache License, Version 2.0 (the "License");
610+ * you may not use this file except in compliance with the License.
611+ * You may obtain a copy of the License at
612+ *
613+ * http://www.apache.org/licenses/LICENSE-2.0
614+ *
615+ * Unless required by applicable law or agreed to in writing, software
616+ * distributed under the License is distributed on an "AS IS" BASIS,
617+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
618+ * See the License for the specific language governing permissions and
619+ * limitations under the License.
620+ */
621+
622+package org.bouncycastle.crypto.digests;
623+
Kenny Rootbab34fd2014-02-25 14:51:56 -0800624+import org.bouncycastle.crypto.ExtendedDigest;
625+import org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi;
Kenny Rooted8b1c72014-02-24 15:25:15 -0800626+import java.security.DigestException;
627+import java.security.MessageDigest;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700628+
629+/**
Kenny Rootbab34fd2014-02-25 14:51:56 -0800630+ * Implements the BouncyCastle Digest interface using OpenSSL's EVP API. This
631+ * must be an ExtendedDigest for {@link BcKeyStoreSpi} to be able to use it.
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700632+ */
Kenny Rootbab34fd2014-02-25 14:51:56 -0800633+public class OpenSSLDigest implements ExtendedDigest {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800634+ private final MessageDigest delegate;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700635+
Kenny Rootbab34fd2014-02-25 14:51:56 -0800636+ private final int byteSize;
637+
638+ public OpenSSLDigest(String algorithm, int byteSize) {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800639+ try {
640+ delegate = MessageDigest.getInstance(algorithm, "AndroidOpenSSL");
Kenny Rootbab34fd2014-02-25 14:51:56 -0800641+ this.byteSize = byteSize;
Kenny Rooted8b1c72014-02-24 15:25:15 -0800642+ } catch (Exception e) {
643+ throw new RuntimeException(e);
644+ }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700645+ }
646+
647+ public String getAlgorithmName() {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800648+ return delegate.getAlgorithm();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700649+ }
650+
651+ public int getDigestSize() {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800652+ return delegate.getDigestLength();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700653+ }
654+
Kenny Rootbab34fd2014-02-25 14:51:56 -0800655+ public int getByteLength() {
656+ return byteSize;
657+ }
658+
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700659+ public void reset() {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800660+ delegate.reset();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700661+ }
662+
663+ public void update(byte in) {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800664+ delegate.update(in);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700665+ }
666+
667+ public void update(byte[] in, int inOff, int len) {
Kenny Rooted8b1c72014-02-24 15:25:15 -0800668+ delegate.update(in, inOff, len);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700669+ }
670+
671+ public int doFinal(byte[] out, int outOff) {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700672+ try {
Kenny Root9e52a4c2014-02-27 10:09:19 -0800673+ return delegate.digest(out, outOff, out.length - outOff);
Kenny Rooted8b1c72014-02-24 15:25:15 -0800674+ } catch (DigestException e) {
675+ throw new RuntimeException(e);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700676+ }
677+ }
678+
679+ public static class MD5 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800680+ public MD5() { super("MD5", 64); }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700681+ }
682+
683+ public static class SHA1 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800684+ public SHA1() { super("SHA-1", 64); }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700685+ }
686+
Kenny Root87490ac2013-09-26 11:06:21 -0700687+ public static class SHA224 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800688+ public SHA224() { super("SHA-224", 64); }
Kenny Root87490ac2013-09-26 11:06:21 -0700689+ }
690+
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700691+ public static class SHA256 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800692+ public SHA256() { super("SHA-256", 64); }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700693+ }
694+
695+ public static class SHA384 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800696+ public SHA384() { super("SHA-384", 128); }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700697+ }
698+
699+ public static class SHA512 extends OpenSSLDigest {
Kenny Rootbab34fd2014-02-25 14:51:56 -0800700+ public SHA512() { super("SHA-512", 128); }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700701+ }
702+}
Kenny Root5db505e2013-12-11 16:35:05 -0800703diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/OAEPEncoding.java
704--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2013-12-03 20:18:20.000000000 +0000
705+++ bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700706@@ -6,7 +6,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700707 import org.bouncycastle.crypto.CipherParameters;
708 import org.bouncycastle.crypto.Digest;
709 import org.bouncycastle.crypto.InvalidCipherTextException;
710-import org.bouncycastle.crypto.digests.SHA1Digest;
711+// BEGIN android-changed
712+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
713+// END android-changed
714 import org.bouncycastle.crypto.params.ParametersWithRandom;
715
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700716 /**
717@@ -25,7 +27,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700718 public OAEPEncoding(
719 AsymmetricBlockCipher cipher)
720 {
721- this(cipher, new SHA1Digest(), null);
722+ // BEGIN android-changed
723+ this(cipher, AndroidDigestFactory.getSHA1(), null);
724+ // END android-changed
725 }
726
727 public OAEPEncoding(
Kenny Root5db505e2013-12-11 16:35:05 -0800728diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/PKCS1Encoding.java
729--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-12-03 20:18:20.000000000 +0000
730+++ bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -0800731@@ -216,6 +216,12 @@
732 throw new InvalidCipherTextException("unknown block type");
733 }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700734 }
735+ // BEGIN android-added
736+ if ((type == 1 && forPrivateKey) || (type == 2 && !forPrivateKey))
737+ {
738+ throw new InvalidCipherTextException("invalid block type " + type);
739+ }
740+ // END android-added
741
742 if (useStrictLength && block.length != engine.getOutputBlockSize())
743 {
Kenny Root5db505e2013-12-11 16:35:05 -0800744diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java bcprov-jdk15on-150/org/bouncycastle/crypto/engines/DESedeWrapEngine.java
745--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2013-12-03 20:18:20.000000000 +0000
746+++ bcprov-jdk15on-150/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700747@@ -6,7 +6,9 @@
748 import org.bouncycastle.crypto.Digest;
749 import org.bouncycastle.crypto.InvalidCipherTextException;
750 import org.bouncycastle.crypto.Wrapper;
751-import org.bouncycastle.crypto.digests.SHA1Digest;
752+// BEGIN android-changed
753+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
754+// END android-changed
755 import org.bouncycastle.crypto.modes.CBCBlockCipher;
756 import org.bouncycastle.crypto.params.KeyParameter;
757 import org.bouncycastle.crypto.params.ParametersWithIV;
758@@ -52,7 +54,9 @@
759 //
760 // checksum digest
761 //
762- Digest sha1 = new SHA1Digest();
763+ // BEGIN android-changed
764+ Digest sha1 = AndroidDigestFactory.getSHA1();
765+ // END android-changed
766 byte[] digest = new byte[20];
767
768 /**
Kenny Root5db505e2013-12-11 16:35:05 -0800769diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DHParametersHelper.java
770--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java 2013-12-03 20:18:20.000000000 +0000
771+++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700772@@ -3,10 +3,17 @@
773 import java.math.BigInteger;
774 import java.security.SecureRandom;
775
776+// BEGIN android-added
777+import java.util.logging.Logger;
778+// END android-added
779 import org.bouncycastle.util.BigIntegers;
780
781 class DHParametersHelper
782 {
783+ // BEGIN android-added
784+ private static final Logger logger = Logger.getLogger(DHParametersHelper.class.getName());
785+ // END android-added
786+
787 private static final BigInteger ONE = BigInteger.valueOf(1);
788 private static final BigInteger TWO = BigInteger.valueOf(2);
789
790@@ -17,11 +24,19 @@
791 */
792 static BigInteger[] generateSafePrimes(int size, int certainty, SecureRandom random)
793 {
794+ // BEGIN android-added
795+ logger.info("Generating safe primes. This may take a long time.");
796+ long start = System.currentTimeMillis();
797+ int tries = 0;
798+ // END android-added
799 BigInteger p, q;
800 int qLength = size - 1;
801
802 for (;;)
803 {
804+ // BEGIN android-added
805+ tries++;
806+ // END android-added
807 q = new BigInteger(qLength, 2, random);
808
809 // p <- 2q + 1
810@@ -32,6 +47,11 @@
811 break;
812 }
813 }
814+ // BEGIN android-added
815+ long end = System.currentTimeMillis();
816+ long duration = end - start;
817+ logger.info("Generated safe primes: " + tries + " tries took " + duration + "ms");
818+ // END android-added
819
820 return new BigInteger[] { p, q };
821 }
Kenny Root5db505e2013-12-11 16:35:05 -0800822diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DSAParametersGenerator.java
823--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2013-12-03 20:18:20.000000000 +0000
824+++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700825@@ -4,7 +4,9 @@
826 import java.security.SecureRandom;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700827
828 import org.bouncycastle.crypto.Digest;
829-import org.bouncycastle.crypto.digests.SHA1Digest;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700830+// BEGIN android-changed
831+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
832+// END android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700833 import org.bouncycastle.crypto.params.DSAParameterGenerationParameters;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700834 import org.bouncycastle.crypto.params.DSAParameters;
835 import org.bouncycastle.crypto.params.DSAValidationParameters;
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700836@@ -31,7 +33,9 @@
837
838 public DSAParametersGenerator()
839 {
840- this(new SHA1Digest());
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700841+ // BEGIN android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700842+ this(AndroidDigestFactory.getSHA1());
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700843+ // END android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700844 }
845
846 public DSAParametersGenerator(Digest digest)
847@@ -122,7 +126,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700848 int n = (L - 1) / 160;
849 byte[] w = new byte[L / 8];
850
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700851- if (!(digest instanceof SHA1Digest))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700852+ // BEGIN android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700853+ if (!(digest.getAlgorithmName().equals("SHA-1")))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700854+ // END android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700855 {
856 throw new IllegalStateException("can only use SHA-1 for generating FIPS 186-2 parameters");
857 }
Kenny Root5db505e2013-12-11 16:35:05 -0800858diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java
859--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2013-12-03 20:18:20.000000000 +0000
860+++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700861@@ -3,7 +3,9 @@
862 import org.bouncycastle.crypto.CipherParameters;
863 import org.bouncycastle.crypto.Digest;
864 import org.bouncycastle.crypto.PBEParametersGenerator;
865-import org.bouncycastle.crypto.digests.MD5Digest;
866+// BEGIN android-changed
867+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
868+// END android-changed
869 import org.bouncycastle.crypto.params.KeyParameter;
870 import org.bouncycastle.crypto.params.ParametersWithIV;
871
872@@ -17,7 +19,9 @@
873 public class OpenSSLPBEParametersGenerator
874 extends PBEParametersGenerator
875 {
876- private Digest digest = new MD5Digest();
877+ // BEGIN android-changed
878+ private Digest digest = AndroidDigestFactory.getMD5();
879+ // END android-changed
880
881 /**
882 * Construct a OpenSSL Parameters generator.
Kenny Root5db505e2013-12-11 16:35:05 -0800883diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java
884--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2013-12-03 20:18:20.000000000 +0000
885+++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700886@@ -4,7 +4,9 @@
887 import org.bouncycastle.crypto.Digest;
888 import org.bouncycastle.crypto.Mac;
889 import org.bouncycastle.crypto.PBEParametersGenerator;
890-import org.bouncycastle.crypto.digests.SHA1Digest;
891+// BEGIN android-changed
892+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
893+// END android-changed
894 import org.bouncycastle.crypto.macs.HMac;
895 import org.bouncycastle.crypto.params.KeyParameter;
896 import org.bouncycastle.crypto.params.ParametersWithIV;
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700897@@ -28,7 +30,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700898 */
899 public PKCS5S2ParametersGenerator()
900 {
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700901- this(new SHA1Digest());
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700902+ // BEGIN android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -0700903+ this(AndroidDigestFactory.getSHA1());
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700904+ // END android-changed
905 }
906
907 public PKCS5S2ParametersGenerator(Digest digest)
Kenny Root5db505e2013-12-11 16:35:05 -0800908diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk15on-150/org/bouncycastle/crypto/macs/HMac.java
909--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/macs/HMac.java 2013-12-03 20:18:20.000000000 +0000
910+++ bcprov-jdk15on-150/org/bouncycastle/crypto/macs/HMac.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700911@@ -36,14 +36,18 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700912 {
913 blockLengths = new Hashtable();
914
Brian Carlstrome1142c12013-01-30 18:26:40 -0800915- blockLengths.put("GOST3411", Integers.valueOf(32));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700916-
Brian Carlstrome1142c12013-01-30 18:26:40 -0800917- blockLengths.put("MD2", Integers.valueOf(16));
918- blockLengths.put("MD4", Integers.valueOf(64));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700919+ // BEGIN android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -0800920+ // blockLengths.put("GOST3411", Integers.valueOf(32));
921+ //
922+ // blockLengths.put("MD2", Integers.valueOf(16));
923+ // blockLengths.put("MD4", Integers.valueOf(64));
924+ // END android-removed
925 blockLengths.put("MD5", Integers.valueOf(64));
926
927- blockLengths.put("RIPEMD128", Integers.valueOf(64));
928- blockLengths.put("RIPEMD160", Integers.valueOf(64));
929+ // BEGIN android-removed
930+ // blockLengths.put("RIPEMD128", Integers.valueOf(64));
931+ // blockLengths.put("RIPEMD160", Integers.valueOf(64));
932+ // END android-removed
933
934 blockLengths.put("SHA-1", Integers.valueOf(64));
Kenny Root87490ac2013-09-26 11:06:21 -0700935 blockLengths.put("SHA-224", Integers.valueOf(64));
936@@ -51,8 +55,10 @@
Brian Carlstrome1142c12013-01-30 18:26:40 -0800937 blockLengths.put("SHA-384", Integers.valueOf(128));
938 blockLengths.put("SHA-512", Integers.valueOf(128));
939
940- blockLengths.put("Tiger", Integers.valueOf(64));
941- blockLengths.put("Whirlpool", Integers.valueOf(64));
942+ // BEGIN android-removed
943+ // blockLengths.put("Tiger", Integers.valueOf(64));
944+ // blockLengths.put("Whirlpool", Integers.valueOf(64));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700945+ // END android-removed
946 }
947
948 private static int getByteLength(
Kenny Root5db505e2013-12-11 16:35:05 -0800949diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk15on-150/org/bouncycastle/crypto/signers/RSADigestSigner.java
950--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2013-12-03 20:18:20.000000000 +0000
951+++ bcprov-jdk15on-150/org/bouncycastle/crypto/signers/RSADigestSigner.java 2013-12-12 00:35:05.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -0700952@@ -39,9 +39,11 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700953 */
954 static
955 {
956- oidMap.put("RIPEMD128", TeleTrusTObjectIdentifiers.ripemd128);
957- oidMap.put("RIPEMD160", TeleTrusTObjectIdentifiers.ripemd160);
958- oidMap.put("RIPEMD256", TeleTrusTObjectIdentifiers.ripemd256);
959+ // BEGIN android-removed
960+ // oidMap.put("RIPEMD128", TeleTrusTObjectIdentifiers.ripemd128);
961+ // oidMap.put("RIPEMD160", TeleTrusTObjectIdentifiers.ripemd160);
962+ // oidMap.put("RIPEMD256", TeleTrusTObjectIdentifiers.ripemd256);
963+ // END android-removed
964
965 oidMap.put("SHA-1", X509ObjectIdentifiers.id_SHA1);
Kenny Root87490ac2013-09-26 11:06:21 -0700966 oidMap.put("SHA-224", NISTObjectIdentifiers.id_sha224);
967@@ -49,8 +51,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700968 oidMap.put("SHA-384", NISTObjectIdentifiers.id_sha384);
969 oidMap.put("SHA-512", NISTObjectIdentifiers.id_sha512);
970
971- oidMap.put("MD2", PKCSObjectIdentifiers.md2);
972- oidMap.put("MD4", PKCSObjectIdentifiers.md4);
973+ // BEGIN android-removed
974+ // oidMap.put("MD2", PKCSObjectIdentifiers.md2);
975+ // oidMap.put("MD4", PKCSObjectIdentifiers.md4);
976+ // END android-removed
977 oidMap.put("MD5", PKCSObjectIdentifiers.md5);
978 }
979
Kenny Root5db505e2013-12-11 16:35:05 -0800980diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk15on-150/org/bouncycastle/crypto/util/PrivateKeyFactory.java
981--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-12-03 20:18:20.000000000 +0000
982+++ bcprov-jdk15on-150/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-12-12 00:35:05.000000000 +0000
983@@ -10,7 +10,9 @@
984 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
Brian Carlstrome1142c12013-01-30 18:26:40 -0800985 import org.bouncycastle.asn1.ASN1Primitive;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700986 import org.bouncycastle.asn1.ASN1Sequence;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700987-import org.bouncycastle.asn1.oiw.ElGamalParameter;
988+// BEGIN android-removed
989+// import org.bouncycastle.asn1.oiw.ElGamalParameter;
990+// END android-removed
991 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
992 import org.bouncycastle.asn1.pkcs.DHParameter;
993 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
Kenny Root5db505e2013-12-11 16:35:05 -0800994@@ -30,8 +32,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -0700995 import org.bouncycastle.crypto.params.DSAPrivateKeyParameters;
996 import org.bouncycastle.crypto.params.ECDomainParameters;
997 import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
998-import org.bouncycastle.crypto.params.ElGamalParameters;
999-import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters;
1000+// BEGIN android-removed
1001+// import org.bouncycastle.crypto.params.ElGamalParameters;
1002+// import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters;
1003+// END android-removed
1004 import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters;
1005
1006 /**
Kenny Root5db505e2013-12-11 16:35:05 -08001007@@ -97,14 +101,16 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001008
1009 return new DHPrivateKeyParameters(derX.getValue(), dhParams);
1010 }
1011- else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm))
1012- {
1013- ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters());
Brian Carlstrome1142c12013-01-30 18:26:40 -08001014- ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001015-
1016- return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(
1017- params.getP(), params.getG()));
1018- }
1019+ // BEGIN android-removed
1020+ // else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm))
1021+ // {
1022+ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters());
Brian Carlstrome1142c12013-01-30 18:26:40 -08001023+ // ASN1Integer = (ASN1Integer)keyInfo.parsePrivateKey();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001024+ //
1025+ // return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(
1026+ // params.getP(), params.getG()));
1027+ // }
1028+ // END android-removed
1029 else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa))
1030 {
Brian Carlstrome1142c12013-01-30 18:26:40 -08001031 ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey();
Kenny Root5db505e2013-12-11 16:35:05 -08001032diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk15on-150/org/bouncycastle/crypto/util/PublicKeyFactory.java
1033--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-12-03 20:18:20.000000000 +0000
1034+++ bcprov-jdk15on-150/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-12-12 00:35:05.000000000 +0000
1035@@ -12,7 +12,9 @@
1036 import org.bouncycastle.asn1.ASN1Primitive;
Brian Carlstrome1142c12013-01-30 18:26:40 -08001037 import org.bouncycastle.asn1.ASN1Sequence;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001038 import org.bouncycastle.asn1.DEROctetString;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001039-import org.bouncycastle.asn1.oiw.ElGamalParameter;
1040+// BEGIN android-removed
1041+// import org.bouncycastle.asn1.oiw.ElGamalParameter;
1042+// END android-removed
1043 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
1044 import org.bouncycastle.asn1.pkcs.DHParameter;
1045 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
Kenny Root5db505e2013-12-11 16:35:05 -08001046@@ -37,8 +39,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001047 import org.bouncycastle.crypto.params.DSAPublicKeyParameters;
1048 import org.bouncycastle.crypto.params.ECDomainParameters;
1049 import org.bouncycastle.crypto.params.ECPublicKeyParameters;
1050-import org.bouncycastle.crypto.params.ElGamalParameters;
1051-import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters;
1052+// BEGIN android-removed
1053+// import org.bouncycastle.crypto.params.ElGamalParameters;
1054+// import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters;
1055+// END android-removed
1056 import org.bouncycastle.crypto.params.RSAKeyParameters;
1057
1058 /**
Kenny Root5db505e2013-12-11 16:35:05 -08001059@@ -132,14 +136,16 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001060
1061 return new DHPublicKeyParameters(derY.getValue(), dhParams);
1062 }
1063- else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm))
1064- {
1065- ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters());
Brian Carlstrome1142c12013-01-30 18:26:40 -08001066- ASN1Integer derY = (ASN1Integer)keyInfo.parsePublicKey();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001067-
1068- return new ElGamalPublicKeyParameters(derY.getValue(), new ElGamalParameters(
1069- params.getP(), params.getG()));
1070- }
1071+ // BEGIN android-removed
1072+ // else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm))
1073+ // {
1074+ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters());
Brian Carlstrome1142c12013-01-30 18:26:40 -08001075+ // ASN1Integer derY = (ASN1Integer)keyInfo.parsePublicKey();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001076+ //
1077+ // return new ElGamalPublicKeyParameters(derY.getValue(), new ElGamalParameters(
1078+ // params.getP(), params.getG()));
1079+ // }
1080+ // END android-removed
1081 else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa)
1082 || algId.getAlgorithm().equals(OIWObjectIdentifiers.dsaWithSHA1))
1083 {
Kenny Root5db505e2013-12-11 16:35:05 -08001084diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DH.java
1085--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2013-12-03 20:18:20.000000000 +0000
Kenny Root16fbd3b2014-05-07 17:26:23 -07001086+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2014-05-08 00:26:23.000000000 +0000
1087@@ -1,7 +1,14 @@
1088 package org.bouncycastle.jcajce.provider.asymmetric;
1089
1090+// BEGIN android-added
1091+import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
1092+import org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi;
1093+// END android-added
1094 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
1095 import org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider;
1096+// BEGIN android-added
1097+import org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter;
1098+// END android-added
1099
1100 public class DH
1101 {
1102@@ -24,6 +31,10 @@
1103
1104 provider.addAlgorithm("KeyFactory.DH", PREFIX + "KeyFactorySpi");
1105 provider.addAlgorithm("Alg.Alias.KeyFactory.DIFFIEHELLMAN", "DH");
1106+ // BEGIN android-added
1107+ AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi();
1108+ registerOid(provider, PKCSObjectIdentifiers.dhKeyAgreement, "DH", keyFact);
1109+ // END android-added
1110
1111 provider.addAlgorithm("AlgorithmParameters.DH", PREFIX + "AlgorithmParametersSpi");
1112 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.DIFFIEHELLMAN", "DH");
1113@@ -32,10 +43,12 @@
Brian Carlstrome1142c12013-01-30 18:26:40 -08001114
1115 provider.addAlgorithm("AlgorithmParameterGenerator.DH", PREFIX + "AlgorithmParameterGeneratorSpi");
1116
1117- provider.addAlgorithm("Cipher.DHIES", PREFIX + "IESCipher$IES");
1118- provider.addAlgorithm("Cipher.DHIESwithAES", PREFIX + "IESCipher$IESwithAES");
1119- provider.addAlgorithm("Cipher.DHIESWITHAES", PREFIX + "IESCipher$IESwithAES");
1120- provider.addAlgorithm("Cipher.DHIESWITHDESEDE", PREFIX + "IESCipher$IESwithDESede");
Brian Carlstrome1142c12013-01-30 18:26:40 -08001121+ // BEGIN android-removed
1122+ // provider.addAlgorithm("Cipher.DHIES", PREFIX + "IESCipher$IES");
1123+ // provider.addAlgorithm("Cipher.DHIESwithAES", PREFIX + "IESCipher$IESwithAES");
1124+ // provider.addAlgorithm("Cipher.DHIESWITHAES", PREFIX + "IESCipher$IESwithAES");
1125+ // provider.addAlgorithm("Cipher.DHIESWITHDESEDE", PREFIX + "IESCipher$IESwithDESede");
Brian Carlstrome1142c12013-01-30 18:26:40 -08001126+ // END android-removed
1127 }
1128 }
1129 }
Kenny Root5db505e2013-12-11 16:35:05 -08001130diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DSA.java
1131--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-12-03 20:18:20.000000000 +0000
Kenny Rootb7130ea2013-12-16 08:39:58 -08001132+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-12-16 16:39:58.000000000 +0000
1133@@ -27,40 +27,53 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001134 provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi");
1135 provider.addAlgorithm("KeyFactory.DSA", PREFIX + "KeyFactorySpi");
1136
1137- provider.addAlgorithm("Signature.DSA", PREFIX + "DSASigner$stdDSA");
1138+ // BEGIN android-changed
1139+ provider.addAlgorithm("Signature.SHA1withDSA", PREFIX + "DSASigner$stdDSA");
1140+ // END android-changed
1141 provider.addAlgorithm("Signature.NONEWITHDSA", PREFIX + "DSASigner$noneDSA");
1142
1143 provider.addAlgorithm("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA");
1144
Kenny Root5db505e2013-12-11 16:35:05 -08001145- provider.addAlgorithm("Signature.DETDSA", PREFIX + "DSASigner$detDSA");
1146- provider.addAlgorithm("Signature.SHA1WITHDETDSA", PREFIX + "DSASigner$detDSA");
1147- provider.addAlgorithm("Signature.SHA224WITHDETDSA", PREFIX + "DSASigner$detDSA224");
1148- provider.addAlgorithm("Signature.SHA256WITHDETDSA", PREFIX + "DSASigner$detDSA256");
1149- provider.addAlgorithm("Signature.SHA384WITHDETDSA", PREFIX + "DSASigner$detDSA384");
1150- provider.addAlgorithm("Signature.SHA512WITHDETDSA", PREFIX + "DSASigner$detDSA512");
1151+ // BEGIN android-removed
1152+ // provider.addAlgorithm("Signature.DETDSA", PREFIX + "DSASigner$detDSA");
1153+ // provider.addAlgorithm("Signature.SHA1WITHDETDSA", PREFIX + "DSASigner$detDSA");
1154+ // provider.addAlgorithm("Signature.SHA224WITHDETDSA", PREFIX + "DSASigner$detDSA224");
1155+ // provider.addAlgorithm("Signature.SHA256WITHDETDSA", PREFIX + "DSASigner$detDSA256");
1156+ // provider.addAlgorithm("Signature.SHA384WITHDETDSA", PREFIX + "DSASigner$detDSA384");
1157+ // provider.addAlgorithm("Signature.SHA512WITHDETDSA", PREFIX + "DSASigner$detDSA512");
1158+ // END android-removed
1159
Kenny Root87490ac2013-09-26 11:06:21 -07001160 addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224);
1161 addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256);
Kenny Rootb7130ea2013-12-16 08:39:58 -08001162- addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384);
1163- addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512);
1164+ // BEGIN android-removed
1165+ // addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384);
1166+ // addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512);
1167+ // END android-removed
1168+
Kenny Root5db505e2013-12-11 16:35:05 -08001169+ // BEGIN android-added
1170+ provider.addAlgorithm("Alg.Alias.Signature.DSA", "SHA1withDSA");
1171+ // END android-added
1172+ // BEGIN android-changed
1173+ provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA");
1174+ provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "SHA1withDSA");
1175+ provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA");
1176+ provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA");
1177+ provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA");
1178+ provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA");
1179+ provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA");
1180+ provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA");
1181+ provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA");
1182
Kenny Rootb7130ea2013-12-16 08:39:58 -08001183- provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "DSA");
1184- provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "DSA");
1185- provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "DSA");
1186- provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "DSA");
1187- provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "DSA");
1188- provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "DSA");
1189- provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "DSA");
1190- provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "DSA");
1191- provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "DSA");
1192-
Brian Carlstrome1142c12013-01-30 18:26:40 -08001193- provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "DSA");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001194+ provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA");
1195+ // END android-changed
1196
1197 AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi();
1198
Brian Carlstrome1142c12013-01-30 18:26:40 -08001199 for (int i = 0; i != DSAUtil.dsaOids.length; i++)
1200 {
1201- provider.addAlgorithm("Alg.Alias.Signature." + DSAUtil.dsaOids[i], "DSA");
1202+ // BEGIN android-changed
1203+ provider.addAlgorithm("Alg.Alias.Signature." + DSAUtil.dsaOids[i], "SHA1withDSA");
1204+ // END android-changed
1205
1206 registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact);
1207 registerOidAlgorithmParameters(provider, DSAUtil.dsaOids[i], "DSA");
Kenny Root5db505e2013-12-11 16:35:05 -08001208diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/EC.java
1209--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-12-03 20:18:20.000000000 +0000
1210+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001211@@ -1,7 +1,9 @@
1212 package org.bouncycastle.jcajce.provider.asymmetric;
1213
1214-import org.bouncycastle.asn1.eac.EACObjectIdentifiers;
1215-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
1216+// BEGIN android-removed
1217+// import org.bouncycastle.asn1.eac.EACObjectIdentifiers;
1218+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
1219+// END android-removed
1220 import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
1221 import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi;
1222 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
Brian Carlstrome1142c12013-01-30 18:26:40 -08001223@@ -21,39 +23,49 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001224 public void configure(ConfigurableProvider provider)
1225 {
1226 provider.addAlgorithm("KeyAgreement.ECDH", PREFIX + "KeyAgreementSpi$DH");
1227- provider.addAlgorithm("KeyAgreement.ECDHC", PREFIX + "KeyAgreementSpi$DHC");
1228- provider.addAlgorithm("KeyAgreement.ECMQV", PREFIX + "KeyAgreementSpi$MQV");
1229- provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$DHwithSHA1KDF");
1230- provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$MQVwithSHA1KDF");
1231+ // BEGIN android-removed
1232+ // provider.addAlgorithm("KeyAgreement.ECDHC", PREFIX + "KeyAgreementSpi$DHC");
1233+ // provider.addAlgorithm("KeyAgreement.ECMQV", PREFIX + "KeyAgreementSpi$MQV");
1234+ // provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$DHwithSHA1KDF");
1235+ // provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$MQVwithSHA1KDF");
1236+ // END android-removed
1237
1238 registerOid(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC", new KeyFactorySpi.EC());
1239 // TODO Should this be an alias for ECDH?
1240 registerOid(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC", new KeyFactorySpi.EC());
1241- registerOid(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV", new KeyFactorySpi.ECMQV());
1242-
1243- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC");
1244- // TODO Should this be an alias for ECDH?
1245- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC");
1246- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "EC");
1247+ // BEGIN android-removed
1248+ // registerOid(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV", new KeyFactorySpi.ECMQV());
1249+ // END android-removed
1250+
1251+ // BEGIN android-removed
1252+ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC");
1253+ // // TODO Should this be an alias for ECDH?
1254+ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC");
1255+ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "EC");
1256+ // END android-removed
1257
1258 provider.addAlgorithm("KeyFactory.EC", PREFIX + "KeyFactorySpi$EC");
1259- provider.addAlgorithm("KeyFactory.ECDSA", PREFIX + "KeyFactorySpi$ECDSA");
1260- provider.addAlgorithm("KeyFactory.ECDH", PREFIX + "KeyFactorySpi$ECDH");
1261- provider.addAlgorithm("KeyFactory.ECDHC", PREFIX + "KeyFactorySpi$ECDHC");
1262- provider.addAlgorithm("KeyFactory.ECMQV", PREFIX + "KeyFactorySpi$ECMQV");
1263+ // BEGIN android-removed
1264+ // provider.addAlgorithm("KeyFactory.ECDSA", PREFIX + "KeyFactorySpi$ECDSA");
1265+ // provider.addAlgorithm("KeyFactory.ECDH", PREFIX + "KeyFactorySpi$ECDH");
1266+ // provider.addAlgorithm("KeyFactory.ECDHC", PREFIX + "KeyFactorySpi$ECDHC");
1267+ // provider.addAlgorithm("KeyFactory.ECMQV", PREFIX + "KeyFactorySpi$ECMQV");
1268+ // END android-removed
1269
1270 provider.addAlgorithm("KeyPairGenerator.EC", PREFIX + "KeyPairGeneratorSpi$EC");
1271- provider.addAlgorithm("KeyPairGenerator.ECDSA", PREFIX + "KeyPairGeneratorSpi$ECDSA");
1272- provider.addAlgorithm("KeyPairGenerator.ECDH", PREFIX + "KeyPairGeneratorSpi$ECDH");
1273- provider.addAlgorithm("KeyPairGenerator.ECDHC", PREFIX + "KeyPairGeneratorSpi$ECDHC");
1274- provider.addAlgorithm("KeyPairGenerator.ECIES", PREFIX + "KeyPairGeneratorSpi$ECDH");
1275- provider.addAlgorithm("KeyPairGenerator.ECMQV", PREFIX + "KeyPairGeneratorSpi$ECMQV");
Brian Carlstrome1142c12013-01-30 18:26:40 -08001276-
1277- provider.addAlgorithm("Cipher.ECIES", PREFIX + "IESCipher$ECIES");
1278- provider.addAlgorithm("Cipher.ECIESwithAES", PREFIX + "IESCipher$ECIESwithAES");
1279- provider.addAlgorithm("Cipher.ECIESWITHAES", PREFIX + "IESCipher$ECIESwithAES");
1280- provider.addAlgorithm("Cipher.ECIESwithDESEDE", PREFIX + "IESCipher$ECIESwithDESede");
1281- provider.addAlgorithm("Cipher.ECIESWITHDESEDE", PREFIX + "IESCipher$ECIESwithDESede");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001282+ // BEGIN android-removed
1283+ // provider.addAlgorithm("KeyPairGenerator.ECDSA", PREFIX + "KeyPairGeneratorSpi$ECDSA");
1284+ // provider.addAlgorithm("KeyPairGenerator.ECDH", PREFIX + "KeyPairGeneratorSpi$ECDH");
1285+ // provider.addAlgorithm("KeyPairGenerator.ECDHC", PREFIX + "KeyPairGeneratorSpi$ECDHC");
1286+ // provider.addAlgorithm("KeyPairGenerator.ECIES", PREFIX + "KeyPairGeneratorSpi$ECDH");
1287+ // provider.addAlgorithm("KeyPairGenerator.ECMQV", PREFIX + "KeyPairGeneratorSpi$ECMQV");
Brian Carlstrome1142c12013-01-30 18:26:40 -08001288+ //
1289+ // provider.addAlgorithm("Cipher.ECIES", PREFIX + "IESCipher$ECIES");
1290+ // provider.addAlgorithm("Cipher.ECIESwithAES", PREFIX + "IESCipher$ECIESwithAES");
1291+ // provider.addAlgorithm("Cipher.ECIESWITHAES", PREFIX + "IESCipher$ECIESwithAES");
1292+ // provider.addAlgorithm("Cipher.ECIESwithDESEDE", PREFIX + "IESCipher$ECIESwithDESede");
1293+ // provider.addAlgorithm("Cipher.ECIESWITHDESEDE", PREFIX + "IESCipher$ECIESwithDESede");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001294+ // END android-removed
1295
1296 provider.addAlgorithm("Signature.ECDSA", PREFIX + "SignatureSpi$ecDSA");
1297 provider.addAlgorithm("Signature.NONEwithECDSA", PREFIX + "SignatureSpi$ecDSAnone");
Kenny Root5db505e2013-12-11 16:35:05 -08001298@@ -65,32 +77,36 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001299 provider.addAlgorithm("Alg.Alias.Signature.SHA1WithECDSA", "ECDSA");
1300 provider.addAlgorithm("Alg.Alias.Signature.ECDSAWithSHA1", "ECDSA");
1301 provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10045.4.1", "ECDSA");
1302- provider.addAlgorithm("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA");
Kenny Root5db505e2013-12-11 16:35:05 -08001303-
1304- provider.addAlgorithm("Signature.DETECDSA", PREFIX + "SignatureSpi$ecDetDSA");
1305- provider.addAlgorithm("Signature.SHA1WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA");
1306- provider.addAlgorithm("Signature.SHA224WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA224");
1307- provider.addAlgorithm("Signature.SHA256WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA256");
1308- provider.addAlgorithm("Signature.SHA384WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA384");
1309- provider.addAlgorithm("Signature.SHA512WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA512");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001310+ // BEGIN android-removed
1311+ // provider.addAlgorithm("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA");
Kenny Root5db505e2013-12-11 16:35:05 -08001312+ //
1313+ // provider.addAlgorithm("Signature.DETECDSA", PREFIX + "SignatureSpi$ecDetDSA");
1314+ // provider.addAlgorithm("Signature.SHA1WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA");
1315+ // provider.addAlgorithm("Signature.SHA224WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA224");
1316+ // provider.addAlgorithm("Signature.SHA256WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA256");
1317+ // provider.addAlgorithm("Signature.SHA384WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA384");
1318+ // provider.addAlgorithm("Signature.SHA512WITHDETECDSA", PREFIX + "SignatureSpi$ecDetDSA512");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001319+ // END android-removed
Kenny Root87490ac2013-09-26 11:06:21 -07001320
1321 addSignatureAlgorithm(provider, "SHA224", "ECDSA", PREFIX + "SignatureSpi$ecDSA224", X9ObjectIdentifiers.ecdsa_with_SHA224);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001322 addSignatureAlgorithm(provider, "SHA256", "ECDSA", PREFIX + "SignatureSpi$ecDSA256", X9ObjectIdentifiers.ecdsa_with_SHA256);
1323 addSignatureAlgorithm(provider, "SHA384", "ECDSA", PREFIX + "SignatureSpi$ecDSA384", X9ObjectIdentifiers.ecdsa_with_SHA384);
1324 addSignatureAlgorithm(provider, "SHA512", "ECDSA", PREFIX + "SignatureSpi$ecDSA512", X9ObjectIdentifiers.ecdsa_with_SHA512);
1325- addSignatureAlgorithm(provider, "RIPEMD160", "ECDSA", PREFIX + "SignatureSpi$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160);
1326-
1327- provider.addAlgorithm("Signature.SHA1WITHECNR", PREFIX + "SignatureSpi$ecNR");
1328- provider.addAlgorithm("Signature.SHA224WITHECNR", PREFIX + "SignatureSpi$ecNR224");
1329- provider.addAlgorithm("Signature.SHA256WITHECNR", PREFIX + "SignatureSpi$ecNR256");
1330- provider.addAlgorithm("Signature.SHA384WITHECNR", PREFIX + "SignatureSpi$ecNR384");
1331- provider.addAlgorithm("Signature.SHA512WITHECNR", PREFIX + "SignatureSpi$ecNR512");
1332-
1333- addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1);
1334- addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224);
1335- addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256);
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001336- addSignatureAlgorithm(provider, "SHA384", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA384", EACObjectIdentifiers.id_TA_ECDSA_SHA_384);
1337- addSignatureAlgorithm(provider, "SHA512", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA512", EACObjectIdentifiers.id_TA_ECDSA_SHA_512);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001338+ // BEGIN android-removed
1339+ // addSignatureAlgorithm(provider, "RIPEMD160", "ECDSA", PREFIX + "SignatureSpi$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160);
1340+ //
1341+ // provider.addAlgorithm("Signature.SHA1WITHECNR", PREFIX + "SignatureSpi$ecNR");
1342+ // provider.addAlgorithm("Signature.SHA224WITHECNR", PREFIX + "SignatureSpi$ecNR224");
1343+ // provider.addAlgorithm("Signature.SHA256WITHECNR", PREFIX + "SignatureSpi$ecNR256");
1344+ // provider.addAlgorithm("Signature.SHA384WITHECNR", PREFIX + "SignatureSpi$ecNR384");
1345+ // provider.addAlgorithm("Signature.SHA512WITHECNR", PREFIX + "SignatureSpi$ecNR512");
1346+ //
1347+ // addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1);
1348+ // addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224);
1349+ // addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256);
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001350+ // addSignatureAlgorithm(provider, "SHA384", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA384", EACObjectIdentifiers.id_TA_ECDSA_SHA_384);
1351+ // addSignatureAlgorithm(provider, "SHA512", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA512", EACObjectIdentifiers.id_TA_ECDSA_SHA_512);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001352+ // END android-removed
1353 }
1354 }
1355 }
Kenny Root5db505e2013-12-11 16:35:05 -08001356diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/RSA.java
1357--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-12-03 20:18:20.000000000 +0000
1358+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001359@@ -3,7 +3,9 @@
1360 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
1361 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
1362 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
1363-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
1364+// BEGIN android-removed
1365+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
1366+// END android-removed
1367 import org.bouncycastle.asn1.x509.X509ObjectIdentifiers;
1368 import org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi;
1369 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
1370@@ -24,41 +26,49 @@
1371 public void configure(ConfigurableProvider provider)
1372 {
1373 provider.addAlgorithm("AlgorithmParameters.OAEP", PREFIX + "AlgorithmParametersSpi$OAEP");
1374- provider.addAlgorithm("AlgorithmParameters.PSS", PREFIX + "AlgorithmParametersSpi$PSS");
1375-
1376- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS");
1377- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS");
1378-
1379- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS");
1380- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS");
1381- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS");
1382- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS");
1383-
1384- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS");
1385- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS");
1386- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS");
1387- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS");
1388- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS");
1389- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS");
1390- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS");
1391- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAANDMGF1", "PSS");
1392+ // BEGIN android-removed
1393+ // provider.addAlgorithm("AlgorithmParameters.PSS", PREFIX + "AlgorithmParametersSpi$PSS");
1394+ //
1395+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS");
1396+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS");
1397+ //
1398+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS");
1399+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS");
1400+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS");
1401+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS");
1402+ //
1403+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS");
1404+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS");
1405+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS");
1406+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS");
1407+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS");
1408+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS");
1409+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS");
1410+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAANDMGF1", "PSS");
1411+ // END android-removed
1412
1413 provider.addAlgorithm("Cipher.RSA", PREFIX + "CipherSpi$NoPadding");
1414- provider.addAlgorithm("Cipher.RSA/RAW", PREFIX + "CipherSpi$NoPadding");
1415- provider.addAlgorithm("Cipher.RSA/PKCS1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1416- provider.addAlgorithm("Cipher.1.2.840.113549.1.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1417- provider.addAlgorithm("Cipher.2.5.8.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1418- provider.addAlgorithm("Cipher.RSA/1", PREFIX + "CipherSpi$PKCS1v1_5Padding_PrivateOnly");
1419- provider.addAlgorithm("Cipher.RSA/2", PREFIX + "CipherSpi$PKCS1v1_5Padding_PublicOnly");
1420- provider.addAlgorithm("Cipher.RSA/OAEP", PREFIX + "CipherSpi$OAEPPadding");
1421- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, PREFIX + "CipherSpi$OAEPPadding");
1422- provider.addAlgorithm("Cipher.RSA/ISO9796-1", PREFIX + "CipherSpi$ISO9796d1Padding");
1423+ // BEGIN android-changed
1424+ provider.addAlgorithm("Alg.Alias.Cipher.RSA/RAW", "RSA");
1425+ // END android-changed
1426+ // BEGIN android-removed
1427+ // provider.addAlgorithm("Cipher.RSA/PKCS1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1428+ // provider.addAlgorithm("Cipher.1.2.840.113549.1.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1429+ // provider.addAlgorithm("Cipher.2.5.8.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding");
1430+ // provider.addAlgorithm("Cipher.RSA/1", PREFIX + "CipherSpi$PKCS1v1_5Padding_PrivateOnly");
1431+ // provider.addAlgorithm("Cipher.RSA/2", PREFIX + "CipherSpi$PKCS1v1_5Padding_PublicOnly");
1432+ // provider.addAlgorithm("Cipher.RSA/OAEP", PREFIX + "CipherSpi$OAEPPadding");
1433+ // provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, PREFIX + "CipherSpi$OAEPPadding");
1434+ // provider.addAlgorithm("Cipher.RSA/ISO9796-1", PREFIX + "CipherSpi$ISO9796d1Padding");
1435+ // END android-removed
1436
1437 provider.addAlgorithm("Alg.Alias.Cipher.RSA//RAW", "RSA");
1438 provider.addAlgorithm("Alg.Alias.Cipher.RSA//NOPADDING", "RSA");
1439- provider.addAlgorithm("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1");
1440- provider.addAlgorithm("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP");
1441- provider.addAlgorithm("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1");
1442+ // BEGIN android-removed
1443+ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1");
1444+ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP");
1445+ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1");
1446+ // END android-removed
1447
1448 provider.addAlgorithm("KeyFactory.RSA", PREFIX + "KeyFactorySpi");
1449 provider.addAlgorithm("KeyPairGenerator.RSA", PREFIX + "KeyPairGeneratorSpi");
Kenny Root87490ac2013-09-26 11:06:21 -07001450@@ -68,73 +78,81 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001451 registerOid(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA", keyFact);
1452 registerOid(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA", keyFact);
1453 registerOid(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "RSA", keyFact);
1454- registerOid(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "RSA", keyFact);
1455-
1456- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA");
1457- registerOidAlgorithmParameters(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA");
1458- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP");
1459- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS");
1460-
1461-
1462- provider.addAlgorithm("Signature.RSASSA-PSS", PREFIX + "PSSSignatureSpi$PSSwithRSA");
1463- provider.addAlgorithm("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA");
1464- provider.addAlgorithm("Signature.OID." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA");
1465-
1466- provider.addAlgorithm("Signature.SHA224withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA224withRSA");
1467- provider.addAlgorithm("Signature.SHA256withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA256withRSA");
1468- provider.addAlgorithm("Signature.SHA384withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA384withRSA");
1469- provider.addAlgorithm("Signature.SHA512withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA512withRSA");
1470-
1471- provider.addAlgorithm("Signature.RSA", PREFIX + "DigestSignatureSpi$noneRSA");
1472- provider.addAlgorithm("Signature.RAWRSASSA-PSS", PREFIX + "PSSSignatureSpi$nonePSS");
1473-
1474- provider.addAlgorithm("Alg.Alias.Signature.RAWRSA", "RSA");
1475- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSA", "RSA");
1476- provider.addAlgorithm("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS");
1477- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS");
1478- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS");
1479- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAANDMGF1", "RAWRSASSA-PSS");
1480- provider.addAlgorithm("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS");
1481-
1482-
1483- provider.addAlgorithm("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS");
1484- provider.addAlgorithm("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS");
1485- provider.addAlgorithm("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS");
1486- provider.addAlgorithm("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS");
1487- provider.addAlgorithm("Alg.Alias.Signature.SHA224WITHRSAANDMGF1", "SHA224withRSA/PSS");
1488- provider.addAlgorithm("Alg.Alias.Signature.SHA256WITHRSAANDMGF1", "SHA256withRSA/PSS");
1489- provider.addAlgorithm("Alg.Alias.Signature.SHA384WITHRSAANDMGF1", "SHA384withRSA/PSS");
1490- provider.addAlgorithm("Alg.Alias.Signature.SHA512WITHRSAANDMGF1", "SHA512withRSA/PSS");
1491-
1492- if (provider.hasAlgorithm("MessageDigest", "MD2"))
1493- {
1494- addDigestSignature(provider, "MD2", PREFIX + "DigestSignatureSpi$MD2", PKCSObjectIdentifiers.md2WithRSAEncryption);
1495- }
1496-
Brian Carlstrome1142c12013-01-30 18:26:40 -08001497- if (provider.hasAlgorithm("MessageDigest", "MD4"))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001498- {
1499- addDigestSignature(provider, "MD4", PREFIX + "DigestSignatureSpi$MD4", PKCSObjectIdentifiers.md4WithRSAEncryption);
1500- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001501+ // BEGIN android-removed
1502+ // registerOid(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "RSA", keyFact);
1503+ //
1504+ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA");
1505+ // registerOidAlgorithmParameters(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA");
1506+ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP");
1507+ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS");
1508+ //
1509+ //
1510+ // provider.addAlgorithm("Signature.RSASSA-PSS", PREFIX + "PSSSignatureSpi$PSSwithRSA");
1511+ // provider.addAlgorithm("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA");
1512+ // provider.addAlgorithm("Signature.OID." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA");
1513+ //
1514+ // provider.addAlgorithm("Signature.SHA224withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA224withRSA");
1515+ // provider.addAlgorithm("Signature.SHA256withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA256withRSA");
1516+ // provider.addAlgorithm("Signature.SHA384withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA384withRSA");
1517+ // provider.addAlgorithm("Signature.SHA512withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA512withRSA");
1518+ //
1519+ // provider.addAlgorithm("Signature.RSA", PREFIX + "DigestSignatureSpi$noneRSA");
1520+ // provider.addAlgorithm("Signature.RAWRSASSA-PSS", PREFIX + "PSSSignatureSpi$nonePSS");
1521+ //
1522+ // provider.addAlgorithm("Alg.Alias.Signature.RAWRSA", "RSA");
1523+ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSA", "RSA");
1524+ // provider.addAlgorithm("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS");
1525+ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS");
1526+ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS");
1527+ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAANDMGF1", "RAWRSASSA-PSS");
1528+ // provider.addAlgorithm("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS");
1529+ //
1530+ //
1531+ // provider.addAlgorithm("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS");
1532+ // provider.addAlgorithm("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS");
1533+ // provider.addAlgorithm("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS");
1534+ // provider.addAlgorithm("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS");
1535+ // provider.addAlgorithm("Alg.Alias.Signature.SHA224WITHRSAANDMGF1", "SHA224withRSA/PSS");
1536+ // provider.addAlgorithm("Alg.Alias.Signature.SHA256WITHRSAANDMGF1", "SHA256withRSA/PSS");
1537+ // provider.addAlgorithm("Alg.Alias.Signature.SHA384WITHRSAANDMGF1", "SHA384withRSA/PSS");
1538+ // provider.addAlgorithm("Alg.Alias.Signature.SHA512WITHRSAANDMGF1", "SHA512withRSA/PSS");
1539+ //
1540+ // if (provider.hasAlgorithm("MessageDigest", "MD2"))
1541+ // {
1542+ // addDigestSignature(provider, "MD2", PREFIX + "DigestSignatureSpi$MD2", PKCSObjectIdentifiers.md2WithRSAEncryption);
1543+ // }
1544+ //
Brian Carlstrom036093e2012-10-31 22:41:05 -07001545+ // if (provider.hasAlgorithm("MessageDigest", "MD4"))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001546+ // {
1547+ // addDigestSignature(provider, "MD4", PREFIX + "DigestSignatureSpi$MD4", PKCSObjectIdentifiers.md4WithRSAEncryption);
1548+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001549+ // END android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -08001550
1551 if (provider.hasAlgorithm("MessageDigest", "MD5"))
Brian Carlstrom036093e2012-10-31 22:41:05 -07001552 {
1553 addDigestSignature(provider, "MD5", PREFIX + "DigestSignatureSpi$MD5", PKCSObjectIdentifiers.md5WithRSAEncryption);
1554- provider.addAlgorithm("Signature.MD5withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$MD5WithRSAEncryption");
1555- provider.addAlgorithm("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2");
1556+ // BEGIN android-removed
1557+ // provider.addAlgorithm("Signature.MD5withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$MD5WithRSAEncryption");
1558+ // provider.addAlgorithm("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2");
1559+ // END android-removed
1560 }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001561
1562 if (provider.hasAlgorithm("MessageDigest", "SHA1"))
1563 {
1564- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS");
1565- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS");
1566- provider.addAlgorithm("Signature.SHA1withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA1withRSA");
1567- provider.addAlgorithm("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS");
1568- provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHRSAANDMGF1", "SHA1withRSA/PSS");
1569+ // BEGIN android-removed
1570+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS");
1571+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS");
1572+ // provider.addAlgorithm("Signature.SHA1withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA1withRSA");
1573+ // provider.addAlgorithm("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS");
1574+ // provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHRSAANDMGF1", "SHA1withRSA/PSS");
1575+ // END android-removed
1576
1577 addDigestSignature(provider, "SHA1", PREFIX + "DigestSignatureSpi$SHA1", PKCSObjectIdentifiers.sha1WithRSAEncryption);
1578
1579- provider.addAlgorithm("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2");
1580- provider.addAlgorithm("Signature.SHA1withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$SHA1WithRSAEncryption");
1581+ // BEGIN android-removed
1582+ // provider.addAlgorithm("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2");
1583+ // provider.addAlgorithm("Signature.SHA1withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$SHA1WithRSAEncryption");
1584+ // END android-removed
1585 provider.addAlgorithm("Alg.Alias.Signature." + OIWObjectIdentifiers.sha1WithRSA, "SHA1WITHRSA");
1586 provider.addAlgorithm("Alg.Alias.Signature.OID." + OIWObjectIdentifiers.sha1WithRSA, "SHA1WITHRSA");
1587 }
Kenny Root87490ac2013-09-26 11:06:21 -07001588@@ -144,25 +162,27 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001589 addDigestSignature(provider, "SHA384", PREFIX + "DigestSignatureSpi$SHA384", PKCSObjectIdentifiers.sha384WithRSAEncryption);
1590 addDigestSignature(provider, "SHA512", PREFIX + "DigestSignatureSpi$SHA512", PKCSObjectIdentifiers.sha512WithRSAEncryption);
1591
1592- if (provider.hasAlgorithm("MessageDigest", "RIPEMD128"))
1593- {
1594- addDigestSignature(provider, "RIPEMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
1595- addDigestSignature(provider, "RMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", null);
1596- }
1597-
1598- if (provider.hasAlgorithm("MessageDigest", "RIPEMD160"))
1599- {
1600- addDigestSignature(provider, "RIPEMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
1601- addDigestSignature(provider, "RMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", null);
1602- provider.addAlgorithm("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2");
1603- provider.addAlgorithm("Signature.RIPEMD160withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$RIPEMD160WithRSAEncryption");
1604- }
1605-
1606- if (provider.hasAlgorithm("MessageDigest", "RIPEMD256"))
1607- {
1608- addDigestSignature(provider, "RIPEMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
1609- addDigestSignature(provider, "RMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", null);
1610- }
1611+ // BEGIN android-removed
1612+ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD128"))
1613+ // {
1614+ // addDigestSignature(provider, "RIPEMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
1615+ // addDigestSignature(provider, "RMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", null);
1616+ // }
1617+ //
1618+ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD160"))
1619+ // {
1620+ // addDigestSignature(provider, "RIPEMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
1621+ // addDigestSignature(provider, "RMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", null);
1622+ // provider.addAlgorithm("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2");
1623+ // provider.addAlgorithm("Signature.RIPEMD160withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$RIPEMD160WithRSAEncryption");
1624+ // }
1625+ //
1626+ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD256"))
1627+ // {
1628+ // addDigestSignature(provider, "RIPEMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
1629+ // addDigestSignature(provider, "RMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", null);
1630+ // }
1631+ // END android-removed
1632 }
1633
1634 private void addDigestSignature(
Kenny Root5db505e2013-12-11 16:35:05 -08001635diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/X509.java
1636--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2013-12-03 20:18:20.000000000 +0000
1637+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001638@@ -18,8 +18,10 @@
1639
1640 public void configure(ConfigurableProvider provider)
1641 {
1642- provider.addAlgorithm("KeyFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory");
1643- provider.addAlgorithm("Alg.Alias.KeyFactory.X509", "X.509");
1644+ // BEGIN android-removed
1645+ // provider.addAlgorithm("KeyFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory");
1646+ // provider.addAlgorithm("Alg.Alias.KeyFactory.X509", "X.509");
1647+ // END android-removed
1648
1649 //
1650 // certificate factories.
Kenny Root5db505e2013-12-11 16:35:05 -08001651diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java
1652--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2013-12-03 20:18:20.000000000 +0000
1653+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2013-12-12 00:35:05.000000000 +0000
1654@@ -23,13 +23,20 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001655 import org.bouncycastle.crypto.DSA;
1656 import org.bouncycastle.crypto.Digest;
1657 import org.bouncycastle.crypto.digests.NullDigest;
1658-import org.bouncycastle.crypto.digests.SHA1Digest;
1659-import org.bouncycastle.crypto.digests.SHA224Digest;
1660-import org.bouncycastle.crypto.digests.SHA256Digest;
1661-import org.bouncycastle.crypto.digests.SHA384Digest;
1662-import org.bouncycastle.crypto.digests.SHA512Digest;
1663+// BEGIN android-added
1664+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
1665+// END android-added
1666+// BEGIN android-removed
1667+// import org.bouncycastle.crypto.digests.SHA1Digest;
1668+// import org.bouncycastle.crypto.digests.SHA224Digest;
1669+// import org.bouncycastle.crypto.digests.SHA256Digest;
1670+// import org.bouncycastle.crypto.digests.SHA384Digest;
1671+// import org.bouncycastle.crypto.digests.SHA512Digest;
1672+// END android-removed
1673 import org.bouncycastle.crypto.params.ParametersWithRandom;
Kenny Root5db505e2013-12-11 16:35:05 -08001674-import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
1675+// BEGIN android-removed
1676+// import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
1677+// END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001678
1679 public class DSASigner
Kenny Root5db505e2013-12-11 16:35:05 -08001680 extends SignatureSpi
1681@@ -217,90 +224,102 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001682 {
1683 public stdDSA()
1684 {
1685- super(new SHA1Digest(), new org.bouncycastle.crypto.signers.DSASigner());
1686+ // BEGIN android-changed
1687+ super(AndroidDigestFactory.getSHA1(), new org.bouncycastle.crypto.signers.DSASigner());
1688+ // END android-changed
1689 }
1690 }
1691
Kenny Root5db505e2013-12-11 16:35:05 -08001692- static public class detDSA
1693- extends DSASigner
1694- {
1695- public detDSA()
1696- {
1697- super(new SHA1Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA1Digest())));
1698- }
1699- }
1700+ // BEGIN android-removed
1701+ // static public class detDSA
1702+ // extends DSASigner
1703+ // {
1704+ // public detDSA()
1705+ // {
1706+ // super(new SHA1Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA1Digest())));
1707+ // }
1708+ // }
1709+ // END android-removed
1710
1711 static public class dsa224
1712 extends DSASigner
Kenny Root87490ac2013-09-26 11:06:21 -07001713 {
1714 public dsa224()
1715 {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001716- super(new SHA224Digest(), new org.bouncycastle.crypto.signers.DSASigner());
Kenny Root87490ac2013-09-26 11:06:21 -07001717+ // BEGIN android-changed
1718+ super(AndroidDigestFactory.getSHA224(), new org.bouncycastle.crypto.signers.DSASigner());
1719+ // END android-changed
1720 }
1721 }
Kenny Root5db505e2013-12-11 16:35:05 -08001722
1723- static public class detDSA224
1724- extends DSASigner
1725- {
1726- public detDSA224()
1727- {
1728- super(new SHA224Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA224Digest())));
1729- }
1730- }
1731+ // BEGIN android-removed
1732+ // static public class detDSA224
1733+ // extends DSASigner
1734+ // {
1735+ // public detDSA224()
1736+ // {
1737+ // super(new SHA224Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA224Digest())));
1738+ // }
1739+ // }
1740+ // END android-removed
1741
1742 static public class dsa256
1743 extends DSASigner
Kenny Root87490ac2013-09-26 11:06:21 -07001744 {
1745 public dsa256()
1746 {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001747- super(new SHA256Digest(), new org.bouncycastle.crypto.signers.DSASigner());
Kenny Root87490ac2013-09-26 11:06:21 -07001748+ // BEGIN android-changed
1749+ super(AndroidDigestFactory.getSHA256(), new org.bouncycastle.crypto.signers.DSASigner());
1750+ // END android-changed
1751 }
1752 }
Kenny Root5db505e2013-12-11 16:35:05 -08001753
1754- static public class detDSA256
1755- extends DSASigner
1756- {
1757- public detDSA256()
1758- {
1759- super(new SHA256Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA256Digest())));
1760- }
1761- }
1762-
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001763- static public class dsa384
1764- extends DSASigner
1765- {
1766- public dsa384()
1767- {
1768- super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner());
1769- }
1770- }
Kenny Root5db505e2013-12-11 16:35:05 -08001771-
1772- static public class detDSA384
1773- extends DSASigner
1774- {
1775- public detDSA384()
1776- {
1777- super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA384Digest())));
1778- }
1779- }
1780-
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001781- static public class dsa512
1782- extends DSASigner
1783- {
1784- public dsa512()
1785- {
1786- super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner());
1787- }
1788- }
Kenny Root5db505e2013-12-11 16:35:05 -08001789-
1790- static public class detDSA512
1791- extends DSASigner
1792- {
1793- public detDSA512()
1794- {
1795- super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA512Digest())));
1796- }
1797- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001798+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08001799+ // static public class detDSA256
1800+ // extends DSASigner
1801+ // {
1802+ // public detDSA256()
1803+ // {
1804+ // super(new SHA256Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA256Digest())));
1805+ // }
1806+ // }
1807+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001808+ // static public class dsa384
1809+ // extends DSASigner
1810+ // {
1811+ // public dsa384()
1812+ // {
1813+ // super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner());
1814+ // }
1815+ // }
1816+ //
Kenny Root5db505e2013-12-11 16:35:05 -08001817+ // static public class detDSA384
1818+ // extends DSASigner
1819+ // {
1820+ // public detDSA384()
1821+ // {
1822+ // super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA384Digest())));
1823+ // }
1824+ // }
1825+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001826+ // static public class dsa512
1827+ // extends DSASigner
1828+ // {
1829+ // public dsa512()
1830+ // {
1831+ // super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner());
1832+ // }
1833+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08001834+ //
1835+ // static public class detDSA512
1836+ // extends DSASigner
1837+ // {
1838+ // public detDSA512()
1839+ // {
1840+ // super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(new SHA512Digest())));
1841+ // }
1842+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001843+ // END android-removed
1844
1845 static public class noneDSA
1846 extends DSASigner
Kenny Root5db505e2013-12-11 16:35:05 -08001847diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java
1848--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-12-03 20:18:20.000000000 +0000
1849+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001850@@ -23,21 +23,27 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001851 import org.bouncycastle.crypto.CipherParameters;
1852 import org.bouncycastle.crypto.DerivationFunction;
1853 import org.bouncycastle.crypto.agreement.ECDHBasicAgreement;
1854-import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement;
1855-import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement;
1856-import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters;
1857-import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator;
1858+// BEGIN android-removed
1859+// import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement;
1860+// import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement;
1861+// import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters;
1862+// import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator;
1863+// END android-removed
1864 import org.bouncycastle.crypto.digests.SHA1Digest;
1865 import org.bouncycastle.crypto.params.ECDomainParameters;
1866 import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
1867 import org.bouncycastle.crypto.params.ECPublicKeyParameters;
1868-import org.bouncycastle.crypto.params.MQVPrivateParameters;
1869-import org.bouncycastle.crypto.params.MQVPublicParameters;
1870+// BEGIN android-removed
1871+// import org.bouncycastle.crypto.params.MQVPrivateParameters;
1872+// import org.bouncycastle.crypto.params.MQVPublicParameters;
1873+// END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001874 import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001875 import org.bouncycastle.jce.interfaces.ECPrivateKey;
1876 import org.bouncycastle.jce.interfaces.ECPublicKey;
1877-import org.bouncycastle.jce.interfaces.MQVPrivateKey;
1878-import org.bouncycastle.jce.interfaces.MQVPublicKey;
1879+// BEGIN android-removed
1880+// import org.bouncycastle.jce.interfaces.MQVPrivateKey;
1881+// import org.bouncycastle.jce.interfaces.MQVPublicKey;
1882+// END android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -08001883 import org.bouncycastle.util.Integers;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001884
1885 /**
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001886@@ -71,7 +77,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001887 private BigInteger result;
1888 private ECDomainParameters parameters;
1889 private BasicAgreement agreement;
1890- private DerivationFunction kdf;
1891+ // BEGIN android-removed
1892+ // private DerivationFunction kdf;
1893+ // END android-removed
1894
1895 private byte[] bigIntToBytes(
1896 BigInteger r)
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001897@@ -86,7 +94,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001898 {
1899 this.kaAlgorithm = kaAlgorithm;
1900 this.agreement = agreement;
1901- this.kdf = kdf;
1902+ // BEGIN android-removed
1903+ // this.kdf = kdf;
1904+ // END android-removed
1905 }
1906
1907 protected Key engineDoPhase(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001908@@ -105,25 +115,27 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001909 }
1910
1911 CipherParameters pubKey;
1912- if (agreement instanceof ECMQVBasicAgreement)
1913- {
1914- if (!(key instanceof MQVPublicKey))
1915- {
1916- throw new InvalidKeyException(kaAlgorithm + " key agreement requires "
1917- + getSimpleName(MQVPublicKey.class) + " for doPhase");
1918- }
1919-
1920- MQVPublicKey mqvPubKey = (MQVPublicKey)key;
1921- ECPublicKeyParameters staticKey = (ECPublicKeyParameters)
1922- ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey());
1923- ECPublicKeyParameters ephemKey = (ECPublicKeyParameters)
1924- ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey());
1925-
1926- pubKey = new MQVPublicParameters(staticKey, ephemKey);
1927-
1928- // TODO Validate that all the keys are using the same parameters?
1929- }
1930- else
1931+ // BEGIN android-removed
1932+ // if (agreement instanceof ECMQVBasicAgreement)
1933+ // {
1934+ // if (!(key instanceof MQVPublicKey))
1935+ // {
1936+ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires "
1937+ // + getSimpleName(MQVPublicKey.class) + " for doPhase");
1938+ // }
1939+ //
1940+ // MQVPublicKey mqvPubKey = (MQVPublicKey)key;
1941+ // ECPublicKeyParameters staticKey = (ECPublicKeyParameters)
1942+ // ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey());
1943+ // ECPublicKeyParameters ephemKey = (ECPublicKeyParameters)
1944+ // ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey());
1945+ //
1946+ // pubKey = new MQVPublicParameters(staticKey, ephemKey);
1947+ //
1948+ // // TODO Validate that all the keys are using the same parameters?
1949+ // }
1950+ // else
1951+ // END android-removed
1952 {
Brian Carlstrome1142c12013-01-30 18:26:40 -08001953 if (!(key instanceof PublicKey))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001954 {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001955@@ -144,11 +156,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001956 protected byte[] engineGenerateSecret()
1957 throws IllegalStateException
1958 {
1959- if (kdf != null)
1960- {
1961- throw new UnsupportedOperationException(
1962- "KDF can only be used when algorithm is known");
1963- }
1964+ // BEGIN android-removed
1965+ // if (kdf != null)
1966+ // {
1967+ // throw new UnsupportedOperationException(
1968+ // "KDF can only be used when algorithm is known");
1969+ // }
1970+ // END android-removed
1971
1972 return bigIntToBytes(result);
1973 }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07001974@@ -176,23 +190,25 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001975 {
1976 byte[] secret = bigIntToBytes(result);
1977
1978- if (kdf != null)
1979- {
1980- if (!algorithms.containsKey(algorithm))
1981- {
1982- throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm);
1983- }
1984-
1985- int keySize = ((Integer)algorithms.get(algorithm)).intValue();
1986-
Kenny Root5db505e2013-12-11 16:35:05 -08001987- DHKDFParameters params = new DHKDFParameters(new ASN1ObjectIdentifier(algorithm), keySize, secret);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07001988-
1989- byte[] keyBytes = new byte[keySize / 8];
1990- kdf.init(params);
1991- kdf.generateBytes(keyBytes, 0, keyBytes.length);
1992- secret = keyBytes;
1993- }
1994- else
1995+ // BEGIN android-removed
1996+ // if (kdf != null)
1997+ // {
1998+ // if (!algorithms.containsKey(algorithm))
1999+ // {
2000+ // throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm);
2001+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08002002+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002003+ // int keySize = ((Integer)algorithms.get(algorithm)).intValue();
2004+ //
Kenny Root5db505e2013-12-11 16:35:05 -08002005+ // DHKDFParameters params = new DHKDFParameters(new ASN1ObjectIdentifier(algorithm), keySize, secret);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002006+ //
2007+ // byte[] keyBytes = new byte[keySize / 8];
2008+ // kdf.init(params);
2009+ // kdf.generateBytes(keyBytes, 0, keyBytes.length);
2010+ // secret = keyBytes;
2011+ // }
2012+ // else
2013+ // END android-removed
2014 {
2015 // TODO Should we be ensuring the key is the right length?
2016 }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002017@@ -206,6 +222,12 @@
Alex Klyubinb4d3d292013-03-19 12:26:57 -07002018 SecureRandom random)
2019 throws InvalidKeyException, InvalidAlgorithmParameterException
2020 {
2021+ // BEGIN android-added
2022+ if (params != null)
2023+ {
2024+ throw new InvalidAlgorithmParameterException("No algorithm parameters supported");
2025+ }
2026+ // END android-added
2027 initFromKey(key);
2028 }
2029
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002030@@ -220,35 +242,37 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002031 private void initFromKey(Key key)
2032 throws InvalidKeyException
2033 {
2034- if (agreement instanceof ECMQVBasicAgreement)
2035- {
2036- if (!(key instanceof MQVPrivateKey))
2037- {
2038- throw new InvalidKeyException(kaAlgorithm + " key agreement requires "
2039- + getSimpleName(MQVPrivateKey.class) + " for initialisation");
2040- }
2041-
2042- MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key;
2043- ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters)
2044- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey());
2045- ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters)
2046- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey());
2047-
2048- ECPublicKeyParameters ephemPubKey = null;
2049- if (mqvPrivKey.getEphemeralPublicKey() != null)
2050- {
2051- ephemPubKey = (ECPublicKeyParameters)
2052- ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey());
2053- }
2054-
2055- MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey);
2056- this.parameters = staticPrivKey.getParameters();
2057-
2058- // TODO Validate that all the keys are using the same parameters?
2059-
2060- agreement.init(localParams);
2061- }
2062- else
2063+ // BEGIN android-removed
2064+ // if (agreement instanceof ECMQVBasicAgreement)
2065+ // {
2066+ // if (!(key instanceof MQVPrivateKey))
2067+ // {
2068+ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires "
2069+ // + getSimpleName(MQVPrivateKey.class) + " for initialisation");
2070+ // }
2071+ //
2072+ // MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key;
2073+ // ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters)
2074+ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey());
2075+ // ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters)
2076+ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey());
2077+ //
2078+ // ECPublicKeyParameters ephemPubKey = null;
2079+ // if (mqvPrivKey.getEphemeralPublicKey() != null)
2080+ // {
2081+ // ephemPubKey = (ECPublicKeyParameters)
2082+ // ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey());
2083+ // }
2084+ //
2085+ // MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey);
2086+ // this.parameters = staticPrivKey.getParameters();
2087+ //
2088+ // // TODO Validate that all the keys are using the same parameters?
2089+ //
2090+ // agreement.init(localParams);
2091+ // }
2092+ // else
2093+ // END android-removed
2094 {
Brian Carlstrome1142c12013-01-30 18:26:40 -08002095 if (!(key instanceof PrivateKey))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002096 {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002097@@ -279,39 +303,41 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002098 }
2099 }
2100
2101- public static class DHC
2102- extends KeyAgreementSpi
2103- {
2104- public DHC()
2105- {
2106- super("ECDHC", new ECDHCBasicAgreement(), null);
2107- }
2108- }
2109-
2110- public static class MQV
2111- extends KeyAgreementSpi
2112- {
2113- public MQV()
2114- {
2115- super("ECMQV", new ECMQVBasicAgreement(), null);
2116- }
2117- }
2118-
2119- public static class DHwithSHA1KDF
2120- extends KeyAgreementSpi
2121- {
2122- public DHwithSHA1KDF()
2123- {
2124- super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest()));
2125- }
2126- }
2127-
2128- public static class MQVwithSHA1KDF
2129- extends KeyAgreementSpi
2130- {
2131- public MQVwithSHA1KDF()
2132- {
2133- super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest()));
2134- }
2135- }
2136+ // BEGIN android-removed
2137+ // public static class DHC
2138+ // extends KeyAgreementSpi
2139+ // {
2140+ // public DHC()
2141+ // {
2142+ // super("ECDHC", new ECDHCBasicAgreement(), null);
2143+ // }
2144+ // }
2145+ //
2146+ // public static class MQV
2147+ // extends KeyAgreementSpi
2148+ // {
2149+ // public MQV()
2150+ // {
2151+ // super("ECMQV", new ECMQVBasicAgreement(), null);
2152+ // }
2153+ // }
2154+ //
2155+ // public static class DHwithSHA1KDF
2156+ // extends KeyAgreementSpi
2157+ // {
2158+ // public DHwithSHA1KDF()
2159+ // {
2160+ // super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest()));
2161+ // }
2162+ // }
2163+ //
2164+ // public static class MQVwithSHA1KDF
2165+ // extends KeyAgreementSpi
2166+ // {
2167+ // public MQVwithSHA1KDF()
2168+ // {
2169+ // super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest()));
2170+ // }
2171+ // }
2172+ // END android-removed
2173 }
Kenny Root5db505e2013-12-11 16:35:05 -08002174diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java
2175--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2013-12-03 20:18:20.000000000 +0000
2176+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002177@@ -201,14 +201,16 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002178 }
2179 }
2180
2181- public static class ECGOST3410
2182- extends KeyFactorySpi
2183- {
2184- public ECGOST3410()
2185- {
2186- super("ECGOST3410", BouncyCastleProvider.CONFIGURATION);
2187- }
2188- }
2189+ // BEGIN android-removed
2190+ // public static class ECGOST3410
2191+ // extends KeyFactorySpi
2192+ // {
2193+ // public ECGOST3410()
2194+ // {
2195+ // super("ECGOST3410", BouncyCastleProvider.CONFIGURATION);
2196+ // }
2197+ // }
2198+ // END android-removed
2199
2200 public static class ECDH
2201 extends KeyFactorySpi
Kenny Root5db505e2013-12-11 16:35:05 -08002202diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java
2203--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-12-03 20:18:20.000000000 +0000
2204+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-12-12 00:35:05.000000000 +0000
2205@@ -84,7 +84,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002206 SecureRandom random)
2207 {
2208 this.strength = strength;
2209+ // BEGIN android-added
2210+ if (random != null) {
2211+ // END android-added
2212 this.random = random;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002213+ // BEGIN android-added
2214+ }
2215+ // END android-added
Brian Carlstrome1142c12013-01-30 18:26:40 -08002216 ECGenParameterSpec ecParams = (ECGenParameterSpec)ecParameters.get(Integers.valueOf(strength));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002217
2218 if (ecParams != null)
Kenny Root5db505e2013-12-11 16:35:05 -08002219@@ -109,6 +115,11 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002220 SecureRandom random)
2221 throws InvalidAlgorithmParameterException
2222 {
2223+ // BEGIN android-added
2224+ if (random == null) {
2225+ random = this.random;
2226+ }
2227+ // END android-added
2228 if (params instanceof ECParameterSpec)
2229 {
2230 ECParameterSpec p = (ECParameterSpec)params;
Kenny Root5db505e2013-12-11 16:35:05 -08002231diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
2232--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-12-03 20:18:20.000000000 +0000
2233+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-12-12 00:35:05.000000000 +0000
2234@@ -16,16 +16,23 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002235 import org.bouncycastle.crypto.DSA;
2236 import org.bouncycastle.crypto.Digest;
2237 import org.bouncycastle.crypto.digests.NullDigest;
2238-import org.bouncycastle.crypto.digests.RIPEMD160Digest;
2239-import org.bouncycastle.crypto.digests.SHA1Digest;
2240-import org.bouncycastle.crypto.digests.SHA224Digest;
2241-import org.bouncycastle.crypto.digests.SHA256Digest;
2242-import org.bouncycastle.crypto.digests.SHA384Digest;
2243-import org.bouncycastle.crypto.digests.SHA512Digest;
2244+// BEGIN android-added
2245+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
2246+// END android-added
2247+// BEGIN android-removed
2248+// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
2249+// import org.bouncycastle.crypto.digests.SHA1Digest;
2250+// import org.bouncycastle.crypto.digests.SHA224Digest;
2251+// import org.bouncycastle.crypto.digests.SHA256Digest;
2252+// import org.bouncycastle.crypto.digests.SHA384Digest;
2253+// import org.bouncycastle.crypto.digests.SHA512Digest;
2254+// END android-removed
2255 import org.bouncycastle.crypto.params.ParametersWithRandom;
2256 import org.bouncycastle.crypto.signers.ECDSASigner;
2257-import org.bouncycastle.crypto.signers.ECNRSigner;
Kenny Root5db505e2013-12-11 16:35:05 -08002258-import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002259+// BEGIN android-removed
2260+// import org.bouncycastle.crypto.signers.ECNRSigner;
Kenny Root5db505e2013-12-11 16:35:05 -08002261+// import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002262+// END android-removed
2263 import org.bouncycastle.jcajce.provider.asymmetric.util.DSABase;
2264 import org.bouncycastle.jcajce.provider.asymmetric.util.DSAEncoder;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002265 import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
Kenny Root5db505e2013-12-11 16:35:05 -08002266@@ -70,18 +77,22 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002267 {
2268 public ecDSA()
2269 {
2270- super(new SHA1Digest(), new ECDSASigner(), new StdDSAEncoder());
2271+ // BEGIN android-changed
2272+ super(AndroidDigestFactory.getSHA1(), new ECDSASigner(), new StdDSAEncoder());
2273+ // END android-changed
2274 }
2275 }
2276
Kenny Root5db505e2013-12-11 16:35:05 -08002277- static public class ecDetDSA
2278- extends SignatureSpi
2279- {
2280- public ecDetDSA()
2281- {
2282- super(new SHA1Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA1Digest())), new StdDSAEncoder());
2283- }
2284- }
2285+ // BEGIN android-removed
2286+ // static public class ecDetDSA
2287+ // extends SignatureSpi
2288+ // {
2289+ // public ecDetDSA()
2290+ // {
2291+ // super(new SHA1Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA1Digest())), new StdDSAEncoder());
2292+ // }
2293+ // }
2294+ // END android-removed
2295
2296 static public class ecDSAnone
2297 extends SignatureSpi
2298@@ -97,171 +108,187 @@
Kenny Root87490ac2013-09-26 11:06:21 -07002299 {
2300 public ecDSA224()
2301 {
2302- super(new SHA224Digest(), new ECDSASigner(), new StdDSAEncoder());
2303+ // BEGIN android-changed
2304+ super(AndroidDigestFactory.getSHA224(), new ECDSASigner(), new StdDSAEncoder());
2305+ // END android-changed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002306 }
2307 }
2308
Kenny Root5db505e2013-12-11 16:35:05 -08002309- static public class ecDetDSA224
2310- extends SignatureSpi
2311- {
2312- public ecDetDSA224()
2313- {
2314- super(new SHA224Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA224Digest())), new StdDSAEncoder());
2315- }
2316- }
2317+ // BEGIN android-removed
2318+ // static public class ecDetDSA224
2319+ // extends SignatureSpi
2320+ // {
2321+ // public ecDetDSA224()
2322+ // {
2323+ // super(new SHA224Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA224Digest())), new StdDSAEncoder());
2324+ // }
2325+ // }
2326+ // END android-removed
2327
2328 static public class ecDSA256
2329 extends SignatureSpi
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002330 {
2331 public ecDSA256()
2332 {
2333- super(new SHA256Digest(), new ECDSASigner(), new StdDSAEncoder());
2334+ // BEGIN android-changed
2335+ super(AndroidDigestFactory.getSHA256(), new ECDSASigner(), new StdDSAEncoder());
2336+ // END android-changed
2337 }
2338 }
2339
Kenny Root5db505e2013-12-11 16:35:05 -08002340- static public class ecDetDSA256
2341- extends SignatureSpi
2342- {
2343- public ecDetDSA256()
2344- {
2345- super(new SHA256Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())), new StdDSAEncoder());
2346- }
2347- }
2348+ // BEGIN android-removed
2349+ // static public class ecDetDSA256
2350+ // extends SignatureSpi
2351+ // {
2352+ // public ecDetDSA256()
2353+ // {
2354+ // super(new SHA256Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())), new StdDSAEncoder());
2355+ // }
2356+ // }
2357+ // END android-removed
2358
2359 static public class ecDSA384
2360 extends SignatureSpi
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002361 {
2362 public ecDSA384()
2363 {
2364- super(new SHA384Digest(), new ECDSASigner(), new StdDSAEncoder());
2365+ // BEGIN android-changed
2366+ super(AndroidDigestFactory.getSHA384(), new ECDSASigner(), new StdDSAEncoder());
2367+ // END android-changed
2368 }
2369 }
2370
Kenny Root5db505e2013-12-11 16:35:05 -08002371- static public class ecDetDSA384
2372- extends SignatureSpi
2373- {
2374- public ecDetDSA384()
2375- {
2376- super(new SHA384Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA384Digest())), new StdDSAEncoder());
2377- }
2378- }
2379+ // BEGIN android-removed
2380+ // static public class ecDetDSA384
2381+ // extends SignatureSpi
2382+ // {
2383+ // public ecDetDSA384()
2384+ // {
2385+ // super(new SHA384Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA384Digest())), new StdDSAEncoder());
2386+ // }
2387+ // }
2388+ // END android-removed
2389
2390 static public class ecDSA512
2391 extends SignatureSpi
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002392 {
2393 public ecDSA512()
2394 {
2395- super(new SHA512Digest(), new ECDSASigner(), new StdDSAEncoder());
2396- }
2397- }
2398-
Kenny Root5db505e2013-12-11 16:35:05 -08002399- static public class ecDetDSA512
2400- extends SignatureSpi
2401- {
2402- public ecDetDSA512()
2403- {
2404- super(new SHA512Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA512Digest())), new StdDSAEncoder());
2405- }
2406- }
2407-
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002408- static public class ecDSARipeMD160
2409- extends SignatureSpi
2410- {
2411- public ecDSARipeMD160()
2412- {
2413- super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder());
2414- }
2415- }
2416-
2417- static public class ecNR
2418- extends SignatureSpi
2419- {
2420- public ecNR()
2421- {
2422- super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder());
2423- }
2424- }
2425-
2426- static public class ecNR224
2427- extends SignatureSpi
2428- {
2429- public ecNR224()
2430- {
2431- super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder());
2432- }
2433- }
2434-
2435- static public class ecNR256
2436- extends SignatureSpi
2437- {
2438- public ecNR256()
2439- {
2440- super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder());
2441- }
2442- }
2443-
2444- static public class ecNR384
2445- extends SignatureSpi
2446- {
2447- public ecNR384()
2448- {
2449- super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder());
2450- }
2451- }
2452-
2453- static public class ecNR512
2454- extends SignatureSpi
2455- {
2456- public ecNR512()
2457- {
2458- super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder());
2459- }
2460- }
2461-
2462- static public class ecCVCDSA
2463- extends SignatureSpi
2464- {
2465- public ecCVCDSA()
2466- {
2467- super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder());
2468- }
2469- }
2470-
2471- static public class ecCVCDSA224
2472- extends SignatureSpi
2473- {
2474- public ecCVCDSA224()
2475- {
2476- super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder());
2477- }
2478- }
2479-
2480- static public class ecCVCDSA256
2481- extends SignatureSpi
2482- {
2483- public ecCVCDSA256()
2484- {
2485- super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder());
2486- }
2487- }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002488-
2489- static public class ecCVCDSA384
2490- extends SignatureSpi
2491- {
2492- public ecCVCDSA384()
2493- {
2494- super(new SHA384Digest(), new ECDSASigner(), new CVCDSAEncoder());
2495- }
2496- }
2497-
2498- static public class ecCVCDSA512
2499- extends SignatureSpi
2500- {
2501- public ecCVCDSA512()
2502- {
2503- super(new SHA512Digest(), new ECDSASigner(), new CVCDSAEncoder());
2504- }
2505- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002506+ // BEGIN android-changed
2507+ super(AndroidDigestFactory.getSHA512(), new ECDSASigner(), new StdDSAEncoder());
2508+ // END android-changed
2509+ }
2510+ }
2511+
2512+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08002513+ // static public class ecDetDSA512
2514+ // extends SignatureSpi
2515+ // {
2516+ // public ecDetDSA512()
2517+ // {
2518+ // super(new SHA512Digest(), new ECDSASigner(new HMacDSAKCalculator(new SHA512Digest())), new StdDSAEncoder());
2519+ // }
2520+ // }
2521+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002522+ // static public class ecDSARipeMD160
2523+ // extends SignatureSpi
2524+ // {
2525+ // public ecDSARipeMD160()
2526+ // {
2527+ // super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder());
2528+ // }
2529+ // }
2530+ //
2531+ // static public class ecNR
2532+ // extends SignatureSpi
2533+ // {
2534+ // public ecNR()
2535+ // {
2536+ // super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder());
2537+ // }
2538+ // }
2539+ //
2540+ // static public class ecNR224
2541+ // extends SignatureSpi
2542+ // {
2543+ // public ecNR224()
2544+ // {
2545+ // super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder());
2546+ // }
2547+ // }
2548+ //
2549+ // static public class ecNR256
2550+ // extends SignatureSpi
2551+ // {
2552+ // public ecNR256()
2553+ // {
2554+ // super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder());
2555+ // }
2556+ // }
2557+ //
2558+ // static public class ecNR384
2559+ // extends SignatureSpi
2560+ // {
2561+ // public ecNR384()
2562+ // {
2563+ // super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder());
2564+ // }
2565+ // }
2566+ //
2567+ // static public class ecNR512
2568+ // extends SignatureSpi
2569+ // {
2570+ // public ecNR512()
2571+ // {
2572+ // super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder());
2573+ // }
2574+ // }
2575+ //
2576+ // static public class ecCVCDSA
2577+ // extends SignatureSpi
2578+ // {
2579+ // public ecCVCDSA()
2580+ // {
2581+ // super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder());
2582+ // }
2583+ // }
2584+ //
2585+ // static public class ecCVCDSA224
2586+ // extends SignatureSpi
2587+ // {
2588+ // public ecCVCDSA224()
2589+ // {
2590+ // super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder());
2591+ // }
2592+ // }
2593+ //
2594+ // static public class ecCVCDSA256
2595+ // extends SignatureSpi
2596+ // {
2597+ // public ecCVCDSA256()
2598+ // {
2599+ // super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder());
2600+ // }
2601+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07002602+ //
2603+ // static public class ecCVCDSA384
2604+ // extends SignatureSpi
2605+ // {
2606+ // public ecCVCDSA384()
2607+ // {
2608+ // super(new SHA384Digest(), new ECDSASigner(), new CVCDSAEncoder());
2609+ // }
2610+ // }
2611+ //
2612+ // static public class ecCVCDSA512
2613+ // extends SignatureSpi
2614+ // {
2615+ // public ecCVCDSA512()
2616+ // {
2617+ // super(new SHA512Digest(), new ECDSASigner(), new CVCDSAEncoder());
2618+ // }
2619+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002620+ // END android-removed
2621
2622 private static class StdDSAEncoder
2623 implements DSAEncoder
Kenny Root5db505e2013-12-11 16:35:05 -08002624@@ -355,4 +382,4 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002625 return sig;
2626 }
2627 }
2628-}
2629\ No newline at end of file
2630+}
Kenny Root5db505e2013-12-11 16:35:05 -08002631diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
2632--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-12-03 20:18:20.000000000 +0000
2633+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002634@@ -26,7 +26,9 @@
2635 import org.bouncycastle.crypto.CipherParameters;
2636 import org.bouncycastle.crypto.Digest;
2637 import org.bouncycastle.crypto.InvalidCipherTextException;
2638-import org.bouncycastle.crypto.encodings.ISO9796d1Encoding;
2639+// BEGIN android-removed
2640+// import org.bouncycastle.crypto.encodings.ISO9796d1Encoding;
2641+// END android-removed
2642 import org.bouncycastle.crypto.encodings.OAEPEncoding;
2643 import org.bouncycastle.crypto.encodings.PKCS1Encoding;
2644 import org.bouncycastle.crypto.engines.RSABlindedEngine;
2645@@ -197,10 +199,12 @@
2646 {
2647 cipher = new PKCS1Encoding(new RSABlindedEngine());
2648 }
2649- else if (pad.equals("ISO9796-1PADDING"))
2650- {
2651- cipher = new ISO9796d1Encoding(new RSABlindedEngine());
2652- }
2653+ // BEGIN android-removed
2654+ // else if (pad.equals("ISO9796-1PADDING"))
2655+ // {
2656+ // cipher = new ISO9796d1Encoding(new RSABlindedEngine());
2657+ // }
2658+ // END android-removed
2659 else if (pad.equals("OAEPWITHMD5ANDMGF1PADDING"))
2660 {
2661 initFromSpec(new OAEPParameterSpec("MD5", "MGF1", new MGF1ParameterSpec("MD5"), PSource.PSpecified.DEFAULT));
Kenny Root87490ac2013-09-26 11:06:21 -07002662@@ -539,48 +543,50 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002663 }
2664 }
2665
2666- static public class PKCS1v1_5Padding
2667- extends CipherSpi
2668- {
2669- public PKCS1v1_5Padding()
2670- {
2671- super(new PKCS1Encoding(new RSABlindedEngine()));
2672- }
2673- }
2674-
2675- static public class PKCS1v1_5Padding_PrivateOnly
2676- extends CipherSpi
2677- {
2678- public PKCS1v1_5Padding_PrivateOnly()
2679- {
2680- super(false, true, new PKCS1Encoding(new RSABlindedEngine()));
2681- }
2682- }
2683-
2684- static public class PKCS1v1_5Padding_PublicOnly
2685- extends CipherSpi
2686- {
2687- public PKCS1v1_5Padding_PublicOnly()
2688- {
2689- super(true, false, new PKCS1Encoding(new RSABlindedEngine()));
2690- }
2691- }
2692-
2693- static public class OAEPPadding
2694- extends CipherSpi
2695- {
2696- public OAEPPadding()
2697- {
2698- super(OAEPParameterSpec.DEFAULT);
2699- }
2700- }
2701-
2702- static public class ISO9796d1Padding
2703- extends CipherSpi
2704- {
2705- public ISO9796d1Padding()
2706- {
2707- super(new ISO9796d1Encoding(new RSABlindedEngine()));
2708- }
2709- }
2710+ // BEGIN android-removed
2711+ // static public class PKCS1v1_5Padding
2712+ // extends CipherSpi
2713+ // {
2714+ // public PKCS1v1_5Padding()
2715+ // {
2716+ // super(new PKCS1Encoding(new RSABlindedEngine()));
2717+ // }
2718+ // }
2719+ //
2720+ // static public class PKCS1v1_5Padding_PrivateOnly
2721+ // extends CipherSpi
2722+ // {
2723+ // public PKCS1v1_5Padding_PrivateOnly()
2724+ // {
2725+ // super(false, true, new PKCS1Encoding(new RSABlindedEngine()));
2726+ // }
2727+ // }
2728+ //
2729+ // static public class PKCS1v1_5Padding_PublicOnly
2730+ // extends CipherSpi
2731+ // {
2732+ // public PKCS1v1_5Padding_PublicOnly()
2733+ // {
2734+ // super(true, false, new PKCS1Encoding(new RSABlindedEngine()));
2735+ // }
2736+ // }
2737+ //
2738+ // static public class OAEPPadding
2739+ // extends CipherSpi
2740+ // {
2741+ // public OAEPPadding()
2742+ // {
2743+ // super(OAEPParameterSpec.DEFAULT);
2744+ // }
2745+ // }
2746+ //
2747+ // static public class ISO9796d1Padding
2748+ // extends CipherSpi
2749+ // {
2750+ // public ISO9796d1Padding()
2751+ // {
2752+ // super(new ISO9796d1Encoding(new RSABlindedEngine()));
2753+ // }
2754+ // }
2755+ // END android-removed
2756 }
Kenny Root5db505e2013-12-11 16:35:05 -08002757diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java
2758--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2013-12-03 20:18:20.000000000 +0000
2759+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002760@@ -17,24 +17,31 @@
2761 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
2762 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
2763 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
2764-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
2765+// BEGIN android-removed
2766+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
2767+// END android-removed
2768 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
2769 import org.bouncycastle.asn1.x509.DigestInfo;
2770 import org.bouncycastle.crypto.AsymmetricBlockCipher;
2771 import org.bouncycastle.crypto.CipherParameters;
2772 import org.bouncycastle.crypto.Digest;
2773-import org.bouncycastle.crypto.digests.MD2Digest;
2774-import org.bouncycastle.crypto.digests.MD4Digest;
2775-import org.bouncycastle.crypto.digests.MD5Digest;
2776-import org.bouncycastle.crypto.digests.NullDigest;
2777-import org.bouncycastle.crypto.digests.RIPEMD128Digest;
2778-import org.bouncycastle.crypto.digests.RIPEMD160Digest;
2779-import org.bouncycastle.crypto.digests.RIPEMD256Digest;
2780-import org.bouncycastle.crypto.digests.SHA1Digest;
2781-import org.bouncycastle.crypto.digests.SHA224Digest;
2782-import org.bouncycastle.crypto.digests.SHA256Digest;
2783-import org.bouncycastle.crypto.digests.SHA384Digest;
2784-import org.bouncycastle.crypto.digests.SHA512Digest;
2785+// BEGIN android-removed
2786+// import org.bouncycastle.crypto.digests.MD2Digest;
2787+// import org.bouncycastle.crypto.digests.MD4Digest;
2788+// import org.bouncycastle.crypto.digests.MD5Digest;
2789+// import org.bouncycastle.crypto.digests.NullDigest;
2790+// import org.bouncycastle.crypto.digests.RIPEMD128Digest;
2791+// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
2792+// import org.bouncycastle.crypto.digests.RIPEMD256Digest;
2793+// import org.bouncycastle.crypto.digests.SHA1Digest;
2794+// import org.bouncycastle.crypto.digests.SHA224Digest;
2795+// import org.bouncycastle.crypto.digests.SHA256Digest;
2796+// import org.bouncycastle.crypto.digests.SHA384Digest;
2797+// import org.bouncycastle.crypto.digests.SHA512Digest;
2798+// END android-removed
2799+// BEGIN android-added
2800+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
2801+// END android-added
2802 import org.bouncycastle.crypto.encodings.PKCS1Encoding;
2803 import org.bouncycastle.crypto.engines.RSABlindedEngine;
2804
Kenny Root87490ac2013-09-26 11:06:21 -07002805@@ -261,7 +268,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002806 {
2807 public SHA1()
2808 {
2809- super(OIWObjectIdentifiers.idSHA1, new SHA1Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2810+ // BEGIN android-changed
2811+ super(OIWObjectIdentifiers.idSHA1, AndroidDigestFactory.getSHA1(), new PKCS1Encoding(new RSABlindedEngine()));
2812+ // END android-changed
2813 }
2814 }
2815
Kenny Root87490ac2013-09-26 11:06:21 -07002816@@ -270,7 +279,9 @@
2817 {
2818 public SHA224()
2819 {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002820- super(NISTObjectIdentifiers.id_sha224, new SHA224Digest(), new PKCS1Encoding(new RSABlindedEngine()));
Kenny Root87490ac2013-09-26 11:06:21 -07002821+ // BEGIN android-changed
2822+ super(NISTObjectIdentifiers.id_sha224, AndroidDigestFactory.getSHA224(), new PKCS1Encoding(new RSABlindedEngine()));
2823+ // END android-changed
2824 }
2825 }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002826
Kenny Root87490ac2013-09-26 11:06:21 -07002827@@ -279,7 +290,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002828 {
2829 public SHA256()
2830 {
2831- super(NISTObjectIdentifiers.id_sha256, new SHA256Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2832+ // BEGIN android-changed
2833+ super(NISTObjectIdentifiers.id_sha256, AndroidDigestFactory.getSHA256(), new PKCS1Encoding(new RSABlindedEngine()));
2834+ // END android-changed
2835 }
2836 }
2837
2838@@ -288,7 +301,9 @@
2839 {
2840 public SHA384()
2841 {
2842- super(NISTObjectIdentifiers.id_sha384, new SHA384Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2843+ // BEGIN android-changed
2844+ super(NISTObjectIdentifiers.id_sha384, AndroidDigestFactory.getSHA384(), new PKCS1Encoding(new RSABlindedEngine()));
2845+ // END android-changed
2846 }
2847 }
2848
2849@@ -297,70 +312,78 @@
2850 {
2851 public SHA512()
2852 {
2853- super(NISTObjectIdentifiers.id_sha512, new SHA512Digest(), new PKCS1Encoding(new RSABlindedEngine()));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002854+ // BEGIN android-changed
2855+ super(NISTObjectIdentifiers.id_sha512, AndroidDigestFactory.getSHA512(), new PKCS1Encoding(new RSABlindedEngine()));
2856+ // END android-changed
2857 }
2858 }
2859
Kenny Root87490ac2013-09-26 11:06:21 -07002860- static public class MD2
2861- extends DigestSignatureSpi
2862- {
2863- public MD2()
2864- {
2865- super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2866- }
2867- }
2868-
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002869- static public class MD4
2870- extends DigestSignatureSpi
2871- {
2872- public MD4()
2873- {
2874- super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2875- }
2876- }
2877+ // BEGIN android-removed
2878+ // static public class MD2
2879+ // extends DigestSignatureSpi
2880+ // {
2881+ // public MD2()
2882+ // {
2883+ // super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2884+ // }
2885+ // }
2886+ //
2887+ // static public class MD4
2888+ // extends DigestSignatureSpi
2889+ // {
2890+ // public MD4()
2891+ // {
2892+ // super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2893+ // }
2894+ // }
2895+ // END android-removed
2896
2897 static public class MD5
2898 extends DigestSignatureSpi
2899 {
2900 public MD5()
2901 {
2902- super(PKCSObjectIdentifiers.md5, new MD5Digest(), new PKCS1Encoding(new RSABlindedEngine()));
Kenny Root87490ac2013-09-26 11:06:21 -07002903- }
2904- }
2905-
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002906- static public class RIPEMD160
2907- extends DigestSignatureSpi
2908- {
2909- public RIPEMD160()
2910- {
2911- super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine()));
Kenny Root87490ac2013-09-26 11:06:21 -07002912+ // BEGIN android-changed
2913+ super(PKCSObjectIdentifiers.md5, AndroidDigestFactory.getMD5(), new PKCS1Encoding(new RSABlindedEngine()));
2914+ // END android-changed
2915 }
2916 }
2917
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002918- static public class RIPEMD128
2919- extends DigestSignatureSpi
2920- {
2921- public RIPEMD128()
2922- {
2923- super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2924- }
2925- }
2926-
2927- static public class RIPEMD256
2928- extends DigestSignatureSpi
2929- {
2930- public RIPEMD256()
2931- {
2932- super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2933- }
2934- }
2935-
2936- static public class noneRSA
2937- extends DigestSignatureSpi
2938- {
2939- public noneRSA()
2940- {
2941- super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine()));
2942- }
2943- }
2944+ // BEGIN android-removed
2945+ // static public class RIPEMD160
2946+ // extends DigestSignatureSpi
2947+ // {
2948+ // public RIPEMD160()
2949+ // {
2950+ // super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2951+ // }
2952+ // }
2953+ //
2954+ // static public class RIPEMD128
2955+ // extends DigestSignatureSpi
2956+ // {
2957+ // public RIPEMD128()
2958+ // {
2959+ // super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2960+ // }
2961+ // }
2962+ //
2963+ // static public class RIPEMD256
2964+ // extends DigestSignatureSpi
2965+ // {
2966+ // public RIPEMD256()
2967+ // {
2968+ // super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine()));
2969+ // }
2970+ // }
2971+ //
2972+ // static public class noneRSA
2973+ // extends DigestSignatureSpi
2974+ // {
2975+ // public noneRSA()
2976+ // {
2977+ // super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine()));
2978+ // }
2979+ // }
2980+ // END android-removed
2981 }
Kenny Root5db505e2013-12-11 16:35:05 -08002982diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java
2983--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2013-12-03 20:18:20.000000000 +0000
2984+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07002985@@ -18,8 +18,10 @@
2986 import javax.crypto.NoSuchPaddingException;
2987 import javax.crypto.spec.IvParameterSpec;
2988 import javax.crypto.spec.PBEParameterSpec;
2989-import javax.crypto.spec.RC2ParameterSpec;
2990-import javax.crypto.spec.RC5ParameterSpec;
2991+// BEGIN android-removed
2992+// import javax.crypto.spec.RC2ParameterSpec;
2993+// import javax.crypto.spec.RC5ParameterSpec;
2994+// END android-removed
2995 import javax.crypto.spec.SecretKeySpec;
2996
2997 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
2998@@ -37,8 +39,10 @@
2999 {
3000 IvParameterSpec.class,
3001 PBEParameterSpec.class,
3002- RC2ParameterSpec.class,
3003- RC5ParameterSpec.class
3004+ // BEGIN android-removed
3005+ // RC2ParameterSpec.class,
3006+ // RC5ParameterSpec.class
3007+ // END android-removed
3008 };
3009
3010
Kenny Root5db505e2013-12-11 16:35:05 -08003011diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java
3012--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java 2013-12-03 20:18:20.000000000 +0000
3013+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003014@@ -5,11 +5,15 @@
3015 import java.security.PublicKey;
Kenny Root200c44f2013-02-20 16:01:31 -08003016
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003017 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
3018-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
3019+// BEGIN android-removed
3020+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
3021+// END android-removed
3022 import org.bouncycastle.asn1.nist.NISTNamedCurves;
3023 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
3024 import org.bouncycastle.asn1.sec.SECNamedCurves;
3025-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
3026+// BEGIN android-removed
3027+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
3028+// END android-removed
3029 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
3030 import org.bouncycastle.asn1.x9.X962NamedCurves;
3031 import org.bouncycastle.asn1.x9.X9ECParameters;
3032@@ -225,14 +229,16 @@
3033 {
3034 oid = NISTNamedCurves.getOID(name);
3035 }
3036- if (oid == null)
3037- {
3038- oid = TeleTrusTNamedCurves.getOID(name);
3039- }
3040- if (oid == null)
3041- {
3042- oid = ECGOST3410NamedCurves.getOID(name);
3043- }
3044+ // BEGIN android-removed
3045+ // if (oid == null)
3046+ // {
3047+ // oid = TeleTrusTNamedCurves.getOID(name);
3048+ // }
3049+ // if (oid == null)
3050+ // {
3051+ // oid = ECGOST3410NamedCurves.getOID(name);
3052+ // }
3053+ // END android-removed
3054 }
Kenny Root200c44f2013-02-20 16:01:31 -08003055
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003056 return oid;
3057@@ -250,10 +256,12 @@
3058 {
3059 params = NISTNamedCurves.getByOID(oid);
3060 }
3061- if (params == null)
3062- {
3063- params = TeleTrusTNamedCurves.getByOID(oid);
3064- }
3065+ // BEGIN android-removed
3066+ // if (params == null)
3067+ // {
3068+ // params = TeleTrusTNamedCurves.getByOID(oid);
3069+ // }
3070+ // END android-removed
3071 }
3072
3073 return params;
3074@@ -271,14 +279,16 @@
3075 {
3076 name = NISTNamedCurves.getName(oid);
3077 }
3078- if (name == null)
3079- {
3080- name = TeleTrusTNamedCurves.getName(oid);
3081- }
3082- if (name == null)
3083- {
3084- name = ECGOST3410NamedCurves.getName(oid);
3085- }
3086+ // BEGIN android-removed
3087+ // if (name == null)
3088+ // {
3089+ // name = TeleTrusTNamedCurves.getName(oid);
3090+ // }
3091+ // if (name == null)
3092+ // {
3093+ // name = ECGOST3410NamedCurves.getName(oid);
3094+ // }
3095+ // END android-removed
3096 }
3097
3098 return name;
Kenny Root5db505e2013-12-11 16:35:05 -08003099diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java
3100--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-12-03 20:18:20.000000000 +0000
3101+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-02-21 00:01:31.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003102@@ -36,7 +36,9 @@
3103 import org.bouncycastle.asn1.pkcs.SignedData;
3104 import org.bouncycastle.jce.provider.BouncyCastleProvider;
3105 import org.bouncycastle.util.io.pem.PemObject;
3106-import org.bouncycastle.util.io.pem.PemWriter;
3107+// BEGIN android-removed
3108+// import org.bouncycastle.util.io.pem.PemWriter;
3109+// END android-removed
3110
3111 /**
3112 * CertPath implementation for X.509 certificates.
Kenny Root200c44f2013-02-20 16:01:31 -08003113@@ -51,7 +53,9 @@
3114 {
3115 List encodings = new ArrayList();
3116 encodings.add("PkiPath");
3117- encodings.add("PEM");
3118+ // BEGIN android-removed
3119+ // encodings.add("PEM");
3120+ // END android-removed
3121 encodings.add("PKCS7");
3122 certPathEncodings = Collections.unmodifiableList(encodings);
3123 }
3124@@ -298,27 +302,29 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003125 return toDEREncoded(new ContentInfo(
3126 PKCSObjectIdentifiers.signedData, sd));
3127 }
3128- else if (encoding.equalsIgnoreCase("PEM"))
3129- {
3130- ByteArrayOutputStream bOut = new ByteArrayOutputStream();
3131- PemWriter pWrt = new PemWriter(new OutputStreamWriter(bOut));
3132-
3133- try
3134- {
3135- for (int i = 0; i != certificates.size(); i++)
3136- {
3137- pWrt.writeObject(new PemObject("CERTIFICATE", ((X509Certificate)certificates.get(i)).getEncoded()));
3138- }
3139-
3140- pWrt.close();
3141- }
3142- catch (Exception e)
3143- {
3144- throw new CertificateEncodingException("can't encode certificate for PEM encoded path");
3145- }
3146-
3147- return bOut.toByteArray();
3148- }
3149+ // BEGIN android-removed
3150+ // else if (encoding.equalsIgnoreCase("PEM"))
3151+ // {
3152+ // ByteArrayOutputStream bOut = new ByteArrayOutputStream();
3153+ // PemWriter pWrt = new PemWriter(new OutputStreamWriter(bOut));
3154+ //
3155+ // try
3156+ // {
3157+ // for (int i = 0; i != certificates.size(); i++)
3158+ // {
3159+ // pWrt.writeObject(new PemObject("CERTIFICATE", ((X509Certificate)certificates.get(i)).getEncoded()));
3160+ // }
3161+ //
3162+ // pWrt.close();
3163+ // }
3164+ // catch (Exception e)
3165+ // {
3166+ // throw new CertificateEncodingException("can't encode certificate for PEM encoded path");
3167+ // }
3168+ //
3169+ // return bOut.toByteArray();
3170+ // }
3171+ // END android-removed
3172 else
3173 {
3174 throw new CertificateEncodingException("unsupported encoding: " + encoding);
Kenny Root5db505e2013-12-11 16:35:05 -08003175diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java
3176--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java 2013-12-03 20:18:20.000000000 +0000
3177+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003178@@ -57,6 +57,9 @@
3179 import org.bouncycastle.asn1.x509.Extensions;
3180 import org.bouncycastle.asn1.x509.GeneralName;
3181 import org.bouncycastle.asn1.x509.KeyUsage;
3182+// BEGIN android-added
3183+import org.bouncycastle.asn1.x509.X509Name;
3184+// END android-added
3185 import org.bouncycastle.jcajce.provider.asymmetric.util.PKCS12BagAttributeCarrierImpl;
3186 import org.bouncycastle.jce.X509Principal;
3187 import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;
3188@@ -564,12 +567,20 @@
3189 }
3190 }
3191
3192+ // BEGIN android-changed
3193+ private byte[] encoded;
3194+ // END android-changed
3195 public byte[] getEncoded()
3196 throws CertificateEncodingException
3197 {
3198 try
3199 {
3200- return c.getEncoded(ASN1Encoding.DER);
3201+ // BEGIN android-changed
3202+ if (encoded == null) {
3203+ encoded = c.getEncoded(ASN1Encoding.DER);
3204+ }
3205+ return encoded;
3206+ // END android-changed
3207 }
3208 catch (IOException e)
3209 {
3210@@ -860,7 +871,9 @@
3211 list.add(genName.getEncoded());
3212 break;
3213 case GeneralName.directoryName:
3214- list.add(X500Name.getInstance(RFC4519Style.INSTANCE, genName.getName()).toString());
3215+ // BEGIN android-changed
3216+ list.add(X509Name.getInstance(genName.getName()).toString(true, X509Name.DefaultSymbols));
3217+ // END android-changed
3218 break;
3219 case GeneralName.dNSName:
3220 case GeneralName.rfc822Name:
Kenny Root5db505e2013-12-11 16:35:05 -08003221diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java
3222--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java 2013-12-03 20:18:20.000000000 +0000
3223+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003224@@ -14,12 +14,16 @@
3225 import org.bouncycastle.asn1.ASN1Sequence;
3226 import org.bouncycastle.asn1.DERNull;
3227 import org.bouncycastle.asn1.DERObjectIdentifier;
3228-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
3229+// BEGIN android-removed
3230+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
3231+// END android-removed
3232 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
3233 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
3234 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
3235 import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
3236-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
3237+// BEGIN android-removed
3238+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
3239+// END android-removed
3240 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
3241 import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
3242
3243@@ -114,22 +118,24 @@
3244 {
3245 return "SHA512";
3246 }
3247- else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
3248- {
3249- return "RIPEMD128";
3250- }
3251- else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
3252- {
3253- return "RIPEMD160";
3254- }
3255- else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
3256- {
3257- return "RIPEMD256";
3258- }
3259- else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
3260- {
3261- return "GOST3411";
3262- }
3263+ // BEGIN android-removed
3264+ // else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
3265+ // {
3266+ // return "RIPEMD128";
3267+ // }
3268+ // else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
3269+ // {
3270+ // return "RIPEMD160";
3271+ // }
3272+ // else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
3273+ // {
3274+ // return "RIPEMD256";
3275+ // }
3276+ // else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
3277+ // {
3278+ // return "GOST3411";
3279+ // }
3280+ // END android-removed
3281 else
3282 {
3283 return digestAlgOID.getId();
Kenny Root5db505e2013-12-11 16:35:05 -08003284diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA256.java
3285--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java 2013-12-03 20:18:20.000000000 +0000
3286+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA256.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003287@@ -45,17 +45,19 @@
3288 }
3289 }
3290
3291- /**
3292- * PBEWithHmacSHA
3293- */
3294- public static class PBEWithMacKeyFactory
3295- extends PBESecretKeyFactory
3296- {
3297- public PBEWithMacKeyFactory()
3298- {
3299- super("PBEwithHmacSHA256", null, false, PKCS12, SHA256, 256, 0);
3300- }
3301- }
3302+ // BEGIN android-removed
3303+ // /**
3304+ // * PBEWithHmacSHA
3305+ // */
3306+ // public static class PBEWithMacKeyFactory
3307+ // extends PBESecretKeyFactory
3308+ // {
3309+ // public PBEWithMacKeyFactory()
3310+ // {
3311+ // super("PBEwithHmacSHA256", null, false, PKCS12, SHA256, 256, 0);
3312+ // }
3313+ // }
3314+ // END android-removed
3315
3316 /**
3317 * HMACSHA256
3318@@ -84,9 +86,11 @@
3319 provider.addAlgorithm("Alg.Alias.MessageDigest.SHA256", "SHA-256");
3320 provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha256, "SHA-256");
3321
3322- provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA256", PREFIX + "$PBEWithMacKeyFactory");
3323- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA-256", "PBEWITHHMACSHA256");
3324- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256");
3325+ // BEGIN android-removed
3326+ // provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA256", PREFIX + "$PBEWithMacKeyFactory");
3327+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA-256", "PBEWITHHMACSHA256");
3328+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256");
3329+ // END android-removed
3330
3331 addHMACAlgorithm(provider, "SHA256", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
3332 addHMACAlias(provider, "SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256);
Kenny Root5db505e2013-12-11 16:35:05 -08003333diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA384.java
3334--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java 2013-12-03 20:18:20.000000000 +0000
3335+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA384.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003336@@ -5,7 +5,9 @@
3337 import org.bouncycastle.crypto.CipherKeyGenerator;
3338 import org.bouncycastle.crypto.digests.SHA384Digest;
3339 import org.bouncycastle.crypto.macs.HMac;
3340-import org.bouncycastle.crypto.macs.OldHMac;
3341+// BEGIN android-removed
3342+// import org.bouncycastle.crypto.macs.OldHMac;
3343+// END android-removed
3344 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
3345 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
3346 import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
3347@@ -57,14 +59,16 @@
3348 }
3349 }
3350
3351- public static class OldSHA384
3352- extends BaseMac
3353- {
3354- public OldSHA384()
3355- {
3356- super(new OldHMac(new SHA384Digest()));
3357- }
3358- }
3359+ // BEGIN android-removed
3360+ // public static class OldSHA384
3361+ // extends BaseMac
3362+ // {
3363+ // public OldSHA384()
3364+ // {
3365+ // super(new OldHMac(new SHA384Digest()));
3366+ // }
3367+ // }
3368+ // END android-removed
3369
3370 public static class Mappings
3371 extends DigestAlgorithmProvider
3372@@ -80,7 +84,9 @@
3373 provider.addAlgorithm("MessageDigest.SHA-384", PREFIX + "$Digest");
3374 provider.addAlgorithm("Alg.Alias.MessageDigest.SHA384", "SHA-384");
3375 provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha384, "SHA-384");
3376- provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384");
3377+ // BEGIN android-removed
3378+ // provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384");
3379+ // END android-removed
3380
3381 addHMACAlgorithm(provider, "SHA384", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
3382 addHMACAlias(provider, "SHA384", PKCSObjectIdentifiers.id_hmacWithSHA384);
Kenny Root5db505e2013-12-11 16:35:05 -08003383diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA512.java
3384--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java 2013-12-03 20:18:20.000000000 +0000
3385+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA512.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003386@@ -4,9 +4,13 @@
3387 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
3388 import org.bouncycastle.crypto.CipherKeyGenerator;
3389 import org.bouncycastle.crypto.digests.SHA512Digest;
3390-import org.bouncycastle.crypto.digests.SHA512tDigest;
3391+// BEGIN android-removed
3392+// import org.bouncycastle.crypto.digests.SHA512tDigest;
3393+// END android-removed
3394 import org.bouncycastle.crypto.macs.HMac;
3395-import org.bouncycastle.crypto.macs.OldHMac;
3396+// BEGIN android-removed
3397+// import org.bouncycastle.crypto.macs.OldHMac;
3398+// END android-removed
3399 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
3400 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
3401 import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
3402@@ -37,42 +41,44 @@
3403 }
3404 }
3405
3406- static public class DigestT
3407- extends BCMessageDigest
3408- implements Cloneable
3409- {
3410- public DigestT(int bitLength)
3411- {
3412- super(new SHA512tDigest(bitLength));
3413- }
3414-
3415- public Object clone()
3416- throws CloneNotSupportedException
3417- {
3418- DigestT d = (DigestT)super.clone();
3419- d.digest = new SHA512tDigest((SHA512tDigest)digest);
3420-
3421- return d;
3422- }
3423- }
3424-
3425- static public class DigestT224
3426- extends DigestT
3427- {
3428- public DigestT224()
3429- {
3430- super(224);
3431- }
3432- }
3433-
3434- static public class DigestT256
3435- extends DigestT
3436- {
3437- public DigestT256()
3438- {
3439- super(256);
3440- }
3441- }
3442+ // BEGIN android-removed
3443+ // static public class DigestT
3444+ // extends BCMessageDigest
3445+ // implements Cloneable
3446+ // {
3447+ // public DigestT(int bitLength)
3448+ // {
3449+ // super(new SHA512tDigest(bitLength));
3450+ // }
3451+ //
3452+ // public Object clone()
3453+ // throws CloneNotSupportedException
3454+ // {
3455+ // DigestT d = (DigestT)super.clone();
3456+ // d.digest = new SHA512tDigest((SHA512tDigest)digest);
3457+ //
3458+ // return d;
3459+ // }
3460+ // }
3461+ //
3462+ // static public class DigestT224
3463+ // extends DigestT
3464+ // {
3465+ // public DigestT224()
3466+ // {
3467+ // super(224);
3468+ // }
3469+ // }
3470+ //
3471+ // static public class DigestT256
3472+ // extends DigestT
3473+ // {
3474+ // public DigestT256()
3475+ // {
3476+ // super(256);
3477+ // }
3478+ // }
3479+ // END android-removed
3480
3481 public static class HashMac
3482 extends BaseMac
3483@@ -83,35 +89,37 @@
3484 }
3485 }
3486
3487- public static class HashMacT224
3488- extends BaseMac
3489- {
3490- public HashMacT224()
3491- {
3492- super(new HMac(new SHA512tDigest(224)));
3493- }
3494- }
3495-
3496- public static class HashMacT256
3497- extends BaseMac
3498- {
3499- public HashMacT256()
3500- {
3501- super(new HMac(new SHA512tDigest(256)));
3502- }
3503- }
3504-
3505- /**
3506- * SHA-512 HMac
3507- */
3508- public static class OldSHA512
3509- extends BaseMac
3510- {
3511- public OldSHA512()
3512- {
3513- super(new OldHMac(new SHA512Digest()));
3514- }
3515- }
3516+ // BEGIN android-removed
3517+ // public static class HashMacT224
3518+ // extends BaseMac
3519+ // {
3520+ // public HashMacT224()
3521+ // {
3522+ // super(new HMac(new SHA512tDigest(224)));
3523+ // }
3524+ // }
3525+ //
3526+ // public static class HashMacT256
3527+ // extends BaseMac
3528+ // {
3529+ // public HashMacT256()
3530+ // {
3531+ // super(new HMac(new SHA512tDigest(256)));
3532+ // }
3533+ // }
3534+ //
3535+ // /**
3536+ // * SHA-512 HMac
3537+ // */
3538+ // public static class OldSHA512
3539+ // extends BaseMac
3540+ // {
3541+ // public OldSHA512()
3542+ // {
3543+ // super(new OldHMac(new SHA512Digest()));
3544+ // }
3545+ // }
3546+ // END android-removed
3547
3548 /**
3549 * HMACSHA512
3550@@ -125,23 +133,25 @@
3551 }
3552 }
3553
3554- public static class KeyGeneratorT224
3555- extends BaseKeyGenerator
3556- {
3557- public KeyGeneratorT224()
3558- {
3559- super("HMACSHA512/224", 224, new CipherKeyGenerator());
3560- }
3561- }
3562-
3563- public static class KeyGeneratorT256
3564- extends BaseKeyGenerator
3565- {
3566- public KeyGeneratorT256()
3567- {
3568- super("HMACSHA512/256", 256, new CipherKeyGenerator());
3569- }
3570- }
3571+ // BEGIN android-removed
3572+ // public static class KeyGeneratorT224
3573+ // extends BaseKeyGenerator
3574+ // {
3575+ // public KeyGeneratorT224()
3576+ // {
3577+ // super("HMACSHA512/224", 224, new CipherKeyGenerator());
3578+ // }
3579+ // }
3580+ //
3581+ // public static class KeyGeneratorT256
3582+ // extends BaseKeyGenerator
3583+ // {
3584+ // public KeyGeneratorT256()
3585+ // {
3586+ // super("HMACSHA512/256", 256, new CipherKeyGenerator());
3587+ // }
3588+ // }
3589+ // END android-removed
3590
3591 public static class Mappings
3592 extends DigestAlgorithmProvider
3593@@ -158,21 +168,25 @@
3594 provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512", "SHA-512");
3595 provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512");
3596
3597- provider.addAlgorithm("MessageDigest.SHA-512/224", PREFIX + "$DigestT224");
3598- provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512/224", "SHA-512/224");
3599- provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_224, "SHA-512/224");
3600-
3601- provider.addAlgorithm("MessageDigest.SHA-512/256", PREFIX + "$DigestT256");
3602- provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512256", "SHA-512/256");
3603- provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_256, "SHA-512/256");
3604-
3605- provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
3606+ // BEGIN android-removed
3607+ // provider.addAlgorithm("MessageDigest.SHA-512/224", PREFIX + "$DigestT224");
3608+ // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512/224", "SHA-512/224");
3609+ // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_224, "SHA-512/224");
3610+ //
3611+ // provider.addAlgorithm("MessageDigest.SHA-512/256", PREFIX + "$DigestT256");
3612+ // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512256", "SHA-512/256");
3613+ // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_256, "SHA-512/256");
3614+ //
3615+ // provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
3616+ // END android-removed
3617
3618 addHMACAlgorithm(provider, "SHA512", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
3619 addHMACAlias(provider, "SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);
3620
3621- addHMACAlgorithm(provider, "SHA512/224", PREFIX + "$HashMacT224", PREFIX + "$KeyGeneratorT224");
3622- addHMACAlgorithm(provider, "SHA512/256", PREFIX + "$HashMacT256", PREFIX + "$KeyGeneratorT256");
3623+ // BEGIN android-removed
3624+ // addHMACAlgorithm(provider, "SHA512/224", PREFIX + "$HashMacT224", PREFIX + "$KeyGeneratorT224");
3625+ // addHMACAlgorithm(provider, "SHA512/256", PREFIX + "$HashMacT256", PREFIX + "$KeyGeneratorT256");
3626+ // END android-removed
3627 }
3628 }
3629
Kenny Root5db505e2013-12-11 16:35:05 -08003630diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/BC.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/BC.java
3631--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/BC.java 2013-12-03 20:18:20.000000000 +0000
3632+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/BC.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003633@@ -17,7 +17,9 @@
3634 public void configure(ConfigurableProvider provider)
3635 {
3636 provider.addAlgorithm("KeyStore.BKS", PREFIX + "BcKeyStoreSpi$Std");
3637- provider.addAlgorithm("KeyStore.BKS-V1", PREFIX + "BcKeyStoreSpi$Version1");
3638+ // BEGIN android-removed
3639+ // provider.addAlgorithm("KeyStore.BKS-V1", PREFIX + "BcKeyStoreSpi$Version1");
3640+ // END android-removed
3641 provider.addAlgorithm("KeyStore.BouncyCastle", PREFIX + "BcKeyStoreSpi$BouncyCastleStore");
3642 provider.addAlgorithm("Alg.Alias.KeyStore.UBER", "BouncyCastle");
3643 provider.addAlgorithm("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle");
Kenny Root5db505e2013-12-11 16:35:05 -08003644diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/PKCS12.java
3645--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java 2013-12-03 20:18:20.000000000 +0000
3646+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/PKCS12.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003647@@ -17,14 +17,16 @@
3648 public void configure(ConfigurableProvider provider)
3649 {
3650 provider.addAlgorithm("KeyStore.PKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
3651- provider.addAlgorithm("KeyStore.BCPKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
3652- provider.addAlgorithm("KeyStore.PKCS12-DEF", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
3653-
3654- provider.addAlgorithm("KeyStore.PKCS12-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
3655- provider.addAlgorithm("KeyStore.PKCS12-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES");
3656-
3657- provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
3658- provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES");
3659+ // BEGIN android-removed
3660+ // provider.addAlgorithm("KeyStore.BCPKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
3661+ // provider.addAlgorithm("KeyStore.PKCS12-DEF", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
3662+ //
3663+ // provider.addAlgorithm("KeyStore.PKCS12-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
3664+ // provider.addAlgorithm("KeyStore.PKCS12-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES");
3665+ //
3666+ // provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
3667+ // provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES");
3668+ // END android-removed
3669 }
3670 }
3671 }
Kenny Root5db505e2013-12-11 16:35:05 -08003672diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java
3673--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java 2013-12-03 20:18:20.000000000 +0000
3674+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java 2013-12-12 00:35:05.000000000 +0000
3675@@ -61,8 +61,10 @@
3676 import org.bouncycastle.asn1.DEROutputStream;
3677 import org.bouncycastle.asn1.DERSequence;
3678 import org.bouncycastle.asn1.DERSet;
3679-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
3680-import org.bouncycastle.asn1.cryptopro.GOST28147Parameters;
3681+// BEGIN android-removed
3682+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
3683+// import org.bouncycastle.asn1.cryptopro.GOST28147Parameters;
3684+// END android-removed
3685 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
3686 import org.bouncycastle.asn1.ntt.NTTObjectIdentifiers;
3687 import org.bouncycastle.asn1.pkcs.AuthenticatedSafe;
3688@@ -86,7 +88,9 @@
3689 import org.bouncycastle.asn1.x509.X509ObjectIdentifiers;
3690 import org.bouncycastle.jcajce.provider.config.PKCS12StoreParameter;
3691 import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey;
3692-import org.bouncycastle.jcajce.spec.GOST28147ParameterSpec;
3693+// BEGIN android-removed
3694+// import org.bouncycastle.jcajce.spec.GOST28147ParameterSpec;
3695+// END android-removed
3696 import org.bouncycastle.jcajce.spec.PBKDF2KeySpec;
3697 import org.bouncycastle.jce.interfaces.BCKeyStore;
3698 import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;
3699@@ -736,13 +740,15 @@
3700 {
3701 cipher.init(mode, key, new IvParameterSpec(ASN1OctetString.getInstance(encParams).getOctets()));
3702 }
3703- else
3704- {
3705- // TODO: at the moment it's just GOST, but...
3706- GOST28147Parameters gParams = GOST28147Parameters.getInstance(encParams);
3707-
3708- cipher.init(mode, key, new GOST28147ParameterSpec(gParams.getEncryptionParamSet(), gParams.getIV()));
3709- }
3710+ // BEGIN android-removed
3711+ // else
3712+ // {
3713+ // // TODO: at the moment it's just GOST, but...
3714+ // GOST28147Parameters gParams = GOST28147Parameters.getInstance(encParams);
3715+ //
3716+ // cipher.init(mode, key, new GOST28147ParameterSpec(gParams.getEncryptionParamSet(), gParams.getIV()));
3717+ // }
3718+ // END android-removed
3719 return cipher;
3720 }
3721
3722@@ -1659,32 +1665,34 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003723 }
3724 }
3725
3726- public static class BCPKCS12KeyStore3DES
3727- extends PKCS12KeyStoreSpi
3728- {
3729- public BCPKCS12KeyStore3DES()
3730- {
3731- super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
3732- }
3733- }
3734-
3735- public static class DefPKCS12KeyStore
3736- extends PKCS12KeyStoreSpi
3737- {
3738- public DefPKCS12KeyStore()
3739- {
3740- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
3741- }
3742- }
3743-
3744- public static class DefPKCS12KeyStore3DES
3745- extends PKCS12KeyStoreSpi
3746- {
3747- public DefPKCS12KeyStore3DES()
3748- {
3749- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
3750- }
3751- }
3752+ // BEGIN android-removed
3753+ // public static class BCPKCS12KeyStore3DES
3754+ // extends PKCS12KeyStoreSpi
3755+ // {
3756+ // public BCPKCS12KeyStore3DES()
3757+ // {
3758+ // super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
3759+ // }
3760+ // }
3761+ //
3762+ // public static class DefPKCS12KeyStore
3763+ // extends PKCS12KeyStoreSpi
3764+ // {
3765+ // public DefPKCS12KeyStore()
3766+ // {
3767+ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
3768+ // }
3769+ // }
3770+ //
3771+ // public static class DefPKCS12KeyStore3DES
3772+ // extends PKCS12KeyStoreSpi
3773+ // {
3774+ // public DefPKCS12KeyStore3DES()
3775+ // {
3776+ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
3777+ // }
3778+ // }
3779+ // END android-removed
3780
3781 private static class IgnoresCaseHashtable
3782 {
Kenny Root5db505e2013-12-11 16:35:05 -08003783@@ -1757,7 +1765,9 @@
3784 keySizes.put(NTTObjectIdentifiers.id_camellia192_cbc, Integers.valueOf(192));
3785 keySizes.put(NTTObjectIdentifiers.id_camellia256_cbc, Integers.valueOf(256));
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003786
Kenny Root5db505e2013-12-11 16:35:05 -08003787- keySizes.put(CryptoProObjectIdentifiers.gostR28147_gcfb, Integers.valueOf(256));
3788+ // BEGIN android-removed
3789+ // keySizes.put(CryptoProObjectIdentifiers.gostR28147_gcfb, Integers.valueOf(256));
3790+ // END android-removed
3791
3792 KEY_SIZES = Collections.unmodifiableMap(keySizes);
3793 }
3794diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/AES.java
3795--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java 2013-12-03 20:18:20.000000000 +0000
3796+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/AES.java 2013-12-12 00:35:05.000000000 +0000
3797@@ -3,13 +3,17 @@
3798 import java.io.IOException;
3799 import java.lang.reflect.Constructor;
3800 import java.lang.reflect.Method;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003801-import java.security.AlgorithmParameters;
3802-import java.security.InvalidAlgorithmParameterException;
3803+// BEGIN android-removed
3804+// import java.security.AlgorithmParameters;
3805+// import java.security.InvalidAlgorithmParameterException;
3806+// END android-removed
3807 import java.security.SecureRandom;
Kenny Root5db505e2013-12-11 16:35:05 -08003808 import java.security.spec.AlgorithmParameterSpec;
3809 import java.security.spec.InvalidParameterSpecException;
3810
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003811-import javax.crypto.spec.IvParameterSpec;
3812+// BEGIN android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003813+// import javax.crypto.spec.IvParameterSpec;
3814+// END android-removed
3815
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003816 import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
Kenny Root5db505e2013-12-11 16:35:05 -08003817 import org.bouncycastle.asn1.cms.GCMParameters;
3818@@ -19,25 +23,33 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003819 import org.bouncycastle.crypto.CipherKeyGenerator;
3820 import org.bouncycastle.crypto.engines.AESFastEngine;
3821 import org.bouncycastle.crypto.engines.AESWrapEngine;
3822-import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
Kenny Root5db505e2013-12-11 16:35:05 -08003823-import org.bouncycastle.crypto.generators.Poly1305KeyGenerator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003824-import org.bouncycastle.crypto.macs.CMac;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003825-import org.bouncycastle.crypto.macs.GMac;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003826+// BEGIN android-removed
3827+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
Kenny Root5db505e2013-12-11 16:35:05 -08003828+// import org.bouncycastle.crypto.generators.Poly1305KeyGenerator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003829+// import org.bouncycastle.crypto.macs.CMac;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003830+// import org.bouncycastle.crypto.macs.GMac;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003831+// END android-removed
3832 import org.bouncycastle.crypto.modes.CBCBlockCipher;
3833 import org.bouncycastle.crypto.modes.CFBBlockCipher;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003834 import org.bouncycastle.crypto.modes.GCMBlockCipher;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003835 import org.bouncycastle.crypto.modes.OFBBlockCipher;
3836 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
3837-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
3838+// BEGIN android-removed
3839+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
3840+// END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08003841 import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003842 import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
3843 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
3844-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
3845+// BEGIN android-removed
3846+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
3847+// END android-removed
3848 import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003849 import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003850 import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003851 import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003852-import org.bouncycastle.jce.provider.BouncyCastleProvider;
3853+// BEGIN android-removed
3854+// import org.bouncycastle.jce.provider.BouncyCastleProvider;
3855+// END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08003856 import org.bouncycastle.util.Integers;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003857
3858 public final class AES
Kenny Root5db505e2013-12-11 16:35:05 -08003859@@ -99,41 +111,43 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003860 }
3861 }
3862
3863- public static class AESCMAC
3864- extends BaseMac
3865- {
3866- public AESCMAC()
3867- {
3868- super(new CMac(new AESFastEngine()));
3869- }
3870- }
3871-
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003872- public static class AESGMAC
3873- extends BaseMac
3874- {
3875- public AESGMAC()
3876- {
3877- super(new GMac(new GCMBlockCipher(new AESFastEngine())));
3878- }
3879- }
Kenny Root5db505e2013-12-11 16:35:05 -08003880-
3881- public static class Poly1305
3882- extends BaseMac
3883- {
3884- public Poly1305()
3885- {
3886- super(new org.bouncycastle.crypto.macs.Poly1305(new AESFastEngine()));
3887- }
3888- }
3889-
3890- public static class Poly1305KeyGen
3891- extends BaseKeyGenerator
3892- {
3893- public Poly1305KeyGen()
3894- {
3895- super("Poly1305-AES", 256, new Poly1305KeyGenerator());
3896- }
3897- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003898+ // BEGIN android-removed
3899+ // public static class AESCMAC
3900+ // extends BaseMac
3901+ // {
3902+ // public AESCMAC()
3903+ // {
3904+ // super(new CMac(new AESFastEngine()));
3905+ // }
3906+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003907+ //
3908+ // public static class AESGMAC
3909+ // extends BaseMac
3910+ // {
3911+ // public AESGMAC()
3912+ // {
3913+ // super(new GMac(new GCMBlockCipher(new AESFastEngine())));
3914+ // }
3915+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08003916+ //
3917+ // public static class Poly1305
3918+ // extends BaseMac
3919+ // {
3920+ // public Poly1305()
3921+ // {
3922+ // super(new org.bouncycastle.crypto.macs.Poly1305(new AESFastEngine()));
3923+ // }
3924+ // }
3925+ //
3926+ // public static class Poly1305KeyGen
3927+ // extends BaseKeyGenerator
3928+ // {
3929+ // public Poly1305KeyGen()
3930+ // {
3931+ // super("Poly1305-AES", 256, new Poly1305KeyGenerator());
3932+ // }
3933+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003934+ // END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003935
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003936 static public class Wrap
3937 extends BaseWrapCipher
Kenny Root5db505e2013-12-11 16:35:05 -08003938@@ -143,15 +157,17 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003939 super(new AESWrapEngine());
3940 }
3941 }
3942-
3943- public static class RFC3211Wrap
3944- extends BaseWrapCipher
3945- {
3946- public RFC3211Wrap()
3947- {
3948- super(new RFC3211WrapEngine(new AESFastEngine()), 16);
3949- }
3950- }
3951+
3952+ // BEGIN android-removed
3953+ // public static class RFC3211Wrap
3954+ // extends BaseWrapCipher
3955+ // {
3956+ // public RFC3211Wrap()
3957+ // {
3958+ // super(new RFC3211WrapEngine(new AESFastEngine()), 16);
3959+ // }
3960+ // }
3961+ // END android-removed
3962
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003963
3964 /**
Kenny Root5db505e2013-12-11 16:35:05 -08003965@@ -180,32 +196,34 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07003966 }
3967 }
3968
3969- public static class KeyGen128
3970- extends KeyGen
3971- {
3972- public KeyGen128()
3973- {
3974- super(128);
3975- }
3976- }
3977-
3978- public static class KeyGen192
3979- extends KeyGen
3980- {
3981- public KeyGen192()
3982- {
3983- super(192);
3984- }
3985- }
3986-
3987- public static class KeyGen256
3988- extends KeyGen
3989- {
3990- public KeyGen256()
3991- {
3992- super(256);
3993- }
3994- }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07003995+ // BEGIN android-removed
3996+ // public static class KeyGen128
3997+ // extends KeyGen
3998+ // {
3999+ // public KeyGen128()
4000+ // {
4001+ // super(128);
4002+ // }
4003+ // }
4004+ //
4005+ // public static class KeyGen192
4006+ // extends KeyGen
4007+ // {
4008+ // public KeyGen192()
4009+ // {
4010+ // super(192);
4011+ // }
4012+ // }
4013+ //
4014+ // public static class KeyGen256
4015+ // extends KeyGen
4016+ // {
4017+ // public KeyGen256()
4018+ // {
4019+ // super(256);
4020+ // }
4021+ // }
4022+ // END android-removed
4023
4024 /**
4025 * PBEWithSHA1And128BitAES-BC
Kenny Root5db505e2013-12-11 16:35:05 -08004026@@ -315,43 +333,45 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004027 }
4028 }
4029
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004030- public static class AlgParamGen
4031- extends BaseAlgorithmParameterGenerator
4032- {
4033- protected void engineInit(
4034- AlgorithmParameterSpec genParamSpec,
4035- SecureRandom random)
4036- throws InvalidAlgorithmParameterException
4037- {
4038- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation.");
4039- }
4040-
4041- protected AlgorithmParameters engineGenerateParameters()
4042- {
4043- byte[] iv = new byte[16];
4044-
4045- if (random == null)
4046- {
4047- random = new SecureRandom();
4048- }
4049-
4050- random.nextBytes(iv);
4051-
4052- AlgorithmParameters params;
4053-
4054- try
4055- {
4056- params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME);
4057- params.init(new IvParameterSpec(iv));
4058- }
4059- catch (Exception e)
4060- {
4061- throw new RuntimeException(e.getMessage());
4062- }
4063-
4064- return params;
4065- }
4066- }
4067+ // BEGIN android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004068+ // public static class AlgParamGen
4069+ // extends BaseAlgorithmParameterGenerator
4070+ // {
4071+ // protected void engineInit(
4072+ // AlgorithmParameterSpec genParamSpec,
4073+ // SecureRandom random)
4074+ // throws InvalidAlgorithmParameterException
4075+ // {
4076+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation.");
4077+ // }
4078+ //
4079+ // protected AlgorithmParameters engineGenerateParameters()
4080+ // {
4081+ // byte[] iv = new byte[16];
4082+ //
4083+ // if (random == null)
4084+ // {
4085+ // random = new SecureRandom();
4086+ // }
4087+ //
4088+ // random.nextBytes(iv);
4089+ //
4090+ // AlgorithmParameters params;
4091+ //
4092+ // try
4093+ // {
4094+ // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME);
4095+ // params.init(new IvParameterSpec(iv));
4096+ // }
4097+ // catch (Exception e)
4098+ // {
4099+ // throw new RuntimeException(e.getMessage());
4100+ // }
4101+ //
4102+ // return params;
4103+ // }
4104+ // }
4105+ // END android-removed
4106
4107 public static class AlgParams
4108 extends IvAlgorithmParameters
Kenny Root5db505e2013-12-11 16:35:05 -08004109@@ -484,35 +504,41 @@
4110 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_GCM, "GCM");
4111 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_GCM, "GCM");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004112
4113- provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen");
4114- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES");
4115- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES");
4116- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES");
4117- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES");
4118- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES");
4119- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES");
4120+ // BEGIN android-removed
4121+ // provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen");
4122+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES");
4123+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES");
4124+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES");
4125+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES");
4126+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES");
4127+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES");
4128+ // END android-removed
4129
4130 provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB");
4131 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES");
4132 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES");
4133 provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES");
4134- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB");
4135- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB");
4136- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB");
4137- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC");
4138- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC");
4139- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC");
4140- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB");
4141- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB");
4142- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB");
4143- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB");
4144- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB");
4145- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB");
4146+ // BEGIN android-removed
4147+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB");
4148+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB");
4149+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB");
4150+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC");
4151+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC");
4152+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC");
4153+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB");
4154+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB");
4155+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB");
4156+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB");
4157+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB");
4158+ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB");
4159+ // END android-removed
4160 provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap");
4161 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP");
4162 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP");
4163 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP");
4164- provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap");
4165+ // BEGIN android-removed
4166+ // provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap");
4167+ // END android-removed
4168
Kenny Root5db505e2013-12-11 16:35:05 -08004169 provider.addAlgorithm("Cipher.GCM", PREFIX + "$GCM");
4170 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_GCM, "GCM");
4171@@ -520,27 +546,29 @@
4172 provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_GCM, "GCM");
4173
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004174 provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen");
4175- provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128");
4176- provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192");
4177- provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256");
4178- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128");
4179- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128");
4180- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128");
4181- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128");
4182- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192");
4183- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192");
4184- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192");
4185- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192");
4186- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256");
4187- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256");
4188- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256");
4189- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256");
4190- provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen");
4191- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128");
4192- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192");
4193- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256");
4194-
4195- provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC");
4196+ // BEGIN android-removed
4197+ // provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128");
4198+ // provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192");
4199+ // provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256");
4200+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128");
4201+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128");
4202+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128");
4203+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128");
4204+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192");
4205+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192");
4206+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192");
4207+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192");
4208+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256");
4209+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256");
4210+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256");
4211+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256");
4212+ // provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen");
4213+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128");
4214+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192");
4215+ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256");
4216+ //
4217+ // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC");
4218+ // END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004219
4220 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC");
4221 provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC");
Kenny Root5db505e2013-12-11 16:35:05 -08004222@@ -619,8 +647,10 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004223 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE");
4224 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE");
4225
4226- addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128");
Kenny Root5db505e2013-12-11 16:35:05 -08004227- addPoly1305Algorithm(provider, "AES", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004228+ // BEGIN android-removed
4229+ // addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128");
Kenny Root5db505e2013-12-11 16:35:05 -08004230+ // addPoly1305Algorithm(provider, "AES", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004231+ // END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004232 }
4233 }
Kenny Root5db505e2013-12-11 16:35:05 -08004234
4235diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/ARC4.java
4236--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2013-12-03 20:18:20.000000000 +0000
4237+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004238@@ -29,7 +29,9 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004239 {
4240 public KeyGen()
4241 {
4242- super("RC4", 128, new CipherKeyGenerator());
4243+ // BEGIN android-changed
4244+ super("ARC4", 128, new CipherKeyGenerator());
4245+ // END android-changed
4246 }
4247 }
4248
Kenny Root5db505e2013-12-11 16:35:05 -08004249diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java
4250--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2013-12-03 20:18:20.000000000 +0000
4251+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004252@@ -64,7 +64,9 @@
4253 {
4254
4255 provider.addAlgorithm("Cipher.BLOWFISH", PREFIX + "$ECB");
4256- provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC");
4257+ // BEGIN android-removed
4258+ // provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC");
4259+ // END android-removed
4260 provider.addAlgorithm("KeyGenerator.BLOWFISH", PREFIX + "$KeyGen");
4261 provider.addAlgorithm("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH");
4262 provider.addAlgorithm("AlgorithmParameters.BLOWFISH", PREFIX + "$AlgParams");
Kenny Root5db505e2013-12-11 16:35:05 -08004263diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DES.java
4264--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java 2013-12-03 20:18:20.000000000 +0000
4265+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DES.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004266@@ -19,12 +19,16 @@
4267 import org.bouncycastle.crypto.CipherParameters;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004268 import org.bouncycastle.crypto.KeyGenerationParameters;
4269 import org.bouncycastle.crypto.engines.DESEngine;
4270-import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
4271+// BEGIN android-removed
4272+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
4273+// END android-removed
4274 import org.bouncycastle.crypto.generators.DESKeyGenerator;
4275 import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
4276-import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4277-import org.bouncycastle.crypto.macs.CMac;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004278-import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004279+// BEGIN android-removed
4280+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4281+// import org.bouncycastle.crypto.macs.CMac;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004282+// import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004283+// END android-removed
4284 import org.bouncycastle.crypto.modes.CBCBlockCipher;
4285 import org.bouncycastle.crypto.paddings.ISO7816d4Padding;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004286 import org.bouncycastle.crypto.params.DESParameters;
4287@@ -66,17 +70,19 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004288 }
4289 }
4290
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004291- /**
4292- * DES CFB8
4293- */
4294- public static class DESCFB8
4295- extends BaseMac
4296- {
4297- public DESCFB8()
4298- {
4299- super(new CFBBlockCipherMac(new DESEngine()));
4300- }
4301- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004302+ // BEGIN android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004303+ // /**
4304+ // * DES CFB8
4305+ // */
4306+ // public static class DESCFB8
4307+ // extends BaseMac
4308+ // {
4309+ // public DESCFB8()
4310+ // {
4311+ // super(new CFBBlockCipherMac(new DESEngine()));
4312+ // }
4313+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004314+ // END android-removed
4315
4316 /**
4317 * DES64
4318@@ -111,47 +117,49 @@
4319 }
4320 }
4321
4322- static public class CMAC
4323- extends BaseMac
4324- {
4325- public CMAC()
4326- {
4327- super(new CMac(new DESEngine()));
4328- }
4329- }
4330-
4331- /**
4332- * DES9797Alg3with7816-4Padding
4333- */
4334- public static class DES9797Alg3with7816d4
4335- extends BaseMac
4336- {
4337- public DES9797Alg3with7816d4()
4338- {
4339- super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
4340- }
4341- }
4342-
4343- /**
4344- * DES9797Alg3
4345- */
4346- public static class DES9797Alg3
4347- extends BaseMac
4348- {
4349- public DES9797Alg3()
4350- {
4351- super(new ISO9797Alg3Mac(new DESEngine()));
4352- }
4353- }
4354-
4355- public static class RFC3211
4356- extends BaseWrapCipher
4357- {
4358- public RFC3211()
4359- {
4360- super(new RFC3211WrapEngine(new DESEngine()), 8);
4361- }
4362- }
4363+ // BEGIN android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004364+ // static public class CMAC
4365+ // extends BaseMac
4366+ // {
4367+ // public CMAC()
4368+ // {
4369+ // super(new CMac(new DESEngine()));
4370+ // }
4371+ // }
4372+ //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004373+ // /**
4374+ // * DES9797Alg3with7816-4Padding
4375+ // */
4376+ // public static class DES9797Alg3with7816d4
4377+ // extends BaseMac
4378+ // {
4379+ // public DES9797Alg3with7816d4()
4380+ // {
4381+ // super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
4382+ // }
4383+ // }
4384+ //
4385+ // /**
4386+ // * DES9797Alg3
4387+ // */
4388+ // public static class DES9797Alg3
4389+ // extends BaseMac
4390+ // {
4391+ // public DES9797Alg3()
4392+ // {
4393+ // super(new ISO9797Alg3Mac(new DESEngine()));
4394+ // }
4395+ // }
4396+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004397+ // public static class RFC3211
4398+ // extends BaseWrapCipher
4399+ // {
4400+ // public RFC3211()
4401+ // {
4402+ // super(new RFC3211WrapEngine(new DESEngine()), 8);
4403+ // }
4404+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004405+ // END android-removed
4406
4407 public static class AlgParamGen
4408 extends BaseAlgorithmParameterGenerator
4409@@ -351,17 +359,19 @@
4410 }
4411 }
4412
4413- /**
4414- * PBEWithMD2AndDES
4415- */
4416- static public class PBEWithMD2KeyFactory
4417- extends DESPBEKeyFactory
4418- {
4419- public PBEWithMD2KeyFactory()
4420- {
4421- super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
4422- }
4423- }
4424+ // BEGIN android-removed
4425+ // /**
4426+ // * PBEWithMD2AndDES
4427+ // */
4428+ // static public class PBEWithMD2KeyFactory
4429+ // extends DESPBEKeyFactory
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004430+ // {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004431+ // public PBEWithMD2KeyFactory()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004432+ // {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004433+ // super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004434+ // }
4435+ // }
4436+ // END android-removed
4437
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004438 /**
4439 * PBEWithMD5AndDES
4440@@ -387,17 +397,19 @@
4441 }
4442 }
4443
4444- /**
4445- * PBEWithMD2AndDES
4446- */
4447- static public class PBEWithMD2
4448- extends BaseBlockCipher
4449- {
4450- public PBEWithMD2()
4451- {
4452- super(new CBCBlockCipher(new DESEngine()));
4453- }
4454- }
4455+ // BEGIN android-removed
4456+ // /**
4457+ // * PBEWithMD2AndDES
4458+ // */
4459+ // static public class PBEWithMD2
4460+ // extends BaseBlockCipher
4461+ // {
4462+ // public PBEWithMD2()
4463+ // {
4464+ // super(new CBCBlockCipher(new DESEngine()));
4465+ // }
4466+ // }
4467+ // END android-removed
4468
4469 /**
4470 * PBEWithMD5AndDES
4471@@ -437,61 +449,75 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004472 {
4473
4474 provider.addAlgorithm("Cipher.DES", PREFIX + "$ECB");
4475- provider.addAlgorithm("Cipher." + OIWObjectIdentifiers.desCBC, PREFIX + "$CBC");
4476-
4477- addAlias(provider, OIWObjectIdentifiers.desCBC, "DES");
4478-
4479- provider.addAlgorithm("Cipher.DESRFC3211WRAP", PREFIX + "$RFC3211");
4480+ // BEGIN android-removed
4481+ // provider.addAlgorithm("Cipher." + OIWObjectIdentifiers.desCBC, PREFIX + "$CBC");
4482+ //
4483+ // addAlias(provider, OIWObjectIdentifiers.desCBC, "DES");
4484+ //
4485+ // provider.addAlgorithm("Cipher.DESRFC3211WRAP", PREFIX + "$RFC3211");
4486+ // END android-removed
4487
4488 provider.addAlgorithm("KeyGenerator.DES", PREFIX + "$KeyGenerator");
4489
4490 provider.addAlgorithm("SecretKeyFactory.DES", PREFIX + "$KeyFactory");
4491
4492- provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC");
4493- provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC");
4494- provider.addAlgorithm("Alg.Alias.Mac.DES", "DESMAC");
4495-
4496- provider.addAlgorithm("Mac.DESMAC/CFB8", PREFIX + "$DESCFB8");
4497- provider.addAlgorithm("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8");
4498-
4499- provider.addAlgorithm("Mac.DESMAC64", PREFIX + "$DES64");
4500- provider.addAlgorithm("Alg.Alias.Mac.DES64", "DESMAC64");
4501-
4502- provider.addAlgorithm("Mac.DESMAC64WITHISO7816-4PADDING", PREFIX + "$DES64with7816d4");
4503- provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
4504- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
4505- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004506-
4507- provider.addAlgorithm("Mac.DESWITHISO9797", PREFIX + "$DES9797Alg3");
4508- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
4509-
4510- provider.addAlgorithm("Mac.ISO9797ALG3MAC", PREFIX + "$DES9797Alg3");
4511- provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
4512- provider.addAlgorithm("Mac.ISO9797ALG3WITHISO7816-4PADDING", PREFIX + "$DES9797Alg3with7816d4");
4513- provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004514+ // BEGIN android-removed
4515+ // provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC");
4516+ // provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC");
4517+ // provider.addAlgorithm("Alg.Alias.Mac.DES", "DESMAC");
4518+ //
4519+ // provider.addAlgorithm("Mac.DESMAC/CFB8", PREFIX + "$DESCFB8");
4520+ // provider.addAlgorithm("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8");
4521+ //
4522+ // provider.addAlgorithm("Mac.DESMAC64", PREFIX + "$DES64");
4523+ // provider.addAlgorithm("Alg.Alias.Mac.DES64", "DESMAC64");
4524+ //
4525+ // provider.addAlgorithm("Mac.DESMAC64WITHISO7816-4PADDING", PREFIX + "$DES64with7816d4");
4526+ // provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
4527+ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
4528+ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004529+ //
4530+ // provider.addAlgorithm("Mac.DESWITHISO9797", PREFIX + "$DES9797Alg3");
4531+ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
4532+ //
4533+ // provider.addAlgorithm("Mac.ISO9797ALG3MAC", PREFIX + "$DES9797Alg3");
4534+ // provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
4535+ // provider.addAlgorithm("Mac.ISO9797ALG3WITHISO7816-4PADDING", PREFIX + "$DES9797Alg3with7816d4");
4536+ // provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004537+ // END android-removed
4538
4539 provider.addAlgorithm("AlgorithmParameters.DES", PACKAGE + ".util.IvAlgorithmParameters");
4540 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + OIWObjectIdentifiers.desCBC, "DES");
4541
4542- provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen");
4543- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004544-
4545- provider.addAlgorithm("Cipher.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004546+ // BEGIN android-removed
4547+ // provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen");
4548+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004549+ //
4550+ // provider.addAlgorithm("Cipher.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004551+ // END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004552 provider.addAlgorithm("Cipher.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5");
4553 provider.addAlgorithm("Cipher.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1");
4554
4555- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
4556+ // BEGIN android-removed
4557+ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
4558+ // END android-removed
4559 provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
4560 provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
4561
4562- provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2KeyFactory");
4563+ // BEGIN android-removed
4564+ // provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2KeyFactory");
4565+ // END android-removed
4566 provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5KeyFactory");
4567 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1KeyFactory");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004568
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004569- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
4570+ // BEGIN android-removed
4571+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
4572+ // END android-removed
4573 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDDES-CBC", "PBEWITHMD5ANDDES");
4574 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDDES-CBC", "PBEWITHSHA1ANDDES");
4575- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
4576+ // BEGIN android-removed
4577+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
4578+ // END android-removed
4579 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
4580 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
4581 }
Kenny Root5db505e2013-12-11 16:35:05 -08004582diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DESede.java
4583--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2013-12-03 20:18:20.000000000 +0000
4584+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004585@@ -1,30 +1,42 @@
4586 package org.bouncycastle.jcajce.provider.symmetric;
4587
4588-import java.security.AlgorithmParameters;
4589-import java.security.InvalidAlgorithmParameterException;
4590+// BEGIN android-removed
4591+// import java.security.AlgorithmParameters;
4592+// import java.security.InvalidAlgorithmParameterException;
4593+// END android-removed
4594 import java.security.SecureRandom;
4595-import java.security.spec.AlgorithmParameterSpec;
4596+// BEGIN android-removed
4597+// import java.security.spec.AlgorithmParameterSpec;
4598+// END android-removed
4599 import java.security.spec.InvalidKeySpecException;
4600 import java.security.spec.KeySpec;
4601
4602 import javax.crypto.SecretKey;
4603 import javax.crypto.spec.DESedeKeySpec;
4604-import javax.crypto.spec.IvParameterSpec;
4605+// BEGIN android-removed
4606+// import javax.crypto.spec.IvParameterSpec;
4607+// END android-removed
4608 import javax.crypto.spec.SecretKeySpec;
4609
4610 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
4611 import org.bouncycastle.crypto.KeyGenerationParameters;
4612 import org.bouncycastle.crypto.engines.DESedeEngine;
4613 import org.bouncycastle.crypto.engines.DESedeWrapEngine;
4614-import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
4615+// BEGIN android-removed
4616+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
4617+// END android-removed
4618 import org.bouncycastle.crypto.generators.DESedeKeyGenerator;
4619 import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
4620-import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4621-import org.bouncycastle.crypto.macs.CMac;
4622+// BEGIN android-removed
4623+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4624+// import org.bouncycastle.crypto.macs.CMac;
4625+// END android-removed
4626 import org.bouncycastle.crypto.modes.CBCBlockCipher;
4627 import org.bouncycastle.crypto.paddings.ISO7816d4Padding;
4628 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
4629-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
4630+// BEGIN android-removed
4631+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
4632+// END android-removed
4633 import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
4634 import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
4635 import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
4636@@ -57,17 +69,19 @@
4637 }
4638 }
4639
4640- /**
4641- * DESede CFB8
4642- */
4643- public static class DESedeCFB8
4644- extends BaseMac
4645- {
4646- public DESedeCFB8()
4647- {
4648- super(new CFBBlockCipherMac(new DESedeEngine()));
4649- }
4650- }
4651+ // BEGIN android-removed
4652+ // /**
4653+ // * DESede CFB8
4654+ // */
4655+ // public static class DESedeCFB8
4656+ // extends BaseMac
4657+ // {
4658+ // public DESedeCFB8()
4659+ // {
4660+ // super(new CFBBlockCipherMac(new DESedeEngine()));
4661+ // }
4662+ // }
4663+ // END android-removed
4664
4665 /**
4666 * DESede64
4667@@ -102,15 +116,17 @@
4668 }
4669 }
4670
4671- static public class CMAC
4672- extends BaseMac
4673- {
4674- public CMAC()
4675- {
4676- super(new CMac(new DESedeEngine()));
4677- }
4678- }
4679-
4680+ // BEGIN android-removed
4681+ // static public class CMAC
4682+ // extends BaseMac
4683+ // {
4684+ // public CMAC()
4685+ // {
4686+ // super(new CMac(new DESedeEngine()));
4687+ // }
4688+ // }
4689+ // END android-removed
4690+
4691 public static class Wrap
4692 extends BaseWrapCipher
4693 {
4694@@ -119,15 +135,17 @@
4695 super(new DESedeWrapEngine());
4696 }
4697 }
4698-
4699- public static class RFC3211
4700- extends BaseWrapCipher
4701- {
4702- public RFC3211()
4703- {
4704- super(new RFC3211WrapEngine(new DESedeEngine()), 8);
4705- }
4706- }
4707+
4708+ // BEGIN android-removed
4709+ // public static class RFC3211
4710+ // extends BaseWrapCipher
4711+ // {
4712+ // public RFC3211()
4713+ // {
4714+ // super(new RFC3211WrapEngine(new DESedeEngine()), 8);
4715+ // }
4716+ // }
4717+ // END android-removed
4718
4719 /**
4720 * DESede - the default for this is to generate a key in
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004721@@ -241,43 +259,45 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004722 }
4723 }
4724
4725- public static class AlgParamGen
4726- extends BaseAlgorithmParameterGenerator
4727- {
4728- protected void engineInit(
4729- AlgorithmParameterSpec genParamSpec,
4730- SecureRandom random)
4731- throws InvalidAlgorithmParameterException
4732- {
4733- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation.");
4734- }
4735-
4736- protected AlgorithmParameters engineGenerateParameters()
4737- {
4738- byte[] iv = new byte[8];
4739-
4740- if (random == null)
4741- {
4742- random = new SecureRandom();
4743- }
4744-
4745- random.nextBytes(iv);
4746-
4747- AlgorithmParameters params;
4748-
4749- try
4750- {
4751- params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME);
4752- params.init(new IvParameterSpec(iv));
4753- }
4754- catch (Exception e)
4755- {
4756- throw new RuntimeException(e.getMessage());
4757- }
4758-
4759- return params;
4760- }
4761- }
4762+ // BEGIN android-removed
4763+ // public static class AlgParamGen
4764+ // extends BaseAlgorithmParameterGenerator
4765+ // {
4766+ // protected void engineInit(
4767+ // AlgorithmParameterSpec genParamSpec,
4768+ // SecureRandom random)
4769+ // throws InvalidAlgorithmParameterException
4770+ // {
4771+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation.");
4772+ // }
4773+ //
4774+ // protected AlgorithmParameters engineGenerateParameters()
4775+ // {
4776+ // byte[] iv = new byte[8];
4777+ //
4778+ // if (random == null)
4779+ // {
4780+ // random = new SecureRandom();
4781+ // }
4782+ //
4783+ // random.nextBytes(iv);
4784+ //
4785+ // AlgorithmParameters params;
4786+ //
4787+ // try
4788+ // {
4789+ // params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME);
4790+ // params.init(new IvParameterSpec(iv));
4791+ // }
4792+ // catch (Exception e)
4793+ // {
4794+ // throw new RuntimeException(e.getMessage());
4795+ // }
4796+ //
4797+ // return params;
4798+ // }
4799+ // }
4800+ // END android-removed
4801
4802 static public class KeyFactory
4803 extends BaseSecretKeyFactory
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004804@@ -361,25 +381,37 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004805 public void configure(ConfigurableProvider provider)
4806 {
4807 provider.addAlgorithm("Cipher.DESEDE", PREFIX + "$ECB");
4808- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$CBC");
4809+ // BEGIN android-removed
4810+ // provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$CBC");
4811+ // END android-removed
4812 provider.addAlgorithm("Cipher.DESEDEWRAP", PREFIX + "$Wrap");
4813- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, PREFIX + "$Wrap");
4814- provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211");
4815+ // BEGIN android-changed
4816+ provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, "DESEDEWRAP");
4817+ // END android-changed
4818+ // BEGIN android-removed
4819+ // provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211");
4820+ // END android-removed
4821
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004822 provider.addAlgorithm("Alg.Alias.Cipher.TDEA", "DESEDE");
4823 provider.addAlgorithm("Alg.Alias.Cipher.TDEAWRAP", "DESEDEWRAP");
4824 provider.addAlgorithm("Alg.Alias.KeyGenerator.TDEA", "DESEDE");
4825 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.TDEA", "DESEDE");
4826- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.TDEA", "DESEDE");
4827+ // BEGIN android-removed
4828+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.TDEA", "DESEDE");
4829+ // END android-removed
4830 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.TDEA", "DESEDE");
4831
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004832 if (provider.hasAlgorithm("MessageDigest", "SHA-1"))
4833 {
4834 provider.addAlgorithm("Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3Key");
4835- provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES3Key");
4836- provider.addAlgorithm("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$OldPBEWithSHAAndDES3Key");
4837+ // BEGIN android-removed
4838+ // provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES3Key");
4839+ // provider.addAlgorithm("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$OldPBEWithSHAAndDES3Key");
4840+ // END android-removed
4841 provider.addAlgorithm("Cipher.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2Key");
4842- provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES2Key");
4843+ // BEGIN android-removed
4844+ // provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES2Key");
4845+ // END android-removed
4846 provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, "PBEWITHSHAAND3-KEYTRIPLEDES-CBC");
4847 provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC, "PBEWITHSHAAND2-KEYTRIPLEDES-CBC");
4848 provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1ANDDESEDE", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004849@@ -388,31 +420,37 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004850 }
4851
4852 provider.addAlgorithm("KeyGenerator.DESEDE", PREFIX + "$KeyGenerator");
4853- provider.addAlgorithm("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$KeyGenerator3");
4854- provider.addAlgorithm("KeyGenerator.DESEDEWRAP", PREFIX + "$KeyGenerator");
4855+ // BEGIN android-removed
4856+ // provider.addAlgorithm("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$KeyGenerator3");
4857+ // provider.addAlgorithm("KeyGenerator.DESEDEWRAP", PREFIX + "$KeyGenerator");
4858+ // END android-removed
4859
4860 provider.addAlgorithm("SecretKeyFactory.DESEDE", PREFIX + "$KeyFactory");
4861
4862- provider.addAlgorithm("Mac.DESEDECMAC", PREFIX + "$CMAC");
4863- provider.addAlgorithm("Mac.DESEDEMAC", PREFIX + "$CBCMAC");
4864- provider.addAlgorithm("Alg.Alias.Mac.DESEDE", "DESEDEMAC");
4865-
4866- provider.addAlgorithm("Mac.DESEDEMAC/CFB8", PREFIX + "$DESedeCFB8");
4867- provider.addAlgorithm("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8");
4868-
4869- provider.addAlgorithm("Mac.DESEDEMAC64", PREFIX + "$DESede64");
4870- provider.addAlgorithm("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64");
4871-
4872- provider.addAlgorithm("Mac.DESEDEMAC64WITHISO7816-4PADDING", PREFIX + "$DESede64with7816d4");
4873- provider.addAlgorithm("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4874- provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4875- provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4876+ // BEGIN android-removed
4877+ // provider.addAlgorithm("Mac.DESEDECMAC", PREFIX + "$CMAC");
4878+ // provider.addAlgorithm("Mac.DESEDEMAC", PREFIX + "$CBCMAC");
4879+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE", "DESEDEMAC");
4880+ //
4881+ // provider.addAlgorithm("Mac.DESEDEMAC/CFB8", PREFIX + "$DESedeCFB8");
4882+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8");
4883+ //
4884+ // provider.addAlgorithm("Mac.DESEDEMAC64", PREFIX + "$DESede64");
4885+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64");
4886+ //
4887+ // provider.addAlgorithm("Mac.DESEDEMAC64WITHISO7816-4PADDING", PREFIX + "$DESede64with7816d4");
4888+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4889+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4890+ // provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING");
4891+ // END android-removed
4892
4893 provider.addAlgorithm("AlgorithmParameters.DESEDE", PACKAGE + ".util.IvAlgorithmParameters");
4894 provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE");
4895
4896- provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen");
4897- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE");
4898+ // BEGIN android-removed
4899+ // provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen");
4900+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE");
4901+ // END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004902
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004903 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3KeyFactory");
4904 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2KeyFactory");
Kenny Root5db505e2013-12-11 16:35:05 -08004905diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/RC2.java
4906--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java 2013-12-03 20:18:20.000000000 +0000
4907+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/RC2.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004908@@ -12,24 +12,34 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004909
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004910 import org.bouncycastle.asn1.ASN1Primitive;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004911 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004912-import org.bouncycastle.asn1.pkcs.RC2CBCParameter;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004913-import org.bouncycastle.crypto.CipherKeyGenerator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004914+// BEGIN android-removed
4915+// import org.bouncycastle.asn1.pkcs.RC2CBCParameter;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004916+// import org.bouncycastle.crypto.CipherKeyGenerator;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004917+// END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004918 import org.bouncycastle.crypto.engines.RC2Engine;
4919-import org.bouncycastle.crypto.engines.RC2WrapEngine;
4920-import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
4921-import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4922+// BEGIN android-removed
4923+// import org.bouncycastle.crypto.engines.RC2WrapEngine;
4924+// import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
4925+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
4926+// END android-removed
4927 import org.bouncycastle.crypto.modes.CBCBlockCipher;
4928 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
4929-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
4930-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters;
4931+// BEGIN android-removed
4932+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
4933+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters;
4934+// END android-removed
4935 import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
4936-import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
4937-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
4938-import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
4939+// BEGIN android-removed
4940+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
4941+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
4942+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
4943+// END android-removed
4944 import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
4945 import org.bouncycastle.jcajce.provider.util.AlgorithmProvider;
4946 import org.bouncycastle.jce.provider.BouncyCastleProvider;
4947-import org.bouncycastle.util.Arrays;
4948+// BEGIN android-removed
4949+// import org.bouncycastle.util.Arrays;
4950+// END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004951
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004952 public final class RC2
4953 {
4954@@ -37,59 +47,61 @@
4955 {
4956 }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07004957
Brian Carlstroma198e1e2013-05-24 19:14:15 -07004958- /**
4959- * RC2
4960- */
4961- static public class ECB
4962- extends BaseBlockCipher
4963- {
4964- public ECB()
4965- {
4966- super(new RC2Engine());
4967- }
4968- }
4969-
4970- /**
4971- * RC2CBC
4972- */
4973- static public class CBC
4974- extends BaseBlockCipher
4975- {
4976- public CBC()
4977- {
4978- super(new CBCBlockCipher(new RC2Engine()), 64);
4979- }
4980- }
4981-
4982- public static class Wrap
4983- extends BaseWrapCipher
4984- {
4985- public Wrap()
4986- {
4987- super(new RC2WrapEngine());
4988- }
4989- }
4990-
4991- /**
4992- * RC2
4993- */
4994- public static class CBCMAC
4995- extends BaseMac
4996- {
4997- public CBCMAC()
4998- {
4999- super(new CBCBlockCipherMac(new RC2Engine()));
5000- }
5001- }
5002-
5003- public static class CFB8MAC
5004- extends BaseMac
5005- {
5006- public CFB8MAC()
5007- {
5008- super(new CFBBlockCipherMac(new RC2Engine()));
5009- }
5010- }
5011+ // BEGIN android-removed
5012+ // /**
5013+ // * RC2
5014+ // */
5015+ // static public class ECB
5016+ // extends BaseBlockCipher
5017+ // {
5018+ // public ECB()
5019+ // {
5020+ // super(new RC2Engine());
5021+ // }
5022+ // }
5023+ //
5024+ // /**
5025+ // * RC2CBC
5026+ // */
5027+ // static public class CBC
5028+ // extends BaseBlockCipher
5029+ // {
5030+ // public CBC()
5031+ // {
5032+ // super(new CBCBlockCipher(new RC2Engine()), 64);
5033+ // }
5034+ // }
5035+ //
5036+ // public static class Wrap
5037+ // extends BaseWrapCipher
5038+ // {
5039+ // public Wrap()
5040+ // {
5041+ // super(new RC2WrapEngine());
5042+ // }
5043+ // }
5044+ //
5045+ // /**
5046+ // * RC2
5047+ // */
5048+ // public static class CBCMAC
5049+ // extends BaseMac
5050+ // {
5051+ // public CBCMAC()
5052+ // {
5053+ // super(new CBCBlockCipherMac(new RC2Engine()));
5054+ // }
5055+ // }
5056+ //
5057+ // public static class CFB8MAC
5058+ // extends BaseMac
5059+ // {
5060+ // public CFB8MAC()
5061+ // {
5062+ // super(new CFBBlockCipherMac(new RC2Engine()));
5063+ // }
5064+ // }
5065+ // END android-removed
5066
5067 /**
5068 * PBEWithSHA1AndRC2
5069@@ -175,17 +187,19 @@
5070 }
5071 }
5072
5073- /**
5074- * PBEWithMD2AndRC2
5075- */
5076- static public class PBEWithMD2KeyFactory
5077- extends PBESecretKeyFactory
5078- {
5079- public PBEWithMD2KeyFactory()
5080- {
5081- super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
5082- }
5083- }
5084+ // BEGIN android-removed
5085+ // /**
5086+ // * PBEWithMD2AndRC2
5087+ // */
5088+ // static public class PBEWithMD2KeyFactory
5089+ // extends PBESecretKeyFactory
5090+ // {
5091+ // public PBEWithMD2KeyFactory()
5092+ // {
5093+ // super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
5094+ // }
5095+ // }
5096+ // END android-removed
5097
5098 /**
5099 * PBEWithMD5AndRC2
5100@@ -199,247 +213,249 @@
5101 }
5102 }
5103
5104- public static class AlgParamGen
5105- extends BaseAlgorithmParameterGenerator
5106- {
5107- RC2ParameterSpec spec = null;
5108-
5109- protected void engineInit(
5110- AlgorithmParameterSpec genParamSpec,
5111- SecureRandom random)
5112- throws InvalidAlgorithmParameterException
5113- {
5114- if (genParamSpec instanceof RC2ParameterSpec)
5115- {
5116- spec = (RC2ParameterSpec)genParamSpec;
5117- return;
5118- }
5119-
5120- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation.");
5121- }
5122-
5123- protected AlgorithmParameters engineGenerateParameters()
5124- {
5125- AlgorithmParameters params;
5126-
5127- if (spec == null)
5128- {
5129- byte[] iv = new byte[8];
5130-
5131- if (random == null)
5132- {
5133- random = new SecureRandom();
5134- }
5135-
5136- random.nextBytes(iv);
5137-
5138- try
5139- {
5140- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
5141- params.init(new IvParameterSpec(iv));
5142- }
5143- catch (Exception e)
5144- {
5145- throw new RuntimeException(e.getMessage());
5146- }
5147- }
5148- else
5149- {
5150- try
5151- {
5152- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
5153- params.init(spec);
5154- }
5155- catch (Exception e)
5156- {
5157- throw new RuntimeException(e.getMessage());
5158- }
5159- }
5160-
5161- return params;
5162- }
5163- }
5164-
5165- public static class KeyGenerator
5166- extends BaseKeyGenerator
5167- {
5168- public KeyGenerator()
5169- {
5170- super("RC2", 128, new CipherKeyGenerator());
5171- }
5172- }
5173-
5174- public static class AlgParams
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005175- extends BaseAlgorithmParameters
5176- {
5177- private static final short[] table = {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005178- 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
5179- 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
5180- 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
5181- 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
5182- 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
5183- 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
5184- 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
5185- 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
5186- 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
5187- 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
5188- 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
5189- 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
5190- 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
5191- 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
5192- 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
5193- 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005194- };
5195-
5196- private static final short[] ekb = {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005197- 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
5198- 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
5199- 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
5200- 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
5201- 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
5202- 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
5203- 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
5204- 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
5205- 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
5206- 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
5207- 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
5208- 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
5209- 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
5210- 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
5211- 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
5212- 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005213- };
5214-
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005215- private byte[] iv;
5216- private int parameterVersion = 58;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005217-
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005218- protected byte[] engineGetEncoded()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005219- {
5220- return Arrays.clone(iv);
5221- }
5222-
5223- protected byte[] engineGetEncoded(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005224- String format)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005225- throws IOException
5226- {
5227- if (this.isASN1FormatString(format))
5228- {
5229- if (parameterVersion == -1)
5230- {
5231- return new RC2CBCParameter(engineGetEncoded()).getEncoded();
5232- }
5233- else
5234- {
5235- return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded();
5236- }
5237- }
5238-
5239- if (format.equals("RAW"))
5240- {
5241- return engineGetEncoded();
5242- }
5243-
5244- return null;
5245- }
5246-
5247- protected AlgorithmParameterSpec localEngineGetParameterSpec(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005248- Class paramSpec)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005249- throws InvalidParameterSpecException
5250- {
5251- if (paramSpec == RC2ParameterSpec.class)
5252- {
5253- if (parameterVersion != -1)
5254- {
5255- if (parameterVersion < 256)
5256- {
5257- return new RC2ParameterSpec(ekb[parameterVersion], iv);
5258- }
5259- else
5260- {
5261- return new RC2ParameterSpec(parameterVersion, iv);
5262- }
5263- }
5264- }
5265-
5266- if (paramSpec == IvParameterSpec.class)
5267- {
5268- return new IvParameterSpec(iv);
5269- }
5270-
5271- throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object.");
5272- }
5273-
5274- protected void engineInit(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005275- AlgorithmParameterSpec paramSpec)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005276- throws InvalidParameterSpecException
5277- {
5278- if (paramSpec instanceof IvParameterSpec)
5279- {
5280- this.iv = ((IvParameterSpec)paramSpec).getIV();
5281- }
5282- else if (paramSpec instanceof RC2ParameterSpec)
5283- {
5284- int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits();
5285- if (effKeyBits != -1)
5286- {
5287- if (effKeyBits < 256)
5288- {
5289- parameterVersion = table[effKeyBits];
5290- }
5291- else
5292- {
5293- parameterVersion = effKeyBits;
5294- }
5295- }
5296-
5297- this.iv = ((RC2ParameterSpec)paramSpec).getIV();
5298- }
5299- else
5300- {
5301- throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object");
5302- }
5303- }
5304-
5305- protected void engineInit(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005306- byte[] params)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005307- throws IOException
5308- {
5309- this.iv = Arrays.clone(params);
5310- }
5311-
5312- protected void engineInit(
5313- byte[] params,
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005314- String format)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005315- throws IOException
5316- {
5317- if (this.isASN1FormatString(format))
5318- {
5319- RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Primitive.fromByteArray(params));
5320-
5321- if (p.getRC2ParameterVersion() != null)
5322- {
5323- parameterVersion = p.getRC2ParameterVersion().intValue();
5324- }
5325-
5326- iv = p.getIV();
5327-
5328- return;
5329- }
5330-
5331- if (format.equals("RAW"))
5332- {
5333- engineInit(params);
5334- return;
5335- }
5336-
5337- throw new IOException("Unknown parameters format in IV parameters object");
5338- }
5339-
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005340- protected String engineToString()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005341- {
5342- return "RC2 Parameters";
5343- }
5344- }
5345+ // BEGIN android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005346+ // public static class AlgParamGen
5347+ // extends BaseAlgorithmParameterGenerator
5348+ // {
5349+ // RC2ParameterSpec spec = null;
5350+ //
5351+ // protected void engineInit(
5352+ // AlgorithmParameterSpec genParamSpec,
5353+ // SecureRandom random)
5354+ // throws InvalidAlgorithmParameterException
5355+ // {
5356+ // if (genParamSpec instanceof RC2ParameterSpec)
5357+ // {
5358+ // spec = (RC2ParameterSpec)genParamSpec;
5359+ // return;
5360+ // }
5361+ //
5362+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation.");
5363+ // }
5364+ //
5365+ // protected AlgorithmParameters engineGenerateParameters()
5366+ // {
5367+ // AlgorithmParameters params;
5368+ //
5369+ // if (spec == null)
5370+ // {
5371+ // byte[] iv = new byte[8];
5372+ //
5373+ // if (random == null)
5374+ // {
5375+ // random = new SecureRandom();
5376+ // }
5377+ //
5378+ // random.nextBytes(iv);
5379+ //
5380+ // try
5381+ // {
5382+ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
5383+ // params.init(new IvParameterSpec(iv));
5384+ // }
5385+ // catch (Exception e)
5386+ // {
5387+ // throw new RuntimeException(e.getMessage());
5388+ // }
5389+ // }
5390+ // else
5391+ // {
5392+ // try
5393+ // {
5394+ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
5395+ // params.init(spec);
5396+ // }
5397+ // catch (Exception e)
5398+ // {
5399+ // throw new RuntimeException(e.getMessage());
5400+ // }
5401+ // }
5402+ //
5403+ // return params;
5404+ // }
5405+ // }
5406+ //
5407+ // public static class KeyGenerator
5408+ // extends BaseKeyGenerator
5409+ // {
5410+ // public KeyGenerator()
5411+ // {
5412+ // super("RC2", 128, new CipherKeyGenerator());
5413+ // }
5414+ // }
5415+ //
5416+ // public static class AlgParams
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005417+ // extends BaseAlgorithmParameters
5418+ // {
5419+ // private static final short[] table = {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005420+ // 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
5421+ // 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
5422+ // 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
5423+ // 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
5424+ // 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
5425+ // 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
5426+ // 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
5427+ // 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
5428+ // 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
5429+ // 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
5430+ // 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
5431+ // 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
5432+ // 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
5433+ // 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
5434+ // 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
5435+ // 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005436+ // };
5437+ //
5438+ // private static final short[] ekb = {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005439+ // 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
5440+ // 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
5441+ // 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
5442+ // 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
5443+ // 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
5444+ // 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
5445+ // 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
5446+ // 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
5447+ // 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
5448+ // 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
5449+ // 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
5450+ // 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
5451+ // 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
5452+ // 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
5453+ // 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
5454+ // 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005455+ // };
5456+ //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005457+ // private byte[] iv;
5458+ // private int parameterVersion = 58;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005459+ //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005460+ // protected byte[] engineGetEncoded()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005461+ // {
5462+ // return Arrays.clone(iv);
5463+ // }
5464+ //
5465+ // protected byte[] engineGetEncoded(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005466+ // String format)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005467+ // throws IOException
5468+ // {
5469+ // if (this.isASN1FormatString(format))
5470+ // {
5471+ // if (parameterVersion == -1)
5472+ // {
5473+ // return new RC2CBCParameter(engineGetEncoded()).getEncoded();
5474+ // }
5475+ // else
5476+ // {
5477+ // return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded();
5478+ // }
5479+ // }
5480+ //
5481+ // if (format.equals("RAW"))
5482+ // {
5483+ // return engineGetEncoded();
5484+ // }
5485+ //
5486+ // return null;
5487+ // }
5488+ //
5489+ // protected AlgorithmParameterSpec localEngineGetParameterSpec(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005490+ // Class paramSpec)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005491+ // throws InvalidParameterSpecException
5492+ // {
5493+ // if (paramSpec == RC2ParameterSpec.class)
5494+ // {
5495+ // if (parameterVersion != -1)
5496+ // {
5497+ // if (parameterVersion < 256)
5498+ // {
5499+ // return new RC2ParameterSpec(ekb[parameterVersion], iv);
5500+ // }
5501+ // else
5502+ // {
5503+ // return new RC2ParameterSpec(parameterVersion, iv);
5504+ // }
5505+ // }
5506+ // }
5507+ //
5508+ // if (paramSpec == IvParameterSpec.class)
5509+ // {
5510+ // return new IvParameterSpec(iv);
5511+ // }
5512+ //
5513+ // throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object.");
5514+ // }
5515+ //
5516+ // protected void engineInit(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005517+ // AlgorithmParameterSpec paramSpec)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005518+ // throws InvalidParameterSpecException
5519+ // {
5520+ // if (paramSpec instanceof IvParameterSpec)
5521+ // {
5522+ // this.iv = ((IvParameterSpec)paramSpec).getIV();
5523+ // }
5524+ // else if (paramSpec instanceof RC2ParameterSpec)
5525+ // {
5526+ // int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits();
5527+ // if (effKeyBits != -1)
5528+ // {
5529+ // if (effKeyBits < 256)
5530+ // {
5531+ // parameterVersion = table[effKeyBits];
5532+ // }
5533+ // else
5534+ // {
5535+ // parameterVersion = effKeyBits;
5536+ // }
5537+ // }
5538+ //
5539+ // this.iv = ((RC2ParameterSpec)paramSpec).getIV();
5540+ // }
5541+ // else
5542+ // {
5543+ // throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object");
5544+ // }
5545+ // }
5546+ //
5547+ // protected void engineInit(
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005548+ // byte[] params)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005549+ // throws IOException
5550+ // {
5551+ // this.iv = Arrays.clone(params);
5552+ // }
5553+ //
5554+ // protected void engineInit(
5555+ // byte[] params,
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005556+ // String format)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005557+ // throws IOException
5558+ // {
5559+ // if (this.isASN1FormatString(format))
5560+ // {
5561+ // RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Primitive.fromByteArray(params));
5562+ //
5563+ // if (p.getRC2ParameterVersion() != null)
5564+ // {
5565+ // parameterVersion = p.getRC2ParameterVersion().intValue();
5566+ // }
5567+ //
5568+ // iv = p.getIV();
5569+ //
5570+ // return;
5571+ // }
5572+ //
5573+ // if (format.equals("RAW"))
5574+ // {
5575+ // engineInit(params);
5576+ // return;
5577+ // }
5578+ //
5579+ // throw new IOException("Unknown parameters format in IV parameters object");
5580+ // }
5581+ //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005582+ // protected String engineToString()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005583+ // {
5584+ // return "RC2 Parameters";
5585+ // }
5586+ // }
5587+ // END android-removed
5588
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005589 public static class Mappings
5590 extends AlgorithmProvider
5591@@ -453,32 +469,36 @@
5592 public void configure(ConfigurableProvider provider)
5593 {
5594
5595- provider.addAlgorithm("AlgorithmParameterGenerator.RC2", PREFIX + "$AlgParamGen");
5596- provider.addAlgorithm("AlgorithmParameterGenerator.1.2.840.113549.3.2", PREFIX + "$AlgParamGen");
5597-
5598- provider.addAlgorithm("KeyGenerator.RC2", PREFIX + "$KeyGenerator");
5599- provider.addAlgorithm("KeyGenerator.1.2.840.113549.3.2", PREFIX + "$KeyGenerator");
5600-
5601- provider.addAlgorithm("AlgorithmParameters.RC2", PREFIX + "$AlgParams");
5602- provider.addAlgorithm("AlgorithmParameters.1.2.840.113549.3.2", PREFIX + "$AlgParams");
5603-
5604- provider.addAlgorithm("Cipher.RC2", PREFIX + "$ECB");
5605- provider.addAlgorithm("Cipher.RC2WRAP", PREFIX + "$Wrap");
5606- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMSRC2wrap, "RC2WRAP");
5607- provider.addAlgorithm("Cipher.1.2.840.113549.3.2", PREFIX + "$CBC");
5608-
5609- provider.addAlgorithm("Mac.RC2MAC", PREFIX + "$CBCMAC");
5610- provider.addAlgorithm("Alg.Alias.Mac.RC2", "RC2MAC");
5611- provider.addAlgorithm("Mac.RC2MAC/CFB8", PREFIX + "$CFB8MAC");
5612- provider.addAlgorithm("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8");
5613-
5614- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
5615+ // BEGIN android-removed
5616+ // provider.addAlgorithm("AlgorithmParameterGenerator.RC2", PREFIX + "$AlgParamGen");
5617+ // provider.addAlgorithm("AlgorithmParameterGenerator.1.2.840.113549.3.2", PREFIX + "$AlgParamGen");
5618+ //
5619+ // provider.addAlgorithm("KeyGenerator.RC2", PREFIX + "$KeyGenerator");
5620+ // provider.addAlgorithm("KeyGenerator.1.2.840.113549.3.2", PREFIX + "$KeyGenerator");
5621+ //
5622+ // provider.addAlgorithm("AlgorithmParameters.RC2", PREFIX + "$AlgParams");
5623+ // provider.addAlgorithm("AlgorithmParameters.1.2.840.113549.3.2", PREFIX + "$AlgParams");
5624+ //
5625+ // provider.addAlgorithm("Cipher.RC2", PREFIX + "$ECB");
5626+ // provider.addAlgorithm("Cipher.RC2WRAP", PREFIX + "$Wrap");
5627+ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMSRC2wrap, "RC2WRAP");
5628+ // provider.addAlgorithm("Cipher.1.2.840.113549.3.2", PREFIX + "$CBC");
5629+ //
5630+ // provider.addAlgorithm("Mac.RC2MAC", PREFIX + "$CBCMAC");
5631+ // provider.addAlgorithm("Alg.Alias.Mac.RC2", "RC2MAC");
5632+ // provider.addAlgorithm("Mac.RC2MAC/CFB8", PREFIX + "$CFB8MAC");
5633+ // provider.addAlgorithm("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8");
5634+ //
5635+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
5636+ // END android-removed
5637
5638 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDRC2-CBC", "PBEWITHMD5ANDRC2");
5639
5640 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDRC2-CBC", "PBEWITHSHA1ANDRC2");
5641
5642- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
5643+ // BEGIN android-removed
5644+ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
5645+ // END android-removed
5646
5647 provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
5648
5649@@ -486,14 +506,18 @@
5650 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.5", "PBEWITHSHAAND128BITRC2-CBC");
5651 provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.6", "PBEWITHSHAAND40BITRC2-CBC");
5652
5653- provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDRC2", PREFIX + "$PBEWithMD2KeyFactory");
5654+ // BEGIN android-removed
5655+ // provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDRC2", PREFIX + "$PBEWithMD2KeyFactory");
5656+ // END android-removed
5657 provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDRC2", PREFIX + "$PBEWithMD5KeyFactory");
5658 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDRC2", PREFIX + "$PBEWithSHA1KeyFactory");
5659
5660 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITRC2-CBC", PREFIX + "$PBEWithSHAAnd128BitKeyFactory");
5661 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND40BITRC2-CBC", PREFIX + "$PBEWithSHAAnd40BitKeyFactory");
5662
5663- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
5664+ // BEGIN android-removed
5665+ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
5666+ // END android-removed
5667
5668 provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
5669
Kenny Root5db505e2013-12-11 16:35:05 -08005670diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java
5671--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java 2013-12-03 20:18:20.000000000 +0000
5672+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java 2013-12-12 00:35:05.000000000 +0000
5673@@ -6,29 +6,31 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005674 abstract class SymmetricAlgorithmProvider
5675 extends AlgorithmProvider
5676 {
5677- protected void addGMacAlgorithm(
5678- ConfigurableProvider provider,
5679- String algorithm,
5680- String algorithmClassName,
5681- String keyGeneratorClassName)
5682- {
5683- provider.addAlgorithm("Mac." + algorithm + "-GMAC", algorithmClassName);
5684- provider.addAlgorithm("Alg.Alias.Mac." + algorithm + "GMAC", algorithm + "-GMAC");
5685-
5686- provider.addAlgorithm("KeyGenerator." + algorithm + "-GMAC", keyGeneratorClassName);
5687- provider.addAlgorithm("Alg.Alias.KeyGenerator." + algorithm + "GMAC", algorithm + "-GMAC");
5688- }
Kenny Root5db505e2013-12-11 16:35:05 -08005689-
5690- protected void addPoly1305Algorithm(ConfigurableProvider provider,
5691- String algorithm,
5692- String algorithmClassName,
5693- String keyGeneratorClassName)
5694- {
5695- provider.addAlgorithm("Mac.POLY1305-" + algorithm, algorithmClassName);
5696- provider.addAlgorithm("Alg.Alias.Mac.POLY1305" + algorithm, "POLY1305-" + algorithm);
5697-
5698- provider.addAlgorithm("KeyGenerator.POLY1305-" + algorithm, keyGeneratorClassName);
5699- provider.addAlgorithm("Alg.Alias.KeyGenerator.POLY1305" + algorithm, "POLY1305-" + algorithm);
5700- }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005701+ // BEGIN android-removed
5702+ // protected void addGMacAlgorithm(
5703+ // ConfigurableProvider provider,
5704+ // String algorithm,
5705+ // String algorithmClassName,
5706+ // String keyGeneratorClassName)
5707+ // {
5708+ // provider.addAlgorithm("Mac." + algorithm + "-GMAC", algorithmClassName);
5709+ // provider.addAlgorithm("Alg.Alias.Mac." + algorithm + "GMAC", algorithm + "-GMAC");
5710+ //
5711+ // provider.addAlgorithm("KeyGenerator." + algorithm + "-GMAC", keyGeneratorClassName);
5712+ // provider.addAlgorithm("Alg.Alias.KeyGenerator." + algorithm + "GMAC", algorithm + "-GMAC");
5713+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08005714+ //
5715+ // protected void addPoly1305Algorithm(ConfigurableProvider provider,
5716+ // String algorithm,
5717+ // String algorithmClassName,
5718+ // String keyGeneratorClassName)
5719+ // {
5720+ // provider.addAlgorithm("Mac.POLY1305-" + algorithm, algorithmClassName);
5721+ // provider.addAlgorithm("Alg.Alias.Mac.POLY1305" + algorithm, "POLY1305-" + algorithm);
5722+ //
5723+ // provider.addAlgorithm("KeyGenerator.POLY1305-" + algorithm, keyGeneratorClassName);
5724+ // provider.addAlgorithm("Alg.Alias.KeyGenerator.POLY1305" + algorithm, "POLY1305-" + algorithm);
5725+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005726+ // END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08005727
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005728 }
Kenny Root5db505e2013-12-11 16:35:05 -08005729diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Twofish.java
5730--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java 2013-12-03 20:18:20.000000000 +0000
5731+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Twofish.java 2013-12-12 00:35:05.000000000 +0000
5732@@ -1,18 +1,26 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005733 package org.bouncycastle.jcajce.provider.symmetric;
5734
5735-import org.bouncycastle.crypto.BlockCipher;
5736-import org.bouncycastle.crypto.CipherKeyGenerator;
5737+// BEGIN android-removed
5738+// import org.bouncycastle.crypto.BlockCipher;
5739+// import org.bouncycastle.crypto.CipherKeyGenerator;
5740+// END android-removed
5741 import org.bouncycastle.crypto.engines.TwofishEngine;
Kenny Root5db505e2013-12-11 16:35:05 -08005742-import org.bouncycastle.crypto.generators.Poly1305KeyGenerator;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005743-import org.bouncycastle.crypto.macs.GMac;
5744+// BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08005745+// import org.bouncycastle.crypto.generators.Poly1305KeyGenerator;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005746+// import org.bouncycastle.crypto.macs.GMac;
5747+// END android-removed
5748 import org.bouncycastle.crypto.modes.CBCBlockCipher;
5749-import org.bouncycastle.crypto.modes.GCMBlockCipher;
5750+// BEGIN android-removed
5751+// import org.bouncycastle.crypto.modes.GCMBlockCipher;
5752+// END android-removed
5753 import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
5754 import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
5755-import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
5756-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
5757-import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
5758-import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
5759+// BEGIN android-removed
5760+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
5761+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
5762+// import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
5763+// import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
5764+// END android-removed
5765 import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
5766
5767 public final class Twofish
Kenny Root5db505e2013-12-11 16:35:05 -08005768@@ -21,56 +29,58 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005769 {
5770 }
5771
5772- public static class ECB
5773- extends BaseBlockCipher
5774- {
5775- public ECB()
5776- {
5777- super(new BlockCipherProvider()
5778- {
5779- public BlockCipher get()
5780- {
5781- return new TwofishEngine();
5782- }
5783- });
5784- }
5785- }
5786-
5787- public static class KeyGen
5788- extends BaseKeyGenerator
5789- {
5790- public KeyGen()
5791- {
5792- super("Twofish", 256, new CipherKeyGenerator());
5793- }
5794- }
5795-
5796- public static class GMAC
5797- extends BaseMac
5798- {
5799- public GMAC()
5800- {
5801- super(new GMac(new GCMBlockCipher(new TwofishEngine())));
5802- }
5803- }
Kenny Root5db505e2013-12-11 16:35:05 -08005804-
5805- public static class Poly1305
5806- extends BaseMac
5807- {
5808- public Poly1305()
5809- {
5810- super(new org.bouncycastle.crypto.macs.Poly1305(new TwofishEngine()));
5811- }
5812- }
5813-
5814- public static class Poly1305KeyGen
5815- extends BaseKeyGenerator
5816- {
5817- public Poly1305KeyGen()
5818- {
5819- super("Poly1305-Twofish", 256, new Poly1305KeyGenerator());
5820- }
5821- }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005822+ // BEGIN android-removed
5823+ // public static class ECB
5824+ // extends BaseBlockCipher
5825+ // {
5826+ // public ECB()
5827+ // {
5828+ // super(new BlockCipherProvider()
5829+ // {
5830+ // public BlockCipher get()
5831+ // {
5832+ // return new TwofishEngine();
5833+ // }
5834+ // });
5835+ // }
5836+ // }
5837+ //
5838+ // public static class KeyGen
5839+ // extends BaseKeyGenerator
5840+ // {
5841+ // public KeyGen()
5842+ // {
5843+ // super("Twofish", 256, new CipherKeyGenerator());
5844+ // }
5845+ // }
5846+ //
5847+ // public static class GMAC
5848+ // extends BaseMac
5849+ // {
5850+ // public GMAC()
5851+ // {
5852+ // super(new GMac(new GCMBlockCipher(new TwofishEngine())));
5853+ // }
5854+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08005855+ //
5856+ // public static class Poly1305
5857+ // extends BaseMac
5858+ // {
5859+ // public Poly1305()
5860+ // {
5861+ // super(new org.bouncycastle.crypto.macs.Poly1305(new TwofishEngine()));
5862+ // }
5863+ // }
5864+ //
5865+ // public static class Poly1305KeyGen
5866+ // extends BaseKeyGenerator
5867+ // {
5868+ // public Poly1305KeyGen()
5869+ // {
5870+ // super("Poly1305-Twofish", 256, new Poly1305KeyGenerator());
5871+ // }
5872+ // }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005873+ // END android-removed
5874
5875 /**
5876 * PBEWithSHAAndTwofish-CBC
Kenny Root5db505e2013-12-11 16:35:05 -08005877@@ -96,14 +106,16 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005878 }
5879 }
5880
5881- public static class AlgParams
5882- extends IvAlgorithmParameters
5883- {
5884- protected String engineToString()
5885- {
5886- return "Twofish IV";
5887- }
5888- }
5889+ // BEGIN android-removed
5890+ // public static class AlgParams
5891+ // extends IvAlgorithmParameters
5892+ // {
5893+ // protected String engineToString()
5894+ // {
5895+ // return "Twofish IV";
5896+ // }
5897+ // }
5898+ // END android-removed
5899
5900 public static class Mappings
5901 extends SymmetricAlgorithmProvider
Kenny Root5db505e2013-12-11 16:35:05 -08005902@@ -116,17 +128,21 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005903
5904 public void configure(ConfigurableProvider provider)
5905 {
5906- provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB");
5907- provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen");
5908- provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams");
5909+ // BEGIN android-removed
5910+ // provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB");
5911+ // provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen");
5912+ // provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams");
5913+ // END android-removed
5914
5915 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE");
5916 provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE");
5917 provider.addAlgorithm("Cipher.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHA");
5918 provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHAKeyFactory");
5919
5920- addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen");
Kenny Root5db505e2013-12-11 16:35:05 -08005921- addPoly1305Algorithm(provider, "Twofish", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005922+ // BEGIN android-removed
5923+ // addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen");
Kenny Root5db505e2013-12-11 16:35:05 -08005924+ // addPoly1305Algorithm(provider, "Twofish", PREFIX + "$Poly1305", PREFIX + "$Poly1305KeyGen");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005925+ // END android-removed
5926 }
5927 }
5928 }
Kenny Root5db505e2013-12-11 16:35:05 -08005929diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
5930--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-12-03 20:18:20.000000000 +0000
Kenny Rootb6f08642013-12-13 15:56:53 -08005931+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-12-13 23:56:53.000000000 +0000
Kenny Root5db505e2013-12-11 16:35:05 -08005932@@ -19,8 +19,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005933 import javax.crypto.ShortBufferException;
5934 import javax.crypto.spec.IvParameterSpec;
5935 import javax.crypto.spec.PBEParameterSpec;
5936-import javax.crypto.spec.RC2ParameterSpec;
5937-import javax.crypto.spec.RC5ParameterSpec;
5938+// BEGIN android-removed
5939+// import javax.crypto.spec.RC2ParameterSpec;
5940+// import javax.crypto.spec.RC5ParameterSpec;
5941+// END android-removed
5942
Kenny Root5db505e2013-12-11 16:35:05 -08005943 import org.bouncycastle.asn1.cms.GCMParameters;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005944 import org.bouncycastle.crypto.BlockCipher;
Kenny Root5db505e2013-12-11 16:35:05 -08005945@@ -34,14 +36,20 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005946 import org.bouncycastle.crypto.modes.CCMBlockCipher;
5947 import org.bouncycastle.crypto.modes.CFBBlockCipher;
5948 import org.bouncycastle.crypto.modes.CTSBlockCipher;
5949-import org.bouncycastle.crypto.modes.EAXBlockCipher;
Kenny Root5db505e2013-12-11 16:35:05 -08005950-import org.bouncycastle.crypto.modes.GCFBBlockCipher;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005951+// BEGIN android-removed
5952+// import org.bouncycastle.crypto.modes.EAXBlockCipher;
Kenny Root5db505e2013-12-11 16:35:05 -08005953+// import org.bouncycastle.crypto.modes.GCFBBlockCipher;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005954+// END android-removed
5955 import org.bouncycastle.crypto.modes.GCMBlockCipher;
5956-import org.bouncycastle.crypto.modes.GOFBBlockCipher;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005957-import org.bouncycastle.crypto.modes.OCBBlockCipher;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005958+// BEGIN android-removed
5959+// import org.bouncycastle.crypto.modes.GOFBBlockCipher;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07005960+// import org.bouncycastle.crypto.modes.OCBBlockCipher;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005961+// END android-removed
5962 import org.bouncycastle.crypto.modes.OFBBlockCipher;
5963-import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;
5964-import org.bouncycastle.crypto.modes.PGPCFBBlockCipher;
5965+// BEGIN android-removed
5966+// import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;
5967+// import org.bouncycastle.crypto.modes.PGPCFBBlockCipher;
5968+// END android-removed
5969 import org.bouncycastle.crypto.modes.SICBlockCipher;
5970 import org.bouncycastle.crypto.paddings.BlockCipherPadding;
5971 import org.bouncycastle.crypto.paddings.ISO10126d2Padding;
Kenny Root5db505e2013-12-11 16:35:05 -08005972@@ -54,11 +62,15 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005973 import org.bouncycastle.crypto.params.KeyParameter;
5974 import org.bouncycastle.crypto.params.ParametersWithIV;
5975 import org.bouncycastle.crypto.params.ParametersWithRandom;
5976-import org.bouncycastle.crypto.params.ParametersWithSBox;
5977+// BEGIN android-removed
5978+// import org.bouncycastle.crypto.params.ParametersWithSBox;
5979+// END android-removed
5980 import org.bouncycastle.crypto.params.RC2Parameters;
5981-import org.bouncycastle.crypto.params.RC5Parameters;
Kenny Root5db505e2013-12-11 16:35:05 -08005982-import org.bouncycastle.jcajce.spec.GOST28147ParameterSpec;
5983-import org.bouncycastle.jcajce.spec.RepeatedSecretKeySpec;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005984+// BEGIN android-removed
5985+// import org.bouncycastle.crypto.params.RC5Parameters;
Kenny Root5db505e2013-12-11 16:35:05 -08005986+// import org.bouncycastle.jcajce.spec.GOST28147ParameterSpec;
5987+// import org.bouncycastle.jcajce.spec.RepeatedSecretKeySpec;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005988+// END android-removed
5989 import org.bouncycastle.jce.provider.BouncyCastleProvider;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005990 import org.bouncycastle.util.Strings;
5991
Kenny Root5db505e2013-12-11 16:35:05 -08005992@@ -73,11 +85,15 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07005993 //
5994 private Class[] availableSpecs =
5995 {
5996- RC2ParameterSpec.class,
5997- RC5ParameterSpec.class,
5998+ // BEGIN android-removed
5999+ // RC2ParameterSpec.class,
6000+ // RC5ParameterSpec.class,
6001+ // END android-removed
6002 IvParameterSpec.class,
6003 PBEParameterSpec.class,
Kenny Root5db505e2013-12-11 16:35:05 -08006004- GOST28147ParameterSpec.class,
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006005+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006006+ // GOST28147ParameterSpec.class,
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006007+ // END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006008 gcmSpecClass
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006009 };
6010
Kenny Rootb6f08642013-12-13 15:56:53 -08006011@@ -162,6 +178,11 @@
6012
6013 protected byte[] engineGetIV()
6014 {
6015+ // BEGIN android-added
6016+ if (aeadParams != null) {
6017+ return aeadParams.getNonce();
6018+ }
6019+ // END android-added
6020 return (ivParam != null) ? ivParam.getIV() : null;
6021 }
6022
6023@@ -278,48 +299,52 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006024 new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));
6025 }
6026 }
6027- else if (modeName.startsWith("PGP"))
6028- {
6029- boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV");
6030-
6031- ivLength = baseEngine.getBlockSize();
6032- cipher = new BufferedGenericBlockCipher(
6033- new PGPCFBBlockCipher(baseEngine, inlineIV));
6034- }
6035- else if (modeName.equalsIgnoreCase("OpenPGPCFB"))
6036- {
6037- ivLength = 0;
6038- cipher = new BufferedGenericBlockCipher(
6039- new OpenPGPCFBBlockCipher(baseEngine));
6040- }
Kenny Root5db505e2013-12-11 16:35:05 -08006041- else if (modeName.startsWith("SIC"))
6042- {
6043- ivLength = baseEngine.getBlockSize();
6044- if (ivLength < 16)
6045- {
6046- throw new IllegalArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)");
6047- }
6048- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6049- new SICBlockCipher(baseEngine)));
6050- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006051+ // BEGIN android-removed
6052+ // else if (modeName.startsWith("PGP"))
6053+ // {
6054+ // boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV");
Kenny Root5db505e2013-12-11 16:35:05 -08006055+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006056+ // ivLength = baseEngine.getBlockSize();
6057+ // cipher = new BufferedGenericBlockCipher(
6058+ // new PGPCFBBlockCipher(baseEngine, inlineIV));
6059+ // }
6060+ // else if (modeName.equalsIgnoreCase("OpenPGPCFB"))
6061+ // {
6062+ // ivLength = 0;
6063+ // cipher = new BufferedGenericBlockCipher(
6064+ // new OpenPGPCFBBlockCipher(baseEngine));
6065+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08006066+ // else if (modeName.startsWith("SIC"))
6067+ // {
6068+ // ivLength = baseEngine.getBlockSize();
6069+ // if (ivLength < 16)
6070+ // {
6071+ // throw new IllegalArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)");
6072+ // }
6073+ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6074+ // new SICBlockCipher(baseEngine)));
6075+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006076+ // END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006077 else if (modeName.startsWith("CTR"))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006078 {
6079 ivLength = baseEngine.getBlockSize();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006080 cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6081 new SICBlockCipher(baseEngine)));
6082 }
6083- else if (modeName.startsWith("GOFB"))
6084- {
6085- ivLength = baseEngine.getBlockSize();
6086- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6087- new GOFBBlockCipher(baseEngine)));
6088- }
Kenny Root5db505e2013-12-11 16:35:05 -08006089- else if (modeName.startsWith("GCFB"))
6090- {
6091- ivLength = baseEngine.getBlockSize();
6092- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6093- new GCFBBlockCipher(baseEngine)));
6094- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006095+ // BEGIN android-removed
6096+ // else if (modeName.startsWith("GOFB"))
6097+ // {
6098+ // ivLength = baseEngine.getBlockSize();
6099+ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6100+ // new GOFBBlockCipher(baseEngine)));
6101+ // }
Kenny Root5db505e2013-12-11 16:35:05 -08006102+ // else if (modeName.startsWith("GCFB"))
6103+ // {
6104+ // ivLength = baseEngine.getBlockSize();
6105+ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
6106+ // new GCFBBlockCipher(baseEngine)));
6107+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006108+ // END android-removed
6109 else if (modeName.startsWith("CTS"))
6110 {
6111 ivLength = baseEngine.getBlockSize();
Kenny Rootb6f08642013-12-13 15:56:53 -08006112@@ -330,24 +355,26 @@
Kenny Root5db505e2013-12-11 16:35:05 -08006113 ivLength = 13; // CCM nonce 7..13 bytes
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006114 cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine));
6115 }
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006116- else if (modeName.startsWith("OCB"))
6117- {
6118- if (engineProvider != null)
6119- {
Kenny Root5db505e2013-12-11 16:35:05 -08006120- // Nonce restricted to max 120 bits over 128 bit block cipher since draft-irtf-cfrg-ocb-03
6121- ivLength = 15;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006122- cipher = new AEADGenericBlockCipher(new OCBBlockCipher(baseEngine, engineProvider.get()));
6123- }
6124- else
6125- {
6126- throw new NoSuchAlgorithmException("can't support mode " + mode);
6127- }
6128- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006129- else if (modeName.startsWith("EAX"))
6130- {
6131- ivLength = baseEngine.getBlockSize();
6132- cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine));
6133- }
6134+ // BEGIN android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006135+ // else if (modeName.startsWith("OCB"))
6136+ // {
6137+ // if (engineProvider != null)
6138+ // {
Kenny Root5db505e2013-12-11 16:35:05 -08006139+ // // Nonce restricted to max 120 bits over 128 bit block cipher since draft-irtf-cfrg-ocb-03
6140+ // ivLength = 15;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006141+ // cipher = new AEADGenericBlockCipher(new OCBBlockCipher(baseEngine, engineProvider.get()));
6142+ // }
6143+ // else
6144+ // {
6145+ // throw new NoSuchAlgorithmException("can't support mode " + mode);
6146+ // }
6147+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006148+ // else if (modeName.startsWith("EAX"))
6149+ // {
6150+ // ivLength = baseEngine.getBlockSize();
6151+ // cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine));
6152+ // }
6153+ // END android-removed
6154 else if (modeName.startsWith("GCM"))
6155 {
6156 ivLength = baseEngine.getBlockSize();
Kenny Rootb6f08642013-12-13 15:56:53 -08006157@@ -470,18 +497,20 @@
Kenny Root5db505e2013-12-11 16:35:05 -08006158
6159 param = new ParametersWithIV(param, iv.getIV());
6160 }
6161- else if (params instanceof GOST28147ParameterSpec)
6162- {
6163- // need to pick up IV and SBox.
6164- GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
6165-
6166- param = new ParametersWithSBox(param, gost28147Param.getSbox());
6167-
6168- if (gost28147Param.getIV() != null && ivLength != 0)
6169- {
6170- param = new ParametersWithIV(param, gost28147Param.getIV());
6171- }
6172- }
6173+ // BEGIN android-removed
6174+ // else if (params instanceof GOST28147ParameterSpec)
6175+ // {
6176+ // // need to pick up IV and SBox.
6177+ // GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
6178+ //
6179+ // param = new ParametersWithSBox(param, gost28147Param.getSbox());
6180+ //
6181+ // if (gost28147Param.getIV() != null && ivLength != 0)
6182+ // {
6183+ // param = new ParametersWithIV(param, gost28147Param.getIV());
6184+ // }
6185+ // }
6186+ // END android-removed
6187 }
6188 else if (params instanceof PBEParameterSpec)
6189 {
Kenny Rootb6f08642013-12-13 15:56:53 -08006190@@ -513,12 +542,14 @@
Kenny Root5db505e2013-12-11 16:35:05 -08006191 throw new InvalidAlgorithmParameterException("IV must be " + ivLength + " bytes long.");
6192 }
6193
6194- if (key instanceof RepeatedSecretKeySpec)
6195- {
6196- param = new ParametersWithIV(null, p.getIV());
6197- ivParam = (ParametersWithIV)param;
6198- }
6199- else
6200+ // BEGIN android-removed
6201+ // if (key instanceof RepeatedSecretKeySpec)
6202+ // {
6203+ // param = new ParametersWithIV(null, p.getIV());
6204+ // ivParam = (ParametersWithIV)param;
6205+ // }
6206+ // else
6207+ // END android-removed
6208 {
6209 param = new ParametersWithIV(new KeyParameter(key.getEncoded()), p.getIV());
6210 ivParam = (ParametersWithIV)param;
Kenny Rootb6f08642013-12-13 15:56:53 -08006211@@ -534,63 +565,65 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006212 param = new KeyParameter(key.getEncoded());
6213 }
6214 }
6215- else if (params instanceof GOST28147ParameterSpec)
6216- {
6217- GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
6218-
6219- param = new ParametersWithSBox(
6220- new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox());
6221-
6222- if (gost28147Param.getIV() != null && ivLength != 0)
6223- {
6224- param = new ParametersWithIV(param, gost28147Param.getIV());
6225- ivParam = (ParametersWithIV)param;
6226- }
6227- }
6228- else if (params instanceof RC2ParameterSpec)
6229- {
6230- RC2ParameterSpec rc2Param = (RC2ParameterSpec)params;
6231-
6232- param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits());
6233-
6234- if (rc2Param.getIV() != null && ivLength != 0)
6235- {
6236- param = new ParametersWithIV(param, rc2Param.getIV());
6237- ivParam = (ParametersWithIV)param;
6238- }
6239- }
6240- else if (params instanceof RC5ParameterSpec)
6241- {
6242- RC5ParameterSpec rc5Param = (RC5ParameterSpec)params;
6243-
6244- param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds());
6245- if (baseEngine.getAlgorithmName().startsWith("RC5"))
6246- {
6247- if (baseEngine.getAlgorithmName().equals("RC5-32"))
6248- {
6249- if (rc5Param.getWordSize() != 32)
6250- {
6251- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + ".");
6252- }
6253- }
6254- else if (baseEngine.getAlgorithmName().equals("RC5-64"))
6255- {
6256- if (rc5Param.getWordSize() != 64)
6257- {
6258- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + ".");
6259- }
6260- }
6261- }
6262- else
6263- {
6264- throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5.");
6265- }
6266- if ((rc5Param.getIV() != null) && (ivLength != 0))
6267- {
6268- param = new ParametersWithIV(param, rc5Param.getIV());
6269- ivParam = (ParametersWithIV)param;
6270- }
6271- }
6272+ // BEGIN android-removed
6273+ // else if (params instanceof GOST28147ParameterSpec)
6274+ // {
6275+ // GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
6276+ //
6277+ // param = new ParametersWithSBox(
6278+ // new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox());
6279+ //
6280+ // if (gost28147Param.getIV() != null && ivLength != 0)
6281+ // {
6282+ // param = new ParametersWithIV(param, gost28147Param.getIV());
6283+ // ivParam = (ParametersWithIV)param;
6284+ // }
6285+ // }
6286+ // else if (params instanceof RC2ParameterSpec)
6287+ // {
6288+ // RC2ParameterSpec rc2Param = (RC2ParameterSpec)params;
6289+ //
6290+ // param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits());
6291+ //
6292+ // if (rc2Param.getIV() != null && ivLength != 0)
6293+ // {
6294+ // param = new ParametersWithIV(param, rc2Param.getIV());
6295+ // ivParam = (ParametersWithIV)param;
6296+ // }
6297+ // }
6298+ // else if (params instanceof RC5ParameterSpec)
6299+ // {
6300+ // RC5ParameterSpec rc5Param = (RC5ParameterSpec)params;
6301+ //
6302+ // param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds());
6303+ // if (baseEngine.getAlgorithmName().startsWith("RC5"))
6304+ // {
6305+ // if (baseEngine.getAlgorithmName().equals("RC5-32"))
6306+ // {
6307+ // if (rc5Param.getWordSize() != 32)
6308+ // {
6309+ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + ".");
6310+ // }
6311+ // }
6312+ // else if (baseEngine.getAlgorithmName().equals("RC5-64"))
6313+ // {
6314+ // if (rc5Param.getWordSize() != 64)
6315+ // {
6316+ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + ".");
6317+ // }
6318+ // }
6319+ // }
6320+ // else
6321+ // {
6322+ // throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5.");
6323+ // }
6324+ // if ((rc5Param.getIV() != null) && (ivLength != 0))
6325+ // {
6326+ // param = new ParametersWithIV(param, rc5Param.getIV());
6327+ // ivParam = (ParametersWithIV)param;
6328+ // }
6329+ // }
6330+ // END android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006331 else if (gcmSpecClass != null && gcmSpecClass.isInstance(params))
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006332 {
Kenny Root5db505e2013-12-11 16:35:05 -08006333 if (!isAEADModeName(modeName) && !(cipher instanceof AEADGenericBlockCipher))
Kenny Rootb6f08642013-12-13 15:56:53 -08006334@@ -603,11 +636,13 @@
Kenny Root5db505e2013-12-11 16:35:05 -08006335 Method tLen = gcmSpecClass.getDeclaredMethod("getTLen", new Class[0]);
6336 Method iv= gcmSpecClass.getDeclaredMethod("getIV", new Class[0]);
6337
6338- if (key instanceof RepeatedSecretKeySpec)
6339- {
6340- param = aeadParams = new AEADParameters(null, ((Integer)tLen.invoke(params, new Object[0])).intValue(), (byte[])iv.invoke(params, new Object[0]));
6341- }
6342- else
6343+ // BEGIN android-removed
6344+ // if (key instanceof RepeatedSecretKeySpec)
6345+ // {
6346+ // param = aeadParams = new AEADParameters(null, ((Integer)tLen.invoke(params, new Object[0])).intValue(), (byte[])iv.invoke(params, new Object[0]));
6347+ // }
6348+ // else
6349+ // END android-removed
6350 {
6351 param = aeadParams = new AEADParameters(new KeyParameter(key.getEncoded()), ((Integer)tLen.invoke(params, new Object[0])).intValue(), (byte[])iv.invoke(params, new Object[0]));
6352 }
Kenny Rootb6f08642013-12-13 15:56:53 -08006353@@ -867,7 +902,9 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006354 private boolean isAEADModeName(
6355 String modeName)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006356 {
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006357- return "CCM".equals(modeName) || "EAX".equals(modeName) || "GCM".equals(modeName) || "OCB".equals(modeName);
6358+ // BEGIN android-changed
6359+ return "CCM".equals(modeName) || "GCM".equals(modeName);
6360+ // END android-changed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006361 }
6362
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006363 /*
Kenny Root5db505e2013-12-11 16:35:05 -08006364diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java
6365--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2013-12-03 20:18:20.000000000 +0000
6366+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2013-12-12 00:35:05.000000000 +0000
6367@@ -16,8 +16,10 @@
6368 import org.bouncycastle.crypto.Mac;
6369 import org.bouncycastle.crypto.params.KeyParameter;
6370 import org.bouncycastle.crypto.params.ParametersWithIV;
6371-import org.bouncycastle.crypto.params.SkeinParameters;
6372-import org.bouncycastle.jcajce.spec.SkeinParameterSpec;
6373+// BEGIN android-removed
6374+// import org.bouncycastle.crypto.params.SkeinParameters;
6375+// import org.bouncycastle.jcajce.spec.SkeinParameterSpec;
6376+// END android-removed
6377
6378 public class BaseMac
6379 extends MacSpi implements PBE
6380@@ -79,10 +81,12 @@
6381 {
6382 param = new ParametersWithIV(new KeyParameter(key.getEncoded()), ((IvParameterSpec)params).getIV());
6383 }
6384- else if (params instanceof SkeinParameterSpec)
6385- {
6386- param = new SkeinParameters.Builder(copyMap(((SkeinParameterSpec)params).getParameters())).setKey(key.getEncoded()).build();
6387- }
6388+ // BEGIN android-removed
6389+ // else if (params instanceof SkeinParameterSpec)
6390+ // {
6391+ // param = new SkeinParameters.Builder(copyMap(((SkeinParameterSpec)params).getParameters())).setKey(key.getEncoded()).build();
6392+ // }
6393+ // END android-removed
6394 else if (params == null)
6395 {
6396 param = new KeyParameter(key.getEncoded());
6397diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java
6398--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2013-12-03 20:18:20.000000000 +0000
6399+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2013-12-12 00:35:05.000000000 +0000
6400@@ -14,8 +14,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006401 import javax.crypto.ShortBufferException;
6402 import javax.crypto.spec.IvParameterSpec;
6403 import javax.crypto.spec.PBEParameterSpec;
6404-import javax.crypto.spec.RC2ParameterSpec;
6405-import javax.crypto.spec.RC5ParameterSpec;
6406+// BEGIN android-removed
6407+// import javax.crypto.spec.RC2ParameterSpec;
6408+// import javax.crypto.spec.RC5ParameterSpec;
6409+// END android-removed
6410
6411 import org.bouncycastle.crypto.BlockCipher;
6412 import org.bouncycastle.crypto.CipherParameters;
Kenny Root5db505e2013-12-11 16:35:05 -08006413@@ -35,8 +37,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006414 //
6415 private Class[] availableSpecs =
6416 {
6417- RC2ParameterSpec.class,
6418- RC5ParameterSpec.class,
6419+ // BEGIN android-removed
6420+ // RC2ParameterSpec.class,
6421+ // RC5ParameterSpec.class,
6422+ // END android-removed
6423 IvParameterSpec.class,
6424 PBEParameterSpec.class
6425 };
Kenny Root5db505e2013-12-11 16:35:05 -08006426diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java
6427--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-12-03 20:18:20.000000000 +0000
6428+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006429@@ -22,8 +22,10 @@
6430 import javax.crypto.ShortBufferException;
6431 import javax.crypto.spec.IvParameterSpec;
6432 import javax.crypto.spec.PBEParameterSpec;
6433-import javax.crypto.spec.RC2ParameterSpec;
6434-import javax.crypto.spec.RC5ParameterSpec;
6435+// BEGIN android-removed
6436+// import javax.crypto.spec.RC2ParameterSpec;
6437+// import javax.crypto.spec.RC5ParameterSpec;
6438+// END android-removed
6439 import javax.crypto.spec.SecretKeySpec;
6440
6441 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
6442@@ -45,8 +47,10 @@
6443 {
6444 IvParameterSpec.class,
6445 PBEParameterSpec.class,
6446- RC2ParameterSpec.class,
6447- RC5ParameterSpec.class
6448+ // BEGIN android-removed
6449+ // RC2ParameterSpec.class,
6450+ // RC5ParameterSpec.class
6451+ // END android-removed
6452 };
6453
6454 protected int pbeType = PKCS12;
Brian Carlstrome1142c12013-01-30 18:26:40 -08006455@@ -258,6 +262,8 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006456 return null;
6457 }
6458
6459+ // BEGIN android-changed
6460+ // added ShortBufferException to throws statement
6461 protected int engineDoFinal(
6462 byte[] input,
6463 int inputOffset,
Brian Carlstrome1142c12013-01-30 18:26:40 -08006464@@ -268,6 +274,7 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006465 {
6466 return 0;
6467 }
6468+ // END android-changed
6469
6470 protected byte[] engineWrap(
6471 Key key)
Kenny Root5db505e2013-12-11 16:35:05 -08006472diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java
6473--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-12-03 20:18:20.000000000 +0000
6474+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -08006475@@ -7,13 +7,18 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006476
6477 import org.bouncycastle.crypto.CipherParameters;
6478 import org.bouncycastle.crypto.PBEParametersGenerator;
Brian Carlstrome1142c12013-01-30 18:26:40 -08006479-import org.bouncycastle.crypto.digests.GOST3411Digest;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006480-import org.bouncycastle.crypto.digests.MD2Digest;
6481-import org.bouncycastle.crypto.digests.MD5Digest;
6482-import org.bouncycastle.crypto.digests.RIPEMD160Digest;
6483-import org.bouncycastle.crypto.digests.SHA1Digest;
6484-import org.bouncycastle.crypto.digests.SHA256Digest;
6485-import org.bouncycastle.crypto.digests.TigerDigest;
6486+// BEGIN android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -08006487+// import org.bouncycastle.crypto.digests.GOST3411Digest;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006488+// import org.bouncycastle.crypto.digests.MD2Digest;
6489+// import org.bouncycastle.crypto.digests.MD5Digest;
6490+// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
6491+// import org.bouncycastle.crypto.digests.SHA1Digest;
6492+// import org.bouncycastle.crypto.digests.SHA256Digest;
6493+// import org.bouncycastle.crypto.digests.TigerDigest;
6494+// END android-removed
6495+// BEGIN android-added
6496+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
6497+// END android-added
6498 import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator;
6499 import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator;
6500 import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator;
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006501@@ -29,11 +34,15 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006502 //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006503 static final int MD5 = 0;
6504 static final int SHA1 = 1;
6505- static final int RIPEMD160 = 2;
6506- static final int TIGER = 3;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006507+ // BEGIN android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006508+ // static final int RIPEMD160 = 2;
6509+ // static final int TIGER = 3;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006510+ // END android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006511 static final int SHA256 = 4;
6512- static final int MD2 = 5;
6513- static final int GOST3411 = 6;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006514+ // BEGIN android-removed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006515+ // static final int MD2 = 5;
6516+ // static final int GOST3411 = 6;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006517+ // END android-removed
6518
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006519 static final int PKCS5S1 = 0;
6520 static final int PKCS5S2 = 1;
6521@@ -57,14 +66,20 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006522 {
6523 switch (hash)
6524 {
6525- case MD2:
6526- generator = new PKCS5S1ParametersGenerator(new MD2Digest());
6527- break;
6528+ // BEGIN android-removed
6529+ // case MD2:
6530+ // generator = new PKCS5S1ParametersGenerator(new MD2Digest());
6531+ // break;
6532+ // END android-removed
6533 case MD5:
6534- generator = new PKCS5S1ParametersGenerator(new MD5Digest());
6535+ // BEGIN android-changed
6536+ generator = new PKCS5S1ParametersGenerator(AndroidDigestFactory.getMD5());
6537+ // END android-changed
6538 break;
6539 case SHA1:
6540- generator = new PKCS5S1ParametersGenerator(new SHA1Digest());
6541+ // BEGIN android-changed
6542+ generator = new PKCS5S1ParametersGenerator(AndroidDigestFactory.getSHA1());
6543+ // END android-changed
6544 break;
6545 default:
6546 throw new IllegalStateException("PKCS5 scheme 1 only supports MD2, MD5 and SHA1.");
Kenny Root5db505e2013-12-11 16:35:05 -08006547@@ -74,27 +89,39 @@
6548 {
6549 switch (hash)
6550 {
6551- case MD2:
6552- generator = new PKCS5S2ParametersGenerator(new MD2Digest());
6553- break;
6554+ // BEGIN android-removed
6555+ // case MD2:
6556+ // generator = new PKCS5S2ParametersGenerator(new MD2Digest());
6557+ // break;
6558+ // END android-removed
6559 case MD5:
6560- generator = new PKCS5S2ParametersGenerator(new MD5Digest());
6561+ // BEGIN android-changed
6562+ generator = new PKCS5S2ParametersGenerator(AndroidDigestFactory.getMD5());
6563+ // END android-changed
6564 break;
6565 case SHA1:
6566- generator = new PKCS5S2ParametersGenerator(new SHA1Digest());
6567- break;
6568- case RIPEMD160:
6569- generator = new PKCS5S2ParametersGenerator(new RIPEMD160Digest());
6570- break;
6571- case TIGER:
6572- generator = new PKCS5S2ParametersGenerator(new TigerDigest());
6573- break;
6574+ // BEGIN android-changed
6575+ generator = new PKCS5S2ParametersGenerator(AndroidDigestFactory.getSHA1());
6576+ // END android-changed
6577+ break;
6578+ // BEGIN android-removed
6579+ // case RIPEMD160:
6580+ // generator = new PKCS5S2ParametersGenerator(new RIPEMD160Digest());
6581+ // break;
6582+ // case TIGER:
6583+ // generator = new PKCS5S2ParametersGenerator(new TigerDigest());
6584+ // break;
6585+ // END android-removed
6586 case SHA256:
6587- generator = new PKCS5S2ParametersGenerator(new SHA256Digest());
6588- break;
6589- case GOST3411:
6590- generator = new PKCS5S2ParametersGenerator(new GOST3411Digest());
6591- break;
6592+ // BEGIN android-changed
6593+ generator = new PKCS5S2ParametersGenerator(AndroidDigestFactory.getSHA256());
6594+ // END android-changed
6595+ break;
6596+ // BEGIN android-removed
6597+ // case GOST3411:
6598+ // generator = new PKCS5S2ParametersGenerator(new GOST3411Digest());
6599+ // break;
6600+ // END android-removed
6601 default:
6602 throw new IllegalStateException("unknown digest scheme for PBE PKCS5S2 encryption.");
6603 }
6604@@ -103,27 +130,39 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006605 {
6606 switch (hash)
6607 {
6608- case MD2:
6609- generator = new PKCS12ParametersGenerator(new MD2Digest());
6610- break;
6611+ // BEGIN android-removed
6612+ // case MD2:
6613+ // generator = new PKCS12ParametersGenerator(new MD2Digest());
6614+ // break;
6615+ // END android-removed
6616 case MD5:
6617- generator = new PKCS12ParametersGenerator(new MD5Digest());
6618+ // BEGIN android-changed
6619+ generator = new PKCS12ParametersGenerator(AndroidDigestFactory.getMD5());
6620+ // END android-changed
6621 break;
6622 case SHA1:
6623- generator = new PKCS12ParametersGenerator(new SHA1Digest());
6624- break;
6625- case RIPEMD160:
6626- generator = new PKCS12ParametersGenerator(new RIPEMD160Digest());
6627- break;
6628- case TIGER:
6629- generator = new PKCS12ParametersGenerator(new TigerDigest());
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006630- break;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006631+ // BEGIN android-changed
6632+ generator = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA1());
6633+ // END android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006634+ break;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006635+ // BEGIN android-removed
6636+ // case RIPEMD160:
6637+ // generator = new PKCS12ParametersGenerator(new RIPEMD160Digest());
6638+ // break;
6639+ // case TIGER:
6640+ // generator = new PKCS12ParametersGenerator(new TigerDigest());
6641+ // break;
6642+ // END android-removed
6643 case SHA256:
6644- generator = new PKCS12ParametersGenerator(new SHA256Digest());
Brian Carlstrome1142c12013-01-30 18:26:40 -08006645- break;
6646- case GOST3411:
6647- generator = new PKCS12ParametersGenerator(new GOST3411Digest());
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006648- break;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006649+ // BEGIN android-changed
6650+ generator = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA256());
6651+ // END android-changed
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006652+ break;
Brian Carlstrome1142c12013-01-30 18:26:40 -08006653+ // BEGIN android-removed
6654+ // case GOST3411:
6655+ // generator = new PKCS12ParametersGenerator(new GOST3411Digest());
6656+ // break;
6657+ // END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006658 default:
6659 throw new IllegalStateException("unknown digest scheme for PBE encryption.");
Brian Carlstrome1142c12013-01-30 18:26:40 -08006660 }
Kenny Root5db505e2013-12-11 16:35:05 -08006661diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/util/DigestFactory.java
6662--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2013-12-03 20:18:20.000000000 +0000
6663+++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2013-09-26 18:06:21.000000000 +0000
Kenny Root87490ac2013-09-26 11:06:21 -07006664@@ -10,12 +10,17 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006665 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
6666 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
6667 import org.bouncycastle.crypto.Digest;
6668-import org.bouncycastle.crypto.digests.MD5Digest;
6669-import org.bouncycastle.crypto.digests.SHA1Digest;
6670-import org.bouncycastle.crypto.digests.SHA224Digest;
6671-import org.bouncycastle.crypto.digests.SHA256Digest;
6672-import org.bouncycastle.crypto.digests.SHA384Digest;
6673-import org.bouncycastle.crypto.digests.SHA512Digest;
6674+// BEGIN android-removed
6675+// import org.bouncycastle.crypto.digests.MD5Digest;
6676+// import org.bouncycastle.crypto.digests.SHA1Digest;
6677+// import org.bouncycastle.crypto.digests.SHA224Digest;
6678+// import org.bouncycastle.crypto.digests.SHA256Digest;
6679+// import org.bouncycastle.crypto.digests.SHA384Digest;
6680+// import org.bouncycastle.crypto.digests.SHA512Digest;
6681+// END android-removed
6682+// BEGIN android-added
6683+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
6684+// END android-added
6685 import org.bouncycastle.util.Strings;
6686
6687 public class DigestFactory
Kenny Root87490ac2013-09-26 11:06:21 -07006688@@ -85,27 +90,39 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006689
6690 if (sha1.contains(digestName))
6691 {
6692- return new SHA1Digest();
6693+ // BEGIN android-changed
6694+ return AndroidDigestFactory.getSHA1();
6695+ // END android-changed
6696 }
6697 if (md5.contains(digestName))
6698 {
6699- return new MD5Digest();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006700+ // BEGIN android-changed
6701+ return AndroidDigestFactory.getMD5();
6702+ // END android-changed
Kenny Root87490ac2013-09-26 11:06:21 -07006703 }
6704 if (sha224.contains(digestName))
6705 {
6706- return new SHA224Digest();
6707+ // BEGIN android-changed
6708+ return AndroidDigestFactory.getSHA224();
6709+ // END android-changed
6710 }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006711 if (sha256.contains(digestName))
6712 {
6713- return new SHA256Digest();
6714+ // BEGIN android-changed
6715+ return AndroidDigestFactory.getSHA256();
6716+ // END android-changed
6717 }
6718 if (sha384.contains(digestName))
6719 {
6720- return new SHA384Digest();
6721+ // BEGIN android-changed
6722+ return AndroidDigestFactory.getSHA384();
6723+ // END android-changed
6724 }
6725 if (sha512.contains(digestName))
6726 {
6727- return new SHA512Digest();
6728+ // BEGIN android-changed
6729+ return AndroidDigestFactory.getSHA512();
6730+ // END android-changed
6731 }
6732
6733 return null;
Kenny Root5db505e2013-12-11 16:35:05 -08006734diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk15on-150/org/bouncycastle/jce/PKCS10CertificationRequest.java
6735--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-12-03 20:18:20.000000000 +0000
6736+++ bcprov-jdk15on-150/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006737@@ -30,14 +30,18 @@
6738 import org.bouncycastle.asn1.DERBitString;
6739 import org.bouncycastle.asn1.DERNull;
6740 import org.bouncycastle.asn1.DERObjectIdentifier;
6741-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
6742+// BEGIN android-removed
6743+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
6744+// END android-removed
6745 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
6746 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
6747 import org.bouncycastle.asn1.pkcs.CertificationRequest;
6748 import org.bouncycastle.asn1.pkcs.CertificationRequestInfo;
6749 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
6750 import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
6751-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
6752+// BEGIN android-removed
6753+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
6754+// END android-removed
6755 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
6756 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
6757 import org.bouncycastle.asn1.x509.X509Name;
Kenny Root87490ac2013-09-26 11:06:21 -07006758@@ -81,8 +85,11 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006759
6760 static
6761 {
6762- algorithms.put("MD2WITHRSAENCRYPTION", new DERObjectIdentifier("1.2.840.113549.1.1.2"));
6763- algorithms.put("MD2WITHRSA", new DERObjectIdentifier("1.2.840.113549.1.1.2"));
6764+ // BEGIN android-removed
6765+ // Dropping MD2
6766+ // algorithms.put("MD2WITHRSAENCRYPTION", new DERObjectIdentifier("1.2.840.113549.1.1.2"));
6767+ // algorithms.put("MD2WITHRSA", new DERObjectIdentifier("1.2.840.113549.1.1.2"));
6768+ // END android-removed
6769 algorithms.put("MD5WITHRSAENCRYPTION", new DERObjectIdentifier("1.2.840.113549.1.1.4"));
6770 algorithms.put("MD5WITHRSA", new DERObjectIdentifier("1.2.840.113549.1.1.4"));
6771 algorithms.put("RSAWITHMD5", new DERObjectIdentifier("1.2.840.113549.1.1.4"));
Kenny Root87490ac2013-09-26 11:06:21 -07006772@@ -102,12 +109,14 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006773 algorithms.put("SHA384WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS);
6774 algorithms.put("SHA512WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS);
6775 algorithms.put("RSAWITHSHA1", new DERObjectIdentifier("1.2.840.113549.1.1.5"));
6776- algorithms.put("RIPEMD128WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
6777- algorithms.put("RIPEMD128WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
6778- algorithms.put("RIPEMD160WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
6779- algorithms.put("RIPEMD160WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
6780- algorithms.put("RIPEMD256WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
6781- algorithms.put("RIPEMD256WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
6782+ // BEGIN android-removed
6783+ // algorithms.put("RIPEMD128WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
6784+ // algorithms.put("RIPEMD128WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
6785+ // algorithms.put("RIPEMD160WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
6786+ // algorithms.put("RIPEMD160WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
6787+ // algorithms.put("RIPEMD256WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
6788+ // algorithms.put("RIPEMD256WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
6789+ // END android-removed
6790 algorithms.put("SHA1WITHDSA", new DERObjectIdentifier("1.2.840.10040.4.3"));
6791 algorithms.put("DSAWITHSHA1", new DERObjectIdentifier("1.2.840.10040.4.3"));
Kenny Root87490ac2013-09-26 11:06:21 -07006792 algorithms.put("SHA224WITHDSA", NISTObjectIdentifiers.dsa_with_sha224);
6793@@ -120,11 +129,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006794 algorithms.put("SHA384WITHECDSA", X9ObjectIdentifiers.ecdsa_with_SHA384);
6795 algorithms.put("SHA512WITHECDSA", X9ObjectIdentifiers.ecdsa_with_SHA512);
6796 algorithms.put("ECDSAWITHSHA1", X9ObjectIdentifiers.ecdsa_with_SHA1);
6797- algorithms.put("GOST3411WITHGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6798- algorithms.put("GOST3410WITHGOST3411", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6799- algorithms.put("GOST3411WITHECGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6800- algorithms.put("GOST3411WITHECGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6801- algorithms.put("GOST3411WITHGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6802+ // BEGIN android-removed
6803+ // algorithms.put("GOST3411WITHGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6804+ // algorithms.put("GOST3410WITHGOST3411", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6805+ // algorithms.put("GOST3411WITHECGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6806+ // algorithms.put("GOST3411WITHECGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6807+ // algorithms.put("GOST3411WITHGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6808+ // END android-removed
6809
6810 //
6811 // reverse mappings
Kenny Root87490ac2013-09-26 11:06:21 -07006812@@ -134,11 +145,16 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006813 oids.put(PKCSObjectIdentifiers.sha256WithRSAEncryption, "SHA256WITHRSA");
6814 oids.put(PKCSObjectIdentifiers.sha384WithRSAEncryption, "SHA384WITHRSA");
6815 oids.put(PKCSObjectIdentifiers.sha512WithRSAEncryption, "SHA512WITHRSA");
6816- oids.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3411WITHGOST3410");
6817- oids.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "GOST3411WITHECGOST3410");
6818+ // BEGIN android-removed
6819+ // oids.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3411WITHGOST3410");
6820+ // oids.put(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "GOST3411WITHECGOST3410");
6821+ // END android-removed
6822
6823 oids.put(new DERObjectIdentifier("1.2.840.113549.1.1.4"), "MD5WITHRSA");
6824- oids.put(new DERObjectIdentifier("1.2.840.113549.1.1.2"), "MD2WITHRSA");
6825+ // BEGIN android-removed
6826+ // Dropping MD2
6827+ // oids.put(new DERObjectIdentifier("1.2.840.113549.1.1.2"), "MD2WITHRSA");
6828+ // END android-removed
6829 oids.put(new DERObjectIdentifier("1.2.840.10040.4.3"), "SHA1WITHDSA");
6830 oids.put(X9ObjectIdentifiers.ecdsa_with_SHA1, "SHA1WITHECDSA");
Kenny Root87490ac2013-09-26 11:06:21 -07006831 oids.put(X9ObjectIdentifiers.ecdsa_with_SHA224, "SHA224WITHECDSA");
6832@@ -172,8 +188,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006833 //
6834 // RFC 4491
6835 //
6836- noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6837- noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6838+ // BEGIN android-removed
6839+ // noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
6840+ // noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
6841+ // END android-removed
6842 //
6843 // explicit params
6844 //
Kenny Root87490ac2013-09-26 11:06:21 -07006845@@ -616,22 +634,24 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006846 {
6847 return "SHA512";
6848 }
6849- else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
6850- {
6851- return "RIPEMD128";
6852- }
6853- else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
6854- {
6855- return "RIPEMD160";
6856- }
6857- else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
6858- {
6859- return "RIPEMD256";
6860- }
6861- else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
6862- {
6863- return "GOST3411";
6864- }
6865+ // BEGIN android-removed
6866+ // else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
6867+ // {
6868+ // return "RIPEMD128";
6869+ // }
6870+ // else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
6871+ // {
6872+ // return "RIPEMD160";
6873+ // }
6874+ // else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
6875+ // {
6876+ // return "RIPEMD256";
6877+ // }
6878+ // else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
6879+ // {
6880+ // return "GOST3411";
6881+ // }
6882+ // END android-removed
6883 else
6884 {
6885 return digestAlgOID.getId();
Kenny Root5db505e2013-12-11 16:35:05 -08006886diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/BouncyCastleProvider.java
6887--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-12-03 20:18:20.000000000 +0000
6888+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-12-12 00:35:05.000000000 +0000
6889@@ -64,15 +64,22 @@
Brian Carlstrome1142c12013-01-30 18:26:40 -08006890
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006891 private static final String[] SYMMETRIC_MACS =
6892 {
6893- "SipHash"
6894+ // BEGIN android-removed
6895+ // "SipHash"
6896+ // END android-removed
6897 };
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006898
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006899 private static final String[] SYMMETRIC_CIPHERS =
6900 {
Kenny Root5db505e2013-12-11 16:35:05 -08006901- "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "ChaCha", "DES", "DESede",
6902- "GOST28147", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", "Noekeon", "RC2", "RC5",
6903- "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Shacal2", "Skipjack", "TEA", "Twofish", "Threefish",
6904- "VMPC", "VMPCKSA3", "XTEA", "XSalsa20"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006905+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006906+ // "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "ChaCha", "DES", "DESede",
6907+ // "GOST28147", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", "Noekeon", "RC2", "RC5",
6908+ // "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Shacal2", "Skipjack", "TEA", "Twofish", "Threefish",
6909+ // "VMPC", "VMPCKSA3", "XTEA", "XSalsa20"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006910+ // END android-removed
6911+ // BEGIN android-added
Kenny Root5db505e2013-12-11 16:35:05 -08006912+ "AES", "ARC4", "Blowfish", "DES", "DESede", "RC2", "Twofish",
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006913+ // END android-added
6914 };
6915
6916 /*
Kenny Root5db505e2013-12-11 16:35:05 -08006917@@ -84,12 +91,22 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006918 // later ones configure it.
6919 private static final String[] ASYMMETRIC_GENERIC =
6920 {
6921- "X509", "IES"
6922+ // BEGIN android-removed
6923+ // "X509", "IES"
6924+ // END android-removed
6925+ // BEGIN android-added
6926+ "X509"
6927+ // END android-added
6928 };
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006929
6930 private static final String[] ASYMMETRIC_CIPHERS =
6931 {
Brian Carlstrome1142c12013-01-30 18:26:40 -08006932- "DSA", "DH", "EC", "RSA", "GOST", "ECGOST", "ElGamal", "DSTU4145"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006933+ // BEGIN android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -08006934+ // "DSA", "DH", "EC", "RSA", "GOST", "ECGOST", "ElGamal", "DSTU4145"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006935+ // END android-removed
6936+ // BEGIN android-added
6937+ "DSA", "DH", "EC", "RSA",
6938+ // END android-added
6939 };
6940
6941 /*
Kenny Root5db505e2013-12-11 16:35:05 -08006942@@ -98,7 +115,12 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006943 private static final String DIGEST_PACKAGE = "org.bouncycastle.jcajce.provider.digest.";
6944 private static final String[] DIGESTS =
6945 {
Kenny Root5db505e2013-12-11 16:35:05 -08006946- "GOST3411", "MD2", "MD4", "MD5", "SHA1", "RIPEMD128", "RIPEMD160", "RIPEMD256", "RIPEMD320", "SHA224", "SHA256", "SHA384", "SHA512", "SHA3", "Skein", "SM3", "Tiger", "Whirlpool"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006947+ // BEGIN android-removed
Kenny Root5db505e2013-12-11 16:35:05 -08006948+ // "GOST3411", "MD2", "MD4", "MD5", "SHA1", "RIPEMD128", "RIPEMD160", "RIPEMD256", "RIPEMD320", "SHA224", "SHA256", "SHA384", "SHA512", "SHA3", "Skein", "SM3", "Tiger", "Whirlpool"
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006949+ // END android-removed
6950+ // BEGIN android-added
Kenny Root87490ac2013-09-26 11:06:21 -07006951+ "MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512",
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006952+ // END android-added
6953 };
6954
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006955 /*
Kenny Root5db505e2013-12-11 16:35:05 -08006956@@ -145,48 +167,52 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006957
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006958 loadAlgorithms(KEYSTORE_PACKAGE, KEYSTORES);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006959
6960- //
6961- // X509Store
6962- //
6963- put("X509Store.CERTIFICATE/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCertCollection");
6964- put("X509Store.ATTRIBUTECERTIFICATE/COLLECTION", "org.bouncycastle.jce.provider.X509StoreAttrCertCollection");
6965- put("X509Store.CRL/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCRLCollection");
6966- put("X509Store.CERTIFICATEPAIR/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCertPairCollection");
6967-
6968- put("X509Store.CERTIFICATE/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCerts");
6969- put("X509Store.CRL/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCRLs");
6970- put("X509Store.ATTRIBUTECERTIFICATE/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPAttrCerts");
6971- put("X509Store.CERTIFICATEPAIR/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCertPairs");
6972-
6973- //
6974- // X509StreamParser
6975- //
6976- put("X509StreamParser.CERTIFICATE", "org.bouncycastle.jce.provider.X509CertParser");
6977- put("X509StreamParser.ATTRIBUTECERTIFICATE", "org.bouncycastle.jce.provider.X509AttrCertParser");
6978- put("X509StreamParser.CRL", "org.bouncycastle.jce.provider.X509CRLParser");
6979- put("X509StreamParser.CERTIFICATEPAIR", "org.bouncycastle.jce.provider.X509CertPairParser");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07006980-
6981- //
6982- // cipher engines
6983- //
6984- put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
6985-
6986- put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
6987-
6988-
6989- put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
6990-
6991- // Certification Path API
6992- put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi");
6993- put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi");
6994- put("CertPathValidator.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
6995- put("CertPathBuilder.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07006996+ // BEGIN android-removed
6997+ // //
6998+ // // X509Store
6999+ // //
7000+ // put("X509Store.CERTIFICATE/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCertCollection");
7001+ // put("X509Store.ATTRIBUTECERTIFICATE/COLLECTION", "org.bouncycastle.jce.provider.X509StoreAttrCertCollection");
7002+ // put("X509Store.CRL/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCRLCollection");
7003+ // put("X509Store.CERTIFICATEPAIR/COLLECTION", "org.bouncycastle.jce.provider.X509StoreCertPairCollection");
7004+ //
7005+ // put("X509Store.CERTIFICATE/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCerts");
7006+ // put("X509Store.CRL/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCRLs");
7007+ // put("X509Store.ATTRIBUTECERTIFICATE/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPAttrCerts");
7008+ // put("X509Store.CERTIFICATEPAIR/LDAP", "org.bouncycastle.jce.provider.X509StoreLDAPCertPairs");
7009+ //
7010+ // //
7011+ // // X509StreamParser
7012+ // //
7013+ // put("X509StreamParser.CERTIFICATE", "org.bouncycastle.jce.provider.X509CertParser");
7014+ // put("X509StreamParser.ATTRIBUTECERTIFICATE", "org.bouncycastle.jce.provider.X509AttrCertParser");
7015+ // put("X509StreamParser.CRL", "org.bouncycastle.jce.provider.X509CRLParser");
7016+ // put("X509StreamParser.CERTIFICATEPAIR", "org.bouncycastle.jce.provider.X509CertPairParser");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007017+ //
7018+ // //
7019+ // // cipher engines
7020+ // //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007021+ // put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007022+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007023+ // put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007024+ //
7025+ //
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007026+ // put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
7027+ //
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007028+ // // Certification Path API
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007029+ // put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi");
7030+ // put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi");
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007031+ // put("CertPathValidator.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
7032+ // put("CertPathBuilder.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007033+ // END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007034 put("CertPathValidator.PKIX", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
7035 put("CertPathBuilder.PKIX", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
7036 put("CertStore.Collection", "org.bouncycastle.jce.provider.CertStoreCollectionSpi");
7037- put("CertStore.LDAP", "org.bouncycastle.jce.provider.X509LDAPCertStoreSpi");
7038- put("CertStore.Multi", "org.bouncycastle.jce.provider.MultiCertStoreSpi");
7039- put("Alg.Alias.CertStore.X509LDAP", "LDAP");
7040+ // BEGIN android-removed
7041+ // put("CertStore.LDAP", "org.bouncycastle.jce.provider.X509LDAPCertStoreSpi");
7042+ // put("CertStore.Multi", "org.bouncycastle.jce.provider.MultiCertStoreSpi");
7043+ // put("Alg.Alias.CertStore.X509LDAP", "LDAP");
7044+ // END android-removed
7045 }
7046
7047 private void loadAlgorithms(String packageName, String[] names)
Kenny Root5db505e2013-12-11 16:35:05 -08007048diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertBlacklist.java
7049--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertBlacklist.java 1970-01-01 00:00:00.000000000 +0000
7050+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertBlacklist.java 2013-12-10 21:31:49.000000000 +0000
Geremy Condra6f40a552013-12-10 13:31:49 -08007051@@ -0,0 +1,228 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007052+/*
7053+ * Copyright (C) 2012 The Android Open Source Project
7054+ *
7055+ * Licensed under the Apache License, Version 2.0 (the "License");
7056+ * you may not use this file except in compliance with the License.
7057+ * You may obtain a copy of the License at
7058+ *
7059+ * http://www.apache.org/licenses/LICENSE-2.0
7060+ *
7061+ * Unless required by applicable law or agreed to in writing, software
7062+ * distributed under the License is distributed on an "AS IS" BASIS,
7063+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7064+ * See the License for the specific language governing permissions and
7065+ * limitations under the License.
7066+ */
7067+
7068+package org.bouncycastle.jce.provider;
7069+
7070+import java.io.Closeable;
7071+import java.io.ByteArrayOutputStream;
7072+import java.io.FileNotFoundException;
7073+import java.io.IOException;
7074+import java.io.RandomAccessFile;
7075+import java.math.BigInteger;
7076+import java.security.PublicKey;
7077+import java.util.Arrays;
7078+import java.util.Collections;
7079+import java.util.HashSet;
7080+import java.util.Set;
7081+import java.util.logging.Level;
7082+import java.util.logging.Logger;
7083+import org.bouncycastle.crypto.Digest;
7084+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
7085+import org.bouncycastle.util.encoders.Hex;
7086+
7087+public class CertBlacklist {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007088+ private static final Logger logger = Logger.getLogger(CertBlacklist.class.getName());
7089+
7090+ // public for testing
7091+ public final Set<BigInteger> serialBlacklist;
7092+ public final Set<byte[]> pubkeyBlacklist;
7093+
7094+ public CertBlacklist() {
Kenny Root2a64eec2014-05-05 10:28:58 -07007095+ String androidData = System.getenv("ANDROID_DATA");
7096+ String blacklistRoot = androidData + "/misc/keychain/";
7097+ String defaultPubkeyBlacklistPath = blacklistRoot + "pubkey_blacklist.txt";
7098+ String defaultSerialBlacklistPath = blacklistRoot + "serial_blacklist.txt";
7099+
7100+ pubkeyBlacklist = readPublicKeyBlackList(defaultPubkeyBlacklistPath);
7101+ serialBlacklist = readSerialBlackList(defaultSerialBlacklistPath);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007102+ }
7103+
7104+ /** Test only interface, not for public use */
7105+ public CertBlacklist(String pubkeyBlacklistPath, String serialBlacklistPath) {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007106+ pubkeyBlacklist = readPublicKeyBlackList(pubkeyBlacklistPath);
Kenny Root2a64eec2014-05-05 10:28:58 -07007107+ serialBlacklist = readSerialBlackList(serialBlacklistPath);
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007108+ }
7109+
7110+ private static boolean isHex(String value) {
7111+ try {
7112+ new BigInteger(value, 16);
7113+ return true;
7114+ } catch (NumberFormatException e) {
7115+ logger.log(Level.WARNING, "Could not parse hex value " + value, e);
7116+ return false;
7117+ }
7118+ }
7119+
7120+ private static boolean isPubkeyHash(String value) {
7121+ if (value.length() != 40) {
7122+ logger.log(Level.WARNING, "Invalid pubkey hash length: " + value.length());
7123+ return false;
7124+ }
7125+ return isHex(value);
7126+ }
7127+
7128+ private static String readBlacklist(String path) {
7129+ try {
7130+ return readFileAsString(path);
7131+ } catch (FileNotFoundException ignored) {
7132+ } catch (IOException e) {
7133+ logger.log(Level.WARNING, "Could not read blacklist", e);
7134+ }
7135+ return "";
7136+ }
7137+
7138+ // From IoUtils.readFileAsString
7139+ private static String readFileAsString(String path) throws IOException {
7140+ return readFileAsBytes(path).toString("UTF-8");
7141+ }
7142+
7143+ // Based on IoUtils.readFileAsBytes
7144+ private static ByteArrayOutputStream readFileAsBytes(String path) throws IOException {
7145+ RandomAccessFile f = null;
7146+ try {
7147+ f = new RandomAccessFile(path, "r");
7148+ ByteArrayOutputStream bytes = new ByteArrayOutputStream((int) f.length());
7149+ byte[] buffer = new byte[8192];
7150+ while (true) {
7151+ int byteCount = f.read(buffer);
7152+ if (byteCount == -1) {
7153+ return bytes;
7154+ }
7155+ bytes.write(buffer, 0, byteCount);
7156+ }
7157+ } finally {
7158+ closeQuietly(f);
7159+ }
7160+ }
7161+
7162+ // Base on IoUtils.closeQuietly
7163+ private static void closeQuietly(Closeable closeable) {
7164+ if (closeable != null) {
7165+ try {
7166+ closeable.close();
7167+ } catch (RuntimeException rethrown) {
7168+ throw rethrown;
7169+ } catch (Exception ignored) {
7170+ }
7171+ }
7172+ }
7173+
7174+ private static final Set<BigInteger> readSerialBlackList(String path) {
7175+
7176+ // start out with a base set of known bad values
7177+ Set<BigInteger> bl = new HashSet<BigInteger>(Arrays.asList(
7178+ // From http://src.chromium.org/viewvc/chrome/trunk/src/net/base/x509_certificate.cc?revision=78748&view=markup
7179+ // Not a real certificate. For testing only.
7180+ new BigInteger("077a59bcd53459601ca6907267a6dd1c", 16),
7181+ new BigInteger("047ecbe9fca55f7bd09eae36e10cae1e", 16),
7182+ new BigInteger("d8f35f4eb7872b2dab0692e315382fb0", 16),
7183+ new BigInteger("b0b7133ed096f9b56fae91c874bd3ac0", 16),
7184+ new BigInteger("9239d5348f40d1695a745470e1f23f43", 16),
7185+ new BigInteger("e9028b9578e415dc1a710a2b88154447", 16),
7186+ new BigInteger("d7558fdaf5f1105bb213282b707729a3", 16),
7187+ new BigInteger("f5c86af36162f13a64f54f6dc9587c06", 16),
7188+ new BigInteger("392a434f0e07df1f8aa305de34e0c229", 16),
Geremy Condrac4c80872013-01-15 17:38:43 -08007189+ new BigInteger("3e75ced46b693021218830ae86a82a71", 16),
7190+ new BigInteger("864", 16),
Geremy Condra6f40a552013-12-10 13:31:49 -08007191+ new BigInteger("827", 16),
7192+ new BigInteger("31da7", 16)
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007193+ ));
7194+
7195+ // attempt to augment it with values taken from gservices
7196+ String serialBlacklist = readBlacklist(path);
7197+ if (!serialBlacklist.equals("")) {
7198+ for(String value : serialBlacklist.split(",")) {
7199+ try {
7200+ bl.add(new BigInteger(value, 16));
7201+ } catch (NumberFormatException e) {
7202+ logger.log(Level.WARNING, "Tried to blacklist invalid serial number " + value, e);
7203+ }
7204+ }
7205+ }
7206+
7207+ // whether that succeeds or fails, send it on its merry way
7208+ return Collections.unmodifiableSet(bl);
7209+ }
7210+
7211+ private static final Set<byte[]> readPublicKeyBlackList(String path) {
7212+
7213+ // start out with a base set of known bad values
7214+ Set<byte[]> bl = new HashSet<byte[]>(Arrays.asList(
7215+ // From http://src.chromium.org/viewvc/chrome/branches/782/src/net/base/x509_certificate.cc?r1=98750&r2=98749&pathrev=98750
7216+ // C=NL, O=DigiNotar, CN=DigiNotar Root CA/emailAddress=info@diginotar.nl
7217+ "410f36363258f30b347d12ce4863e433437806a8".getBytes(),
7218+ // Subject: CN=DigiNotar Cyber CA
7219+ // Issuer: CN=GTE CyberTrust Global Root
7220+ "ba3e7bd38cd7e1e6b9cd4c219962e59d7a2f4e37".getBytes(),
7221+ // Subject: CN=DigiNotar Services 1024 CA
7222+ // Issuer: CN=Entrust.net
7223+ "e23b8d105f87710a68d9248050ebefc627be4ca6".getBytes(),
7224+ // Subject: CN=DigiNotar PKIoverheid CA Organisatie - G2
7225+ // Issuer: CN=Staat der Nederlanden Organisatie CA - G2
7226+ "7b2e16bc39bcd72b456e9f055d1de615b74945db".getBytes(),
7227+ // Subject: CN=DigiNotar PKIoverheid CA Overheid en Bedrijven
7228+ // Issuer: CN=Staat der Nederlanden Overheid CA
7229+ "e8f91200c65cee16e039b9f883841661635f81c5".getBytes(),
7230+ // From http://src.chromium.org/viewvc/chrome?view=rev&revision=108479
7231+ // Subject: O=Digicert Sdn. Bhd.
7232+ // Issuer: CN=GTE CyberTrust Global Root
Geremy Condrac4c80872013-01-15 17:38:43 -08007233+ "0129bcd5b448ae8d2496d1c3e19723919088e152".getBytes(),
7234+ // Subject: CN=e-islem.kktcmerkezbankasi.org/emailAddress=ileti@kktcmerkezbankasi.org
7235+ // Issuer: CN=T\xC3\x9CRKTRUST Elektronik Sunucu Sertifikas\xC4\xB1 Hizmetleri
7236+ "5f3ab33d55007054bc5e3e5553cd8d8465d77c61".getBytes(),
7237+ // Subject: CN=*.EGO.GOV.TR 93
7238+ // Issuer: CN=T\xC3\x9CRKTRUST Elektronik Sunucu Sertifikas\xC4\xB1 Hizmetleri
Geremy Condra6f40a552013-12-10 13:31:49 -08007239+ "783333c9687df63377efceddd82efa9101913e8e".getBytes(),
7240+ // Subject: Subject: C=FR, O=DG Tr\xC3\xA9sor, CN=AC DG Tr\xC3\xA9sor SSL
7241+ // Issuer: C=FR, O=DGTPE, CN=AC DGTPE Signature Authentification
7242+ "3ecf4bbbe46096d514bb539bb913d77aa4ef31bf".getBytes()
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007243+ ));
7244+
7245+ // attempt to augment it with values taken from gservices
7246+ String pubkeyBlacklist = readBlacklist(path);
7247+ if (!pubkeyBlacklist.equals("")) {
7248+ for (String value : pubkeyBlacklist.split(",")) {
7249+ value = value.trim();
7250+ if (isPubkeyHash(value)) {
7251+ bl.add(value.getBytes());
7252+ } else {
7253+ logger.log(Level.WARNING, "Tried to blacklist invalid pubkey " + value);
7254+ }
7255+ }
7256+ }
7257+
7258+ return bl;
7259+ }
7260+
7261+ public boolean isPublicKeyBlackListed(PublicKey publicKey) {
7262+ byte[] encoded = publicKey.getEncoded();
7263+ Digest digest = AndroidDigestFactory.getSHA1();
7264+ digest.update(encoded, 0, encoded.length);
7265+ byte[] out = new byte[digest.getDigestSize()];
7266+ digest.doFinal(out, 0);
7267+ for (byte[] blacklisted : pubkeyBlacklist) {
7268+ if (Arrays.equals(blacklisted, Hex.encode(out))) {
7269+ return true;
7270+ }
7271+ }
7272+ return false;
7273+ }
7274+
7275+ public boolean isSerialNumberBlackListed(BigInteger serial) {
7276+ return serialBlacklist.contains(serial);
7277+ }
7278+
7279+}
Kenny Root5db505e2013-12-11 16:35:05 -08007280diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
7281--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-12-03 20:18:20.000000000 +0000
7282+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-12-12 00:35:05.000000000 +0000
7283@@ -61,18 +61,24 @@
Brian Carlstrome1142c12013-01-30 18:26:40 -08007284 import org.bouncycastle.asn1.x509.PolicyInformation;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007285 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
7286 import org.bouncycastle.asn1.x509.X509Extension;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007287-import org.bouncycastle.jce.X509LDAPCertStoreParameters;
7288+// BEGIN android-removed
7289+// import org.bouncycastle.jce.X509LDAPCertStoreParameters;
7290+// END android-removed
7291 import org.bouncycastle.jce.exception.ExtCertPathValidatorException;
Brian Carlstrome1142c12013-01-30 18:26:40 -08007292 import org.bouncycastle.util.Integers;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007293 import org.bouncycastle.util.Selector;
7294 import org.bouncycastle.util.StoreException;
7295 import org.bouncycastle.x509.ExtendedPKIXBuilderParameters;
7296 import org.bouncycastle.x509.ExtendedPKIXParameters;
7297-import org.bouncycastle.x509.X509AttributeCertStoreSelector;
7298+// BEGIN android-removed
7299+// import org.bouncycastle.x509.X509AttributeCertStoreSelector;
7300+// END android-removed
7301 import org.bouncycastle.x509.X509AttributeCertificate;
7302 import org.bouncycastle.x509.X509CRLStoreSelector;
7303 import org.bouncycastle.x509.X509CertStoreSelector;
Kenny Root5db505e2013-12-11 16:35:05 -08007304-import org.bouncycastle.x509.X509Store;
7305+// BEGIN android-removed
7306+// import org.bouncycastle.x509.X509Store;
7307+// END android-removed
7308
7309 public class CertPathValidatorUtilities
7310 {
7311@@ -656,38 +662,40 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007312 {
7313 try
7314 {
7315- if (location.startsWith("ldap://"))
7316- {
7317- // ldap://directory.d-trust.net/CN=D-TRUST
7318- // Qualified CA 2003 1:PN,O=D-Trust GmbH,C=DE
7319- // skip "ldap://"
7320- location = location.substring(7);
7321- // after first / baseDN starts
7322- String base = null;
7323- String url = null;
7324- if (location.indexOf("/") != -1)
7325- {
7326- base = location.substring(location.indexOf("/"));
7327- // URL
7328- url = "ldap://"
7329- + location.substring(0, location.indexOf("/"));
7330- }
7331- else
7332- {
7333- url = "ldap://" + location;
7334- }
7335- // use all purpose parameters
7336- X509LDAPCertStoreParameters params = new X509LDAPCertStoreParameters.Builder(
7337- url, base).build();
7338- pkixParams.addAdditionalStore(X509Store.getInstance(
7339- "CERTIFICATE/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7340- pkixParams.addAdditionalStore(X509Store.getInstance(
7341- "CRL/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7342- pkixParams.addAdditionalStore(X509Store.getInstance(
7343- "ATTRIBUTECERTIFICATE/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7344- pkixParams.addAdditionalStore(X509Store.getInstance(
7345- "CERTIFICATEPAIR/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7346- }
7347+ // BEGIN android-removed
7348+ // if (location.startsWith("ldap://"))
7349+ // {
7350+ // // ldap://directory.d-trust.net/CN=D-TRUST
7351+ // // Qualified CA 2003 1:PN,O=D-Trust GmbH,C=DE
7352+ // // skip "ldap://"
7353+ // location = location.substring(7);
7354+ // // after first / baseDN starts
7355+ // String base = null;
7356+ // String url = null;
7357+ // if (location.indexOf("/") != -1)
7358+ // {
7359+ // base = location.substring(location.indexOf("/"));
7360+ // // URL
7361+ // url = "ldap://"
7362+ // + location.substring(0, location.indexOf("/"));
7363+ // }
7364+ // else
7365+ // {
7366+ // url = "ldap://" + location;
7367+ // }
7368+ // // use all purpose parameters
7369+ // X509LDAPCertStoreParameters params = new X509LDAPCertStoreParameters.Builder(
7370+ // url, base).build();
7371+ // pkixParams.addAdditionalStore(X509Store.getInstance(
7372+ // "CERTIFICATE/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7373+ // pkixParams.addAdditionalStore(X509Store.getInstance(
7374+ // "CRL/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7375+ // pkixParams.addAdditionalStore(X509Store.getInstance(
7376+ // "ATTRIBUTECERTIFICATE/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7377+ // pkixParams.addAdditionalStore(X509Store.getInstance(
7378+ // "CERTIFICATEPAIR/LDAP", params, BouncyCastleProvider.PROVIDER_NAME));
7379+ // }
7380+ // END android-removed
7381 }
7382 catch (Exception e)
7383 {
Kenny Root5db505e2013-12-11 16:35:05 -08007384@@ -720,20 +728,22 @@
7385 {
7386 Object obj = iter.next();
7387
7388- if (obj instanceof X509Store)
7389- {
7390- X509Store certStore = (X509Store)obj;
7391- try
7392- {
7393- certs.addAll(certStore.getMatches(certSelect));
7394- }
7395- catch (StoreException e)
7396- {
7397- throw new AnnotatedException(
7398- "Problem while picking certificates from X.509 store.", e);
7399- }
7400- }
7401- else
7402+ // BEGIN android-removed
7403+ // if (obj instanceof X509Store)
7404+ // {
7405+ // X509Store certStore = (X509Store)obj;
7406+ // try
7407+ // {
7408+ // certs.addAll(certStore.getMatches(certSelect));
7409+ // }
7410+ // catch (StoreException e)
7411+ // {
7412+ // throw new AnnotatedException(
7413+ // "Problem while picking certificates from X.509 store.", e);
7414+ // }
7415+ // }
7416+ // else
7417+ // END android-removed
7418 {
7419 CertStore certStore = (CertStore)obj;
7420
7421@@ -752,33 +762,35 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007422 return certs;
7423 }
7424
7425- protected static Collection findCertificates(X509AttributeCertStoreSelector certSelect,
7426- List certStores)
7427- throws AnnotatedException
7428- {
7429- Set certs = new HashSet();
7430- Iterator iter = certStores.iterator();
7431-
7432- while (iter.hasNext())
7433- {
7434- Object obj = iter.next();
7435-
7436- if (obj instanceof X509Store)
7437- {
7438- X509Store certStore = (X509Store)obj;
7439- try
7440- {
7441- certs.addAll(certStore.getMatches(certSelect));
7442- }
7443- catch (StoreException e)
7444- {
7445- throw new AnnotatedException(
7446- "Problem while picking certificates from X.509 store.", e);
7447- }
7448- }
7449- }
7450- return certs;
7451- }
7452+ // BEGIN android-removed
7453+ // protected static Collection findCertificates(X509AttributeCertStoreSelector certSelect,
7454+ // List certStores)
7455+ // throws AnnotatedException
7456+ // {
7457+ // Set certs = new HashSet();
7458+ // Iterator iter = certStores.iterator();
7459+ //
7460+ // while (iter.hasNext())
7461+ // {
7462+ // Object obj = iter.next();
7463+ //
7464+ // if (obj instanceof X509Store)
7465+ // {
7466+ // X509Store certStore = (X509Store)obj;
7467+ // try
7468+ // {
7469+ // certs.addAll(certStore.getMatches(certSelect));
7470+ // }
7471+ // catch (StoreException e)
7472+ // {
7473+ // throw new AnnotatedException(
7474+ // "Problem while picking certificates from X.509 store.", e);
7475+ // }
7476+ // }
7477+ // }
7478+ // return certs;
7479+ // }
7480+ // END android-removed
7481
7482 protected static void addAdditionalStoresFromCRLDistributionPoint(
7483 CRLDistPoint crldp, ExtendedPKIXParameters pkixParams)
Kenny Root5db505e2013-12-11 16:35:05 -08007484diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPrivateKey.java
7485--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-12-03 20:18:20.000000000 +0000
7486+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007487@@ -20,8 +20,10 @@
7488 import org.bouncycastle.asn1.DERInteger;
7489 import org.bouncycastle.asn1.DERNull;
7490 import org.bouncycastle.asn1.DERObjectIdentifier;
7491-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
7492-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
7493+// BEGIN android-removed
7494+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
7495+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
7496+// END android-removed
7497 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
7498 import org.bouncycastle.asn1.sec.ECPrivateKeyStructure;
7499 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
7500@@ -203,21 +205,23 @@
7501 ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(params.getParameters());
7502 X9ECParameters ecP = ECUtil.getNamedCurveByOid(oid);
7503
7504- if (ecP == null) // GOST Curve
7505- {
7506- ECDomainParameters gParam = ECGOST3410NamedCurves.getByOID(oid);
7507- EllipticCurve ellipticCurve = EC5Util.convertCurve(gParam.getCurve(), gParam.getSeed());
7508-
7509- ecSpec = new ECNamedCurveSpec(
7510- ECGOST3410NamedCurves.getName(oid),
7511- ellipticCurve,
7512- new ECPoint(
Kenny Root5db505e2013-12-11 16:35:05 -08007513- gParam.getG().getAffineXCoord().toBigInteger(),
7514- gParam.getG().getAffineYCoord().toBigInteger()),
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007515- gParam.getN(),
7516- gParam.getH());
7517- }
7518- else
7519+ // BEGIN android-removed
7520+ // if (ecP == null) // GOST Curve
7521+ // {
7522+ // ECDomainParameters gParam = ECGOST3410NamedCurves.getByOID(oid);
7523+ // EllipticCurve ellipticCurve = EC5Util.convertCurve(gParam.getCurve(), gParam.getSeed());
7524+ //
7525+ // ecSpec = new ECNamedCurveSpec(
7526+ // ECGOST3410NamedCurves.getName(oid),
7527+ // ellipticCurve,
7528+ // new ECPoint(
Kenny Root5db505e2013-12-11 16:35:05 -08007529+ // gParam.getG().getAffineXCoord().toBigInteger(),
7530+ // gParam.getG().getAffineYCoord().toBigInteger()),
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007531+ // gParam.getN(),
7532+ // gParam.getH());
7533+ // }
7534+ // else
7535+ // END android-removed
7536 {
7537 EllipticCurve ellipticCurve = EC5Util.convertCurve(ecP.getCurve(), ecP.getSeed());
7538
7539@@ -331,11 +335,13 @@
7540
7541 try
7542 {
7543- if (algorithm.equals("ECGOST3410"))
7544- {
7545- info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.toASN1Primitive()), keyStructure.toASN1Primitive());
7546- }
7547- else
7548+ // BEGIN android-removed
7549+ // if (algorithm.equals("ECGOST3410"))
7550+ // {
7551+ // info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.toASN1Primitive()), keyStructure.toASN1Primitive());
7552+ // }
7553+ // else
7554+ // END android-removed
7555 {
7556
7557 info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.toASN1Primitive()), keyStructure.toASN1Primitive());
Kenny Root5db505e2013-12-11 16:35:05 -08007558diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPublicKey.java
7559--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-12-03 20:18:20.000000000 +0000
7560+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-12-12 00:35:05.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007561@@ -18,9 +18,11 @@
7562 import org.bouncycastle.asn1.DERBitString;
7563 import org.bouncycastle.asn1.DERNull;
7564 import org.bouncycastle.asn1.DEROctetString;
7565-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
7566-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
7567-import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
7568+// BEGIN android-removed
7569+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
7570+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
7571+// import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
7572+// END android-removed
7573 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
7574 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
7575 import org.bouncycastle.asn1.x9.X962Parameters;
7576@@ -33,9 +35,13 @@
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007577 import org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util;
7578 import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007579 import org.bouncycastle.jcajce.provider.asymmetric.util.KeyUtil;
7580-import org.bouncycastle.jce.ECGOST3410NamedCurveTable;
7581+// BEGIN android-removed
7582+// import org.bouncycastle.jce.ECGOST3410NamedCurveTable;
7583+// END android-removed
7584 import org.bouncycastle.jce.interfaces.ECPointEncoder;
7585-import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
7586+// BEGIN android-removed
7587+// import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
7588+// END android-removed
7589 import org.bouncycastle.jce.spec.ECNamedCurveSpec;
7590 import org.bouncycastle.math.ec.ECCurve;
7591
7592@@ -46,7 +52,9 @@
7593 private org.bouncycastle.math.ec.ECPoint q;
7594 private ECParameterSpec ecSpec;
7595 private boolean withCompression;
7596- private GOST3410PublicKeyAlgParameters gostParams;
7597+ // BEGIN android-removed
7598+ // private GOST3410PublicKeyAlgParameters gostParams;
7599+ // END android-removed
7600
7601 public JCEECPublicKey(
7602 String algorithm,
7603@@ -56,7 +64,9 @@
7604 this.q = key.q;
7605 this.ecSpec = key.ecSpec;
7606 this.withCompression = key.withCompression;
7607- this.gostParams = key.gostParams;
7608+ // BEGIN android-removed
7609+ // this.gostParams = key.gostParams;
7610+ // END android-removed
7611 }
7612
7613 public JCEECPublicKey(
Kenny Root5db505e2013-12-11 16:35:05 -08007614@@ -179,54 +189,55 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007615
7616 private void populateFromPubKeyInfo(SubjectPublicKeyInfo info)
7617 {
7618- if (info.getAlgorithmId().getObjectId().equals(CryptoProObjectIdentifiers.gostR3410_2001))
7619- {
7620- DERBitString bits = info.getPublicKeyData();
7621- ASN1OctetString key;
7622- this.algorithm = "ECGOST3410";
7623-
7624- try
7625- {
7626- key = (ASN1OctetString) ASN1Primitive.fromByteArray(bits.getBytes());
7627- }
7628- catch (IOException ex)
7629- {
7630- throw new IllegalArgumentException("error recovering public key");
7631- }
7632-
7633- byte[] keyEnc = key.getOctets();
7634- byte[] x = new byte[32];
7635- byte[] y = new byte[32];
7636-
7637- for (int i = 0; i != x.length; i++)
7638- {
7639- x[i] = keyEnc[32 - 1 - i];
7640- }
7641-
7642- for (int i = 0; i != y.length; i++)
7643- {
7644- y[i] = keyEnc[64 - 1 - i];
7645- }
7646-
7647- gostParams = new GOST3410PublicKeyAlgParameters((ASN1Sequence)info.getAlgorithmId().getParameters());
7648-
7649- ECNamedCurveParameterSpec spec = ECGOST3410NamedCurveTable.getParameterSpec(ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()));
7650-
7651- ECCurve curve = spec.getCurve();
7652- EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, spec.getSeed());
7653-
7654- this.q = curve.createPoint(new BigInteger(1, x), new BigInteger(1, y), false);
7655-
7656- ecSpec = new ECNamedCurveSpec(
7657- ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()),
7658- ellipticCurve,
7659- new ECPoint(
Kenny Root5db505e2013-12-11 16:35:05 -08007660- spec.getG().getAffineXCoord().toBigInteger(),
7661- spec.getG().getAffineYCoord().toBigInteger()),
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007662- spec.getN(), spec.getH());
7663-
7664- }
7665- else
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007666+ // if (info.getAlgorithmId().getObjectId().equals(CryptoProObjectIdentifiers.gostR3410_2001))
7667+ // {
7668+ // DERBitString bits = info.getPublicKeyData();
7669+ // ASN1OctetString key;
7670+ // this.algorithm = "ECGOST3410";
7671+ //
7672+ // try
7673+ // {
7674+ // key = (ASN1OctetString) ASN1Primitive.fromByteArray(bits.getBytes());
7675+ // }
7676+ // catch (IOException ex)
7677+ // {
7678+ // throw new IllegalArgumentException("error recovering public key");
7679+ // }
7680+ //
7681+ // byte[] keyEnc = key.getOctets();
7682+ // byte[] x = new byte[32];
7683+ // byte[] y = new byte[32];
7684+ //
7685+ // for (int i = 0; i != x.length; i++)
7686+ // {
7687+ // x[i] = keyEnc[32 - 1 - i];
7688+ // }
7689+ //
7690+ // for (int i = 0; i != y.length; i++)
7691+ // {
7692+ // y[i] = keyEnc[64 - 1 - i];
7693+ // }
7694+ //
7695+ // gostParams = new GOST3410PublicKeyAlgParameters((ASN1Sequence)info.getAlgorithmId().getParameters());
7696+ //
7697+ // ECNamedCurveParameterSpec spec = ECGOST3410NamedCurveTable.getParameterSpec(ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()));
7698+ //
7699+ // ECCurve curve = spec.getCurve();
7700+ // EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, spec.getSeed());
7701+ //
7702+ // this.q = curve.createPoint(new BigInteger(1, x), new BigInteger(1, y), false);
7703+ //
7704+ // ecSpec = new ECNamedCurveSpec(
7705+ // ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()),
7706+ // ellipticCurve,
7707+ // new ECPoint(
Kenny Root5db505e2013-12-11 16:35:05 -08007708+ // spec.getG().getAffineXCoord().toBigInteger(),
7709+ // spec.getG().getAffineYCoord().toBigInteger()),
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007710+ // spec.getN(), spec.getH());
7711+ //
7712+ // }
7713+ // else
7714+ // END android-removed
7715 {
7716 X962Parameters params = new X962Parameters((ASN1Primitive)info.getAlgorithmId().getParameters());
7717 ECCurve curve;
Kenny Root5db505e2013-12-11 16:35:05 -08007718@@ -315,52 +326,54 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007719 ASN1Encodable params;
7720 SubjectPublicKeyInfo info;
7721
7722- if (algorithm.equals("ECGOST3410"))
7723- {
7724- if (gostParams != null)
7725- {
7726- params = gostParams;
7727- }
7728- else
7729- {
7730- if (ecSpec instanceof ECNamedCurveSpec)
7731- {
7732- params = new GOST3410PublicKeyAlgParameters(
7733- ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()),
7734- CryptoProObjectIdentifiers.gostR3411_94_CryptoProParamSet);
7735- }
7736- else
7737- { // strictly speaking this may not be applicable...
7738- ECCurve curve = EC5Util.convertCurve(ecSpec.getCurve());
7739-
7740- X9ECParameters ecP = new X9ECParameters(
7741- curve,
7742- EC5Util.convertPoint(curve, ecSpec.getGenerator(), withCompression),
7743- ecSpec.getOrder(),
7744- BigInteger.valueOf(ecSpec.getCofactor()),
7745- ecSpec.getCurve().getSeed());
7746-
7747- params = new X962Parameters(ecP);
7748- }
7749- }
7750-
Kenny Root5db505e2013-12-11 16:35:05 -08007751- BigInteger bX = this.q.getAffineXCoord().toBigInteger();
7752- BigInteger bY = this.q.getAffineYCoord().toBigInteger();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007753- byte[] encKey = new byte[64];
7754-
7755- extractBytes(encKey, 0, bX);
7756- extractBytes(encKey, 32, bY);
7757-
Brian Carlstrome1142c12013-01-30 18:26:40 -08007758- try
7759- {
7760- info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params), new DEROctetString(encKey));
7761- }
7762- catch (IOException e)
7763- {
7764- return null;
7765- }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007766- }
7767- else
7768+ // BEGIN android-removed
7769+ // if (algorithm.equals("ECGOST3410"))
7770+ // {
7771+ // if (gostParams != null)
7772+ // {
7773+ // params = gostParams;
7774+ // }
7775+ // else
7776+ // {
7777+ // if (ecSpec instanceof ECNamedCurveSpec)
7778+ // {
7779+ // params = new GOST3410PublicKeyAlgParameters(
7780+ // ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()),
7781+ // CryptoProObjectIdentifiers.gostR3411_94_CryptoProParamSet);
7782+ // }
7783+ // else
7784+ // { // strictly speaking this may not be applicable...
7785+ // ECCurve curve = EC5Util.convertCurve(ecSpec.getCurve());
7786+ //
7787+ // X9ECParameters ecP = new X9ECParameters(
7788+ // curve,
7789+ // EC5Util.convertPoint(curve, ecSpec.getGenerator(), withCompression),
7790+ // ecSpec.getOrder(),
7791+ // BigInteger.valueOf(ecSpec.getCofactor()),
7792+ // ecSpec.getCurve().getSeed());
7793+ //
7794+ // params = new X962Parameters(ecP);
7795+ // }
7796+ // }
7797+ //
Kenny Root5db505e2013-12-11 16:35:05 -08007798+ // BigInteger bX = this.q.getAffineXCoord().toBigInteger();
7799+ // BigInteger bY = this.q.getAffineYCoord().toBigInteger();
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007800+ // byte[] encKey = new byte[64];
7801+ //
7802+ // extractBytes(encKey, 0, bX);
7803+ // extractBytes(encKey, 32, bY);
7804+ //
Brian Carlstrome1142c12013-01-30 18:26:40 -08007805+ // try
7806+ // {
7807+ // info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params), new DEROctetString(encKey));
7808+ // }
7809+ // catch (IOException e)
7810+ // {
7811+ // return null;
7812+ // }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007813+ // }
7814+ // else
7815+ // END android-removed
7816 {
7817 if (ecSpec instanceof ECNamedCurveSpec)
7818 {
Kenny Root5db505e2013-12-11 16:35:05 -08007819diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEStreamCipher.java
7820--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-12-03 20:18:20.000000000 +0000
7821+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-05-25 02:14:15.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -08007822@@ -23,8 +23,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007823 import javax.crypto.ShortBufferException;
7824 import javax.crypto.spec.IvParameterSpec;
7825 import javax.crypto.spec.PBEParameterSpec;
7826-import javax.crypto.spec.RC2ParameterSpec;
7827-import javax.crypto.spec.RC5ParameterSpec;
7828+// BEGIN android-removed
7829+// import javax.crypto.spec.RC2ParameterSpec;
7830+// import javax.crypto.spec.RC5ParameterSpec;
7831+// END android-removed
Brian Carlstrome1142c12013-01-30 18:26:40 -08007832 import javax.crypto.spec.SecretKeySpec;
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007833
Brian Carlstrome1142c12013-01-30 18:26:40 -08007834 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
7835@@ -33,12 +35,16 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007836 import org.bouncycastle.crypto.DataLengthException;
7837 import org.bouncycastle.crypto.StreamBlockCipher;
7838 import org.bouncycastle.crypto.StreamCipher;
7839-import org.bouncycastle.crypto.engines.BlowfishEngine;
7840-import org.bouncycastle.crypto.engines.DESEngine;
7841-import org.bouncycastle.crypto.engines.DESedeEngine;
7842+// BEGIN android-removed
7843+// import org.bouncycastle.crypto.engines.BlowfishEngine;
7844+// import org.bouncycastle.crypto.engines.DESEngine;
7845+// import org.bouncycastle.crypto.engines.DESedeEngine;
7846+// END android-removed
7847 import org.bouncycastle.crypto.engines.RC4Engine;
7848-import org.bouncycastle.crypto.engines.SkipjackEngine;
7849-import org.bouncycastle.crypto.engines.TwofishEngine;
7850+// BEGIN android-removed
7851+// import org.bouncycastle.crypto.engines.SkipjackEngine;
7852+// import org.bouncycastle.crypto.engines.TwofishEngine;
7853+// END android-removed
7854 import org.bouncycastle.crypto.modes.CFBBlockCipher;
7855 import org.bouncycastle.crypto.modes.OFBBlockCipher;
7856 import org.bouncycastle.crypto.params.KeyParameter;
Brian Carlstrome1142c12013-01-30 18:26:40 -08007857@@ -55,8 +61,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007858 //
7859 private Class[] availableSpecs =
7860 {
7861- RC2ParameterSpec.class,
7862- RC5ParameterSpec.class,
7863+ // BEGIN android-removed
7864+ // RC2ParameterSpec.class,
7865+ // RC5ParameterSpec.class,
7866+ // END android-removed
7867 IvParameterSpec.class,
7868 PBEParameterSpec.class
7869 };
Brian Carlstroma198e1e2013-05-24 19:14:15 -07007870@@ -491,123 +499,125 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07007871 * The ciphers that inherit from us.
7872 */
7873
7874- /**
7875- * DES
7876- */
7877- static public class DES_CFB8
7878- extends JCEStreamCipher
7879- {
7880- public DES_CFB8()
7881- {
7882- super(new CFBBlockCipher(new DESEngine(), 8), 64);
7883- }
7884- }
7885-
7886- /**
7887- * DESede
7888- */
7889- static public class DESede_CFB8
7890- extends JCEStreamCipher
7891- {
7892- public DESede_CFB8()
7893- {
7894- super(new CFBBlockCipher(new DESedeEngine(), 8), 64);
7895- }
7896- }
7897-
7898- /**
7899- * SKIPJACK
7900- */
7901- static public class Skipjack_CFB8
7902- extends JCEStreamCipher
7903- {
7904- public Skipjack_CFB8()
7905- {
7906- super(new CFBBlockCipher(new SkipjackEngine(), 8), 64);
7907- }
7908- }
7909-
7910- /**
7911- * Blowfish
7912- */
7913- static public class Blowfish_CFB8
7914- extends JCEStreamCipher
7915- {
7916- public Blowfish_CFB8()
7917- {
7918- super(new CFBBlockCipher(new BlowfishEngine(), 8), 64);
7919- }
7920- }
7921-
7922- /**
7923- * Twofish
7924- */
7925- static public class Twofish_CFB8
7926- extends JCEStreamCipher
7927- {
7928- public Twofish_CFB8()
7929- {
7930- super(new CFBBlockCipher(new TwofishEngine(), 8), 128);
7931- }
7932- }
7933-
7934- /**
7935- * DES
7936- */
7937- static public class DES_OFB8
7938- extends JCEStreamCipher
7939- {
7940- public DES_OFB8()
7941- {
7942- super(new OFBBlockCipher(new DESEngine(), 8), 64);
7943- }
7944- }
7945-
7946- /**
7947- * DESede
7948- */
7949- static public class DESede_OFB8
7950- extends JCEStreamCipher
7951- {
7952- public DESede_OFB8()
7953- {
7954- super(new OFBBlockCipher(new DESedeEngine(), 8), 64);
7955- }
7956- }
7957-
7958- /**
7959- * SKIPJACK
7960- */
7961- static public class Skipjack_OFB8
7962- extends JCEStreamCipher
7963- {
7964- public Skipjack_OFB8()
7965- {
7966- super(new OFBBlockCipher(new SkipjackEngine(), 8), 64);
7967- }
7968- }
7969-
7970- /**
7971- * Blowfish
7972- */
7973- static public class Blowfish_OFB8
7974- extends JCEStreamCipher
7975- {
7976- public Blowfish_OFB8()
7977- {
7978- super(new OFBBlockCipher(new BlowfishEngine(), 8), 64);
7979- }
7980- }
7981-
7982- /**
7983- * Twofish
7984- */
7985- static public class Twofish_OFB8
7986- extends JCEStreamCipher
7987- {
7988- public Twofish_OFB8()
7989- {
7990- super(new OFBBlockCipher(new TwofishEngine(), 8), 128);
7991- }
7992- }
7993+ // BEGIN android-removed
7994+ // /**
7995+ // * DES
7996+ // */
7997+ // static public class DES_CFB8
7998+ // extends JCEStreamCipher
7999+ // {
8000+ // public DES_CFB8()
8001+ // {
8002+ // super(new CFBBlockCipher(new DESEngine(), 8), 64);
8003+ // }
8004+ // }
8005+ //
8006+ // /**
8007+ // * DESede
8008+ // */
8009+ // static public class DESede_CFB8
8010+ // extends JCEStreamCipher
8011+ // {
8012+ // public DESede_CFB8()
8013+ // {
8014+ // super(new CFBBlockCipher(new DESedeEngine(), 8), 64);
8015+ // }
8016+ // }
8017+ //
8018+ // /**
8019+ // * SKIPJACK
8020+ // */
8021+ // static public class Skipjack_CFB8
8022+ // extends JCEStreamCipher
8023+ // {
8024+ // public Skipjack_CFB8()
8025+ // {
8026+ // super(new CFBBlockCipher(new SkipjackEngine(), 8), 64);
8027+ // }
8028+ // }
8029+ //
8030+ // /**
8031+ // * Blowfish
8032+ // */
8033+ // static public class Blowfish_CFB8
8034+ // extends JCEStreamCipher
8035+ // {
8036+ // public Blowfish_CFB8()
8037+ // {
8038+ // super(new CFBBlockCipher(new BlowfishEngine(), 8), 64);
8039+ // }
8040+ // }
8041+ //
8042+ // /**
8043+ // * Twofish
8044+ // */
8045+ // static public class Twofish_CFB8
8046+ // extends JCEStreamCipher
8047+ // {
8048+ // public Twofish_CFB8()
8049+ // {
8050+ // super(new CFBBlockCipher(new TwofishEngine(), 8), 128);
8051+ // }
8052+ // }
8053+ //
8054+ // /**
8055+ // * DES
8056+ // */
8057+ // static public class DES_OFB8
8058+ // extends JCEStreamCipher
8059+ // {
8060+ // public DES_OFB8()
8061+ // {
8062+ // super(new OFBBlockCipher(new DESEngine(), 8), 64);
8063+ // }
8064+ // }
8065+ //
8066+ // /**
8067+ // * DESede
8068+ // */
8069+ // static public class DESede_OFB8
8070+ // extends JCEStreamCipher
8071+ // {
8072+ // public DESede_OFB8()
8073+ // {
8074+ // super(new OFBBlockCipher(new DESedeEngine(), 8), 64);
8075+ // }
8076+ // }
8077+ //
8078+ // /**
8079+ // * SKIPJACK
8080+ // */
8081+ // static public class Skipjack_OFB8
8082+ // extends JCEStreamCipher
8083+ // {
8084+ // public Skipjack_OFB8()
8085+ // {
8086+ // super(new OFBBlockCipher(new SkipjackEngine(), 8), 64);
8087+ // }
8088+ // }
8089+ //
8090+ // /**
8091+ // * Blowfish
8092+ // */
8093+ // static public class Blowfish_OFB8
8094+ // extends JCEStreamCipher
8095+ // {
8096+ // public Blowfish_OFB8()
8097+ // {
8098+ // super(new OFBBlockCipher(new BlowfishEngine(), 8), 64);
8099+ // }
8100+ // }
8101+ //
8102+ // /**
8103+ // * Twofish
8104+ // */
8105+ // static public class Twofish_OFB8
8106+ // extends JCEStreamCipher
8107+ // {
8108+ // public Twofish_OFB8()
8109+ // {
8110+ // super(new OFBBlockCipher(new TwofishEngine(), 8), 128);
8111+ // }
8112+ // }
8113+ // END android-removed
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008114 }
Kenny Root5db505e2013-12-11 16:35:05 -08008115diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCRLUtil.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCRLUtil.java
8116--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCRLUtil.java 2013-12-03 20:18:20.000000000 +0000
8117+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCRLUtil.java 2013-12-12 00:35:05.000000000 +0000
8118@@ -15,7 +15,9 @@
8119 import org.bouncycastle.util.StoreException;
8120 import org.bouncycastle.x509.ExtendedPKIXParameters;
8121 import org.bouncycastle.x509.X509CRLStoreSelector;
8122-import org.bouncycastle.x509.X509Store;
8123+// BEGIN android-removed
8124+// import org.bouncycastle.x509.X509Store;
8125+// END android-removed
8126
8127 public class PKIXCRLUtil
8128 {
8129@@ -114,22 +116,24 @@
8130 {
8131 Object obj = iter.next();
8132
8133- if (obj instanceof X509Store)
8134- {
8135- X509Store store = (X509Store)obj;
8136-
8137- try
8138- {
8139- crls.addAll(store.getMatches(crlSelect));
8140- foundValidStore = true;
8141- }
8142- catch (StoreException e)
8143- {
8144- lastException = new AnnotatedException(
8145- "Exception searching in X.509 CRL store.", e);
8146- }
8147- }
8148- else
8149+ // BEGIN android-removed
8150+ // if (obj instanceof X509Store)
8151+ // {
8152+ // X509Store store = (X509Store)obj;
8153+ //
8154+ // try
8155+ // {
8156+ // crls.addAll(store.getMatches(crlSelect));
8157+ // foundValidStore = true;
8158+ // }
8159+ // catch (StoreException e)
8160+ // {
8161+ // lastException = new AnnotatedException(
8162+ // "Exception searching in X.509 CRL store.", e);
8163+ // }
8164+ // }
8165+ // else
8166+ // END android-removed
8167 {
8168 CertStore store = (CertStore)obj;
8169
8170diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
8171--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2013-12-03 20:18:20.000000000 +0000
8172+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-09-17 23:04:47.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008173@@ -1,5 +1,8 @@
8174 package org.bouncycastle.jce.provider;
8175
8176+// BEGIN android-added
8177+import java.math.BigInteger;
8178+// END android-added
8179 import java.security.InvalidAlgorithmParameterException;
8180 import java.security.PublicKey;
8181 import java.security.cert.CertPath;
Kenny Root2a64eec2014-05-05 10:28:58 -07008182@@ -33,6 +36,11 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008183 public class PKIXCertPathValidatorSpi
8184 extends CertPathValidatorSpi
8185 {
8186+ // BEGIN android-added
Kenny Root2a64eec2014-05-05 10:28:58 -07008187+ private static class NoPreloadHolder {
8188+ private final static CertBlacklist blacklist = new CertBlacklist();
8189+ }
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008190+ // END android-added
8191
8192 public CertPathValidatorResult engineValidate(
8193 CertPath certPath,
Kenny Root2a64eec2014-05-05 10:28:58 -07008194@@ -75,6 +83,22 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008195 {
8196 throw new CertPathValidatorException("Certification path is empty.", null, certPath, 0);
8197 }
8198+ // BEGIN android-added
8199+ {
8200+ X509Certificate cert = (X509Certificate) certs.get(0);
8201+
8202+ if (cert != null) {
8203+ BigInteger serial = cert.getSerialNumber();
Kenny Root2a64eec2014-05-05 10:28:58 -07008204+ if (NoPreloadHolder.blacklist.isSerialNumberBlackListed(serial)) {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008205+ // emulate CRL exception message in RFC3280CertPathUtilities.checkCRLs
8206+ String message = "Certificate revocation of serial 0x" + serial.toString(16);
8207+ System.out.println(message);
8208+ AnnotatedException e = new AnnotatedException(message);
8209+ throw new CertPathValidatorException(e.getMessage(), e, certPath, 0);
8210+ }
8211+ }
8212+ }
8213+ // END android-added
8214
8215 //
8216 // (b)
Kenny Root2a64eec2014-05-05 10:28:58 -07008217@@ -251,6 +275,15 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008218
8219 for (index = certs.size() - 1; index >= 0; index--)
8220 {
8221+ // BEGIN android-added
Kenny Root2a64eec2014-05-05 10:28:58 -07008222+ if (NoPreloadHolder.blacklist.isPublicKeyBlackListed(workingPublicKey)) {
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008223+ // emulate CRL exception message in RFC3280CertPathUtilities.checkCRLs
8224+ String message = "Certificate revocation of public key " + workingPublicKey;
8225+ System.out.println(message);
8226+ AnnotatedException e = new AnnotatedException(message);
8227+ throw new CertPathValidatorException(e.getMessage(), e, certPath, index);
8228+ }
8229+ // END android-added
8230 // try
8231 // {
8232 //
Kenny Root5db505e2013-12-11 16:35:05 -08008233diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509CertificateObject.java
8234--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-12-03 20:18:20.000000000 +0000
8235+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-01-31 02:26:40.000000000 +0000
Brian Carlstrome1142c12013-01-30 18:26:40 -08008236@@ -57,6 +57,9 @@
8237 import org.bouncycastle.asn1.x509.Extensions;
8238 import org.bouncycastle.asn1.x509.GeneralName;
8239 import org.bouncycastle.asn1.x509.KeyUsage;
Kenny Root44021512013-01-07 10:41:42 -08008240+// BEGIN android-added
Brian Carlstrome1142c12013-01-30 18:26:40 -08008241+import org.bouncycastle.asn1.x509.X509Name;
Kenny Root44021512013-01-07 10:41:42 -08008242+// END android-added
Brian Carlstrome1142c12013-01-30 18:26:40 -08008243 import org.bouncycastle.jcajce.provider.asymmetric.util.PKCS12BagAttributeCarrierImpl;
8244 import org.bouncycastle.jce.X509Principal;
Kenny Root44021512013-01-07 10:41:42 -08008245 import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;
Brian Carlstrome1142c12013-01-30 18:26:40 -08008246@@ -562,12 +565,20 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008247 }
8248 }
8249
8250+ // BEGIN android-changed
8251+ private byte[] encoded;
8252+ // END android-changed
8253 public byte[] getEncoded()
8254 throws CertificateEncodingException
8255 {
8256 try
8257 {
8258- return c.getEncoded(ASN1Encoding.DER);
8259+ // BEGIN android-changed
8260+ if (encoded == null) {
8261+ encoded = c.getEncoded(ASN1Encoding.DER);
8262+ }
8263+ return encoded;
8264+ // END android-changed
8265 }
8266 catch (IOException e)
8267 {
Brian Carlstrome1142c12013-01-30 18:26:40 -08008268@@ -858,7 +869,9 @@
8269 list.add(genName.getEncoded());
8270 break;
8271 case GeneralName.directoryName:
8272- list.add(X500Name.getInstance(RFC4519Style.INSTANCE, genName.getName()).toString());
8273+ // BEGIN android-changed
8274+ list.add(X509Name.getInstance(genName.getName()).toString(true, X509Name.DefaultSymbols));
8275+ // END android-changed
8276 break;
8277 case GeneralName.dNSName:
8278 case GeneralName.rfc822Name:
Kenny Root5db505e2013-12-11 16:35:05 -08008279diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509SignatureUtil.java
8280--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-12-03 20:18:20.000000000 +0000
8281+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008282@@ -14,7 +14,9 @@
8283 import org.bouncycastle.asn1.ASN1Sequence;
8284 import org.bouncycastle.asn1.DERNull;
8285 import org.bouncycastle.asn1.DERObjectIdentifier;
8286-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
8287+// BEGIN android-removed
8288+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
8289+// END android-removed
8290 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
8291 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
8292 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
Brian Carlstrome1142c12013-01-30 18:26:40 -08008293@@ -66,12 +68,14 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008294
8295 if (params != null && !derNull.equals(params))
8296 {
8297- if (sigAlgId.getObjectId().equals(PKCSObjectIdentifiers.id_RSASSA_PSS))
8298- {
8299- RSASSAPSSparams rsaParams = RSASSAPSSparams.getInstance(params);
8300-
8301- return getDigestAlgName(rsaParams.getHashAlgorithm().getObjectId()) + "withRSAandMGF1";
8302- }
8303+ // BEGIN android-removed
8304+ // if (sigAlgId.getObjectId().equals(PKCSObjectIdentifiers.id_RSASSA_PSS))
8305+ // {
8306+ // RSASSAPSSparams rsaParams = RSASSAPSSparams.getInstance(params);
8307+ //
8308+ // return getDigestAlgName(rsaParams.getHashAlgorithm().getObjectId()) + "withRSAandMGF1";
8309+ // }
8310+ // END android-removed
8311 if (sigAlgId.getObjectId().equals(X9ObjectIdentifiers.ecdsa_with_SHA2))
8312 {
8313 ASN1Sequence ecDsaParams = ASN1Sequence.getInstance(params);
Kenny Root87490ac2013-09-26 11:06:21 -07008314@@ -114,22 +118,24 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008315 {
8316 return "SHA512";
8317 }
8318- else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
8319- {
8320- return "RIPEMD128";
8321- }
8322- else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
8323- {
8324- return "RIPEMD160";
8325- }
8326- else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
8327- {
8328- return "RIPEMD256";
8329- }
8330- else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
8331- {
8332- return "GOST3411";
8333- }
8334+ // BEGIN android-removed
8335+ // else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
8336+ // {
8337+ // return "RIPEMD128";
8338+ // }
8339+ // else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
8340+ // {
8341+ // return "RIPEMD160";
8342+ // }
8343+ // else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
8344+ // {
8345+ // return "RIPEMD256";
8346+ // }
8347+ // else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
8348+ // {
8349+ // return "GOST3411";
8350+ // }
8351+ // END android-removed
8352 else
8353 {
8354 return digestAlgOID.getId();
Kenny Root5db505e2013-12-11 16:35:05 -08008355diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk15on-150/org/bouncycastle/x509/X509Util.java
8356--- bcprov-jdk15on-150.orig/org/bouncycastle/x509/X509Util.java 2013-12-03 20:18:20.000000000 +0000
8357+++ bcprov-jdk15on-150/org/bouncycastle/x509/X509Util.java 2013-09-26 18:06:21.000000000 +0000
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008358@@ -25,12 +25,16 @@
8359 import org.bouncycastle.asn1.ASN1Integer;
8360 import org.bouncycastle.asn1.DERNull;
8361 import org.bouncycastle.asn1.DERObjectIdentifier;
8362-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
8363+// BEGIN android-removed
8364+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
8365+// END android-removed
8366 import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
8367 import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
8368 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
8369 import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
8370-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
8371+// BEGIN android-removed
8372+// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
8373+// END android-removed
8374 import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
8375 import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
8376 import org.bouncycastle.jce.X509Principal;
Kenny Root87490ac2013-09-26 11:06:21 -07008377@@ -44,8 +48,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008378
8379 static
8380 {
8381- algorithms.put("MD2WITHRSAENCRYPTION", PKCSObjectIdentifiers.md2WithRSAEncryption);
8382- algorithms.put("MD2WITHRSA", PKCSObjectIdentifiers.md2WithRSAEncryption);
8383+ // BEGIN android-removed
8384+ // algorithms.put("MD2WITHRSAENCRYPTION", PKCSObjectIdentifiers.md2WithRSAEncryption);
8385+ // algorithms.put("MD2WITHRSA", PKCSObjectIdentifiers.md2WithRSAEncryption);
8386+ // END android-removed
8387 algorithms.put("MD5WITHRSAENCRYPTION", PKCSObjectIdentifiers.md5WithRSAEncryption);
8388 algorithms.put("MD5WITHRSA", PKCSObjectIdentifiers.md5WithRSAEncryption);
8389 algorithms.put("SHA1WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha1WithRSAEncryption);
Kenny Root87490ac2013-09-26 11:06:21 -07008390@@ -63,12 +69,14 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008391 algorithms.put("SHA256WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS);
8392 algorithms.put("SHA384WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS);
8393 algorithms.put("SHA512WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS);
8394- algorithms.put("RIPEMD160WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
8395- algorithms.put("RIPEMD160WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
8396- algorithms.put("RIPEMD128WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
8397- algorithms.put("RIPEMD128WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
8398- algorithms.put("RIPEMD256WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
8399- algorithms.put("RIPEMD256WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
8400+ // BEGIN android-removed
8401+ // algorithms.put("RIPEMD160WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
8402+ // algorithms.put("RIPEMD160WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160);
8403+ // algorithms.put("RIPEMD128WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
8404+ // algorithms.put("RIPEMD128WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128);
8405+ // algorithms.put("RIPEMD256WITHRSAENCRYPTION", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
8406+ // algorithms.put("RIPEMD256WITHRSA", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256);
8407+ // END android-removed
8408 algorithms.put("SHA1WITHDSA", X9ObjectIdentifiers.id_dsa_with_sha1);
8409 algorithms.put("DSAWITHSHA1", X9ObjectIdentifiers.id_dsa_with_sha1);
Kenny Root87490ac2013-09-26 11:06:21 -07008410 algorithms.put("SHA224WITHDSA", NISTObjectIdentifiers.dsa_with_sha224);
8411@@ -81,11 +89,13 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008412 algorithms.put("SHA256WITHECDSA", X9ObjectIdentifiers.ecdsa_with_SHA256);
8413 algorithms.put("SHA384WITHECDSA", X9ObjectIdentifiers.ecdsa_with_SHA384);
8414 algorithms.put("SHA512WITHECDSA", X9ObjectIdentifiers.ecdsa_with_SHA512);
8415- algorithms.put("GOST3411WITHGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8416- algorithms.put("GOST3411WITHGOST3410-94", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8417- algorithms.put("GOST3411WITHECGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8418- algorithms.put("GOST3411WITHECGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8419- algorithms.put("GOST3411WITHGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8420+ // BEGIN android-removed
8421+ // algorithms.put("GOST3411WITHGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8422+ // algorithms.put("GOST3411WITHGOST3410-94", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8423+ // algorithms.put("GOST3411WITHECGOST3410", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8424+ // algorithms.put("GOST3411WITHECGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8425+ // algorithms.put("GOST3411WITHGOST3410-2001", CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8426+ // END android-removed
8427
8428 //
8429 // According to RFC 3279, the ASN.1 encoding SHALL (id-dsa-with-sha1) or MUST (ecdsa-with-SHA*) omit the parameters field.
Kenny Root87490ac2013-09-26 11:06:21 -07008430@@ -105,8 +115,10 @@
Brian Carlstrome6bf3e82012-09-17 16:04:47 -07008431 //
8432 // RFC 4491
8433 //
8434- noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8435- noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8436+ // BEGIN android-removed
8437+ // noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94);
8438+ // noParams.add(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001);
8439+ // END android-removed
8440
8441 //
8442 // explicit params