devilutionX/Source/sha.h
Gleb Mazovetskiy c43aead8d1 Cleanup Diablo-SHA and codec.cpp
1. Switches to 32-bit based calculation throughout. This is faster and
   less error-prone as we only byte-swap once when reading and writing.
2. Removes global state from Diablo-SHA implementation.
2022-01-07 01:34:26 +00:00

25 lines
638 B
C++

/**
* @file sha.cpp
*
* Interface of functionality for calculating X-SHA-1 (a flawed implementation of SHA-1).
*/
#pragma once
#include <cstdint>
#include "utils/stdcompat/cstddef.hpp"
namespace devilution {
constexpr size_t BlockSize = 16;
constexpr size_t SHA1HashSize = 5;
struct SHA1Context {
uint32_t state[SHA1HashSize] = { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0 };
uint32_t buffer[BlockSize];
};
void SHA1Result(SHA1Context &context, uint32_t messageDigest[SHA1HashSize]);
void SHA1Calculate(SHA1Context &context, const uint32_t data[BlockSize]);
} // namespace devilution