fixed setting of variable key length
authorAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 14 May 2009 11:53:16 +0000 (13:53 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 14 May 2009 11:55:56 +0000 (13:55 +0200)
src/libstrongswan/plugins/openssl/openssl_crypter.c

index 86e10f6..7f48f10 100644 (file)
@@ -131,10 +131,12 @@ static void crypt(private_openssl_crypter_t *this, chunk_t data,
        }
        EVP_CIPHER_CTX ctx;
        EVP_CIPHER_CTX_init(&ctx);
-       EVP_CipherInit_ex(&ctx, this->cipher, NULL, this->key.ptr, iv.ptr, enc);
-       EVP_CIPHER_CTX_set_padding(&ctx, 0); /* disable padding */
+       EVP_CipherInit_ex(&ctx, this->cipher, NULL, NULL, NULL, enc);
+       EVP_CIPHER_CTX_set_padding(&ctx, 0);            /* disable padding */
+       EVP_CIPHER_CTX_set_key_length(&ctx, this->key.len);
+       EVP_CipherInit_ex(&ctx, NULL, NULL, this->key.ptr, iv.ptr, enc);
        EVP_CipherUpdate(&ctx, out, &len, data.ptr, data.len);
-       EVP_CipherFinal_ex(&ctx, out, &len); /* since padding is disabled this does nothing */
+       EVP_CipherFinal_ex(&ctx, out + len, &len); /* since padding is disabled this does nothing */
        EVP_CIPHER_CTX_cleanup(&ctx);
 }