mirror of
https://github.com/esp8266/Arduino.git
synced 2025-10-15 11:26:40 +03:00
Introduce HMAC functions operating on vectors
This commit is contained in:
committed by
Ivan Grokhotkov
parent
abec528002
commit
48d0f114bb
@@ -203,6 +203,16 @@ void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
void hmac_sha256(const uint8_t *msg, int length, const uint8_t *key,
|
void hmac_sha256(const uint8_t *msg, int length, const uint8_t *key,
|
||||||
int key_len, uint8_t *digest);
|
int key_len, uint8_t *digest);
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* HMAC functions operating on vectors
|
||||||
|
**************************************************************************/
|
||||||
|
void hmac_md5_v(const uint8_t **msg, int* length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest);
|
||||||
|
void hmac_sha1_v(const uint8_t **msg, int* length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest);
|
||||||
|
void hmac_sha256_v(const uint8_t **msg, int* length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest);
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* RSA declarations
|
* RSA declarations
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
@@ -44,6 +44,12 @@
|
|||||||
*/
|
*/
|
||||||
void hmac_md5(const uint8_t *msg, int length, const uint8_t *key,
|
void hmac_md5(const uint8_t *msg, int length, const uint8_t *key,
|
||||||
int key_len, uint8_t *digest)
|
int key_len, uint8_t *digest)
|
||||||
|
{
|
||||||
|
hmac_md5_v(&msg, &length, 1, key, key_len, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_md5_v(const uint8_t **msg, int* length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest)
|
||||||
{
|
{
|
||||||
MD5_CTX context;
|
MD5_CTX context;
|
||||||
uint8_t k_ipad[64];
|
uint8_t k_ipad[64];
|
||||||
@@ -63,7 +69,10 @@ void hmac_md5(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
|
|
||||||
MD5_Init(&context);
|
MD5_Init(&context);
|
||||||
MD5_Update(&context, k_ipad, 64);
|
MD5_Update(&context, k_ipad, 64);
|
||||||
MD5_Update(&context, msg, length);
|
for (i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
MD5_Update(&context, msg[i], length[i]);
|
||||||
|
}
|
||||||
MD5_Final(digest, &context);
|
MD5_Final(digest, &context);
|
||||||
MD5_Init(&context);
|
MD5_Init(&context);
|
||||||
MD5_Update(&context, k_opad, 64);
|
MD5_Update(&context, k_opad, 64);
|
||||||
@@ -77,6 +86,12 @@ void hmac_md5(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
*/
|
*/
|
||||||
void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key,
|
void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key,
|
||||||
int key_len, uint8_t *digest)
|
int key_len, uint8_t *digest)
|
||||||
|
{
|
||||||
|
hmac_sha1_v(&msg, &length, 1, key, key_len, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha1_v(const uint8_t **msg, int *length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest)
|
||||||
{
|
{
|
||||||
SHA1_CTX context;
|
SHA1_CTX context;
|
||||||
uint8_t k_ipad[64];
|
uint8_t k_ipad[64];
|
||||||
@@ -96,7 +111,10 @@ void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
|
|
||||||
SHA1_Init(&context);
|
SHA1_Init(&context);
|
||||||
SHA1_Update(&context, k_ipad, 64);
|
SHA1_Update(&context, k_ipad, 64);
|
||||||
SHA1_Update(&context, msg, length);
|
for (i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
SHA1_Update(&context, msg[i], length[i]);
|
||||||
|
}
|
||||||
SHA1_Final(digest, &context);
|
SHA1_Final(digest, &context);
|
||||||
SHA1_Init(&context);
|
SHA1_Init(&context);
|
||||||
SHA1_Update(&context, k_opad, 64);
|
SHA1_Update(&context, k_opad, 64);
|
||||||
@@ -110,6 +128,12 @@ void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
*/
|
*/
|
||||||
void hmac_sha256(const uint8_t *msg, int length, const uint8_t *key,
|
void hmac_sha256(const uint8_t *msg, int length, const uint8_t *key,
|
||||||
int key_len, uint8_t *digest)
|
int key_len, uint8_t *digest)
|
||||||
|
{
|
||||||
|
hmac_sha256_v(&msg, &length, 1, key, key_len, digest);
|
||||||
|
}
|
||||||
|
|
||||||
|
void hmac_sha256_v(const uint8_t **msg, int *length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest)
|
||||||
{
|
{
|
||||||
SHA256_CTX context;
|
SHA256_CTX context;
|
||||||
uint8_t k_ipad[64];
|
uint8_t k_ipad[64];
|
||||||
@@ -129,7 +153,10 @@ void hmac_sha256(const uint8_t *msg, int length, const uint8_t *key,
|
|||||||
|
|
||||||
SHA256_Init(&context);
|
SHA256_Init(&context);
|
||||||
SHA256_Update(&context, k_ipad, 64);
|
SHA256_Update(&context, k_ipad, 64);
|
||||||
SHA256_Update(&context, msg, length);
|
for (i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
SHA256_Update(&context, msg[i], length[i]);
|
||||||
|
}
|
||||||
SHA256_Final(digest, &context);
|
SHA256_Final(digest, &context);
|
||||||
SHA256_Init(&context);
|
SHA256_Init(&context);
|
||||||
SHA256_Update(&context, k_opad, 64);
|
SHA256_Update(&context, k_opad, 64);
|
||||||
|
@@ -195,6 +195,9 @@ extern const char * const unsupported_str;
|
|||||||
typedef void (*crypt_func)(void *, const uint8_t *, uint8_t *, int);
|
typedef void (*crypt_func)(void *, const uint8_t *, uint8_t *, int);
|
||||||
typedef void (*hmac_func)(const uint8_t *msg, int length, const uint8_t *key,
|
typedef void (*hmac_func)(const uint8_t *msg, int length, const uint8_t *key,
|
||||||
int key_len, uint8_t *digest);
|
int key_len, uint8_t *digest);
|
||||||
|
typedef void (*hmac_func_v)(const uint8_t **msg, int *length, int count, const uint8_t *key,
|
||||||
|
int key_len, uint8_t *digest);
|
||||||
|
|
||||||
|
|
||||||
int get_file(const char *filename, uint8_t **buf);
|
int get_file(const char *filename, uint8_t **buf);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user