Track changes to JSSE

Bug: 8769295

(cherry picked from commit 0f9937b494fc6dd31fd04956963a3e258aece11b)

Change-Id: I8c8f1572c79adc48b0dbd44e5c889c4432dce56a
diff --git a/bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactory.java b/bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
index 3dc7059..b7bac28 100644
--- a/bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
+++ b/bcprov/src/main/java/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
@@ -34,15 +34,18 @@
         try {
             factoryImplementationClass = Class.forName(OpenSSLFactoryClassName);
             // Double check for NativeCrypto in case we are running on RI for testing
-            Class.forName("org.apache.harmony.xnet.provider.jsse.NativeCrypto");
+            Class.forName("com.android.org.conscrypt.NativeCrypto");
         } catch (ClassNotFoundException e1) {
             try {
                 factoryImplementationClass = Class.forName(BouncyCastleFactoryClassName);
             } catch (ClassNotFoundException e2) {
-                throw new AssertionError("Failed to load AndroidDigestFactoryInterface "
+                AssertionError e = new AssertionError("Failed to load "
+                                         + "AndroidDigestFactoryInterface "
                                          + "implementation. Looked for "
                                          + OpenSSLFactoryClassName + " and "
                                          + BouncyCastleFactoryClassName);
+                e.initCause(e1);
+                throw e;
             }
         }
         if (!AndroidDigestFactoryInterface.class.isAssignableFrom(factoryImplementationClass)) {
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index 7ea1ec9..e6e7f40 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -313,8 +313,8 @@
              }
 diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
 --- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactory.java	2012-09-17 23:04:47.000000000 +0000
-@@ -0,0 +1,80 @@
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactory.java	2013-05-01 01:48:41.000000000 +0000
+@@ -0,0 +1,83 @@
 +/*
 + * Copyright (C) 2012 The Android Open Source Project
 + *
@@ -351,15 +351,18 @@
 +        try {
 +            factoryImplementationClass = Class.forName(OpenSSLFactoryClassName);
 +            // Double check for NativeCrypto in case we are running on RI for testing
-+            Class.forName("org.apache.harmony.xnet.provider.jsse.NativeCrypto");
++            Class.forName("com.android.org.conscrypt.NativeCrypto");
 +        } catch (ClassNotFoundException e1) {
 +            try {
 +                factoryImplementationClass = Class.forName(BouncyCastleFactoryClassName);
 +            } catch (ClassNotFoundException e2) {
-+                throw new AssertionError("Failed to load AndroidDigestFactoryInterface "
++                AssertionError e = new AssertionError("Failed to load "
++                                         + "AndroidDigestFactoryInterface "
 +                                         + "implementation. Looked for "
 +                                         + OpenSSLFactoryClassName + " and "
 +                                         + BouncyCastleFactoryClassName);
++                e.initCause(e1);
++                throw e;
 +            }
 +        }
 +        if (!AndroidDigestFactoryInterface.class.isAssignableFrom(factoryImplementationClass)) {