- Changed interface for AES and Camellia setkey functions to indicate invalid key lengths.

diff --git a/library/aes.c b/library/aes.c
index 003325d..9047366 100644
--- a/library/aes.c
+++ b/library/aes.c
@@ -438,7 +438,7 @@
 /*
  * AES key schedule (encryption)
  */
-void aes_setkey_enc( aes_context *ctx, unsigned char *key, int keysize )
+int aes_setkey_enc( aes_context *ctx, unsigned char *key, int keysize )
 {
     int i;
     unsigned long *RK;
@@ -456,7 +456,7 @@
         case 128: ctx->nr = 10; break;
         case 192: ctx->nr = 12; break;
         case 256: ctx->nr = 14; break;
-        default : return;
+        default : return( POLARSSL_ERR_AES_INVALID_KEY_LENGTH );
     }
 
 #if defined(PADLOCK_ALIGN16)
@@ -536,24 +536,27 @@
 
             break;
     }
+
+    return( 0 );
 }
 
 /*
  * AES key schedule (decryption)
  */
-void aes_setkey_dec( aes_context *ctx, unsigned char *key, int keysize )
+int aes_setkey_dec( aes_context *ctx, unsigned char *key, int keysize )
 {
     int i, j;
     aes_context cty;
     unsigned long *RK;
     unsigned long *SK;
+    int ret;
 
     switch( keysize )
     {
         case 128: ctx->nr = 10; break;
         case 192: ctx->nr = 12; break;
         case 256: ctx->nr = 14; break;
-        default : return;
+        default : return( POLARSSL_ERR_AES_INVALID_KEY_LENGTH );
     }
 
 #if defined(PADLOCK_ALIGN16)
@@ -562,7 +565,10 @@
     ctx->rk = RK = ctx->buf;
 #endif
 
-    aes_setkey_enc( &cty, key, keysize );
+    ret = aes_setkey_enc( &cty, key, keysize );
+    if( ret != 0 )
+        return( ret );
+
     SK = cty.rk + cty.nr * 4;
 
     *RK++ = *SK++;
@@ -587,6 +593,8 @@
     *RK++ = *SK++;
 
     memset( &cty, 0, sizeof( aes_context ) );
+
+    return( 0 );
 }
 
 #define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3)     \