• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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