PebbleOS v4.47.0
Loading...
Searching...
No Matches

SHA-256 digest (FIPS 180-4). More...

Data Structures

struct  pbl_sha256_ctx
 Digest state. More...
 

Macros

#define PBL_SHA256_DIGEST_SIZE   32U
 Size of a digest, in bytes.
 
#define PBL_SHA256_BLOCK_SIZE   64U
 Size of a block, in bytes.
 

Functions

void pbl_sha256_init (struct pbl_sha256_ctx *ctx)
 Start a digest.
 
void pbl_sha256_update (struct pbl_sha256_ctx *ctx, const void *data, size_t len)
 Hash data.
 
void pbl_sha256_final (struct pbl_sha256_ctx *ctx, uint8_t digest[PBL_SHA256_DIGEST_SIZE])
 Finish a digest.
 
void pbl_sha256 (const void *data, size_t len, uint8_t digest[PBL_SHA256_DIGEST_SIZE])
 Digest of a single buffer.
 
void pbl_sha256_blocks_generic (uint32_t state[8], const void *data, size_t nblocks)
 Compress whole blocks in software.
 

Detailed Description

SHA-256 digest (FIPS 180-4).

Runs of at least CONFIG_CRYPTO_SHA256_HW_MIN_LEN bytes of whole blocks are hashed by a hardware accelerator when a driver provides one (see Crypto), the rest in software.

struct pbl_sha256_ctx ctx;
uint8_t digest[PBL_SHA256_DIGEST_SIZE];
pbl_sha256_update(&ctx, title, strlen(title));
pbl_sha256_update(&ctx, artist, strlen(artist));
pbl_sha256_final(&ctx, digest);
Digest state.
Definition sha256.h:43
#define PBL_SHA256_DIGEST_SIZE
Size of a digest, in bytes.
Definition sha256.h:37
void pbl_sha256_update(struct pbl_sha256_ctx *ctx, const void *data, size_t len)
Hash data.
void pbl_sha256_final(struct pbl_sha256_ctx *ctx, uint8_t digest[PBL_SHA256_DIGEST_SIZE])
Finish a digest.
void pbl_sha256_init(struct pbl_sha256_ctx *ctx)
Start a digest.

Data Structure Documentation

◆ pbl_sha256_ctx

struct pbl_sha256_ctx

Digest state.

Data Fields
uint8_t buf[PBL_SHA256_BLOCK_SIZE] Pending partial block.
uint64_t count Number of bytes hashed.
uint32_t state[8] Chaining value.

Macro Definition Documentation

◆ PBL_SHA256_BLOCK_SIZE

#define PBL_SHA256_BLOCK_SIZE   64U

Size of a block, in bytes.

◆ PBL_SHA256_DIGEST_SIZE

#define PBL_SHA256_DIGEST_SIZE   32U

Size of a digest, in bytes.

Function Documentation

◆ pbl_sha256()

void pbl_sha256 ( const void *  data,
size_t  len,
uint8_t  digest[PBL_SHA256_DIGEST_SIZE] 
)

Digest of a single buffer.

Parameters
dataData to hash.
lenLength of data in bytes.
[out]digestDigest.

◆ pbl_sha256_blocks_generic()

void pbl_sha256_blocks_generic ( uint32_t  state[8],
const void *  data,
size_t  nblocks 
)

Compress whole blocks in software.

Bypasses any accelerator, to check drivers against.

Parameters
[in,out]stateChaining value, H0 to H7.
dataBlocks to hash.
nblocksNumber of blocks in data.

◆ pbl_sha256_final()

void pbl_sha256_final ( struct pbl_sha256_ctx *  ctx,
uint8_t  digest[PBL_SHA256_DIGEST_SIZE] 
)

Finish a digest.

The state is cleared, and must be started again before reuse.

Parameters
ctxDigest state.
[out]digestDigest of all data hashed since pbl_sha256_init().

◆ pbl_sha256_init()

void pbl_sha256_init ( struct pbl_sha256_ctx *  ctx)

Start a digest.

Parameters
[out]ctxDigest state.

◆ pbl_sha256_update()

void pbl_sha256_update ( struct pbl_sha256_ctx *  ctx,
const void *  data,
size_t  len 
)

Hash data.

Parameters
ctxDigest state.
dataData to hash.
lenLength of data in bytes.