auto-format xts code

This commit is contained in:
Steffen Jaeckel 2015-08-26 00:02:50 +02:00
parent b25d04ed94
commit 181d2f2df7
6 changed files with 145 additions and 164 deletions

View File

@ -12,7 +12,7 @@
/** /**
Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects
*/ */
#ifdef LTC_XTS_MODE #ifdef LTC_XTS_MODE
@ -24,7 +24,7 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
/* tweak encrypt block i */ /* tweak encrypt block i */
#ifdef LTC_FAST #ifdef LTC_FAST
for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) {
*((LTC_FAST_TYPE*)&P[x]) = *((LTC_FAST_TYPE*)&C[x]) ^ *((LTC_FAST_TYPE*)&T[x]); *((LTC_FAST_TYPE *)&P[x]) = *((LTC_FAST_TYPE *)&C[x]) ^ *((LTC_FAST_TYPE *)&T[x]);
} }
#else #else
for (x = 0; x < 16; x++) { for (x = 0; x < 16; x++) {
@ -36,7 +36,7 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
#ifdef LTC_FAST #ifdef LTC_FAST
for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) {
*((LTC_FAST_TYPE*)&P[x]) ^= *((LTC_FAST_TYPE*)&T[x]); *((LTC_FAST_TYPE *)&P[x]) ^= *((LTC_FAST_TYPE *)&T[x]);
} }
#else #else
for (x = 0; x < 16; x++) { for (x = 0; x < 16; x++) {
@ -57,10 +57,8 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
@param tweak [in] The 128--bit encryption tweak (e.g. sector number) @param tweak [in] The 128--bit encryption tweak (e.g. sector number)
@param xts The XTS structure @param xts The XTS structure
Returns CRYPT_OK upon success Returns CRYPT_OK upon success
*/int xts_decrypt( */
const unsigned char *ct, unsigned long ptlen, int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt, unsigned char *tweak,
unsigned char *pt,
unsigned char *tweak,
symmetric_xts *xts) symmetric_xts *xts)
{ {
unsigned char PP[16], CC[16], T[16]; unsigned char PP[16], CC[16], T[16];
@ -96,8 +94,8 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
if (cipher_descriptor[xts->cipher].accel_xts_decrypt && lim > 0) { if (cipher_descriptor[xts->cipher].accel_xts_decrypt && lim > 0) {
/* use accelerated decryption for whole blocks */ /* use accelerated decryption for whole blocks */
if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, lim, tweak, &xts->key1, &xts->key2) !=
lim, tweak, &xts->key1, &xts->key2) != CRYPT_OK)) { CRYPT_OK)) {
return err; return err;
} }
ct += lim * 16; ct += lim * 16;
@ -107,8 +105,7 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
XMEMCPY(T, tweak, sizeof(T)); XMEMCPY(T, tweak, sizeof(T));
} else { } else {
/* encrypt the tweak */ /* encrypt the tweak */
if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) {
&xts->key2)) != CRYPT_OK) {
return err; return err;
} }
@ -131,8 +128,8 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
/* Pm = first ptlen % 16 bytes of PP */ /* Pm = first ptlen % 16 bytes of PP */
for (i = 0; i < mo; i++) { for (i = 0; i < mo; i++) {
CC[i] = ct[16+i]; CC[i] = ct[16 + i];
pt[16+i] = PP[i]; pt[16 + i] = PP[i];
} }
for (; i < 16; i++) { for (; i < 16; i++) {
CC[i] = PP[i]; CC[i] = PP[i];
@ -145,8 +142,7 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
} }
/* Decrypt the tweak back */ /* Decrypt the tweak back */
if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) {
&xts->key2)) != CRYPT_OK) {
return err; return err;
} }
@ -158,4 +154,3 @@ static int tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */

View File

@ -31,4 +31,3 @@ void xts_done(symmetric_xts *xts)
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */

View File

