mirror of
https://github.com/esp8266/Arduino.git
synced 2025-10-13 23:48:28 +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,
|
||||
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
|
||||
**************************************************************************/
|
||||
|
@@ -44,6 +44,12 @@
|
||||
*/
|
||||
void hmac_md5(const uint8_t *msg, int length, const uint8_t *key,
|
||||
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;
|
||||
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_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_Init(&context);
|
||||
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,
|
||||
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;
|
||||
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_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_Init(&context);
|
||||
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,
|
||||
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;
|
||||
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_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_Init(&context);
|
||||
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 (*hmac_func)(const uint8_t *msg, int length, const uint8_t *key,
|
||||
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);
|
||||
|
||||
|
Reference in New Issue
Block a user