#include "curve25519.h" #include #include #include void init() { if(sodium_init() == -1) { exit(-1); } } void sodium_curve25519_keypair_deleter(struct KeyPair* p) { sodium_free(p->sec); free(p->pub); } struct KeyPair curve25519_create_keypair() { init(); unsigned char* sec = (unsigned char*) sodium_malloc(crypto_box_SECRETKEYBYTES); unsigned char* pub = (unsigned char*) malloc(crypto_box_PUBLICKEYBYTES); randombytes_buf(sec, crypto_box_SECRETKEYBYTES); crypto_scalarmult_base(pub, sec); return (struct KeyPair){sec, pub, crypto_box_SECRETKEYBYTES, crypto_box_PUBLICKEYBYTES, &sodium_curve25519_keypair_deleter}; }