Made Arcfour work
authorWerner Koch <wk@gnupg.org>
Thu, 2 Aug 2001 09:48:40 +0000 (09:48 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 2 Aug 2001 09:48:40 +0000 (09:48 +0000)
cipher/ChangeLog
cipher/arcfour.c

index fa42f7f..e96ce48 100644 (file)
@@ -1,3 +1,9 @@
+2001-08-02  Werner Koch  <wk@gnupg.org>
+
+       * arcfour.c (arcfour_setkey): Check the minimim keylength against
+       bytes and not bits.
+       (selftest): Must reset the key before decryption. 
+
 2001-05-31  Werner Koch  <wk@gnupg.org>
 
        * sha1.c (sha1_init): Made static.
index a915cb7..c19d282 100644 (file)
@@ -78,8 +78,8 @@ arcfour_setkey( ARCFOUR_context *ctx, const byte *key, unsigned int keylen )
     if( selftest_failed )
        return GCRYERR_SELFTEST;
 
-    if( keylen < 40 )
-       return GCRYERR_INV_KEYLEN;
+    if( keylen < 40/8 ) /* we want at least 40 bits */
+        return GCRYERR_INV_KEYLEN; 
 
     ctx->idx_i = ctx->idx_j = 0;
     for (i=0; i < 256; i++ )
@@ -118,6 +118,7 @@ selftest(void)
     encrypt_stream( &ctx, scratch, plaintext_1, sizeof(plaintext_1));
     if (memcmp (scratch, ciphertext_1, sizeof (ciphertext_1)))
         return "Arcfour encryption test 1 failed.";
+    arcfour_setkey( &ctx, key_1, sizeof(key_1));
     encrypt_stream(&ctx, scratch, scratch, sizeof(plaintext_1)); /* decrypt */
     if ( memcmp (scratch, plaintext_1, sizeof (plaintext_1)))
         return "Arcfour decryption test 1 failed.";
@@ -159,7 +160,3 @@ _gcry_arcfour_get_info( int algo, size_t *keylen, size_t *blocksize,
        return "ARCFOUR";
     return NULL;
 }
-
-
-
-