joey shelton / LED_Demo2

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by joey shelton

Embed: (wiki syntax)

« Back to documentation index

shalib.h File Reference

shalib.h File Reference

SHA256 Library API. More...

Go to the source code of this file.

Data Structures

struct  prf_sec_param_t
 PRF 256 stucture This structure is used to configure PRF calc operation: secret, label, seed and buffer before call shalib_prf_calc(). More...
struct  sha256_temp_t
 SHA temporary buffer database for saving current hash operation or resume saved. More...

Functions

void SHALIB_init_sha256 (void)
 Init SHA registers.
void SHALIB_push_data_sha256 (const uint8_t *data, uint16_t len)
 Push data SHALIB.
void SHALIB_finish_sha256 (uint8_t *buffer, uint8_t len)
 Finish SHA-256 operation and get result to given buffer by given length.
void SHALIB_SHA256_HASH (const uint8_t *data_ptr, uint16_t data_len, uint8_t *buffer)
 Calc SHA-256 by 1 function call.
void sha_resume_regs (const sha256_temp_t *ptr)
 Resume old SHA-256 registers.
void sha_save_regs (sha256_temp_t *ptr)
 Save SHA-256 registers.
void SHALIB_init_HMAC (const uint8_t *secret, uint8_t sec_len)
 Init HMAC256 operation by given security material.
void SHALIB_finish_HMAC (uint8_t *buffer, uint8_t len)
 Finish HMAC256 operation and save result in given buffer.
prf_sec_param_tshalib_prf_param_get (void)
 PRF API.
void shalib_prf_calc (void)
 Finish PRF256 operation and save result in given buffer.

Detailed Description

SHA256 Library API.

SHA256 Library API:

There are two ways to calculate SHA256: 1. Calc by given 1 data and length pointer

SHA256 register resume and save library API:

SHA256 Operation dataflow can come in many different timeslots or packets and between them, the application needs to calculated more SHA256 then SAVE and Resume operation SHA registers is usefully. -sha_resume_regs(), Load SHA registers from old HASH sessions -sha_save_regs(), Save SHA registers from current HASH sessions

HMAC256 process sequence:

1. SHALIB_init_HMAC(), Init HMAC IN process by given security signature material 2. SHALIB_push_data_sha256(), Give data sectors(s) one by one 3. SHALIB_finish_HMAC(), Finish HMAC and save SHA256 hash to given buffer

PRF256 process sequence:

1. shalib_prf_param_get(), Init PRF and get configure structure 2. Set the following parameters to configure structure:

  • HMAC security signature pointer and length
  • Label text and length
  • Seed data and length
  • PRF result pointer 3. shalib_prf_calc(), Calc PRF256 HASH

Definition in file shalib.h.


Function Documentation

void sha_resume_regs ( const sha256_temp_t ptr )

Resume old SHA-256 registers.

Parameters:
ptrA pointer to saved session.
void sha_save_regs ( sha256_temp_t ptr )

Save SHA-256 registers.

Parameters:
ptrA pointer to buffer.
void SHALIB_finish_HMAC ( uint8_t *  buffer,
uint8_t  len 
)

Finish HMAC256 operation and save result in given buffer.

Parameters:
bufferA pointer to result buffer.
lenLength of 32-bit register to save to buffer (8= 256 bit and 4= 128-bit).
void SHALIB_finish_sha256 ( uint8_t *  buffer,
uint8_t  len 
)

Finish SHA-256 operation and get result to given buffer by given length.

The first `len` words of the SHA-256 are output to buffer.

Parameters:
bufferA pointer to result buffer.
lenLength of 32-bit register to save to buffer (8= 256 bit and 4= 128-bit).
void SHALIB_init_HMAC ( const uint8_t *  secret,
uint8_t  sec_len 
)

Init HMAC256 operation by given security material.

Parameters:
secretA pointer to security material.
sec_lenLength of security material.
void SHALIB_init_sha256 ( void   )

Init SHA registers.

void shalib_prf_calc ( void   )

Finish PRF256 operation and save result in given buffer.

prf_sec_param_t* shalib_prf_param_get ( void   )

PRF API.

Init PRF library and SHA registers. This function returns configure structure where the user needs to set the following items: -Security material and length -Label text and length -Seed data and length -Buffer for 256 Result

Returns:
A pointer to PRF configure structure.
void SHALIB_push_data_sha256 ( const uint8_t *  data,
uint16_t  len 
)

Push data SHALIB.

Parameters:
dataA pointer to data.
lenLength of data.
void SHALIB_SHA256_HASH ( const uint8_t *  data_ptr,
uint16_t  data_len,
uint8_t *  buffer 
)

Calc SHA-256 by 1 function call.

Parameters:
data_ptrA pointer to data.
data_lenLength of data.
bufferA pointer to 256-bit buffer!!