summaryrefslogtreecommitdiff
path: root/crypto/encode_decode/decoder_pkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/encode_decode/decoder_pkey.c')
-rw-r--r--crypto/encode_decode/decoder_pkey.c173
1 files changed, 95 insertions, 78 deletions
diff --git a/crypto/encode_decode/decoder_pkey.c b/crypto/encode_decode/decoder_pkey.c
index ad5e2805319b..38fa7e5b5db5 100644
--- a/crypto/encode_decode/decoder_pkey.c
+++ b/crypto/encode_decode/decoder_pkey.c
@@ -20,28 +20,28 @@
#include "encoder_local.h"
int OSSL_DECODER_CTX_set_passphrase(OSSL_DECODER_CTX *ctx,
- const unsigned char *kstr,
- size_t klen)
+ const unsigned char *kstr,
+ size_t klen)
{
return ossl_pw_set_passphrase(&ctx->pwdata, kstr, klen);
}
int OSSL_DECODER_CTX_set_passphrase_ui(OSSL_DECODER_CTX *ctx,
- const UI_METHOD *ui_method,
- void *ui_data)
+ const UI_METHOD *ui_method,
+ void *ui_data)
{
return ossl_pw_set_ui_method(&ctx->pwdata, ui_method, ui_data);
}
int OSSL_DECODER_CTX_set_pem_password_cb(OSSL_DECODER_CTX *ctx,
- pem_password_cb *cb, void *cbarg)
+ pem_password_cb *cb, void *cbarg)
{
return ossl_pw_set_pem_password_cb(&ctx->pwdata, cb, cbarg);
}
int OSSL_DECODER_CTX_set_passphrase_cb(OSSL_DECODER_CTX *ctx,
- OSSL_PASSPHRASE_CALLBACK *cb,
- void *cbarg)
+ OSSL_PASSPHRASE_CALLBACK *cb,
+ void *cbarg)
{
return ossl_pw_set_ossl_passphrase_cb(&ctx->pwdata, cb, cbarg);
}
@@ -59,13 +59,13 @@ struct decoder_pkey_data_st {
int selection;
STACK_OF(EVP_KEYMGMT) *keymgmts;
- char *object_type; /* recorded object data type, may be NULL */
- void **object; /* Where the result should end up */
+ char *object_type; /* recorded object data type, may be NULL */
+ void **object; /* Where the result should end up */
};
static int decoder_construct_pkey(OSSL_DECODER_INSTANCE *decoder_inst,
- const OSSL_PARAM *params,
- void *construct_data)
+ const OSSL_PARAM *params,
+ void *construct_data)
{
struct decoder_pkey_data_st *data = construct_data;
OSSL_DECODER *decoder = OSSL_DECODER_INSTANCE_get_decoder(decoder_inst);
@@ -126,8 +126,9 @@ static int decoder_construct_pkey(OSSL_DECODER_INSTANCE *decoder_inst,
if (!EVP_KEYMGMT_up_ref(keymgmt))
return 0;
} else if ((keymgmt = EVP_KEYMGMT_fetch(data->libctx,
- data->object_type,
- data->propq)) != NULL) {
+ data->object_type,
+ data->propq))
+ != NULL) {
keymgmt_prov = EVP_KEYMGMT_get0_provider(keymgmt);
}
@@ -161,9 +162,9 @@ static int decoder_construct_pkey(OSSL_DECODER_INSTANCE *decoder_inst,
* |import_data.keydata| is as much an indicator.
*/
(void)decoder->export_object(decoderctx,
- object_ref, object_ref_sz,
- &evp_keymgmt_util_try_import,
- &import_data);
+ object_ref, object_ref_sz,
+ &evp_keymgmt_util_try_import,
+ &import_data);
keydata = import_data.keydata;
import_data.keydata = NULL;
}
@@ -213,7 +214,7 @@ static void collect_keymgmt(EVP_KEYMGMT *keymgmt, void *arg)
if (!EVP_KEYMGMT_up_ref(keymgmt) /* ref++ */)
return;
if (sk_EVP_KEYMGMT_push(keymgmts, keymgmt) <= 0) {
- EVP_KEYMGMT_free(keymgmt); /* ref-- */
+ EVP_KEYMGMT_free(keymgmt); /* ref-- */
return;
}
}
@@ -223,7 +224,7 @@ struct collect_decoder_data_st {
OSSL_DECODER_CTX *ctx;
int total;
- unsigned int error_occurred:1;
+ unsigned int error_occurred : 1;
};
static void collect_decoder(OSSL_DECODER *decoder, void *arg)
@@ -248,17 +249,19 @@ static void collect_decoder(OSSL_DECODER *decoder, void *arg)
* it's seen as taking anything.
*/
if (decoder->does_selection != NULL
- && !decoder->does_selection(provctx, data->ctx->selection))
+ && !decoder->does_selection(provctx, data->ctx->selection))
return;
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out,
- "(ctx %p) Checking out decoder %p:\n"
- " %s with %s\n",
- (void *)data->ctx, (void *)decoder,
- OSSL_DECODER_get0_name(decoder),
- OSSL_DECODER_get0_properties(decoder));
- } OSSL_TRACE_END(DECODER);
+ "(ctx %p) Checking out decoder %p:\n"
+ " %s with %s\n",
+ (void *)data->ctx, (void *)decoder,
+ OSSL_DECODER_get0_name(decoder),
+ OSSL_DECODER_get0_properties(decoder));
+ }
+ OSSL_TRACE_END(DECODER);
end_i = sk_OPENSSL_CSTRING_num(data->names);
for (i = 0; i < end_i; i++) {
@@ -278,14 +281,16 @@ static void collect_decoder(OSSL_DECODER *decoder, void *arg)
return;
}
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out,
- "(ctx %p) Checking out decoder %p:\n"
- " %s with %s\n",
- (void *)data->ctx, (void *)decoder,
- OSSL_DECODER_get0_name(decoder),
- OSSL_DECODER_get0_properties(decoder));
- } OSSL_TRACE_END(DECODER);
+ "(ctx %p) Checking out decoder %p:\n"
+ " %s with %s\n",
+ (void *)data->ctx, (void *)decoder,
+ OSSL_DECODER_get0_name(decoder),
+ OSSL_DECODER_get0_properties(decoder));
+ }
+ OSSL_TRACE_END(DECODER);
if (!ossl_decoder_ctx_add_decoder_inst(data->ctx, di)) {
ossl_decoder_instance_free(di);
@@ -304,9 +309,9 @@ static void collect_decoder(OSSL_DECODER *decoder, void *arg)
}
int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
- EVP_PKEY **pkey, const char *keytype,
- OSSL_LIB_CTX *libctx,
- const char *propquery)
+ EVP_PKEY **pkey, const char *keytype,
+ OSSL_LIB_CTX *libctx,
+ const char *propquery)
{
struct decoder_pkey_data_st *process_data = NULL;
STACK_OF(OPENSSL_CSTRING) *names = NULL;
@@ -317,21 +322,23 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
int i, end;
if (keytype != NULL
- && (strcmp(keytype, "id-ecPublicKey") == 0
- || strcmp(keytype, "1.2.840.10045.2.1") == 0))
+ && (strcmp(keytype, "id-ecPublicKey") == 0
+ || strcmp(keytype, "1.2.840.10045.2.1") == 0))
isecoid = 1;
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out,
- "(ctx %p) Looking for decoders producing %s%s%s%s%s%s\n",
- (void *)ctx,
- keytype != NULL ? keytype : "",
- keytype != NULL ? " keys" : "keys of any type",
- input_type != NULL ? " from " : "",
- input_type != NULL ? input_type : "",
- input_structure != NULL ? " with " : "",
- input_structure != NULL ? input_structure : "");
- } OSSL_TRACE_END(DECODER);
+ "(ctx %p) Looking for decoders producing %s%s%s%s%s%s\n",
+ (void *)ctx,
+ keytype != NULL ? keytype : "",
+ keytype != NULL ? " keys" : "keys of any type",
+ input_type != NULL ? " from " : "",
+ input_type != NULL ? input_type : "",
+ input_structure != NULL ? " with " : "",
+ input_structure != NULL ? input_structure : "");
+ }
+ OSSL_TRACE_END(DECODER);
if ((process_data = OPENSSL_zalloc(sizeof(*process_data))) == NULL
|| (propquery != NULL
@@ -348,7 +355,7 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
/* First, find all keymgmts to form goals */
EVP_KEYMGMT_do_all_provided(libctx, collect_keymgmt,
- process_data->keymgmts);
+ process_data->keymgmts);
/* Then, we collect all the keymgmt names */
end = sk_EVP_KEYMGMT_num(process_data->keymgmts);
@@ -363,8 +370,8 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
* we have seen that OID we try both key types
*/
if (keytype == NULL
- || EVP_KEYMGMT_is_a(keymgmt, keytype)
- || (isecoid && EVP_KEYMGMT_is_a(keymgmt, "SM2"))) {
+ || EVP_KEYMGMT_is_a(keymgmt, keytype)
+ || (isecoid && EVP_KEYMGMT_is_a(keymgmt, "SM2"))) {
if (!EVP_KEYMGMT_names_do_all(keymgmt, collect_name, names)) {
ERR_raise(ERR_LIB_OSSL_DECODER, ERR_R_INTERNAL_ERROR);
goto err;
@@ -372,54 +379,60 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
}
}
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
end = sk_OPENSSL_CSTRING_num(names);
BIO_printf(trc_out,
- " Found %d keytypes (possibly with duplicates)",
- end);
+ " Found %d keytypes (possibly with duplicates)",
+ end);
for (i = 0; i < end; i++)
BIO_printf(trc_out, "%s%s",
- i == 0 ? ": " : ", ",
- sk_OPENSSL_CSTRING_value(names, i));
+ i == 0 ? ": " : ", ",
+ sk_OPENSSL_CSTRING_value(names, i));
BIO_printf(trc_out, "\n");
- } OSSL_TRACE_END(DECODER);
+ }
+ OSSL_TRACE_END(DECODER);
/*
* Finally, find all decoders that have any keymgmt of the collected
* keymgmt names
*/
{
- struct collect_decoder_data_st collect_decoder_data = { NULL, };
+ struct collect_decoder_data_st collect_decoder_data = {
+ NULL,
+ };
collect_decoder_data.names = names;
collect_decoder_data.ctx = ctx;
OSSL_DECODER_do_all_provided(libctx,
- collect_decoder, &collect_decoder_data);
+ collect_decoder, &collect_decoder_data);
sk_OPENSSL_CSTRING_free(names);
names = NULL;
if (collect_decoder_data.error_occurred)
goto err;
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out,
- "(ctx %p) Got %d decoders producing keys\n",
- (void *)ctx, collect_decoder_data.total);
- } OSSL_TRACE_END(DECODER);
+ "(ctx %p) Got %d decoders producing keys\n",
+ (void *)ctx, collect_decoder_data.total);
+ }
+ OSSL_TRACE_END(DECODER);
}
if (OSSL_DECODER_CTX_get_num_decoders(ctx) != 0) {
if (!OSSL_DECODER_CTX_set_construct(ctx, decoder_construct_pkey)
|| !OSSL_DECODER_CTX_set_construct_data(ctx, process_data)
|| !OSSL_DECODER_CTX_set_cleanup(ctx,
- decoder_clean_pkey_construct_arg))
+ decoder_clean_pkey_construct_arg))
goto err;
process_data = NULL; /* Avoid it being freed */
}
ok = 1;
- err:
+err:
decoder_clean_pkey_construct_arg(process_data);
sk_OPENSSL_CSTRING_free(names);
@@ -428,10 +441,10 @@ int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx,
OSSL_DECODER_CTX *
OSSL_DECODER_CTX_new_for_pkey(EVP_PKEY **pkey,
- const char *input_type,
- const char *input_structure,
- const char *keytype, int selection,
- OSSL_LIB_CTX *libctx, const char *propquery)
+ const char *input_type,
+ const char *input_structure,
+ const char *keytype, int selection,
+ OSSL_LIB_CTX *libctx, const char *propquery)
{
OSSL_DECODER_CTX *ctx = NULL;
@@ -440,24 +453,28 @@ OSSL_DECODER_CTX_new_for_pkey(EVP_PKEY **pkey,
return NULL;
}
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out,
- "(ctx %p) Looking for %s decoders with selection %d\n",
- (void *)ctx, keytype, selection);
+ "(ctx %p) Looking for %s decoders with selection %d\n",
+ (void *)ctx, keytype, selection);
BIO_printf(trc_out, " input type: %s, input structure: %s\n",
- input_type, input_structure);
- } OSSL_TRACE_END(DECODER);
+ input_type, input_structure);
+ }
+ OSSL_TRACE_END(DECODER);
if (OSSL_DECODER_CTX_set_input_type(ctx, input_type)
&& OSSL_DECODER_CTX_set_input_structure(ctx, input_structure)
&& OSSL_DECODER_CTX_set_selection(ctx, selection)
&& ossl_decoder_ctx_setup_for_pkey(ctx, pkey, keytype,
- libctx, propquery)
+ libctx, propquery)
&& OSSL_DECODER_CTX_add_extra(ctx, libctx, propquery)) {
- OSSL_TRACE_BEGIN(DECODER) {
+ OSSL_TRACE_BEGIN(DECODER)
+ {
BIO_printf(trc_out, "(ctx %p) Got %d decoders\n",
- (void *)ctx, OSSL_DECODER_CTX_get_num_decoders(ctx));
- } OSSL_TRACE_END(DECODER);
+ (void *)ctx, OSSL_DECODER_CTX_get_num_decoders(ctx));
+ }
+ OSSL_TRACE_END(DECODER);
return ctx;
}