X448_SIZE
ATTRIBUTE_WARN_UNUSED_RET int x448(const u8 k[X448_SIZE], const u8 u[X448_SIZE], u8 res[X448_SIZE]);
ATTRIBUTE_WARN_UNUSED_RET int x448_gen_priv_key(u8 priv_key[X448_SIZE]);
ATTRIBUTE_WARN_UNUSED_RET int x448_init_pub_key(const u8 priv_key[X448_SIZE], u8 pub_key[X448_SIZE]);
ATTRIBUTE_WARN_UNUSED_RET int x448_derive_secret(const u8 priv_key[X448_SIZE], const u8 peer_pub_key[X448_SIZE], u8 shared_secret[X448_SIZE]);
u8 k_[X448_SIZE], u_[X448_SIZE];
MUST_HAVE(((len == X25519_SIZE) || (len == X448_SIZE)), ret, err);
if(len == X448_SIZE){
MUST_HAVE(((len == X25519_SIZE) || (len == X448_SIZE)), ret, err);
MUST_HAVE(((len == X25519_SIZE) || (len == X448_SIZE)), ret, err);
else if(len == X448_SIZE){
u8 u[X448_SIZE];
MUST_HAVE(((len == X25519_SIZE) || (len == X448_SIZE)), ret, err);
int x448(const u8 k[X448_SIZE], const u8 u[X448_SIZE], u8 res[X448_SIZE])
return x25519_448_core(k, u, res, X448_SIZE);
int x448_gen_priv_key(u8 priv_key[X448_SIZE])
return x25519_448_gen_priv_key(priv_key, X448_SIZE);
int x448_init_pub_key(const u8 priv_key[X448_SIZE], u8 pub_key[X448_SIZE])
return x25519_448_init_pub_key(priv_key, pub_key, X448_SIZE);
int x448_derive_secret(const u8 priv_key[X448_SIZE], const u8 peer_pub_key[X448_SIZE], u8 shared_secret[X448_SIZE])
return x25519_448_derive_secret(priv_key, peer_pub_key, shared_secret, X448_SIZE);
else if(len == X448_SIZE){
u8 pub_key[X448_SIZE];
u8 shared_secret[X448_SIZE];
MUST_HAVE((c->our_priv_key_len == X448_SIZE), ret, err);
MUST_HAVE((c->exp_our_pub_key_len == X448_SIZE), ret, err);
ret = are_equal(pub_key, c->exp_our_pub_key, X448_SIZE, &check); EG(ret, err);
MUST_HAVE((c->peer_pub_key_len == X448_SIZE), ret, err);
MUST_HAVE((c->exp_shared_secret_len == X448_SIZE), ret, err);
ret = are_equal(shared_secret, c->exp_shared_secret, X448_SIZE, &check); EG(ret, err);
u8 pubkey_check[X448_SIZE];
u8 sharedsecret_check[X448_SIZE];
alglen = X448_SIZE;