Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 32 additions & 8 deletions src/wp_dh_kmgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -3016,6 +3016,30 @@ static int wp_dh_export_object(wp_DhEncDecCtx* ctx, wp_Dh* dh, size_t size,
return wp_dh_export(dh, ctx->selection, exportCb, exportCbArg);
}

/**
* Create a DH key object and import the key data into it.
*
* @param [in] ctx DH encoder/decoder context object.
* @param [in] selection Parts of key to import.
* @param [in] params Array of parameters with key data.
* @return New DH key object on success.
* @return NULL on failure.
*/
static wp_Dh* wp_dh_import_object(wp_DhEncDecCtx* ctx, int selection,
const OSSL_PARAM params[])
{
wp_Dh* dh;

WOLFPROV_ENTER(WP_LOG_COMP_DH, "wp_dh_import_object");

dh = wp_dh_new(ctx->provCtx);
if ((dh != NULL) && (!wp_dh_import(dh, selection, params))) {
wp_dh_free(dh);
dh = NULL;
}
return dh;
}

/*
* DH Parameters
*/
Expand Down Expand Up @@ -3100,7 +3124,7 @@ const OSSL_DISPATCH wp_dh_type_specific_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_dh_type_specific_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3130,7 +3154,7 @@ const OSSL_DISPATCH wp_dh_type_specific_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_dh_type_specific_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3214,7 +3238,7 @@ const OSSL_DISPATCH wp_dh_spki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_spki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3242,7 +3266,7 @@ const OSSL_DISPATCH wp_dh_spki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_spki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3326,7 +3350,7 @@ const OSSL_DISPATCH wp_dh_pki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3354,7 +3378,7 @@ const OSSL_DISPATCH wp_dh_pki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3386,7 +3410,7 @@ const OSSL_DISPATCH wp_dh_epki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3414,7 +3438,7 @@ const OSSL_DISPATCH wp_dh_epki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_dh_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_dh_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_dh_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_dh_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_dh_free },
{ 0, NULL }
};
Expand Down
41 changes: 31 additions & 10 deletions src/wp_ecc_kmgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -3128,6 +3128,27 @@ static int wp_ecc_export_object(wp_EccEncDecCtx* ctx, wp_Ecc* ecc, size_t size,
return wp_ecc_export(ecc, ctx->selection, exportCb, exportCbArg);
}

/**
* Create an ECC key object and import the key data into it.
*
* @param [in] ctx ECC encoder/decoder context object.
* @param [in] selection Parts of key to import.
* @param [in] params Array of parameters with key data.
* @return New ECC key object on success.
* @return NULL on failure.
*/
static wp_Ecc* wp_ecc_import_object(wp_EccEncDecCtx* ctx, int selection,
const OSSL_PARAM params[])
{
wp_Ecc* ecc = wp_ecc_new(ctx->provCtx);

if ((ecc != NULL) && (!wp_ecc_import(ecc, selection, params))) {
wp_ecc_free(ecc);
ecc = NULL;
}
return ecc;
}

/*
* ECC Type-Specific
*/
Expand Down Expand Up @@ -3211,7 +3232,7 @@ const OSSL_DISPATCH wp_ecc_type_specific_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_ecc_type_specific_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3242,7 +3263,7 @@ const OSSL_DISPATCH wp_ecc_type_specific_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_ecc_type_specific_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3326,7 +3347,7 @@ const OSSL_DISPATCH wp_ecc_spki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_spki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3354,7 +3375,7 @@ const OSSL_DISPATCH wp_ecc_spki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_spki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3438,7 +3459,7 @@ const OSSL_DISPATCH wp_ecc_pki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3466,7 +3487,7 @@ const OSSL_DISPATCH wp_ecc_pki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3498,7 +3519,7 @@ const OSSL_DISPATCH wp_ecc_epki_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3526,7 +3547,7 @@ const OSSL_DISPATCH wp_ecc_epki_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_SET_CTX_PARAMS, (DFUNC)wp_ecc_enc_dec_set_ctx_params },
{ OSSL_FUNC_ENCODER_DOES_SELECTION, (DFUNC)wp_ecc_pki_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3614,7 +3635,7 @@ const OSSL_DISPATCH wp_ecc_x9_62_der_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_ecc_x9_62_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down Expand Up @@ -3644,7 +3665,7 @@ const OSSL_DISPATCH wp_ecc_x9_62_pem_encoder_functions[] = {
{ OSSL_FUNC_ENCODER_DOES_SELECTION,
(DFUNC)wp_ecc_x9_62_does_selection },
{ OSSL_FUNC_ENCODER_ENCODE, (DFUNC)wp_ecc_encode },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import },
{ OSSL_FUNC_ENCODER_IMPORT_OBJECT, (DFUNC)wp_ecc_import_object },
{ OSSL_FUNC_ENCODER_FREE_OBJECT, (DFUNC)wp_ecc_free },
{ 0, NULL }
};
Expand Down
Loading
Loading