From 7cf11db685832db42b6cbb33f9eca99db6ff4fcf Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 19 Jan 2016 12:50:33 +0100 Subject: libsec: add salsa20 stream cipher --- sys/include/libsec.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'sys/include/libsec.h') diff --git a/sys/include/libsec.h b/sys/include/libsec.h index 86cb342e5..204ca4d26 100644 --- a/sys/include/libsec.h +++ b/sys/include/libsec.h @@ -106,6 +106,34 @@ void chacha_encrypt2(uchar*, uchar*, ulong, Chachastate*); void ccpoly_encrypt(uchar *dat, ulong ndat, uchar *aad, ulong naad, uchar tag[16], Chachastate *cs); int ccpoly_decrypt(uchar *dat, ulong ndat, uchar *aad, ulong naad, uchar tag[16], Chachastate *cs); +/* + * Salsa definitions + */ +enum +{ + SalsaBsize= 64, + SalsaKeylen= 256/8, + SalsaIVlen= 64/8, + XSalsaIVlen= 192/8, +}; + +typedef struct Salsastate Salsastate; +struct Salsastate +{ + u32int input[16]; + u32int key[8]; + int rounds; + int ivwords; +}; + +void setupSalsastate(Salsastate*, uchar*, ulong, uchar*, ulong, int); +void salsa_setiv(Salsastate*, uchar*); +void salsa_setblock(Salsastate*, u64int); +void salsa_encrypt(uchar*, ulong, Salsastate*); +void salsa_encrypt2(uchar*, uchar*, ulong, Salsastate*); + +void hsalsa(uchar h[32], uchar *key, ulong keylen, uchar nonce[16], int rounds); + /* * DES definitions */ -- cgit v1.2.3