X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfe.c;h=eea50d36e46c45cc81b8e5ce0ac7be4bc8164c10;hb=3699c1f4ba441ce91f5fa674e73c3c4fa0264578;hp=127d063cd26d71fe0f96055ae30839ed0a80d603;hpb=f761a53231d1a023e2d3e5efcc5591b04a34f98a;p=tfcrypt.git diff --git a/tfe.c b/tfe.c index 127d063..eea50d3 100644 --- a/tfe.c +++ b/tfe.c @@ -49,9 +49,13 @@ void tfe_emit(void *dst, size_t szdst, struct tfe_stream *tfe) } if (sz) { + TF_UNIT_TYPE t[TF_NR_BLOCK_UNITS]; + tf_encrypt_rawblk(tfe->iv, tfe->iv, tfe->key); - memcpy(udst, tfe->iv, sz); - data_to_words(udst, TF_BLOCK_SIZE); + memcpy(t, tfe->iv, TF_BLOCK_SIZE); + data_to_words(t, TF_BLOCK_SIZE); + memcpy(udst, t, sz); + memset(t, 0, TF_BLOCK_SIZE); udst = (TF_BYTE_TYPE *)tfe->iv; tfe->carry_bytes = TF_BLOCK_SIZE-sz; memcpy(tfe->carry_block, udst+sz, tfe->carry_bytes);