From 5e18aed4362568644153d7dadd5f76560f4403f9 Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Tue, 15 Nov 2011 15:38:45 +0000 Subject: [PATCH] - Changed the defined key-length of DES ciphers in cipher.h to include the parity bits, to prevent mistakes in copying data. (Closes ticket #33) --- ChangeLog | 2 ++ include/polarssl/cipher.h | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 077eac4f6..1355b38fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,8 @@ Changes * Added a separate CRL entry extension parsing function * Separated the ASN.1 parsing code from the X.509 specific parsing code. So now there is a module that is controlled with POLARSSL_ASN1_PARSE_C. + * Changed the defined key-length of DES ciphers in cipher.h to include the + parity bits, to prevent mistakes in copying data. (Closes ticket #33) Bugfix * Fixed faulty HMAC-MD2 implementation. Found by dibac. (Closes diff --git a/include/polarssl/cipher.h b/include/polarssl/cipher.h index 6a0173220..8c94dd5f9 100644 --- a/include/polarssl/cipher.h +++ b/include/polarssl/cipher.h @@ -96,12 +96,12 @@ typedef enum { enum { /** Undefined key length */ POLARSSL_KEY_LENGTH_NONE = 0, - /** Key length, in bits, for DES keys */ - POLARSSL_KEY_LENGTH_DES = 56, - /** Key length, in bits, for DES in two key EDE */ - POLARSSL_KEY_LENGTH_DES_EDE = 112, - /** Key length, in bits, for DES in three-key EDE */ - POLARSSL_KEY_LENGTH_DES_EDE3 = 168, + /** Key length, in bits (including parity), for DES keys */ + POLARSSL_KEY_LENGTH_DES = 64, + /** Key length, in bits (including parity), for DES in two key EDE */ + POLARSSL_KEY_LENGTH_DES_EDE = 128, + /** Key length, in bits (including parity), for DES in three-key EDE */ + POLARSSL_KEY_LENGTH_DES_EDE3 = 192, /** Maximum length of any IV, in bytes */ POLARSSL_MAX_IV_LENGTH = 16, }; @@ -150,7 +150,8 @@ typedef struct { /** Cipher mode (e.g. POLARSSL_MODE_CBC) */ cipher_mode_t mode; - /** Cipher key length, in bits (default length for variable sized ciphers) */ + /** Cipher key length, in bits (default length for variable sized ciphers) + * (Includes parity bits for ciphers like DES) */ unsigned int key_length; /** Name of the cipher */