Add set_libsodium_key_easy(), fixes/refactorings

This commit is contained in:
Stephen Seo 2019-11-27 19:41:38 +09:00
parent 6b14d86822
commit 8d1dbead20
2 changed files with 14 additions and 3 deletions

View file

@ -2103,16 +2103,25 @@ UDPC_PacketInfo UDPC_get_received(UDPC_HContext ctx, unsigned long *remaining) {
return UDPC::get_empty_pinfo(); return UDPC::get_empty_pinfo();
} }
void UDPC_set_libsodium_keys(UDPC_HContext ctx, unsigned char *sk, unsigned char *pk) { int UDPC_set_libsodium_keys(UDPC_HContext ctx, unsigned char *sk, unsigned char *pk) {
UDPC::Context *c = UDPC::verifyContext(ctx); UDPC::Context *c = UDPC::verifyContext(ctx);
if(!c || !c->flags.test(2)) { if(!c || !c->flags.test(2)) {
return; return 0;
} }
std::lock_guard<std::mutex> lock(c->mutex); std::lock_guard<std::mutex> lock(c->mutex);
std::memcpy(c->sk, sk, crypto_sign_SECRETKEYBYTES); std::memcpy(c->sk, sk, crypto_sign_SECRETKEYBYTES);
std::memcpy(c->pk, pk, crypto_sign_PUBLICKEYBYTES); std::memcpy(c->pk, pk, crypto_sign_PUBLICKEYBYTES);
c->keysSet.store(true); c->keysSet.store(true);
return 1;
}
int UDPC_set_libsodium_key_easy(UDPC_HContext ctx, unsigned char *sk) {
unsigned char pk[crypto_sign_PUBLICKEYBYTES];
if(crypto_sign_ed25519_sk_to_pk(pk, sk) != 0) {
return 0;
}
return UDPC_set_libsodium_keys(ctx, sk, pk);
} }
void UDPC_unset_libsodium_keys(UDPC_HContext ctx) { void UDPC_unset_libsodium_keys(UDPC_HContext ctx) {

View file

@ -184,7 +184,9 @@ UDPC_Event UDPC_get_event(UDPC_HContext ctx, unsigned long *remaining);
UDPC_PacketInfo UDPC_get_received(UDPC_HContext ctx, unsigned long *remaining); UDPC_PacketInfo UDPC_get_received(UDPC_HContext ctx, unsigned long *remaining);
void UDPC_set_libsodium_keys(UDPC_HContext ctx, unsigned char *sk, unsigned char *pk); int UDPC_set_libsodium_keys(UDPC_HContext ctx, unsigned char *sk, unsigned char *pk);
int UDPC_set_libsodium_key_easy(UDPC_HContext ctx, unsigned char *sk);
void UDPC_unset_libsodium_keys(UDPC_HContext ctx); void UDPC_unset_libsodium_keys(UDPC_HContext ctx);