From 16f32cf1a56dbebdf52d14dfbf07fd8c758d53f5 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 4 Jan 2015 18:29:17 +0100 Subject: [PATCH] Wipe the shared key in crypto_box() and crypto_secretbox() The _easy and _detached interfaces already did this. --- .../ref/box_curve25519xsalsa20poly1305.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c b/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c index 4b75ece8..63b5be39 100644 --- a/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c +++ b/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c @@ -9,8 +9,13 @@ int crypto_box( ) { unsigned char k[crypto_box_BEFORENMBYTES]; + int ret; + crypto_box_beforenm(k,pk,sk); - return crypto_box_afternm(c,m,mlen,n,k); + ret = crypto_box_afternm(c,m,mlen,n,k); + sodium_memzero(k, sizeof k); + + return ret; } int crypto_box_open( @@ -22,6 +27,11 @@ int crypto_box_open( ) { unsigned char k[crypto_box_BEFORENMBYTES]; + int ret; + crypto_box_beforenm(k,pk,sk); - return crypto_box_open_afternm(m,c,clen,n,k); + ret = crypto_box_open_afternm(m,c,clen,n,k); + sodium_memzero(k, sizeof k); + + return ret; }