mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
Merge branch 'master' into stable-1.0.17
* master: (190 commits) fileinput is not used any more 2019 local-dynamic is enough Set tls-model only if TLS is supported Enable -ftls-model=global-dynamic if available Set nonce in randombytes_salsa20_random_stir() instead of random_init() Bump .NET version examples Add another test Avoid memory leak and overflow in addition test Avoid partial array initialization Bump SODIUM_LIBRARY_VERSION_MINOR More tests More tests Improve clarity ALLOW_MEMORY_GROWTH is now enabled AVX512 detection has been improved Add a conditional to enable retpoline support must -> should Add comments, avoid implicit array initialization Add comments ...
This commit is contained in:
@@ -4,7 +4,9 @@ EXTRA_DIST = \
|
||||
wintest.bat \
|
||||
pre.js.inc \
|
||||
aead_aes256gcm.exp \
|
||||
aead_aes256gcm2.exp \
|
||||
aead_chacha20poly1305.exp \
|
||||
aead_chacha20poly13052.exp \
|
||||
aead_xchacha20poly1305.exp \
|
||||
auth.exp \
|
||||
auth2.exp \
|
||||
@@ -55,6 +57,7 @@ EXTRA_DIST = \
|
||||
scalarmult5.exp \
|
||||
scalarmult6.exp \
|
||||
scalarmult7.exp \
|
||||
scalarmult8.exp \
|
||||
secretbox.exp \
|
||||
secretbox2.exp \
|
||||
secretbox7.exp \
|
||||
@@ -79,7 +82,9 @@ EXTRA_DIST = \
|
||||
|
||||
DISTCLEANFILES = \
|
||||
aead_aes256gcm.res \
|
||||
aead_aes256gcm2.res \
|
||||
aead_chacha20poly1305.res \
|
||||
aead_chacha20poly13052.res \
|
||||
aead_xchacha20poly1305.res \
|
||||
auth.res \
|
||||
auth2.res \
|
||||
@@ -130,6 +135,7 @@ DISTCLEANFILES = \
|
||||
scalarmult5.res \
|
||||
scalarmult6.res \
|
||||
scalarmult7.res \
|
||||
scalarmult8.res \
|
||||
secretbox.res \
|
||||
secretbox2.res \
|
||||
secretbox7.res \
|
||||
@@ -155,7 +161,9 @@ DISTCLEANFILES = \
|
||||
if NATIVECLIENT
|
||||
CLEANFILES = \
|
||||
aead_aes256gcm.final \
|
||||
aead_aes256gcm2.final \
|
||||
aead_chacha20poly1305.final \
|
||||
aead_chacha20poly13052.final \
|
||||
aead_xchacha20poly1305.final \
|
||||
auth.final \
|
||||
auth2.final \
|
||||
@@ -206,6 +214,7 @@ CLEANFILES = \
|
||||
scalarmult5.final \
|
||||
scalarmult6.final \
|
||||
scalarmult7.final \
|
||||
scalarmult8.final \
|
||||
secretbox.final \
|
||||
secretbox2.final \
|
||||
secretbox7.final \
|
||||
@@ -226,7 +235,9 @@ CLEANFILES = \
|
||||
verify1.final \
|
||||
xchacha20.final \
|
||||
aead_aes256gcm.nexe \
|
||||
aead_aes256gcm2.nexe \
|
||||
aead_chacha20poly1305.nexe \
|
||||
aead_chacha20poly13052.nexe \
|
||||
aead_xchacha20poly1305.nexe \
|
||||
auth.nexe \
|
||||
auth2.nexe \
|
||||
@@ -277,6 +288,7 @@ CLEANFILES = \
|
||||
scalarmult5.nexe \
|
||||
scalarmult6.nexe \
|
||||
scalarmult7.nexe \
|
||||
scalarmult8.nexe \
|
||||
secretbox.nexe \
|
||||
secretbox2.nexe \
|
||||
secretbox7.nexe \
|
||||
@@ -310,7 +322,9 @@ AM_LDFLAGS = @TEST_LDFLAGS@
|
||||
|
||||
TESTS_TARGETS = \
|
||||
aead_aes256gcm \
|
||||
aead_aes256gcm2 \
|
||||
aead_chacha20poly1305 \
|
||||
aead_chacha20poly13052 \
|
||||
aead_xchacha20poly1305 \
|
||||
auth \
|
||||
auth2 \
|
||||
@@ -356,6 +370,7 @@ TESTS_TARGETS = \
|
||||
scalarmult5 \
|
||||
scalarmult6 \
|
||||
scalarmult7 \
|
||||
scalarmult8 \
|
||||
secretbox \
|
||||
secretbox2 \
|
||||
secretbox7 \
|
||||
@@ -392,9 +407,15 @@ TESTS_LDADD = \
|
||||
aead_aes256gcm_SOURCE = cmptest.h aead_aes256gcm.c
|
||||
aead_aes256gcm_LDADD = $(TESTS_LDADD)
|
||||
|
||||
aead_aes256gcm2_SOURCE = cmptest.h aead_aes256gcm2.c
|
||||
aead_aes256gcm2_LDADD = $(TESTS_LDADD)
|
||||
|
||||
aead_chacha20poly1305_SOURCE = cmptest.h aead_chacha20poly1305.c
|
||||
aead_chacha20poly1305_LDADD = $(TESTS_LDADD)
|
||||
|
||||
aead_chacha20poly13052_SOURCE = cmptest.h aead_chacha20poly13052.c
|
||||
aead_chacha20poly13052_LDADD = $(TESTS_LDADD)
|
||||
|
||||
aead_xchacha20poly1305_SOURCE = cmptest.h aead_xchacha20poly1305.c
|
||||
aead_xchacha20poly1305_LDADD = $(TESTS_LDADD)
|
||||
|
||||
@@ -542,6 +563,9 @@ scalarmult6_LDADD = $(TESTS_LDADD)
|
||||
scalarmult7_SOURCE = cmptest.h scalarmult7.c
|
||||
scalarmult7_LDADD = $(TESTS_LDADD)
|
||||
|
||||
scalarmult8_SOURCE = cmptest.h scalarmult8.c
|
||||
scalarmult8_LDADD = $(TESTS_LDADD)
|
||||
|
||||
secretbox_SOURCE = cmptest.h secretbox.c
|
||||
secretbox_LDADD = $(TESTS_LDADD)
|
||||
|
||||
|
||||
+131
-56
@@ -128,7 +128,8 @@ CONFIG_CLEAN_VPATH_FILES =
|
||||
@MINIMAL_FALSE@ pwhash_scrypt_ll$(EXEEXT) \
|
||||
@MINIMAL_FALSE@ scalarmult_ed25519$(EXEEXT) siphashx24$(EXEEXT) \
|
||||
@MINIMAL_FALSE@ xchacha20$(EXEEXT)
|
||||
am__EXEEXT_3 = aead_aes256gcm$(EXEEXT) aead_chacha20poly1305$(EXEEXT) \
|
||||
am__EXEEXT_3 = aead_aes256gcm$(EXEEXT) aead_aes256gcm2$(EXEEXT) \
|
||||
aead_chacha20poly1305$(EXEEXT) aead_chacha20poly13052$(EXEEXT) \
|
||||
aead_xchacha20poly1305$(EXEEXT) auth$(EXEEXT) auth2$(EXEEXT) \
|
||||
auth3$(EXEEXT) auth5$(EXEEXT) auth6$(EXEEXT) auth7$(EXEEXT) \
|
||||
box$(EXEEXT) box2$(EXEEXT) box7$(EXEEXT) box8$(EXEEXT) \
|
||||
@@ -143,14 +144,14 @@ am__EXEEXT_3 = aead_aes256gcm$(EXEEXT) aead_chacha20poly1305$(EXEEXT) \
|
||||
onetimeauth7$(EXEEXT) pwhash_argon2i$(EXEEXT) \
|
||||
pwhash_argon2id$(EXEEXT) randombytes$(EXEEXT) \
|
||||
scalarmult$(EXEEXT) scalarmult2$(EXEEXT) scalarmult5$(EXEEXT) \
|
||||
scalarmult6$(EXEEXT) scalarmult7$(EXEEXT) secretbox$(EXEEXT) \
|
||||
secretbox2$(EXEEXT) secretbox7$(EXEEXT) secretbox8$(EXEEXT) \
|
||||
secretbox_easy$(EXEEXT) secretbox_easy2$(EXEEXT) \
|
||||
secretstream$(EXEEXT) shorthash$(EXEEXT) sign$(EXEEXT) \
|
||||
sodium_core$(EXEEXT) sodium_utils$(EXEEXT) \
|
||||
sodium_version$(EXEEXT) stream$(EXEEXT) stream2$(EXEEXT) \
|
||||
stream3$(EXEEXT) stream4$(EXEEXT) verify1$(EXEEXT) \
|
||||
$(am__EXEEXT_1) $(am__EXEEXT_2)
|
||||
scalarmult6$(EXEEXT) scalarmult7$(EXEEXT) scalarmult8$(EXEEXT) \
|
||||
secretbox$(EXEEXT) secretbox2$(EXEEXT) secretbox7$(EXEEXT) \
|
||||
secretbox8$(EXEEXT) secretbox_easy$(EXEEXT) \
|
||||
secretbox_easy2$(EXEEXT) secretstream$(EXEEXT) \
|
||||
shorthash$(EXEEXT) sign$(EXEEXT) sodium_core$(EXEEXT) \
|
||||
sodium_utils$(EXEEXT) sodium_version$(EXEEXT) stream$(EXEEXT) \
|
||||
stream2$(EXEEXT) stream3$(EXEEXT) stream4$(EXEEXT) \
|
||||
verify1$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2)
|
||||
aead_aes256gcm_SOURCES = aead_aes256gcm.c
|
||||
aead_aes256gcm_OBJECTS = aead_aes256gcm.$(OBJEXT)
|
||||
aead_aes256gcm_DEPENDENCIES = $(TESTS_LDADD)
|
||||
@@ -158,9 +159,15 @@ AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
am__v_lt_1 =
|
||||
aead_aes256gcm2_SOURCES = aead_aes256gcm2.c
|
||||
aead_aes256gcm2_OBJECTS = aead_aes256gcm2.$(OBJEXT)
|
||||
aead_aes256gcm2_DEPENDENCIES = $(TESTS_LDADD)
|
||||
aead_chacha20poly1305_SOURCES = aead_chacha20poly1305.c
|
||||
aead_chacha20poly1305_OBJECTS = aead_chacha20poly1305.$(OBJEXT)
|
||||
aead_chacha20poly1305_DEPENDENCIES = $(TESTS_LDADD)
|
||||
aead_chacha20poly13052_SOURCES = aead_chacha20poly13052.c
|
||||
aead_chacha20poly13052_OBJECTS = aead_chacha20poly13052.$(OBJEXT)
|
||||
aead_chacha20poly13052_DEPENDENCIES = $(TESTS_LDADD)
|
||||
aead_xchacha20poly1305_SOURCES = aead_xchacha20poly1305.c
|
||||
aead_xchacha20poly1305_OBJECTS = aead_xchacha20poly1305.$(OBJEXT)
|
||||
aead_xchacha20poly1305_DEPENDENCIES = $(TESTS_LDADD)
|
||||
@@ -305,6 +312,9 @@ scalarmult6_DEPENDENCIES = $(TESTS_LDADD)
|
||||
scalarmult7_SOURCES = scalarmult7.c
|
||||
scalarmult7_OBJECTS = scalarmult7.$(OBJEXT)
|
||||
scalarmult7_DEPENDENCIES = $(TESTS_LDADD)
|
||||
scalarmult8_SOURCES = scalarmult8.c
|
||||
scalarmult8_OBJECTS = scalarmult8.$(OBJEXT)
|
||||
scalarmult8_DEPENDENCIES = $(TESTS_LDADD)
|
||||
scalarmult_ed25519_SOURCES = scalarmult_ed25519.c
|
||||
scalarmult_ed25519_OBJECTS = scalarmult_ed25519.$(OBJEXT)
|
||||
scalarmult_ed25519_DEPENDENCIES = $(TESTS_LDADD)
|
||||
@@ -387,7 +397,9 @@ DEFAULT_INCLUDES = -I.@am__isrc@
|
||||
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
|
||||
am__maybe_remake_depfiles = depfiles
|
||||
am__depfiles_remade = ./$(DEPDIR)/aead_aes256gcm.Po \
|
||||
./$(DEPDIR)/aead_aes256gcm2.Po \
|
||||
./$(DEPDIR)/aead_chacha20poly1305.Po \
|
||||
./$(DEPDIR)/aead_chacha20poly13052.Po \
|
||||
./$(DEPDIR)/aead_xchacha20poly1305.Po ./$(DEPDIR)/auth.Po \
|
||||
./$(DEPDIR)/auth2.Po ./$(DEPDIR)/auth3.Po ./$(DEPDIR)/auth5.Po \
|
||||
./$(DEPDIR)/auth6.Po ./$(DEPDIR)/auth7.Po ./$(DEPDIR)/box.Po \
|
||||
@@ -409,17 +421,18 @@ am__depfiles_remade = ./$(DEPDIR)/aead_aes256gcm.Po \
|
||||
./$(DEPDIR)/randombytes.Po ./$(DEPDIR)/scalarmult.Po \
|
||||
./$(DEPDIR)/scalarmult2.Po ./$(DEPDIR)/scalarmult5.Po \
|
||||
./$(DEPDIR)/scalarmult6.Po ./$(DEPDIR)/scalarmult7.Po \
|
||||
./$(DEPDIR)/scalarmult_ed25519.Po ./$(DEPDIR)/secretbox.Po \
|
||||
./$(DEPDIR)/secretbox2.Po ./$(DEPDIR)/secretbox7.Po \
|
||||
./$(DEPDIR)/secretbox8.Po ./$(DEPDIR)/secretbox_easy.Po \
|
||||
./$(DEPDIR)/secretbox_easy2.Po ./$(DEPDIR)/secretstream.Po \
|
||||
./$(DEPDIR)/shorthash.Po ./$(DEPDIR)/sign.Po \
|
||||
./$(DEPDIR)/siphashx24.Po ./$(DEPDIR)/sodium_core.Po \
|
||||
./$(DEPDIR)/sodium_utils.Po ./$(DEPDIR)/sodium_utils2.Po \
|
||||
./$(DEPDIR)/sodium_utils3.Po ./$(DEPDIR)/sodium_version.Po \
|
||||
./$(DEPDIR)/stream.Po ./$(DEPDIR)/stream2.Po \
|
||||
./$(DEPDIR)/stream3.Po ./$(DEPDIR)/stream4.Po \
|
||||
./$(DEPDIR)/verify1.Po ./$(DEPDIR)/xchacha20.Po
|
||||
./$(DEPDIR)/scalarmult8.Po ./$(DEPDIR)/scalarmult_ed25519.Po \
|
||||
./$(DEPDIR)/secretbox.Po ./$(DEPDIR)/secretbox2.Po \
|
||||
./$(DEPDIR)/secretbox7.Po ./$(DEPDIR)/secretbox8.Po \
|
||||
./$(DEPDIR)/secretbox_easy.Po ./$(DEPDIR)/secretbox_easy2.Po \
|
||||
./$(DEPDIR)/secretstream.Po ./$(DEPDIR)/shorthash.Po \
|
||||
./$(DEPDIR)/sign.Po ./$(DEPDIR)/siphashx24.Po \
|
||||
./$(DEPDIR)/sodium_core.Po ./$(DEPDIR)/sodium_utils.Po \
|
||||
./$(DEPDIR)/sodium_utils2.Po ./$(DEPDIR)/sodium_utils3.Po \
|
||||
./$(DEPDIR)/sodium_version.Po ./$(DEPDIR)/stream.Po \
|
||||
./$(DEPDIR)/stream2.Po ./$(DEPDIR)/stream3.Po \
|
||||
./$(DEPDIR)/stream4.Po ./$(DEPDIR)/verify1.Po \
|
||||
./$(DEPDIR)/xchacha20.Po
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@@ -439,7 +452,25 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||
am__v_CCLD_1 =
|
||||
SOURCES = aead_aes256gcm.c aead_chacha20poly1305.c \
|
||||
SOURCES = aead_aes256gcm.c aead_aes256gcm2.c aead_chacha20poly1305.c \
|
||||
aead_chacha20poly13052.c aead_xchacha20poly1305.c auth.c \
|
||||
auth2.c auth3.c auth5.c auth6.c auth7.c box.c box2.c box7.c \
|
||||
box8.c box_easy.c box_easy2.c box_seal.c box_seed.c chacha20.c \
|
||||
codecs.c core1.c core2.c core3.c core4.c core5.c core6.c \
|
||||
core_ed25519.c ed25519_convert.c generichash.c generichash2.c \
|
||||
generichash3.c hash.c hash3.c kdf.c keygen.c kx.c \
|
||||
metamorphic.c misuse.c onetimeauth.c onetimeauth2.c \
|
||||
onetimeauth7.c pwhash_argon2i.c pwhash_argon2id.c \
|
||||
pwhash_scrypt.c pwhash_scrypt_ll.c randombytes.c scalarmult.c \
|
||||
scalarmult2.c scalarmult5.c scalarmult6.c scalarmult7.c \
|
||||
scalarmult8.c scalarmult_ed25519.c secretbox.c secretbox2.c \
|
||||
secretbox7.c secretbox8.c secretbox_easy.c secretbox_easy2.c \
|
||||
secretstream.c shorthash.c sign.c siphashx24.c sodium_core.c \
|
||||
sodium_utils.c sodium_utils2.c sodium_utils3.c \
|
||||
sodium_version.c stream.c stream2.c stream3.c stream4.c \
|
||||
verify1.c xchacha20.c
|
||||
DIST_SOURCES = aead_aes256gcm.c aead_aes256gcm2.c \
|
||||
aead_chacha20poly1305.c aead_chacha20poly13052.c \
|
||||
aead_xchacha20poly1305.c auth.c auth2.c auth3.c auth5.c \
|
||||
auth6.c auth7.c box.c box2.c box7.c box8.c box_easy.c \
|
||||
box_easy2.c box_seal.c box_seed.c chacha20.c codecs.c core1.c \
|
||||
@@ -449,28 +480,12 @@ SOURCES = aead_aes256gcm.c aead_chacha20poly1305.c \
|
||||
onetimeauth.c onetimeauth2.c onetimeauth7.c pwhash_argon2i.c \
|
||||
pwhash_argon2id.c pwhash_scrypt.c pwhash_scrypt_ll.c \
|
||||
randombytes.c scalarmult.c scalarmult2.c scalarmult5.c \
|
||||
scalarmult6.c scalarmult7.c scalarmult_ed25519.c secretbox.c \
|
||||
secretbox2.c secretbox7.c secretbox8.c secretbox_easy.c \
|
||||
secretbox_easy2.c secretstream.c shorthash.c sign.c \
|
||||
siphashx24.c sodium_core.c sodium_utils.c sodium_utils2.c \
|
||||
sodium_utils3.c sodium_version.c stream.c stream2.c stream3.c \
|
||||
stream4.c verify1.c xchacha20.c
|
||||
DIST_SOURCES = aead_aes256gcm.c aead_chacha20poly1305.c \
|
||||
aead_xchacha20poly1305.c auth.c auth2.c auth3.c auth5.c \
|
||||
auth6.c auth7.c box.c box2.c box7.c box8.c box_easy.c \
|
||||
box_easy2.c box_seal.c box_seed.c chacha20.c codecs.c core1.c \
|
||||
core2.c core3.c core4.c core5.c core6.c core_ed25519.c \
|
||||
ed25519_convert.c generichash.c generichash2.c generichash3.c \
|
||||
hash.c hash3.c kdf.c keygen.c kx.c metamorphic.c misuse.c \
|
||||
onetimeauth.c onetimeauth2.c onetimeauth7.c pwhash_argon2i.c \
|
||||
pwhash_argon2id.c pwhash_scrypt.c pwhash_scrypt_ll.c \
|
||||
randombytes.c scalarmult.c scalarmult2.c scalarmult5.c \
|
||||
scalarmult6.c scalarmult7.c scalarmult_ed25519.c secretbox.c \
|
||||
secretbox2.c secretbox7.c secretbox8.c secretbox_easy.c \
|
||||
secretbox_easy2.c secretstream.c shorthash.c sign.c \
|
||||
siphashx24.c sodium_core.c sodium_utils.c sodium_utils2.c \
|
||||
sodium_utils3.c sodium_version.c stream.c stream2.c stream3.c \
|
||||
stream4.c verify1.c xchacha20.c
|
||||
scalarmult6.c scalarmult7.c scalarmult8.c scalarmult_ed25519.c \
|
||||
secretbox.c secretbox2.c secretbox7.c secretbox8.c \
|
||||
secretbox_easy.c secretbox_easy2.c secretstream.c shorthash.c \
|
||||
sign.c siphashx24.c sodium_core.c sodium_utils.c \
|
||||
sodium_utils2.c sodium_utils3.c sodium_version.c stream.c \
|
||||
stream2.c stream3.c stream4.c verify1.c xchacha20.c
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
@@ -760,7 +775,6 @@ INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
ISODATE = @ISODATE@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
@@ -867,7 +881,9 @@ EXTRA_DIST = \
|
||||
wintest.bat \
|
||||
pre.js.inc \
|
||||
aead_aes256gcm.exp \
|
||||
aead_aes256gcm2.exp \
|
||||
aead_chacha20poly1305.exp \
|
||||
aead_chacha20poly13052.exp \
|
||||
aead_xchacha20poly1305.exp \
|
||||
auth.exp \
|
||||
auth2.exp \
|
||||
@@ -918,6 +934,7 @@ EXTRA_DIST = \
|
||||
scalarmult5.exp \
|
||||
scalarmult6.exp \
|
||||
scalarmult7.exp \
|
||||
scalarmult8.exp \
|
||||
secretbox.exp \
|
||||
secretbox2.exp \
|
||||
secretbox7.exp \
|
||||
@@ -942,7 +959,9 @@ EXTRA_DIST = \
|
||||
|
||||
DISTCLEANFILES = \
|
||||
aead_aes256gcm.res \
|
||||
aead_aes256gcm2.res \
|
||||
aead_chacha20poly1305.res \
|
||||
aead_chacha20poly13052.res \
|
||||
aead_xchacha20poly1305.res \
|
||||
auth.res \
|
||||
auth2.res \
|
||||
@@ -993,6 +1012,7 @@ DISTCLEANFILES = \
|
||||
scalarmult5.res \
|
||||
scalarmult6.res \
|
||||
scalarmult7.res \
|
||||
scalarmult8.res \
|
||||
secretbox.res \
|
||||
secretbox2.res \
|
||||
secretbox7.res \
|
||||
@@ -1017,7 +1037,9 @@ DISTCLEANFILES = \
|
||||
|
||||
@NATIVECLIENT_TRUE@CLEANFILES = \
|
||||
@NATIVECLIENT_TRUE@ aead_aes256gcm.final \
|
||||
@NATIVECLIENT_TRUE@ aead_aes256gcm2.final \
|
||||
@NATIVECLIENT_TRUE@ aead_chacha20poly1305.final \
|
||||
@NATIVECLIENT_TRUE@ aead_chacha20poly13052.final \
|
||||
@NATIVECLIENT_TRUE@ aead_xchacha20poly1305.final \
|
||||
@NATIVECLIENT_TRUE@ auth.final \
|
||||
@NATIVECLIENT_TRUE@ auth2.final \
|
||||
@@ -1068,6 +1090,7 @@ DISTCLEANFILES = \
|
||||
@NATIVECLIENT_TRUE@ scalarmult5.final \
|
||||
@NATIVECLIENT_TRUE@ scalarmult6.final \
|
||||
@NATIVECLIENT_TRUE@ scalarmult7.final \
|
||||
@NATIVECLIENT_TRUE@ scalarmult8.final \
|
||||
@NATIVECLIENT_TRUE@ secretbox.final \
|
||||
@NATIVECLIENT_TRUE@ secretbox2.final \
|
||||
@NATIVECLIENT_TRUE@ secretbox7.final \
|
||||
@@ -1088,7 +1111,9 @@ DISTCLEANFILES = \
|
||||
@NATIVECLIENT_TRUE@ verify1.final \
|
||||
@NATIVECLIENT_TRUE@ xchacha20.final \
|
||||
@NATIVECLIENT_TRUE@ aead_aes256gcm.nexe \
|
||||
@NATIVECLIENT_TRUE@ aead_aes256gcm2.nexe \
|
||||
@NATIVECLIENT_TRUE@ aead_chacha20poly1305.nexe \
|
||||
@NATIVECLIENT_TRUE@ aead_chacha20poly13052.nexe \
|
||||
@NATIVECLIENT_TRUE@ aead_xchacha20poly1305.nexe \
|
||||
@NATIVECLIENT_TRUE@ auth.nexe \
|
||||
@NATIVECLIENT_TRUE@ auth2.nexe \
|
||||
@@ -1139,6 +1164,7 @@ DISTCLEANFILES = \
|
||||
@NATIVECLIENT_TRUE@ scalarmult5.nexe \
|
||||
@NATIVECLIENT_TRUE@ scalarmult6.nexe \
|
||||
@NATIVECLIENT_TRUE@ scalarmult7.nexe \
|
||||
@NATIVECLIENT_TRUE@ scalarmult8.nexe \
|
||||
@NATIVECLIENT_TRUE@ secretbox.nexe \
|
||||
@NATIVECLIENT_TRUE@ secretbox2.nexe \
|
||||
@NATIVECLIENT_TRUE@ secretbox7.nexe \
|
||||
@@ -1168,25 +1194,30 @@ AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/test/quirks
|
||||
|
||||
AM_LDFLAGS = @TEST_LDFLAGS@
|
||||
TESTS_TARGETS = aead_aes256gcm aead_chacha20poly1305 \
|
||||
aead_xchacha20poly1305 auth auth2 auth3 auth5 auth6 auth7 box \
|
||||
box2 box7 box8 box_easy box_easy2 box_seal box_seed chacha20 \
|
||||
codecs core1 core2 core3 core4 core5 core6 ed25519_convert \
|
||||
generichash generichash2 generichash3 hash hash3 kdf keygen kx \
|
||||
metamorphic misuse onetimeauth onetimeauth2 onetimeauth7 \
|
||||
pwhash_argon2i pwhash_argon2id randombytes scalarmult \
|
||||
scalarmult2 scalarmult5 scalarmult6 scalarmult7 secretbox \
|
||||
secretbox2 secretbox7 secretbox8 secretbox_easy \
|
||||
secretbox_easy2 secretstream shorthash sign sodium_core \
|
||||
sodium_utils sodium_version stream stream2 stream3 stream4 \
|
||||
verify1 $(am__append_1) $(am__append_2)
|
||||
TESTS_TARGETS = aead_aes256gcm aead_aes256gcm2 aead_chacha20poly1305 \
|
||||
aead_chacha20poly13052 aead_xchacha20poly1305 auth auth2 auth3 \
|
||||
auth5 auth6 auth7 box box2 box7 box8 box_easy box_easy2 \
|
||||
box_seal box_seed chacha20 codecs core1 core2 core3 core4 \
|
||||
core5 core6 ed25519_convert generichash generichash2 \
|
||||
generichash3 hash hash3 kdf keygen kx metamorphic misuse \
|
||||
onetimeauth onetimeauth2 onetimeauth7 pwhash_argon2i \
|
||||
pwhash_argon2id randombytes scalarmult scalarmult2 scalarmult5 \
|
||||
scalarmult6 scalarmult7 scalarmult8 secretbox secretbox2 \
|
||||
secretbox7 secretbox8 secretbox_easy secretbox_easy2 \
|
||||
secretstream shorthash sign sodium_core sodium_utils \
|
||||
sodium_version stream stream2 stream3 stream4 verify1 \
|
||||
$(am__append_1) $(am__append_2)
|
||||
TESTS_LDADD = \
|
||||
${top_builddir}/src/libsodium/libsodium.la
|
||||
|
||||
aead_aes256gcm_SOURCE = cmptest.h aead_aes256gcm.c
|
||||
aead_aes256gcm_LDADD = $(TESTS_LDADD)
|
||||
aead_aes256gcm2_SOURCE = cmptest.h aead_aes256gcm2.c
|
||||
aead_aes256gcm2_LDADD = $(TESTS_LDADD)
|
||||
aead_chacha20poly1305_SOURCE = cmptest.h aead_chacha20poly1305.c
|
||||
aead_chacha20poly1305_LDADD = $(TESTS_LDADD)
|
||||
aead_chacha20poly13052_SOURCE = cmptest.h aead_chacha20poly13052.c
|
||||
aead_chacha20poly13052_LDADD = $(TESTS_LDADD)
|
||||
aead_xchacha20poly1305_SOURCE = cmptest.h aead_xchacha20poly1305.c
|
||||
aead_xchacha20poly1305_LDADD = $(TESTS_LDADD)
|
||||
auth_SOURCE = cmptest.h auth.c
|
||||
@@ -1285,6 +1316,8 @@ scalarmult6_SOURCE = cmptest.h scalarmult6.c
|
||||
scalarmult6_LDADD = $(TESTS_LDADD)
|
||||
scalarmult7_SOURCE = cmptest.h scalarmult7.c
|
||||
scalarmult7_LDADD = $(TESTS_LDADD)
|
||||
scalarmult8_SOURCE = cmptest.h scalarmult8.c
|
||||
scalarmult8_LDADD = $(TESTS_LDADD)
|
||||
secretbox_SOURCE = cmptest.h secretbox.c
|
||||
secretbox_LDADD = $(TESTS_LDADD)
|
||||
secretbox2_SOURCE = cmptest.h secretbox2.c
|
||||
@@ -1375,10 +1408,18 @@ aead_aes256gcm$(EXEEXT): $(aead_aes256gcm_OBJECTS) $(aead_aes256gcm_DEPENDENCIES
|
||||
@rm -f aead_aes256gcm$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(aead_aes256gcm_OBJECTS) $(aead_aes256gcm_LDADD) $(LIBS)
|
||||
|
||||
aead_aes256gcm2$(EXEEXT): $(aead_aes256gcm2_OBJECTS) $(aead_aes256gcm2_DEPENDENCIES) $(EXTRA_aead_aes256gcm2_DEPENDENCIES)
|
||||
@rm -f aead_aes256gcm2$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(aead_aes256gcm2_OBJECTS) $(aead_aes256gcm2_LDADD) $(LIBS)
|
||||
|
||||
aead_chacha20poly1305$(EXEEXT): $(aead_chacha20poly1305_OBJECTS) $(aead_chacha20poly1305_DEPENDENCIES) $(EXTRA_aead_chacha20poly1305_DEPENDENCIES)
|
||||
@rm -f aead_chacha20poly1305$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(aead_chacha20poly1305_OBJECTS) $(aead_chacha20poly1305_LDADD) $(LIBS)
|
||||
|
||||
aead_chacha20poly13052$(EXEEXT): $(aead_chacha20poly13052_OBJECTS) $(aead_chacha20poly13052_DEPENDENCIES) $(EXTRA_aead_chacha20poly13052_DEPENDENCIES)
|
||||
@rm -f aead_chacha20poly13052$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(aead_chacha20poly13052_OBJECTS) $(aead_chacha20poly13052_LDADD) $(LIBS)
|
||||
|
||||
aead_xchacha20poly1305$(EXEEXT): $(aead_xchacha20poly1305_OBJECTS) $(aead_xchacha20poly1305_DEPENDENCIES) $(EXTRA_aead_xchacha20poly1305_DEPENDENCIES)
|
||||
@rm -f aead_xchacha20poly1305$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(aead_xchacha20poly1305_OBJECTS) $(aead_xchacha20poly1305_LDADD) $(LIBS)
|
||||
@@ -1571,6 +1612,10 @@ scalarmult7$(EXEEXT): $(scalarmult7_OBJECTS) $(scalarmult7_DEPENDENCIES) $(EXTRA
|
||||
@rm -f scalarmult7$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(scalarmult7_OBJECTS) $(scalarmult7_LDADD) $(LIBS)
|
||||
|
||||
scalarmult8$(EXEEXT): $(scalarmult8_OBJECTS) $(scalarmult8_DEPENDENCIES) $(EXTRA_scalarmult8_DEPENDENCIES)
|
||||
@rm -f scalarmult8$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(scalarmult8_OBJECTS) $(scalarmult8_LDADD) $(LIBS)
|
||||
|
||||
scalarmult_ed25519$(EXEEXT): $(scalarmult_ed25519_OBJECTS) $(scalarmult_ed25519_DEPENDENCIES) $(EXTRA_scalarmult_ed25519_DEPENDENCIES)
|
||||
@rm -f scalarmult_ed25519$(EXEEXT)
|
||||
$(AM_V_CCLD)$(LINK) $(scalarmult_ed25519_OBJECTS) $(scalarmult_ed25519_LDADD) $(LIBS)
|
||||
@@ -1666,7 +1711,9 @@ distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aes256gcm.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_aes256gcm2.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_chacha20poly1305.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_chacha20poly13052.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aead_xchacha20poly1305.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth2.Po@am__quote@ # am--include-marker
|
||||
@@ -1715,6 +1762,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult5.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult6.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult7.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult8.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalarmult_ed25519.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox.Po@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/secretbox2.Po@am__quote@ # am--include-marker
|
||||
@@ -1974,6 +2022,13 @@ aead_aes256gcm.log: aead_aes256gcm$(EXEEXT)
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
aead_aes256gcm2.log: aead_aes256gcm2$(EXEEXT)
|
||||
@p='aead_aes256gcm2$(EXEEXT)'; \
|
||||
b='aead_aes256gcm2'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
aead_chacha20poly1305.log: aead_chacha20poly1305$(EXEEXT)
|
||||
@p='aead_chacha20poly1305$(EXEEXT)'; \
|
||||
b='aead_chacha20poly1305'; \
|
||||
@@ -1981,6 +2036,13 @@ aead_chacha20poly1305.log: aead_chacha20poly1305$(EXEEXT)
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
aead_chacha20poly13052.log: aead_chacha20poly13052$(EXEEXT)
|
||||
@p='aead_chacha20poly13052$(EXEEXT)'; \
|
||||
b='aead_chacha20poly13052'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
aead_xchacha20poly1305.log: aead_xchacha20poly1305$(EXEEXT)
|
||||
@p='aead_xchacha20poly1305$(EXEEXT)'; \
|
||||
b='aead_xchacha20poly1305'; \
|
||||
@@ -2296,6 +2358,13 @@ scalarmult7.log: scalarmult7$(EXEEXT)
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
scalarmult8.log: scalarmult8$(EXEEXT)
|
||||
@p='scalarmult8$(EXEEXT)'; \
|
||||
b='scalarmult8'; \
|
||||
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||
--log-file $$b.log --trs-file $$b.trs \
|
||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||
secretbox.log: secretbox$(EXEEXT)
|
||||
@p='secretbox$(EXEEXT)'; \
|
||||
b='secretbox'; \
|
||||
@@ -2567,7 +2636,9 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
|
||||
-rm -f ./$(DEPDIR)/aead_aes256gcm2.Po
|
||||
-rm -f ./$(DEPDIR)/aead_chacha20poly1305.Po
|
||||
-rm -f ./$(DEPDIR)/aead_chacha20poly13052.Po
|
||||
-rm -f ./$(DEPDIR)/aead_xchacha20poly1305.Po
|
||||
-rm -f ./$(DEPDIR)/auth.Po
|
||||
-rm -f ./$(DEPDIR)/auth2.Po
|
||||
@@ -2616,6 +2687,7 @@ distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/scalarmult5.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult6.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult7.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult8.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult_ed25519.Po
|
||||
-rm -f ./$(DEPDIR)/secretbox.Po
|
||||
-rm -f ./$(DEPDIR)/secretbox2.Po
|
||||
@@ -2684,7 +2756,9 @@ installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/aead_aes256gcm.Po
|
||||
-rm -f ./$(DEPDIR)/aead_aes256gcm2.Po
|
||||
-rm -f ./$(DEPDIR)/aead_chacha20poly1305.Po
|
||||
-rm -f ./$(DEPDIR)/aead_chacha20poly13052.Po
|
||||
-rm -f ./$(DEPDIR)/aead_xchacha20poly1305.Po
|
||||
-rm -f ./$(DEPDIR)/auth.Po
|
||||
-rm -f ./$(DEPDIR)/auth2.Po
|
||||
@@ -2733,6 +2807,7 @@ maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/scalarmult5.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult6.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult7.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult8.Po
|
||||
-rm -f ./$(DEPDIR)/scalarmult_ed25519.Po
|
||||
-rm -f ./$(DEPDIR)/secretbox.Po
|
||||
-rm -f ./$(DEPDIR)/secretbox2.Po
|
||||
|
||||
@@ -3179,7 +3179,7 @@ tv(void)
|
||||
printf("Message length should have been set to zero after a failure\n");
|
||||
}
|
||||
if (crypto_aead_aes256gcm_decrypt(decrypted, &found_message_len,
|
||||
NULL, NULL,
|
||||
NULL, guard_page,
|
||||
randombytes_uniform(crypto_aead_aes256gcm_ABYTES),
|
||||
ad, ad_len, nonce, key) != -1) {
|
||||
printf("Verification of test vector #%u with a truncated tag failed\n",
|
||||
|
||||
@@ -0,0 +1,276 @@
|
||||
|
||||
#define TEST_NAME "aead_aes256gcm2"
|
||||
#include "cmptest.h"
|
||||
|
||||
static struct {
|
||||
const char *key_hex;
|
||||
const char nonce_hex[crypto_aead_aes256gcm_NPUBBYTES * 2 + 1];
|
||||
const char *ad_hex;
|
||||
const char *message_hex;
|
||||
const char *detached_ciphertext_hex;
|
||||
const char mac_hex[crypto_aead_aes256gcm_ABYTES * 2 + 1];
|
||||
const char *outcome;
|
||||
} tests[] = {
|
||||
{ "92ace3e348cd821092cd921aa3546374299ab46209691bc28b8752d17f123c20",
|
||||
"00112233445566778899aabb", "00000000ffffffff", "00010203040506070809",
|
||||
"e27abdd2d2a53d2f136b", "9a4a2579529301bcfb71c78d4060f52c", "valid" },
|
||||
{ "29d3a44f8723dc640239100c365423a312934ac80239212ac3df3421a2098123",
|
||||
"00112233445566778899aabb", "aabbccddeeff", "", "",
|
||||
"2a7d77fa526b8250cb296078926b5020", "valid" },
|
||||
{ "cc56b680552eb75008f5484b4cb803fa5063ebd6eab91f6ab6aef4916a766273",
|
||||
"99e23ec48985bccdeeab60f1", "", "2a", "06",
|
||||
"633c1e9703ef744ffffb40edf9d14355", "valid" },
|
||||
{ "51e4bf2bad92b7aff1a4bc05550ba81df4b96fabf41c12c7b00e60e48db7e152",
|
||||
"4f07afedfdc3b6c2361823d3", "", "be3308f72a2c6aed", "cf332a12fdee800b",
|
||||
"602e8d7c4799d62c140c9bb834876b09", "valid" },
|
||||
{ "67119627bd988eda906219e08c0d0d779a07d208ce8a4fe0709af755eeec6dcb",
|
||||
"68ab7fdbf61901dad461d23c", "", "51f8c1f731ea14acdb210a6d973e07",
|
||||
"43fc101bff4b32bfadd3daf57a590e", "ec04aacb7148a8b8be44cb7eaf4efa69",
|
||||
"valid" },
|
||||
{ "59d4eafb4de0cfc7d3db99a8f54b15d7b39f0acc8da69763b019c1699f87674a",
|
||||
"2fcb1b38a99e71b84740ad9b", "", "549b365af913f3b081131ccb6b825588",
|
||||
"f58c16690122d75356907fd96b570fca", "28752c20153092818faba2a334640d6e",
|
||||
"valid" },
|
||||
{ "3b2458d8176e1621c0cc24c0c0e24c1e80d72f7ee9149a4b166176629616d011",
|
||||
"45aaa3e5d16d2d42dc03445d", "", "3ff1514b1c503915918f0c0c31094a6e1f",
|
||||
"73a6b6f45f6ccc5131e07f2caa1f2e2f56", "2d7379ec1db5952d4e95d30c340b1b1d",
|
||||
"valid" },
|
||||
{ "0212a8de5007ed87b33f1a7090b6114f9e08cefd9607f2c276bdcfdbc5ce9cd7",
|
||||
"e6b1adf2fd58a8762c65f31b", "",
|
||||
"10f1ecf9c60584665d9ae5efe279e7f7377eea6916d2b111",
|
||||
"0843fff52d934fc7a071ea62c0bd351ce85678cde3ea2c9e",
|
||||
"7355fde599006715053813ce696237a8", "valid" },
|
||||
{ "b279f57e19c8f53f2f963f5f2519fdb7c1779be2ca2b3ae8e1128b7d6c627fc4",
|
||||
"98bc2c7438d5cd7665d76f6e", "c0",
|
||||
"fcc515b294408c8645c9183e3f4ecee5127846d1",
|
||||
"eb5500e3825952866d911253f8de860c00831c81",
|
||||
"ecb660e1fb0541ec41e8d68a64141b3a", "valid" },
|
||||
{ "cdccfe3f46d782ef47df4e72f0c02d9c7f774def970d23486f11a57f54247f17",
|
||||
"376187894605a8d45e30de51", "956846a209e087ed",
|
||||
"e28e0e9f9d22463ac0e42639b530f42102fded75",
|
||||
"feca44952447015b5df1f456df8ca4bb4eee2ce2",
|
||||
"082e91924deeb77880e1b1c84f9b8d30", "valid" },
|
||||
{ "f32364b1d339d82e4f132d8f4a0ec1ff7e746517fa07ef1a7f422f4e25a48194",
|
||||
"5a86a50a0e8a179c734b996d", "ab2ac7c44c60bdf8228c7884adb20184",
|
||||
"43891bccb522b1e72a6b53cf31c074e9d6c2df8e",
|
||||
"43dda832e942e286da314daa99bef5071d9d2c78",
|
||||
"c3922583476ced575404ddb85dd8cd44", "valid" },
|
||||
{ "ff0089ee870a4a39f645b0a5da774f7a5911e9696fc9cad646452c2aa8595a12",
|
||||
"bc2a7757d0ce2d8b1f14ccd9",
|
||||
"972ab4e06390caae8f99dd6e2187be6c7ff2c08a24be16ef",
|
||||
"748b28031621d95ee61812b4b4f47d04c6fc2ff3",
|
||||
"a929ee7e67c7a2f91bbcec6389a3caf43ab49305",
|
||||
"ebec6774b955e789591c822dab739e12", "valid" },
|
||||
{ "00112233445566778899aabbccddeeff102132435465768798a9bacbdcedfe0f",
|
||||
"000000000000000000000000", "", "561008fa07a68f5c61285cd013464eaf",
|
||||
"23293e9b07ca7d1b0cae7cc489a973b3", "ffffffffffffffffffffffffffffffff",
|
||||
"valid" },
|
||||
{ "00112233445566778899aabbccddeeff102132435465768798a9bacbdcedfe0f",
|
||||
"ffffffffffffffffffffffff", "", "c6152244cea1978d3e0bc274cf8c0b3b",
|
||||
"7cb6fc7c6abc009efe9551a99f36a421", "00000000000000000000000000000000",
|
||||
"valid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9de8fef6d8ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ee8fef6d8ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "1ce8fef6d8ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce9fef6d8ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fe76d8ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d9ab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6daab1bf1bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1b71bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1be887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf13f887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bfa87232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887332eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232ebb590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232e8b590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf8872326ab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab590dc",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab590df",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab5909d",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1bf1bf887232eab5905d",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9de8fef6d8ab1bf1be887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fe76d8ab1b71bf887232eab590dd",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9ce8fef6d8ab1b71bf887232eab5905d",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "631701092754e40e40778dcd154a6f22",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "00000000000000000000000000000000",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "ffffffffffffffffffffffffffffffff",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "1c687e76582b9b713f08f2b26a35105d",
|
||||
"invalid" },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"505152535455565758595a5b", "", "202122232425262728292a2b2c2d2e2f",
|
||||
"b2061457c0759fc1749f174ee1ccadfa", "9de9fff7d9aa1af0be897333ebb491dc",
|
||||
"invalid" }
|
||||
};
|
||||
|
||||
static int
|
||||
tv(void)
|
||||
{
|
||||
unsigned char *ad;
|
||||
unsigned char *decrypted;
|
||||
unsigned char *detached_ciphertext;
|
||||
unsigned char *key;
|
||||
unsigned char *message;
|
||||
unsigned char *mac;
|
||||
unsigned char *nonce;
|
||||
size_t ad_len;
|
||||
size_t detached_ciphertext_len;
|
||||
size_t message_len;
|
||||
unsigned int i;
|
||||
|
||||
key = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_KEYBYTES);
|
||||
nonce = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_NPUBBYTES);
|
||||
mac = (unsigned char *) sodium_malloc(crypto_aead_aes256gcm_ABYTES);
|
||||
|
||||
for (i = 0U; i < (sizeof tests) / (sizeof tests[0]); i++) {
|
||||
assert(strlen(tests[i].key_hex) == 2 * crypto_aead_aes256gcm_KEYBYTES);
|
||||
sodium_hex2bin(key, crypto_aead_aes256gcm_KEYBYTES, tests[i].key_hex,
|
||||
strlen(tests[i].key_hex), NULL, NULL, NULL);
|
||||
|
||||
assert(strlen(tests[i].nonce_hex) ==
|
||||
2 * crypto_aead_aes256gcm_NPUBBYTES);
|
||||
sodium_hex2bin(nonce, crypto_aead_aes256gcm_NPUBBYTES,
|
||||
tests[i].nonce_hex, strlen(tests[i].nonce_hex), NULL,
|
||||
NULL, NULL);
|
||||
|
||||
message_len = strlen(tests[i].message_hex) / 2;
|
||||
message = (unsigned char *) sodium_malloc(message_len);
|
||||
sodium_hex2bin(message, message_len, tests[i].message_hex,
|
||||
strlen(tests[i].message_hex), NULL, NULL, NULL);
|
||||
|
||||
ad_len = strlen(tests[i].ad_hex) / 2;
|
||||
ad = (unsigned char *) sodium_malloc(ad_len);
|
||||
sodium_hex2bin(ad, ad_len, tests[i].ad_hex, strlen(tests[i].ad_hex),
|
||||
NULL, NULL, NULL);
|
||||
|
||||
detached_ciphertext_len = message_len;
|
||||
assert(strlen(tests[i].detached_ciphertext_hex) == 2 * message_len);
|
||||
assert(strlen(tests[i].mac_hex) == 2 * crypto_aead_aes256gcm_ABYTES);
|
||||
sodium_hex2bin(mac, crypto_aead_aes256gcm_ABYTES, tests[i].mac_hex,
|
||||
strlen(tests[i].mac_hex), NULL, NULL, NULL);
|
||||
|
||||
detached_ciphertext =
|
||||
(unsigned char *) sodium_malloc(detached_ciphertext_len);
|
||||
sodium_hex2bin(detached_ciphertext, detached_ciphertext_len,
|
||||
tests[i].detached_ciphertext_hex,
|
||||
strlen(tests[i].detached_ciphertext_hex), NULL, NULL,
|
||||
NULL);
|
||||
|
||||
decrypted = (unsigned char *) sodium_malloc(message_len);
|
||||
if (crypto_aead_aes256gcm_decrypt_detached(
|
||||
decrypted, NULL, detached_ciphertext, detached_ciphertext_len,
|
||||
mac, ad, ad_len, nonce, key) == 0) {
|
||||
if (strcmp(tests[i].outcome, "valid") != 0) {
|
||||
printf("*** test case %u succeeded, was supposed to be %s\n", i,
|
||||
tests[i].outcome);
|
||||
}
|
||||
if (memcmp(decrypted, message, message_len) != 0) {
|
||||
printf("Incorrect decryption of test vector #%u\n",
|
||||
(unsigned int) i);
|
||||
}
|
||||
} else {
|
||||
if (strcmp(tests[i].outcome, "invalid") != 0) {
|
||||
printf("*** test case %u failed, was supposed to be %s\n", i,
|
||||
tests[i].outcome);
|
||||
}
|
||||
}
|
||||
|
||||
sodium_free(message);
|
||||
sodium_free(ad);
|
||||
sodium_free(decrypted);
|
||||
sodium_free(detached_ciphertext);
|
||||
}
|
||||
|
||||
sodium_free(key);
|
||||
sodium_free(mac);
|
||||
sodium_free(nonce);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
if (crypto_aead_aes256gcm_is_available()) {
|
||||
tv();
|
||||
}
|
||||
printf("OK\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
OK
|
||||
@@ -115,7 +115,7 @@ tv(void)
|
||||
}
|
||||
m2len = 1;
|
||||
if (crypto_aead_chacha20poly1305_decrypt(
|
||||
m2, &m2len, NULL, NULL,
|
||||
m2, &m2len, NULL, guard_page,
|
||||
randombytes_uniform(crypto_aead_chacha20poly1305_ABYTES),
|
||||
NULL, 0U, nonce, firstkey) != -1) {
|
||||
printf("crypto_aead_chacha20poly1305_decrypt() worked with a short "
|
||||
@@ -296,7 +296,7 @@ tv_ietf(void)
|
||||
}
|
||||
m2len = 1;
|
||||
if (crypto_aead_chacha20poly1305_ietf_decrypt(
|
||||
m2, &m2len, NULL, NULL,
|
||||
m2, &m2len, NULL, guard_page,
|
||||
randombytes_uniform(crypto_aead_chacha20poly1305_ietf_ABYTES),
|
||||
NULL, 0U, nonce, firstkey) != -1) {
|
||||
printf("crypto_aead_chacha20poly1305_ietf_decrypt() worked with a short "
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
OK
|
||||
@@ -118,7 +118,7 @@ tv(void)
|
||||
}
|
||||
m2len = 1;
|
||||
if (crypto_aead_xchacha20poly1305_ietf_decrypt(
|
||||
m2, &m2len, NULL, NULL,
|
||||
m2, &m2len, NULL, guard_page,
|
||||
randombytes_uniform(crypto_aead_xchacha20poly1305_ietf_ABYTES),
|
||||
NULL, 0U, nonce, firstkey) != -1) {
|
||||
printf("crypto_aead_xchacha20poly1305_ietf_decrypt() worked with a short "
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ main(void)
|
||||
|
||||
memset(a2, 0, sizeof a2);
|
||||
crypto_auth_hmacsha256_init(&st256, key2, sizeof key2);
|
||||
crypto_auth_hmacsha256_update(&st256, NULL, 0U);
|
||||
crypto_auth_hmacsha256_update(&st256, guard_page, 0U);
|
||||
crypto_auth_hmacsha256_update(&st256, c, 1U);
|
||||
crypto_auth_hmacsha256_update(&st256, c, sizeof c - 2U);
|
||||
crypto_auth_hmacsha256_final(&st256, a2);
|
||||
|
||||
@@ -105,7 +105,7 @@ void tv_ietf(void)
|
||||
1U },
|
||||
{ "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
"000000090000004a00000000",
|
||||
0xffffffff }};
|
||||
0xfeffffff }};
|
||||
unsigned char key[crypto_stream_chacha20_KEYBYTES];
|
||||
unsigned char nonce[crypto_stream_chacha20_IETF_NONCEBYTES];
|
||||
unsigned char *part;
|
||||
@@ -137,7 +137,7 @@ void tv_ietf(void)
|
||||
assert(66 <= sizeof out);
|
||||
for (plen = 1U; plen < 66; plen += 3) {
|
||||
memset(out, (int) (plen & 0xff), sizeof out);
|
||||
crypto_stream_chacha20_ietf(out, plen, nonce, key);
|
||||
crypto_stream_chacha20(out, plen, nonce, key);
|
||||
sodium_bin2hex(out_hex, sizeof out_hex, out, sizeof out);
|
||||
printf("[%s]\n", out_hex);
|
||||
}
|
||||
|
||||
+23
-23
@@ -35,29 +35,29 @@
|
||||
[72d54dfbf12ec44b362692df94137f328fea8da73990265ec1bbbea1ae9af0ca13b25aa26cb4a648cb9b9d1be65b2c0924a66c54d545ec1b7374f4872e99f096bf74dbd52cc4fc95ceb6097fe5e65358c9dbc0a5ecbf7894a132a9a54ae3e951f2e9f209aa9c3d9a877ac9dab62433d2961a17d103e455dfb7337c90f6857aad233065955a212b5c7a8eab4dc8a629e5b6b8ba914afd06de7177054b33d21c96]
|
||||
[c2c64d378cd536374ae204b9ef933fcd1a8b2288b3dfa49672ab765b54ee27c78a970e0e955c14f3a88e741b97c286f75f8fc299e8148362fa198a39531bed6d1a91288c874ec254f322c2a197340c55bb3e9b3998f7de2309486a0bb494abd20c9c5ef99c1370d61e77f408ac5514f49202bcc6828d45409d2d1416f8ae106b06ebd2541256264fa415bd54cb12e1d4449ed85299a1b7a249b75ff6c89b2e3f]
|
||||
[10f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4ed2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e0a88837739d7bf4ef8ccacb0ea2bb9d69d56c394aa351dfda5bf459f0a2e9fe8e721f89255f9c486bf21679c683d4f9c5cf2fa27865526005b06ca374c86af3bdcbfbdcb83be65862ed5c20eae5a43241d6a92da6dca9a156be25297f51c2718]
|
||||
[ff2941b8d740f6cbb50936bf997ebd5218cb108dc53f41c64841d0218167430ca03b770ca74ccb642a28194d1dedd2ed13151e25ec5d7faeb6d060bfb7e6b146880b67b55162bca26abe045fad14b0f492a3f369dcd52f98bc1513eaf238a3f434c7527121b4b756613e270395358d831d4950b6c7812fb724dc7c9be5e5c62ec8796d6690205061108b113f695582e4cf5d8b51112a51d157ef15e2cb95e4d5]
|
||||
[8a010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101]
|
||||
[8adc91fd040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404]
|
||||
[8adc91fd9ff4f0070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707]
|
||||
[8adc91fd9ff4f0f51b0f0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a]
|
||||
[8adc91fd9ff4f0f51b0fad50ff0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efd131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a742001c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c151f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd98222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d5282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f492e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69c313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1f343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a755843a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d693d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d690a35d4404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040]
|
||||
[75924bad7831b25662dbac54b46827990b6168ae990e7bd7e1fd2ad282bf23ef052c7d1a0a6c1ef862070943a0d4da24705fbc006dfb85e2af18c0a264d772a44c70fbedac9d6a6867ff6be0a32826507f2c784101583211c9e2453d4cc8b283d5e86682bd4bf511271b91dbd351415f5a009d1f78b64085a9a4341be7d42e2679d57e2747097f0129950e2c9e9ca1356022d45da252af71ac37f351a2e77911]
|
||||
[61010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101]
|
||||
[6146f256040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404]
|
||||
[6146f2564fe1bd070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707]
|
||||
[6146f2564fe1bdf9bccd0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a]
|
||||
[6146f2564fe1bdf9bccd0fe1ed0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb00161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af1021c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7081f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f6222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c2973032e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2e34130343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2e3413018ff7e373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737373737]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2e3413018ff7ed87cfa3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2e3413018ff7ed87cfa95b60f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d]
|
||||
[6146f2564fe1bdf9bccd0fe1edf0da5d92f1fa76cb002937ba9af10230a7085f55f67bf6ab410fba060c2c297303ace1e2e3413018ff7ed87cfa95b60f094ee5404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040]
|
||||
[8adc91fd9ff4f0f51b0fad50ff15d637e40efda206cc52c783a74200503c1582cd9833367d0a54d57d3c9e998f490ee69ca34c1ff9e939a75584c52d690a35d410f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4ed2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e0a88837739d7bf4ef8ccacb0ea2bb9d69d56c394aa351dfda5bf459f0a2e9fe8]
|
||||
[c89ed3bfddb6b2b7594def12bd579475a64cbfe0448e1085c1e50042127e57c08fda71743f4816973f7edcdbcd0b4ca4dee10e5dbbab7be517c6876f2b48779652b3a5a693791b57124d9f5de16233868593b68571822a414660e8d881962e0c90c0260445dde84b568095479bc940e0f750de939c540cfb8992c1aae0127e0c48cac1357b95fd0cba8eeef2a869fb94df1481d6e8775fbfe7fd07dd486cddaa]
|
||||
[42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242]
|
||||
|
||||
+86
-3
@@ -35,6 +35,8 @@
|
||||
|
||||
int xmain(void);
|
||||
|
||||
static unsigned char *guard_page;
|
||||
|
||||
#ifdef BENCHMARKS
|
||||
|
||||
# include <sys/time.h>
|
||||
@@ -43,6 +45,77 @@ int xmain(void);
|
||||
# define ITERATIONS 128
|
||||
# endif
|
||||
|
||||
struct {
|
||||
void *pnt;
|
||||
size_t size;
|
||||
} mempool[1024];
|
||||
|
||||
static size_t mempool_idx;
|
||||
|
||||
static __attribute__((malloc)) void *mempool_alloc(size_t size)
|
||||
{
|
||||
size_t i;
|
||||
if (size >= (size_t) 0x80000000 - (size_t) 0x00000fff) {
|
||||
return NULL;
|
||||
}
|
||||
size = (size + (size_t) 0x00000fff) & ~ (size_t) 0x00000fff;
|
||||
for (i = 0U; i < mempool_idx; i++) {
|
||||
if (mempool[i].size >= (size | (size_t) 0x80000000)) {
|
||||
mempool[i].size &= ~ (size_t) 0x80000000;
|
||||
return mempool[i].pnt;
|
||||
}
|
||||
}
|
||||
if (mempool_idx >= sizeof mempool / sizeof mempool[0]) {
|
||||
return NULL;
|
||||
}
|
||||
mempool[mempool_idx].size = size;
|
||||
return (mempool[mempool_idx++].pnt = (void *) malloc(size));
|
||||
}
|
||||
|
||||
static void mempool_free(void *pnt)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0U; i < mempool_idx; i++) {
|
||||
if (mempool[i].pnt == pnt) {
|
||||
if ((mempool[i].size & (size_t) 0x80000000) != (size_t) 0x0) {
|
||||
break;
|
||||
}
|
||||
mempool[i].size |= (size_t) 0x80000000;
|
||||
return;
|
||||
}
|
||||
}
|
||||
abort();
|
||||
}
|
||||
|
||||
static __attribute__((malloc)) void *mempool_allocarray(size_t count, size_t size)
|
||||
{
|
||||
if (count > (size_t) 0U && size >= (size_t) SIZE_MAX / count) {
|
||||
return NULL;
|
||||
}
|
||||
return mempool_alloc(count * size);
|
||||
}
|
||||
|
||||
static int mempool_free_all(void)
|
||||
{
|
||||
size_t i;
|
||||
int ret = 0;
|
||||
|
||||
for (i = 0U; i < mempool_idx; i++) {
|
||||
if ((mempool[i].size & (size_t) 0x80000000) == (size_t) 0x0) {
|
||||
ret = -1;
|
||||
}
|
||||
free(mempool[i].pnt);
|
||||
mempool[i].pnt = NULL;
|
||||
}
|
||||
mempool_idx = (size_t) 0U;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define sodium_malloc(X) mempool_alloc(X)
|
||||
#define sodium_free(X) mempool_free(X)
|
||||
#define sodium_allocarray(X, Y) mempool_allocarray((X), (Y))
|
||||
|
||||
static unsigned long long now(void)
|
||||
{
|
||||
struct timeval tp;
|
||||
@@ -78,7 +151,10 @@ int main(void)
|
||||
}
|
||||
ts_end = now();
|
||||
printf("%llu\n", 1000000ULL * (ts_end - ts_start) / ITERATIONS);
|
||||
|
||||
if (mempool_free_all() != 0) {
|
||||
fprintf(stderr, "** memory leaks detected **\n");
|
||||
return 99;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -91,8 +167,9 @@ static FILE *fp_res;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
FILE *fp_out;
|
||||
int c;
|
||||
FILE *fp_out;
|
||||
unsigned char *_guard_page;
|
||||
int c;
|
||||
|
||||
if ((fp_res = fopen(TEST_NAME_RES, "w+")) == NULL) {
|
||||
perror("fopen(" TEST_NAME_RES ")");
|
||||
@@ -101,6 +178,11 @@ int main(void)
|
||||
if (sodium_init() != 0) {
|
||||
return 99;
|
||||
}
|
||||
if ((_guard_page = (unsigned char *) sodium_malloc(0)) == NULL) {
|
||||
perror("sodium_malloc()");
|
||||
return 99;
|
||||
}
|
||||
guard_page = _guard_page + 1;
|
||||
if (xmain() != 0) {
|
||||
return 99;
|
||||
}
|
||||
@@ -114,6 +196,7 @@ int main(void)
|
||||
return 99;
|
||||
}
|
||||
} while (c != EOF);
|
||||
sodium_free(_guard_page);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+11
-12
@@ -11,11 +11,10 @@ main(void)
|
||||
char *b64_;
|
||||
const char *b64_end;
|
||||
unsigned char *bin;
|
||||
unsigned char *bin_padded;
|
||||
const char *hex;
|
||||
const char *hex_end;
|
||||
size_t b64_len;
|
||||
size_t bin_len, bin_len2;
|
||||
size_t bin_len;
|
||||
unsigned int i;
|
||||
|
||||
printf("%s\n",
|
||||
@@ -93,7 +92,7 @@ main(void)
|
||||
sodium_bin2base64(buf3, 33U, (const unsigned char *) "\xfb\xf0\xf1" "0123456789ABCDEFabc",
|
||||
22U, sodium_base64_VARIANT_URLSAFE_NO_PADDING));
|
||||
printf("%s\n",
|
||||
sodium_bin2base64(buf3, 1U, NULL,
|
||||
sodium_bin2base64(buf3, 1U, guard_page,
|
||||
0U, sodium_base64_VARIANT_ORIGINAL));
|
||||
printf("%s\n",
|
||||
sodium_bin2base64(buf3, 5U, (const unsigned char *) "a",
|
||||
@@ -105,7 +104,7 @@ main(void)
|
||||
sodium_bin2base64(buf3, 5U, (const unsigned char *) "abc",
|
||||
3U, sodium_base64_VARIANT_ORIGINAL));
|
||||
printf("%s\n",
|
||||
sodium_bin2base64(buf3, 1U, NULL,
|
||||
sodium_bin2base64(buf3, 1U, guard_page,
|
||||
0U, sodium_base64_VARIANT_ORIGINAL_NO_PADDING));
|
||||
printf("%s\n",
|
||||
sodium_bin2base64(buf3, 3U, (const unsigned char *) "a",
|
||||
@@ -161,21 +160,21 @@ main(void)
|
||||
assert(sodium_base642bin(buf1, sizeof buf1, b64, strlen(b64), " \r\n", NULL,
|
||||
NULL, sodium_base64_VARIANT_URLSAFE_NO_PADDING) == -1);
|
||||
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a=", (size_t) 2U, NULL, NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a=", (size_t) 2U, NULL, NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a*", (size_t) 2U, NULL, NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, NULL, NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a*", (size_t) 2U, "~", NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, "~", NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a*", (size_t) 2U, "*", NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a*", (size_t) 2U, "*", NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a==", (size_t) 3U, NULL, NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a==", (size_t) 3U, NULL, NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a=*", (size_t) 3U, NULL, NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, NULL, NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a=*", (size_t) 3U, "~", NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, "~", NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
assert(sodium_base642bin(NULL, (size_t) 10U, "a=*", (size_t) 3U, "*", NULL, NULL,
|
||||
assert(sodium_base642bin(guard_page, (size_t) 10U, "a=*", (size_t) 3U, "*", NULL, NULL,
|
||||
sodium_base64_VARIANT_URLSAFE) == -1);
|
||||
|
||||
assert(sodium_base642bin(buf1, sizeof buf1, "O1R", (size_t) 3U, NULL, NULL, NULL,
|
||||
|
||||
+217
-11
@@ -23,15 +23,22 @@ add_P(unsigned char * const S)
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
|
||||
};
|
||||
unsigned char c = 0U;
|
||||
unsigned int i;
|
||||
unsigned int s;
|
||||
|
||||
for (i = 0U; i < 32U; i++) {
|
||||
s = S[i] + P[i] + c;
|
||||
S[i] = (unsigned char) s;
|
||||
c = (s >> 8) & 1;
|
||||
}
|
||||
sodium_add(S, P, sizeof P);
|
||||
}
|
||||
|
||||
static void
|
||||
add_l64(unsigned char * const S)
|
||||
{
|
||||
static const unsigned char l[crypto_core_ed25519_NONREDUCEDSCALARBYTES] =
|
||||
{ 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
|
||||
0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
sodium_add(S, l, sizeof l);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -39,8 +46,10 @@ main(void)
|
||||
{
|
||||
unsigned char *h;
|
||||
unsigned char *p, *p2, *p3;
|
||||
unsigned char *sc;
|
||||
int i, j;
|
||||
unsigned char *sc, *sc2, *sc3;
|
||||
unsigned char *sc64;
|
||||
char *hex;
|
||||
unsigned int i, j;
|
||||
|
||||
h = (unsigned char *) sodium_malloc(crypto_core_ed25519_UNIFORMBYTES);
|
||||
p = (unsigned char *) sodium_malloc(crypto_core_ed25519_BYTES);
|
||||
@@ -59,7 +68,7 @@ main(void)
|
||||
randombytes_buf(h, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_from_uniform(p2, h);
|
||||
|
||||
j = 1 + (int) randombytes_uniform(100);
|
||||
j = 1 + (unsigned int) randombytes_uniform(100);
|
||||
memcpy(p3, p, crypto_core_ed25519_BYTES);
|
||||
for (i = 0; i < j; i++) {
|
||||
crypto_core_ed25519_add(p, p, p2);
|
||||
@@ -135,6 +144,200 @@ main(void)
|
||||
assert(crypto_core_ed25519_sub(p3, non_canonical_p, p3) == 0);
|
||||
assert(crypto_core_ed25519_sub(p3, non_canonical_invalid_p, p3) == -1);
|
||||
|
||||
for (i = 0; i < 1000; i++) {
|
||||
randombytes_buf(h, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_from_uniform(p, h);
|
||||
crypto_core_ed25519_scalar_random(sc);
|
||||
if (crypto_scalarmult_ed25519_noclamp(p2, sc, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed\n");
|
||||
}
|
||||
assert(crypto_core_ed25519_is_valid_point(p2));
|
||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(p3, sc, p2) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed\n");
|
||||
}
|
||||
assert(memcmp(p3, p, crypto_core_ed25519_BYTES) == 0);
|
||||
}
|
||||
|
||||
sc64 = (unsigned char *) sodium_malloc(64);
|
||||
crypto_core_ed25519_scalar_random(sc);
|
||||
memcpy(sc64, sc, crypto_core_ed25519_BYTES);
|
||||
memset(sc64 + crypto_core_ed25519_BYTES, 0,
|
||||
64 - crypto_core_ed25519_BYTES);
|
||||
i = (unsigned int) randombytes_uniform(100);
|
||||
do {
|
||||
add_l64(sc64);
|
||||
} while (i-- > 0);
|
||||
crypto_core_ed25519_scalar_reduce(sc64, sc64);
|
||||
if (memcmp(sc64, sc, crypto_core_ed25519_BYTES) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_reduce() failed\n");
|
||||
}
|
||||
|
||||
randombytes_buf(h, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_from_uniform(p, h);
|
||||
memcpy(p2, p, crypto_core_ed25519_BYTES);
|
||||
crypto_core_ed25519_scalar_random(sc);
|
||||
if (crypto_scalarmult_ed25519_noclamp(p, sc, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed (1)\n");
|
||||
}
|
||||
crypto_core_ed25519_scalar_complement(sc, sc);
|
||||
if (crypto_scalarmult_ed25519_noclamp(p2, sc, p2) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed (2)\n");
|
||||
}
|
||||
crypto_core_ed25519_add(p3, p, p2);
|
||||
crypto_core_ed25519_from_uniform(p, h);
|
||||
crypto_core_ed25519_sub(p, p, p3);
|
||||
assert(p[0] == 0x01);
|
||||
for (i = 1; i < crypto_core_ed25519_BYTES; i++) {
|
||||
assert(p[i] == 0);
|
||||
}
|
||||
|
||||
randombytes_buf(h, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_from_uniform(p, h);
|
||||
memcpy(p2, p, crypto_core_ed25519_BYTES);
|
||||
crypto_core_ed25519_scalar_random(sc);
|
||||
if (crypto_scalarmult_ed25519_noclamp(p, sc, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed (3)\n");
|
||||
}
|
||||
crypto_core_ed25519_scalar_negate(sc, sc);
|
||||
if (crypto_scalarmult_ed25519_noclamp(p2, sc, p2) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed (4)\n");
|
||||
}
|
||||
crypto_core_ed25519_add(p, p, p2);
|
||||
assert(p[0] == 0x01);
|
||||
for (i = 1; i < crypto_core_ed25519_BYTES; i++) {
|
||||
assert(p[i] == 0);
|
||||
}
|
||||
|
||||
hex = (char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES * 2 + 1);
|
||||
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 255 - i;
|
||||
}
|
||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||
}
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("inv1: %s\n", hex);
|
||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||
}
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("inv2: %s\n", hex);
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 32 - i;
|
||||
}
|
||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||
}
|
||||
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("inv3: %s\n", hex);
|
||||
if (crypto_core_ed25519_scalar_invert(sc, sc) != 0) {
|
||||
printf("crypto_core_ed25519_scalar_invert() failed\n");
|
||||
}
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("inv4: %s\n", hex);
|
||||
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 255 - i;
|
||||
}
|
||||
crypto_core_ed25519_scalar_negate(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("neg1: %s\n", hex);
|
||||
crypto_core_ed25519_scalar_negate(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("neg2: %s\n", hex);
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 32 - i;
|
||||
}
|
||||
crypto_core_ed25519_scalar_negate(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("neg3: %s\n", hex);
|
||||
crypto_core_ed25519_scalar_negate(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("neg4: %s\n", hex);
|
||||
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 255 - i;
|
||||
}
|
||||
crypto_core_ed25519_scalar_complement(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("comp1: %s\n", hex);
|
||||
crypto_core_ed25519_scalar_complement(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("comp2: %s\n", hex);
|
||||
for (i = 0; i < crypto_core_ed25519_SCALARBYTES; i++) {
|
||||
sc[i] = 32 - i;
|
||||
}
|
||||
crypto_core_ed25519_scalar_complement(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("comp3: %s\n", hex);
|
||||
crypto_core_ed25519_scalar_complement(sc, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("comp4: %s\n", hex);
|
||||
|
||||
sc2 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
||||
sc3 = (unsigned char *) sodium_malloc(crypto_core_ed25519_SCALARBYTES);
|
||||
for (i = 0; i < 1000; i++) {
|
||||
randombytes_buf(sc, crypto_core_ed25519_SCALARBYTES);
|
||||
randombytes_buf(sc2, crypto_core_ed25519_SCALARBYTES);
|
||||
sc[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f;
|
||||
sc2[crypto_core_ed25519_SCALARBYTES - 1] &= 0x7f;
|
||||
crypto_core_ed25519_scalar_add(sc3, sc, sc2);
|
||||
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
||||
crypto_core_ed25519_scalar_sub(sc3, sc3, sc2);
|
||||
assert(!sodium_is_zero(sc, crypto_core_ed25519_SCALARBYTES));
|
||||
crypto_core_ed25519_scalar_sub(sc3, sc3, sc);
|
||||
assert(sodium_is_zero(sc3, crypto_core_ed25519_SCALARBYTES));
|
||||
}
|
||||
|
||||
memset(sc, 0x69, crypto_core_ed25519_UNIFORMBYTES);
|
||||
memset(sc2, 0x42, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_scalar_add(sc, sc, sc2);
|
||||
crypto_core_ed25519_scalar_add(sc, sc2, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("add1: %s\n", hex);
|
||||
|
||||
crypto_core_ed25519_scalar_sub(sc, sc2, sc);
|
||||
crypto_core_ed25519_scalar_sub(sc, sc, sc2);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("sub1: %s\n", hex);
|
||||
|
||||
memset(sc, 0xcd, crypto_core_ed25519_UNIFORMBYTES);
|
||||
memset(sc2, 0x42, crypto_core_ed25519_UNIFORMBYTES);
|
||||
crypto_core_ed25519_scalar_add(sc, sc, sc2);
|
||||
crypto_core_ed25519_scalar_add(sc, sc2, sc);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("add2: %s\n", hex);
|
||||
|
||||
crypto_core_ed25519_scalar_sub(sc, sc2, sc);
|
||||
crypto_core_ed25519_scalar_sub(sc, sc, sc2);
|
||||
sodium_bin2hex(hex, crypto_core_ed25519_SCALARBYTES * 2 + 1,
|
||||
sc, crypto_core_ed25519_SCALARBYTES);
|
||||
printf("sub2: %s\n", hex);
|
||||
|
||||
sodium_free(hex);
|
||||
sodium_free(sc64);
|
||||
sodium_free(sc3);
|
||||
sodium_free(sc2);
|
||||
sodium_free(sc);
|
||||
sodium_free(p3);
|
||||
sodium_free(p2);
|
||||
@@ -142,6 +345,9 @@ main(void)
|
||||
sodium_free(h);
|
||||
|
||||
assert(crypto_core_ed25519_BYTES == crypto_core_ed25519_bytes());
|
||||
assert(crypto_core_ed25519_SCALARBYTES == crypto_core_ed25519_scalarbytes());
|
||||
assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES == crypto_core_ed25519_nonreducedscalarbytes());
|
||||
assert(crypto_core_ed25519_NONREDUCEDSCALARBYTES >= crypto_core_ed25519_SCALARBYTES);
|
||||
assert(crypto_core_ed25519_UNIFORMBYTES == crypto_core_ed25519_uniformbytes());
|
||||
assert(crypto_core_ed25519_UNIFORMBYTES >= crypto_core_ed25519_BYTES);
|
||||
|
||||
|
||||
@@ -1 +1,17 @@
|
||||
inv1: 5858cdec40a044b1548b3bb08f8ce0d71103d1f887df84ebc502643dac4df40b
|
||||
inv2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100
|
||||
inv3: f70b4f272b47bd6a1015a511fb3c9fc1b9c21ca4ca2e17d5a225b4c410b9b60d
|
||||
inv4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201
|
||||
neg1: e46b69758fd3193097398c9717b11e48111112131415161718191a1b1c1d1e0f
|
||||
neg2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100
|
||||
neg3: cdb4d73ffe47f83ebe85e18dcae6cc03f0f0f1f2f3f4f5f6f7f8f9fafbfcfd0e
|
||||
neg4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201
|
||||
comp1: e56b69758fd3193097398c9717b11e48111112131415161718191a1b1c1d1e0f
|
||||
comp2: 09688ce78a8ff8273f636b0bc748c0cceeeeedecebeae9e8e7e6e5e4e3e2e100
|
||||
comp3: ceb4d73ffe47f83ebe85e18dcae6cc03f0f0f1f2f3f4f5f6f7f8f9fafbfcfd0e
|
||||
comp4: 201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201
|
||||
add1: f7567cd87c82ec1c355a6304c143bcc9ecedededededededededededededed0d
|
||||
sub1: f67c79849de0253ba142949e1db6224b13121212121212121212121212121202
|
||||
add2: b02e8581ce62f69922427c23f970f7e951525252525252525252525252525202
|
||||
sub2: 3da570db4b001cbeb35a7b7fe588e72aaeadadadadadadadadadadadadadad0d
|
||||
OK
|
||||
|
||||
@@ -18,16 +18,10 @@ main(void)
|
||||
unsigned char curve25519_sk[crypto_scalarmult_curve25519_BYTES];
|
||||
char curve25519_pk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
|
||||
char curve25519_sk_hex[crypto_scalarmult_curve25519_BYTES * 2 + 1];
|
||||
unsigned char hseed[crypto_hash_sha512_BYTES];
|
||||
unsigned int i;
|
||||
|
||||
assert(crypto_sign_ed25519_SEEDBYTES <= crypto_hash_sha512_BYTES);
|
||||
#ifdef ED25519_NONDETERMINISTIC
|
||||
crypto_hash_sha512(hseed, keypair_seed, crypto_sign_ed25519_SEEDBYTES);
|
||||
#else
|
||||
memcpy(hseed, keypair_seed, crypto_sign_ed25519_SEEDBYTES);
|
||||
#endif
|
||||
crypto_sign_ed25519_seed_keypair(ed25519_pk, ed25519_skpk, hseed);
|
||||
crypto_sign_ed25519_seed_keypair(ed25519_pk, ed25519_skpk, keypair_seed);
|
||||
|
||||
if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, ed25519_pk) != 0) {
|
||||
printf("conversion failed\n");
|
||||
|
||||
@@ -1367,13 +1367,13 @@ main(void)
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
assert(crypto_generichash(NULL, 0,
|
||||
assert(crypto_generichash(guard_page, 0,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, sizeof k) == -1);
|
||||
assert(crypto_generichash(NULL, crypto_generichash_BYTES_MAX + 1,
|
||||
assert(crypto_generichash(guard_page, crypto_generichash_BYTES_MAX + 1,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, sizeof k) == -1);
|
||||
assert(crypto_generichash(NULL, (unsigned long long) sizeof in,
|
||||
assert(crypto_generichash(guard_page, (unsigned long long) sizeof in,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, crypto_generichash_KEYBYTES_MAX + 1) == -1);
|
||||
|
||||
|
||||
+28
-22
@@ -6,51 +6,57 @@ int
|
||||
main(void)
|
||||
{
|
||||
#define MAXLEN 64
|
||||
crypto_generichash_state st;
|
||||
unsigned char in[MAXLEN], out[crypto_generichash_BYTES_MAX],
|
||||
k[crypto_generichash_KEYBYTES_MAX];
|
||||
size_t h, i, j;
|
||||
crypto_generichash_state *st;
|
||||
unsigned char in[MAXLEN];
|
||||
unsigned char out[crypto_generichash_BYTES_MAX];
|
||||
unsigned char k[crypto_generichash_KEYBYTES_MAX];
|
||||
size_t h, i, j;
|
||||
|
||||
assert(crypto_generichash_statebytes() >= sizeof st);
|
||||
for (h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h)
|
||||
assert(crypto_generichash_statebytes() >= sizeof *st);
|
||||
st = (crypto_generichash_state *)
|
||||
sodium_malloc(crypto_generichash_statebytes());
|
||||
for (h = 0; h < crypto_generichash_KEYBYTES_MAX; ++h) {
|
||||
k[h] = (unsigned char) h;
|
||||
|
||||
}
|
||||
for (i = 0; i < MAXLEN; ++i) {
|
||||
in[i] = (unsigned char) i;
|
||||
if (crypto_generichash_init(&st, k,
|
||||
if (crypto_generichash_init(st, k,
|
||||
1 + i % crypto_generichash_KEYBYTES_MAX,
|
||||
1 + i % crypto_generichash_BYTES_MAX) != 0) {
|
||||
printf("crypto_generichash_init()\n");
|
||||
return 1;
|
||||
}
|
||||
crypto_generichash_update(&st, in, i);
|
||||
crypto_generichash_update(&st, in, i);
|
||||
crypto_generichash_update(&st, in, i);
|
||||
if (crypto_generichash_final(&st, out,
|
||||
crypto_generichash_update(st, in, i);
|
||||
crypto_generichash_update(st, in, i);
|
||||
crypto_generichash_update(st, in, i);
|
||||
if (crypto_generichash_final(st, out,
|
||||
1 + i % crypto_generichash_BYTES_MAX) != 0) {
|
||||
printf("crypto_generichash_final() should have returned 0\n");
|
||||
}
|
||||
for (j = 0; j < 1 + i % crypto_generichash_BYTES_MAX; ++j) {
|
||||
printf("%02x", (unsigned int)out[j]);
|
||||
printf("%02x", (unsigned int) out[j]);
|
||||
}
|
||||
printf("\n");
|
||||
if (crypto_generichash_final(&st, out,
|
||||
if (crypto_generichash_final(st, out,
|
||||
1 + i % crypto_generichash_BYTES_MAX) != -1) {
|
||||
printf("crypto_generichash_final() should have returned -1\n");
|
||||
}
|
||||
}
|
||||
|
||||
assert(crypto_generichash_init(&st, k, sizeof k, 0U) == -1);
|
||||
assert(crypto_generichash_init(&st, k, sizeof k,
|
||||
assert(crypto_generichash_init(st, k, sizeof k, 0U) == -1);
|
||||
assert(crypto_generichash_init(st, k, sizeof k,
|
||||
crypto_generichash_BYTES_MAX + 1U) == -1);
|
||||
assert(crypto_generichash_init(&st, k, crypto_generichash_KEYBYTES_MAX + 1U,
|
||||
assert(crypto_generichash_init(st, k, crypto_generichash_KEYBYTES_MAX + 1U,
|
||||
sizeof out) == -1);
|
||||
assert(crypto_generichash_init(&st, k, 0U, sizeof out) == 0);
|
||||
assert(crypto_generichash_init(&st, k, 1U, sizeof out) == 0);
|
||||
assert(crypto_generichash_init(&st, NULL, 1U, 0U) == -1);
|
||||
assert(crypto_generichash_init(&st, NULL, crypto_generichash_KEYBYTES,
|
||||
assert(crypto_generichash_init(st, k, 0U, sizeof out) == 0);
|
||||
assert(crypto_generichash_init(st, k, 1U, sizeof out) == 0);
|
||||
assert(crypto_generichash_init(st, NULL, 1U, 0U) == -1);
|
||||
assert(crypto_generichash_init(st, NULL, crypto_generichash_KEYBYTES,
|
||||
1U) == 0);
|
||||
assert(crypto_generichash_init(&st, NULL, crypto_generichash_KEYBYTES,
|
||||
assert(crypto_generichash_init(st, NULL, crypto_generichash_KEYBYTES,
|
||||
0U) == -1);
|
||||
|
||||
sodium_free(st);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -131,15 +131,15 @@ main(void)
|
||||
printf("\n");
|
||||
|
||||
assert(crypto_generichash_blake2b_salt_personal
|
||||
(NULL, 0,
|
||||
(guard_page, 0,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, sizeof k, NULL, NULL) == -1);
|
||||
assert(crypto_generichash_blake2b_salt_personal
|
||||
(NULL, crypto_generichash_BYTES_MAX + 1,
|
||||
(guard_page, crypto_generichash_BYTES_MAX + 1,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, sizeof k, NULL, NULL) == -1);
|
||||
assert(crypto_generichash_blake2b_salt_personal
|
||||
(NULL, (unsigned long long) sizeof in,
|
||||
(guard_page, (unsigned long long) sizeof in,
|
||||
in, (unsigned long long) sizeof in,
|
||||
k, crypto_generichash_KEYBYTES_MAX + 1, NULL, NULL) == -1);
|
||||
|
||||
|
||||
+33
-22
@@ -19,8 +19,8 @@ sigabrt_handler_14(int sig)
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_15);
|
||||
assert(crypto_box_curve25519xchacha20poly1305_easy
|
||||
(NULL, NULL, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
|
||||
NULL, NULL, NULL) == -1);
|
||||
(guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
|
||||
guard_page, guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@ sigabrt_handler_13(int sig)
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_14);
|
||||
assert(crypto_box_curve25519xchacha20poly1305_easy_afternm
|
||||
(NULL, NULL, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
|
||||
NULL, NULL) == -1);
|
||||
(guard_page, guard_page, crypto_stream_xchacha20_MESSAGEBYTES_MAX - 1,
|
||||
guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
# endif
|
||||
@@ -45,7 +45,8 @@ sigabrt_handler_12(int sig)
|
||||
# else
|
||||
signal(SIGABRT, sigabrt_handler_13);
|
||||
# endif
|
||||
assert(crypto_pwhash_str_alg(NULL, "", 0U, 1U, 1U, -1) == -1);
|
||||
assert(crypto_pwhash_str_alg((char *) guard_page,
|
||||
"", 0U, 1U, 1U, -1) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -54,8 +55,9 @@ sigabrt_handler_11(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_12);
|
||||
assert(crypto_box_easy(NULL, NULL, crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
|
||||
NULL, NULL, NULL) == -1);
|
||||
assert(crypto_box_easy(guard_page, guard_page,
|
||||
crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
|
||||
guard_page, guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -64,8 +66,9 @@ sigabrt_handler_10(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_11);
|
||||
assert(crypto_box_easy_afternm(NULL, NULL, crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
|
||||
NULL, NULL) == -1);
|
||||
assert(crypto_box_easy_afternm(guard_page, guard_page,
|
||||
crypto_stream_xsalsa20_MESSAGEBYTES_MAX,
|
||||
guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -74,7 +77,8 @@ sigabrt_handler_9(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_10);
|
||||
assert(sodium_base642bin(NULL, 1, NULL, 1, NULL, NULL, NULL, -1) == -1);
|
||||
assert(sodium_base642bin(guard_page, 1, (const char *) guard_page, 1,
|
||||
NULL, NULL, NULL, -1) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -83,7 +87,8 @@ sigabrt_handler_8(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_9);
|
||||
assert(sodium_bin2base64(NULL, 1, NULL, 1, sodium_base64_VARIANT_ORIGINAL) == NULL);
|
||||
assert(sodium_bin2base64((char *) guard_page, 1, guard_page, 1,
|
||||
sodium_base64_VARIANT_ORIGINAL) == NULL);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -92,7 +97,8 @@ sigabrt_handler_7(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_8);
|
||||
assert(sodium_bin2base64(NULL, 1, NULL, 1, -1) == NULL);
|
||||
assert(sodium_bin2base64((char *) guard_page, 1,
|
||||
guard_page, 1, -1) == NULL);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -101,7 +107,7 @@ sigabrt_handler_6(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_7);
|
||||
assert(sodium_pad(NULL, NULL, SIZE_MAX, 16, 1) == -1);
|
||||
assert(sodium_pad(NULL, guard_page, SIZE_MAX, 16, 1) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -110,8 +116,9 @@ sigabrt_handler_5(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_6);
|
||||
assert(crypto_aead_xchacha20poly1305_ietf_encrypt(NULL, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL, NULL, NULL) == -1);
|
||||
assert(crypto_aead_xchacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL,
|
||||
guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -120,8 +127,9 @@ sigabrt_handler_4(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_5);
|
||||
assert(crypto_aead_chacha20poly1305_ietf_encrypt(NULL, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL, NULL, NULL) == -1);
|
||||
assert(crypto_aead_chacha20poly1305_ietf_encrypt(guard_page, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL,
|
||||
guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -130,8 +138,9 @@ sigabrt_handler_3(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_4);
|
||||
assert(crypto_aead_chacha20poly1305_encrypt(NULL, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL, NULL, NULL) == -1);
|
||||
assert(crypto_aead_chacha20poly1305_encrypt(guard_page, NULL, NULL, UINT64_MAX,
|
||||
NULL, 0, NULL,
|
||||
guard_page, guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -141,7 +150,7 @@ sigabrt_handler_2(int sig)
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_3);
|
||||
#if SIZE_MAX > 0x4000000000ULL
|
||||
randombytes_buf_deterministic(NULL, 0x4000000001ULL, NULL);
|
||||
randombytes_buf_deterministic(guard_page, 0x4000000001ULL, guard_page);
|
||||
#else
|
||||
abort();
|
||||
#endif
|
||||
@@ -153,7 +162,8 @@ sigabrt_handler_1(int sig)
|
||||
{
|
||||
(void) sig;
|
||||
signal(SIGABRT, sigabrt_handler_2);
|
||||
assert(crypto_kx_server_session_keys(NULL, NULL, NULL, NULL, NULL) == -1);
|
||||
assert(crypto_kx_server_session_keys(NULL, NULL, guard_page, guard_page,
|
||||
guard_page) == -1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -161,7 +171,8 @@ int
|
||||
main(void)
|
||||
{
|
||||
signal(SIGABRT, sigabrt_handler_1);
|
||||
assert(crypto_kx_client_session_keys(NULL, NULL, NULL, NULL, NULL) == -1);
|
||||
assert(crypto_kx_client_session_keys(NULL, NULL, guard_page, guard_page,
|
||||
guard_page) == -1);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -480,19 +480,19 @@ main(void)
|
||||
assert(crypto_pwhash_alg_argon2id13() != crypto_pwhash_alg_argon2i13());
|
||||
assert(crypto_pwhash_alg_argon2id13() == crypto_pwhash_alg_default());
|
||||
|
||||
assert(crypto_pwhash_argon2id(NULL, 0, NULL, 0, NULL,
|
||||
assert(crypto_pwhash_argon2id(guard_page, 0, (const char *) guard_page, 0, guard_page,
|
||||
crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
|
||||
0) == -1);
|
||||
assert(crypto_pwhash_argon2id(NULL, 0, NULL, 0, NULL,
|
||||
assert(crypto_pwhash_argon2id(guard_page, 0, (const char *) guard_page, 0, guard_page,
|
||||
crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_ALG_ARGON2I13) == -1);
|
||||
assert(crypto_pwhash_argon2i(NULL, 0, NULL, 0, NULL,
|
||||
assert(crypto_pwhash_argon2i(guard_page, 0, (const char *) guard_page, 0, guard_page,
|
||||
crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
|
||||
0) == -1);
|
||||
assert(crypto_pwhash_argon2i(NULL, 0, NULL, 0, NULL,
|
||||
assert(crypto_pwhash_argon2i(guard_page, 0, (const char *) guard_page, 0, guard_page,
|
||||
crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
|
||||
crypto_pwhash_ALG_ARGON2ID13) == -1);
|
||||
|
||||
@@ -0,0 +1,580 @@
|
||||
|
||||
#define TEST_NAME "scalarmult8"
|
||||
#include "cmptest.h"
|
||||
|
||||
typedef struct TestData_ {
|
||||
const char pk_hex[crypto_scalarmult_BYTES * 2 + 1];
|
||||
const char sk_hex[crypto_scalarmult_SCALARBYTES * 2 + 1];
|
||||
const char shared_hex[crypto_scalarmult_BYTES * 2 + 1];
|
||||
const char *outcome;
|
||||
} TestData;
|
||||
|
||||
static TestData test_data[] = {
|
||||
{
|
||||
"9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
|
||||
"4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba",
|
||||
"87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"4b82bd8650ea9b81a42181840926a4ffa16434d1bf298de1db87efb5b0a9e34e",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733",
|
||||
"588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8",
|
||||
"b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779",
|
||||
"b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8",
|
||||
"67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a",
|
||||
"70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c",
|
||||
"4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c",
|
||||
"68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d",
|
||||
"399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142",
|
||||
"d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2",
|
||||
"2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0100000000000000000000000000000000000000000000000000000000000000",
|
||||
"202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0200000000000000000000000000000000000000000000000000000000000000",
|
||||
"38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84",
|
||||
"9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0300000000000000000000000000000000000000000000000000000000000000",
|
||||
"9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5",
|
||||
"4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000",
|
||||
"48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7",
|
||||
"9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f",
|
||||
"28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0",
|
||||
"cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f",
|
||||
"18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83",
|
||||
"5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0",
|
||||
"19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0400000000000000000000000000000000000000000000000000000000000000",
|
||||
"386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe",
|
||||
"0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000",
|
||||
"e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95",
|
||||
"54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
|
||||
"68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83",
|
||||
"f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f",
|
||||
"58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96",
|
||||
"bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb",
|
||||
"d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f",
|
||||
"e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2",
|
||||
"4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f",
|
||||
"578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
|
||||
"10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
|
||||
"78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0000000000000000000000000000000000000000000000000000000000000080",
|
||||
"480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0100000000000000000000000000000000000000000000000000000000000080",
|
||||
"30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
|
||||
"c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
|
||||
"502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0100000000000000000000000000000000000000000000000000000000000000",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0000000000000000000000000000000000000000000000000000000000000080",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0100000000000000000000000000000000000000000000000000000000000080",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"1064a67da639a8f6df4fbea2d63358b65bca80a770712e14ea8a72df5a3313ae",
|
||||
"0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae",
|
||||
"bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d",
|
||||
"b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8",
|
||||
"6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0",
|
||||
"4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0200000000000000000000000000000000000000000000000000000000000080",
|
||||
"1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8",
|
||||
"1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0300000000000000000000000000000000000000000000000000000000000080",
|
||||
"7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e",
|
||||
"8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"0400000000000000000000000000000000000000000000000000000000000080",
|
||||
"e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f",
|
||||
"54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2",
|
||||
"cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796",
|
||||
"54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5",
|
||||
"ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591",
|
||||
"602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e",
|
||||
"e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491",
|
||||
"98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d",
|
||||
"38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495",
|
||||
"786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5",
|
||||
"29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c",
|
||||
"a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44",
|
||||
"c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413",
|
||||
"4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d",
|
||||
"95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"0200000000000000000000000000000000000000000000000000000000000000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"0900000000000000000000000000000000000000000000000000000000000000",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"1000000000000000000000000000000000000000000000000000000000000000",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"0000000000000000000000000000000000000000000000000000000000000002",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68",
|
||||
"a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63",
|
||||
"0000000000000000000000000000000000000000000000000000000000008000",
|
||||
"acceptable"
|
||||
},
|
||||
{
|
||||
"fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d",
|
||||
"c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e",
|
||||
"c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c",
|
||||
"c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831",
|
||||
"c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19",
|
||||
"c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2",
|
||||
"18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
|
||||
"a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050",
|
||||
"258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75",
|
||||
"valid"
|
||||
},
|
||||
{
|
||||
"2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
|
||||
"58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f",
|
||||
"2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035",
|
||||
"acceptable"
|
||||
}
|
||||
};
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
unsigned char sk[crypto_scalarmult_SCALARBYTES];
|
||||
unsigned char pk[crypto_scalarmult_BYTES];
|
||||
unsigned char shared[crypto_scalarmult_BYTES];
|
||||
unsigned char shared2[crypto_scalarmult_BYTES];
|
||||
unsigned int i;
|
||||
int res;
|
||||
|
||||
for (i = 0U; i < (sizeof test_data) / (sizeof test_data[0]); i++) {
|
||||
sodium_hex2bin(sk, crypto_scalarmult_SCALARBYTES, test_data[i].sk_hex,
|
||||
crypto_scalarmult_SCALARBYTES * 2, NULL, NULL, NULL);
|
||||
sodium_hex2bin(pk, crypto_scalarmult_BYTES, test_data[i].pk_hex,
|
||||
crypto_scalarmult_BYTES * 2, NULL, NULL, NULL);
|
||||
sodium_hex2bin(shared, crypto_scalarmult_BYTES, test_data[i].shared_hex,
|
||||
crypto_scalarmult_BYTES * 2, NULL, NULL, NULL);
|
||||
randombytes_buf(shared2, crypto_scalarmult_BYTES);
|
||||
res = crypto_scalarmult(shared2, sk, pk);
|
||||
if (res == 0) {
|
||||
if (strcmp(test_data[i].outcome, "acceptable") == 0) {
|
||||
printf("test case %u succeeded (%s)\n", i,
|
||||
test_data[i].outcome);
|
||||
} else if (strcmp(test_data[i].outcome, "valid") != 0) {
|
||||
printf("*** test case %u succeeded, was supposed to be %s\n", i,
|
||||
test_data[i].outcome);
|
||||
}
|
||||
if (memcmp(shared, shared2, crypto_scalarmult_BYTES) != 0) {
|
||||
printf("*** test case %u succeeded, but shared key is not %s\n",
|
||||
i, test_data[i].outcome);
|
||||
}
|
||||
} else {
|
||||
if (strcmp(test_data[i].outcome, "acceptable") == 0) {
|
||||
printf("test case %u failed (%s)\n", i, test_data[i].outcome);
|
||||
} else if (strcmp(test_data[i].outcome, "valid") == 0) {
|
||||
printf("*** test case %u failed, was supposed to be %s\n", i,
|
||||
test_data[i].outcome);
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("OK\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
test case 2 succeeded (acceptable)
|
||||
test case 3 succeeded (acceptable)
|
||||
test case 4 succeeded (acceptable)
|
||||
test case 5 succeeded (acceptable)
|
||||
test case 6 succeeded (acceptable)
|
||||
test case 7 failed (acceptable)
|
||||
test case 8 failed (acceptable)
|
||||
test case 9 succeeded (acceptable)
|
||||
test case 10 succeeded (acceptable)
|
||||
test case 11 succeeded (acceptable)
|
||||
test case 12 succeeded (acceptable)
|
||||
test case 13 succeeded (acceptable)
|
||||
test case 14 succeeded (acceptable)
|
||||
test case 22 failed (acceptable)
|
||||
test case 23 failed (acceptable)
|
||||
test case 24 failed (acceptable)
|
||||
test case 25 failed (acceptable)
|
||||
test case 26 failed (acceptable)
|
||||
test case 27 failed (acceptable)
|
||||
test case 28 failed (acceptable)
|
||||
test case 29 failed (acceptable)
|
||||
test case 30 failed (acceptable)
|
||||
test case 31 failed (acceptable)
|
||||
test case 32 failed (acceptable)
|
||||
test case 33 failed (acceptable)
|
||||
test case 34 failed (acceptable)
|
||||
test case 35 failed (acceptable)
|
||||
test case 36 failed (acceptable)
|
||||
test case 37 failed (acceptable)
|
||||
test case 38 failed (acceptable)
|
||||
test case 39 failed (acceptable)
|
||||
test case 40 failed (acceptable)
|
||||
test case 41 failed (acceptable)
|
||||
test case 42 failed (acceptable)
|
||||
test case 43 failed (acceptable)
|
||||
test case 44 failed (acceptable)
|
||||
test case 45 failed (acceptable)
|
||||
test case 46 failed (acceptable)
|
||||
test case 47 failed (acceptable)
|
||||
test case 48 succeeded (acceptable)
|
||||
test case 49 succeeded (acceptable)
|
||||
test case 50 succeeded (acceptable)
|
||||
test case 51 succeeded (acceptable)
|
||||
test case 52 succeeded (acceptable)
|
||||
test case 53 succeeded (acceptable)
|
||||
test case 54 succeeded (acceptable)
|
||||
test case 55 succeeded (acceptable)
|
||||
test case 56 succeeded (acceptable)
|
||||
test case 57 succeeded (acceptable)
|
||||
test case 58 succeeded (acceptable)
|
||||
test case 59 succeeded (acceptable)
|
||||
test case 60 succeeded (acceptable)
|
||||
test case 61 succeeded (acceptable)
|
||||
test case 62 succeeded (acceptable)
|
||||
test case 63 succeeded (acceptable)
|
||||
test case 66 succeeded (acceptable)
|
||||
test case 69 succeeded (acceptable)
|
||||
test case 71 succeeded (acceptable)
|
||||
test case 74 succeeded (acceptable)
|
||||
test case 75 succeeded (acceptable)
|
||||
test case 77 succeeded (acceptable)
|
||||
test case 78 succeeded (acceptable)
|
||||
test case 79 succeeded (acceptable)
|
||||
test case 86 succeeded (acceptable)
|
||||
OK
|
||||
@@ -43,18 +43,24 @@ main(void)
|
||||
|
||||
memset(n, 0, crypto_scalarmult_ed25519_SCALARBYTES);
|
||||
if (crypto_scalarmult_ed25519_base(q, n) != -1) {
|
||||
printf("crypto_scalarmult_ed25519_base(0) failed\n");
|
||||
printf("crypto_scalarmult_ed25519_base(0) passed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519(q2, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519(0) passed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp(0) passed\n");
|
||||
}
|
||||
|
||||
n[0] = 1;
|
||||
if (crypto_scalarmult_ed25519_base(q, n) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_base() failed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519(q2, n, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519() passed\n");
|
||||
printf("crypto_scalarmult_ed25519() failed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed\n");
|
||||
}
|
||||
|
||||
if (crypto_scalarmult_ed25519(q, n, non_canonical_p) != -1) {
|
||||
@@ -67,14 +73,40 @@ main(void)
|
||||
printf("crypto_scalarmult_ed25519() failed\n");
|
||||
}
|
||||
|
||||
n[0] = 9;
|
||||
if (crypto_scalarmult_ed25519(q, n, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519() failed\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed\n");
|
||||
}
|
||||
if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) == 0) {
|
||||
printf("clamping not applied\n");
|
||||
}
|
||||
n[0] = 8;
|
||||
n[31] = 64;
|
||||
if (crypto_scalarmult_ed25519_noclamp(q2, n, p) != 0) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() failed\n");
|
||||
}
|
||||
if (memcmp(q, q2, crypto_scalarmult_ed25519_BYTES) != 0) {
|
||||
printf("inconsistent clamping\n");
|
||||
}
|
||||
|
||||
memset(p, 0, crypto_scalarmult_ed25519_BYTES);
|
||||
if (crypto_scalarmult_ed25519(q, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519() didn't fail\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(q, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() didn't fail\n");
|
||||
}
|
||||
|
||||
n[0] = 8;
|
||||
if (crypto_scalarmult_ed25519(q, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519() didn't fail\n");
|
||||
}
|
||||
if (crypto_scalarmult_ed25519_noclamp(q, n, p) != -1) {
|
||||
printf("crypto_scalarmult_ed25519_noclamp() didn't fail\n");
|
||||
}
|
||||
|
||||
sodium_free(q2);
|
||||
sodium_free(q);
|
||||
|
||||
+1
-8
@@ -1053,15 +1053,8 @@ static void add_l(unsigned char * const S)
|
||||
0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10 };
|
||||
unsigned char c = 0U;
|
||||
unsigned int i;
|
||||
unsigned int s;
|
||||
|
||||
for (i = 0U; i < 32U; i++) {
|
||||
s = S[i] + l[i] + c;
|
||||
S[i] = (unsigned char) s;
|
||||
c = (s >> 8) & 1;
|
||||
}
|
||||
sodium_add(S, l, sizeof l);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
|
||||
@@ -60,8 +60,7 @@ main(void)
|
||||
buf2_rev[bin_len - 1 - j] = buf2[j];
|
||||
}
|
||||
if (memcmp(buf1_rev, buf2_rev, bin_len) *
|
||||
sodium_compare(buf1, buf2, bin_len) <
|
||||
0) {
|
||||
sodium_compare(buf1, buf2, bin_len) < 0) {
|
||||
printf("sodium_compare() failure with length=%u\n",
|
||||
(unsigned int) bin_len);
|
||||
}
|
||||
@@ -106,7 +105,21 @@ main(void)
|
||||
if (sodium_compare(buf1, buf2, bin_len) != 0) {
|
||||
printf("sodium_add() failed\n");
|
||||
}
|
||||
|
||||
for (i = 0U; i < 1000U; i++) {
|
||||
randombytes_buf(buf1, bin_len);
|
||||
randombytes_buf(buf2, bin_len);
|
||||
sodium_add(buf1, buf2, bin_len);
|
||||
sodium_sub(buf1, buf2, bin_len);
|
||||
sodium_sub(buf1, buf2, 0U);
|
||||
if (sodium_is_zero(buf1, bin_len) &&
|
||||
!sodium_is_zero(buf1, bin_len)) {
|
||||
printf("sodium_sub() failed\n");
|
||||
}
|
||||
sodium_sub(buf1, buf1, bin_len);
|
||||
if (!sodium_is_zero(buf1, bin_len)) {
|
||||
printf("sodium_sub() failed\n");
|
||||
}
|
||||
}
|
||||
assert(sizeof nonce >= 24U);
|
||||
memset(nonce, 0xfe, 24U);
|
||||
memset(nonce, 0xff, 6U);
|
||||
@@ -142,6 +155,18 @@ main(void)
|
||||
printf("%s\n",
|
||||
sodium_bin2hex(nonce_hex, sizeof nonce_hex, nonce, sizeof nonce));
|
||||
|
||||
randombytes_buf(buf1, 64U);
|
||||
randombytes_buf(buf2, 64U);
|
||||
memset(buf_add, 0, 64U);
|
||||
sodium_add(buf_add, buf1, 64U);
|
||||
assert(!sodium_is_zero(buf_add, 64U));
|
||||
sodium_add(buf_add, buf2, 64U);
|
||||
assert(!sodium_is_zero(buf_add, 64U));
|
||||
sodium_sub(buf_add, buf1, 64U);
|
||||
assert(!sodium_is_zero(buf_add, 64U));
|
||||
sodium_sub(buf_add, buf2, 64U);
|
||||
assert(sodium_is_zero(buf_add, 64U));
|
||||
|
||||
for (i = 0; i < 2000U; i++) {
|
||||
bin_len = randombytes_uniform(200U);
|
||||
blocksize = 1U + randombytes_uniform(500U);
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
# warning The sodium_utils2 test is expected to fail with address sanitizer
|
||||
#endif
|
||||
|
||||
#undef sodium_malloc
|
||||
#undef sodium_free
|
||||
#undef sodium_allocarray
|
||||
|
||||
__attribute__((noreturn)) static void
|
||||
segv_handler(int sig)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user