brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 7d90c5e Raw
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