Handle NULL as a stream cipher for more uniformity
diff --git a/library/cipher.c b/library/cipher.c
index 5a260a0..60e1d91 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -36,7 +36,7 @@
#include <stdlib.h>
-#if defined(POLARSSL_ARC4_C)
+#if defined(POLARSSL_ARC4_C) || defined(POLARSSL_CIPHER_NULL_CIPHER)
#define POLARSSL_CIPHER_MODE_STREAM
#endif
@@ -367,11 +367,6 @@
ctx->key_length = key_length;
ctx->operation = operation;
-#if defined(POLARSSL_CIPHER_NULL_CIPHER)
- if( ctx->cipher_info->mode == POLARSSL_MODE_NULL )
- return 0;
-#endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
-
/*
* For CFB and CTR mode always use the encryption key schedule
*/
@@ -421,19 +416,6 @@
return POLARSSL_ERR_CIPHER_BAD_INPUT_DATA;
}
-#if defined(POLARSSL_CIPHER_NULL_CIPHER)
- if( ctx->cipher_info->mode == POLARSSL_MODE_NULL )
- {
- *olen = ilen;
-
- if( output == input )
- return( 0 );
-
- memcpy( output, input, ilen );
- return 0;
- }
-#endif /* defined(POLARSSL_CIPHER_NULL_CIPHER) */
-
if( ctx->cipher_info->mode == POLARSSL_MODE_CBC )
{
/*
@@ -725,8 +707,7 @@
if( POLARSSL_MODE_CFB == ctx->cipher_info->mode ||
POLARSSL_MODE_CTR == ctx->cipher_info->mode ||
- POLARSSL_MODE_STREAM == ctx->cipher_info->mode ||
- POLARSSL_MODE_NULL == ctx->cipher_info->mode )
+ POLARSSL_MODE_STREAM == ctx->cipher_info->mode )
{
return 0;
}
diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c
index 7a4ff75..562f8b3 100644
--- a/library/cipher_wrap.c
+++ b/library/cipher_wrap.c
@@ -645,12 +645,7 @@
#endif
}
-static int blowfish_setkey_dec_wrap( void *ctx, const unsigned char *key, unsigned int key_length )
-{
- return blowfish_setkey( (blowfish_context *) ctx, key, key_length );
-}
-
-static int blowfish_setkey_enc_wrap( void *ctx, const unsigned char *key, unsigned int key_length )
+static int blowfish_setkey_wrap( void *ctx, const unsigned char *key, unsigned int key_length )
{
return blowfish_setkey( (blowfish_context *) ctx, key, key_length );
}
@@ -671,8 +666,8 @@
blowfish_crypt_cfb64_wrap,
blowfish_crypt_ctr_wrap,
NULL,
- blowfish_setkey_enc_wrap,
- blowfish_setkey_dec_wrap,
+ blowfish_setkey_wrap,
+ blowfish_setkey_wrap,
blowfish_ctx_alloc,
blowfish_ctx_free
};
@@ -761,12 +756,30 @@
#endif /* POLARSSL_ARC4_C */
#if defined(POLARSSL_CIPHER_NULL_CIPHER)
+static int null_crypt_stream( void *ctx, size_t length,
+ const unsigned char *input,
+ unsigned char *output )
+{
+ ((void) ctx);
+ memmove( output, input, length );
+ return( 0 );
+}
+
+static int null_setkey( void *ctx, const unsigned char *key,
+ unsigned int key_length )
+{
+ ((void) ctx);
+ ((void) key);
+ ((void) key_length);
+
+ return( 0 );
+}
+
static void * null_ctx_alloc( void )
{
return (void *) 1;
}
-
static void null_ctx_free( void *ctx )
{
((void) ctx);
@@ -777,16 +790,16 @@
NULL,
NULL,
NULL,
- NULL,
- NULL,
- NULL,
+ null_crypt_stream,
+ null_setkey,
+ null_setkey,
null_ctx_alloc,
null_ctx_free
};
const cipher_info_t null_cipher_info = {
POLARSSL_CIPHER_NULL,
- POLARSSL_MODE_NULL,
+ POLARSSL_MODE_STREAM,
0,
"NULL",
0,