diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-09-01 13:07:57 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-09-01 14:05:40 +0200 |
| commit | dffdb1388991c5b5688139bfa093c8581a0f3a36 (patch) | |
| tree | af0d82089d335e8b9eda6d6f754da4b2905eb901 /libcmix-crypto/curve25519 | |
| parent | 9d7701c370f06be663f2a485507d388ab5194ca8 (diff) | |
| download | cmix-dffdb1388991c5b5688139bfa093c8581a0f3a36.tar.gz cmix-dffdb1388991c5b5688139bfa093c8581a0f3a36.tar.bz2 cmix-dffdb1388991c5b5688139bfa093c8581a0f3a36.zip | |
Added a sodium implementation for creating private and public keys.
Diffstat (limited to 'libcmix-crypto/curve25519')
| -rw-r--r-- | libcmix-crypto/curve25519/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/sodium/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/sodium/libsodium_curve25519.c | 21 |
3 files changed, 27 insertions, 3 deletions
diff --git a/libcmix-crypto/curve25519/CMakeLists.txt b/libcmix-crypto/curve25519/CMakeLists.txt index 7885e7d..dc29c4d 100644 --- a/libcmix-crypto/curve25519/CMakeLists.txt +++ b/libcmix-crypto/curve25519/CMakeLists.txt @@ -5,8 +5,12 @@ target_include_directories(curve25519-interface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ) +target_sources(curve25519-interface + INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/curve25519.h +) + target_link_libraries(curve25519-interface - INTERFACE cmix-crypto-interface + INTERFACE cmix-crypto ) foreach(impl ${curve25519_implementations}) diff --git a/libcmix-crypto/curve25519/sodium/CMakeLists.txt b/libcmix-crypto/curve25519/sodium/CMakeLists.txt index 9fbf010..213a49f 100644 --- a/libcmix-crypto/curve25519/sodium/CMakeLists.txt +++ b/libcmix-crypto/curve25519/sodium/CMakeLists.txt @@ -2,6 +2,8 @@ include(get_target_name) get_target_name(target_name) +include(ImportSodium) + add_library(${target_name} libsodium_curve25519.c ) @@ -12,4 +14,5 @@ target_compile_options(${target_name} target_link_libraries(${target_name} PUBLIC curve25519-interface + PUBLIC Sodium ) 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 <sodium.h> + #include <stddef.h> +#include <stdlib.h> + +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}; } |