@ -12,7 +12,7 @@
/** /**
Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects
*/ */
#ifdef LTC_XTS_MODE #ifdef LTC_XTS_MODE
@ -24,7 +24,7 @@ static int tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char *
/* tweak encrypt block i */ /* tweak encrypt block i */
#ifdef LTC_FAST #ifdef LTC_FAST
for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) {
*((LTC_FAST_TYPE*)&C[x]) = *((LTC_FAST_TYPE*)&P[x]) ^ *((LTC_FAST_TYPE*)&T[x]); *((LTC_FAST_TYPE *)&C[x]) = *((LTC_FAST_TYPE *)&P[x]) ^ *((LTC_FAST_TYPE *)&T[x]);
} }
#else #else
for (x = 0; x < 16; x++) { for (x = 0; x < 16; x++) {
@ -38,7 +38,7 @@ static int tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char *
#ifdef LTC_FAST #ifdef LTC_FAST
for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) {
*((LTC_FAST_TYPE*)&C[x]) ^= *((LTC_FAST_TYPE*)&T[x]); *((LTC_FAST_TYPE *)&C[x]) ^= *((LTC_FAST_TYPE *)&T[x]);
} }
#else #else
for (x = 0; x < 16; x++) { for (x = 0; x < 16; x++) {
@ -59,11 +59,8 @@ static int tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char *
@param tweak [in] The 128--bit encryption tweak (e.g. sector number) @param tweak [in] The 128--bit encryption tweak (e.g. sector number)
@param xts The XTS structure @param xts The XTS structure
Returns CRYPT_OK upon success Returns CRYPT_OK upon success
*/ */
int xts_encrypt( int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tweak,
const unsigned char *pt, unsigned long ptlen,
unsigned char *ct,
unsigned char *tweak,
symmetric_xts *xts) symmetric_xts *xts)
{ {
unsigned char PP[16], CC[16], T[16]; unsigned char PP[16], CC[16], T[16];
@ -99,8 +96,8 @@ int xts_encrypt(
if (cipher_descriptor[xts->cipher].accel_xts_encrypt && lim > 0) { if (cipher_descriptor[xts->cipher].accel_xts_encrypt && lim > 0) {
/* use accelerated encryption for whole blocks */ /* use accelerated encryption for whole blocks */
if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, tweak, &xts->key1, &xts->key2) !=
tweak, &xts->key1, &xts->key2) != CRYPT_OK)) { CRYPT_OK)) {
return err; return err;
} }
ct += lim * 16; ct += lim * 16;
@ -111,8 +108,7 @@ int xts_encrypt(
} else { } else {
/* encrypt the tweak */ /* encrypt the tweak */
if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) {
&xts->key2)) != CRYPT_OK) {
return err; return err;
} }
@ -132,8 +128,8 @@ int xts_encrypt(
/* Cm = first ptlen % 16 bytes of CC */ /* Cm = first ptlen % 16 bytes of CC */
for (i = 0; i < mo; i++) { for (i = 0; i < mo; i++) {
PP[i] = pt[16+i]; PP[i] = pt[16 + i];
ct[16+i] = CC[i]; ct[16 + i] = CC[i];
} }
for (; i < 16; i++) { for (; i < 16; i++) {
@ -147,8 +143,7 @@ int xts_encrypt(
} }
/* Decrypt the tweak back */ /* Decrypt the tweak back */
if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) {
&xts->key2)) != CRYPT_OK) {
return err; return err;
} }
@ -160,4 +155,3 @@ int xts_encrypt(
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */

View File

@ -16,7 +16,6 @@
#ifdef LTC_XTS_MODE #ifdef LTC_XTS_MODE
/** Start XTS mode /** Start XTS mode
@param cipher The index of the cipher to use @param cipher The index of the cipher to use
@param key1 The encrypt key @param key1 The encrypt key
@ -26,11 +25,7 @@
@param xts [out] XTS structure @param xts [out] XTS structure
Returns CRYPT_OK upon success. Returns CRYPT_OK upon success.
*/ */
int xts_start( int cipher, int xts_start(int cipher, const unsigned char *key1, const unsigned char *key2, unsigned long keylen, int num_rounds,
const unsigned char *key1,
const unsigned char *key2,
unsigned long keylen,
int num_rounds,
symmetric_xts *xts) symmetric_xts *xts)
{ {
int err; int err;
@ -66,4 +61,3 @@ int xts_start( int cipher,
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */

View File

@ -39,4 +39,3 @@ void xts_mult_x(unsigned char *I)
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */

View File

@ -14,6 +14,7 @@
/** /**
Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects
Returns CRYPT_OK upon success. Returns CRYPT_OK upon success.
*/ */
int xts_test(void) int xts_test(void)
@ -21,7 +22,8 @@ int xts_test(void)
#ifdef LTC_NO_TEST #ifdef LTC_NO_TEST
return CRYPT_NOP; return CRYPT_NOP;
#else #else
static const struct { static const struct
{
int keylen; int keylen;
unsigned char key1[32]; unsigned char key1[32];
unsigned char key2[32]; unsigned char key2[32];
@ -154,9 +156,8 @@ int xts_test(void)
return CRYPT_NOP; return CRYPT_NOP;
} }
} }
for (j = 0; j < 2; j++) { for (j = 0; j < 2; j++) {
for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) {
/* skip the cases where /* skip the cases where
* the length is smaller than 2*blocklen * the length is smaller than 2*blocklen
* or the length is not a multiple of 32 * or the length is not a multiple of 32
@ -164,16 +165,16 @@ int xts_test(void)
if ((j == 1) && ((tests[i].PTLEN < 32) || (tests[i].PTLEN % 32))) { if ((j == 1) && ((tests[i].PTLEN < 32) || (tests[i].PTLEN % 32))) {
continue; continue;
} }
len = tests[i].PTLEN/2; len = tests[i].PTLEN / 2;
err = xts_start(idx, tests[i].key1, tests[i].key2, tests[i].keylen/2, 0, &xts); err = xts_start(idx, tests[i].key1, tests[i].key2, tests[i].keylen / 2, 0, &xts);
if (err != CRYPT_OK) { if (err != CRYPT_OK) {
return err; return err;
} }
seq = tests[i].seqnum; seq = tests[i].seqnum;
STORE64L(seq,Torg); STORE64L(seq, Torg);
XMEMSET(Torg+8, 0, 8); XMEMSET(Torg + 8, 0, 8);
XMEMCPY(T, Torg, sizeof(T)); XMEMCPY(T, Torg, sizeof(T));
if (j == 0) { if (j == 0) {
@ -182,8 +183,7 @@ int xts_test(void)
xts_done(&xts); xts_done(&xts);
return err; return err;
} }
} } else {
else {
err = xts_encrypt(tests[i].PTX, len, OUT, T, &xts); err = xts_encrypt(tests[i].PTX, len, OUT, T, &xts);
if (err != CRYPT_OK) { if (err != CRYPT_OK) {
xts_done(&xts); xts_done(&xts);
@ -198,7 +198,9 @@ int xts_test(void)
if (XMEMCMP(OUT, tests[i].CTX, tests[i].PTLEN)) { if (XMEMCMP(OUT, tests[i].CTX, tests[i].PTLEN)) {
#ifdef LTC_TEST_DBG #ifdef LTC_TEST_DBG
printf("\nTestcase #%d with original length %lu and half of it %lu\n", i, tests[i].PTLEN, len); printf("\nTestcase #%d with original length %lu and half of it "
"%lu\n",
i, tests[i].PTLEN, len);
printf("\nencrypt\n"); printf("\nencrypt\n");
print_hex("should", tests[i].CTX, tests[i].PTLEN); print_hex("should", tests[i].CTX, tests[i].PTLEN);
print_hex("is", OUT, tests[i].PTLEN); print_hex("is", OUT, tests[i].PTLEN);
@ -214,8 +216,7 @@ int xts_test(void)
xts_done(&xts); xts_done(&xts);
return err; return err;
} }
} } else {
else {
err = xts_decrypt(tests[i].CTX, len, OUT, T, &xts); err = xts_decrypt(tests[i].CTX, len, OUT, T, &xts);
if (err != CRYPT_OK) { if (err != CRYPT_OK) {
xts_done(&xts); xts_done(&xts);
@ -249,4 +250,3 @@ int xts_test(void)
/* $Source$ */ /* $Source$ */
/* $Revision$ */ /* $Revision$ */
/* $Date$ */ /* $Date$ */