mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
44 lines
1.9 KiB
C
44 lines
1.9 KiB
C
|
#ifndef COSMOPOLITAN_THIRD_PARTY_MBEDTLS_X25519_H_
|
||
|
#define COSMOPOLITAN_THIRD_PARTY_MBEDTLS_X25519_H_
|
||
|
#include "third_party/mbedtls/config.h"
|
||
|
#include "third_party/mbedtls/ecp.h"
|
||
|
COSMOPOLITAN_C_START_
|
||
|
|
||
|
#define MBEDTLS_ECP_TLS_CURVE25519 0x1d
|
||
|
#define MBEDTLS_X25519_KEY_SIZE_BYTES 32
|
||
|
|
||
|
typedef enum {
|
||
|
MBEDTLS_EVEREST_ECDH_OURS,
|
||
|
MBEDTLS_EVEREST_ECDH_THEIRS,
|
||
|
} mbedtls_everest_ecdh_side;
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned char our_secret[MBEDTLS_X25519_KEY_SIZE_BYTES];
|
||
|
unsigned char peer_point[MBEDTLS_X25519_KEY_SIZE_BYTES];
|
||
|
} mbedtls_ecdh_context_everest;
|
||
|
|
||
|
int mbedtls_everest_setup(mbedtls_ecdh_context_everest *, int);
|
||
|
void mbedtls_everest_free(mbedtls_ecdh_context_everest *);
|
||
|
int mbedtls_everest_make_params(mbedtls_ecdh_context_everest *, size_t *,
|
||
|
unsigned char *, size_t,
|
||
|
int (*)(void *, unsigned char *, size_t),
|
||
|
void *);
|
||
|
int mbedtls_everest_read_params(mbedtls_ecdh_context_everest *,
|
||
|
const unsigned char **, const unsigned char *);
|
||
|
int mbedtls_everest_get_params(mbedtls_ecdh_context_everest *,
|
||
|
const mbedtls_ecp_keypair *,
|
||
|
mbedtls_everest_ecdh_side);
|
||
|
int mbedtls_everest_make_public(mbedtls_ecdh_context_everest *, size_t *,
|
||
|
unsigned char *, size_t,
|
||
|
int (*)(void *, unsigned char *, size_t),
|
||
|
void *);
|
||
|
int mbedtls_everest_read_public(mbedtls_ecdh_context_everest *,
|
||
|
const unsigned char *, size_t);
|
||
|
int mbedtls_everest_calc_secret(mbedtls_ecdh_context_everest *, size_t *,
|
||
|
unsigned char *, size_t,
|
||
|
int (*)(void *, unsigned char *, size_t),
|
||
|
void *);
|
||
|
|
||
|
COSMOPOLITAN_C_END_
|
||
|
#endif /* COSMOPOLITAN_THIRD_PARTY_MBEDTLS_X25519_H_ */
|