1 /* 2 * Copyright (c) 2001-2022, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef MBEDTLS_RSA_ALT_H 8 #define MBEDTLS_RSA_ALT_H 9 10 #include "mbedtls/build_info.h" 11 12 #if defined (MBEDTLS_RSA_ALT) 13 14 // Regular implementation 15 // 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 /** 22 * \brief The RSA context structure. 23 * 24 * \note Direct manipulation of the members of this structure 25 * is deprecated. All manipulation should instead be done through 26 * the public interface functions. 27 */ 28 typedef struct 29 { 30 int MBEDTLS_PRIVATE(ver); /*!< always 0 */ 31 size_t MBEDTLS_PRIVATE(len); /*!< size(N) in chars */ 32 33 mbedtls_mpi MBEDTLS_PRIVATE(N); /*!< public modulus */ 34 mbedtls_mpi MBEDTLS_PRIVATE(E); /*!< public exponent */ 35 36 mbedtls_mpi MBEDTLS_PRIVATE(D); /*!< private exponent */ 37 mbedtls_mpi MBEDTLS_PRIVATE(P); /*!< 1st prime factor */ 38 mbedtls_mpi MBEDTLS_PRIVATE(Q); /*!< 2nd prime factor */ 39 40 mbedtls_mpi MBEDTLS_PRIVATE(DP); /*!< D % (P - 1) */ 41 mbedtls_mpi MBEDTLS_PRIVATE(DQ); /*!< D % (Q - 1) */ 42 mbedtls_mpi MBEDTLS_PRIVATE(QP); /*!< 1 / (Q % P) */ 43 44 mbedtls_mpi MBEDTLS_PRIVATE(RN); /*!< cached R^2 mod N */ 45 46 mbedtls_mpi MBEDTLS_PRIVATE(RP); /*!< cached R^2 mod P */ 47 mbedtls_mpi MBEDTLS_PRIVATE(RQ); /*!< cached R^2 mod Q */ 48 49 mbedtls_mpi MBEDTLS_PRIVATE(Vi); /*!< cached blinding value */ 50 mbedtls_mpi MBEDTLS_PRIVATE(Vf); /*!< cached un-blinding value */ 51 52 mbedtls_mpi MBEDTLS_PRIVATE(NP); /*!< Barrett mod N tag NP for N-modulus */ 53 mbedtls_mpi MBEDTLS_PRIVATE(BQP); /*!< Barrett mod Q tag QP for Q-factor */ 54 mbedtls_mpi MBEDTLS_PRIVATE(BPP); /*!< Barrett mod P tag PP for P-factor */ 55 56 int MBEDTLS_PRIVATE(padding); /*!< MBEDTLS_RSA_PKCS_V15 for 1.5 padding and 57 MBEDTLS_RSA_PKCS_v21 for OAEP/PSS */ 58 int MBEDTLS_PRIVATE(hash_id); /*!< Hash identifier of mbedtls_md_type_t as 59 specified in the mbedtls_md.h header file 60 for the EME-OAEP and EMSA-PSS 61 encoding */ 62 #if defined(MBEDTLS_THREADING_C) 63 mbedtls_threading_mutex_t MBEDTLS_PRIVATE(mutex); /*!< Thread-safety mutex */ 64 #endif 65 } 66 mbedtls_rsa_context; 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif /* MBEDTLS_RSA_ALT */ 73 74 #endif /* MBEDTLS_RSA_ALT_H */ 75