53 int dhe_key (
const void *modulus,
size_t len,
const void *generator,
54 size_t generator_len,
const void *
partner,
size_t partner_len,
55 const void *
private,
size_t private_len,
void *
public,
72 DBGC2 ( modulus,
"DHE %p modulus:\n", modulus );
74 DBGC2 ( modulus,
"DHE %p generator:\n", modulus );
75 DBGC2_HDA ( modulus, 0, generator, generator_len );
76 DBGC2 ( modulus,
"DHE %p partner public key:\n", modulus );
78 DBGC2 ( modulus,
"DHE %p private key:\n", modulus );
79 DBGC2_HDA ( modulus, 0,
private, private_len );
82 if ( generator_len >
len ) {
83 DBGC ( modulus,
"DHE %p overlength generator\n", modulus );
87 if ( partner_len >
len ) {
88 DBGC ( modulus,
"DHE %p overlength partner public key\n",
93 if ( private_len >
len ) {
94 DBGC ( modulus,
"DHE %p overlength private key\n", modulus );
116 DBGC2 ( modulus,
"DHE %p public key:\n", modulus );
123 DBGC2 ( modulus,
"DHE %p shared secret:\n", modulus );
#define EINVAL
Invalid argument.
struct arbelprm_rc_send_wqe rc
#define bigint_mod_exp(base, modulus, exponent, result, tmp)
Perform modular exponentiation of big integers.
int dhe_key(const void *modulus, size_t len, const void *generator, size_t generator_len, const void *partner, size_t partner_len, const void *private, size_t private_len, void *public, void *shared)
Calculate Diffie-Hellman key.
#define bigint_init(value, data, len)
Initialise big integer.
struct golan_eq_context ctx
#define ENOMEM
Not enough space.
#define bigint_mod_exp_tmp_len(modulus, exponent)
Calculate temporary working space required for moduluar exponentiation.
#define bigint_t(size)
Define a big-integer type.
#define bigint_done(value, out, len)
Finalise big integer.
static void(* free)(struct refcnt *refcnt))
#define bigint_required_size(len)
Determine number of elements required for a big-integer type.
void * malloc(size_t size)
Allocate memory.
Ephemeral Diffie-Hellman key exchange.
uint8_t size
Entry size (in 32-bit words)
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
struct eth_slow_lacp_entity_tlv partner
Partner information.