mirror of https://github.com/openssl/openssl.git
Make default_method mostly compile-time
Document thread-safety issues Have RSA_null return NULL (always fails) Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2244)
This commit is contained in:
parent
2f881d2d90
commit
076fc55527
4
CHANGES
4
CHANGES
|
|
@ -57,6 +57,10 @@
|
|||
*) Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd.
|
||||
[Emilia Käsper]
|
||||
|
||||
*) The RSA "null" method, which was partially supported to avoid patent
|
||||
issues, has been replaced to always returns NULL.
|
||||
[Rich Salz]
|
||||
|
||||
Changes between 1.1.0d and 1.1.0e [16 Feb 2017]
|
||||
|
||||
*) Encrypt-Then-Mac renegotiation crash
|
||||
|
|
|
|||
|
|
@ -1444,12 +1444,8 @@ int speed_main(int argc, char **argv)
|
|||
continue;
|
||||
}
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
# ifndef RSA_NULL
|
||||
if (strcmp(*argv, "openssl") == 0) {
|
||||
RSA_set_default_method(RSA_PKCS1_OpenSSL());
|
||||
if (strcmp(*argv, "openssl") == 0)
|
||||
continue;
|
||||
}
|
||||
# endif
|
||||
if (strcmp(*argv, "rsa") == 0) {
|
||||
rsa_doit[R_RSA_512] = rsa_doit[R_RSA_1024] =
|
||||
rsa_doit[R_RSA_2048] = rsa_doit[R_RSA_3072] =
|
||||
|
|
|
|||
|
|
@ -56,11 +56,23 @@ static DH_METHOD dh_ossl = {
|
|||
NULL
|
||||
};
|
||||
|
||||
static const DH_METHOD *default_DH_method = &dh_ossl;
|
||||
|
||||
const DH_METHOD *DH_OpenSSL(void)
|
||||
{
|
||||
return &dh_ossl;
|
||||
}
|
||||
|
||||
void DH_set_default_method(const DH_METHOD *meth)
|
||||
{
|
||||
default_DH_method = meth;
|
||||
}
|
||||
|
||||
const DH_METHOD *DH_get_default_method(void)
|
||||
{
|
||||
return default_DH_method;
|
||||
}
|
||||
|
||||
static int generate_key(DH *dh)
|
||||
{
|
||||
int ok = 0;
|
||||
|
|
|
|||
|
|
@ -13,20 +13,6 @@
|
|||
#include "dh_locl.h"
|
||||
#include <openssl/engine.h>
|
||||
|
||||
static const DH_METHOD *default_DH_method = NULL;
|
||||
|
||||
void DH_set_default_method(const DH_METHOD *meth)
|
||||
{
|
||||
default_DH_method = meth;
|
||||
}
|
||||
|
||||
const DH_METHOD *DH_get_default_method(void)
|
||||
{
|
||||
if (!default_DH_method)
|
||||
default_DH_method = DH_OpenSSL();
|
||||
return default_DH_method;
|
||||
}
|
||||
|
||||
int DH_set_method(DH *dh, const DH_METHOD *meth)
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -17,20 +17,6 @@
|
|||
#include <openssl/engine.h>
|
||||
#include <openssl/dh.h>
|
||||
|
||||
static const DSA_METHOD *default_DSA_method = NULL;
|
||||
|
||||
void DSA_set_default_method(const DSA_METHOD *meth)
|
||||
{
|
||||
default_DSA_method = meth;
|
||||
}
|
||||
|
||||
const DSA_METHOD *DSA_get_default_method(void)
|
||||
{
|
||||
if (!default_DSA_method)
|
||||
default_DSA_method = DSA_OpenSSL();
|
||||
return default_DSA_method;
|
||||
}
|
||||
|
||||
DSA *DSA_new(void)
|
||||
{
|
||||
return DSA_new_method(NULL);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,18 @@ static DSA_METHOD openssl_dsa_meth = {
|
|||
NULL
|
||||
};
|
||||
|
||||
static const DSA_METHOD *default_DSA_method = &openssl_dsa_meth;
|
||||
|
||||
void DSA_set_default_method(const DSA_METHOD *meth)
|
||||
{
|
||||
default_DSA_method = meth;
|
||||
}
|
||||
|
||||
const DSA_METHOD *DSA_get_default_method(void)
|
||||
{
|
||||
return default_DSA_method;
|
||||
}
|
||||
|
||||
const DSA_METHOD *DSA_OpenSSL(void)
|
||||
{
|
||||
return &openssl_dsa_meth;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
LIBS=../../libcrypto
|
||||
SOURCE[../../libcrypto]=\
|
||||
rsa_ossl.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \
|
||||
rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \
|
||||
rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c \
|
||||
rsa_pss.c rsa_x931.c rsa_asn1.c rsa_depr.c rsa_ameth.c rsa_prn.c \
|
||||
rsa_pmeth.c rsa_crpt.c rsa_x931g.c rsa_meth.c
|
||||
|
|
|
|||
|
|
@ -41,11 +41,6 @@ static ERR_STRING_DATA RSA_str_functs[] = {
|
|||
{ERR_FUNC(RSA_F_RSA_METH_SET1_NAME), "RSA_meth_set1_name"},
|
||||
{ERR_FUNC(RSA_F_RSA_MGF1_TO_MD), "rsa_mgf1_to_md"},
|
||||
{ERR_FUNC(RSA_F_RSA_NEW_METHOD), "RSA_new_method"},
|
||||
{ERR_FUNC(RSA_F_RSA_NULL), "RSA_NULL"},
|
||||
{ERR_FUNC(RSA_F_RSA_NULL_PRIVATE_DECRYPT), "RSA_null_private_decrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_NULL_PRIVATE_ENCRYPT), "RSA_null_private_encrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_NULL_PUBLIC_DECRYPT), "RSA_null_public_decrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_NULL_PUBLIC_ENCRYPT), "RSA_null_public_encrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_OSSL_PRIVATE_DECRYPT), "rsa_ossl_private_decrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_OSSL_PRIVATE_ENCRYPT), "rsa_ossl_private_encrypt"},
|
||||
{ERR_FUNC(RSA_F_RSA_OSSL_PUBLIC_DECRYPT), "rsa_ossl_public_decrypt"},
|
||||
|
|
|
|||
|
|
@ -17,31 +17,9 @@
|
|||
#include "internal/evp_int.h"
|
||||
#include "rsa_locl.h"
|
||||
|
||||
static const RSA_METHOD *default_RSA_meth = NULL;
|
||||
|
||||
RSA *RSA_new(void)
|
||||
{
|
||||
RSA *r = RSA_new_method(NULL);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
void RSA_set_default_method(const RSA_METHOD *meth)
|
||||
{
|
||||
default_RSA_meth = meth;
|
||||
}
|
||||
|
||||
const RSA_METHOD *RSA_get_default_method(void)
|
||||
{
|
||||
if (default_RSA_meth == NULL) {
|
||||
#ifdef RSA_NULL
|
||||
default_RSA_meth = RSA_null_method();
|
||||
#else
|
||||
default_RSA_meth = RSA_PKCS1_OpenSSL();
|
||||
#endif
|
||||
}
|
||||
|
||||
return default_RSA_meth;
|
||||
return RSA_new_method(NULL);
|
||||
}
|
||||
|
||||
const RSA_METHOD *RSA_get_method(const RSA *rsa)
|
||||
|
|
|
|||
|
|
@ -1,93 +0,0 @@
|
|||
/*
|
||||
* Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "internal/cryptlib.h"
|
||||
#include <openssl/bn.h>
|
||||
#include "rsa_locl.h"
|
||||
|
||||
/*
|
||||
* This is a dummy RSA implementation that just returns errors when called.
|
||||
* It is designed to allow some RSA functions to work while stopping those
|
||||
* covered by the RSA patent. That is RSA, encryption, decryption, signing
|
||||
* and verify is not allowed but RSA key generation, key checking and other
|
||||
* operations (like storing RSA keys) are permitted.
|
||||
*/
|
||||
|
||||
static int RSA_null_public_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding);
|
||||
static int RSA_null_private_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding);
|
||||
static int RSA_null_public_decrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding);
|
||||
static int RSA_null_private_decrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding);
|
||||
static int RSA_null_init(RSA *rsa);
|
||||
static int RSA_null_finish(RSA *rsa);
|
||||
static RSA_METHOD rsa_null_meth = {
|
||||
"Null RSA",
|
||||
RSA_null_public_encrypt,
|
||||
RSA_null_public_decrypt,
|
||||
RSA_null_private_encrypt,
|
||||
RSA_null_private_decrypt,
|
||||
NULL,
|
||||
NULL,
|
||||
RSA_null_init,
|
||||
RSA_null_finish,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
const RSA_METHOD *RSA_null_method(void)
|
||||
{
|
||||
return (&rsa_null_meth);
|
||||
}
|
||||
|
||||
static int RSA_null_public_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding)
|
||||
{
|
||||
RSAerr(RSA_F_RSA_NULL_PUBLIC_ENCRYPT, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int RSA_null_private_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding)
|
||||
{
|
||||
RSAerr(RSA_F_RSA_NULL_PRIVATE_ENCRYPT,
|
||||
RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int RSA_null_private_decrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding)
|
||||
{
|
||||
RSAerr(RSA_F_RSA_NULL_PRIVATE_DECRYPT,
|
||||
RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int RSA_null_public_decrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding)
|
||||
{
|
||||
RSAerr(RSA_F_RSA_NULL_PUBLIC_DECRYPT, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int RSA_null_init(RSA *rsa)
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
|
||||
static int RSA_null_finish(RSA *rsa)
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
|
|
@ -11,8 +11,6 @@
|
|||
#include "internal/bn_int.h"
|
||||
#include "rsa_locl.h"
|
||||
|
||||
#ifndef RSA_NULL
|
||||
|
||||
static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding);
|
||||
static int rsa_ossl_private_encrypt(int flen, const unsigned char *from,
|
||||
|
|
@ -26,7 +24,7 @@ static int rsa_ossl_mod_exp(BIGNUM *r0, const BIGNUM *i, RSA *rsa,
|
|||
static int rsa_ossl_init(RSA *rsa);
|
||||
static int rsa_ossl_finish(RSA *rsa);
|
||||
static RSA_METHOD rsa_pkcs1_ossl_meth = {
|
||||
"OpenSSL PKCS#1 RSA (from Eric Young)",
|
||||
"OpenSSL PKCS#1 RSA",
|
||||
rsa_ossl_public_encrypt,
|
||||
rsa_ossl_public_decrypt, /* signature verification */
|
||||
rsa_ossl_private_encrypt, /* signing */
|
||||
|
|
@ -43,11 +41,28 @@ static RSA_METHOD rsa_pkcs1_ossl_meth = {
|
|||
NULL /* rsa_keygen */
|
||||
};
|
||||
|
||||
static const RSA_METHOD *default_RSA_meth = &rsa_pkcs1_ossl_meth;
|
||||
|
||||
void RSA_set_default_method(const RSA_METHOD *meth)
|
||||
{
|
||||
default_RSA_meth = meth;
|
||||
}
|
||||
|
||||
const RSA_METHOD *RSA_get_default_method(void)
|
||||
{
|
||||
return default_RSA_meth;
|
||||
}
|
||||
|
||||
const RSA_METHOD *RSA_PKCS1_OpenSSL(void)
|
||||
{
|
||||
return &rsa_pkcs1_ossl_meth;
|
||||
}
|
||||
|
||||
const RSA_METHOD *RSA_null_method(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
|
||||
unsigned char *to, RSA *rsa, int padding)
|
||||
{
|
||||
|
|
@ -786,5 +801,3 @@ static int rsa_ossl_finish(RSA *rsa)
|
|||
BN_MONT_CTX_free(rsa->_method_mod_q);
|
||||
return (1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@
|
|||
#include <openssl/err.h>
|
||||
#include "ui_locl.h"
|
||||
|
||||
static const UI_METHOD *default_UI_meth = NULL;
|
||||
|
||||
UI *UI_new(void)
|
||||
{
|
||||
return (UI_new_method(NULL));
|
||||
|
|
@ -535,19 +533,6 @@ void *UI_get_ex_data(UI *r, int idx)
|
|||
return (CRYPTO_get_ex_data(&r->ex_data, idx));
|
||||
}
|
||||
|
||||
void UI_set_default_method(const UI_METHOD *meth)
|
||||
{
|
||||
default_UI_meth = meth;
|
||||
}
|
||||
|
||||
const UI_METHOD *UI_get_default_method(void)
|
||||
{
|
||||
if (default_UI_meth == NULL) {
|
||||
default_UI_meth = UI_OpenSSL();
|
||||
}
|
||||
return default_UI_meth;
|
||||
}
|
||||
|
||||
const UI_METHOD *UI_get_method(UI *ui)
|
||||
{
|
||||
return ui->meth;
|
||||
|
|
|
|||
|
|
@ -202,6 +202,18 @@ static UI_METHOD ui_openssl = {
|
|||
NULL
|
||||
};
|
||||
|
||||
static const UI_METHOD *default_UI_meth = &ui_openssl;
|
||||
|
||||
void UI_set_default_method(const UI_METHOD *meth)
|
||||
{
|
||||
default_UI_meth = meth;
|
||||
}
|
||||
|
||||
const UI_METHOD *UI_get_default_method(void)
|
||||
{
|
||||
return default_UI_meth;
|
||||
}
|
||||
|
||||
/* The method with all the built-in thingies */
|
||||
UI_METHOD *UI_OpenSSL(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,8 +31,11 @@ Initially, the default DH_METHOD is the OpenSSL internal implementation, as
|
|||
returned by DH_OpenSSL().
|
||||
|
||||
DH_set_default_method() makes B<meth> the default method for all DH
|
||||
structures created later. B<NB>: This is true only whilst no ENGINE has been set
|
||||
structures created later.
|
||||
B<NB>: This is true only whilst no ENGINE has been set
|
||||
as a default for DH, so this function is no longer recommended.
|
||||
This function is not thread-safe and should not be called at the same time
|
||||
as other OpenSSL functions.
|
||||
|
||||
DH_get_default_method() returns a pointer to the current default DH_METHOD.
|
||||
However, the meaningfulness of this result is dependent on whether the ENGINE
|
||||
|
|
|
|||
|
|
@ -31,8 +31,11 @@ Initially, the default DSA_METHOD is the OpenSSL internal implementation,
|
|||
as returned by DSA_OpenSSL().
|
||||
|
||||
DSA_set_default_method() makes B<meth> the default method for all DSA
|
||||
structures created later. B<NB>: This is true only whilst no ENGINE has
|
||||
structures created later.
|
||||
B<NB>: This is true only whilst no ENGINE has
|
||||
been set as a default for DSA, so this function is no longer recommended.
|
||||
This function is not thread-safe and should not be called at the same time
|
||||
as other OpenSSL functions.
|
||||
|
||||
DSA_get_default_method() returns a pointer to the current default
|
||||
DSA_METHOD. However, the meaningfulness of this result is dependent on
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
=head1 NAME
|
||||
|
||||
RSA_set_default_method, RSA_get_default_method, RSA_set_method,
|
||||
RSA_get_method, RSA_PKCS1_OpenSSL, RSA_null_method, RSA_flags,
|
||||
RSA_get_method, RSA_PKCS1_OpenSSL, RSA_flags,
|
||||
RSA_new_method - select RSA method
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
|
@ -20,8 +20,6 @@ RSA_new_method - select RSA method
|
|||
|
||||
RSA_METHOD *RSA_PKCS1_OpenSSL(void);
|
||||
|
||||
RSA_METHOD *RSA_null_method(void);
|
||||
|
||||
int RSA_flags(const RSA *rsa);
|
||||
|
||||
RSA *RSA_new_method(ENGINE *engine);
|
||||
|
|
@ -38,8 +36,11 @@ Initially, the default RSA_METHOD is the OpenSSL internal implementation,
|
|||
as returned by RSA_PKCS1_OpenSSL().
|
||||
|
||||
RSA_set_default_method() makes B<meth> the default method for all RSA
|
||||
structures created later. B<NB>: This is true only whilst no ENGINE has
|
||||
structures created later.
|
||||
B<NB>: This is true only whilst no ENGINE has
|
||||
been set as a default for RSA, so this function is no longer recommended.
|
||||
This function is not thread-safe and should not be called at the same time
|
||||
as other OpenSSL functions.
|
||||
|
||||
RSA_get_default_method() returns a pointer to the current default
|
||||
RSA_METHOD. However, the meaningfulness of this result is dependent on
|
||||
|
|
@ -168,6 +169,11 @@ not currently exist).
|
|||
|
||||
L<RSA_new(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
The RSA_null_method(), which was a partial attempt to avoid patent issues,
|
||||
was replaced to always return NULL in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
|
|
|||
|
|
@ -168,6 +168,8 @@ B<UI_CTRL_IS_REDOABLE>, which returns a flag saying if the used UI can
|
|||
be used again or not.
|
||||
|
||||
UI_set_default_method() changes the default UI method to the one given.
|
||||
This function is not thread-safe and should not be called at the same time
|
||||
as other OpenSSL functions.
|
||||
|
||||
UI_get_default_method() returns a pointer to the current default UI method.
|
||||
|
||||
|
|
|
|||
|
|
@ -36,16 +36,6 @@ int FuzzerInitialize(int *argc, char ***argv)
|
|||
idx = SSL_get_ex_data_X509_STORE_CTX_idx();
|
||||
RAND_add("", 1, ENTROPY_NEEDED);
|
||||
RAND_status();
|
||||
RSA_get_default_method();
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
DSA_get_default_method();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
EC_KEY_get_default_method();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DH
|
||||
DH_get_default_method();
|
||||
#endif
|
||||
comp_methods = SSL_COMP_get_compression_methods();
|
||||
OPENSSL_sk_sort((OPENSSL_STACK *)comp_methods);
|
||||
|
||||
|
|
|
|||
|
|
@ -484,16 +484,6 @@ int FuzzerInitialize(int *argc, char ***argv)
|
|||
idx = SSL_get_ex_data_X509_STORE_CTX_idx();
|
||||
RAND_add("", 1, ENTROPY_NEEDED);
|
||||
RAND_status();
|
||||
RSA_get_default_method();
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
DSA_get_default_method();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
EC_KEY_get_default_method();
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DH
|
||||
DH_get_default_method();
|
||||
#endif
|
||||
comp_methods = SSL_COMP_get_compression_methods();
|
||||
OPENSSL_sk_sort((OPENSSL_STACK *)comp_methods);
|
||||
|
||||
|
|
|
|||
|
|
@ -236,14 +236,13 @@ int RSA_flags(const RSA *r);
|
|||
|
||||
void RSA_set_default_method(const RSA_METHOD *meth);
|
||||
const RSA_METHOD *RSA_get_default_method(void);
|
||||
const RSA_METHOD *RSA_null_method(void);
|
||||
const RSA_METHOD *RSA_get_method(const RSA *rsa);
|
||||
int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
|
||||
|
||||
/* these are the actual RSA functions */
|
||||
const RSA_METHOD *RSA_PKCS1_OpenSSL(void);
|
||||
|
||||
const RSA_METHOD *RSA_null_method(void);
|
||||
|
||||
int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2);
|
||||
|
||||
DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey)
|
||||
|
|
@ -502,11 +501,11 @@ int ERR_load_RSA_strings(void);
|
|||
# define RSA_F_RSA_METH_SET1_NAME 163
|
||||
# define RSA_F_RSA_MGF1_TO_MD 157
|
||||
# define RSA_F_RSA_NEW_METHOD 106
|
||||
# define RSA_F_RSA_NULL 124
|
||||
# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132
|
||||
# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133
|
||||
# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134
|
||||
# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135
|
||||
# define RSA_F_RSA_NULL 0
|
||||
# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0
|
||||
# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0
|
||||
# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0
|
||||
# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0
|
||||
# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101
|
||||
# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102
|
||||
# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103
|
||||
|
|
|
|||
Loading…
Reference in New Issue