diff --git a/include/libssh/crypto.h b/include/libssh/crypto.h index 56561805..61a2b27b 100644 --- a/include/libssh/crypto.h +++ b/include/libssh/crypto.h @@ -115,9 +115,9 @@ struct ssh_cipher_struct { /* sets the new key for immediate use */ int (*set_encrypt_key)(struct ssh_cipher_struct *cipher, void *key, void *IV); int (*set_decrypt_key)(struct ssh_cipher_struct *cipher, void *key, void *IV); - void (*cbc_encrypt)(struct ssh_cipher_struct *cipher, void *in, void *out, + void (*encrypt)(struct ssh_cipher_struct *cipher, void *in, void *out, unsigned long len); - void (*cbc_decrypt)(struct ssh_cipher_struct *cipher, void *in, void *out, + void (*decrypt)(struct ssh_cipher_struct *cipher, void *in, void *out, unsigned long len); }; diff --git a/src/packet_crypt.c b/src/packet_crypt.c index 4f6ba176..914727e0 100644 --- a/src/packet_crypt.c +++ b/src/packet_crypt.c @@ -77,11 +77,10 @@ int packet_decrypt(ssh_session session, void *data,uint32_t len) { SAFE_FREE(out); return -1; } - crypto->cbc_decrypt(crypto,data,out,len); + crypto->decrypt(crypto,data,out,len); memcpy(data,out,len); - memset(out,0,len); - + BURN_BUFFER(out, len); SAFE_FREE(out); return 0; } @@ -136,10 +135,10 @@ unsigned char *packet_encrypt(ssh_session session, void *data, uint32_t len) { #endif } - crypto->cbc_encrypt(crypto, data, out, len); + crypto->encrypt(crypto, data, out, len); memcpy(data, out, len); - memset(out, 0, len); + BURN_BUFFER(out, len); SAFE_FREE(out); if (session->version == 2) {