#include <openssl/evperr.h>
#include <openssl/ecerr.h>
#include <openssl/x509err.h>
+#include <openssl/trace.h>
#include "internal/passphrase.h"
#include "crypto/decoder.h"
#include "encoder_local.h"
int ossl_decoder_ctx_add_decoder_inst(OSSL_DECODER_CTX *ctx,
OSSL_DECODER_INSTANCE *di)
{
+ int ok;
+
if (ctx->decoder_insts == NULL
&& (ctx->decoder_insts =
sk_OSSL_DECODER_INSTANCE_new_null()) == NULL) {
return 0;
}
- return (sk_OSSL_DECODER_INSTANCE_push(ctx->decoder_insts, di) > 0);
+ ok = (sk_OSSL_DECODER_INSTANCE_push(ctx->decoder_insts, di) > 0);
+ if (ok) {
+ OSSL_TRACE_BEGIN(DECODER) {
+ BIO_printf(trc_out,
+ "(ctx %p) Added decoder instance %p (decoder %p) with:\n",
+ (void *)ctx, (void *)di, (void *)di->decoder);
+ BIO_printf(trc_out,
+ " input type: %s, input structure: %s\n",
+ di->input_type, di->input_structure);
+ } OSSL_TRACE_END(DECODER);
+ }
+ return ok;
}
int OSSL_DECODER_CTX_add_decoder(OSSL_DECODER_CTX *ctx, OSSL_DECODER *decoder)
decoder_process, &new_data,
ossl_pw_passphrase_callback_dec,
&new_data.ctx->pwdata);
+
+ OSSL_TRACE_BEGIN(DECODER) {
+ BIO_printf(trc_out,
+ "(ctx %p) Running decoder instance %p => %d\n",
+ (void *)new_data.ctx, (void *)new_decoder_inst, ok);
+ } OSSL_TRACE_END(DECODER);
+
if (ok)
break;
err = ERR_peek_last_error();
#include <openssl/ui.h>
#include <openssl/decoder.h>
#include <openssl/safestack.h>
+#include <openssl/trace.h>
#include "crypto/evp.h"
#include "crypto/decoder.h"
#include "encoder_local.h"
ERR_raise(ERR_LIB_OSSL_DECODER, ERR_R_MALLOC_FAILURE);
return NULL;
}
+
+ OSSL_TRACE_BEGIN(DECODER) {
+ BIO_printf(trc_out,
+ "(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);
+
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_EVP_PKEY(ctx, pkey, keytype,
libctx, propquery)
- && OSSL_DECODER_CTX_add_extra(ctx, libctx, propquery))
+ && OSSL_DECODER_CTX_add_extra(ctx, libctx, propquery)) {
+ 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);
return ctx;
+ }
OSSL_DECODER_CTX_free(ctx);
return NULL;
TRACE_CATEGORY_(X509V3_POLICY),
TRACE_CATEGORY_(BN_CTX),
TRACE_CATEGORY_(STORE),
+ TRACE_CATEGORY_(DECODER),
};
const char *OSSL_trace_get_category_name(int num)
# define OSSL_TRACE_CATEGORY_BN_CTX 12
# define OSSL_TRACE_CATEGORY_CMP 13
# define OSSL_TRACE_CATEGORY_STORE 14
-# define OSSL_TRACE_CATEGORY_NUM 15
+# define OSSL_TRACE_CATEGORY_DECODER 15
+# define OSSL_TRACE_CATEGORY_NUM 16
/* Returns the trace category number for the given |name| */
int OSSL_trace_get_category_num(const char *name);