summaryrefslogtreecommitdiff
path: root/gcm.h
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2011-02-16 10:33:59 +0100
committerNiels Möller <nisse@lysator.liu.se>2011-02-16 10:33:59 +0100
commit53f5da924ce224947203e21cafaa2d5fd65ca4c4 (patch)
tree737e7f208bed26d3ed60b069caca81cc8bb13aa0 /gcm.h
parentac09e0fe71b1b052fd74336784fada36f727100e (diff)
downloadnettle-53f5da924ce224947203e21cafaa2d5fd65ca4c4.tar.gz
* gcm-aes.c (gcm_aes_set_iv): Use GCM_SET_IV.
(gcm_aes_set_key): Deleted cast. (gcm_aes_encrypt): Likewise. (gcm_aes_decrypt): Likewise. (gcm_aes_digest): Likewise. (gcm_aes_update): One less argument to GCM_UPDATE. * gcm.h (GCM_SET_KEY): Added cast to nettle_crypt_func *. Help compiler type checking despite this cast. (GCM_ENCRYPT): Likewise. (GCM_DECRYPT): Likewise. (GCM_DIGEST): Likewise. (GCM_SET_IV): New macro, for completeness. (GCM_UPDATE): Deleted unused argument encrypt. Rev: nettle/ChangeLog:1.156 Rev: nettle/gcm-aes.c:1.4 Rev: nettle/gcm.h:1.12
Diffstat (limited to 'gcm.h')
-rw-r--r--gcm.h38
1 files changed, 25 insertions, 13 deletions
diff --git a/gcm.h b/gcm.h
index 43a8c436..e0f7fe20 100644
--- a/gcm.h
+++ b/gcm.h
@@ -121,26 +121,38 @@ gcm_digest(struct gcm_ctx *ctx, const struct gcm_key *key,
#define GCM_CTX(type) \
{ type cipher; struct gcm_key key; struct gcm_ctx gcm; }
+/* NOTE: Avoid using NULL, as we don't include anything defining it. */
#define GCM_SET_KEY(ctx, set_key, encrypt, length, data) \
do { \
(set_key)(&(ctx)->cipher, (length), (data)); \
- gcm_set_key(&(ctx)->key, &(ctx)->cipher, (encrypt)); \
+ if (0) (encrypt)(&(ctx)->cipher, 0, (void *)0, (void *)0); \
+ gcm_set_key(&(ctx)->key, &(ctx)->cipher, \
+ (nettle_crypt_func *) (encrypt)); \
} while (0)
-#define GCM_UPDATE(ctx, encrypt, length, data) \
- gcm_update(&(ctx)->gcm, &(ctx)->key, (length), (data))
-
-#define GCM_ENCRYPT(ctx, encrypt, length, dst, src) \
- gcm_encrypt(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, (encrypt), \
- (length), (dst), (src))
+#define GCM_SET_IV(ctx, length, data) \
+ gcm_set_iv(&(ctx)->gcm, &(ctx)->key, (length), (data))
-#define GCM_DECRYPT(ctx, encrypt, length, dst, src) \
- gcm_decrypt(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, (encrypt), \
- (length), (dst), (src))
+#define GCM_UPDATE(ctx, length, data) \
+ gcm_update(&(ctx)->gcm, &(ctx)->key, (length), (data))
-#define GCM_DIGEST(ctx, encrypt, length, digest) \
- gcm_digest(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, (encrypt), \
- (length), (digest))
+#define GCM_ENCRYPT(ctx, encrypt, length, dst, src) \
+ (0 ? (encrypt)(&(ctx)->cipher, 0, (void *)0, (void *)0) \
+ : gcm_encrypt(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, \
+ (nettle_crypt_func *) (encrypt), \
+ (length), (dst), (src)))
+
+#define GCM_DECRYPT(ctx, encrypt, length, dst, src) \
+ (0 ? (encrypt)(&(ctx)->cipher, 0, (void *)0, (void *)0) \
+ : gcm_decrypt(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, \
+ (nettle_crypt_func *) (encrypt), \
+ (length), (dst), (src)))
+
+#define GCM_DIGEST(ctx, encrypt, length, digest) \
+ (0 ? (encrypt)(&(ctx)->cipher, 0, (void *)0, (void *)0) \
+ : gcm_digest(&(ctx)->gcm, &(ctx)->key, &(ctx)->cipher, \
+ (nettle_crypt_func *) (encrypt), \
+ (length), (digest)))
struct gcm_aes_ctx GCM_CTX(struct aes_ctx);