API参考
载入中...
搜索中...
未找到
bn_montbin.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_MONTBIN_H
17#define BN_MONTBIN_H
18
19#include "hitls_build.h"
20#ifdef HITLS_CRYPTO_BN
21
22#include <stdint.h>
23#include "crypt_bn.h"
24
25#ifdef __cplusplus
26extern "c" {
27#endif
28
29/* r = reduce(r * r) mod mont */
30int32_t MontSqrBin(BN_UINT *r, BN_Mont *mont, BN_Optimizer *opt, bool consttime);
31
32/* r = reduce(a * b) mod mont */
33int32_t MontMulBin(BN_UINT *r, const BN_UINT *a, const BN_UINT *b, BN_Mont *mont,
34 BN_Optimizer *opt, bool consttime);
35
36/* r = reduce(r * montRR) mod mont */
37int32_t MontEncBin(BN_UINT *r, BN_Mont *mont, BN_Optimizer *opt, bool consttime);
38
39/* r = reduce(x * 1) mod m = (x * R') mod m */
40void Reduce(BN_UINT *r, BN_UINT *x, const BN_UINT *one, const BN_UINT *m, uint32_t mSize, BN_UINT m0);
41
42#ifdef __cplusplus
43}
44#endif
45
46#endif /* HITLS_CRYPTO_BN */
47
48#endif