/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (c) 2021 HiSilicon */ #ifndef _CRYTO_ECC_CURVE_H #define _CRYTO_ECC_CURVE_H #include <linux/types.h> /** * struct ecc_point - elliptic curve point in affine coordinates * * @x: X coordinate in vli form. * @y: Y coordinate in vli form. * @ndigits: Length of vlis in u64 qwords. */ struct ecc_point { … }; /** * struct ecc_curve - definition of elliptic curve * * @name: Short name of the curve. * @nbits: The number of bits of a curve. * @g: Generator point of the curve. * @p: Prime number, if Barrett's reduction is used for this curve * pre-calculated value 'mu' is appended to the @p after ndigits. * Use of Barrett's reduction is heuristically determined in * vli_mmod_fast(). * @n: Order of the curve group. * @a: Curve parameter a. * @b: Curve parameter b. */ struct ecc_curve { … }; /** * ecc_get_curve() - get elliptic curve; * @curve_id: Curves IDs: * defined in 'include/crypto/ecdh.h'; * * Returns curve if get curve succssful, NULL otherwise */ const struct ecc_curve *ecc_get_curve(unsigned int curve_id); /** * ecc_get_curve25519() - get curve25519 curve; * * Returns curve25519 */ const struct ecc_curve *ecc_get_curve25519(void); #endif