Update mainline prebuilts to build 6410315.

Taken from branch aosp-master.

Change-Id: If52865e04d266e8e93e1f1bccb483336bfecbfc6
Merged-In: If52865e04d266e8e93e1f1bccb483336bfecbfc6
(cherry picked from commit d2deabab213487eb9a72dda66b84765c8e76f374)
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-arm.apex b/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
index 10fd39f..4107f23 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex b/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
index da69b8b..7503f21 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-x86.apex b/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
index cfb72b0..f928637 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex b/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
index 7cf1cc2..938019f 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
Binary files differ
diff --git a/mainline/conscrypt/sdk/Android.bp b/mainline/conscrypt/sdk/Android.bp
index 8143dca..1522466 100755
--- a/mainline/conscrypt/sdk/Android.bp
+++ b/mainline/conscrypt/sdk/Android.bp
@@ -1,65 +1,99 @@
 // This is auto-generated. DO NOT EDIT.
 
-java_import {
-    name: "conscrypt-module-sdk_conscrypt.module.intra.core.api.stubs@current",
-    sdk_member_name: "conscrypt.module.intra.core.api.stubs",
+java_sdk_library_import {
+    name: "conscrypt-module-sdk_conscrypt.module.public.api@current",
+    sdk_member_name: "conscrypt.module.public.api",
+    visibility: [
+        "//frameworks/base:__pkg__",
+        "//libcore:__pkg__",
+    ],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.public.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.public.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.public.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.public.api-removed.txt",
+        sdk_version: "current",
+    },
+}
+
+java_sdk_library_import {
+    name: "conscrypt.module.public.api",
+    prefer: false,
+    visibility: [
+        "//frameworks/base:__pkg__",
+        "//libcore:__pkg__",
+    ],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.public.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.public.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.public.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.public.api-removed.txt",
+        sdk_version: "current",
+    },
+}
+
+java_sdk_library_import {
+    name: "conscrypt-module-sdk_conscrypt.module.intra.core.api@current",
+    sdk_member_name: "conscrypt.module.intra.core.api",
     visibility: [
         "//external/okhttp:__pkg__",
         "//libcore:__subpackages__",
     ],
-    apex_available: [
-        "com.android.art.debug",
-        "com.android.art.release",
-    ],
-    jars: ["java/conscrypt.module.intra.core.api.stubs.jar"],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.intra.core.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.intra.core.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.intra.core.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.intra.core.api-removed.txt",
+        sdk_version: "current",
+    },
 }
 
-java_import {
-    name: "conscrypt.module.intra.core.api.stubs",
+java_sdk_library_import {
+    name: "conscrypt.module.intra.core.api",
     prefer: false,
     visibility: [
         "//external/okhttp:__pkg__",
         "//libcore:__subpackages__",
     ],
-    apex_available: [
-        "com.android.art.debug",
-        "com.android.art.release",
-    ],
-    jars: ["java/conscrypt.module.intra.core.api.stubs.jar"],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.intra.core.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.intra.core.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.intra.core.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.intra.core.api-removed.txt",
+        sdk_version: "current",
+    },
 }
 
-java_import {
-    name: "conscrypt-module-sdk_conscrypt.module.platform.api.stubs@current",
-    sdk_member_name: "conscrypt.module.platform.api.stubs",
+java_sdk_library_import {
+    name: "conscrypt-module-sdk_conscrypt.module.platform.api@current",
+    sdk_member_name: "conscrypt.module.platform.api",
     visibility: [
         "//external/wycheproof:__pkg__",
         "//libcore:__subpackages__",
     ],
-    jars: ["java/conscrypt.module.platform.api.stubs.jar"],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.platform.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.platform.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.platform.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.platform.api-removed.txt",
+        sdk_version: "current",
+    },
 }
 
