forked from wolfSSL/wolfssl
Fix merge conflict resolution in ECC_populate_EVP_PKEY
This commit is contained in:
@ -42480,7 +42480,7 @@ int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey)
|
|||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
case EVP_PKEY_EC:
|
case EVP_PKEY_EC:
|
||||||
WOLFSSL_MSG("populating ECC key");
|
WOLFSSL_MSG("populating ECC key");
|
||||||
if (ECC_populate_EVP_PKEY(pkey, (ecc_key*)pkey->ecc->internal)
|
if (ECC_populate_EVP_PKEY(pkey, pkey->ecc)
|
||||||
!= WOLFSSL_SUCCESS)
|
!= WOLFSSL_SUCCESS)
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
break;
|
break;
|
||||||
|
@ -6587,82 +6587,60 @@ int wolfSSL_EVP_PKEY_assign(WOLFSSL_EVP_PKEY *pkey, int type, void *key)
|
|||||||
/* try and populate public pkey_sz and pkey.ptr */
|
/* try and populate public pkey_sz and pkey.ptr */
|
||||||
static int ECC_populate_EVP_PKEY(EVP_PKEY* pkey, WOLFSSL_EC_KEY *key)
|
static int ECC_populate_EVP_PKEY(EVP_PKEY* pkey, WOLFSSL_EC_KEY *key)
|
||||||
{
|
{
|
||||||
<<<<<<< master
|
|
||||||
int derSz = 0;
|
int derSz = 0;
|
||||||
|
byte* derBuf = NULL;
|
||||||
ecc_key* ecc;
|
ecc_key* ecc;
|
||||||
|
|
||||||
if (pkey == NULL || key == NULL || key->internal == NULL)
|
if (pkey == NULL || key == NULL || key->internal == NULL)
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
|
|
||||||
ecc = (ecc_key*)key->internal;
|
ecc = (ecc_key*)key->internal;
|
||||||
if (key->pkcs8HeaderSz) {
|
|
||||||
/* when key has pkcs8 header the pkey should too */
|
|
||||||
if (wc_EccKeyToPKCS8(ecc, NULL, (word32*)&derSz) == LENGTH_ONLY_E) {
|
|
||||||
byte* derBuf = (byte*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
if (derBuf) {
|
|
||||||
if (wc_EccKeyToPKCS8(ecc, derBuf, (word32*)&derSz) >= 0) {
|
|
||||||
if (pkey->pkey.ptr) {
|
|
||||||
XFREE(pkey->pkey.ptr, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
}
|
|
||||||
pkey->pkey_sz = (int)derSz;
|
|
||||||
pkey->pkey.ptr = (char*)derBuf;
|
|
||||||
pkey->pkcs8HeaderSz = key->pkcs8HeaderSz;
|
|
||||||
return WOLFSSL_SUCCESS;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
=======
|
|
||||||
word32 derSz = 0;
|
|
||||||
byte* derBuf = NULL;
|
|
||||||
if (!pkey || !ecc)
|
|
||||||
return WOLFSSL_FAILURE;
|
|
||||||
if (ecc->type == ECC_PRIVATEKEY || ecc->type == ECC_PRIVATEKEY_ONLY) {
|
if (ecc->type == ECC_PRIVATEKEY || ecc->type == ECC_PRIVATEKEY_ONLY) {
|
||||||
#ifdef HAVE_PKCS8
|
#ifdef HAVE_PKCS8
|
||||||
if (wc_EccKeyToPKCS8(ecc, NULL, &derSz) == LENGTH_ONLY_E) {
|
if (key->pkcs8HeaderSz) {
|
||||||
derBuf = (byte*)XREALLOC(pkey->pkey.ptr, derSz, NULL,
|
/* when key has pkcs8 header the pkey should too */
|
||||||
DYNAMIC_TYPE_OPENSSL);
|
if (wc_EccKeyToPKCS8(ecc, NULL, (word32*)&derSz) == LENGTH_ONLY_E) {
|
||||||
if (derBuf != NULL) {
|
derBuf = (byte*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
pkey->pkey.ptr = (char*)derBuf;
|
if (derBuf) {
|
||||||
if (wc_EccKeyToPKCS8(ecc, derBuf, &derSz) < 0) {
|
if (wc_EccKeyToPKCS8(ecc, derBuf, (word32*)&derSz) >= 0) {
|
||||||
XFREE(derBuf, NULL, DYNAMIC_TYPE_OPENSSL);
|
if (pkey->pkey.ptr) {
|
||||||
>>>>>>> WIP
|
XFREE(pkey->pkey.ptr, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
derBuf = NULL;
|
}
|
||||||
}
|
pkey->pkey_sz = (int)derSz;
|
||||||
}
|
pkey->pkey.ptr = (char*)derBuf;
|
||||||
}
|
pkey->pkcs8HeaderSz = key->pkcs8HeaderSz;
|
||||||
#else
|
return WOLFSSL_SUCCESS;
|
||||||
derSz = (word32)wc_EccKeyDerSize(ecc, 1);
|
}
|
||||||
if (derSz > 0) {
|
else {
|
||||||
derBuf = (byte*)XREALLOC(pkey->pkey.ptr, derSz, NULL,
|
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
DYNAMIC_TYPE_OPENSSL);
|
derBuf = NULL;
|
||||||
if (derBuf != NULL) {
|
|
||||||
pkey->pkey.ptr = (char*)derBuf;
|
|
||||||
if (wc_EccKeyToDer(ecc, derBuf, derSz) < 0) {
|
|
||||||
XFREE(derBuf, NULL, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
derBuf = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_PKCS8 */
|
|
||||||
}
|
|
||||||
<<<<<<< master
|
|
||||||
else {
|
|
||||||
/* if not, the pkey will be traditional ecc key */
|
|
||||||
if ((derSz = wc_EccKeyDerSize(ecc, 1)) > 0) {
|
|
||||||
byte* derBuf = (byte*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
if (derBuf) {
|
|
||||||
if (wc_EccKeyToDer(ecc, derBuf, derSz) >= 0) {
|
|
||||||
if (pkey->pkey.ptr) {
|
|
||||||
XFREE(pkey->pkey.ptr, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
|
||||||
}
|
}
|
||||||
pkey->pkey_sz = (int)derSz;
|
|
||||||
pkey->pkey.ptr = (char*)derBuf;
|
|
||||||
return WOLFSSL_SUCCESS;
|
|
||||||
}
|
}
|
||||||
else {
|
}
|
||||||
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
}
|
||||||
=======
|
else
|
||||||
|
#endif /* HAVE_PKCS8 */
|
||||||
|
{
|
||||||
|
/* if not, the pkey will be traditional ecc key */
|
||||||
|
if ((derSz = wc_EccKeyDerSize(ecc, 1)) > 0) {
|
||||||
|
derBuf = (byte*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
if (derBuf) {
|
||||||
|
if (wc_EccKeyToDer(ecc, derBuf, derSz) >= 0) {
|
||||||
|
if (pkey->pkey.ptr) {
|
||||||
|
XFREE(pkey->pkey.ptr, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
}
|
||||||
|
pkey->pkey_sz = (int)derSz;
|
||||||
|
pkey->pkey.ptr = (char*)derBuf;
|
||||||
|
return WOLFSSL_SUCCESS;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
derBuf = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (ecc->type == ECC_PUBLICKEY) {
|
else if (ecc->type == ECC_PUBLICKEY) {
|
||||||
if ((derSz = (word32)wc_EccPublicKeyDerSize(ecc, 1)) > 0) {
|
if ((derSz = (word32)wc_EccPublicKeyDerSize(ecc, 1)) > 0) {
|
||||||
derBuf = (byte*)XREALLOC(pkey->pkey.ptr, derSz, NULL,
|
derBuf = (byte*)XREALLOC(pkey->pkey.ptr, derSz, NULL,
|
||||||
@ -6671,7 +6649,6 @@ static int ECC_populate_EVP_PKEY(EVP_PKEY* pkey, WOLFSSL_EC_KEY *key)
|
|||||||
pkey->pkey.ptr = (char*)derBuf;
|
pkey->pkey.ptr = (char*)derBuf;
|
||||||
if (wc_EccPublicKeyToDer(ecc, derBuf, derSz, 1) < 0) {
|
if (wc_EccPublicKeyToDer(ecc, derBuf, derSz, 1) < 0) {
|
||||||
XFREE(derBuf, NULL, DYNAMIC_TYPE_OPENSSL);
|
XFREE(derBuf, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
>>>>>>> WIP
|
|
||||||
derBuf = NULL;
|
derBuf = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user