Files
dnf-utils/libTinyEncrypt/libEncrypt_SHA256.h
T
2025-09-01 20:47:58 +08:00

36 lines
1.2 KiB
C++

#pragma once
#include <stdint.h>
#include <array>
#include <string>
typedef struct {
uint64_t length;
uint32_t state[8];
uint32_t curlen;
uint8_t buf[64];
} Sha256Context;
typedef std::array<uint8_t, 32> Sha256Digest;
// Initialises a SHA256 Context. Use this to initialise/reset a context.
void sha256Initialise(Sha256Context* Context);
// Adds data to the SHA256 context. This will process the data and update the
// internal state of the context. Keep on calling this function until all the
// data has been added. Then call Sha256Finalise to calculate the hash.
void sha256Update(Sha256Context* Context, void const* Buffer, uint32_t BufferSize);
// Performs the final calculation of the hash and returns the digest (32 byte
// buffer containing 256bit hash). After calling this, Sha256Initialised must
// be used to reuse the context.
void sha256Finalise(Sha256Context* Context, Sha256Digest& Digest);
// Combines Sha256Initialise, Sha256Update, and Sha256Finalise into one
// function. Calculates the SHA256 hash of the buffer.
void sha256Calculate(void const* Buffer, uint32_t BufferSize, Sha256Digest& Digest);
// Converts a SHA256_HASH to a human-readable string.
std::string sha256ToString(const Sha256Digest& Digest);