-java_import {
-    name: "conscrypt.module.platform.api.stubs",
+java_sdk_library_import {
+    name: "conscrypt.module.platform.api",
     prefer: false,
     visibility: [
         "//external/wycheproof:__pkg__",
         "//libcore:__subpackages__",
     ],
-    jars: ["java/conscrypt.module.platform.api.stubs.jar"],
-}
-
-java_import {
-    name: "conscrypt-module-sdk_conscrypt.module.public.api.stubs@current",
-    sdk_member_name: "conscrypt.module.public.api.stubs",
-    visibility: ["//libcore:__pkg__"],
-    jars: ["java/conscrypt.module.public.api.stubs.jar"],
-}
-
-java_import {
-    name: "conscrypt.module.public.api.stubs",
-    prefer: false,
-    visibility: ["//libcore:__pkg__"],
-    jars: ["java/conscrypt.module.public.api.stubs.jar"],
+    public: {
+        jars: ["sdk_library/public/conscrypt.module.platform.api-stubs.jar"],
+        stub_srcs: ["sdk_library/public/conscrypt.module.platform.api_stub_sources"],
+        current_api: "sdk_library/public/conscrypt.module.platform.api.txt",
+        removed_api: "sdk_library/public/conscrypt.module.platform.api-removed.txt",
+        sdk_version: "current",
+    },
 }
 
 cc_prebuilt_library_shared {
@@ -67,7 +101,6 @@
     sdk_member_name: "libconscrypt_jni",
     visibility: ["//external/conscrypt:__subpackages__"],
     installable: false,
-    sdk_version: "21",
     stl: "c++_static",
     shared_libs: ["liblog"],
     arch: {
@@ -90,7 +123,6 @@
     name: "libconscrypt_jni",
     prefer: false,
     visibility: ["//external/conscrypt:__subpackages__"],
-    sdk_version: "21",
     stl: "c++_static",
     shared_libs: ["liblog"],
     arch: {
@@ -109,29 +141,14 @@
     },
 }
 
-prebuilt_stubs_sources {
-    name: "conscrypt-module-sdk_conscrypt-module-public-api-stubs-source@current",
-    sdk_member_name: "conscrypt-module-public-api-stubs-source",
-    visibility: ["//frameworks/base:__pkg__"],
-    srcs: ["java/conscrypt-module-public-api-stubs-source_stubs_sources"],
-}
-
-prebuilt_stubs_sources {
-    name: "conscrypt-module-public-api-stubs-source",
-    prefer: false,
-    visibility: ["//frameworks/base:__pkg__"],
-    srcs: ["java/conscrypt-module-public-api-stubs-source_stubs_sources"],
-}
-
 sdk_snapshot {
     name: "conscrypt-module-sdk@current",
     visibility: ["//external/conscrypt:__subpackages__"],
-    java_header_libs: [
-        "conscrypt-module-sdk_conscrypt.module.intra.core.api.stubs@current",
-        "conscrypt-module-sdk_conscrypt.module.platform.api.stubs@current",
-        "conscrypt-module-sdk_conscrypt.module.public.api.stubs@current",
+    java_sdk_libs: [
+        "conscrypt-module-sdk_conscrypt.module.public.api@current",
+        "conscrypt-module-sdk_conscrypt.module.intra.core.api@current",
+        "conscrypt-module-sdk_conscrypt.module.platform.api@current",
     ],
     native_shared_libs: ["conscrypt-module-sdk_libconscrypt_jni@current"],
-    stubs_sources: ["conscrypt-module-sdk_conscrypt-module-public-api-stubs-source@current"],
 }
 
diff --git a/mainline/conscrypt/sdk/conscrypt-module-sdk-current.zip b/mainline/conscrypt/sdk/conscrypt-module-sdk-current.zip
index 1c73c35..e2d600b 100644
--- a/mainline/conscrypt/sdk/conscrypt-module-sdk-current.zip
+++ b/mainline/conscrypt/sdk/conscrypt-module-sdk-current.zip
Binary files differ
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-removed.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-removed.txt
new file mode 100644
index 0000000..6fce26f
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-removed.txt
@@ -0,0 +1,40 @@
+// Signature format: 2.0
+package com.android.org.conscrypt {
+
+  public class OpenSSLMessageDigestJDK extends java.security.MessageDigestSpi implements java.lang.Cloneable {
+  }
+
+  public static final class OpenSSLMessageDigestJDK.MD5 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.MD5() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA1 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA1() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA224 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA224() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA256 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA256() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA384 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA384() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA512 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA512() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public final class OpenSSLProvider extends java.security.Provider {
+    ctor public OpenSSLProvider();
+  }
+
+  public final class OpenSSLRandom extends java.security.SecureRandomSpi implements java.io.Serializable {
+    ctor public OpenSSLRandom();
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-stubs.jar b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-stubs.jar
new file mode 100644
index 0000000..cbbef7c
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api-stubs.jar
Binary files differ
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api.txt
new file mode 100644
index 0000000..6fce26f
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api.txt
@@ -0,0 +1,40 @@
+// Signature format: 2.0
+package com.android.org.conscrypt {
+
+  public class OpenSSLMessageDigestJDK extends java.security.MessageDigestSpi implements java.lang.Cloneable {
+  }
+
+  public static final class OpenSSLMessageDigestJDK.MD5 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.MD5() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA1 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA1() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA224 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA224() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA256 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA256() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA384 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA384() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public static final class OpenSSLMessageDigestJDK.SHA512 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+    ctor public OpenSSLMessageDigestJDK.SHA512() throws java.security.NoSuchAlgorithmException;
+  }
+
+  public final class OpenSSLProvider extends java.security.Provider {
+    ctor public OpenSSLProvider();
+  }
+
+  public final class OpenSSLRandom extends java.security.SecureRandomSpi implements java.io.Serializable {
+    ctor public OpenSSLRandom();
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLEngines.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLEngines.java
new file mode 100644
index 0000000..feae766
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLEngines.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.net.ssl;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class SSLEngines {
+
+private SSLEngines() { throw new RuntimeException("Stub!"); }
+
+public static boolean isSupportedEngine(javax.net.ssl.SSLEngine engine) { throw new RuntimeException("Stub!"); }
+
+public static void setUseSessionTickets(javax.net.ssl.SSLEngine engine, boolean useSessionTickets) { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLSockets.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLSockets.java
new file mode 100644
index 0000000..493ce8e
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/android/net/ssl/SSLSockets.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.net.ssl;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class SSLSockets {
+
+private SSLSockets() { throw new RuntimeException("Stub!"); }
+
+public static boolean isSupportedSocket(javax.net.ssl.SSLSocket socket) { throw new RuntimeException("Stub!"); }
+
+public static void setUseSessionTickets(javax.net.ssl.SSLSocket socket, boolean useSessionTickets) { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLMessageDigestJDK.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLMessageDigestJDK.java
new file mode 100644
index 0000000..5a99945
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLMessageDigestJDK.java
@@ -0,0 +1,76 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class OpenSSLMessageDigestJDK extends java.security.MessageDigestSpi implements java.lang.Cloneable {
+
+private OpenSSLMessageDigestJDK() { throw new RuntimeException("Stub!"); }
+
+protected synchronized void engineReset() { throw new RuntimeException("Stub!"); }
+
+protected int engineGetDigestLength() { throw new RuntimeException("Stub!"); }
+
+protected synchronized void engineUpdate(byte input) { throw new RuntimeException("Stub!"); }
+
+protected synchronized void engineUpdate(byte[] input, int offset, int len) { throw new RuntimeException("Stub!"); }
+
+protected synchronized void engineUpdate(java.nio.ByteBuffer input) { throw new RuntimeException("Stub!"); }
+
+protected synchronized byte[] engineDigest() { throw new RuntimeException("Stub!"); }
+
+public java.lang.Object clone() { throw new RuntimeException("Stub!"); }
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class MD5 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public MD5() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class SHA1 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public SHA1() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class SHA224 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public SHA224() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class SHA256 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public SHA256() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class SHA384 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public SHA384() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public static final class SHA512 extends com.android.org.conscrypt.OpenSSLMessageDigestJDK {
+
+public SHA512() throws java.security.NoSuchAlgorithmException { throw new RuntimeException("Stub!"); }
+}
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java
new file mode 100644
index 0000000..0794837
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java
@@ -0,0 +1,26 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class OpenSSLProvider extends java.security.Provider {
+
+public OpenSSLProvider() { super(null, (double)0, null); throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLRandom.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLRandom.java
new file mode 100644
index 0000000..363db56
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.intra.core.api_stub_sources/com/android/org/conscrypt/OpenSSLRandom.java
@@ -0,0 +1,32 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class OpenSSLRandom extends java.security.SecureRandomSpi implements java.io.Serializable {
+
+public OpenSSLRandom() { throw new RuntimeException("Stub!"); }
+
+protected void engineSetSeed(byte[] seed) { throw new RuntimeException("Stub!"); }
+
+protected void engineNextBytes(byte[] bytes) { throw new RuntimeException("Stub!"); }
+
+protected byte[] engineGenerateSeed(int numBytes) { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-removed.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-removed.txt
new file mode 100644
index 0000000..b645383
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-removed.txt
@@ -0,0 +1,100 @@
+// Signature format: 2.0
+package com.android.org.conscrypt {
+
+  public interface CertPinManager {
+  }
+
+  public final class ClientSessionContext implements javax.net.ssl.SSLSessionContext {
+    method public final java.util.Enumeration<byte[]> getIds();
+    method public final javax.net.ssl.SSLSession getSession(byte[]);
+    method public final int getSessionCacheSize();
+    method public final int getSessionTimeout();
+    method public void setPersistentCache(com.android.org.conscrypt.SSLClientSessionCache);
+    method public final void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
+    method public final void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public final class Conscrypt {
+    method public static javax.net.ssl.X509TrustManager getDefaultX509TrustManager() throws java.security.KeyManagementException;
+  }
+
+  public interface ConscryptCertStore {
+  }
+
+  public final class FileClientSessionCache {
+    method public static com.android.org.conscrypt.SSLClientSessionCache usingDirectory(java.io.File) throws java.io.IOException;
+  }
+
+  public final class OpenSSLProvider extends java.security.Provider {
+    ctor public OpenSSLProvider();
+  }
+
+  public abstract class OpenSSLSocketImpl extends javax.net.ssl.SSLSocket {
+    method public void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public final void connect(java.net.SocketAddress) throws java.io.IOException;
+    method public final void connect(java.net.SocketAddress, int) throws java.io.IOException;
+    method @Deprecated public final byte[] getAlpnSelectedProtocol();
+    method @Deprecated public final byte[] getNpnSelectedProtocol();
+    method public final int getPort();
+    method public final int getSoTimeout() throws java.net.SocketException;
+    method public void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public final void sendUrgentData(int) throws java.io.IOException;
+    method @Deprecated public final void setAlpnProtocols(byte[]);
+    method public abstract void setChannelIdPrivateKey(java.security.PrivateKey);
+    method public void setHandshakeTimeout(int) throws java.net.SocketException;
+    method public void setHostname(String);
+    method @Deprecated public final void setNpnProtocols(byte[]);
+    method public final void setOOBInline(boolean) throws java.net.SocketException;
+    method public final void setSoTimeout(int) throws java.net.SocketException;
+    method public void setSoWriteTimeout(int) throws java.net.SocketException;
+    method public abstract void setUseSessionTickets(boolean);
+  }
+
+  public interface SSLClientSessionCache {
+  }
+
+  public final class TrustManagerImpl extends javax.net.ssl.X509ExtendedTrustManager {
+    ctor public TrustManagerImpl(java.security.KeyStore);
+    ctor public TrustManagerImpl(java.security.KeyStore, com.android.org.conscrypt.CertPinManager, com.android.org.conscrypt.ConscryptCertStore);
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+    method public void handleTrustStorageUpdate();
+  }
+
+  public final class TrustedCertificateIndex {
+    ctor public TrustedCertificateIndex();
+    method public java.util.Set<java.security.cert.TrustAnchor> findAllByIssuerAndSignature(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor findByIssuerAndSignature(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor findBySubjectAndPublicKey(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor index(java.security.cert.X509Certificate);
+  }
+
+  public class TrustedCertificateStore implements com.android.org.conscrypt.ConscryptCertStore {
+    ctor public TrustedCertificateStore();
+    method public java.util.Set<java.lang.String> aliases();
+    method public java.util.Set<java.lang.String> allSystemAliases();
+    method public boolean containsAlias(String);
+    method public void deleteCertificateEntry(String) throws java.security.cert.CertificateException, java.io.IOException;
+    method public java.util.Set<java.security.cert.X509Certificate> findAllIssuers(java.security.cert.X509Certificate);
+    method public java.security.cert.X509Certificate findIssuer(java.security.cert.X509Certificate);
+    method public java.security.cert.Certificate getCertificate(String);
+    method public java.security.cert.Certificate getCertificate(String, boolean);
+    method public String getCertificateAlias(java.security.cert.Certificate);
+    method public String getCertificateAlias(java.security.cert.Certificate, boolean);
+    method public java.util.List<java.security.cert.X509Certificate> getCertificateChain(java.security.cert.X509Certificate) throws java.security.cert.CertificateException;
+    method public java.io.File getCertificateFile(java.io.File, java.security.cert.X509Certificate);
+    method public java.util.Date getCreationDate(String);
+    method public java.security.cert.X509Certificate getTrustAnchor(java.security.cert.X509Certificate);
+    method public void installCertificate(java.security.cert.X509Certificate) throws java.security.cert.CertificateException, java.io.IOException;
+    method public static final boolean isUser(String);
+    method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
+    method public static void setDefaultUserDirectory(java.io.File);
+    method public java.util.Set<java.lang.String> userAliases();
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-stubs.jar b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-stubs.jar
new file mode 100644
index 0000000..4911047
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api-stubs.jar
Binary files differ
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api.txt
new file mode 100644
index 0000000..b645383
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api.txt
@@ -0,0 +1,100 @@
+// Signature format: 2.0
+package com.android.org.conscrypt {
+
+  public interface CertPinManager {
+  }
+
+  public final class ClientSessionContext implements javax.net.ssl.SSLSessionContext {
+    method public final java.util.Enumeration<byte[]> getIds();
+    method public final javax.net.ssl.SSLSession getSession(byte[]);
+    method public final int getSessionCacheSize();
+    method public final int getSessionTimeout();
+    method public void setPersistentCache(com.android.org.conscrypt.SSLClientSessionCache);
+    method public final void setSessionCacheSize(int) throws java.lang.IllegalArgumentException;
+    method public final void setSessionTimeout(int) throws java.lang.IllegalArgumentException;
+  }
+
+  public final class Conscrypt {
+    method public static javax.net.ssl.X509TrustManager getDefaultX509TrustManager() throws java.security.KeyManagementException;
+  }
+
+  public interface ConscryptCertStore {
+  }
+
+  public final class FileClientSessionCache {
+    method public static com.android.org.conscrypt.SSLClientSessionCache usingDirectory(java.io.File) throws java.io.IOException;
+  }
+
+  public final class OpenSSLProvider extends java.security.Provider {
+    ctor public OpenSSLProvider();
+  }
+
+  public abstract class OpenSSLSocketImpl extends javax.net.ssl.SSLSocket {
+    method public void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public final void connect(java.net.SocketAddress) throws java.io.IOException;
+    method public final void connect(java.net.SocketAddress, int) throws java.io.IOException;
+    method @Deprecated public final byte[] getAlpnSelectedProtocol();
+    method @Deprecated public final byte[] getNpnSelectedProtocol();
+    method public final int getPort();
+    method public final int getSoTimeout() throws java.net.SocketException;
+    method public void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener);
+    method public final void sendUrgentData(int) throws java.io.IOException;
+    method @Deprecated public final void setAlpnProtocols(byte[]);
+    method public abstract void setChannelIdPrivateKey(java.security.PrivateKey);
+    method public void setHandshakeTimeout(int) throws java.net.SocketException;
+    method public void setHostname(String);
+    method @Deprecated public final void setNpnProtocols(byte[]);
+    method public final void setOOBInline(boolean) throws java.net.SocketException;
+    method public final void setSoTimeout(int) throws java.net.SocketException;
+    method public void setSoWriteTimeout(int) throws java.net.SocketException;
+    method public abstract void setUseSessionTickets(boolean);
+  }
+
+  public interface SSLClientSessionCache {
+  }
+
+  public final class TrustManagerImpl extends javax.net.ssl.X509ExtendedTrustManager {
+    ctor public TrustManagerImpl(java.security.KeyStore);
+    ctor public TrustManagerImpl(java.security.KeyStore, com.android.org.conscrypt.CertPinManager, com.android.org.conscrypt.ConscryptCertStore);
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String) throws java.security.cert.CertificateException;
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public void checkClientTrusted(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[], String, String) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[], String, java.net.Socket) throws java.security.cert.CertificateException;
+    method public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[], String, javax.net.ssl.SSLEngine) throws java.security.cert.CertificateException;
+    method public void handleTrustStorageUpdate();
+  }
+
+  public final class TrustedCertificateIndex {
+    ctor public TrustedCertificateIndex();
+    method public java.util.Set<java.security.cert.TrustAnchor> findAllByIssuerAndSignature(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor findByIssuerAndSignature(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor findBySubjectAndPublicKey(java.security.cert.X509Certificate);
+    method public java.security.cert.TrustAnchor index(java.security.cert.X509Certificate);
+  }
+
+  public class TrustedCertificateStore implements com.android.org.conscrypt.ConscryptCertStore {
+    ctor public TrustedCertificateStore();
+    method public java.util.Set<java.lang.String> aliases();
+    method public java.util.Set<java.lang.String> allSystemAliases();
+    method public boolean containsAlias(String);
+    method public void deleteCertificateEntry(String) throws java.security.cert.CertificateException, java.io.IOException;
+    method public java.util.Set<java.security.cert.X509Certificate> findAllIssuers(java.security.cert.X509Certificate);
+    method public java.security.cert.X509Certificate findIssuer(java.security.cert.X509Certificate);
+    method public java.security.cert.Certificate getCertificate(String);
+    method public java.security.cert.Certificate getCertificate(String, boolean);
+    method public String getCertificateAlias(java.security.cert.Certificate);
+    method public String getCertificateAlias(java.security.cert.Certificate, boolean);
+    method public java.util.List<java.security.cert.X509Certificate> getCertificateChain(java.security.cert.X509Certificate) throws java.security.cert.CertificateException;
+    method public java.io.File getCertificateFile(java.io.File, java.security.cert.X509Certificate);
+    method public java.util.Date getCreationDate(String);
+    method public java.security.cert.X509Certificate getTrustAnchor(java.security.cert.X509Certificate);
+    method public void installCertificate(java.security.cert.X509Certificate) throws java.security.cert.CertificateException, java.io.IOException;
+    method public static final boolean isUser(String);
+    method public boolean isUserAddedCertificate(java.security.cert.X509Certificate);
+    method public static void setDefaultUserDirectory(java.io.File);
+    method public java.util.Set<java.lang.String> userAliases();
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/CertPinManager.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/CertPinManager.java
new file mode 100644
index 0000000..f35d459
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/CertPinManager.java
@@ -0,0 +1,24 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public interface CertPinManager {
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ClientSessionContext.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ClientSessionContext.java
new file mode 100644
index 0000000..d86da4b
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ClientSessionContext.java
@@ -0,0 +1,40 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class ClientSessionContext implements javax.net.ssl.SSLSessionContext {
+
+ClientSessionContext() { throw new RuntimeException("Stub!"); }
+
+public void setPersistentCache(com.android.org.conscrypt.SSLClientSessionCache persistentCache) { throw new RuntimeException("Stub!"); }
+
+public final void setSessionTimeout(int seconds) throws java.lang.IllegalArgumentException { throw new RuntimeException("Stub!"); }
+
+public final int getSessionCacheSize() { throw new RuntimeException("Stub!"); }
+
+public final int getSessionTimeout() { throw new RuntimeException("Stub!"); }
+
+public final java.util.Enumeration<byte[]> getIds() { throw new RuntimeException("Stub!"); }
+
+public final javax.net.ssl.SSLSession getSession(byte[] sessionId) { throw new RuntimeException("Stub!"); }
+
+public final void setSessionCacheSize(int size) throws java.lang.IllegalArgumentException { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/Conscrypt.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/Conscrypt.java
new file mode 100644
index 0000000..5fb577e
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/Conscrypt.java
@@ -0,0 +1,27 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class Conscrypt {
+
+private Conscrypt() { throw new RuntimeException("Stub!"); }
+
+public static javax.net.ssl.X509TrustManager getDefaultX509TrustManager() throws java.security.KeyManagementException { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ConscryptCertStore.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ConscryptCertStore.java
new file mode 100644
index 0000000..e6e95fb
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/ConscryptCertStore.java
@@ -0,0 +1,24 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public interface ConscryptCertStore {
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/FileClientSessionCache.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/FileClientSessionCache.java
new file mode 100644
index 0000000..5e640f3
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/FileClientSessionCache.java
@@ -0,0 +1,28 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class FileClientSessionCache {
+
+private FileClientSessionCache() { throw new RuntimeException("Stub!"); }
+
+public static synchronized com.android.org.conscrypt.SSLClientSessionCache usingDirectory(java.io.File directory) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java
new file mode 100644
index 0000000..0794837
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLProvider.java
@@ -0,0 +1,26 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class OpenSSLProvider extends java.security.Provider {
+
+public OpenSSLProvider() { super(null, (double)0, null); throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLSocketImpl.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLSocketImpl.java
new file mode 100644
index 0000000..397795c
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/OpenSSLSocketImpl.java
@@ -0,0 +1,138 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public abstract class OpenSSLSocketImpl extends javax.net.ssl.SSLSocket {
+
+OpenSSLSocketImpl() { throw new RuntimeException("Stub!"); }
+
+public void setHostname(java.lang.String hostname) { throw new RuntimeException("Stub!"); }
+
+public java.io.FileDescriptor getFileDescriptor$() { throw new RuntimeException("Stub!"); }
+
+public void setSoWriteTimeout(int writeTimeoutMilliseconds) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public void setHandshakeTimeout(int handshakeTimeoutMilliseconds) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public abstract javax.net.ssl.SSLSession getHandshakeSession();
+
+public abstract void setUseSessionTickets(boolean useSessionTickets);
+
+public abstract void setChannelIdPrivateKey(java.security.PrivateKey privateKey);
+
+@Deprecated
+public final byte[] getNpnSelectedProtocol() { throw new RuntimeException("Stub!"); }
+
+@Deprecated
+public final void setNpnProtocols(byte[] npnProtocols) { throw new RuntimeException("Stub!"); }
+
+@Deprecated
+public final byte[] getAlpnSelectedProtocol() { throw new RuntimeException("Stub!"); }
+
+@Deprecated
+public final void setAlpnProtocols(byte[] protocols) { throw new RuntimeException("Stub!"); }
+
+public java.net.InetAddress getInetAddress() { throw new RuntimeException("Stub!"); }
+
+public boolean getOOBInline() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public int getLocalPort() { throw new RuntimeException("Stub!"); }
+
+public void setReceiveBufferSize(int size) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public boolean isInputShutdown() { throw new RuntimeException("Stub!"); }
+
+public void removeHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener listener) { throw new RuntimeException("Stub!"); }
+
+public void setTcpNoDelay(boolean on) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public boolean isConnected() { throw new RuntimeException("Stub!"); }
+
+public boolean getKeepAlive() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public java.net.InetAddress getLocalAddress() { throw new RuntimeException("Stub!"); }
+
+public void bind(java.net.SocketAddress bindpoint) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public java.nio.channels.SocketChannel getChannel() { throw new RuntimeException("Stub!"); }
+
+public int getSoLinger() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public boolean getTcpNoDelay() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public void setSoLinger(boolean on, int linger) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public final int getSoTimeout() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public boolean isOutputShutdown() { throw new RuntimeException("Stub!"); }
+
+public void close() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public final void connect(java.net.SocketAddress endpoint) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public final void connect(java.net.SocketAddress endpoint, int timeout) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public void setTrafficClass(int tc) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public final void setOOBInline(boolean on) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public java.net.SocketAddress getLocalSocketAddress() { throw new RuntimeException("Stub!"); }
+
+public int getReceiveBufferSize() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public void setReuseAddress(boolean on) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public void addHandshakeCompletedListener(javax.net.ssl.HandshakeCompletedListener listener) { throw new RuntimeException("Stub!"); }
+
+public int getTrafficClass() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public boolean getReuseAddress() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public final void setSoTimeout(int readTimeoutMilliseconds) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public void setKeepAlive(boolean on) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public java.io.InputStream getInputStream() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public void shutdownOutput() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public void shutdownInput() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { throw new RuntimeException("Stub!"); }
+
+public final int getPort() { throw new RuntimeException("Stub!"); }
+
+public final void sendUrgentData(int data) throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public boolean isClosed() { throw new RuntimeException("Stub!"); }
+
+public boolean isBound() { throw new RuntimeException("Stub!"); }
+
+public void setSendBufferSize(int size) throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public int getSendBufferSize() throws java.net.SocketException { throw new RuntimeException("Stub!"); }
+
+public java.io.OutputStream getOutputStream() throws java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public java.lang.String toString() { throw new RuntimeException("Stub!"); }
+
+public java.net.SocketAddress getRemoteSocketAddress() { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/SSLClientSessionCache.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/SSLClientSessionCache.java
new file mode 100644
index 0000000..b85b477
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/SSLClientSessionCache.java
@@ -0,0 +1,24 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public interface SSLClientSessionCache {
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustManagerImpl.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustManagerImpl.java
new file mode 100644
index 0000000..60d4703
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustManagerImpl.java
@@ -0,0 +1,68 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// License from Apache Harmony:
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class TrustManagerImpl extends javax.net.ssl.X509ExtendedTrustManager {
+
+public TrustManagerImpl(java.security.KeyStore keyStore) { throw new RuntimeException("Stub!"); }
+
+public TrustManagerImpl(java.security.KeyStore keyStore, com.android.org.conscrypt.CertPinManager manager, com.android.org.conscrypt.ConscryptCertStore certStore) { throw new RuntimeException("Stub!"); }
+
+public void checkClientTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void checkClientTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType, java.net.Socket socket) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void checkClientTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType, javax.net.ssl.SSLEngine engine) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void checkServerTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public java.util.List<java.security.cert.X509Certificate> checkServerTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType, java.lang.String hostname) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[] certs, java.lang.String authType, java.net.Socket socket) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public java.util.List<java.security.cert.X509Certificate> getTrustedChainForServer(java.security.cert.X509Certificate[] certs, java.lang.String authType, javax.net.ssl.SSLEngine engine) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void checkServerTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType, java.net.Socket socket) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void checkServerTrusted(java.security.cert.X509Certificate[] chain, java.lang.String authType, javax.net.ssl.SSLEngine engine) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void handleTrustStorageUpdate() { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.X509Certificate[] getAcceptedIssuers() { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateIndex.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateIndex.java
new file mode 100644
index 0000000..3d7afe9
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateIndex.java
@@ -0,0 +1,34 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public final class TrustedCertificateIndex {
+
+public TrustedCertificateIndex() { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.TrustAnchor index(java.security.cert.X509Certificate cert) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.TrustAnchor findByIssuerAndSignature(java.security.cert.X509Certificate cert) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.TrustAnchor findBySubjectAndPublicKey(java.security.cert.X509Certificate cert) { throw new RuntimeException("Stub!"); }
+
+public java.util.Set<java.security.cert.TrustAnchor> findAllByIssuerAndSignature(java.security.cert.X509Certificate cert) { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateStore.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateStore.java
new file mode 100644
index 0000000..675ee03
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.platform.api_stub_sources/com/android/org/conscrypt/TrustedCertificateStore.java
@@ -0,0 +1,64 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package com.android.org.conscrypt;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class TrustedCertificateStore implements com.android.org.conscrypt.ConscryptCertStore {
+
+public TrustedCertificateStore() { throw new RuntimeException("Stub!"); }
+
+public static final boolean isUser(java.lang.String alias) { throw new RuntimeException("Stub!"); }
+
+public static void setDefaultUserDirectory(java.io.File root) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.Certificate getCertificate(java.lang.String alias) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.Certificate getCertificate(java.lang.String alias, boolean includeDeletedSystem) { throw new RuntimeException("Stub!"); }
+
+public java.util.Date getCreationDate(java.lang.String alias) { throw new RuntimeException("Stub!"); }
+
+public java.util.Set<java.lang.String> aliases() { throw new RuntimeException("Stub!"); }
+
+public java.util.Set<java.lang.String> userAliases() { throw new RuntimeException("Stub!"); }
+
+public java.util.Set<java.lang.String> allSystemAliases() { throw new RuntimeException("Stub!"); }
+
+public boolean containsAlias(java.lang.String alias) { throw new RuntimeException("Stub!"); }
+
+public java.lang.String getCertificateAlias(java.security.cert.Certificate c) { throw new RuntimeException("Stub!"); }
+
+public java.lang.String getCertificateAlias(java.security.cert.Certificate c, boolean includeDeletedSystem) { throw new RuntimeException("Stub!"); }
+
+public boolean isUserAddedCertificate(java.security.cert.X509Certificate cert) { throw new RuntimeException("Stub!"); }
+
+public java.io.File getCertificateFile(java.io.File dir, java.security.cert.X509Certificate x) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.X509Certificate getTrustAnchor(java.security.cert.X509Certificate c) { throw new RuntimeException("Stub!"); }
+
+public java.security.cert.X509Certificate findIssuer(java.security.cert.X509Certificate c) { throw new RuntimeException("Stub!"); }
+
+public java.util.Set<java.security.cert.X509Certificate> findAllIssuers(java.security.cert.X509Certificate c) { throw new RuntimeException("Stub!"); }
+
+public java.util.List<java.security.cert.X509Certificate> getCertificateChain(java.security.cert.X509Certificate leaf) throws java.security.cert.CertificateException { throw new RuntimeException("Stub!"); }
+
+public void installCertificate(java.security.cert.X509Certificate cert) throws java.security.cert.CertificateException, java.io.IOException { throw new RuntimeException("Stub!"); }
+
+public void deleteCertificateEntry(java.lang.String alias) throws java.security.cert.CertificateException, java.io.IOException { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-removed.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-removed.txt
new file mode 100644
index 0000000..fb4a405
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-removed.txt
@@ -0,0 +1,15 @@
+// Signature format: 2.0
+package android.net.ssl {
+
+  public class SSLEngines {
+    method public static boolean isSupportedEngine(@NonNull javax.net.ssl.SSLEngine);
+    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLEngine, boolean);
+  }
+
+  public class SSLSockets {
+    method public static boolean isSupportedSocket(@NonNull javax.net.ssl.SSLSocket);
+    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLSocket, boolean);
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-stubs.jar b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-stubs.jar
new file mode 100644
index 0000000..05ce20b
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api-stubs.jar
Binary files differ
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api.txt b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api.txt
new file mode 100644
index 0000000..fb4a405
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api.txt
@@ -0,0 +1,15 @@
+// Signature format: 2.0
+package android.net.ssl {
+
+  public class SSLEngines {
+    method public static boolean isSupportedEngine(@NonNull javax.net.ssl.SSLEngine);
+    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLEngine, boolean);
+  }
+
+  public class SSLSockets {
+    method public static boolean isSupportedSocket(@NonNull javax.net.ssl.SSLSocket);
+    method public static void setUseSessionTickets(@NonNull javax.net.ssl.SSLSocket, boolean);
+  }
+
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLEngines.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLEngines.java
new file mode 100644
index 0000000..bcbe85d
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLEngines.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.net.ssl;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class SSLEngines {
+
+private SSLEngines() { throw new RuntimeException("Stub!"); }
+
+public static boolean isSupportedEngine(@android.annotation.NonNull javax.net.ssl.SSLEngine engine) { throw new RuntimeException("Stub!"); }
+
+public static void setUseSessionTickets(@android.annotation.NonNull javax.net.ssl.SSLEngine engine, boolean useSessionTickets) { throw new RuntimeException("Stub!"); }
+}
+
diff --git a/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLSockets.java b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLSockets.java
new file mode 100644
index 0000000..cc0347c
--- /dev/null
+++ b/mainline/conscrypt/sdk/sdk_library/public/conscrypt.module.public.api_stub_sources/android/net/ssl/SSLSockets.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package android.net.ssl;
+
+@SuppressWarnings({"unchecked", "deprecation", "all"})
+public class SSLSockets {
+
+private SSLSockets() { throw new RuntimeException("Stub!"); }
+
+public static boolean isSupportedSocket(@android.annotation.NonNull javax.net.ssl.SSLSocket socket) { throw new RuntimeException("Stub!"); }
+
+public static void setUseSessionTickets(@android.annotation.NonNull javax.net.ssl.SSLSocket socket, boolean useSessionTickets) { throw new RuntimeException("Stub!"); }
+}
+