amxmodx/public/hashing/hashing.h
HttrckCldHKS 38db4d3ae0 Updating hahsers INC files and Acknowledgements
INC files have been updated changing the information, adding new
details.
Acknowledgements file includes now Hashing Librarying license.
Spacing consistency has been fixed in CPP Hashing files.
Testsuite plug-in has been rewritten, now using Server Commands.
2015-02-16 16:30:45 +02:00

87 lines
2.4 KiB
C

// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license
#if !defined __HASHING_H__
#define __HASHING_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#if defined(__FreeBSD__) || defined(__OpenBSD__)
#include <sys/endian.h>
#define __BYTE_ORDER BYTE_ORDER
#define __LITTLE_ENDIAN LITTLE_ENDIAN
#define __BIG_ENDIAN BIG_ENDIAN
#elif defined(LINUX) || defined(EMSCRIPTEN)
#include <endian.h>
#elif defined(__APPLE__)
#include <sys/types.h>
#define __BYTE_ORDER BYTE_ORDER
#endif
#if !defined(BIG_ENDIAN)
#define BIG_ENDIAN 4321
#endif
#if !defined(LITTLE_ENDIAN)
#define LITTLE_ENDIAN 1234
#endif
/**
* Gets hashers included.
*/
#include "hashers/crc32.h"
#include "hashers/md5.h"
#include "hashers/sha1.h"
#include "hashers/sha256.h"
#include "hashers/sha3.h"
#include "hashers/keccak.h"
/**
* HashType constants.
* To be used on hashFile() and hashString()
*/
enum HashType
{
Hash_Crc32 = 0, // Provides CRC32 hashing
Hash_Md5, // Provides MD5 hashing
Hash_Sha1, // Provides SHA1 hashing
Hash_Sha256, // Provides SHA256 hashing
Hash_Sha3_224, // Provides SHA3 224 bit hashing
Hash_Sha3_256, // Provides SHA3 256 bit hashing
Hash_Sha3_384, // Provides SHA3 384 bit hashing
Hash_Sha3_512, // Provides SHA3 512 bit hashing
Hash_Keccak_224, // Provides KECCAK 224 bit hashing
Hash_Keccak_256, // Provides KECCAK 256 bit hashing
Hash_Keccak_384, // Provides KECCAK 384 bit hashing
Hash_Keccak_512, // Provides KECCAK 512 bit hashing
};
/**
* Hashes a file content (bytes)
* @note Returns NULL if "fileName" does not represent a file name
* @note Returns NULL if file could not be opened
* @note Returns NULL if invalid "Type" is specified
*/
const char* hashFile(const char* fileName, HashType Type);
/**
* Hashes a string
* @note Returns NULL if "String" does not represent a string
* @note Returns NULL if the string has no bytes to hash
* @note Returns NULL if invalid "Type" is specified
*/
const char* hashString(const char* String, size_t stringLen, HashType Type);
#endif // __HASHING_H__