Make the RSA structure opaque
[openssl.git] / crypto / rsa / rsa_locl.h
1 /*
2  * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the OpenSSL licenses, (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * https://www.openssl.org/source/license.html
8  * or in the file LICENSE in the source distribution.
9  */
10
11 #include <openssl/rsa.h>
12
13 struct rsa_st {
14     /*
15      * The first parameter is used to pickup errors where this is passed
16      * instead of aEVP_PKEY, it is set to 0
17      */
18     int pad;
19     long version;
20     const RSA_METHOD *meth;
21     /* functional reference if 'meth' is ENGINE-provided */
22     ENGINE *engine;
23     BIGNUM *n;
24     BIGNUM *e;
25     BIGNUM *d;
26     BIGNUM *p;
27     BIGNUM *q;
28     BIGNUM *dmp1;
29     BIGNUM *dmq1;
30     BIGNUM *iqmp;
31     /* be careful using this if the RSA structure is shared */
32     CRYPTO_EX_DATA ex_data;
33     int references;
34     int flags;
35     /* Used to cache montgomery values */
36     BN_MONT_CTX *_method_mod_n;
37     BN_MONT_CTX *_method_mod_p;
38     BN_MONT_CTX *_method_mod_q;
39     /*
40      * all BIGNUM values are actually in the following data, if it is not
41      * NULL
42      */
43     char *bignum_data;
44     BN_BLINDING *blinding;
45     BN_BLINDING *mt_blinding;
46     CRYPTO_RWLOCK *lock;
47 };
48
49 extern int int_rsa_verify(int dtype, const unsigned char *m,
50                           unsigned int m_len, unsigned char *rm,
51                           size_t *prm_len, const unsigned char *sigbuf,
52                           size_t siglen, RSA *rsa);