2024-02-25 14:46:47 +00:00
|
|
|
#pragma once
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
#include "StarString.hpp"
|
|
|
|
#include "StarByteArray.hpp"
|
|
|
|
|
|
|
|
namespace Star {
|
|
|
|
|
|
|
|
typedef struct sha_state_struct {
|
|
|
|
uint32_t state[8], length, curlen;
|
|
|
|
uint8_t buf[64];
|
|
|
|
} sha_state;
|
|
|
|
|
|
|
|
class Sha256Hasher {
|
|
|
|
public:
|
|
|
|
Sha256Hasher();
|
|
|
|
|
|
|
|
void push(char const* data, size_t length);
|
|
|
|
void push(String const& data);
|
|
|
|
void push(ByteArray const& data);
|
|
|
|
|
|
|
|
// Produces 32 bytes
|
|
|
|
void compute(char* hashDestination);
|
|
|
|
ByteArray compute();
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool m_finished;
|
|
|
|
sha_state m_state;
|
|
|
|
};
|
|
|
|
|
|
|
|
// Sha256 must, obviously, have 32 bytes available in the destination.
|
|
|
|
void sha256(char const* source, size_t length, char* hashDestination);
|
|
|
|
|
|
|
|
ByteArray sha256(char const* source, size_t length);
|
|
|
|
|
|
|
|
void sha256(ByteArray const& in, ByteArray& out);
|
|
|
|
void sha256(String const& in, ByteArray& out);
|
|
|
|
|
|
|
|
ByteArray sha256(ByteArray const& in);
|
|
|
|
ByteArray sha256(String const& in);
|
|
|
|
|
|
|
|
}
|