mirror of
https://github.com/openharmony/third_party_openhitls.git
synced 2026-07-21 00:25:52 -04:00
Ignore unsupported decoder providers during chain discovery
Cherry-picked from: https://gitcode.com/openHiTLS/openhitls/merge_requests/1507 Signed-off-by: Dongjianwei001 <dongjianwei1@huawei.com>
This commit is contained in:
@@ -414,7 +414,7 @@ static int32_t ProcessEachProviderDecoder(CRYPT_EAL_ProvMgrCtx *ctx, void *args)
|
||||
}
|
||||
|
||||
ret = CRYPT_EAL_ProviderQuery(ctx, CRYPT_EAL_OPERAID_DECODER, &algInfos);
|
||||
if (ret == CRYPT_NOT_SUPPORT) {
|
||||
if (algInfos == NULL) {
|
||||
return CRYPT_SUCCESS;
|
||||
}
|
||||
if (ret != CRYPT_SUCCESS) {
|
||||
|
||||
@@ -36,9 +36,11 @@
|
||||
#include "sal_file.h"
|
||||
#include "crypt_codecskey.h"
|
||||
#include "crypt_eal_codecs.h"
|
||||
#include "crypt_eal_provider.h"
|
||||
#include "crypt_eal_rand.h"
|
||||
#include "hitls_x509_local.h"
|
||||
#include "stub_utils.h"
|
||||
|
||||
#include "test.h"
|
||||
/* END_HEADER */
|
||||
|
||||
/* ============================================================================
|
||||
@@ -49,6 +51,32 @@ STUB_DEFINE_RET1(void *, BSL_SAL_Malloc, uint32_t);
|
||||
#endif
|
||||
STUB_DEFINE_RET2(int32_t, HITLS_X509_ParseCertTbs, BSL_ASN1_Buffer *, HITLS_X509_Cert *);
|
||||
|
||||
#if defined(HITLS_PKI_X509_CRT_PARSE) && defined(HITLS_CRYPTO_PROVIDER)
|
||||
#define HITLS_X509_SHA256_LIB_NAME "provider_sha256." BSL_SAL_DL_EXT
|
||||
#define HITLS_X509_SHA256_PROVIDER_PATH "provider_test_data/path2"
|
||||
|
||||
static CRYPT_EAL_LibCtx *X509_LoadSha256ProviderWithDefault(void)
|
||||
{
|
||||
CRYPT_EAL_LibCtx *libCtx = NULL;
|
||||
int32_t ret = CRYPT_EAL_RandInit(CRYPT_RAND_SHA256, NULL, NULL, NULL, 0);
|
||||
if (ret != CRYPT_SUCCESS && ret != CRYPT_EAL_ERR_DRBG_REPEAT_INIT) {
|
||||
ASSERT_EQ(ret, CRYPT_SUCCESS);
|
||||
}
|
||||
|
||||
libCtx = CRYPT_EAL_LibCtxNew();
|
||||
ASSERT_TRUE(libCtx != NULL);
|
||||
|
||||
ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(libCtx, HITLS_X509_SHA256_PROVIDER_PATH), CRYPT_SUCCESS);
|
||||
ASSERT_EQ(CRYPT_EAL_ProviderLoad(libCtx, 0, HITLS_X509_SHA256_LIB_NAME, NULL, NULL), CRYPT_SUCCESS);
|
||||
ASSERT_EQ(CRYPT_EAL_ProviderLoad(libCtx, 0, "default", NULL, NULL), CRYPT_SUCCESS);
|
||||
return libCtx;
|
||||
|
||||
EXIT:
|
||||
CRYPT_EAL_LibCtxFree(libCtx);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static uint32_t g_certSerialMemAllocCount = 0;
|
||||
static uint32_t g_certSerialMemFreeCount = 0;
|
||||
|
||||
@@ -926,6 +954,36 @@ EXIT:
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void SDV_X509_PROVIDER_CERT_PARSE_WITH_UNSUPPORTED_PROVIDER_TC001(char *attrName, char *format, char *path, int certNum)
|
||||
{
|
||||
#if !defined(HITLS_PKI_X509_CRT_PARSE) || !defined(HITLS_CRYPTO_PROVIDER)
|
||||
(void)attrName;
|
||||
(void)format;
|
||||
(void)path;
|
||||
(void)certNum;
|
||||
SKIP_TEST();
|
||||
#else
|
||||
TestMemInit();
|
||||
BSL_GLOBAL_Init();
|
||||
CRYPT_EAL_LibCtx *libCtx = X509_LoadSha256ProviderWithDefault();
|
||||
HITLS_X509_List *list = NULL;
|
||||
ASSERT_TRUE(libCtx != NULL);
|
||||
|
||||
ASSERT_EQ(HITLS_X509_ProviderCertParseBundleFile((HITLS_PKI_LibCtx *)libCtx, attrName, format, path, &list),
|
||||
HITLS_PKI_SUCCESS);
|
||||
ASSERT_EQ(BSL_LIST_COUNT(list), certNum);
|
||||
ASSERT_TRUE(TestIsErrStackEmpty());
|
||||
|
||||
EXIT:
|
||||
BSL_LIST_FREE(list, (BSL_LIST_PFUNC_FREE)HITLS_X509_CertFree);
|
||||
CRYPT_EAL_RandDeinitEx(libCtx);
|
||||
CRYPT_EAL_LibCtxFree(libCtx);
|
||||
BSL_GLOBAL_DeInit();
|
||||
#endif
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void SDV_X509_CERT_SET_VERIOSN_FUNC_TC001(void)
|
||||
{
|
||||
|
||||
@@ -3436,6 +3436,9 @@ SDV_X509_PROVIDER_CERT_PARSE_BUNDLE_BUFF_FUNC_TC001:"ASN1":"../testdata/cert/sm2
|
||||
SDV_X509_PROVIDER_CERT_PARSE_BUNDLE_BUFF_FUNC_TC001 provider parse bundle buff with 1 der cert
|
||||
SDV_X509_PROVIDER_CERT_PARSE_BUNDLE_BUFF_FUNC_TC001:"ASN1":"../testdata/cert/asn1/sha256Rsaca.crt":1
|
||||
|
||||
SDV_X509_PROVIDER_CERT_PARSE_WITH_UNSUPPORTED_PROVIDER_TC001 provider parse rsa bundle file with unsupported sha256 provider
|
||||
SDV_X509_PROVIDER_CERT_PARSE_WITH_UNSUPPORTED_PROVIDER_TC001:"provider=default":"PEM":"../testdata/tls/certificate/pem/rsa_sha256/server.pem":1
|
||||
|
||||
SDV_X509_CERT_GET_BCONS_TEST_TC001
|
||||
SDV_X509_CERT_GET_BCONS_TEST_TC001:BSL_FORMAT_ASN1:"../testdata/cert/asn1/ecdsa_cert/ca.der":1:1:-1
|
||||
|
||||
|
||||
+2
-1
@@ -29,6 +29,7 @@
|
||||
#include "bsl_err_internal.h"
|
||||
|
||||
#define CRYPT_EAL_DEFAULT_ATTR "provider=sha256_test"
|
||||
#define PROVIDER_SHA256_NOT_SUPPORT 0x7F000001
|
||||
|
||||
|
||||
CRYPT_SHA2_256_Ctx *Sha256NewCtx(void *provCtx, int32_t algId)
|
||||
@@ -65,7 +66,7 @@ static int32_t CRYPT_EAL_Sha256ProvQuery(void *provCtx, int32_t operaId, const C
|
||||
*algInfos = defMds;
|
||||
return CRYPT_SUCCESS;
|
||||
default:
|
||||
return CRYPT_NOT_SUPPORT;
|
||||
return PROVIDER_SHA256_NOT_SUPPORT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user