diff options
author | Jon Simons <jon@jonsimons.org> | 2017-07-19 17:23:16 -0400 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-28 09:06:30 +0200 |
commit | d4a4ce4d44a9c4431dd9884fbfc458e70c9a5eb5 (patch) | |
tree | 07f617187e204a6950422bbeff34e21c31b17825 | |
parent | 7a2624dee44018980a499943f1db044f7a3802f7 (diff) | |
download | libssh-d4a4ce4d44a9c4431dd9884fbfc458e70c9a5eb5.tar.gz libssh-d4a4ce4d44a9c4431dd9884fbfc458e70c9a5eb5.tar.xz libssh-d4a4ce4d44a9c4431dd9884fbfc458e70c9a5eb5.zip |
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 <jon@jonsimons.org>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | src/chachapoly.c | 7 | ||||
-rw-r--r-- | 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) { |