API参考
载入中...
搜索中...
未找到
bn_optimizer.h
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#ifndef BN_OPTIMIZER_H
17#define BN_OPTIMIZER_H
18
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_BN
21
22#include "bn_basic.h"
23
24#ifdef __cplusplus
25extern "c" {
26#endif
27
28#define CRYPT_OPTIMIZER_MAXDEEP 10
29
30/*
31 * Peak memory usage of the bn process during RSA key generation. BN_NUM stands for HITLS_CRYPT_OPTIMIZER_BN_NUM.
32 * |----------------------------+--------+--------+--------+--------+--------|
33 * | key bits\memory(Kb)\BN_NUM | 16 | 24 | 32 | 48 | 64 |
34 * |----------------------------+--------+--------+--------+--------+--------|
35 * | rsa1024 | 9.0 | 9.7 | 9.7 | 10.8 | 12.0 |
36 * | rsa2048 | 20.4 | 21.0 | 21.1 | 22.6 | 22.6 |
37 * | rsa3072 | 37.8 | 38.3 | 38.5 | 40.0 | 40.0 |
38 * | rsa4096 | 73.5 | 73.5 | 74.2 | 75.7 | 75.7 |
39 * |----------------------------+--------+--------+--------+--------+--------|
40 *
41 * The number of chunk during RSA key generation. BN_NUM stands for HITLS_CRYPT_OPTIMIZER_BN_NUM.
42 * |----------------------------+--------+--------+--------+--------+--------|
43 * |key bits\chunk number\BN_NUM| 16 | 24 | 32 | 48 | 64 |
44 * |----------------------------+--------+--------+--------+--------+--------|
45 * | rsa1024 | 352 | 352 | 193 | 193 | 193 |
46 * | rsa2048 | 1325 | 1035 | 745 | 745 | 455 |
47 * | rsa3072 | 1597 | 1227 | 857 | 857 | 487 |
48 * | rsa4096 | 2522 | 1967 | 1412 | 1412 | 857 |
49 * |----------------------------+--------+--------+--------+--------+--------|
50 */
51#ifndef HITLS_CRYPT_OPTIMIZER_BN_NUM
52 #define HITLS_CRYPT_OPTIMIZER_BN_NUM 32
53#endif
54
55typedef struct ChunkStruct {
56 uint32_t occupied;
57 BN_BigNum bigNums[HITLS_CRYPT_OPTIMIZER_BN_NUM];
58 struct ChunkStruct *prev;
59 struct ChunkStruct *next;
60} Chunk;
61
62struct BnOptimizer {
63 uint32_t deep; /* depth of stack */
64 uint32_t used[CRYPT_OPTIMIZER_MAXDEEP]; /* size of the used stack */
65 Chunk *curChunk;
66 void *libCtx;
67};
68
69#ifdef __cplusplus
70}
71#endif
72
73#endif /* HITLS_CRYPTO_BN */
74
75#endif