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
25
extern
"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
55
typedef
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
62
struct
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
crypto
bn
src
bn_optimizer.h
制作者
1.15.0