| 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
|
|
|