Am 03.02.13 14:55, schrieb Jan Just Keijser:
> Arne Schwabe wrote:
>> Am 16.08.12 10:38, schrieb Heiko Hund:
>>  
>>> cipher_ctx_final() only returns an outlen in CBC mode. If CFB or OFB
>>> are used the assertion outlen == iv_len is always false.
>>>
>>> There's no CBC mode defined for the GOST 28147-89 block cipher. Hence
>>> this patch is needed for it to work. It's needed for other ciphers like
>>> BF-CFB as well, though.
>>>
>>> Signed-off-by: Heiko Hund <heiko.h...@sophos.com>
>>> ---
>>>  src/openvpn/crypto.c |    2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/src/openvpn/crypto.c b/src/openvpn/crypto.c
>>> index ac2eecd..2f67e5e 100644
>>> --- a/src/openvpn/crypto.c
>>> +++ b/src/openvpn/crypto.c
>>> @@ -153,7 +153,7 @@ openvpn_encrypt (struct buffer *buf, struct
>>> buffer work,
>>>        /* Flush the encryption buffer */
>>>        ASSERT(cipher_ctx_final(ctx->cipher, BPTR (&work) + outlen,
>>> &outlen));
>>>        work.len += outlen;
>>> -      ASSERT (outlen == iv_size);
>>> +      ASSERT (mode != OPENVPN_MODE_CBC || outlen == iv_size);
>>>  
>>>        /* prepend the IV to the ciphertext */
>>>        if (opt->flags & CO_USE_IV)
>>>     
>>
>> I have a user of my app that also tripped over this asssert line:
>>
>>   
> eeeehhh - removing the assert is nice, but do the other ciphers
> actually *WORK* after that? does the test
>  openvpn --test-crypto
> pass after that? I remember commenting out the assert for a few
> elliptic curve ciphers, but openvpn was still not able to
> encrypt/decrypt  traffic successfully

I have no idea of the crypto involved. But if there is a known class of
cryptos that fails in this "obscure" way we should exit with error much
earlier.

Arne

Reply via email to