Compile SHA-2 code on systems without stdint.h

stdint.h is a C99-ism, which isn't available everywhere. The sha.h
header tells us we need 4 typedefs. Add these to qcryptographichash.cpp
before including sha.h and comment out the stdint.h include in sha.h.

Change-Id: I1ede9569fa7eaa84de3befeb3c58cc6a05aa522c
Reviewed-by: Oliver Wolff <oliver.wolff@nokia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
This commit is contained in:
Bradley T. Hughes 2012-02-28 09:25:20 +01:00 committed by Qt by Nokia
parent f3b68e352e
commit c7a059e376
2 changed files with 15 additions and 3 deletions

View File

@ -70,7 +70,8 @@
*
*/
#include <stdint.h>
// stdint.h include commented out by Nokia, it is not available on all platforms.
// #include <stdint.h>
/*
* If you do not have the ISO standard stdint.h header file, then you
* must typedef the following:

View File

@ -47,6 +47,19 @@
#include "../../3rdparty/md4/md4.cpp"
#include "../../3rdparty/sha1/sha1.cpp"
/*
These typedefs are needed by the RFC6234 code. Normally they would come
from from stdint.h, but since this header is not available on all platforms
(MSVC 2008, for example), we need to define them ourselves.
*/
typedef QT_PREPEND_NAMESPACE(quint64) uint64_t;
typedef QT_PREPEND_NAMESPACE(quint32) uint32_t;
typedef QT_PREPEND_NAMESPACE(quint8) uint8_t;
typedef QT_PREPEND_NAMESPACE(qint16) int_least16_t;
// Header from rfc6234 with 1 modification:
// sha1.h - commented out '#include <stdint.h>' on line 74
#include "../../3rdparty/rfc6234/sha.h"
/*
These 2 functions replace macros of the same name in sha224-256.c and
sha384-512.c. Originally, these macros relied on a global static 'addTemp'
@ -57,8 +70,6 @@
2. static variables are not thread-safe, we do not want multiple threads
computing a hash to corrupt one another
*/
// Header from rfc6234 without modifications
#include "../../3rdparty/rfc6234/sha.h"
static int SHA224_256AddLength(SHA256Context *context, unsigned int length);
static int SHA384_512AddLength(SHA512Context *context, unsigned int length);