/* * Copyright (c) 2001-2019, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef MBEDTLS_RSA_ALT_H #define MBEDTLS_RSA_ALT_H #if defined(MBEDTLS_CONFIG_FILE) #include MBEDTLS_CONFIG_FILE #endif #if defined (MBEDTLS_RSA_ALT) #include "bignum.h" #if defined(MBEDTLS_THREADING_C) #include "threading.h" #endif #ifdef __cplusplus extern "C" { #endif /** * \brief The RSA context structure. * * \note Direct manipulation of the members of this structure * is deprecated. All manipulation should instead be done through * the public interface functions. */ typedef struct { int ver; /*!< always 0 */ size_t len; /*!< size(N) in chars */ mbedtls_mpi N; /*!< public modulus */ mbedtls_mpi E; /*!< public exponent */ mbedtls_mpi D; /*!< private exponent */ mbedtls_mpi P; /*!< 1st prime factor */ mbedtls_mpi Q; /*!< 2nd prime factor */ mbedtls_mpi DP; /*!< D % (P - 1) */ mbedtls_mpi DQ; /*!< D % (Q - 1) */ mbedtls_mpi QP; /*!< 1 / (Q % P) */ mbedtls_mpi RN; /*!< cached R^2 mod N */ mbedtls_mpi RP; /*!< cached R^2 mod P */ mbedtls_mpi RQ; /*!< cached R^2 mod Q */ mbedtls_mpi Vi; /*!< cached blinding value */ mbedtls_mpi Vf; /*!< cached un-blinding value */ int padding; /*!< MBEDTLS_RSA_PKCS_V15 for 1.5 padding and MBEDTLS_RSA_PKCS_v21 for OAEP/PSS */ int hash_id; /*!< Hash identifier of mbedtls_md_type_t as specified in the mbedtls_md.h header file for the EME-OAEP and EMSA-PSS encoding */ #if defined(MBEDTLS_THREADING_C) mbedtls_threading_mutex_t mutex; /*!< Thread-safety mutex */ #else uint8_t dummy[8]; /*!< Ensuring same size when threading is disabled */ #endif mbedtls_mpi NP; /*!< Barrett mod N tag NP for N-modulus */ mbedtls_mpi BQP; /*!< Barrett mod Q tag QP for Q-factor */ mbedtls_mpi BPP; /*!< Barrett mod P tag PP for P-factor */ } mbedtls_rsa_context; #ifdef __cplusplus } #endif #endif /* MBEDTLS_RSA_ALT */ #endif /* MBEDTLS_RSA_ALT_H */