Go to the documentation of this file.
64 #ifndef OPENSSL_NO_BIO
69 #ifndef OPENSSL_NO_DEPRECATED
74 #error RSA is disabled.
90 RSA *rsa,
int padding);
93 RSA *rsa,
int padding);
96 RSA *rsa,
int padding);
99 RSA *rsa,
int padding);
116 const unsigned char *m,
unsigned int m_length,
117 unsigned char *sigret,
unsigned int *siglen,
const RSA *rsa);
119 const unsigned char *m,
unsigned int m_length,
120 const unsigned char *sigbuf,
unsigned int siglen,
163 #ifndef OPENSSL_RSA_MAX_MODULUS_BITS
164 # define OPENSSL_RSA_MAX_MODULUS_BITS 16384
167 #ifndef OPENSSL_RSA_SMALL_MODULUS_BITS
168 # define OPENSSL_RSA_SMALL_MODULUS_BITS 3072
170 #ifndef OPENSSL_RSA_MAX_PUBEXP_BITS
171 # define OPENSSL_RSA_MAX_PUBEXP_BITS 64
175 #define RSA_F4 0x10001L
177 #define RSA_METHOD_FLAG_NO_CHECK 0x0001
179 #define RSA_FLAG_CACHE_PUBLIC 0x0002
180 #define RSA_FLAG_CACHE_PRIVATE 0x0004
181 #define RSA_FLAG_BLINDING 0x0008
182 #define RSA_FLAG_THREAD_SAFE 0x0010
188 #define RSA_FLAG_EXT_PKEY 0x0020
192 #define RSA_FLAG_SIGN_VER 0x0040
194 #define RSA_FLAG_NO_BLINDING 0x0080
199 #define RSA_FLAG_NO_CONSTTIME 0x0100
209 #ifndef OPENSSL_NO_DEPRECATED
210 #define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME
221 #define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \
222 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \
225 #define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \
226 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, \
227 EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad)
229 #define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \
230 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \
231 (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \
232 EVP_PKEY_CTRL_RSA_PSS_SALTLEN, \
235 #define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \
236 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \
237 (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \
238 EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, \
241 #define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \
242 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \
243 EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL)
245 #define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \
246 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \
247 EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp)
249 #define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \
250 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_SIG, \
251 EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)md)
253 #define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \
254 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_SIG, \
255 EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)pmd)
257 #define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1)
258 #define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2)
260 #define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3)
261 #define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4)
262 #define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5)
264 #define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6)
265 #define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7)
266 #define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8)
268 #define RSA_PKCS1_PADDING 1
269 #define RSA_SSLV23_PADDING 2
270 #define RSA_NO_PADDING 3
271 #define RSA_PKCS1_OAEP_PADDING 4
272 #define RSA_X931_PADDING 5
274 #define RSA_PKCS1_PSS_PADDING 6
276 #define RSA_PKCS1_PADDING_SIZE 11
278 #define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg)
279 #define RSA_get_app_data(s) RSA_get_ex_data(s,0)
286 #ifndef OPENSSL_NO_DEPRECATED
288 (*
callback)(
int,
int,
void *),
void *cb_arg);
297 unsigned char *to,
RSA *rsa,
int padding);
299 unsigned char *to,
RSA *rsa,
int padding);
301 unsigned char *to,
RSA *rsa,
int padding);
303 unsigned char *to,
RSA *rsa,
int padding);
336 #ifndef OPENSSL_NO_FP_API
340 #ifndef OPENSSL_NO_BIO
344 #ifndef OPENSSL_NO_RC4
346 int (*
cb)(
char *buf,
int len,
const char *prompt,
int verify),
349 int (*
cb)(
char *buf,
int len,
const char *prompt,
int verify),
353 int (*
cb)(
char *buf,
int len,
const char *prompt,
356 int (*
cb)(
char *buf,
int len,
const char *prompt,
362 int RSA_sign(
int type,
const unsigned char *m,
unsigned int m_length,
363 unsigned char *sigret,
unsigned int *siglen,
RSA *rsa);
364 int RSA_verify(
int type,
const unsigned char *m,
unsigned int m_length,
365 const unsigned char *sigbuf,
unsigned int siglen,
RSA *rsa);
370 const unsigned char *m,
unsigned int m_length,
371 unsigned char *sigret,
unsigned int *siglen,
RSA *rsa);
373 const unsigned char *m,
unsigned int m_length,
374 unsigned char *sigbuf,
unsigned int siglen,
RSA *rsa);
381 const unsigned char *
f,
int fl);
383 const unsigned char *
f,
int fl,
int rsa_len);
385 const unsigned char *
f,
int fl);
387 const unsigned char *
f,
int fl,
int rsa_len);
389 const unsigned char *
seed,
long seedlen,
const EVP_MD *dgst);
391 const unsigned char *
f,
int fl,
392 const unsigned char *
p,
int pl);
394 const unsigned char *
f,
int fl,
int rsa_len,
395 const unsigned char *
p,
int pl);
397 const unsigned char *
f,
int fl);
399 const unsigned char *
f,
int fl,
int rsa_len);
401 const unsigned char *
f,
int fl);
403 const unsigned char *
f,
int fl,
int rsa_len);
405 const unsigned char *
f,
int fl);
407 const unsigned char *
f,
int fl,
int rsa_len);
411 const EVP_MD *Hash,
const unsigned char *EM,
int sLen);
413 const unsigned char *mHash,
414 const EVP_MD *Hash,
int sLen);
418 const unsigned char *EM,
int sLen);
421 const unsigned char *mHash,
438 #define RSA_FLAG_FIPS_METHOD 0x0400
445 #define RSA_FLAG_NON_FIPS_ALLOW 0x0400
449 #define RSA_FLAG_CHECKED 0x0800
460 #define RSA_F_CHECK_PADDING_MD 140
461 #define RSA_F_DO_RSA_PRINT 146
462 #define RSA_F_INT_RSA_VERIFY 145
463 #define RSA_F_MEMORY_LOCK 100
464 #define RSA_F_OLD_RSA_PRIV_DECODE 147
465 #define RSA_F_PKEY_RSA_CTRL 143
466 #define RSA_F_PKEY_RSA_CTRL_STR 144
467 #define RSA_F_PKEY_RSA_SIGN 142
468 #define RSA_F_PKEY_RSA_VERIFY 154
469 #define RSA_F_PKEY_RSA_VERIFYRECOVER 141
470 #define RSA_F_RSA_BUILTIN_KEYGEN 129
471 #define RSA_F_RSA_CHECK_KEY 123
472 #define RSA_F_RSA_EAY_PRIVATE_DECRYPT 101
473 #define RSA_F_RSA_EAY_PRIVATE_ENCRYPT 102
474 #define RSA_F_RSA_EAY_PUBLIC_DECRYPT 103
475 #define RSA_F_RSA_EAY_PUBLIC_ENCRYPT 104
476 #define RSA_F_RSA_GENERATE_KEY 105
477 #define RSA_F_RSA_GENERATE_KEY_EX 155
478 #define RSA_F_RSA_ITEM_VERIFY 156
479 #define RSA_F_RSA_MEMORY_LOCK 130
480 #define RSA_F_RSA_NEW_METHOD 106
481 #define RSA_F_RSA_NULL 124
482 #define RSA_F_RSA_NULL_MOD_EXP 131
483 #define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132
484 #define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133
485 #define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134
486 #define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135
487 #define RSA_F_RSA_PADDING_ADD_NONE 107
488 #define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121
489 #define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125
490 #define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 148
491 #define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108
492 #define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109
493 #define RSA_F_RSA_PADDING_ADD_SSLV23 110
494 #define RSA_F_RSA_PADDING_ADD_X931 127
495 #define RSA_F_RSA_PADDING_CHECK_NONE 111
496 #define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122
497 #define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112
498 #define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113
499 #define RSA_F_RSA_PADDING_CHECK_SSLV23 114
500 #define RSA_F_RSA_PADDING_CHECK_X931 128
501 #define RSA_F_RSA_PRINT 115
502 #define RSA_F_RSA_PRINT_FP 116
503 #define RSA_F_RSA_PRIVATE_DECRYPT 150
504 #define RSA_F_RSA_PRIVATE_ENCRYPT 151
505 #define RSA_F_RSA_PRIV_DECODE 137
506 #define RSA_F_RSA_PRIV_ENCODE 138
507 #define RSA_F_RSA_PUBLIC_DECRYPT 152
508 #define RSA_F_RSA_PUBLIC_ENCRYPT 153
509 #define RSA_F_RSA_PUB_DECODE 139
510 #define RSA_F_RSA_SETUP_BLINDING 136
511 #define RSA_F_RSA_SIGN 117
512 #define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118
513 #define RSA_F_RSA_VERIFY 119
514 #define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120
515 #define RSA_F_RSA_VERIFY_PKCS1_PSS 126
516 #define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 149
519 #define RSA_R_ALGORITHM_MISMATCH 100
520 #define RSA_R_BAD_E_VALUE 101
521 #define RSA_R_BAD_FIXED_HEADER_DECRYPT 102
522 #define RSA_R_BAD_PAD_BYTE_COUNT 103
523 #define RSA_R_BAD_SIGNATURE 104
524 #define RSA_R_BLOCK_TYPE_IS_NOT_01 106
525 #define RSA_R_BLOCK_TYPE_IS_NOT_02 107
526 #define RSA_R_DATA_GREATER_THAN_MOD_LEN 108
527 #define RSA_R_DATA_TOO_LARGE 109
528 #define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110
529 #define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132
530 #define RSA_R_DATA_TOO_SMALL 111
531 #define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122
532 #define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112
533 #define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124
534 #define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125
535 #define RSA_R_D_E_NOT_CONGRUENT_TO_1 123
536 #define RSA_R_FIRST_OCTET_INVALID 133
537 #define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144
538 #define RSA_R_INVALID_DIGEST_LENGTH 143
539 #define RSA_R_INVALID_HEADER 137
540 #define RSA_R_INVALID_KEYBITS 145
541 #define RSA_R_INVALID_MESSAGE_LENGTH 131
542 #define RSA_R_INVALID_MGF1_MD 156
543 #define RSA_R_INVALID_PADDING 138
544 #define RSA_R_INVALID_PADDING_MODE 141
545 #define RSA_R_INVALID_PSS_PARAMETERS 149
546 #define RSA_R_INVALID_PSS_SALTLEN 146
547 #define RSA_R_INVALID_SALT_LENGTH 150
548 #define RSA_R_INVALID_TRAILER 139
549 #define RSA_R_INVALID_X931_DIGEST 142
550 #define RSA_R_IQMP_NOT_INVERSE_OF_Q 126
551 #define RSA_R_KEY_SIZE_TOO_SMALL 120
552 #define RSA_R_LAST_OCTET_INVALID 134
553 #define RSA_R_MODULUS_TOO_LARGE 105
554 #define RSA_R_NON_FIPS_RSA_METHOD 157
555 #define RSA_R_NO_PUBLIC_EXPONENT 140
556 #define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
557 #define RSA_R_N_DOES_NOT_EQUAL_P_Q 127
558 #define RSA_R_OAEP_DECODING_ERROR 121
559 #define RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 158
560 #define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148
561 #define RSA_R_PADDING_CHECK_FAILED 114
562 #define RSA_R_P_NOT_PRIME 128
563 #define RSA_R_Q_NOT_PRIME 129
564 #define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130
565 #define RSA_R_SLEN_CHECK_FAILED 136
566 #define RSA_R_SLEN_RECOVERY_FAILED 135
567 #define RSA_R_SSLV3_ROLLBACK_ATTACK 115
568 #define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
569 #define RSA_R_UNKNOWN_ALGORITHM_TYPE 117
570 #define RSA_R_UNKNOWN_MASK_DIGEST 151
571 #define RSA_R_UNKNOWN_PADDING_TYPE 118
572 #define RSA_R_UNKNOWN_PSS_DIGEST 152
573 #define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153
574 #define RSA_R_UNSUPPORTED_MASK_PARAMETER 154
575 #define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155
576 #define RSA_R_VALUE_MISSING 147
577 #define RSA_R_WRONG_SIGNATURE_LENGTH 119