summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-10-17 21:36:45 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2017-10-17 21:36:45 +0200
commit29411f58cfa62a7d05713070338d82b722364665 (patch)
treeeb78cd44c5c377165d36a5d79b35f85f59ccc819 /sys/src
parent45b7d60bf385aa9ac0bab7bb8c694f8221893024 (diff)
libsec: make sectorNumber argument for aes_xts routines uvlong
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/libsec/port/aes_xts.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/sys/src/libsec/port/aes_xts.c b/sys/src/libsec/port/aes_xts.c
index 2e03a1470..1ae8d107a 100644
--- a/sys/src/libsec/port/aes_xts.c
+++ b/sys/src/libsec/port/aes_xts.c
@@ -3,16 +3,16 @@
#include "os.h"
#include <libsec.h>
-#define AesBlockSize 16
-
-static void xor128(uchar* o,uchar* i1,uchar* i2) {
+static void
+xor128(uchar *o, uchar *i1, uchar *i2) {
((ulong*)o)[0] = ((ulong*)i1)[0] ^ ((ulong*)i2)[0];
((ulong*)o)[1] = ((ulong*)i1)[1] ^ ((ulong*)i2)[1];
((ulong*)o)[2] = ((ulong*)i1)[2] ^ ((ulong*)i2)[2];
((ulong*)o)[3] = ((ulong*)i1)[3] ^ ((ulong*)i2)[3];
}
-static void gf_mulx(uchar* x) {
+static void
+gf_mulx(uchar *x) {
ulong t = ((((ulong*)(x))[3] & 0x80000000u) ? 0x00000087u : 0);;
((ulong*)(x))[3] = (((ulong*)(x))[3] << 1) | (((ulong*)(x))[2] & 0x80000000u ? 1 : 0);
((ulong*)(x))[2] = (((ulong*)(x))[2] << 1) | (((ulong*)(x))[1] & 0x80000000u ? 1 : 0);
@@ -21,21 +21,22 @@ static void gf_mulx(uchar* x) {
}
-int aes_xts_encrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len) {
+int
+aes_xts_encrypt(ulong tweak[], ulong ecb[], uvlong sectorNumber, uchar *input, uchar *output, ulong len) {
uchar T[16], x[16];
int i;
if(len % 16 != 0)
return -1;
- for(i=0; i<AesBlockSize; i++) {
+ for(i=0; i<AESbsize; i++) {
T[i] = (uchar)(sectorNumber & 0xFF);
sectorNumber = sectorNumber >> 8;
}
aes_encrypt(tweak, 10, T, T);
- for (i=0; i<len; i+=AesBlockSize) {
+ for (i=0; i<len; i+=AESbsize) {
xor128(&x[0], &input[i], &T[0]);
aes_encrypt(ecb, 10, x, x);
xor128(&output[i], &x[0], &T[0]);
@@ -44,21 +45,22 @@ int aes_xts_encrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *inpu
return 0;
}
-int aes_xts_decrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input, uchar *output, ulong len) {
+int
+aes_xts_decrypt(ulong tweak[], ulong ecb[], uvlong sectorNumber, uchar *input, uchar *output, ulong len) {
uchar T[16], x[16];
int i;
if(len % 16 != 0)
return -1;
- for(i=0; i<AesBlockSize; i++) {
+ for(i=0; i<AESbsize; i++) {
T[i] = (uchar)(sectorNumber & 0xFF);
sectorNumber = sectorNumber >> 8;
}
aes_encrypt(tweak, 10, T, T);
- for (i=0; i<len; i+=AesBlockSize) {
+ for (i=0; i<len; i+=AESbsize) {
xor128(&x[0], &input[i], &T[0]);
aes_decrypt(ecb, 10, x, x);
xor128(&output[i], &x[0], &T[0]);
@@ -66,4 +68,3 @@ int aes_xts_decrypt(ulong tweak[], ulong ecb[], vlong sectorNumber, uchar *input
}
return 0;
}
-