add aes_xts, which was in the mkfile Reference: /n/atom/patch/applied/aesxts Date: Thu Nov 5 05:35:59 CET 2015 Signed-off-by: quanstro@quanstro.net --- /sys/src/libsec/port/aes_xts.c Thu Jan 1 00:00:00 1970 +++ /sys/src/libsec/port/aes_xts.c Thu Nov 5 05:35:49 2015 @@ -0,0 +1,72 @@ +/* + * Author Taru Karttunen + * This file can be used as both Public Domain or Creative Commons CC0. + */ +#include +#include + +static void +xor128(uchar *uo, uchar *ui0, uchar *ui1) +{ + u64int *o, *i0, *i1; + + o = (u64int*)uo; + i0 = (u64int*)ui0; + i1 = (u64int*)ui1; + + o[0] = i0[0] ^ i1[0]; + o[1] = i0[1] ^ i1[1]; +} + +static void +gf_mulx(u64int *x) +{ + u64int t; + + t = (x[1]>>63)*0x87; + x[1] = x[1]<<1 | x[0]>>63; + x[0] = (x[0] << 1) ^ t; +} + +int +aes_xts_encrypt(u32int tweak[], u32int ecb[], vlong secno, uchar *input, uchar *output, usize len) +{ + uchar T[AESbsize], x[AESbsize]; + int i; + + if(len % AESbsize != 0) + return -1; + for(i=0; i> i*8; + aes_encrypt((ulong*)tweak, 10, T, T); + + for (i=0; i> i*8; + aes_encrypt((ulong*)tweak, 10, T, T); + + for (i=0; i