CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
digest.h
Go to the documentation of this file.
1#pragma once
2
5
30
31#include <cx/cx.h>
32
33CX_C_BEGIN
34
36#define DIGEST_BLOCKSIZE 64
37
39typedef enum {
43 DIGEST_COUNT
45
49extern uint32 DigestSize[DIGEST_COUNT];
50
55typedef struct Digest {
57 uint32 size;
59 uint32 state[8];
61
75void digestInit(_Out_ Digest* digest, DigestType type);
76
92void digestUpdate(_Inout_ Digest* digest, _In_reads_bytes_(size) const uint8* data, uint32 size);
93
108void digestFinish(_Inout_ Digest* digest, _Out_ uint8* out);
109
111
112CX_C_END
void digestFinish(Digest *digest, uint8 *out)
uint32 DigestSize[DIGEST_COUNT]
#define DIGEST_BLOCKSIZE
Internal block size in bytes used by all supported digest algorithms.
Definition digest.h:36
void digestUpdate(Digest *digest, const uint8 *data, uint32 size)
void digestInit(Digest *digest, DigestType type)
DigestType
Supported message digest algorithms.
Definition digest.h:39
@ DIGEST_SHA1
SHA-1 - 160-bit (20 bytes) - Deprecated for security.
Definition digest.h:41
@ DIGEST_SHA256
SHA-256 - 256-bit (32 bytes) - Secure and recommended.
Definition digest.h:42
@ DIGEST_MD5
MD5 - 128-bit (16 bytes) - Not cryptographically secure.
Definition digest.h:40
uint32 size
Total message size processed.
Definition digest.h:57
uint32 state[8]
Algorithm state (MD5: 4 words, SHA-1: 5 words, SHA-256: 8 words)
Definition digest.h:59
uint8 buffer[DIGEST_BLOCKSIZE]
Internal data buffer.
Definition digest.h:58
DigestType type
Algorithm being used.
Definition digest.h:56