API参考
载入中...
搜索中...
未找到
sm9_fp2.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_FP2_H_
17#define _SM9_FP2_H_
18
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_SM9
21
22#include "sm9_fp.h"
23#include "sm9_curve.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29void SM9_Fp2_Reset(SM9_Fp2 *pElement);
30void SM9_Fp2_Assign(SM9_Fp2 *pFp2_D, SM9_Fp2 *pFp2_S);
31void SM9_Fp2_SetOne(SM9_Fp2 *pFp2_E);
32int32_t SM9_Fp2_IsZero(SM9_Fp2 *pElement);
33
34// pFp2_R = pFp2_A + pFp2_B
35void SM9_Fp2_Add(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A, SM9_Fp2 *pFp2_B);
36// pFp2_R = pFp2_A - pFp2_B
37void SM9_Fp2_Sub(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A, SM9_Fp2 *pFp2_B);
38// pFp2_R = - pFp2_A
39void SM9_Fp2_Neg(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
40
41// pFp2_R = pFp2_A * pFp2_B
42void SM9_Fp2_Mul(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A, SM9_Fp2 *pFp2_B);
43// pFp2_R = pFp2_A ^ 2
44void SM9_Fp2_Squ(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
45// pFp2_R = pFp2_A ^ -1
46void SM9_Fp2_Inv(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
47
48// r = a * b = (a0 + a1*u) * (b0 + 0*u)
49void SM9_Fp2_Mul_Coef0(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A, uint32_t *pFp_B);
50// r = a * u = (a0 + a1*u) * u
51void SM9_Fp2_Mul_U(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
52// r = a * v^q = (a0 + a1*u) * v^q
53void SM9_Fp2_Mul_Vq(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
54// r = a * w^q = (a0 + a1*u) * w^q
55void SM9_Fp2_Mul_Wq(SM9_Fp2 *pFp2_R, SM9_Fp2 *pFp2_A);
56
57void SM9_Fp2_FrobMap(SM9_Fp2 *pwRes, SM9_Fp2 *pwA);
58
59#ifdef __cplusplus
60}
61#endif
62
63#endif // HITLS_CRYPTO_SM9
64
65#endif // !_SM9_FP2_H_
66