+ crypto_box_seal()
This commit is contained in:
parent
f740cb5968
commit
575ce93058
1
.gitignore
vendored
1
.gitignore
vendored
@ -72,6 +72,7 @@ test/default/box7
|
|||||||
test/default/box8
|
test/default/box8
|
||||||
test/default/box_easy
|
test/default/box_easy
|
||||||
test/default/box_easy2
|
test/default/box_easy2
|
||||||
|
test/default/box_seal
|
||||||
test/default/box_seed
|
test/default/box_seed
|
||||||
test/default/chacha20
|
test/default/chacha20
|
||||||
test/default/core1
|
test/default/core1
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
||||||
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
||||||
|
@ -460,6 +460,9 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
||||||
<Filter>src\crypto_box</Filter>
|
<Filter>src\crypto_box</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c">
|
||||||
|
<Filter>src\crypto_box</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
||||||
<Filter>src\crypto_secretbox</Filter>
|
<Filter>src\crypto_secretbox</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
||||||
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
||||||
|
@ -460,6 +460,9 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
||||||
<Filter>src\crypto_box</Filter>
|
<Filter>src\crypto_box</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c">
|
||||||
|
<Filter>src\crypto_box</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
||||||
<Filter>src\crypto_secretbox</Filter>
|
<Filter>src\crypto_secretbox</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -163,6 +163,7 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c" />
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
||||||
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
<ClInclude Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\api.h" />
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
||||||
|
@ -460,6 +460,9 @@
|
|||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_easy.c">
|
||||||
<Filter>src\crypto_box</Filter>
|
<Filter>src\crypto_box</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_box\crypto_box_seal.c">
|
||||||
|
<Filter>src\crypto_box</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
<ClCompile Include="..\..\..\..\src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
||||||
<Filter>src\crypto_secretbox</Filter>
|
<Filter>src\crypto_secretbox</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
export MAKE_FLAGS='-j4'
|
export MAKE_FLAGS='-j4'
|
||||||
export PREFIX="$(pwd)/libsodium-js"
|
export PREFIX="$(pwd)/libsodium-js"
|
||||||
export EXPORTED_FUNCTIONS='["_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_keybytes","_crypto_auth_verify","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_noncebytes","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_publickeybytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_generichash","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive","_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive","_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_macbytes","_crypto_secretbox_noncebytes","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_keypair","_crypto_sign_open","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_verify_detached","_randombytes_buf","_randombytes_close","_randombytes_random","_randombytes_set_implementation","_randombytes_stir","_randombytes_uniform","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_version_major","_sodium_library_version_minor","_sodium_memcmp","_sodium_memzero","_sodium_version_string"]'
|
export EXPORTED_FUNCTIONS='["_crypto_aead_chacha20poly1305_abytes","_crypto_aead_chacha20poly1305_decrypt","_crypto_aead_chacha20poly1305_encrypt","_crypto_aead_chacha20poly1305_keybytes","_crypto_aead_chacha20poly1305_npubbytes","_crypto_aead_chacha20poly1305_nsecbytes","_crypto_auth","_crypto_auth_bytes","_crypto_auth_keybytes","_crypto_auth_verify","_crypto_box_beforenm","_crypto_box_beforenmbytes","_crypto_box_detached","_crypto_box_detached_afternm","_crypto_box_easy","_crypto_box_easy_afternm","_crypto_box_keypair","_crypto_box_macbytes","_crypto_box_noncebytes","_crypto_box_open_detached","_crypto_box_open_detached_afternm","_crypto_box_open_easy","_crypto_box_open_easy_afternm","_crypto_box_publickeybytes","_crypto_box_seal","_crypto_box_seal_open","_crypto_box_sealbytes","_crypto_box_secretkeybytes","_crypto_box_seed_keypair","_crypto_box_seedbytes","_crypto_generichash","_crypto_generichash_bytes","_crypto_generichash_bytes_max","_crypto_generichash_bytes_min","_crypto_generichash_final","_crypto_generichash_init","_crypto_generichash_keybytes","_crypto_generichash_keybytes_max","_crypto_generichash_keybytes_min","_crypto_generichash_statebytes","_crypto_generichash_update","_crypto_hash","_crypto_hash_bytes","_crypto_pwhash_scryptsalsa208sha256","_crypto_pwhash_scryptsalsa208sha256_ll","_crypto_pwhash_scryptsalsa208sha256_memlimit_interactive","_crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_opslimit_interactive","_crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive","_crypto_pwhash_scryptsalsa208sha256_saltbytes","_crypto_pwhash_scryptsalsa208sha256_str","_crypto_pwhash_scryptsalsa208sha256_str_verify","_crypto_pwhash_scryptsalsa208sha256_strbytes","_crypto_pwhash_scryptsalsa208sha256_strprefix","_crypto_scalarmult","_crypto_scalarmult_base","_crypto_scalarmult_bytes","_crypto_scalarmult_scalarbytes","_crypto_secretbox_detached","_crypto_secretbox_easy","_crypto_secretbox_keybytes","_crypto_secretbox_macbytes","_crypto_secretbox_noncebytes","_crypto_secretbox_open_detached","_crypto_secretbox_open_easy","_crypto_shorthash","_crypto_shorthash_bytes","_crypto_shorthash_keybytes","_crypto_sign","_crypto_sign_bytes","_crypto_sign_detached","_crypto_sign_ed25519_pk_to_curve25519","_crypto_sign_ed25519_sk_to_curve25519","_crypto_sign_keypair","_crypto_sign_open","_crypto_sign_publickeybytes","_crypto_sign_secretkeybytes","_crypto_sign_seed_keypair","_crypto_sign_seedbytes","_crypto_sign_verify_detached","_randombytes_buf","_randombytes_close","_randombytes_random","_randombytes_set_implementation","_randombytes_stir","_randombytes_uniform","_sodium_bin2hex","_sodium_hex2bin","_sodium_init","_sodium_library_version_major","_sodium_library_version_minor","_sodium_memcmp","_sodium_memzero","_sodium_version_string"]'
|
||||||
export TOTAL_MEMORY=33554432
|
export TOTAL_MEMORY=33554432
|
||||||
export JS_EXPORTS_FLAGS="-s EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS}"
|
export JS_EXPORTS_FLAGS="-s EXPORTED_FUNCTIONS=${EXPORTED_FUNCTIONS}"
|
||||||
export LDFLAGS="-s TOTAL_MEMORY=${TOTAL_MEMORY} -s RESERVED_FUNCTION_POINTERS=8 -s NO_BROWSER=1"
|
export LDFLAGS="-s TOTAL_MEMORY=${TOTAL_MEMORY} -s RESERVED_FUNCTION_POINTERS=8 -s NO_BROWSER=1"
|
||||||
|
@ -383,6 +383,7 @@
|
|||||||
<ClCompile Include="src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
<ClCompile Include="src\libsodium\crypto_auth\hmacsha512256\cp\verify_hmacsha512256.c" />
|
||||||
<ClCompile Include="src\libsodium\crypto_box\crypto_box.c" />
|
<ClCompile Include="src\libsodium\crypto_box\crypto_box.c" />
|
||||||
<ClCompile Include="src\libsodium\crypto_box\crypto_box_easy.c" />
|
<ClCompile Include="src\libsodium\crypto_box\crypto_box_easy.c" />
|
||||||
|
<ClCompile Include="src\libsodium\crypto_box\crypto_box_seal.c" />
|
||||||
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\box_curve25519xsalsa20poly1305_api.c" />
|
||||||
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\after_curve25519xsalsa20poly1305.c" />
|
||||||
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\before_curve25519xsalsa20poly1305.c" />
|
<ClCompile Include="src\libsodium\crypto_box\curve25519xsalsa20poly1305\ref\before_curve25519xsalsa20poly1305.c" />
|
||||||
|
@ -569,6 +569,9 @@
|
|||||||
<ClCompile Include="src\libsodium\crypto_box\crypto_box_easy.c">
|
<ClCompile Include="src\libsodium\crypto_box\crypto_box_easy.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\libsodium\crypto_box\crypto_box_seal.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
<ClCompile Include="src\libsodium\crypto_secretbox\crypto_secretbox_easy.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -18,6 +18,7 @@ libsodium_la_SOURCES = \
|
|||||||
crypto_auth/hmacsha512256/cp/verify_hmacsha512256.c \
|
crypto_auth/hmacsha512256/cp/verify_hmacsha512256.c \
|
||||||
crypto_box/crypto_box.c \
|
crypto_box/crypto_box.c \
|
||||||
crypto_box/crypto_box_easy.c \
|
crypto_box/crypto_box_easy.c \
|
||||||
|
crypto_box/crypto_box_seal.c \
|
||||||
crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c \
|
crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c \
|
||||||
crypto_box/curve25519xsalsa20poly1305/ref/api.h \
|
crypto_box/curve25519xsalsa20poly1305/ref/api.h \
|
||||||
crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c \
|
crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c \
|
||||||
|
65
src/libsodium/crypto_box/crypto_box_seal.c
Normal file
65
src/libsodium/crypto_box/crypto_box_seal.c
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "crypto_box.h"
|
||||||
|
#include "crypto_generichash.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
static int
|
||||||
|
_crypto_box_seal_nonce(unsigned char *nonce,
|
||||||
|
const unsigned char *pk1, const unsigned char *pk2)
|
||||||
|
{
|
||||||
|
crypto_generichash_state st;
|
||||||
|
|
||||||
|
crypto_generichash_init(&st, NULL, 0U, crypto_box_NONCEBYTES);
|
||||||
|
crypto_generichash_update(&st, pk1, crypto_box_PUBLICKEYBYTES);
|
||||||
|
crypto_generichash_update(&st, pk2, crypto_box_PUBLICKEYBYTES);
|
||||||
|
crypto_generichash_final(&st, nonce, crypto_box_NONCEBYTES);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
crypto_box_seal(unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned long long inlen, const unsigned char *pk)
|
||||||
|
{
|
||||||
|
unsigned char nonce[crypto_box_NONCEBYTES];
|
||||||
|
unsigned char epk[crypto_box_PUBLICKEYBYTES];
|
||||||
|
unsigned char esk[crypto_box_SECRETKEYBYTES];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (crypto_box_keypair(epk, esk) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
memcpy(out, epk, crypto_box_PUBLICKEYBYTES);
|
||||||
|
_crypto_box_seal_nonce(nonce, epk, pk);
|
||||||
|
ret = crypto_box_easy(out + crypto_box_PUBLICKEYBYTES, in, inlen,
|
||||||
|
nonce, pk, esk);
|
||||||
|
sodium_memzero(esk, sizeof esk);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
crypto_box_seal_open(unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned long long inlen,
|
||||||
|
const unsigned char *pk, const unsigned char *sk)
|
||||||
|
{
|
||||||
|
unsigned char nonce[crypto_box_NONCEBYTES];
|
||||||
|
|
||||||
|
if (inlen < crypto_box_SEALBYTES) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
_crypto_box_seal_nonce(nonce, in, pk);
|
||||||
|
|
||||||
|
(void) sizeof(int[crypto_box_PUBLICKEYBYTES < crypto_box_SEALBYTES ? 1 : -1]);
|
||||||
|
return crypto_box_open_easy(out, in + crypto_box_PUBLICKEYBYTES,
|
||||||
|
inlen - crypto_box_PUBLICKEYBYTES,
|
||||||
|
nonce, in, sk);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
crypto_box_sealbytes(void)
|
||||||
|
{
|
||||||
|
return crypto_box_SEALBYTES;
|
||||||
|
}
|
@ -106,6 +106,21 @@ int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c,
|
|||||||
unsigned long long clen, const unsigned char *n,
|
unsigned long long clen, const unsigned char *n,
|
||||||
const unsigned char *k);
|
const unsigned char *k);
|
||||||
|
|
||||||
|
/* -- Ephemeral SK interface -- */
|
||||||
|
|
||||||
|
#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES)
|
||||||
|
SODIUM_EXPORT
|
||||||
|
size_t crypto_box_sealbytes(void);
|
||||||
|
|
||||||
|
SODIUM_EXPORT
|
||||||
|
int crypto_box_seal(unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned long long inlen, const unsigned char *pk);
|
||||||
|
|
||||||
|
SODIUM_EXPORT
|
||||||
|
int crypto_box_seal_open(unsigned char *out, const unsigned char *in,
|
||||||
|
unsigned long long inlen,
|
||||||
|
const unsigned char *pk, const unsigned char *sk);
|
||||||
|
|
||||||
/* -- NaCl compatibility interface ; Requires padding -- */
|
/* -- NaCl compatibility interface ; Requires padding -- */
|
||||||
|
|
||||||
#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
|
#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
|
||||||
|
@ -16,6 +16,7 @@ EXTRA_DIST = \
|
|||||||
box8.exp \
|
box8.exp \
|
||||||
box_easy.exp \
|
box_easy.exp \
|
||||||
box_easy2.exp \
|
box_easy2.exp \
|
||||||
|
box_seal.exp \
|
||||||
box_seed.exp \
|
box_seed.exp \
|
||||||
chacha20.exp \
|
chacha20.exp \
|
||||||
core1.exp \
|
core1.exp \
|
||||||
@ -75,6 +76,7 @@ DISTCLEANFILES = \
|
|||||||
box8.res \
|
box8.res \
|
||||||
box_easy.res \
|
box_easy.res \
|
||||||
box_easy2.res \
|
box_easy2.res \
|
||||||
|
box_seal.res \
|
||||||
box_seed.res \
|
box_seed.res \
|
||||||
chacha20.res \
|
chacha20.res \
|
||||||
core1.res \
|
core1.res \
|
||||||
@ -144,6 +146,7 @@ TESTS_TARGETS = \
|
|||||||
box8 \
|
box8 \
|
||||||
box_easy \
|
box_easy \
|
||||||
box_easy2 \
|
box_easy2 \
|
||||||
|
box_seal \
|
||||||
box_seed \
|
box_seed \
|
||||||
chacha20 \
|
chacha20 \
|
||||||
core1 \
|
core1 \
|
||||||
@ -238,6 +241,9 @@ box_easy_LDADD = $(TESTS_LDADD)
|
|||||||
box_easy2_SOURCE = cmptest.h box_easy2.c
|
box_easy2_SOURCE = cmptest.h box_easy2.c
|
||||||
box_easy2_LDADD = $(TESTS_LDADD)
|
box_easy2_LDADD = $(TESTS_LDADD)
|
||||||
|
|
||||||
|
box_seal_SOURCE = cmptest.h box_seal.c
|
||||||
|
box_seal_LDADD = $(TESTS_LDADD)
|
||||||
|
|
||||||
box_seed_SOURCE = cmptest.h box_seed.c
|
box_seed_SOURCE = cmptest.h box_seed.c
|
||||||
box_seed_LDADD = $(TESTS_LDADD)
|
box_seed_LDADD = $(TESTS_LDADD)
|
||||||
|
|
||||||
|
43
test/default/box_seal.c
Normal file
43
test/default/box_seal.c
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
#define TEST_NAME "box_seal"
|
||||||
|
#include "cmptest.h"
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
unsigned char pk[crypto_box_PUBLICKEYBYTES];
|
||||||
|
unsigned char sk[crypto_box_SECRETKEYBYTES];
|
||||||
|
unsigned char *c;
|
||||||
|
unsigned char *m;
|
||||||
|
unsigned char *m2;
|
||||||
|
size_t m_len;
|
||||||
|
size_t c_len;
|
||||||
|
|
||||||
|
crypto_box_keypair(pk, sk);
|
||||||
|
m_len = (size_t) randombytes_uniform(1000);
|
||||||
|
c_len = crypto_box_SEALBYTES + m_len;
|
||||||
|
m = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
m2 = (unsigned char *) sodium_malloc(m_len);
|
||||||
|
c = (unsigned char *) sodium_malloc(c_len);
|
||||||
|
randombytes_buf(m, m_len);
|
||||||
|
if (crypto_box_seal(c, m, m_len, pk) != 0) {
|
||||||
|
printf("crypto_box_seal() failure\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (crypto_box_seal_open(m2, c, c_len, pk, sk) != 0) {
|
||||||
|
printf("crypto_box_seal_open() failure\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
printf("%d\n", memcmp(m, m2, m_len));
|
||||||
|
|
||||||
|
printf("%d\n", crypto_box_seal_open(m, c, 0U, pk, sk));
|
||||||
|
printf("%d\n", crypto_box_seal_open(m, c, c_len - 1U, pk, sk));
|
||||||
|
printf("%d\n", crypto_box_seal_open(m, c, c_len, sk, pk));
|
||||||
|
|
||||||
|
sodium_free(c);
|
||||||
|
sodium_free(m);
|
||||||
|
sodium_free(m2);
|
||||||
|
|
||||||
|
assert(crypto_box_sealbytes() == crypto_box_SEALBYTES);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
4
test/default/box_seal.exp
Normal file
4
test/default/box_seal.exp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
0
|
||||||
|
-1
|
||||||
|
-1
|
||||||
|
-1
|
Loading…
Reference in New Issue
Block a user