CVSROOT: /cvs Module name: src Changes by: js...@cvs.openbsd.org 2018/09/05 10:48:11
Modified files: lib/libssl : ssl_lib.c ssl_locl.h t1_enc.c Log message: Correctly clear the current cipher state, when changing cipher state. When a renegotiation results in a change of cipher suite, the renegotation would fail if it switched from AEAD to non-AEAD or vice versa. This is due to the fact that the previous EVP_AEAD or EVP_CIPHER state remained, resulting in incorrect logic that caused MAC failures. Rename ssl_clear_cipher_ctx() to ssl_clear_cipher_state() and split it into separate read/write components, then call these functions from the appropriate places when a ChangeCipherSpec message is being processed. Also, remove the separate ssl_clear_hash_ctx() calls and fold these into the ssl_clear_cipher_{read,write}_state() functions. Issue reported by Bernard Spil, who also tested this diff. ok tb@