Added SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 support
This commit is contained in:
parent
d0bc1d908a
commit
68b238fc74
|
|
@ -1,6 +1,8 @@
|
||||||
project "NazaraNetwork"
|
project "NazaraNetwork"
|
||||||
|
|
||||||
links "ws2_32"
|
if (os.is("windows")) then
|
||||||
|
links "ws2_32"
|
||||||
|
end
|
||||||
|
|
||||||
files
|
files
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include <Nazara/Core/Config.hpp>
|
#include <Nazara/Core/Config.hpp>
|
||||||
#if NAZARA_CORE_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG)
|
#if NAZARA_CORE_MEMORYLEAKTRACKER || defined(NAZARA_DEBUG)
|
||||||
#include <Nazara/Core/Debug/MemoryLeakTracker.hpp>
|
#include <Nazara/Core/Debug/MemoryLeakTracker.hpp>
|
||||||
|
#include <Nazara/Core/Error.hpp>
|
||||||
|
|
||||||
#define delete NzMemoryManager::NextFree(__FILE__, __LINE__), delete
|
#define delete NzMemoryManager::NextFree(__FILE__, __LINE__), delete
|
||||||
#define new new(__FILE__, __LINE__)
|
#define new new(__FILE__, __LINE__)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
#include <Nazara/Core/String.hpp>
|
#include <Nazara/Core/String.hpp>
|
||||||
#include <Nazara/Utility/NonCopyable.hpp>
|
#include <Nazara/Utility/NonCopyable.hpp>
|
||||||
|
|
||||||
#define NAZARA_DYNLIB
|
#define NAZARA_CLASS_DYNLIB
|
||||||
#include <Nazara/Core/ThreadSafety.hpp>
|
#include <Nazara/Core/ThreadSafety.hpp>
|
||||||
|
|
||||||
class NzDynLibImpl;
|
class NzDynLibImpl;
|
||||||
|
|
@ -40,6 +40,6 @@ class NzDynLib : NzNonCopyable
|
||||||
NzDynLibImpl* m_impl;
|
NzDynLibImpl* m_impl;
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef NAZARA_DYNLIB
|
#undef NAZARA_CLASS_DYNLIB
|
||||||
|
|
||||||
#endif // NAZARA_DYNLIB_HPP
|
#endif // NAZARA_DYNLIB_HPP
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@
|
||||||
// This file is part of the "Nazara Engine".
|
// This file is part of the "Nazara Engine".
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
inline void NzByteSwap(void* buffer, unsigned int size)
|
inline void NzByteSwap(void* buffer, unsigned int size)
|
||||||
{
|
{
|
||||||
nzUInt8* bytes = reinterpret_cast<nzUInt8*>(buffer);
|
nzUInt8* bytes = reinterpret_cast<nzUInt8*>(buffer);
|
||||||
|
|
@ -36,3 +39,5 @@ inline nzEndianness NzGetPlatformEndianness()
|
||||||
return endianness;
|
return endianness;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <Nazara/Core/DebugOff.hpp>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA1_HPP
|
||||||
|
#define NAZARA_HASH_SHA1_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/HashDigest.hpp>
|
||||||
|
#include <Nazara/Core/HashImpl.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX;
|
||||||
|
|
||||||
|
class NAZARA_API NzHashSHA1 : public NzHashImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzHashSHA1();
|
||||||
|
virtual ~NzHashSHA1();
|
||||||
|
|
||||||
|
void Append(const nzUInt8* data, unsigned int len);
|
||||||
|
void Begin();
|
||||||
|
NzHashDigest End();
|
||||||
|
|
||||||
|
static unsigned int GetDigestLength();
|
||||||
|
static NzString GetHashName();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SHA_CTX* m_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_HASH_SHA1_HPP
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA224_HPP
|
||||||
|
#define NAZARA_HASH_SHA224_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/HashDigest.hpp>
|
||||||
|
#include <Nazara/Core/HashImpl.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX;
|
||||||
|
|
||||||
|
class NAZARA_API NzHashSHA224 : public NzHashImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzHashSHA224();
|
||||||
|
virtual ~NzHashSHA224();
|
||||||
|
|
||||||
|
void Append(const nzUInt8* data, unsigned int len);
|
||||||
|
void Begin();
|
||||||
|
NzHashDigest End();
|
||||||
|
|
||||||
|
static unsigned int GetDigestLength();
|
||||||
|
static NzString GetHashName();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SHA_CTX* m_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_HASH_SHA224_HPP
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA256_HPP
|
||||||
|
#define NAZARA_HASH_SHA256_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/HashDigest.hpp>
|
||||||
|
#include <Nazara/Core/HashImpl.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX;
|
||||||
|
|
||||||
|
class NAZARA_API NzHashSHA256 : public NzHashImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzHashSHA256();
|
||||||
|
virtual ~NzHashSHA256();
|
||||||
|
|
||||||
|
void Append(const nzUInt8* data, unsigned int len);
|
||||||
|
void Begin();
|
||||||
|
NzHashDigest End();
|
||||||
|
|
||||||
|
static unsigned int GetDigestLength();
|
||||||
|
static NzString GetHashName();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SHA_CTX* m_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_HASH_SHA256_HPP
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA384_HPP
|
||||||
|
#define NAZARA_HASH_SHA384_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/HashDigest.hpp>
|
||||||
|
#include <Nazara/Core/HashImpl.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX;
|
||||||
|
|
||||||
|
class NAZARA_API NzHashSHA384 : public NzHashImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzHashSHA384();
|
||||||
|
virtual ~NzHashSHA384();
|
||||||
|
|
||||||
|
void Append(const nzUInt8* data, unsigned int len);
|
||||||
|
void Begin();
|
||||||
|
NzHashDigest End();
|
||||||
|
|
||||||
|
static unsigned int GetDigestLength();
|
||||||
|
static NzString GetHashName();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SHA_CTX* m_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_HASH_SHA384_HPP
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA512_HPP
|
||||||
|
#define NAZARA_HASH_SHA512_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/HashDigest.hpp>
|
||||||
|
#include <Nazara/Core/HashImpl.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX;
|
||||||
|
|
||||||
|
class NAZARA_API NzHashSHA512 : public NzHashImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NzHashSHA512();
|
||||||
|
virtual ~NzHashSHA512();
|
||||||
|
|
||||||
|
void Append(const nzUInt8* data, unsigned int len);
|
||||||
|
void Begin();
|
||||||
|
NzHashDigest End();
|
||||||
|
|
||||||
|
static unsigned int GetDigestLength();
|
||||||
|
static NzString GetHashName();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SHA_CTX* m_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_HASH_SHA512_HPP
|
||||||
|
|
@ -15,7 +15,7 @@ class NAZARA_API NzHashDigest
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NzHashDigest();
|
NzHashDigest();
|
||||||
NzHashDigest(NzString hashName, const nzUInt8* digest, unsigned int length);
|
NzHashDigest(const NzString& hashName, const nzUInt8* digest, unsigned int length);
|
||||||
NzHashDigest(const NzHashDigest& rhs);
|
NzHashDigest(const NzHashDigest& rhs);
|
||||||
NzHashDigest(NzHashDigest&& rhs);
|
NzHashDigest(NzHashDigest&& rhs);
|
||||||
~NzHashDigest();
|
~NzHashDigest();
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,11 @@ enum nzHash
|
||||||
nzHash_CRC32,
|
nzHash_CRC32,
|
||||||
nzHash_Fletcher16,
|
nzHash_Fletcher16,
|
||||||
nzHash_MD5,
|
nzHash_MD5,
|
||||||
|
nzHash_SHA1,
|
||||||
|
nzHash_SHA224,
|
||||||
|
nzHash_SHA256,
|
||||||
|
nzHash_SHA384,
|
||||||
|
nzHash_SHA512,
|
||||||
nzHash_Whirlpool
|
nzHash_Whirlpool
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -27,7 +32,7 @@ class NAZARA_API NzHashable
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NzHashable() = default;
|
NzHashable() = default;
|
||||||
virtual ~NzHashable() {}
|
virtual ~NzHashable();
|
||||||
|
|
||||||
NzHashDigest GetHash(nzHash hash) const;
|
NzHashDigest GetHash(nzHash hash) const;
|
||||||
NzHashDigest GetHash(NzHashImpl* impl) const;
|
NzHashDigest GetHash(NzHashImpl* impl) const;
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,10 @@
|
||||||
#error No implementation for this platform
|
#error No implementation for this platform
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define NAZARA_CLASS_DYNLIB
|
||||||
#include <Nazara/Core/ThreadSafety.hpp>
|
#include <Nazara/Core/ThreadSafety.hpp>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
#define NAZARA_DYNLIB_CPP
|
|
||||||
|
|
||||||
NzDynLib::NzDynLib(const NzString& libraryPath) :
|
NzDynLib::NzDynLib(const NzString& libraryPath) :
|
||||||
m_path(libraryPath),
|
m_path(libraryPath),
|
||||||
m_impl(nullptr)
|
m_impl(nullptr)
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,15 @@
|
||||||
// This file is part of the "Nazara Engine".
|
// This file is part of the "Nazara Engine".
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#define NAZARA_HASH_CPP
|
|
||||||
|
|
||||||
#include <Nazara/Core/Hash.hpp>
|
#include <Nazara/Core/Hash.hpp>
|
||||||
#include <Nazara/Core/Hash/CRC32.hpp>
|
#include <Nazara/Core/Hash/CRC32.hpp>
|
||||||
#include <Nazara/Core/Hash/Fletcher16.hpp>
|
#include <Nazara/Core/Hash/Fletcher16.hpp>
|
||||||
#include <Nazara/Core/Hash/MD5.hpp>
|
#include <Nazara/Core/Hash/MD5.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA1.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA224.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA256.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA384.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA512.hpp>
|
||||||
#include <Nazara/Core/Hash/Whirlpool.hpp>
|
#include <Nazara/Core/Hash/Whirlpool.hpp>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
|
@ -27,6 +30,26 @@ NzHash::NzHash(nzHash hash)
|
||||||
m_impl = new NzHashMD5;
|
m_impl = new NzHashMD5;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case nzHash_SHA1:
|
||||||
|
m_impl = new NzHashSHA1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case nzHash_SHA224:
|
||||||
|
m_impl = new NzHashSHA224;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case nzHash_SHA256:
|
||||||
|
m_impl = new NzHashSHA256;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case nzHash_SHA384:
|
||||||
|
m_impl = new NzHashSHA384;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case nzHash_SHA512:
|
||||||
|
m_impl = new NzHashSHA512;
|
||||||
|
break;
|
||||||
|
|
||||||
case nzHash_Whirlpool:
|
case nzHash_Whirlpool:
|
||||||
m_impl = new NzHashWhirlpool;
|
m_impl = new NzHashWhirlpool;
|
||||||
break;
|
break;
|
||||||
|
|
@ -48,7 +71,7 @@ NzHashDigest NzHash::Hash(const NzHashable& hashable)
|
||||||
m_impl->Begin();
|
m_impl->Begin();
|
||||||
if (hashable.FillHash(m_impl))
|
if (hashable.FillHash(m_impl))
|
||||||
return m_impl->End();
|
return m_impl->End();
|
||||||
else
|
else // Erreur
|
||||||
{
|
{
|
||||||
m_impl->End();
|
m_impl->End();
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,107 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FILE: sha2.h
|
||||||
|
* AUTHOR: Aaron D. Gifford
|
||||||
|
* http://www.aarongifford.com/computers/sha.html
|
||||||
|
*
|
||||||
|
* Copyright (c) 2000-2003, Aaron D. Gifford
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. Neither the name of the copyright holder nor the names of contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
|
||||||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $Id: sha2.h,v 1.4 2004/01/07 19:06:18 adg Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_HASH_SHA2_INTERNAL_HPP
|
||||||
|
#define NAZARA_HASH_SHA2_INTERNAL_HPP
|
||||||
|
|
||||||
|
/* Digest lengths for SHA-1/224/256/384/512 */
|
||||||
|
#define SHA1_DIGEST_LENGTH 20
|
||||||
|
#define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1)
|
||||||
|
#define SHA224_DIGEST_LENGTH 28
|
||||||
|
#define SHA224_DIGEST_STRING_LENGTH (SHA224_DIGEST_LENGTH * 2 + 1)
|
||||||
|
#define SHA256_DIGEST_LENGTH 32
|
||||||
|
#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1)
|
||||||
|
#define SHA384_DIGEST_LENGTH 48
|
||||||
|
#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1)
|
||||||
|
#define SHA512_DIGEST_LENGTH 64
|
||||||
|
#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
|
||||||
|
|
||||||
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
|
||||||
|
union SHA_CTX
|
||||||
|
{
|
||||||
|
/* SHA-1 uses this part of the union: */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
nzUInt32 state[5];
|
||||||
|
nzUInt64 bitcount;
|
||||||
|
nzUInt8 buffer[64];
|
||||||
|
} s1;
|
||||||
|
|
||||||
|
/* SHA-224 and SHA-256 use this part of the union: */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
nzUInt32 state[8];
|
||||||
|
nzUInt64 bitcount;
|
||||||
|
nzUInt8 buffer[64];
|
||||||
|
} s256;
|
||||||
|
|
||||||
|
/* SHA-384 and SHA-512 use this part of the union: */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
nzUInt64 state[8];
|
||||||
|
nzUInt64 bitcount[2];
|
||||||
|
nzUInt8 buffer[128];
|
||||||
|
} s512;
|
||||||
|
};
|
||||||
|
|
||||||
|
void SHA1_Init(SHA_CTX*);
|
||||||
|
void SHA1_Update(SHA_CTX*, const nzUInt8*, std::size_t);
|
||||||
|
void SHA1_End(SHA_CTX*, nzUInt8*);
|
||||||
|
|
||||||
|
void SHA224_Init(SHA_CTX*);
|
||||||
|
void SHA224_Update(SHA_CTX*, const nzUInt8*, std::size_t);
|
||||||
|
void SHA224_End(SHA_CTX*, nzUInt8*);
|
||||||
|
|
||||||
|
void SHA256_Init(SHA_CTX*);
|
||||||
|
void SHA256_Update(SHA_CTX*, const nzUInt8*, std::size_t);
|
||||||
|
void SHA256_End(SHA_CTX*, nzUInt8*);
|
||||||
|
|
||||||
|
void SHA384_Init(SHA_CTX*);
|
||||||
|
void SHA384_Update(SHA_CTX*, const nzUInt8*, std::size_t);
|
||||||
|
void SHA384_End(SHA_CTX*, nzUInt8*);
|
||||||
|
|
||||||
|
void SHA512_Init(SHA_CTX*);
|
||||||
|
void SHA512_Update(SHA_CTX*, const nzUInt8*, std::size_t);
|
||||||
|
void SHA512_End(SHA_CTX*, nzUInt8*);
|
||||||
|
|
||||||
|
#endif /* NAZARA_HASH_SHA2_INTERNAL_HPP */
|
||||||
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Core/Hash/SHA1.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA/Internal.hpp>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashSHA1::NzHashSHA1()
|
||||||
|
{
|
||||||
|
m_state = new SHA_CTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashSHA1::~NzHashSHA1()
|
||||||
|
{
|
||||||
|
delete m_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA1::Append(const nzUInt8* data, unsigned int len)
|
||||||
|
{
|
||||||
|
SHA1_Update(m_state, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA1::Begin()
|
||||||
|
{
|
||||||
|
SHA1_Init(m_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashDigest NzHashSHA1::End()
|
||||||
|
{
|
||||||
|
nzUInt8 digest[SHA1_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
SHA1_End(m_state, digest);
|
||||||
|
|
||||||
|
return NzHashDigest(GetHashName(), digest, SHA1_DIGEST_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int NzHashSHA1::GetDigestLength()
|
||||||
|
{
|
||||||
|
return SHA1_DIGEST_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzString NzHashSHA1::GetHashName()
|
||||||
|
{
|
||||||
|
static NzString hashName = "SHA1";
|
||||||
|
return hashName;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Core/Hash/SHA224.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA/Internal.hpp>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashSHA224::NzHashSHA224()
|
||||||
|
{
|
||||||
|
m_state = new SHA_CTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashSHA224::~NzHashSHA224()
|
||||||
|
{
|
||||||
|
delete m_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA224::Append(const nzUInt8* data, unsigned int len)
|
||||||
|
{
|
||||||
|
SHA224_Update(m_state, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA224::Begin()
|
||||||
|
{
|
||||||
|
SHA224_Init(m_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashDigest NzHashSHA224::End()
|
||||||
|
{
|
||||||
|
nzUInt8 digest[SHA224_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
SHA224_End(m_state, digest);
|
||||||
|
|
||||||
|
return NzHashDigest(GetHashName(), digest, SHA224_DIGEST_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int NzHashSHA224::GetDigestLength()
|
||||||
|
{
|
||||||
|
return SHA224_DIGEST_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzString NzHashSHA224::GetHashName()
|
||||||
|
{
|
||||||
|
static NzString hashName = "SHA224";
|
||||||
|
return hashName;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Core/Hash/SHA256.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA/Internal.hpp>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashSHA256::NzHashSHA256()
|
||||||
|
{
|
||||||
|
m_state = new SHA_CTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashSHA256::~NzHashSHA256()
|
||||||
|
{
|
||||||
|
delete m_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA256::Append(const nzUInt8* data, unsigned int len)
|
||||||
|
{
|
||||||
|
SHA256_Update(m_state, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA256::Begin()
|
||||||
|
{
|
||||||
|
SHA256_Init(m_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashDigest NzHashSHA256::End()
|
||||||
|
{
|
||||||
|
nzUInt8 digest[SHA256_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
SHA256_End(m_state, digest);
|
||||||
|
|
||||||
|
return NzHashDigest(GetHashName(), digest, SHA256_DIGEST_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int NzHashSHA256::GetDigestLength()
|
||||||
|
{
|
||||||
|
return SHA256_DIGEST_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzString NzHashSHA256::GetHashName()
|
||||||
|
{
|
||||||
|
static NzString hashName = "SHA256";
|
||||||
|
return hashName;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Core/Hash/SHA384.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA/Internal.hpp>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashSHA384::NzHashSHA384()
|
||||||
|
{
|
||||||
|
m_state = new SHA_CTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashSHA384::~NzHashSHA384()
|
||||||
|
{
|
||||||
|
delete m_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA384::Append(const nzUInt8* data, unsigned int len)
|
||||||
|
{
|
||||||
|
SHA384_Update(m_state, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA384::Begin()
|
||||||
|
{
|
||||||
|
SHA384_Init(m_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashDigest NzHashSHA384::End()
|
||||||
|
{
|
||||||
|
nzUInt8 digest[SHA384_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
SHA384_End(m_state, digest);
|
||||||
|
|
||||||
|
return NzHashDigest(GetHashName(), digest, SHA384_DIGEST_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int NzHashSHA384::GetDigestLength()
|
||||||
|
{
|
||||||
|
return SHA384_DIGEST_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzString NzHashSHA384::GetHashName()
|
||||||
|
{
|
||||||
|
static NzString hashName = "SHA384";
|
||||||
|
return hashName;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine".
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#include <Nazara/Core/Hash/SHA512.hpp>
|
||||||
|
#include <Nazara/Core/Hash/SHA/Internal.hpp>
|
||||||
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashSHA512::NzHashSHA512()
|
||||||
|
{
|
||||||
|
m_state = new SHA_CTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashSHA512::~NzHashSHA512()
|
||||||
|
{
|
||||||
|
delete m_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA512::Append(const nzUInt8* data, unsigned int len)
|
||||||
|
{
|
||||||
|
SHA512_Update(m_state, data, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzHashSHA512::Begin()
|
||||||
|
{
|
||||||
|
SHA512_Init(m_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
NzHashDigest NzHashSHA512::End()
|
||||||
|
{
|
||||||
|
nzUInt8 digest[SHA512_DIGEST_LENGTH];
|
||||||
|
|
||||||
|
SHA512_End(m_state, digest);
|
||||||
|
|
||||||
|
return NzHashDigest(GetHashName(), digest, SHA512_DIGEST_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int NzHashSHA512::GetDigestLength()
|
||||||
|
{
|
||||||
|
return SHA512_DIGEST_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzString NzHashSHA512::GetHashName()
|
||||||
|
{
|
||||||
|
static NzString hashName = "SHA512";
|
||||||
|
return hashName;
|
||||||
|
}
|
||||||
|
|
@ -15,7 +15,7 @@ m_digestLength(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NzHashDigest::NzHashDigest(NzString hashName, const nzUInt8* digest, unsigned int length) :
|
NzHashDigest::NzHashDigest(const NzString& hashName, const nzUInt8* digest, unsigned int length) :
|
||||||
m_hashName(hashName),
|
m_hashName(hashName),
|
||||||
m_digestLength(length)
|
m_digestLength(length)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
// This file is part of the "Nazara Engine".
|
// This file is part of the "Nazara Engine".
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
#define NAZARA_HASHABLE_CPP
|
|
||||||
|
|
||||||
#include <Nazara/Core/Hashable.hpp>
|
#include <Nazara/Core/Hashable.hpp>
|
||||||
#include <Nazara/Core/Hash.hpp>
|
#include <Nazara/Core/Hash.hpp>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
|
NzHashable::~NzHashable() = default;
|
||||||
|
|
||||||
NzHashDigest NzHashable::GetHash(nzHash hash) const
|
NzHashDigest NzHashable::GetHash(nzHash hash) const
|
||||||
{
|
{
|
||||||
NzHash h(hash);
|
NzHash h(hash);
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
#include <Nazara/Core/StringStream.hpp>
|
#include <Nazara/Core/StringStream.hpp>
|
||||||
#include <Nazara/Core/Debug.hpp>
|
#include <Nazara/Core/Debug.hpp>
|
||||||
|
|
||||||
#define NAZARA_STRINGSTREAM_CPP
|
|
||||||
|
|
||||||
NzStringStream::NzStringStream() :
|
NzStringStream::NzStringStream() :
|
||||||
m_bufferSize(0)
|
m_bufferSize(0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue