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 ctx ARC4 context to be initialized
* \param key the secret key * \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 ); 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, static int arc4_setkey_wrap( void *ctx, const unsigned char *key,
unsigned int key_length ) 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 ); return( 0 );
} }