63 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Copyright (c) 2021 HiSilicon */3 4#ifndef _CRYTO_ECC_CURVE_H5#define _CRYTO_ECC_CURVE_H6 7#include <linux/types.h>8 9/**10 * struct ecc_point - elliptic curve point in affine coordinates11 *12 * @x: X coordinate in vli form.13 * @y: Y coordinate in vli form.14 * @ndigits: Length of vlis in u64 qwords.15 */16struct ecc_point {17 u64 *x;18 u64 *y;19 u8 ndigits;20};21 22/**23 * struct ecc_curve - definition of elliptic curve24 *25 * @name: Short name of the curve.26 * @nbits: The number of bits of a curve.27 * @g: Generator point of the curve.28 * @p: Prime number, if Barrett's reduction is used for this curve29 * pre-calculated value 'mu' is appended to the @p after ndigits.30 * Use of Barrett's reduction is heuristically determined in31 * vli_mmod_fast().32 * @n: Order of the curve group.33 * @a: Curve parameter a.34 * @b: Curve parameter b.35 */36struct ecc_curve {37 char *name;38 u32 nbits;39 struct ecc_point g;40 u64 *p;41 u64 *n;42 u64 *a;43 u64 *b;44};45 46/**47 * ecc_get_curve() - get elliptic curve;48 * @curve_id: Curves IDs:49 * defined in 'include/crypto/ecdh.h';50 *51 * Returns curve if get curve succssful, NULL otherwise52 */53const struct ecc_curve *ecc_get_curve(unsigned int curve_id);54 55/**56 * ecc_get_curve25519() - get curve25519 curve;57 *58 * Returns curve2551959 */60const struct ecc_curve *ecc_get_curve25519(void);61 62#endif63