GNU libmicrohttpd 1.0.1
Loading...
Searching...
No Matches
sha256.h File Reference

Calculation of SHA-256 digest. More...

#include "mhd_options.h"
#include <stdint.h>
Include dependency graph for sha256.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Sha256Ctx
 

Macros

#define SHA256_DIGEST_SIZE_WORDS   8
 
#define SHA256_WORD_SIZE_BITS   32
 
#define SHA256_BYTES_IN_WORD   (SHA256_WORD_SIZE_BITS / 8)
 
#define SHA256_DIGEST_SIZE   (SHA256_DIGEST_SIZE_WORDS * SHA256_BYTES_IN_WORD)
 
#define SHA256_DIGEST_STRING_SIZE   ((SHA256_DIGEST_SIZE) * 2 + 1)
 
#define SHA256_BLOCK_SIZE_BITS   512
 
#define SHA256_BLOCK_SIZE   (SHA256_BLOCK_SIZE_BITS / 8)
 
#define SHA256_BLOCK_SIZE_WORDS   (SHA256_BLOCK_SIZE_BITS / SHA256_WORD_SIZE_BITS)
 
#define MHD_SHA256_HAS_FINISH   1
 

Functions

void MHD_SHA256_init (struct Sha256Ctx *ctx)
 
void MHD_SHA256_update (struct Sha256Ctx *ctx, const uint8_t *data, size_t length)
 
void MHD_SHA256_finish (struct Sha256Ctx *ctx, uint8_t digest[SHA256_DIGEST_SIZE])
 

Detailed Description

Calculation of SHA-256 digest.

Author
Karlson2k (Evgeny Grin)

Definition in file sha256.h.

Macro Definition Documentation

◆ MHD_SHA256_HAS_FINISH

#define MHD_SHA256_HAS_FINISH   1

Indicates that function MHD_SHA256_finish() (without context reset) is available

Definition at line 120 of file sha256.h.

◆ SHA256_BLOCK_SIZE

#define SHA256_BLOCK_SIZE   (SHA256_BLOCK_SIZE_BITS / 8)

Size of single processing block in bytes

Definition at line 70 of file sha256.h.

Referenced by MHD_SHA256_finish(), MHD_SHA256_update(), and sha256_transform().

◆ SHA256_BLOCK_SIZE_BITS

#define SHA256_BLOCK_SIZE_BITS   512

Size of single processing block in bits

Definition at line 65 of file sha256.h.

◆ SHA256_BLOCK_SIZE_WORDS

#define SHA256_BLOCK_SIZE_WORDS   (SHA256_BLOCK_SIZE_BITS / SHA256_WORD_SIZE_BITS)

Size of single processing block in bytes

Definition at line 75 of file sha256.h.

Referenced by MHD_SHA256_finish().

◆ SHA256_BYTES_IN_WORD

#define SHA256_BYTES_IN_WORD   (SHA256_WORD_SIZE_BITS / 8)

Number of bytes in single SHA-256 word used to process data

Definition at line 50 of file sha256.h.

Referenced by MHD_SHA256_finish().

◆ SHA256_DIGEST_SIZE

#define SHA256_DIGEST_SIZE   (SHA256_DIGEST_SIZE_WORDS * SHA256_BYTES_IN_WORD)

Size of SHA-256 digest in bytes

Definition at line 55 of file sha256.h.

Referenced by digest_get_hash_size(), digest_get_size(), and MHD_SHA256_finish().

◆ SHA256_DIGEST_SIZE_WORDS

#define SHA256_DIGEST_SIZE_WORDS   8

Digest is kept internally as 8 32-bit words.

Definition at line 39 of file sha256.h.

Referenced by MHD_SHA256_finish().

◆ SHA256_DIGEST_STRING_SIZE

#define SHA256_DIGEST_STRING_SIZE   ((SHA256_DIGEST_SIZE) * 2 + 1)

Size of SHA-256 digest string in chars including termination NUL

Definition at line 60 of file sha256.h.

◆ SHA256_WORD_SIZE_BITS

#define SHA256_WORD_SIZE_BITS   32

Number of bits in single SHA-256 word

Definition at line 44 of file sha256.h.

Function Documentation

◆ MHD_SHA256_finish()

void MHD_SHA256_finish ( struct Sha256Ctx * ctx,
uint8_t digest[SHA256_DIGEST_SIZE] )

Finalise SHA256 calculation, return digest.

Parameters
ctxmust be a struct Sha256Ctx *
[out]digestset to the hash, must be SHA256_DIGEST_SIZE bytes

Finalise SHA256 calculation, return digest.

Parameters
ctx_must be a struct Sha256Ctx *
[out]digestset to the hash, must be SHA256_DIGEST_SIZE bytes

< Number of processed bits

< Number of bytes in buffer

Definition at line 473 of file sha256.c.

References _MHD_PUT_32BIT_BE, _MHD_PUT_64BIT_BE_SAFE(), _MHD_UINT32_ALIGN, Sha256Ctx::buffer, Sha256Ctx::count, Sha256Ctx::H, SHA256_BLOCK_SIZE, SHA256_BLOCK_SIZE_WORDS, SHA256_BYTES_IN_WORD, SHA256_DIGEST_SIZE, SHA256_DIGEST_SIZE_WORDS, SHA256_SIZE_OF_LEN_ADD, and sha256_transform().

Referenced by digest_calc_hash().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_SHA256_init()

void MHD_SHA256_init ( struct Sha256Ctx * ctx)

Initialise structure for SHA256 calculation.

Parameters
ctxmust be a struct Sha256Ctx *

Definition at line 41 of file sha256.c.

References Sha256Ctx::count, and Sha256Ctx::H.

◆ MHD_SHA256_update()

void MHD_SHA256_update ( struct Sha256Ctx * ctx,
const uint8_t * data,
size_t length )

Process portion of bytes.

Parameters
ctxmust be a struct Sha256Ctx *
databytes to add to hash
lengthnumber of bytes in data

Process portion of bytes.

Parameters
ctx_must be a struct Sha256Ctx *
databytes to add to hash
lengthnumber of bytes in data

< Number of bytes in buffer

Definition at line 410 of file sha256.c.

References Sha256Ctx::buffer, Sha256Ctx::count, data, Sha256Ctx::H, mhd_assert, NULL, SHA256_BLOCK_SIZE, and sha256_transform().

Referenced by digest_update().

Here is the call graph for this function:
Here is the caller graph for this function: