API参考
载入中...
搜索中...
未找到
sm9_fp.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 _SM9_FP_H_
17
#define _SM9_FP_H_
18
19
#include "hitls_build.h"
20
#ifdef HITLS_CRYPTO_SM9
21
22
#include "sm9_bn.h"
23
#include "sm9_curve.h"
24
#include <string.h>
25
26
// Field P
27
#define SM9_Fp_Assign(Fpz, Fp_x) \
28
do { \
29
if ((Fpz) != (Fp_x)) \
30
memcpy((Fpz), (Fp_x), 4 * sm9_sys_para.wsize); \
31
} while (0)
32
#define SM9_Fp_SetOne(Fpz) \
33
memcpy(Fpz, sm9_sys_para.Q_R1, 4 * sm9_sys_para.wsize)
34
#define SM9_Fq_IsZero(Fpx) \
35
bn_is_zero(Fpx, sm9_sys_para.wsize)
36
37
#define SM9_Fp_Add(Fp_z, Fp_x, Fp_y) \
38
bn_mod_add(Fp_z, Fp_x, Fp_y, sm9_sys_para.EC_Q, sm9_sys_para.wsize)
39
40
#define SM9_Fp_Sub(Fp_z, Fp_x, Fp_y) \
41
bn_mod_sub(Fp_z, Fp_x, Fp_y, sm9_sys_para.EC_Q, sm9_sys_para.wsize)
42
43
#define SM9_Fp_Neg(Fp_z, Fp_x) \
44
bn_mod_sub(Fp_z, sm9_sys_para.EC_Q, Fp_x, sm9_sys_para.EC_Q, sm9_sys_para.wsize)
45
46
#define SM9_Fp_LastRes(Fp_x) \
47
bn_get_res(Fp_x, sm9_sys_para.EC_Q, sm9_sys_para.wsize)
48
49
#define SM9_Fp_Mul(Fp_z, Fp_x, Fp_y) \
50
bn_mont_mul(Fp_z, Fp_x, Fp_y, sm9_sys_para.EC_Q, sm9_sys_para.Q_Mc, sm9_sys_para.wsize)
51
52
#define SM9_Fp_Squ(Fp_z, Fp_x) \
53
bn_mont_mul(Fp_z, Fp_x, Fp_x, sm9_sys_para.EC_Q, sm9_sys_para.Q_Mc, sm9_sys_para.wsize)
54
55
#define SM9_Fp_Inv(Fp_z, Fp_x) \
56
do { \
57
bn_mont_mul(Fp_z, Fp_x, sm9_sys_para.EC_One, sm9_sys_para.EC_Q, sm9_sys_para.Q_Mc, sm9_sys_para.wsize); \
58
BN_GetInv_Mont(Fp_z, Fp_z, sm9_sys_para.EC_Q, sm9_sys_para.Q_Mc, sm9_sys_para.Q_R2, sm9_sys_para.wsize); \
59
} while (0)
60
61
#define SM9_Fp_MulRoot(Fp_z, Fp_x) \
62
bn_mont_mul(Fp_z, Fp_x, sm9_sys_para.EC_Root_Mont, sm9_sys_para.EC_Q, sm9_sys_para.Q_Mc, sm9_sys_para.wsize);
63
64
// Field N
65
#define SM9_Bn_ReadBytes(x, src) \
66
ByteToBN(src, BNByteLen, x, BNWordLen)
67
68
#define SM9_Bn_IsZero(x) \
69
bn_is_zero(x, sm9_sys_para.wsize)
70
71
#define SM9_Fn_LastRes(Fp_x) \
72
bn_get_res(Fp_x, sm9_sys_para.EC_N, sm9_sys_para.wsize)
73
74
#define SM9_Fn_Sub(Fn_z, Fn_x, Fn_y) \
75
bn_mod_sub(Fn_z, Fn_x, Fn_y, sm9_sys_para.EC_N, sm9_sys_para.wsize)
76
77
#define SM9_Fn_Add(Fn_z, Fn_x, Fn_y) \
78
bn_mod_add(Fn_z, Fn_x, Fn_y, sm9_sys_para.EC_N, sm9_sys_para.wsize)
79
80
#ifdef __cplusplus
81
extern
"C"
{
82
#endif
83
84
void
SM9_Fp_ReadBytes(uint32_t *dst,
const
uint8_t *src);
85
86
void
SM9_Fp_WriteBytes(uint8_t *dst, uint32_t *src);
87
88
#ifdef __cplusplus
89
}
90
#endif
91
92
#endif
// HITLS_CRYPTO_SM9
93
94
#endif
// !_SM9_FP_H_
crypto
sm9
src
sm9_fp.h
制作者
1.15.0