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