Revert "Add crypto_shorthash() for non collision-resistant hash functions"
This reverts commit c8fe5c4afb
.
Conflicts:
.gitignore
test/Makefile.am
test/default/shorthash.c
test/default/shorthash.exp
This commit is contained in:
parent
5c946f9c61
commit
e5e2150919
1
.gitignore
vendored
1
.gitignore
vendored
@ -71,7 +71,6 @@ test/default/secretbox
|
|||||||
test/default/secretbox2
|
test/default/secretbox2
|
||||||
test/default/secretbox7
|
test/default/secretbox7
|
||||||
test/default/secretbox8
|
test/default/secretbox8
|
||||||
test/default/shorthash
|
|
||||||
test/default/stream
|
test/default/stream
|
||||||
test/default/stream2
|
test/default/stream2
|
||||||
test/default/stream3
|
test/default/stream3
|
||||||
|
@ -22,8 +22,6 @@ libsodium_la_SOURCES = \
|
|||||||
crypto_hash/sha256/ref/hash_sha256.c \
|
crypto_hash/sha256/ref/hash_sha256.c \
|
||||||
crypto_hash/sha512/ref/crypto_hash.h \
|
crypto_hash/sha512/ref/crypto_hash.h \
|
||||||
crypto_hash/sha512/ref/hash_sha512.c \
|
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/crypto_verify.h \
|
||||||
crypto_verify/16/ref/verify_16.c \
|
crypto_verify/16/ref/verify_16.c \
|
||||||
crypto_verify/32/ref/crypto_verify.h \
|
crypto_verify/32/ref/crypto_verify.h \
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
#define CRYPTO_BYTES 8
|
|
||||||
#define CRYPTO_KEYBYTES 16
|
|
@ -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
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
@ -20,8 +20,6 @@ SODIUM_EXPORT = \
|
|||||||
sodium/crypto_scalarmult_curve25519.h \
|
sodium/crypto_scalarmult_curve25519.h \
|
||||||
sodium/crypto_secretbox.h \
|
sodium/crypto_secretbox.h \
|
||||||
sodium/crypto_secretbox_xsalsa20poly1305.h \
|
sodium/crypto_secretbox_xsalsa20poly1305.h \
|
||||||
sodium/crypto_shorthash.h \
|
|
||||||
sodium/crypto_shorthash_siphash24.h \
|
|
||||||
sodium/crypto_sign.h \
|
sodium/crypto_sign.h \
|
||||||
sodium/crypto_sign_ed25519.h \
|
sodium/crypto_sign_ed25519.h \
|
||||||
sodium/crypto_sign_edwards25519sha512batch.h \
|
sodium/crypto_sign_edwards25519sha512batch.h \
|
||||||
|
@ -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
|
|
@ -1,22 +0,0 @@
|
|||||||
#ifndef crypto_shorthash_siphash24_H
|
|
||||||
#define crypto_shorthash_siphash24_H
|
|
||||||
|
|
||||||
#define crypto_shorthash_siphash24_ref_BYTES 8
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#include <string>
|
|
||||||
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
|
|
177
test/Makefile.am
177
test/Makefile.am
@ -3,3 +3,180 @@ SUBDIRS = \
|
|||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
quirks/windows/windows-quirks.h
|
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
|
||||||
|
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#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;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
4656ce5d9cdde68d
|
|
Loading…
Reference in New Issue
Block a user