/* Handle several BCC operations for as much data as we need for K and X */ static void ctr_BCC_blocks(DRBG_CTR_CTX *cctx, const unsigned char *in) { ctr_BCC_block(cctx, cctx->KX, in); ctr_BCC_block(cctx, cctx->KX + 16, in); if (cctx->keylen != 16) ctr_BCC_block(cctx, cctx->KX + 32, in); }
/* * Handle several BCC operations for as much data as we need for K and X */ static void ctr_BCC_blocks(RAND_DRBG_CTR *ctr, const unsigned char *in) { ctr_BCC_block(ctr, ctr->KX, in); ctr_BCC_block(ctr, ctr->KX + 16, in); if (ctr->keylen != 16) ctr_BCC_block(ctr, ctr->KX + 32, in); }
/* * Initialise BCC blocks: these have the value 0,1,2 in leftmost positions: * see 10.3.1 stage 7. */ static void ctr_BCC_init(RAND_DRBG_CTR *ctr) { memset(ctr->KX, 0, 48); memset(ctr->bltmp, 0, 16); ctr_BCC_block(ctr, ctr->KX, ctr->bltmp); ctr->bltmp[3] = 1; ctr_BCC_block(ctr, ctr->KX + 16, ctr->bltmp); if (ctr->keylen != 16) { ctr->bltmp[3] = 2; ctr_BCC_block(ctr, ctr->KX + 32, ctr->bltmp); } }
/* Initialise BCC blocks: these have the value 0,1,2 in leftmost positions: * see 10.4.2 stage 7. */ static void ctr_BCC_init(DRBG_CTR_CTX *cctx) { memset(cctx->KX, 0, 48); memset(cctx->bltmp, 0, 16); ctr_BCC_block(cctx, cctx->KX, cctx->bltmp); cctx->bltmp[3] = 1; ctr_BCC_block(cctx, cctx->KX + 16, cctx->bltmp); if (cctx->keylen != 16) { cctx->bltmp[3] = 2; ctr_BCC_block(cctx, cctx->KX + 32, cctx->bltmp); } }