OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef NET_ANDROID_LEGACY_OPENSSL_H |
| 6 #define NET_ANDROID_LEGACY_OPENSSL_H |
| 7 |
| 8 // This file contains a replica of the Android system OpenSSL ABI shipped in |
| 9 // Android 4.1.x (API level 16). The ABI may not necessarily be compatible with |
| 10 // the copy of OpenSSL shipped in Chromium. This is used to implement |
| 11 // RSA_private_encrypt in one of the legacy client auth codepaths. |
| 12 // |
| 13 // See https://android.googlesource.com/platform/external/openssl/+/android-4.1.
2_r2.1 |
| 14 |
| 15 namespace net { |
| 16 namespace android { |
| 17 |
| 18 enum { |
| 19 ANDROID_EVP_PKEY_RSA = 6, |
| 20 }; |
| 21 |
| 22 enum { |
| 23 ANDROID_RSA_PKCS1_PADDING = 1, |
| 24 ANDROID_RSA_SSLV23_PADDING = 2, |
| 25 ANDROID_RSA_NO_PADDING = 3, |
| 26 ANDROID_RSA_PKCS1_OAEP_PADDING = 4, |
| 27 ANDROID_X931_PADDING = 5, |
| 28 ANDROID_PKCS1_PSS_PADDING = 6, |
| 29 }; |
| 30 |
| 31 struct AndroidEVP_PKEY_ASN1_METHOD; |
| 32 struct AndroidRSA_METHOD; |
| 33 struct AndroidSTACK; |
| 34 |
| 35 struct AndroidCRYPTO_EX_DATA { |
| 36 AndroidSTACK* sk; |
| 37 int dummy; |
| 38 }; |
| 39 |
| 40 struct AndroidENGINE { |
| 41 const char* id; |
| 42 // Remaining fields intentionally omitted. |
| 43 }; |
| 44 |
| 45 struct AndroidRSA { |
| 46 int pad; |
| 47 long version; |
| 48 const AndroidRSA_METHOD* meth; |
| 49 AndroidENGINE* engine; |
| 50 // Remaining fields intentionally omitted. |
| 51 }; |
| 52 |
| 53 struct AndroidRSA_METHOD { |
| 54 const char* name; |
| 55 int (*rsa_pub_enc)(int flen, |
| 56 const unsigned char* from, |
| 57 unsigned char* to, |
| 58 AndroidRSA* rsa, |
| 59 int padding); |
| 60 int (*rsa_pub_dec)(int flen, |
| 61 const unsigned char* from, |
| 62 unsigned char* to, |
| 63 AndroidRSA* rsa, |
| 64 int padding); |
| 65 int (*rsa_priv_enc)(int flen, |
| 66 const unsigned char* from, |
| 67 unsigned char* to, |
| 68 AndroidRSA* rsa, |
| 69 int padding); |
| 70 int (*rsa_priv_dec)(int flen, |
| 71 const unsigned char* from, |
| 72 unsigned char* to, |
| 73 AndroidRSA* rsa, |
| 74 int padding); |
| 75 // Remaining fields intentionally omitted. |
| 76 }; |
| 77 |
| 78 struct AndroidEVP_PKEY { |
| 79 int type; |
| 80 int save_type; |
| 81 // Note: this value must NOT be modified using Chromium's CRYPTO_add |
| 82 // function. That may not necessarily use the same locking implementation as |
| 83 // system OpenSSL. |
| 84 int references; |
| 85 const AndroidEVP_PKEY_ASN1_METHOD* ameth; |
| 86 AndroidENGINE* engine; |
| 87 union { |
| 88 char* ptr; |
| 89 AndroidRSA* rsa; |
| 90 } pkey; |
| 91 int save_parameters; |
| 92 AndroidSTACK* attributes; |
| 93 }; |
| 94 |
| 95 } // namespace android |
| 96 } // namespace net |
| 97 |
| 98 #endif // NET_ANDROID_LEGACY_OPENSSL_H |
OLD | NEW |