]> git.seodisparate.com - UDPConnection/commitdiff
Add unset_libsodium_keys()
authorStephen Seo <seo.disparate@gmail.com>
Thu, 21 Nov 2019 03:23:40 +0000 (12:23 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 21 Nov 2019 03:23:40 +0000 (12:23 +0900)
Still untested

src/UDPConnection.cpp
src/UDPConnection.h

index d5f10bddc7ea0b823d915b198df6b2de1c62311f..1f84798797b79ca77525139b0c1e96cf05ce78e4 100644 (file)
@@ -2084,11 +2084,22 @@ void UDPC_set_libsodium_keys(UDPC_HContext ctx, unsigned char *sk, unsigned char
         return;
     }
 
+    std::lock_guard<std::mutex> lock(c->mutex);
     std::memcpy(c->sk, sk, crypto_sign_SECRETKEYBYTES);
     std::memcpy(c->pk, pk, crypto_sign_PUBLICKEYBYTES);
     c->keysSet.store(true);
 }
 
+void UDPC_unset_libsodium_keys(UDPC_HContext ctx) {
+    UDPC::Context *c = UDPC::verifyContext(ctx);
+    if(!c || !c->flags.test(2)) {
+        return;
+    }
+
+    std::lock_guard<std::mutex> lock(c->mutex);
+    c->keysSet.store(false);
+}
+
 const char *UDPC_atostr_cid(UDPC_HContext ctx, UDPC_ConnectionId connectionId) {
     return UDPC_atostr(ctx, connectionId.addr);
 }
index 0a229cd1c34ee0b090c4f7750f3cd78069123276..3180681dc3f1c9c94eb46105a02b85b2af43c1fc 100644 (file)
@@ -186,6 +186,8 @@ 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);
 
+void UDPC_unset_libsodium_keys(UDPC_HContext ctx);
+
 const char *UDPC_atostr_cid(UDPC_HContext ctx, UDPC_ConnectionId connectionId);
 
 const char *UDPC_atostr(UDPC_HContext ctx, UDPC_IPV6_ADDR_TYPE addr);