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:
Frank Denis
2019-01-06 15:43:38 +01:00
167 changed files with 5051 additions and 1103 deletions
+24
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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",
+276
View File
@@ -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;
}
+1
View File
@@ -0,0 +1 @@
OK
+2 -2
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
OK
+1 -1
View File
@@ -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
View File
@@ -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);
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+16
View File
@@ -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
+1 -7
View File
@@ -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");
+3 -3
View File
@@ -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
View File
@@ -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;
}
+3 -3
View File
@@ -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
View File
@@ -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
+4 -4
View File
@@ -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);
+580
View File
@@ -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;
}
+65
View File
@@ -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
+34 -2
View File
@@ -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
View File
@@ -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)
+28 -3
View File
@@ -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);
+4
View File
@@ -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)
{