X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=crypto%2Fbcmode.c;h=9a5ae928e1aed6dee25ddbe1bc1721379b2840f0;hp=f6a2a4bddcedc3f41086476145a3058d3d9f4bfc;hb=9af88eb2e41e2b6a73643948e31262eee08c5400;hpb=10856aa76a4c2452ff34764117759621e44980c4 diff --git a/crypto/bcmode.c b/crypto/bcmode.c index f6a2a4b..9a5ae92 100644 --- a/crypto/bcmode.c +++ b/crypto/bcmode.c @@ -9,16 +9,16 @@ static const char *mode_cbc_encrypt(Byte *data, int blocks, const void *sch) { int blocksize= alg->blocksize; memcpy(chain,iv,blocksize); - alg->byteswap(chain); + if (alg->byteswap) alg->byteswap(chain); while (blocks > 0) { - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); memxor(data, chain, blocksize); alg->encrypt.crypt(sch, data, data); memcpy(chain, data, blocksize); - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); blocks--; data += blocksize; } return 0; @@ -32,17 +32,17 @@ static const char *mode_cbc_decrypt(Byte *data, int blocks, int cchain= 0; memcpy(chain,iv,blocksize); - alg->byteswap(chain); + if (alg->byteswap) alg->byteswap(chain); while (blocks > 0) { - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); memcpy(chain + (cchain^blocksize), data, blocksize); alg->decrypt.crypt(sch, data, data); memxor(data, chain + cchain, blocksize); cchain ^= blocksize; - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); blocks--; data += blocksize; } return 0; @@ -55,11 +55,11 @@ static void cbcmac_core(const Byte *data, int blocks, int blocksize= alg->blocksize; memcpy(buf,iv,blocksize); - alg->byteswap(buf); + if (alg->byteswap) alg->byteswap(buf); while (blocks > 0) { memcpy(buf + blocksize, data, blocksize); - alg->byteswap(buf + blocksize); + if (alg->byteswap) alg->byteswap(buf + blocksize); memxor(buf, buf + blocksize, blocksize); alg->encrypt.crypt(sch, buf, buf); @@ -73,7 +73,7 @@ static const char *mode_cbc_mac(const Byte *data, int blocks, const BlockCipherAlgInfo *alg, const void *sch) { cbcmac_core(data,blocks,iv,buf,alg,sch); - alg->byteswap(buf); + if (alg->byteswap) alg->byteswap(buf); return 0; } @@ -83,7 +83,7 @@ static const char *mode_cbc_mac2(const Byte *data, int blocks, const void *sch) { cbcmac_core(data,blocks,iv,buf,alg,sch); alg->encrypt.crypt(sch, buf, buf); - alg->byteswap(buf); + if (alg->byteswap) alg->byteswap(buf); return 0; } @@ -94,9 +94,9 @@ static const char *mode_ecb(Byte *data, int blocks, int blocksize= alg->blocksize; while (blocks > 0) { - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); (encr ? &alg->encrypt : &alg->decrypt)->crypt(sch, data, data); - alg->byteswap(data); + if (alg->byteswap) alg->byteswap(data); blocks--; data += blocksize; } return 0;