mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-12-14 09:22:09 +08:00
feat(util): refactor SHA algorithm of util components
This commit is contained in:
@@ -21,63 +21,28 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int (*sha_cal_t)(void *ctx, const void *src);
|
||||
|
||||
typedef enum {
|
||||
SHA1 = 0,
|
||||
SHA224 = 1,
|
||||
SHA256 = 2,
|
||||
SHA384 = 3,
|
||||
SHA512 = 4,
|
||||
|
||||
SHA_INVALID = -1,
|
||||
} esp_sha_type_t;
|
||||
typedef struct {
|
||||
uint32_t state[5];
|
||||
uint32_t total[2];
|
||||
uint8_t buffer[64];
|
||||
} esp_sha1_t;
|
||||
|
||||
typedef struct {
|
||||
esp_sha_type_t type; /*!< The sha type */
|
||||
uint8_t buffer[64]; /*!< The data block being processed. */
|
||||
uint32_t total[2]; /*!< The number of Bytes processed. */
|
||||
uint32_t state[8]; /*!< The intermediate digest state. */
|
||||
sha_cal_t sha_cal; /*!< The sha calculation. */
|
||||
} esp_sha_t;
|
||||
uint64_t length;
|
||||
uint32_t curlen;
|
||||
uint32_t state[8];
|
||||
uint8_t buf[64];
|
||||
} esp_sha256_t;
|
||||
|
||||
typedef struct {
|
||||
esp_sha_type_t type; /*!< The sha type */
|
||||
uint8_t buffer[128]; /*!< The data block being processed. */
|
||||
uint64_t total[2]; /*!< The number of Bytes processed. */
|
||||
uint64_t state[8]; /*!< The intermediate digest state. */
|
||||
sha_cal_t sha_cal; /*!< The sha calculation. */
|
||||
uint64_t total[2];
|
||||
uint64_t state[8];
|
||||
uint8_t buffer[128];
|
||||
} esp_sha512_t;
|
||||
|
||||
typedef esp_sha_t esp_sha1_t;
|
||||
typedef esp_sha_t esp_sha224_t;
|
||||
typedef esp_sha_t esp_sha256_t;
|
||||
typedef esp_sha512_t esp_sha384_t;
|
||||
typedef esp_sha256_t esp_sha224_t;
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA(1/224/256) contex
|
||||
*
|
||||
* @param ctx SHA contex pointer
|
||||
* @param type SHA type
|
||||
* @param state_ctx SHA calculation factor
|
||||
* @param size calculation factor size by "uint32_t"
|
||||
* @param sha_cal calculation function for real SHA
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
int __esp_sha_init(esp_sha_t *ctx, esp_sha_type_t type, const uint32_t *state_ctx, size_t size, sha_cal_t sha_cal);
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA(384/512) contex
|
||||
*
|
||||
* @param ctx SHA contex pointer
|
||||
* @param type SHA type
|
||||
* @param state_ctx SHA calculation factor
|
||||
* @param size calculation factor size by "uint64_t"
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
int __esp_sha512_init(esp_sha512_t *ctx, esp_sha_type_t type, const uint64_t *state_ctx, size_t size);
|
||||
typedef esp_sha512_t esp_sha384_t;
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA1 contex
|
||||
@@ -86,13 +51,7 @@ int __esp_sha512_init(esp_sha512_t *ctx, esp_sha_type_t type, const uint64_t *st
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha1_init(esp_sha1_t *ctx)
|
||||
{
|
||||
extern const uint32_t __g_esp_sha1_state_ctx[];
|
||||
extern int __esp_sha1_process(void *ctx, const void *data);
|
||||
|
||||
return __esp_sha_init(ctx, SHA1, __g_esp_sha1_state_ctx, 5, __esp_sha1_process);
|
||||
}
|
||||
int esp_sha1_init(esp_sha1_t *ctx);
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA224 contex
|
||||
@@ -101,13 +60,7 @@ static inline int esp_sha1_init(esp_sha1_t *ctx)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha224_init(esp_sha224_t *ctx)
|
||||
{
|
||||
extern const uint32_t __g_esp_sha224_state_ctx[];
|
||||
extern int __esp_sha256_process(void *ctx, const void *data);
|
||||
|
||||
return __esp_sha_init(ctx, SHA224, __g_esp_sha224_state_ctx, 8, __esp_sha256_process);
|
||||
}
|
||||
int esp_sha224_init(esp_sha224_t *ctx);
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA256 contex
|
||||
@@ -116,13 +69,7 @@ static inline int esp_sha224_init(esp_sha224_t *ctx)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha256_init(esp_sha256_t *ctx)
|
||||
{
|
||||
extern const uint32_t __g_esp_sha256_state_ctx[];
|
||||
extern int __esp_sha256_process(void *ctx, const void *data);
|
||||
|
||||
return __esp_sha_init(ctx, SHA256, __g_esp_sha256_state_ctx, 8, __esp_sha256_process);
|
||||
}
|
||||
int esp_sha256_init(esp_sha256_t *ctx);
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA384 contex
|
||||
@@ -131,12 +78,7 @@ static inline int esp_sha256_init(esp_sha256_t *ctx)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha384_init(esp_sha384_t *ctx)
|
||||
{
|
||||
extern const uint64_t __g_esp_sha384_state_ctx[];
|
||||
|
||||
return __esp_sha512_init(ctx, SHA384, __g_esp_sha384_state_ctx, 8);
|
||||
}
|
||||
int esp_sha384_init(esp_sha384_t *ctx);
|
||||
|
||||
/**
|
||||
* @brief initialize the SHA512 contex
|
||||
@@ -145,23 +87,7 @@ static inline int esp_sha384_init(esp_sha384_t *ctx)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha512_init(esp_sha512_t *ctx)
|
||||
{
|
||||
extern const uint64_t __g_esp_sha512_state_ctx[];
|
||||
|
||||
return __esp_sha512_init(ctx, SHA512, __g_esp_sha512_state_ctx, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA
|
||||
*
|
||||
* @param ctx SHA contex pointer
|
||||
* @param src input data buffer pointer
|
||||
* @param size input data bytes
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
int __esp_sha_update(esp_sha_t *ctx, const void *src, size_t size);
|
||||
int esp_sha512_init(esp_sha512_t *ctx);
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA1
|
||||
@@ -172,10 +98,7 @@ int __esp_sha_update(esp_sha_t *ctx, const void *src, size_t size);
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha1_update(esp_sha1_t *ctx, const void *src, size_t size)
|
||||
{
|
||||
return __esp_sha_update(ctx, src, size);
|
||||
}
|
||||
int esp_sha1_update(esp_sha1_t *ctx, const void *src, size_t size);
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA224
|
||||
@@ -186,10 +109,7 @@ static inline int esp_sha1_update(esp_sha1_t *ctx, const void *src, size_t size)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha224_update(esp_sha224_t *ctx, const void *src, size_t size)
|
||||
{
|
||||
return __esp_sha_update(ctx, src, size);
|
||||
}
|
||||
int esp_sha224_update(esp_sha224_t *ctx, const void *src, size_t size);
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA256
|
||||
@@ -200,10 +120,7 @@ static inline int esp_sha224_update(esp_sha224_t *ctx, const void *src, size_t s
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha256_update(esp_sha256_t *ctx, const void *src, size_t size)
|
||||
{
|
||||
return __esp_sha_update(ctx, src, size);
|
||||
}
|
||||
int esp_sha256_update(esp_sha256_t *ctx, const void *src, size_t size);
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA384
|
||||
@@ -214,10 +131,7 @@ static inline int esp_sha256_update(esp_sha256_t *ctx, const void *src, size_t s
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha384_update(esp_sha384_t *ctx, const void *src, size_t size)
|
||||
{
|
||||
return __esp_sha_update((esp_sha_t *)ctx, src, size);
|
||||
}
|
||||
int esp_sha384_update(esp_sha384_t *ctx, const void *src, size_t size);
|
||||
|
||||
/**
|
||||
* @brief calculate input data for SHA512
|
||||
@@ -228,20 +142,7 @@ static inline int esp_sha384_update(esp_sha384_t *ctx, const void *src, size_t s
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha512_update(esp_sha512_t *ctx, const void *src, size_t size)
|
||||
{
|
||||
return __esp_sha_update((esp_sha_t *)ctx, src, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief output SHA(1/224/256/384/512) calculation result
|
||||
*
|
||||
* @param ctx SHA contex pointer
|
||||
* @param dest output data buffer pointer
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
int __esp_sha_finish(esp_sha_t *ctx, void *dest);
|
||||
int esp_sha512_update(esp_sha512_t *ctx, const void *src, size_t size);
|
||||
|
||||
/**
|
||||
* @brief output SHA1 calculation result
|
||||
@@ -251,10 +152,7 @@ int __esp_sha_finish(esp_sha_t *ctx, void *dest);
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha1_finish(esp_sha1_t *ctx, void *dest)
|
||||
{
|
||||
return __esp_sha_finish(ctx, dest);
|
||||
}
|
||||
int esp_sha1_finish(esp_sha1_t *ctx, void *dest);
|
||||
|
||||
/**
|
||||
* @brief output SHA224 calculation result
|
||||
@@ -264,10 +162,7 @@ static inline int esp_sha1_finish(esp_sha1_t *ctx, void *dest)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha224_finish(esp_sha224_t *ctx, void *dest)
|
||||
{
|
||||
return __esp_sha_finish(ctx, dest);
|
||||
}
|
||||
int esp_sha224_finish(esp_sha224_t *ctx, void *dest);
|
||||
|
||||
/**
|
||||
* @brief output SHA256 calculation result
|
||||
@@ -277,10 +172,7 @@ static inline int esp_sha224_finish(esp_sha224_t *ctx, void *dest)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha256_finish(esp_sha256_t *ctx, void *dest)
|
||||
{
|
||||
return __esp_sha_finish(ctx, dest);
|
||||
}
|
||||
int esp_sha256_finish(esp_sha256_t *ctx, void *dest);
|
||||
|
||||
/**
|
||||
* @brief output SHA384 calculation result
|
||||
@@ -290,10 +182,7 @@ static inline int esp_sha256_finish(esp_sha256_t *ctx, void *dest)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha384_finish(esp_sha384_t *ctx, void *dest)
|
||||
{
|
||||
return __esp_sha_finish((esp_sha_t *)ctx, dest);
|
||||
}
|
||||
int esp_sha384_finish(esp_sha384_t *ctx, void *dest);
|
||||
|
||||
/**
|
||||
* @brief output SHA512 calculation result
|
||||
@@ -303,10 +192,7 @@ static inline int esp_sha384_finish(esp_sha384_t *ctx, void *dest)
|
||||
*
|
||||
* @return 0 if success or fail
|
||||
*/
|
||||
static inline int esp_sha512_finish(esp_sha512_t *ctx, void *dest)
|
||||
{
|
||||
return __esp_sha_finish((esp_sha_t *)ctx, dest);
|
||||
}
|
||||
int esp_sha512_finish(esp_sha512_t *ctx, void *dest);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user