mirror of https://github.com/openssl/openssl
Better error messages if there are no encoders/decoders/store loaders
If you don't have the base or default providers loaded and therefore there are no encoders/decoders or store loaders then the error messages can be cryptic. We provide better hints about how to fix the problem. Fixes #13798 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15306)
This commit is contained in:
parent
9be5f9a869
commit
40692ed7c8
|
@ -17,6 +17,8 @@
|
|||
static const ERR_STRING_DATA OSSL_DECODER_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_OSSL_DECODER, 0, OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT),
|
||||
"could not decode object"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_DECODER, 0, OSSL_DECODER_R_DECODER_NOT_FOUND),
|
||||
"decoder not found"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_DECODER, 0, OSSL_DECODER_R_MISSING_GET_PARAMS),
|
||||
"missing get params"},
|
||||
{0, NULL}
|
||||
|
|
|
@ -48,6 +48,14 @@ int OSSL_DECODER_from_bio(OSSL_DECODER_CTX *ctx, BIO *in)
|
|||
int ok = 0;
|
||||
BIO *new_bio = NULL;
|
||||
|
||||
if (OSSL_DECODER_CTX_get_num_decoders(ctx) == 0) {
|
||||
ERR_raise_data(ERR_LIB_OSSL_DECODER, OSSL_DECODER_R_DECODER_NOT_FOUND,
|
||||
"No decoders were found. For standard decoders you need "
|
||||
"at least one of the default or base providers "
|
||||
"available. Did you forget to load them?");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (BIO_tell(in) < 0) {
|
||||
new_bio = BIO_new(BIO_f_readbuffer());
|
||||
if (new_bio == NULL)
|
||||
|
|
|
@ -49,6 +49,14 @@ int OSSL_ENCODER_to_bio(OSSL_ENCODER_CTX *ctx, BIO *out)
|
|||
data.bio = out;
|
||||
data.current_encoder_inst_index = OSSL_ENCODER_CTX_get_num_encoders(ctx);
|
||||
|
||||
if (data.current_encoder_inst_index == 0) {
|
||||
ERR_raise_data(ERR_LIB_OSSL_ENCODER, OSSL_ENCODER_R_ENCODER_NOT_FOUND,
|
||||
"No encoders were found. For standard encoders you need "
|
||||
"at least one of the default or base providers "
|
||||
"available. Did you forget to load them?");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return encoder_process(&data) > 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -812,6 +812,7 @@ OCSP_R_UNKNOWN_MESSAGE_DIGEST:119:unknown message digest
|
|||
OCSP_R_UNKNOWN_NID:120:unknown nid
|
||||
OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE:129:unsupported requestorname type
|
||||
OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT:101:could not decode object
|
||||
OSSL_DECODER_R_DECODER_NOT_FOUND:102:decoder not found
|
||||
OSSL_DECODER_R_MISSING_GET_PARAMS:100:missing get params
|
||||
OSSL_ENCODER_R_ENCODER_NOT_FOUND:101:encoder not found
|
||||
OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY:100:incorrect property query
|
||||
|
@ -831,6 +832,7 @@ OSSL_STORE_R_NOT_A_NAME:103:not a name
|
|||
OSSL_STORE_R_NOT_A_PRIVATE_KEY:102:not a private key
|
||||
OSSL_STORE_R_NOT_A_PUBLIC_KEY:122:not a public key
|
||||
OSSL_STORE_R_NOT_PARAMETERS:104:not parameters
|
||||
OSSL_STORE_R_NO_LOADERS_FOUND:123:no loaders found
|
||||
OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR:114:passphrase callback error
|
||||
OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE:108:path must be absolute
|
||||
OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES:119:\
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
|
@ -40,6 +40,8 @@ static const ERR_STRING_DATA OSSL_STORE_str_reasons[] = {
|
|||
"not a public key"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_STORE, 0, OSSL_STORE_R_NOT_PARAMETERS),
|
||||
"not parameters"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_STORE, 0, OSSL_STORE_R_NO_LOADERS_FOUND),
|
||||
"no loaders found"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_STORE, 0, OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR),
|
||||
"passphrase callback error"},
|
||||
{ERR_PACK(ERR_LIB_OSSL_STORE, 0, OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE),
|
||||
|
|
|
@ -144,8 +144,13 @@ OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq,
|
|||
if (loader != NULL)
|
||||
OSSL_TRACE1(STORE, "Found loader for scheme %s\n", schemes[i]);
|
||||
|
||||
if (loader_ctx == NULL)
|
||||
if (loader_ctx == NULL) {
|
||||
ERR_raise_data(ERR_LIB_OSSL_STORE, OSSL_STORE_R_NO_LOADERS_FOUND,
|
||||
"No store loaders were found. For standard store "
|
||||
"loaders you need at least one of the default or base "
|
||||
"providers available. Did you forget to load them?");
|
||||
goto err;
|
||||
}
|
||||
|
||||
OSSL_TRACE2(STORE, "Opened %s => %p\n", uri, (void *)loader_ctx);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* OSSL_DECODER reason codes.
|
||||
*/
|
||||
# define OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT 101
|
||||
# define OSSL_DECODER_R_DECODER_NOT_FOUND 102
|
||||
# define OSSL_DECODER_R_MISSING_GET_PARAMS 100
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
# define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102
|
||||
# define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122
|
||||
# define OSSL_STORE_R_NOT_PARAMETERS 104
|
||||
# define OSSL_STORE_R_NO_LOADERS_FOUND 123
|
||||
# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114
|
||||
# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108
|
||||
# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119
|
||||
|
|
Loading…
Reference in New Issue