(Arne Babenhauserheide)
2013-12-26: added testcase for tinyenc. added testcase for tinyenc.
diff --git a/examples/Makefile b/examples/Makefile new file mode 100644 --- /dev/null +++ b/examples/Makefile @@ -0,0 +1,2 @@ +tinyenc : tinyenc.c + gcc -Wall tinyenc.c -o tinyenc diff --git a/examples/tinyenc.c b/examples/tinyenc.c new file mode 100644 --- /dev/null +++ b/examples/tinyenc.c @@ -0,0 +1,33 @@ +#include <stdint.h> + +void encrypt (uint32_t* v, uint32_t* k) { + uint32_t v0=v[0], v1=v[1], sum=0, i; /* set up */ + uint32_t delta=0x9e3779b9; /* a key schedule constant */ + uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */ + for (i=0; i < 32; i++) { /* basic cycle start */ + sum += delta; + v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); + v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); + } /* end cycle */ + v[0]=v0; v[1]=v1; +} + +void decrypt (uint32_t* v, uint32_t* k) { + uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */ + uint32_t delta=0x9e3779b9; /* a key schedule constant */ + uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */ + for (i=0; i<32; i++) { /* basic cycle start */ + v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); + v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); + sum -= delta; + } /* end cycle */ + v[0]=v0; v[1]=v1; +} + +int main () +{ + uint32_t v[] = {0, 5}; + uint32_t k[] = {0, 0, 0, 9}; + encrypt(v, k); + return 0; +}