]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - bcal-cfb_bit.c
adding ofb- and ctr-mode
[avr-crypto-lib.git] / bcal-cfb_bit.c
index 6f373c9a35aa62458bc80c0aad960ae3ec7cda5f..2611b658ecca3bb04051a7cfd50fcb621a9ece8f 100644 (file)
@@ -40,7 +40,7 @@ static void write_bit(void* block, uint32_t index, uint8_t value){
        }
 }
 
-uint8_t bcal_cfb_b_init(const bcdesc_t* desc, const void* key, uint16_t keysize, uint16_t size_b, bcal_cfb_b_ctx_t* ctx){
+uint8_t bcal_cfb_b_init(const bcdesc_t* desc, const void* key, uint16_t keysize_b, uint16_t size_b, bcal_cfb_b_ctx_t* ctx){
        ctx->desc = (bcdesc_t*)desc;
        ctx->blocksize_B = (bcal_cipher_getBlocksize_b(desc)+7)/8;
        ctx->in_block=malloc(ctx->blocksize_B);
@@ -51,7 +51,7 @@ uint8_t bcal_cfb_b_init(const bcdesc_t* desc, const void* key, uint16_t keysize,
                return 0x12;
        }
        ctx->size_b = size_b;
-       return bcal_cipher_init(desc, key, keysize, &(ctx->cctx));
+       return bcal_cipher_init(desc, key, keysize_b, &(ctx->cctx));
 }
 
 void bcal_cfb_b_free(bcal_cfb_b_ctx_t* ctx){
@@ -60,7 +60,9 @@ void bcal_cfb_b_free(bcal_cfb_b_ctx_t* ctx){
 }
 
 void bcal_cfb_b_loadIV(const void* iv, bcal_cfb_b_ctx_t* ctx){
-       memcpy(ctx->in_block, iv, ctx->blocksize_B);
+       if(iv){
+               memcpy(ctx->in_block, iv, ctx->blocksize_B);
+       }
 }
 
 void bcal_cfb_b_encNext(void* block, uint8_t offset, bcal_cfb_b_ctx_t* ctx){