fix: use EVP_DecryptUpdate while decrypting
authorAndreas Rammhold <andreas@rammhold.de>
Thu, 28 Feb 2019 19:38:14 +0000 (20:38 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 28 Feb 2019 21:12:07 +0000 (22:12 +0100)
With OpenSSL versions 1.0.2r & 1.1.1b there were changes in regards to
how OpenSSL treats misuse of Encrypt/Decrypt EVP methods in the opposite
case. E.g. using the encrypt methods in a decrypt context. OpenSSL now
returns an error in these situations. [1]
Since tinc used the EVP_EncryptUpdate function in the cipher_decrypt
function the new sanity check was triggered causing tinc to be unusable
with said OpenSSL versions.

[1] https://github.com/openssl/openssl/pull/7852

src/openssl/cipher.c

index d51ec0d5cedd696b75a2d47cdad8472163d08642..974fbeb2e9966e1d189fa6c7737aa63aa1e1a025 100644 (file)
@@ -189,7 +189,7 @@ bool cipher_decrypt(cipher_t *cipher, const void *indata, size_t inlen, void *ou
        } else {
                int len;
 
-               if(EVP_EncryptUpdate(cipher->ctx, outdata, &len, indata, inlen)) {
+               if(EVP_DecryptUpdate(cipher->ctx, outdata, &len, indata, inlen)) {
                        if(outlen) {
                                *outlen = len;
                        }