@@ -304,15 +304,39 @@ else
304
304
}
305
305
306
306
auto EVP_PKEY_CTX_set_rsa_mgf1_md ()(EVP_PKEY_CTX * ctx, EVP_MD * md) {
307
- return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_SIG ,
308
- EVP_PKEY_CTRL_RSA_MGF1_MD , 0 , cast (void * )md);
307
+ static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 0 ))
308
+ enum ExtraFlags = EVP_PKEY_OP_TYPE_CRYPT ;
309
+ else
310
+ enum ExtraFlags = 0 ;
311
+
312
+ return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_SIG | ExtraFlags,
313
+ EVP_PKEY_CTRL_RSA_MGF1_MD , 0 , md);
309
314
}
310
315
311
316
auto EVP_PKEY_CTX_get_rsa_mgf1_md ()(EVP_PKEY_CTX * ctx, EVP_MD ** pmd) {
312
- return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_SIG ,
313
- EVP_PKEY_CTRL_GET_RSA_MGF1_MD , 0 , cast (void * )pmd);
317
+ static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 0 ))
318
+ enum ExtraFlags = EVP_PKEY_OP_TYPE_CRYPT ;
319
+ else
320
+ enum ExtraFlags = 0 ;
321
+
322
+ return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_SIG | ExtraFlags,
323
+ EVP_PKEY_CTRL_GET_RSA_MGF1_MD , 0 , pmd);
324
+ }
325
+
326
+ static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 0 ))
327
+ {
328
+ auto EVP_PKEY_CTX_set_rsa_oaep_md ()(EVP_PKEY_CTX * ctx, EVP_MD * md) {
329
+ return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_CRYPT ,
330
+ EVP_PKEY_CTRL_RSA_OAEP_MD , 0 , md);
331
+ }
332
+
333
+ auto EVP_PKEY_CTX_set0_rsa_oaep_label ()(EVP_PKEY_CTX * ctx, ubyte * label, int len) {
334
+ return EVP_PKEY_CTX_ctrl (ctx, EVP_PKEY_RSA , EVP_PKEY_OP_TYPE_CRYPT ,
335
+ EVP_PKEY_CTRL_RSA_OAEP_LABEL , llen, l);
336
+ }
314
337
}
315
338
339
+
316
340
enum EVP_PKEY_CTRL_RSA_PADDING = (EVP_PKEY_ALG_CTRL + 1 );
317
341
enum EVP_PKEY_CTRL_RSA_PSS_SALTLEN = (EVP_PKEY_ALG_CTRL + 2 );
318
342
@@ -324,6 +348,12 @@ enum EVP_PKEY_CTRL_GET_RSA_PADDING = (EVP_PKEY_ALG_CTRL + 6);
324
348
enum EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN = (EVP_PKEY_ALG_CTRL + 7 );
325
349
enum EVP_PKEY_CTRL_GET_RSA_MGF1_MD = (EVP_PKEY_ALG_CTRL + 8 );
326
350
351
+ static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 0 ))
352
+ {
353
+ enum EVP_PKEY_CTRL_RSA_OAEP_MD = (EVP_PKEY_ALG_CTRL + 9 );
354
+ enum EVP_PKEY_CTRL_RSA_OAEP_LABEL = (EVP_PKEY_ALG_CTRL + 10 );
355
+ }
356
+
327
357
static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 1 ))
328
358
enum EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES = (EVP_PKEY_ALG_CTRL + 13 );
329
359
@@ -456,6 +486,17 @@ int RSA_padding_add_PKCS1_OAEP(ubyte* to,int tlen,
456
486
int RSA_padding_check_PKCS1_OAEP (ubyte * to,int tlen,
457
487
const (ubyte )* f,int fl,int rsa_len,
458
488
const (ubyte )* p,int pl);
489
+ static if (OPENSSL_VERSION_AT_LEAST (1 , 1 , 0 ))
490
+ {
491
+ int RSA_padding_add_PKCS1_OAEP_mgf1 (ubyte * to, int tlen,
492
+ const (ubyte )* from, int flen,
493
+ const (ubyte )* param, int plen,
494
+ const (EVP_MD )* md, const (EVP_MD )* mgf1md);
495
+ int RSA_padding_check_PKCS1_OAEP_mgf1 (ubyte * to, int tlen,
496
+ const (ubyte )* from, int flen, int num,
497
+ const (ubyte )* param, int plen,
498
+ const (EVP_MD )* md, const (EVP_MD )* mgf1md);
499
+ }
459
500
int RSA_padding_add_SSLv23 (ubyte * to,int tlen,
460
501
const (ubyte )* f,int fl);
461
502
int RSA_padding_check_SSLv23 (ubyte * to,int tlen,
@@ -549,6 +590,7 @@ enum RSA_F_RSA_NULL_PUBLIC_DECRYPT = 134;
549
590
enum RSA_F_RSA_NULL_PUBLIC_ENCRYPT = 135 ;
550
591
enum RSA_F_RSA_PADDING_ADD_NONE = 107 ;
551
592
enum RSA_F_RSA_PADDING_ADD_PKCS1_OAEP = 121 ;
593
+ enum RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 = 154 ;
552
594
enum RSA_F_RSA_PADDING_ADD_PKCS1_PSS = 125 ;
553
595
enum RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 = 148 ;
554
596
enum RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 = 108 ;
@@ -557,6 +599,7 @@ enum RSA_F_RSA_PADDING_ADD_SSLV23 = 110;
557
599
enum RSA_F_RSA_PADDING_ADD_X931 = 127 ;
558
600
enum RSA_F_RSA_PADDING_CHECK_NONE = 111 ;
559
601
enum RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP = 122 ;
602
+ enum RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 = 153 ;
560
603
enum RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 = 112 ;
561
604
enum RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 = 113 ;
562
605
enum RSA_F_RSA_PADDING_CHECK_SSLV23 = 114 ;
@@ -598,6 +641,7 @@ enum RSA_R_DMQ1_NOT_CONGRUENT_TO_D = 125;
598
641
enum RSA_R_D_E_NOT_CONGRUENT_TO_1 = 123 ;
599
642
enum RSA_R_FIRST_OCTET_INVALID = 133 ;
600
643
enum RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE = 144 ;
644
+ enum RSA_R_INVALID_DIGEST = 157 ;
601
645
enum RSA_R_INVALID_DIGEST_LENGTH = 143 ;
602
646
enum RSA_R_INVALID_HEADER = 137 ;
603
647
enum RSA_R_INVALID_KEYBITS = 145 ;
0 commit comments