diff --git a/Mainpage.dox b/Mainpage.dox index 2bc6a15d..198b5874 100644 --- a/Mainpage.dox +++ b/Mainpage.dox @@ -46,11 +46,13 @@ - SHA-256 - SHA-384 - SHA-512 + - Whirlpool - Ciphers (QCA::Cipher) using - BlowFish - Triple DES - DES - AES (128, 192 and 256 bit) + - CAST5 (also known as CAST-128) - Message Authentication Code (QCA::MessageAuthenticationCode), using - HMAC with SHA-1 - HMAC with MD5 @@ -134,7 +136,7 @@ The architecture of %QCA is shown below: \image html qca-arch.png "QCA Architecture" - \image latex qca-arch.eps "QCA Architecture" + \image latex qca-arch.eps "QCA Architecture" width=\textwidth Application authors normally only need to use the User API. The provider API is available for plugin authors, but can also diff --git a/include/QtCrypto/qca_basic.h b/include/QtCrypto/qca_basic.h index a4034ace..d072f722 100644 --- a/include/QtCrypto/qca_basic.h +++ b/include/QtCrypto/qca_basic.h @@ -485,6 +485,17 @@ private: "Specifications for the Secure %Hash Standard", available from http://csrc.nist.gov/publications/. The label for SHA-512 is "sha512". + + The Whirlpool algorithm takes an arbitrary data stream, known as + the message (up to \f$2^{256}\f$ bits in length) and outputs a + condensed 512 bit (64 byte) representation of that data + stream, known as the message digest. The Whirlpool algorithm is + considered secure in that it is considered computationally + infeasible to find the message that produced the message + digest. For more information on Whirlpool, see + http://paginas.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html + or ISO/IEC 10118-3:2004. The label for Whirlpool is + "whirlpool". */ /** @@ -541,6 +552,7 @@ private: - AES128 - "aes128" - AES192 - "aes192" - AES256 - "aes256" + - CAST5 (CAST-128) - "cast5" When checking for the availability of a particular kind of cipher operation (e.g. AES128 in CBC mode with PKCS7 diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp index 6b03f910..6956e196 100644 --- a/plugins/qca-ossl/qca-ossl.cpp +++ b/plugins/qca-ossl/qca-ossl.cpp @@ -6347,6 +6347,8 @@ public: return KeyLength( 24, 24, 1); } else if (m_type.left(6) == "aes256") { return KeyLength( 32, 32, 1); + } else if (m_type.left(5) == "cast5") { + return KeyLength( 5, 16, 1); } else if (m_type.left(8) == "blowfish") { // Don't know - TODO return KeyLength( 1, 32, 1); @@ -6386,6 +6388,9 @@ static QStringList all_hash_types() #endif #ifdef SHA512_DIGEST_LENGTH list += "sha512"; +#endif +#ifdef OBJ_whirlpool + list += "whirlpool"; #endif return list; } @@ -6421,6 +6426,11 @@ static QStringList all_cipher_types() list += "des-cbc-pkcs7"; list += "des-cfb"; list += "des-ofb"; + list += "cast5-ecb"; + list += "cast5-cbc"; + list += "cast5-cbc-pkcs7"; + list += "cast5-cfb"; + list += "cast5-ofb"; return list; } @@ -6589,6 +6599,10 @@ public: #ifdef SHA512_DIGEST_LENGTH else if ( type == "sha512" ) return new opensslHashContext( EVP_sha512(), this, type); +#endif +#ifdef OBJ_whirlpool + else if ( type == "whirlpool" ) + return new opensslHashContext( EVP_whirlpool(), this, type); #endif else if ( type == "pbkdf1(sha1)" ) return new opensslPbkdf1Context( EVP_sha1(), this, type ); @@ -6672,6 +6686,16 @@ public: return new opensslCipherContext( EVP_des_cfb(), 0, this, type); else if ( type == "des-ofb" ) return new opensslCipherContext( EVP_des_ofb(), 0, this, type); + else if ( type == "cast5-ecb" ) + return new opensslCipherContext( EVP_cast5_ecb(), 0, this, type); + else if ( type == "cast5-cbc" ) + return new opensslCipherContext( EVP_cast5_cbc(), 0, this, type); + else if ( type == "cast5-cbc-pkcs7" ) + return new opensslCipherContext( EVP_cast5_cbc(), 1, this, type); + else if ( type == "cast5-cfb" ) + return new opensslCipherContext( EVP_cast5_cfb(), 0, this, type); + else if ( type == "cast5-ofb" ) + return new opensslCipherContext( EVP_cast5_ofb(), 0, this, type); else if ( type == "pkey" ) return new MyPKeyContext( this ); else if ( type == "dlgroup" )