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,
71 DBGC2 ( modulus,
"DHE %p modulus:\n", modulus );
73 DBGC2 ( modulus,
"DHE %p generator:\n", modulus );
74 DBGC2_HDA ( modulus, 0, generator, generator_len );
75 DBGC2 ( modulus,
"DHE %p partner public key:\n", modulus );
77 DBGC2 ( modulus,
"DHE %p private key:\n", modulus );
78 DBGC2_HDA ( modulus, 0,
private, private_len );
81 if ( generator_len >
len ) {
82 DBGC ( modulus,
"DHE %p overlength generator\n", modulus );
86 if ( partner_len >
len ) {
87 DBGC ( modulus,
"DHE %p overlength partner public key\n",
92 if ( private_len >
len ) {
93 DBGC ( modulus,
"DHE %p overlength private key\n", modulus );
115 DBGC2 ( modulus,
"DHE %p public key:\n", modulus );
122 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.
uint8_t size
Entry size (in 32-bit words)
#define bigint_init(value, data, len)
Initialise big integer.
struct golan_eq_context ctx
#define ENOMEM
Not enough space.
#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.
#define bigint_mod_exp_tmp_len(modulus)
Calculate temporary working space required for moduluar exponentiation.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
struct eth_slow_lacp_entity_tlv partner
Partner information.
typedef bigint_t(X25519_SIZE) x25519_t
An X25519 unsigned big integer used in internal calculations.