From: Andrey Rys Date: Sun, 18 Aug 2019 10:47:28 +0000 (+0200) Subject: tfe: fix endianness with blocks smaller than TF_BLOCK_SIZE. X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=3699c1f4ba441ce91f5fa674e73c3c4fa0264578;p=tfcrypt.git tfe: fix endianness with blocks smaller than TF_BLOCK_SIZE. --- diff --git a/VERSION b/VERSION index f5c8955..bb95160 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -32 +33 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);