1 /*
2 * This file is part of the openHiTLS project.
3 *
4 * openHiTLS is licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 *
8 * http://license.coscl.org.cn/MulanPSL2
9 *
10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13 * See the Mulan PSL v2 for more details.
14 */
15
16 #include "hitls_build.h"
17 #if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY)
18
19 #include "crypt_local_types.h"
20 #include "crypt_utils.h"
21 typedef struct {
22 CRYPT_MD_AlgId id;
23 uint32_t mdSize;
24 } CRYPT_MdInfo;
25
CRYPT_GetMdSizeById(CRYPT_MD_AlgId id)26 uint32_t CRYPT_GetMdSizeById(CRYPT_MD_AlgId id)
27 {
28 // need synchronize with enum CRYPT_MD_AlgId
29 static CRYPT_MdInfo mdInfo[] = {
30 {.id = CRYPT_MD_MD5, .mdSize = 16},
31 {.id = CRYPT_MD_SHA1, .mdSize = 20},
32 {.id = CRYPT_MD_SHA224, .mdSize = 28},
33 {.id = CRYPT_MD_SHA256, .mdSize = 32},
34 {.id = CRYPT_MD_SHA384, .mdSize = 48},
35 {.id = CRYPT_MD_SHA512, .mdSize = 64},
36 {.id = CRYPT_MD_SHA3_224, .mdSize = 28},
37 {.id = CRYPT_MD_SHA3_256, .mdSize = 32},
38 {.id = CRYPT_MD_SHA3_384, .mdSize = 48},
39 {.id = CRYPT_MD_SHA3_512, .mdSize = 64},
40 {.id = CRYPT_MD_SHAKE128, .mdSize = 0},
41 {.id = CRYPT_MD_SHAKE256, .mdSize = 0},
42 {.id = CRYPT_MD_SM3, .mdSize = 32},
43 {.id = CRYPT_MD_MAX, .mdSize = 0},
44 };
45 uint32_t i = 0;
46
47 while (mdInfo[i].id != CRYPT_MD_MAX) {
48 if (mdInfo[i].id == id) {
49 return mdInfo[i].mdSize;
50 }
51 i++;
52 }
53
54 return 0;
55 }
56 #endif
57