X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=bcal-cbc.c;h=ee27c35ff803f29d3f45787fdaabb423554a429d;hb=60782c4d65b45ea0dd219ff8e6a82a12d8021b7e;hp=7ae892edad821a75e21e77cfefaaaf0f0b0a6891;hpb=9e69044519495dad3e2f76fc7795e72390b79a45;p=avr-crypto-lib.git diff --git a/bcal-cbc.c b/bcal-cbc.c index 7ae892e..ee27c35 100644 --- a/bcal-cbc.c +++ b/bcal-cbc.c @@ -23,15 +23,15 @@ #include "bcal-basic.h" #include "memxor.h" -uint8_t bcal_cbc_init(const bcdesc_t* desc, const void* key, uint16_t keysize, bcal_cbc_ctx_t* ctx){ +uint8_t bcal_cbc_init(const bcdesc_t* desc, const void* key, uint16_t keysize_b, bcal_cbc_ctx_t* ctx){ ctx->desc = (bcdesc_t*)desc; ctx->blocksize_B = (bcal_cipher_getBlocksize_b(desc)+7)/8; ctx->prev_block = malloc(ctx->blocksize_B); - if(!(ctx->prev_block)){ + if(ctx->prev_block==NULL){ return 0x11; } - return bcal_cipher_init(desc, key, keysize, &(ctx->cctx)); + return bcal_cipher_init(desc, key, keysize_b, &(ctx->cctx)); } void bcal_cbc_free(bcal_cbc_ctx_t* ctx){ @@ -41,7 +41,9 @@ void bcal_cbc_free(bcal_cbc_ctx_t* ctx){ void bcal_cbc_loadIV(const void* iv, bcal_cbc_ctx_t* ctx){ - memcpy(ctx->prev_block, iv, ctx->blocksize_B); + if(iv){ + memcpy(ctx->prev_block, iv, ctx->blocksize_B); + } } void bcal_cbc_encNext(void* block, bcal_cbc_ctx_t* ctx){ @@ -64,16 +66,15 @@ void bcal_cbc_decRand(void* block, const void* prev_block, bcal_cbc_ctx_t* ctx){ void bcal_cbc_encMsg(const void* iv, void* msg, uint16_t msg_blocks, bcal_cbc_ctx_t* ctx){ bcal_cbc_loadIV(iv, ctx); - while(msg_blocks){ + while(msg_blocks--){ bcal_cbc_encNext(msg, ctx); - msg_blocks -= 1; msg = (uint8_t*)msg + ctx->blocksize_B; } } void bcal_cbc_decMsg(const void* iv, void* msg, uint16_t msg_blocks, bcal_cbc_ctx_t* ctx){ msg=(uint8_t*)msg + (msg_blocks-1)*ctx->blocksize_B; - while(msg_blocks>1){ + while(msg_blocks > 1){ bcal_cbc_decRand(msg, (uint8_t*)msg-ctx->blocksize_B, ctx); msg_blocks -= 1; msg=(uint8_t*)msg-ctx->blocksize_B;