[PATCH 4/7] Modify encrypt/decrypt arguments for in-place
Jussi Kivilinna
jussi.kivilinna at iki.fi
Tue Nov 5 16:57:51 CET 2013
* cipher/cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt): Modify
local arguments if in-place operation.
--
Modify encrypt/decrypt argument variables instead of calling subfunction with
different arguments. This allows compiler to inline the subfunction for small
speedup.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
cipher/cipher.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/cipher/cipher.c b/cipher/cipher.c
index 73a97b1..705696c 100644
--- a/cipher/cipher.c
+++ b/cipher/cipher.c
@@ -758,9 +758,12 @@ gcry_cipher_encrypt (gcry_cipher_hd_t h, void *out, size_t outsize,
gcry_err_code_t err;
if (!in) /* Caller requested in-place encryption. */
- err = cipher_encrypt (h, out, outsize, out, outsize);
- else
- err = cipher_encrypt (h, out, outsize, in, inlen);
+ {
+ in = out;
+ inlen = outsize;
+ }
+
+ err = cipher_encrypt (h, out, outsize, in, inlen);
/* Failsafe: Make sure that the plaintext will never make it into
OUT if the encryption returned an error. */
@@ -851,9 +854,12 @@ gcry_cipher_decrypt (gcry_cipher_hd_t h, void *out, size_t outsize,
gcry_err_code_t err;
if (!in) /* Caller requested in-place encryption. */
- err = cipher_decrypt (h, out, outsize, out, outsize);
- else
- err = cipher_decrypt (h, out, outsize, in, inlen);
+ {
+ in = out;
+ inlen = outsize;
+ }
+
+ err = cipher_decrypt (h, out, outsize, in, inlen);
return gcry_error (err);
}
More information about the Gcrypt-devel
mailing list