已合并
Modify the return value when no key usage. #1083
Dongjianwei001创建于 2月12日
Modify the return value when no key usage. #1083
已合并
共 5 个文件变更+18-15
| @@ -39,6 +39,7 @@ typedef enum { | |||
| 39 | HITLS_X509_ERR_CHAIN_DEPTH_UP_LIMIT, | 39 | HITLS_X509_ERR_CHAIN_DEPTH_UP_LIMIT, |
| 40 | HITLS_X509_ERR_VFY_AKI_SKI_NOT_MATCH, | 40 | HITLS_X509_ERR_VFY_AKI_SKI_NOT_MATCH, |
| 41 | HITLS_X509_ERR_VFY_ERR_SM2_USER_ID, | 41 | HITLS_X509_ERR_VFY_ERR_SM2_USER_ID, |
| 42 | + HITLS_X509_ERR_KU_IS_NONE, | ||
| 42 | 43 | ||
| 43 | HITLS_X509_ERR_CERT_NOT_CA = 0x04010001, | 44 | HITLS_X509_ERR_CERT_NOT_CA = 0x04010001, |
| 44 | HITLS_X509_ERR_CERT_EXIST, | 45 | HITLS_X509_ERR_CERT_EXIST, |
| @@ -46,8 +46,6 @@ typedef void HITLS_PKI_LibCtx; | |||
| 46 | 46 | ||
| 47 | 47 | ||
| 48 | 48 | ||
| 49 | - | ||
| 50 | - | ||
| 51 | typedef enum { | 49 | typedef enum { |
| 52 | HITLS_X509_REF_UP = 0, /** Increase the reference count of the object */ | 50 | HITLS_X509_REF_UP = 0, /** Increase the reference count of the object */ |
| 53 | 51 | ||
| @@ -1235,7 +1235,10 @@ static int32_t GetExtKeyUsage(HITLS_X509_Ext *ext, uint32_t *val, uint32_t valLe | |||
| 1235 | return HITLS_X509_ERR_INVALID_PARAM; | 1235 | return HITLS_X509_ERR_INVALID_PARAM; |
| 1236 | } | 1236 | } |
| 1237 | HITLS_X509_CertExt *certExt = (HITLS_X509_CertExt *)ext->extData; | 1237 | HITLS_X509_CertExt *certExt = (HITLS_X509_CertExt *)ext->extData; |
| 1238 | - *val = certExt->extFlags & HITLS_X509_EXT_FLAG_KUSAGE ? certExt->keyUsage : HITLS_X509_EXT_KU_NONE; | 1238 | + if ((certExt->extFlags & HITLS_X509_EXT_FLAG_KUSAGE) == 0) { |
| 1239 | + return HITLS_X509_ERR_KU_IS_NONE; | ||
| 1240 | + } | ||
| 1241 | + *val = certExt->keyUsage; | ||
| 1239 | return HITLS_PKI_SUCCESS; | 1242 | return HITLS_PKI_SUCCESS; |
| 1240 | } | 1243 | } |
| 1241 | 1244 | ||
| @@ -483,9 +483,10 @@ void SDV_X509_CERT_CTRL_FUNC_TC001(char *path, int expRawDataLen, int expSignAlg | |||
| 483 | ASSERT_EQ(ref, 2); | 483 | ASSERT_EQ(ref, 2); |
| 484 | HITLS_X509_CertFree(cert); | 484 | HITLS_X509_CertFree(cert); |
| 485 | 485 | ||
| 486 | - ASSERT_EQ(HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(keyUsage)), HITLS_PKI_SUCCESS); | 486 | + int32_t ret = HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(keyUsage)); |
| 487 | - ASSERT_EQ(keyUsage, expKeyUsage); | 487 | + ASSERT_TRUE(ret == HITLS_PKI_SUCCESS || ret == HITLS_X509_ERR_KU_IS_NONE); |
| 488 | - if (expKeyUsage != HITLS_X509_EXT_KU_NONE) { | 488 | + if (ret != HITLS_X509_ERR_KU_IS_NONE) { |
| 489 | + ASSERT_EQ(keyUsage, expKeyUsage); | ||
| 489 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_DIGITAL_SIGN) != 0, expKuDigitailSign); | 490 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_DIGITAL_SIGN) != 0, expKuDigitailSign); |
| 490 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_CERT_SIGN) != 0, expKuCertSign); | 491 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_CERT_SIGN) != 0, expKuCertSign); |
| 491 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_AGREEMENT) != 0, expKuKeyAgreement); | 492 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_AGREEMENT) != 0, expKuKeyAgreement); |
| @@ -577,9 +578,10 @@ void SDV_X509_CERT_DUP_FUNC_TC001(char *path, int expSignAlg, | |||
| 577 | ASSERT_EQ(HITLS_X509_CertCtrl(dest, HITLS_X509_GET_SIGNALG, &alg, sizeof(alg)), HITLS_PKI_SUCCESS); | 578 | ASSERT_EQ(HITLS_X509_CertCtrl(dest, HITLS_X509_GET_SIGNALG, &alg, sizeof(alg)), HITLS_PKI_SUCCESS); |
| 578 | ASSERT_EQ(alg, expSignAlg); | 579 | ASSERT_EQ(alg, expSignAlg); |
| 579 | 580 | ||
| 580 | - ASSERT_EQ(HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(keyUsage)), HITLS_PKI_SUCCESS); | 581 | + int32_t ret = HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(keyUsage)); |
| 581 | - ASSERT_EQ(keyUsage, expKeyUsage); | 582 | + ASSERT_TRUE(ret == HITLS_PKI_SUCCESS || ret == HITLS_X509_ERR_KU_IS_NONE); |
| 582 | - if (expKeyUsage != HITLS_X509_EXT_KU_NONE) { | 583 | + if (ret != HITLS_X509_ERR_KU_IS_NONE) { |
| 584 | + ASSERT_EQ(keyUsage, expKeyUsage); | ||
| 583 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_DIGITAL_SIGN) != 0, expKuDigitailSign); | 585 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_DIGITAL_SIGN) != 0, expKuDigitailSign); |
| 584 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_CERT_SIGN) != 0, expKuCertSign); | 586 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_CERT_SIGN) != 0, expKuCertSign); |
| 585 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_AGREEMENT) != 0, expKuKeyAgreement); | 587 | ASSERT_EQ((keyUsage & HITLS_X509_EXT_KU_KEY_AGREEMENT) != 0, expKuKeyAgreement); |
| @@ -21,7 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | -#include "hitls_error.h" | 24 | +#include "hitls_pki_errno.h" |
| 25 | 25 | ||
| 26 | 26 | ||
| 27 | 27 | ||
| @@ -171,11 +171,7 @@ static int32_t CertCheckKeyUsage(HITLS_Config *config, HITLS_CERT_X509 *cert, ui | |||
| 171 | { | 171 | { |
| 172 | uint32_t keyUsage = 0; | 172 | uint32_t keyUsage = 0; |
| 173 | int32_t ret = HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(uint32_t)); | 173 | int32_t ret = HITLS_X509_CertCtrl(cert, HITLS_X509_EXT_GET_KUSAGE, &keyUsage, sizeof(uint32_t)); |
| 174 | - if (ret != HITLS_SUCCESS) { | 174 | + if (ret == HITLS_X509_ERR_KU_IS_NONE) { |
| 175 | - BSL_ERR_PUSH_ERROR(ret); | ||
| 176 | - return ret; | ||
| 177 | - } | ||
| 178 | - if (keyUsage == HITLS_X509_EXT_KU_NONE) { | ||
| 179 | 175 | ||
| 180 | // Key usage must be present, otherwise the chain is broken. | 176 | // Key usage must be present, otherwise the chain is broken. |
| 181 | if (config == NULL) { | 177 | if (config == NULL) { |
| @@ -188,6 +184,9 @@ static int32_t CertCheckKeyUsage(HITLS_Config *config, HITLS_CERT_X509 *cert, ui | |||
| 188 | 184 | ||
| 189 | *res = true; | 185 | *res = true; |
| 190 | return HITLS_SUCCESS; | 186 | return HITLS_SUCCESS; |
| 187 | + } else if (ret != HITLS_SUCCESS) { | ||
| 188 | + BSL_ERR_PUSH_ERROR(ret); | ||
| 189 | + return ret; | ||
| 191 | } | 190 | } |
| 192 | *res = (keyUsage & inKeyUsage) != 0; | 191 | *res = (keyUsage & inKeyUsage) != 0; |
| 193 | return HITLS_SUCCESS; | 192 | return HITLS_SUCCESS; |