mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 20:24:39 +02:00
Rebase fixes
This commit is contained in:
31
src/ssl.c
31
src/ssl.c
@@ -38981,7 +38981,6 @@ void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key)
|
|||||||
WOLFSSL_ENTER("wolfSSL_EC_KEY_free");
|
WOLFSSL_ENTER("wolfSSL_EC_KEY_free");
|
||||||
|
|
||||||
if (key != NULL) {
|
if (key != NULL) {
|
||||||
int doFree = 0;
|
|
||||||
void* heap = key->heap;
|
void* heap = key->heap;
|
||||||
|
|
||||||
#ifndef SINGLE_THREADED
|
#ifndef SINGLE_THREADED
|
||||||
@@ -39008,30 +39007,14 @@ void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key)
|
|||||||
wc_ecc_free((ecc_key*)key->internal);
|
wc_ecc_free((ecc_key*)key->internal);
|
||||||
XFREE(key->internal, heap, DYNAMIC_TYPE_ECC);
|
XFREE(key->internal, heap, DYNAMIC_TYPE_ECC);
|
||||||
}
|
}
|
||||||
#endif
|
wolfSSL_BN_free(key->priv_key);
|
||||||
/* only free if all references to it are done */
|
wolfSSL_EC_POINT_free(key->pub_key);
|
||||||
key->refCount--;
|
wolfSSL_EC_GROUP_free(key->group);
|
||||||
if (key->refCount == 0) {
|
InitwolfSSL_ECKey(key); /* set back to NULLs for safety */
|
||||||
doFree = 1;
|
|
||||||
}
|
|
||||||
#ifndef SINGLE_THREADED
|
|
||||||
wc_UnLockMutex(&key->refMutex);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (doFree) {
|
XFREE(key, heap, DYNAMIC_TYPE_ECC);
|
||||||
if (key->internal != NULL) {
|
(void)heap;
|
||||||
wc_ecc_free((ecc_key*)key->internal);
|
/* key = NULL, don't try to access or double free it */
|
||||||
XFREE(key->internal, heap, DYNAMIC_TYPE_ECC);
|
|
||||||
}
|
|
||||||
wolfSSL_BN_free(key->priv_key);
|
|
||||||
wolfSSL_EC_POINT_free(key->pub_key);
|
|
||||||
wolfSSL_EC_GROUP_free(key->group);
|
|
||||||
InitwolfSSL_ECKey(key); /* set back to NULLs for safety */
|
|
||||||
|
|
||||||
XFREE(key, heap, DYNAMIC_TYPE_ECC);
|
|
||||||
(void)heap;
|
|
||||||
/* key = NULL, don't try to access or double free it */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7061,6 +7061,7 @@ WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get0_EC_KEY(WOLFSSL_EVP_PKEY *pkey)
|
|||||||
|
|
||||||
WOLFSSL_EC_KEY* wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY* key)
|
WOLFSSL_EC_KEY* wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY* key)
|
||||||
{
|
{
|
||||||
|
WOLFSSL_EC_KEY* local = NULL;
|
||||||
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_get1_EC_KEY");
|
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_get1_EC_KEY");
|
||||||
|
|
||||||
if (key == NULL || key->type != EVP_PKEY_EC) {
|
if (key == NULL || key->type != EVP_PKEY_EC) {
|
||||||
@@ -7074,18 +7075,30 @@ WOLFSSL_EC_KEY* wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY* key)
|
|||||||
local = key->ecc;
|
local = key->ecc;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
local = wolfSSL_EC_KEY_new();
|
key->ecc = local = wolfSSL_EC_KEY_new();
|
||||||
if (local == NULL) {
|
if (local == NULL) {
|
||||||
WOLFSSL_MSG("Error creating a new WOLFSSL_EC_KEY structure");
|
WOLFSSL_MSG("Error creating a new WOLFSSL_EC_KEY structure");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (wolfSSL_EC_KEY_LoadDer(local,
|
||||||
|
(const unsigned char*)key->pkey.ptr,
|
||||||
|
key->pkey_sz) != WOLFSSL_SUCCESS) {
|
||||||
|
/* now try public key */
|
||||||
|
if (wolfSSL_EC_KEY_LoadDer_ex(local,
|
||||||
|
(const unsigned char*)key->pkey.ptr, key->pkey_sz,
|
||||||
|
WOLFSSL_EC_KEY_LOAD_PUBLIC) != WOLFSSL_SUCCESS) {
|
||||||
|
|
||||||
if (wolfSSL_EC_KEY_up_ref(key->ecc) != WOLFSSL_SUCCESS) {
|
wolfSSL_EC_KEY_free(local);
|
||||||
WOLFSSL_MSG("wolfSSL_EC_KEY_up_ref error");
|
local = NULL;
|
||||||
return NULL;
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WOLFSSL_MSG("WOLFSSL_EVP_PKEY does not hold an EC key");
|
||||||
}
|
}
|
||||||
|
|
||||||
return key->ecc;
|
return local;
|
||||||
}
|
}
|
||||||
#endif /* HAVE_ECC */
|
#endif /* HAVE_ECC */
|
||||||
|
|
||||||
@@ -7112,6 +7125,11 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key)
|
|||||||
|
|
||||||
clearEVPPkeyKeys(pkey);
|
clearEVPPkeyKeys(pkey);
|
||||||
|
|
||||||
|
if (wolfSSL_DH_up_ref(key) != WOLFSSL_SUCCESS) {
|
||||||
|
WOLFSSL_MSG("Failed to increase dh key ref count");
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
pkey->dh = key;
|
pkey->dh = key;
|
||||||
pkey->ownDh = 1; /* pkey does not own DH but needs to call free on it */
|
pkey->ownDh = 1; /* pkey does not own DH but needs to call free on it */
|
||||||
pkey->type = EVP_PKEY_DH;
|
pkey->type = EVP_PKEY_DH;
|
||||||
@@ -7347,6 +7365,8 @@ int wolfSSL_EVP_PKEY_set1_EC_KEY(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_EC_KEY *key)
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_set1_EC_KEY");
|
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_set1_EC_KEY");
|
||||||
|
if (pkey == NULL || key == NULL)
|
||||||
|
return WOLFSSL_FAILURE;
|
||||||
clearEVPPkeyKeys(pkey);
|
clearEVPPkeyKeys(pkey);
|
||||||
if (wolfSSL_EC_KEY_up_ref(key) != WOLFSSL_SUCCESS) {
|
if (wolfSSL_EC_KEY_up_ref(key) != WOLFSSL_SUCCESS) {
|
||||||
WOLFSSL_MSG("wolfSSL_EC_KEY_up_ref failed");
|
WOLFSSL_MSG("wolfSSL_EC_KEY_up_ref failed");
|
||||||
|
@@ -119,10 +119,6 @@ struct WOLFSSL_EC_KEY {
|
|||||||
char form; /* Either POINT_CONVERSION_UNCOMPRESSED or
|
char form; /* Either POINT_CONVERSION_UNCOMPRESSED or
|
||||||
* POINT_CONVERSION_COMPRESSED */
|
* POINT_CONVERSION_COMPRESSED */
|
||||||
word16 pkcs8HeaderSz;
|
word16 pkcs8HeaderSz;
|
||||||
#ifndef SINGLE_THREADED
|
|
||||||
wolfSSL_Mutex refMutex; /* ref count mutex */
|
|
||||||
#endif
|
|
||||||
int refCount; /* reference count */
|
|
||||||
|
|
||||||
/* option bits */
|
/* option bits */
|
||||||
byte inSet:1; /* internal set from external ? */
|
byte inSet:1; /* internal set from external ? */
|
||||||
@@ -214,8 +210,6 @@ WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_ex(void* heap, int devId);
|
|||||||
WOLFSSL_API
|
WOLFSSL_API
|
||||||
WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void);
|
WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void);
|
||||||
WOLFSSL_API
|
WOLFSSL_API
|
||||||
int wolfSSL_EC_KEY_up_ref(WOLFSSL_EC_KEY* key);
|
|
||||||
WOLFSSL_API
|
|
||||||
int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group);
|
int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group);
|
||||||
WOLFSSL_API
|
WOLFSSL_API
|
||||||
int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key);
|
int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key);
|
||||||
@@ -321,7 +315,6 @@ typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve;
|
|||||||
#define EC_KEY_free wolfSSL_EC_KEY_free
|
#define EC_KEY_free wolfSSL_EC_KEY_free
|
||||||
#define EC_KEY_up_ref wolfSSL_EC_KEY_up_ref
|
#define EC_KEY_up_ref wolfSSL_EC_KEY_up_ref
|
||||||
#define EC_KEY_dup wolfSSL_EC_KEY_dup
|
#define EC_KEY_dup wolfSSL_EC_KEY_dup
|
||||||
#define EC_KEY_up_ref wolfSSL_EC_KEY_up_ref
|
|
||||||
#define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key
|
#define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key
|
||||||
#define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group
|
#define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group
|
||||||
#define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key
|
#define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key
|
||||||
|
Reference in New Issue
Block a user