Fix RC4 key length in cipher

This commit is contained in:
Manuel Pégourié-Gonnard 2013-09-04 12:28:37 +02:00
parent 83f3fc0d77
commit ce4112538c
2 changed files with 6 additions and 2 deletions

View file

@ -55,7 +55,7 @@ arc4_context;
*
* \param ctx ARC4 context to be initialized
* \param key the secret key
* \param keylen length of the key
* \param keylen length of the key, in bytes
*/
void arc4_setup( arc4_context *ctx, const unsigned char *key, unsigned int keylen );

View file

@ -786,7 +786,11 @@ static int arc4_crypt_stream_wrap( void *ctx, size_t length,
static int arc4_setkey_wrap( void *ctx, const unsigned char *key,
unsigned int key_length )
{
arc4_setup( (arc4_context *) ctx, key, key_length );
/* we get key_length in bits, arc4 expects it in bytes */
if( key_length % 8 != 0)
return( POLARSSL_ERR_CIPHER_BAD_INPUT_DATA );
arc4_setup( (arc4_context *) ctx, key, key_length / 8 );
return( 0 );
}