From e5e2150919382956961bbd5334494f1a371dee91 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Wed, 13 Feb 2013 20:33:17 +0800 Subject: [PATCH] Revert "Add crypto_shorthash() for non collision-resistant hash functions" This reverts commit c8fe5c4afb9890fea1534ab92935080a1ff58e66. Conflicts: .gitignore test/Makefile.am test/default/shorthash.c test/default/shorthash.exp --- .gitignore | 1 - src/libsodium/Makefile.am | 2 - .../crypto_shorthash/siphash24/ref/api.h | 2 - .../siphash24/ref/crypto_shorthash.h | 12 -- .../siphash24/ref/shorthash_siphash24.c | 91 --------- src/libsodium/include/Makefile.am | 2 - .../include/sodium/crypto_shorthash.h | 12 -- .../sodium/crypto_shorthash_siphash24.h | 22 --- test/Makefile.am | 177 ++++++++++++++++++ test/default/shorthash.c | 17 -- test/default/shorthash.exp | 1 - 11 files changed, 177 insertions(+), 162 deletions(-) delete mode 100644 src/libsodium/crypto_shorthash/siphash24/ref/api.h delete mode 100644 src/libsodium/crypto_shorthash/siphash24/ref/crypto_shorthash.h delete mode 100644 src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c delete mode 100644 src/libsodium/include/sodium/crypto_shorthash.h delete mode 100644 src/libsodium/include/sodium/crypto_shorthash_siphash24.h delete mode 100644 test/default/shorthash.c delete mode 100644 test/default/shorthash.exp diff --git a/.gitignore b/.gitignore index 3d52af52..9d39d81c 100644 --- a/.gitignore +++ b/.gitignore @@ -71,7 +71,6 @@ test/default/secretbox test/default/secretbox2 test/default/secretbox7 test/default/secretbox8 -test/default/shorthash test/default/stream test/default/stream2 test/default/stream3 diff --git a/src/libsodium/Makefile.am b/src/libsodium/Makefile.am index 2a87f149..2ced073e 100644 --- a/src/libsodium/Makefile.am +++ b/src/libsodium/Makefile.am @@ -22,8 +22,6 @@ libsodium_la_SOURCES = \ crypto_hash/sha256/ref/hash_sha256.c \ crypto_hash/sha512/ref/crypto_hash.h \ crypto_hash/sha512/ref/hash_sha512.c \ - crypto_shorthash/siphash24/ref/crypto_shorthash.h \ - crypto_shorthash/siphash24/ref/shorthash_siphash24.c \ crypto_verify/16/ref/crypto_verify.h \ crypto_verify/16/ref/verify_16.c \ crypto_verify/32/ref/crypto_verify.h \ diff --git a/src/libsodium/crypto_shorthash/siphash24/ref/api.h b/src/libsodium/crypto_shorthash/siphash24/ref/api.h deleted file mode 100644 index b7c80611..00000000 --- a/src/libsodium/crypto_shorthash/siphash24/ref/api.h +++ /dev/null @@ -1,2 +0,0 @@ -#define CRYPTO_BYTES 8 -#define CRYPTO_KEYBYTES 16 diff --git a/src/libsodium/crypto_shorthash/siphash24/ref/crypto_shorthash.h b/src/libsodium/crypto_shorthash/siphash24/ref/crypto_shorthash.h deleted file mode 100644 index 5604c4de..00000000 --- a/src/libsodium/crypto_shorthash/siphash24/ref/crypto_shorthash.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef crypto_shorthash_H -#define crypto_shorthash_H - -#include "crypto_shorthash_siphash24.h" - -#define crypto_shorthash crypto_shorthash_siphash24 -#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES -#define crypto_shorthash_PRIMITIVE "siphash24" -#define crypto_shorthash_IMPLEMENTATION crypto_shorthash_siphash24_IMPLEMENTATION -#define crypto_shorthash_VERSION crypto_shorthash_siphash24_VERSION - -#endif diff --git a/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c b/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c deleted file mode 100644 index 88be22b6..00000000 --- a/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c +++ /dev/null @@ -1,91 +0,0 @@ -#include "crypto_shorthash.h" -#include "crypto_uint64.h" -#include "crypto_uint32.h" -#include "crypto_uint8.h" - -typedef crypto_uint64 u64; -typedef crypto_uint32 u32; -typedef crypto_uint8 u8; - -#define ROTL(x,b) (u64)( ((x) << (b)) | ( (x) >> (64 - (b))) ) - -#define U32TO8_LE(p, v) \ - (p)[0] = (u8)((v) ); (p)[1] = (u8)((v) >> 8); \ - (p)[2] = (u8)((v) >> 16); (p)[3] = (u8)((v) >> 24); - -#define U64TO8_LE(p, v) \ - U32TO8_LE((p), (u32)((v) )); \ - U32TO8_LE((p) + 4, (u32)((v) >> 32)); - -#define U8TO64_LE(p) \ - (((u64)((p)[0]) ) | \ - ((u64)((p)[1]) << 8) | \ - ((u64)((p)[2]) << 16) | \ - ((u64)((p)[3]) << 24) | \ - ((u64)((p)[4]) << 32) | \ - ((u64)((p)[5]) << 40) | \ - ((u64)((p)[6]) << 48) | \ - ((u64)((p)[7]) << 56)) - -#define SIPROUND \ - do { \ - v0 += v1; v1=ROTL(v1,13); v1 ^= v0; v0=ROTL(v0,32); \ - v2 += v3; v3=ROTL(v3,16); v3 ^= v2; \ - v0 += v3; v3=ROTL(v3,21); v3 ^= v0; \ - v2 += v1; v1=ROTL(v1,17); v1 ^= v2; v2=ROTL(v2,32); \ - } while(0) - -int crypto_shorthash(unsigned char *out,const unsigned char *in,unsigned long long inlen) -{ - /* "somepseudorandomlygeneratedbytes" */ - u64 v0 = 0x736f6d6570736575ULL; - u64 v1 = 0x646f72616e646f6dULL; - u64 v2 = 0x6c7967656e657261ULL; - u64 v3 = 0x7465646279746573ULL; - u64 b; - u64 k0 = U8TO64_LE( out ); - u64 k1 = U8TO64_LE( out + 8 ); - u64 m; - const u8 *end = in + inlen - ( inlen % sizeof( u64 ) ); - const int left = inlen & 7; - b = ( ( u64 )inlen ) << 56; - v3 ^= k1; - v2 ^= k0; - v1 ^= k1; - v0 ^= k0; - - for ( ; in != end; in += 8 ) - { - m = U8TO64_LE( in ); - v3 ^= m; - SIPROUND; - SIPROUND; - v0 ^= m; - } - - switch( left ) - { - case 7: b |= ( ( u64 )in[ 6] ) << 48; - case 6: b |= ( ( u64 )in[ 5] ) << 40; - case 5: b |= ( ( u64 )in[ 4] ) << 32; - case 4: b |= ( ( u64 )in[ 3] ) << 24; - case 3: b |= ( ( u64 )in[ 2] ) << 16; - case 2: b |= ( ( u64 )in[ 1] ) << 8; - case 1: b |= ( ( u64 )in[ 0] ); break; - case 0: break; - } - - v3 ^= b; - SIPROUND; - SIPROUND; - v0 ^= b; - v2 ^= 0xff; - SIPROUND; - SIPROUND; - SIPROUND; - SIPROUND; - b = v0 ^ v1 ^ v2 ^ v3; - U64TO8_LE( out, b ); - return 0; -} - diff --git a/src/libsodium/include/Makefile.am b/src/libsodium/include/Makefile.am index d1b0b2e3..12a92d35 100644 --- a/src/libsodium/include/Makefile.am +++ b/src/libsodium/include/Makefile.am @@ -20,8 +20,6 @@ SODIUM_EXPORT = \ sodium/crypto_scalarmult_curve25519.h \ sodium/crypto_secretbox.h \ sodium/crypto_secretbox_xsalsa20poly1305.h \ - sodium/crypto_shorthash.h \ - sodium/crypto_shorthash_siphash24.h \ sodium/crypto_sign.h \ sodium/crypto_sign_ed25519.h \ sodium/crypto_sign_edwards25519sha512batch.h \ diff --git a/src/libsodium/include/sodium/crypto_shorthash.h b/src/libsodium/include/sodium/crypto_shorthash.h deleted file mode 100644 index 5604c4de..00000000 --- a/src/libsodium/include/sodium/crypto_shorthash.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef crypto_shorthash_H -#define crypto_shorthash_H - -#include "crypto_shorthash_siphash24.h" - -#define crypto_shorthash crypto_shorthash_siphash24 -#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES -#define crypto_shorthash_PRIMITIVE "siphash24" -#define crypto_shorthash_IMPLEMENTATION crypto_shorthash_siphash24_IMPLEMENTATION -#define crypto_shorthash_VERSION crypto_shorthash_siphash24_VERSION - -#endif diff --git a/src/libsodium/include/sodium/crypto_shorthash_siphash24.h b/src/libsodium/include/sodium/crypto_shorthash_siphash24.h deleted file mode 100644 index e3ad6166..00000000 --- a/src/libsodium/include/sodium/crypto_shorthash_siphash24.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef crypto_shorthash_siphash24_H -#define crypto_shorthash_siphash24_H - -#define crypto_shorthash_siphash24_ref_BYTES 8 -#ifdef __cplusplus -#include -extern "C" { -#endif -extern int crypto_shorthash_siphash24_ref(unsigned char *,const unsigned char *,unsigned long long); -#ifdef __cplusplus -} -#endif - -#define crypto_shorthash_siphash24 crypto_shorthash_siphash24_ref -#define crypto_shorthash_siphash24_BYTES crypto_shorthash_siphash24_ref_BYTES -#define crypto_shorthash_siphash24_IMPLEMENTATION -#ifndef crypto_shorthash_siphash24_ref_VERSION -#define crypto_shorthash_siphash24_ref_VERSION "-" -#endif -#define crypto_shorthash_siphash24_VERSION crypto_shorthash_siphash24_ref_VERSION - -#endif diff --git a/test/Makefile.am b/test/Makefile.am index 346d2692..2a78006a 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -3,3 +3,180 @@ SUBDIRS = \ EXTRA_DIST = \ quirks/windows/windows-quirks.h + cmptest.h \ + auth.exp \ + auth2.exp \ + auth3.exp \ + auth5.exp \ + box.exp \ + box2.exp \ + box7.exp \ + box8.exp \ + core1.exp \ + core2.exp \ + core3.exp \ + core4.exp \ + core5.exp \ + core6.exp \ + hash.exp \ + hash2.exp \ + hash3.exp \ + onetimeauth.exp \ + onetimeauth2.exp \ + onetimeauth7.exp \ + scalarmult.exp \ + scalarmult2.exp \ + scalarmult5.exp \ + scalarmult6.exp \ + secretbox.exp \ + secretbox2.exp \ + secretbox7.exp \ + secretbox8.exp \ + stream.exp \ + stream2.exp \ + stream3.exp \ + stream4.exp + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src/libsodium/include \ + -I$(top_srcdir)/src/libsodium/include/sodium + +TESTS_TARGETS = \ + auth \ + auth2 \ + auth3 \ + auth5 \ + box \ + box2 \ + box7 \ + box8 \ + core1 \ + core2 \ + core3 \ + core4 \ + core5 \ + core6 \ + hash \ + hash3 \ + onetimeauth \ + onetimeauth2 \ + onetimeauth7 \ + randombytes \ + scalarmult \ + scalarmult2 \ + scalarmult5 \ + scalarmult6 \ + secretbox \ + secretbox2 \ + secretbox7 \ + secretbox8 \ + stream \ + stream2 \ + stream3 \ + stream4 + +check_PROGRAMS = $(TESTS_TARGETS) + +TESTS = $(TESTS_TARGETS) + +TESTS_LDADD = \ + ${top_builddir}/src/libsodium/libsodium.la + +auth_SOURCE = cmptest.h auth.c +auth_LDADD = $(TESTS_LDADD) + +auth2_SOURCE = cmptest.h auth2.c +auth2_LDADD = $(TESTS_LDADD) + +auth3_SOURCE = cmptest.h auth3.c +auth3_LDADD = $(TESTS_LDADD) + +auth5_SOURCE = cmptest.h auth5.c windows/windows-quirks.h +auth5_LDADD = $(TESTS_LDADD) + +box_SOURCE = cmptest.h box.c +box_LDADD = $(TESTS_LDADD) + +box2_SOURCE = cmptest.h box2.c +box2_LDADD = $(TESTS_LDADD) + +box7_SOURCE = cmptest.h box7.c +box7_LDADD = $(TESTS_LDADD) + +box8_SOURCE = cmptest.h box8.c +box8_LDADD = $(TESTS_LDADD) + +core1_SOURCE = cmptest.h core1.c +core1_LDADD = $(TESTS_LDADD) + +core2_SOURCE = cmptest.h core2.c +core2_LDADD = $(TESTS_LDADD) + +core3_SOURCE = cmptest.h core3.c +core3_LDADD = $(TESTS_LDADD) + +core4_SOURCE = cmptest.h core4.c +core4_LDADD = $(TESTS_LDADD) + +core5_SOURCE = cmptest.h core5.c +core5_LDADD = $(TESTS_LDADD) + +core6_SOURCE = cmptest.h core6.c +core6_LDADD = $(TESTS_LDADD) + +hash_SOURCE = cmptest.h hash.c +hash_LDADD = $(TESTS_LDADD) + +hash3_SOURCE = cmptest.h hash3.c +hash3_LDADD = $(TESTS_LDADD) + +onetimeauth_SOURCE = cmptest.h onetimeauth.c +onetimeauth_LDADD = $(TESTS_LDADD) + +onetimeauth2_SOURCE = cmptest.h onetimeauth2.c +onetimeauth2_LDADD = $(TESTS_LDADD) + +onetimeauth7_SOURCE = cmptest.h onetimeauth7.c +onetimeauth7_LDADD = $(TESTS_LDADD) + +randombytes_SOURCE = randombytes.c +randombytes_LDADD = $(TESTS_LDADD) + +scalarmult_SOURCE = cmptest.h scalarmult.c +scalarmult_LDADD = $(TESTS_LDADD) + +scalarmult2_SOURCE = cmptest.h scalarmult2.c +scalarmult2_LDADD = $(TESTS_LDADD) + +scalarmult5_SOURCE = cmptest.h scalarmult5.c +scalarmult5_LDADD = $(TESTS_LDADD) + +scalarmult6_SOURCE = cmptest.h scalarmult6.c +scalarmult6_LDADD = $(TESTS_LDADD) + +secretbox_SOURCE = cmptest.h secretbox.c +secretbox_LDADD = $(TESTS_LDADD) + +secretbox2_SOURCE = cmptest.h secretbox2.c +secretbox2_LDADD = $(TESTS_LDADD) + +secretbox7_SOURCE = cmptest.h secretbox7.c +secretbox7_LDADD = $(TESTS_LDADD) + +secretbox8_SOURCE = cmptest.h secretbox8.c +secretbox8_LDADD = $(TESTS_LDADD) + +stream_SOURCE = cmptest.h stream.c +stream_LDADD = $(TESTS_LDADD) + +stream2_SOURCE = cmptest.h stream2.c +stream2_LDADD = $(TESTS_LDADD) + +stream3_SOURCE = cmptest.h stream3.c +stream3_LDADD = $(TESTS_LDADD) + +stream4_SOURCE = cmptest.h stream4.c +stream4_LDADD = $(TESTS_LDADD) + +verify: check + diff --git a/test/default/shorthash.c b/test/default/shorthash.c deleted file mode 100644 index 37314e26..00000000 --- a/test/default/shorthash.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include "crypto_shorthash.h" - -#define TEST_NAME "shorthash" -#include "cmptest.h" - -unsigned char x[8] = "testing\n"; -unsigned char h[crypto_shorthash_BYTES]; - -int main(void) -{ - int i; - crypto_shorthash(h,x,sizeof x); - for (i = 0;i < crypto_shorthash_BYTES;++i) printf("%02x",(unsigned int) h[i]); - printf("\n"); - return 0; -} diff --git a/test/default/shorthash.exp b/test/default/shorthash.exp deleted file mode 100644 index 78e06089..00000000 --- a/test/default/shorthash.exp +++ /dev/null @@ -1 +0,0 @@ -4656ce5d9cdde68d