Upgrade libtomcrypt
This commit is contained in:
@@ -24,7 +24,7 @@ static int s_tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned ch
|
||||
}
|
||||
#endif
|
||||
|
||||
err = cipher_descriptor[xts->cipher].ecb_decrypt(P, P, &xts->key1);
|
||||
err = ecb_decrypt_block(P, P, &xts->key1);
|
||||
|
||||
#ifdef LTC_FAST
|
||||
for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) {
|
||||
@@ -53,7 +53,7 @@ static int s_tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned ch
|
||||
int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt, unsigned char *tweak,
|
||||
const symmetric_xts *xts)
|
||||
{
|
||||
unsigned char PP[16], CC[16], T[16];
|
||||
unsigned char PP[16] = {0}, CC[16], T[16];
|
||||
unsigned long i, m, mo, lim;
|
||||
int err;
|
||||
|
||||
@@ -86,7 +86,7 @@ int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt,
|
||||
if (cipher_descriptor[xts->cipher].accel_xts_decrypt && lim > 0) {
|
||||
|
||||
/* use accelerated decryption for whole blocks */
|
||||
if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, lim, tweak, &xts->key1, &xts->key2)) !=
|
||||
if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, lim, tweak, &xts->key1.key, &xts->key2.key)) !=
|
||||
CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt,
|
||||
XMEMCPY(T, tweak, sizeof(T));
|
||||
} else {
|
||||
/* encrypt the tweak */
|
||||
if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(tweak, T, &xts->key2)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt,
|
||||
}
|
||||
|
||||
/* Decrypt the tweak back */
|
||||
if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) {
|
||||
if ((err = ecb_decrypt_block(T, tweak, &xts->key2)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
void xts_done(symmetric_xts *xts)
|
||||
{
|
||||
LTC_ARGCHKVD(xts != NULL);
|
||||
cipher_descriptor[xts->cipher].done(&xts->key1);
|
||||
cipher_descriptor[xts->cipher].done(&xts->key2);
|
||||
ecb_done(&xts->key1);
|
||||
ecb_done(&xts->key2);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,7 +24,7 @@ static int s_tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(C, C, &xts->key1)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(C, C, &xts->key1)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ static int s_tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char
|
||||
int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tweak,
|
||||
const symmetric_xts *xts)
|
||||
{
|
||||
unsigned char PP[16], CC[16], T[16];
|
||||
unsigned char PP[16], CC[16] = {0}, T[16];
|
||||
unsigned long i, m, mo, lim;
|
||||
int err;
|
||||
|
||||
@@ -88,7 +88,7 @@ int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct,
|
||||
if (cipher_descriptor[xts->cipher].accel_xts_encrypt && lim > 0) {
|
||||
|
||||
/* use accelerated encryption for whole blocks */
|
||||
if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, tweak, &xts->key1, &xts->key2)) !=
|
||||
if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, tweak, &xts->key1.key, &xts->key2.key)) !=
|
||||
CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct,
|
||||
} else {
|
||||
|
||||
/* encrypt the tweak */
|
||||
if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(tweak, T, &xts->key2)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct,
|
||||
}
|
||||
|
||||
/* Decrypt the tweak back */
|
||||
if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) {
|
||||
if ((err = ecb_decrypt_block(T, tweak, &xts->key2)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,10 +41,10 @@ int xts_start(int cipher, const unsigned char *key1, const unsigned char *key2,
|
||||
}
|
||||
|
||||
/* schedule the two ciphers */
|
||||
if ((err = cipher_descriptor[cipher].setup(key1, keylen, num_rounds, &xts->key1)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key1, keylen, num_rounds, &xts->key1)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
if ((err = cipher_descriptor[cipher].setup(key2, keylen, num_rounds, &xts->key2)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key2, keylen, num_rounds, &xts->key2)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
xts->cipher = cipher;
|
||||
|
||||
@@ -23,8 +23,10 @@ static int s_xts_test_accel_xts_encrypt(const unsigned char *pt, unsigned char *
|
||||
orig = cipher_descriptor[xts.cipher].accel_xts_encrypt;
|
||||
cipher_descriptor[xts.cipher].accel_xts_encrypt = NULL;
|
||||
|
||||
XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key));
|
||||
XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key));
|
||||
XMEMCPY(&xts.key1.key, skey1, sizeof(xts.key1));
|
||||
XMEMCPY(&xts.key2.key, skey2, sizeof(xts.key2));
|
||||
xts.key1.cipher = xts.key2.cipher = xts.cipher;
|
||||
xts.key1.blocklen = xts.key2.blocklen = cipher_descriptor[xts.cipher].block_length;
|
||||
|
||||
ret = xts_encrypt(pt, blocks << 4, ct, tweak, &xts);
|
||||
cipher_descriptor[xts.cipher].accel_xts_encrypt = orig;
|
||||
@@ -50,8 +52,10 @@ static int s_xts_test_accel_xts_decrypt(const unsigned char *ct, unsigned char *
|
||||
orig = cipher_descriptor[xts.cipher].accel_xts_decrypt;
|
||||
cipher_descriptor[xts.cipher].accel_xts_decrypt = NULL;
|
||||
|
||||
XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key));
|
||||
XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key));
|
||||
XMEMCPY(&xts.key1.key, skey1, sizeof(xts.key1));
|
||||
XMEMCPY(&xts.key2.key, skey2, sizeof(xts.key2));
|
||||
xts.key1.cipher = xts.key2.cipher = xts.cipher;
|
||||
xts.key1.blocklen = xts.key2.blocklen = cipher_descriptor[xts.cipher].block_length;
|
||||
|
||||
ret = xts_decrypt(ct, blocks << 4, pt, tweak, &xts);
|
||||
cipher_descriptor[xts.cipher].accel_xts_decrypt = orig;
|
||||
|
||||
Reference in New Issue
Block a user