Index: net/android/legacy_openssl.h |
diff --git a/net/android/legacy_openssl.h b/net/android/legacy_openssl.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e87413570ee58d6cf6038c1e18da46def8c374ab |
--- /dev/null |
+++ b/net/android/legacy_openssl.h |
@@ -0,0 +1,98 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef NET_ANDROID_LEGACY_OPENSSL_H |
+#define NET_ANDROID_LEGACY_OPENSSL_H |
+ |
+// This file contains a replica of the Android system OpenSSL ABI shipped in |
+// Android 4.1.x (API level 16). The ABI may not necessarily be compatible with |
+// the copy of OpenSSL shipped in Chromium. This is used to implement |
+// RSA_private_encrypt in one of the legacy client auth codepaths. |
+// |
+// See https://android.googlesource.com/platform/external/openssl/+/android-4.1.2_r2.1 |
+ |
+namespace net { |
+namespace android { |
+ |
+enum { |
+ ANDROID_EVP_PKEY_RSA = 6, |
+}; |
+ |
+enum { |
+ ANDROID_RSA_PKCS1_PADDING = 1, |
+ ANDROID_RSA_SSLV23_PADDING = 2, |
+ ANDROID_RSA_NO_PADDING = 3, |
+ ANDROID_RSA_PKCS1_OAEP_PADDING = 4, |
+ ANDROID_X931_PADDING = 5, |
+ ANDROID_PKCS1_PSS_PADDING = 6, |
+}; |
+ |
+struct AndroidEVP_PKEY_ASN1_METHOD; |
+struct AndroidRSA_METHOD; |
+struct AndroidSTACK; |
+ |
+struct AndroidCRYPTO_EX_DATA { |
+ AndroidSTACK* sk; |
+ int dummy; |
+}; |
+ |
+struct AndroidENGINE { |
+ const char* id; |
+ // Remaining fields intentionally omitted. |
+}; |
+ |
+struct AndroidRSA { |
+ int pad; |
+ long version; |
+ const AndroidRSA_METHOD* meth; |
+ AndroidENGINE* engine; |
+ // Remaining fields intentionally omitted. |
+}; |
+ |
+struct AndroidRSA_METHOD { |
+ const char* name; |
+ int (*rsa_pub_enc)(int flen, |
+ const unsigned char* from, |
+ unsigned char* to, |
+ AndroidRSA* rsa, |
+ int padding); |
+ int (*rsa_pub_dec)(int flen, |
+ const unsigned char* from, |
+ unsigned char* to, |
+ AndroidRSA* rsa, |
+ int padding); |
+ int (*rsa_priv_enc)(int flen, |
+ const unsigned char* from, |
+ unsigned char* to, |
+ AndroidRSA* rsa, |
+ int padding); |
+ int (*rsa_priv_dec)(int flen, |
+ const unsigned char* from, |
+ unsigned char* to, |
+ AndroidRSA* rsa, |
+ int padding); |
+ // Remaining fields intentionally omitted. |
+}; |
+ |
+struct AndroidEVP_PKEY { |
+ int type; |
+ int save_type; |
+ // Note: this value must NOT be modified using Chromium's CRYPTO_add |
+ // function. That may not necessarily use the same locking implementation as |
+ // system OpenSSL. |
+ int references; |
+ const AndroidEVP_PKEY_ASN1_METHOD* ameth; |
+ AndroidENGINE* engine; |
+ union { |
+ char* ptr; |
+ AndroidRSA* rsa; |
+ } pkey; |
+ int save_parameters; |
+ AndroidSTACK* attributes; |
+}; |
+ |
+} // namespace android |
+} // namespace net |
+ |
+#endif // NET_ANDROID_LEGACY_OPENSSL_H |