37 const void *
private,
void *
public );
39 const void *
private,
const void *
partner,
42 const void *modulus,
size_t len,
43 const void *generator,
size_t generator_len );
58#define FFDHE_GROUP( _name, _exchange, _constant, _bits, _expbits, _lsb ) \
59 static struct ffdhe_group _name ## _group = { \
61 .constant = (_constant), \
62 .len = ( _bits / 8 ), \
63 .size = bigint_required_size ( _bits / 8 ), \
64 .explen = ( ( _expbits + 7 ) / 8 ), \
65 .expsize = bigint_required_size ( ( _expbits + 7 ) / 8 ), \
66 .lsb32 = cpu_to_be32 ( _lsb ), \
68 struct exchange_algorithm _exchange = { \
70 .privsize = ( ( _expbits + 7 ) / 8 ), \
71 .pubsize = ( _bits / 8 ), \
72 .sharedsize = ( _bits / 8 ), \
73 .share = ffdhe_share, \
74 .agree = ffdhe_agree, \
75 .priv = &_name ## _group, \
struct eth_slow_lacp_entity_tlv partner
Partner information.
int ffdhe_share(struct exchange_algorithm *exchange, const void *private, void *public)
Share public key.
struct exchange_algorithm modp3072_algorithm
struct exchange_algorithm modp2048_algorithm
struct exchange_algorithm ffdhe4096_algorithm
struct exchange_algorithm modp4096_algorithm
struct exchange_algorithm ffdhe2048_algorithm
int ffdhe_has_params(struct exchange_algorithm *exchange, const void *modulus, size_t len, const void *generator, size_t generator_len)
Check group parameters.
int ffdhe_share(struct exchange_algorithm *exchange, const void *private, void *public)
Share public key.
static int is_ffdhe(struct exchange_algorithm *exchange)
Check if key exchange algorithm is a finite field DHE group.
int ffdhe_agree(struct exchange_algorithm *exchange, const void *private, const void *partner, void *shared)
Agree shared secret.
struct exchange_algorithm ffdhe3072_algorithm
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
A key exchange algorithm.
int(* share)(struct exchange_algorithm *exchange, const void *private, void *public)
Share public key.
A finite field DHE group.
const uint8_t * constant
Group constant.
size_t explen
Length of (short) exponents.
uint32_t lsb32
Least significant interesting bits of modulus (big-endian).
unsigned int expsize
Number of elements in exponent values.
const char * name
Group name.
unsigned int size
Number of elements in scalar values.
size_t len
Length of raw scalar values.