+2018-01-08 Niels Möller <nisse@lysator.liu.se>
+
+ * cbc.c (cbc_decrypt): For in-place operation (src == dst case),
+ eliminate use of src variable.
+ * cfb.c (cfb_decrypt): Likewise.
+ * gcm.c (gcm_crypt): Likewise, and replace one memxor3 by memxor.
+
2018-01-03 Niels Möller <nisse@lysator.liu.se>
* x86_64/aesni/aes-encrypt-internal.asm: Read subkeys into xmm
TMP_ALLOC(buffer, buffer_size);
TMP_ALLOC(initial_iv, block_size);
- for ( ; length > buffer_size;
- length -= buffer_size, src += buffer_size, dst += buffer_size)
+ for ( ; length > buffer_size; length -= buffer_size, dst += buffer_size)
{
- f(ctx, buffer_size, buffer, src);
+ f(ctx, buffer_size, buffer, dst);
memcpy(initial_iv, iv, block_size);
- memcpy(iv, src + buffer_size - block_size, block_size);
- memxor3(dst + block_size, buffer + block_size, src,
+ memcpy(iv, dst + buffer_size - block_size, block_size);
+ memxor3(dst + block_size, buffer + block_size, dst,
buffer_size - block_size);
memxor3(dst, buffer, initial_iv, block_size);
}
- f(ctx, length, buffer, src);
+ f(ctx, length, buffer, dst);
memcpy(initial_iv, iv, block_size);
/* Copies last block */
- memcpy(iv, src + length - block_size, block_size);
+ memcpy(iv, dst + length - block_size, block_size);
/* Writes all but first block, reads all but last block. */
- memxor3(dst + block_size, buffer + block_size, src,
+ memxor3(dst + block_size, buffer + block_size, dst,
length - block_size);
/* Writes first block. */
memxor3(dst, buffer, initial_iv, block_size);
* not less than block_size. So does part */
f(ctx, block_size, buffer, iv);
- f(ctx, part - block_size, buffer + block_size, src);
- memcpy(iv, src + part - block_size, block_size);
+ f(ctx, part - block_size, buffer + block_size, dst);
+ memcpy(iv, dst + part - block_size, block_size);
memxor(dst, buffer, part);
length -= part;
- src += part;
dst += part;
}
src += GCM_BLOCK_SIZE, dst += GCM_BLOCK_SIZE))
{
f (cipher, GCM_BLOCK_SIZE, buffer, ctx->ctr.b);
- memxor3 (dst, src, buffer, GCM_BLOCK_SIZE);
+ memxor (dst, buffer, GCM_BLOCK_SIZE);
INC32 (ctx->ctr);
}
}