From dffdb1388991c5b5688139bfa093c8581a0f3a36 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Thu, 1 Sep 2016 13:07:57 +0200 Subject: Added a sodium implementation for creating private and public keys. --- .../curve25519/sodium/libsodium_curve25519.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'libcmix-crypto/curve25519/sodium/libsodium_curve25519.c') diff --git a/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c b/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c index 23dbf12..8fd087a 100644 --- a/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c +++ b/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c @@ -1,13 +1,30 @@ #include "curve25519.h" +#include + #include +#include + +void init() { + if(sodium_init() == -1) { + exit(-1); + } +} void sodium_curve25519_keypair_deleter(struct KeyPair* p) { - free(p->sec); + sodium_free(p->sec); free(p->pub); } struct KeyPair curve25519_create_keypair() { - return (struct KeyPair){NULL, NULL, 0, 0, &sodium_curve25519_keypair_deleter}; + 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}; } -- cgit v1.2.3-70-g09d2