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/secretbox7
|
||||
test/default/secretbox8
|
||||
test/default/shorthash
|
||||
test/default/stream
|
||||
test/default/stream2
|
||||
test/default/stream3
|
||||
|
@ -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 \
|
||||
|
@ -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_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 \
|
||||
|
@ -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 = \
|
||||
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