Upgrade libtomcrypt
This commit is contained in:
@@ -33,7 +33,7 @@ int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen)
|
||||
|
||||
if (f9->buflen != 0) {
|
||||
/* encrypt */
|
||||
cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key);
|
||||
ecb_encrypt_block(f9->IV, f9->IV, &f9->key);
|
||||
f9->buflen = 0;
|
||||
for (x = 0; x < f9->blocksize; x++) {
|
||||
f9->ACC[x] ^= f9->IV[x];
|
||||
@@ -41,13 +41,13 @@ int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen)
|
||||
}
|
||||
|
||||
/* schedule modified key */
|
||||
if ((err = cipher_descriptor[f9->cipher].setup(f9->akey, f9->keylen, 0, &f9->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(f9->cipher, f9->akey, f9->keylen, 0, &f9->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
/* encrypt the ACC */
|
||||
cipher_descriptor[f9->cipher].ecb_encrypt(f9->ACC, f9->ACC, &f9->key);
|
||||
cipher_descriptor[f9->cipher].done(&f9->key);
|
||||
ecb_encrypt_block(f9->ACC, f9->ACC, &f9->key);
|
||||
ecb_done(&f9->key);
|
||||
|
||||
/* extract tag */
|
||||
for (x = 0; x < f9->blocksize && (unsigned long)x < *outlen; x++) {
|
||||
|
||||
@@ -38,7 +38,7 @@ int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long ke
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &f9->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key, keylen, 0, &f9->key)) != CRYPT_OK) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen)
|
||||
for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x])));
|
||||
}
|
||||
cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key);
|
||||
ecb_encrypt_block(f9->IV, f9->IV, &f9->key);
|
||||
for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&(f9->ACC[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x])));
|
||||
}
|
||||
@@ -50,7 +50,7 @@ int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen)
|
||||
|
||||
while (inlen) {
|
||||
if (f9->buflen == f9->blocksize) {
|
||||
cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key);
|
||||
ecb_encrypt_block(f9->IV, f9->IV, &f9->key);
|
||||
for (x = 0; x < f9->blocksize; x++) {
|
||||
f9->ACC[x] ^= f9->IV[x];
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ int f9_test(void)
|
||||
return CRYPT_NOP;
|
||||
}
|
||||
|
||||
for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) {
|
||||
for (x = 0; x < (int)LTC_ARRAY_SIZE(tests); x++) {
|
||||
taglen = 4;
|
||||
if ((err = f9_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) {
|
||||
return err;
|
||||
|
||||
@@ -24,9 +24,6 @@ int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen)
|
||||
LTC_ARGCHK(omac != NULL);
|
||||
LTC_ARGCHK(out != NULL);
|
||||
LTC_ARGCHK(outlen != NULL);
|
||||
if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) ||
|
||||
(omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) {
|
||||
@@ -53,10 +50,10 @@ int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen)
|
||||
}
|
||||
|
||||
/* encrypt it */
|
||||
if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->block, &omac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(omac->block, omac->block, &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
cipher_descriptor[omac->cipher_idx].done(&omac->key);
|
||||
ecb_done(&omac->key);
|
||||
|
||||
/* output it */
|
||||
for (x = 0; x < (unsigned)omac->blklen && x < *outlen; x++) {
|
||||
|
||||
@@ -51,7 +51,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l
|
||||
default: return CRYPT_INVALID_ARG;
|
||||
}
|
||||
|
||||
if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key, keylen, 0, &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l
|
||||
|
||||
/* first calc L which is Ek(0) */
|
||||
zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length);
|
||||
if ((err = cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(omac->Lu[0], omac->Lu[0], &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,6 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l
|
||||
}
|
||||
|
||||
/* setup state */
|
||||
omac->cipher_idx = cipher;
|
||||
omac->buflen = 0;
|
||||
omac->blklen = len;
|
||||
zeromem(omac->prev, sizeof(omac->prev));
|
||||
|
||||
@@ -24,9 +24,6 @@ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen)
|
||||
|
||||
LTC_ARGCHK(omac != NULL);
|
||||
LTC_ARGCHK(in != NULL);
|
||||
if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) ||
|
||||
(omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) {
|
||||
@@ -34,22 +31,17 @@ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen)
|
||||
}
|
||||
|
||||
#ifdef LTC_FAST
|
||||
{
|
||||
unsigned long blklen = cipher_descriptor[omac->cipher_idx].block_length;
|
||||
|
||||
if (omac->buflen == 0 && inlen > blklen) {
|
||||
unsigned long y;
|
||||
for (x = 0; x < (inlen - blklen); x += blklen) {
|
||||
for (y = 0; y < blklen; y += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&omac->prev[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&in[y]));
|
||||
}
|
||||
in += blklen;
|
||||
if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->prev, omac->prev, &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
inlen -= x;
|
||||
}
|
||||
if (omac->buflen == 0 && inlen > (unsigned long)omac->blklen) {
|
||||
for (x = 0; x < (inlen - omac->blklen); x += omac->blklen) {
|
||||
for (n = 0; n < (unsigned long)omac->blklen; n += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&omac->prev[n])) ^= *(LTC_FAST_TYPE_PTR_CAST(&in[n]));
|
||||
}
|
||||
in += omac->blklen;
|
||||
if ((err = ecb_encrypt_block(omac->prev, omac->prev, &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
inlen -= x;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -59,7 +51,7 @@ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen)
|
||||
for (x = 0; x < (unsigned long)omac->blklen; x++) {
|
||||
omac->block[x] ^= omac->prev[x];
|
||||
}
|
||||
if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->prev, &omac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(omac->block, omac->prev, &omac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
omac->buflen = 0;
|
||||
|
||||
@@ -76,7 +76,7 @@ int omac_test(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) {
|
||||
for (x = 0; x < (int)LTC_ARRAY_SIZE(tests); x++) {
|
||||
len = sizeof(out);
|
||||
if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) {
|
||||
return err;
|
||||
|
||||
@@ -80,7 +80,7 @@ int pelican_test(void)
|
||||
unsigned char out[16];
|
||||
pelican_state pel;
|
||||
|
||||
for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) {
|
||||
for (x = 0; x < (int)LTC_ARRAY_SIZE(tests); x++) {
|
||||
if ((err = pelican_init(&pel, tests[x].K, tests[x].keylen)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -15,9 +15,6 @@ int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen)
|
||||
|
||||
LTC_ARGCHK(pmac != NULL);
|
||||
LTC_ARGCHK(out != NULL);
|
||||
if ((err = cipher_is_valid(pmac->cipher_idx)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((pmac->buflen > (int)sizeof(pmac->block)) || (pmac->buflen < 0) ||
|
||||
(pmac->block_len > (int)sizeof(pmac->block)) || (pmac->buflen > pmac->block_len)) {
|
||||
@@ -41,10 +38,10 @@ int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen)
|
||||
}
|
||||
|
||||
/* encrypt it */
|
||||
if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(pmac->checksum, pmac->checksum, &pmac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(pmac->checksum, pmac->checksum, &pmac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
cipher_descriptor[pmac->cipher_idx].done(&pmac->key);
|
||||
ecb_done(&pmac->key);
|
||||
|
||||
/* store it */
|
||||
for (x = 0; x < pmac->block_len && x < (int)*outlen; x++) {
|
||||
|
||||
@@ -55,12 +55,12 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l
|
||||
|
||||
/* determine which polys to use */
|
||||
pmac->block_len = cipher_descriptor[cipher].block_length;
|
||||
for (poly = 0; poly < (int)(sizeof(polys)/sizeof(polys[0])); poly++) {
|
||||
for (poly = 0; poly < (int)LTC_ARRAY_SIZE(polys); poly++) {
|
||||
if (polys[poly].len == pmac->block_len) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (poly >= (int)(sizeof(polys)/sizeof(polys[0]))) {
|
||||
if (poly >= (int)LTC_ARRAY_SIZE(polys)) {
|
||||
return CRYPT_INVALID_ARG;
|
||||
}
|
||||
if (polys[poly].len != pmac->block_len) {
|
||||
@@ -75,7 +75,7 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l
|
||||
|
||||
|
||||
/* schedule the key */
|
||||
if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &pmac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key, keylen, 0, &pmac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l
|
||||
|
||||
/* find L = E[0] */
|
||||
zeromem(L, pmac->block_len);
|
||||
if ((err = cipher_descriptor[cipher].ecb_encrypt(L, L, &pmac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(L, L, &pmac->key)) != CRYPT_OK) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,6 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l
|
||||
|
||||
/* zero buffer, counters, etc... */
|
||||
pmac->block_index = 1;
|
||||
pmac->cipher_idx = cipher;
|
||||
pmac->buflen = 0;
|
||||
zeromem(pmac->block, sizeof(pmac->block));
|
||||
zeromem(pmac->Li, sizeof(pmac->Li));
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
*/
|
||||
int pmac_ntz(unsigned long x)
|
||||
{
|
||||
#if defined(LTC_HAVE_CTZL_BUILTIN)
|
||||
if (x == 0)
|
||||
return sizeof(unsigned long) * CHAR_BIT;
|
||||
return __builtin_ctzl(x);
|
||||
#else
|
||||
int c;
|
||||
x &= 0xFFFFFFFFUL;
|
||||
c = 0;
|
||||
@@ -22,6 +27,7 @@ int pmac_ntz(unsigned long x)
|
||||
x >>= 1;
|
||||
}
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,9 +29,6 @@ int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen)
|
||||
|
||||
LTC_ARGCHK(pmac != NULL);
|
||||
LTC_ARGCHK(in != NULL);
|
||||
if ((err = cipher_is_valid(pmac->cipher_idx)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((pmac->buflen > (int)sizeof(pmac->block)) || (pmac->buflen < 0) ||
|
||||
(pmac->block_len > (int)sizeof(pmac->block)) || (pmac->buflen > pmac->block_len)) {
|
||||
@@ -46,7 +43,7 @@ int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen)
|
||||
for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&Z[y])) = *(LTC_FAST_TYPE_PTR_CAST(&in[y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&pmac->Li[y]));
|
||||
}
|
||||
if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(Z, Z, &pmac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) {
|
||||
@@ -65,7 +62,7 @@ int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen)
|
||||
for (x = 0; x < (unsigned long)pmac->block_len; x++) {
|
||||
Z[x] = pmac->Li[x] ^ pmac->block[x];
|
||||
}
|
||||
if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) {
|
||||
if ((err = ecb_encrypt_block(Z, Z, &pmac->key)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
for (x = 0; x < (unsigned long)pmac->block_len; x++) {
|
||||
|
||||
@@ -124,7 +124,7 @@ int pmac_test(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) {
|
||||
for (x = 0; x < (int)LTC_ARRAY_SIZE(tests); x++) {
|
||||
len = sizeof(outtag);
|
||||
if ((err = pmac_memory(idx, tests[x].key, 16, tests[x].msg, tests[x].msglen, outtag, &len)) != CRYPT_OK) {
|
||||
return err;
|
||||
|
||||
@@ -17,17 +17,11 @@
|
||||
*/
|
||||
int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen)
|
||||
{
|
||||
int err, x;
|
||||
int x;
|
||||
LTC_ARGCHK(xcbc != NULL);
|
||||
LTC_ARGCHK(out != NULL);
|
||||
|
||||
/* check structure */
|
||||
if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) ||
|
||||
(xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) {
|
||||
if ((xcbc->blocksize < 0) || (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) {
|
||||
return CRYPT_INVALID_ARG;
|
||||
}
|
||||
|
||||
@@ -46,8 +40,8 @@ int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen)
|
||||
}
|
||||
|
||||
/* encrypt */
|
||||
cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
cipher_descriptor[xcbc->cipher].done(&xcbc->key);
|
||||
ecb_encrypt_block(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
ecb_done(&xcbc->key);
|
||||
|
||||
/* extract tag */
|
||||
for (x = 0; x < xcbc->blocksize && (unsigned long)x < *outlen; x++) {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen)
|
||||
{
|
||||
int x, y, err;
|
||||
symmetric_key *skey;
|
||||
symmetric_ECB *skey;
|
||||
unsigned long k1;
|
||||
|
||||
LTC_ARGCHK(xcbc != NULL);
|
||||
@@ -64,7 +64,7 @@ int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned l
|
||||
return CRYPT_MEM;
|
||||
}
|
||||
|
||||
if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, skey)) != CRYPT_OK) {
|
||||
if ((err = ecb_start(cipher, key, keylen, 0, skey)) != CRYPT_OK) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -73,20 +73,19 @@ int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned l
|
||||
for (x = 0; x < cipher_descriptor[cipher].block_length; x++) {
|
||||
xcbc->K[y][x] = y + 1;
|
||||
}
|
||||
cipher_descriptor[cipher].ecb_encrypt(xcbc->K[y], xcbc->K[y], skey);
|
||||
ecb_encrypt_block(xcbc->K[y], xcbc->K[y], skey);
|
||||
}
|
||||
}
|
||||
|
||||
/* setup K1 */
|
||||
err = cipher_descriptor[cipher].setup(xcbc->K[0], k1, 0, &xcbc->key);
|
||||
err = ecb_start(cipher, xcbc->K[0], k1, 0, &xcbc->key);
|
||||
|
||||
/* setup struct */
|
||||
zeromem(xcbc->IV, cipher_descriptor[cipher].block_length);
|
||||
xcbc->blocksize = cipher_descriptor[cipher].block_length;
|
||||
xcbc->cipher = cipher;
|
||||
xcbc->buflen = 0;
|
||||
done:
|
||||
cipher_descriptor[cipher].done(skey);
|
||||
ecb_done(skey);
|
||||
if (skey != NULL) {
|
||||
#ifdef LTC_CLEAN_STACK
|
||||
zeromem(skey, sizeof(*skey));
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
*/
|
||||
int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen)
|
||||
{
|
||||
int err;
|
||||
#ifdef LTC_FAST
|
||||
int x;
|
||||
#endif
|
||||
@@ -25,13 +24,7 @@ int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen)
|
||||
LTC_ARGCHK(xcbc != NULL);
|
||||
LTC_ARGCHK(in != NULL);
|
||||
|
||||
/* check structure */
|
||||
if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) ||
|
||||
(xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) {
|
||||
if ((xcbc->blocksize < 0) || (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) {
|
||||
return CRYPT_INVALID_ARG;
|
||||
}
|
||||
|
||||
@@ -41,7 +34,7 @@ int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen)
|
||||
for (x = 0; x < xcbc->blocksize; x += sizeof(LTC_FAST_TYPE)) {
|
||||
*(LTC_FAST_TYPE_PTR_CAST(&(xcbc->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x])));
|
||||
}
|
||||
cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
ecb_encrypt_block(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
in += xcbc->blocksize;
|
||||
inlen -= xcbc->blocksize;
|
||||
}
|
||||
@@ -50,7 +43,7 @@ int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen)
|
||||
|
||||
while (inlen) {
|
||||
if (xcbc->buflen == xcbc->blocksize) {
|
||||
cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
ecb_encrypt_block(xcbc->IV, xcbc->IV, &xcbc->key);
|
||||
xcbc->buflen = 0;
|
||||
}
|
||||
xcbc->IV[xcbc->buflen++] ^= *in++;
|
||||
|
||||
@@ -98,7 +98,7 @@ int xcbc_test(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) {
|
||||
for (x = 0; x < (int)LTC_ARRAY_SIZE(tests); x++) {
|
||||
taglen = 16;
|
||||
if ((err = xcbc_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) {
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user