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