diff --git a/3rdparty/sha2/CMakeLists.txt b/3rdparty/sha2/CMakeLists.txt index 9befb1ecd..3a5da0a2f 100644 --- a/3rdparty/sha2/CMakeLists.txt +++ b/3rdparty/sha2/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 2.6) -add_library(sha2 STATIC sha2.c) +add_library(sha2 STATIC sha2.cpp) diff --git a/3rdparty/sha2/sha2.c b/3rdparty/sha2/sha2.cpp similarity index 99% rename from 3rdparty/sha2/sha2.c rename to 3rdparty/sha2/sha2.cpp index 7ad5ea666..36be426a9 100644 --- a/3rdparty/sha2/sha2.c +++ b/3rdparty/sha2/sha2.cpp @@ -92,6 +92,8 @@ #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN #endif +namespace clementine_sha2 { + /* * Define the followingsha2_* types to types of the correct length on * the native archtecture. Most BSD systems and Linux define u_intXX_t @@ -1066,3 +1068,4 @@ char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_S return SHA384_End(&context, digest); } +} // namespace clementine_sha2 diff --git a/3rdparty/sha2/sha2.h b/3rdparty/sha2/sha2.h index e8413e549..6f2335511 100644 --- a/3rdparty/sha2/sha2.h +++ b/3rdparty/sha2/sha2.h @@ -32,13 +32,8 @@ * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ */ -#ifndef __SHA2_H__ -#define __SHA2_H__ - -#ifdef __cplusplus -extern "C" { -#endif - +#ifndef __CLEMENTINE_SHA2_H__ +#define __CLEMENTINE_SHA2_H__ /* * Import u_intXX_t size_t type definitions from system headers. You @@ -47,23 +42,18 @@ extern "C" { */ #include -#ifdef SHA2_USE_INTTYPES_H - -#include - -#endif /* SHA2_USE_INTTYPES_H */ - +namespace clementine_sha2 { /*** SHA-256/384/512 Various Length Definitions ***********************/ -#define SHA256_BLOCK_LENGTH 64 -#define SHA256_DIGEST_LENGTH 32 -#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) -#define SHA384_BLOCK_LENGTH 128 -#define SHA384_DIGEST_LENGTH 48 -#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) -#define SHA512_BLOCK_LENGTH 128 -#define SHA512_DIGEST_LENGTH 64 -#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) +static const int SHA256_BLOCK_LENGTH = 64; +static const int SHA256_DIGEST_LENGTH = 32; +static const int SHA256_DIGEST_STRING_LENGTH = (SHA256_DIGEST_LENGTH * 2 + 1); +static const int SHA384_BLOCK_LENGTH = 128; +static const int SHA384_DIGEST_LENGTH = 48; +static const int SHA384_DIGEST_STRING_LENGTH = (SHA384_DIGEST_LENGTH * 2 + 1); +static const int SHA512_BLOCK_LENGTH = 128; +static const int SHA512_DIGEST_LENGTH = 64; +static const int SHA512_DIGEST_STRING_LENGTH = (SHA512_DIGEST_LENGTH * 2 + 1); /*** SHA-256/384/512 Context Structures *******************************/ @@ -76,36 +66,6 @@ typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ #endif -/* - * Most BSD systems already define u_intXX_t types, as does Linux. - * Some systems, however, like Compaq's Tru64 Unix instead can use - * uintXX_t types defined by very recent ANSI C standards and included - * in the file: - * - * #include - * - * If you choose to use then please define: - * - * #define SHA2_USE_INTTYPES_H - * - * Or on the command line during compile: - * - * cc -DSHA2_USE_INTTYPES_H ... - */ -#ifdef SHA2_USE_INTTYPES_H - -typedef struct _SHA256_CTX { - uint32_t state[8]; - uint64_t bitcount; - uint8_t buffer[SHA256_BLOCK_LENGTH]; -} SHA256_CTX; -typedef struct _SHA512_CTX { - uint64_t state[8]; - uint64_t bitcount[2]; - uint8_t buffer[SHA512_BLOCK_LENGTH]; -} SHA512_CTX; - -#else /* SHA2_USE_INTTYPES_H */ typedef struct _SHA256_CTX { u_int32_t state[8]; @@ -118,35 +78,9 @@ typedef struct _SHA512_CTX { u_int8_t buffer[SHA512_BLOCK_LENGTH]; } SHA512_CTX; -#endif /* SHA2_USE_INTTYPES_H */ - typedef SHA512_CTX SHA384_CTX; -/*** SHA-256/384/512 Function Prototypes ******************************/ -#ifndef NOPROTO -#ifdef SHA2_USE_INTTYPES_H - -void SHA256_Init(SHA256_CTX *); -void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); -void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); -char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); -char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); - -void SHA384_Init(SHA384_CTX*); -void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); -void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); -char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); -char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); - -void SHA512_Init(SHA512_CTX*); -void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); -void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); -char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); -char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); - -#else /* SHA2_USE_INTTYPES_H */ - void SHA256_Init(SHA256_CTX *); void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); @@ -165,33 +99,6 @@ void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); -#endif /* SHA2_USE_INTTYPES_H */ - -#else /* NOPROTO */ - -void SHA256_Init(); -void SHA256_Update(); -void SHA256_Final(); -char* SHA256_End(); -char* SHA256_Data(); - -void SHA384_Init(); -void SHA384_Update(); -void SHA384_Final(); -char* SHA384_End(); -char* SHA384_Data(); - -void SHA512_Init(); -void SHA512_Update(); -void SHA512_Final(); -char* SHA512_End(); -char* SHA512_Data(); - -#endif /* NOPROTO */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __SHA2_H__ */ +} // namespace clementine_sha2 +#endif /* __CLEMENTINE_SHA2_H__ */ diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 4c89139bb..0f7dc6373 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -445,13 +445,15 @@ QByteArray HmacSha1(const QByteArray& key, const QByteArray& data) { } QByteArray Sha256(const QByteArray& data) { - SHA256_CTX context; - SHA256_Init(&context); - SHA256_Update(&context, reinterpret_cast(data.constData()), - data.length()); + clementine_sha2::SHA256_CTX context; + clementine_sha2::SHA256_Init(&context); + clementine_sha2::SHA256_Update( + &context, reinterpret_cast(data.constData()), + data.length()); - QByteArray ret(SHA256_DIGEST_LENGTH, '\0'); - SHA256_Final(reinterpret_cast(ret.data()), &context); + QByteArray ret(clementine_sha2::SHA256_DIGEST_LENGTH, '\0'); + clementine_sha2::SHA256_Final( + reinterpret_cast(ret.data()), &context); return ret; }