From d4a4ce4d44a9c4431dd9884fbfc458e70c9a5eb5 Mon Sep 17 00:00:00 2001 From: Jon Simons Date: Wed, 19 Jul 2017 17:23:16 -0400 Subject: [PATCH] chacha: use a cipher cleanup callback With this change there is less code specific to the chacha20-poly1305 cipher found in src/wrapper.c. Signed-off-by: Jon Simons Reviewed-by: Andreas Schneider --- src/chachapoly.c | 7 ++++++- src/wrapper.c | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/chachapoly.c b/src/chachapoly.c index f3319b62..12600e85 100644 --- a/src/chachapoly.c +++ b/src/chachapoly.c @@ -187,6 +187,10 @@ static int chacha20_poly1305_aead_decrypt(struct ssh_cipher_struct *cipher, return SSH_OK; } +static void chacha20_cleanup(struct ssh_cipher_struct *cipher) { + SAFE_FREE(cipher->chacha20_schedule); +} + const struct ssh_cipher_struct chacha20poly1305_cipher = { .name = "chacha20-poly1305@openssh.com", .blocksize = 8, @@ -198,5 +202,6 @@ const struct ssh_cipher_struct chacha20poly1305_cipher = { .set_decrypt_key = chacha20_set_encrypt_key, .aead_encrypt = chacha20_poly1305_aead_encrypt, .aead_decrypt_length = chacha20_poly1305_aead_decrypt_length, - .aead_decrypt = chacha20_poly1305_aead_decrypt + .aead_decrypt = chacha20_poly1305_aead_decrypt, + .cleanup = chacha20_cleanup }; diff --git a/src/wrapper.c b/src/wrapper.c index 5bf5cee5..7d771030 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -128,9 +128,6 @@ void ssh_cipher_clear(struct ssh_cipher_struct *cipher){ if (cipher->cleanup != NULL) { cipher->cleanup(cipher); } - if (cipher->chacha20_schedule != NULL){ - SAFE_FREE(cipher->chacha20_schedule); - } } static void cipher_free(struct ssh_cipher_struct *cipher) {