• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 ECP_NISTP224_H
17 #define ECP_NISTP224_H
18 
19 #include "hitls_build.h"
20 #if defined(HITLS_CRYPTO_CURVE_NISTP224) && defined(HITLS_CRYPTO_NIST_USE_ACCEL)
21 
22 #include "ecc_local.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /**
29  * @brief   Convert the point information pt to the affine coordinate system and refresh the data to r.
30  *
31  * @param   para [IN] Curve parameters
32  * @param   r [OUT] Output point information
33  * @param   pt [IN] Input point information
34  *
35  * @retval CRYPT_SUCCESS    succeeded
36  * @retval For details about other errors, see crypt_errno.h
37  */
38 int32_t ECP224_Point2Affine(const ECC_Para *para, ECC_Point *r, const ECC_Point *pt);
39 
40 /**
41  * @brief   Calculate r = k1 * G + k2 * pt
42  *
43  * @param   para [IN] Curve parameters
44  * @param   r [OUT] Output point information
45  * @param   k1 [IN] Scalar 1, with a maximum of 224 bits
46  * @param   k2 [IN] Scalar 2, with a maximum of 224 bits
47  * @param   pt [IN] Point data
48  *
49  * @retval CRYPT_SUCCESS    succeeded
50  * @retval For details about other errors, see crypt_errno.h
51  */
52 int32_t ECP224_PointMulAdd(
53     ECC_Para *para, ECC_Point *r, const BN_BigNum *k1, const BN_BigNum *k2, const ECC_Point *pt);
54 
55 /**
56  * @brief   If pt != NULL, calculate r = k * pt; otherwise, calculate r = k * G
57  *
58  * @param   para [IN] Curve parameter information
59  * @param   r [OUT] Output point information
60  * @param   k [IN] scalar with a maximum of 224 bits.
61  * @param   pt [IN] Point data, which can be set to NULL.
62  *
63  * @retval CRYPT_SUCCESS    set successfully
64  * @retval For details about other errors, see crypt_errno.h
65  */
66 int32_t ECP224_PointMul(ECC_Para *para, ECC_Point *r, const BN_BigNum *k, const ECC_Point *pt);
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif /* defined(HITLS_CRYPTO_CURVE_NISTP224) && defined(HITLS_CRYPTO_NIST_USE_ACCEL) */
73 
74 #endif
75