Merge pull request #3941 from JacobBarthelmeh/Compatibility-Layer

add implementation of EC_KEY_set_group
pull/3952/head
toddouska 2021-04-07 16:20:50 -07:00 committed by GitHub
commit de8653be35
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 8 deletions

View File

@ -36387,8 +36387,8 @@ WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void)
goto error;
}
/* curve group */
external->group = wolfSSL_EC_GROUP_new_by_curve_name(ECC_CURVE_DEF);
/* Group unknown at creation */
external->group = wolfSSL_EC_GROUP_new_by_curve_name(NID_undef);
if (external->group == NULL) {
WOLFSSL_MSG("wolfSSL_EC_KEY_new malloc WOLFSSL_EC_GROUP failure");
goto error;
@ -36433,18 +36433,28 @@ void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key)
}
}
#ifndef NO_WOLFSSL_STUB
/* set the group in WOLFSSL_EC_KEY and return WOLFSSL_SUCCESS on success */
int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group)
{
(void)key;
(void)group;
if (key == NULL || group == NULL)
return WOLFSSL_FAILURE;
WOLFSSL_ENTER("wolfSSL_EC_KEY_set_group");
WOLFSSL_STUB("EC_KEY_set_group");
return -1;
if (key->group != NULL) {
/* free the current group */
wolfSSL_EC_GROUP_free(key->group);
}
key->group = wolfSSL_EC_GROUP_dup(group);
if (key->group == NULL) {
return WOLFSSL_FAILURE;
}
return WOLFSSL_SUCCESS;
}
#endif
int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key)
{

View File

@ -36901,6 +36901,28 @@ static void test_wolfSSL_NCONF(void)
}
#endif /* OPENSSL_ALL */
static void test_wolfSSL_EC_KEY_set_group(void)
{
#if defined(HAVE_ECC) && !defined(NO_ECC256) && !defined(NO_ECC_SECP) && \
defined(OPENSSL_EXTRA)
EC_KEY *key = NULL;
EC_GROUP *group = NULL;
const EC_GROUP *group2 = NULL;
printf(testingFmt, "wolfSSL_EC_KEY_dup()");
AssertNotNull(group = EC_GROUP_new_by_curve_name(NID_X9_62_prime256v1));
AssertNotNull(key = EC_KEY_new());
AssertIntEQ(EC_KEY_set_group(key, group), WOLFSSL_SUCCESS);
AssertNotNull(group2 = EC_KEY_get0_group(key));
AssertIntEQ(EC_GROUP_cmp(group2, group, NULL), 0);
EC_GROUP_free(group);
EC_KEY_free(key);
printf(resultFmt, passed);
#endif
}
static void test_wolfSSL_X509V3_EXT_get(void) {
#if !defined(NO_FILESYSTEM) && defined (OPENSSL_ALL)
@ -42433,6 +42455,7 @@ void ApiTest(void)
test_CRYPTO_THREADID_xxx();
test_ENGINE_cleanup();
test_wolfSSL_EC_KEY_set_group();
#if defined(OPENSSL_ALL)
test_wolfSSL_X509_PUBKEY_get();
test_wolfSSL_sk_CIPHER_description();