Better checking on cipher_info_from_values()
diff --git a/library/cipher.c b/library/cipher.c
index b23969c..8fded81 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -494,7 +494,7 @@
#endif
#if defined(POLARSSL_DES_C)
- if( cipher_id == POLARSSL_CIPHER_ID_DES )
+ if( cipher_id == POLARSSL_CIPHER_ID_DES && key_length == 64 )
{
if( mode == POLARSSL_MODE_ECB )
return &des_ecb_info;
@@ -524,13 +524,13 @@
#endif
#if defined(POLARSSL_ARC4_C)
- if( cipher_id == POLARSSL_CIPHER_ID_ARC4 )
- if( mode == POLARSSL_MODE_STREAM )
+ if( cipher_id == POLARSSL_CIPHER_ID_ARC4 &&
+ key_length == 128 && mode == POLARSSL_MODE_STREAM )
return &arc4_128_info;
#endif
#if defined(POLARSSL_BLOWFISH_C)
- if( cipher_id == POLARSSL_CIPHER_ID_BLOWFISH )
+ if( cipher_id == POLARSSL_CIPHER_ID_BLOWFISH && key_length == 128 )
{
if( mode == POLARSSL_MODE_ECB )
return &blowfish_ecb_info;