X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=inline;f=bertos%2Fsec%2Fmac%2Fhmac.c;h=7e077e94c71bedc41681cec6b7ac6e72fb54c694;hb=39e200e1f43474a96888f97e2271728c9605ccbe;hp=1616ec445ce4ffef2788f3006c0d2e2bf96d2d2a;hpb=ffcd73346399453a46d47c920545a10885ed42f9;p=bertos.git diff --git a/bertos/sec/mac/hmac.c b/bertos/sec/mac/hmac.c index 1616ec44..7e077e94 100644 --- a/bertos/sec/mac/hmac.c +++ b/bertos/sec/mac/hmac.c @@ -32,7 +32,7 @@ * * \brief HMAC implementation * \author Giovanni Bajo - * + * */ #include "hmac.h" @@ -40,66 +40,66 @@ #include -static void HMAC_set_key(Mac *m, const uint8_t *key, size_t key_len) +static void hmac_set_key(Mac *m, const void *key, size_t key_len) { - HMAC_Context *ctx = (HMAC_Context *)m; + HmacContext *ctx = (HmacContext *)m; memset(ctx->key, 0, ctx->m.key_len); if (key_len <= ctx->m.key_len) - memcpy(ctx->key, key, key_len); + memcpy(ctx->key, key, key_len); else { hash_begin(ctx->h); hash_update(ctx->h, key, key_len); memcpy(ctx->key, hash_final(ctx->h), hash_digest_len(ctx->h)); } - + xor_block_const(ctx->key, ctx->key, 0x5C, ctx->m.key_len); } -static void HMAC_begin(Mac *m) +static void hmac_begin(Mac *m) { - HMAC_Context *ctx = (HMAC_Context *)m; + HmacContext *ctx = (HmacContext *)m; int klen = ctx->m.key_len; - + xor_block_const(ctx->key, ctx->key, 0x36^0x5C, klen); hash_begin(ctx->h); hash_update(ctx->h, ctx->key, klen); } -static void HMAC_update(Mac *m, const uint8_t *data, size_t len) +static void hmac_update(Mac *m, const void *data, size_t len) { - HMAC_Context *ctx = (HMAC_Context *)m; + HmacContext *ctx = (HmacContext *)m; hash_update(ctx->h, data, len); } -static uint8_t *HMAC_final(Mac *m) +static uint8_t *hmac_final(Mac *m) { - HMAC_Context *ctx = (HMAC_Context *)m; + HmacContext *ctx = (HmacContext *)m; int hlen = hash_digest_len(ctx->h); uint8_t temp[hlen]; memcpy(temp, hash_final(ctx->h), hlen); - + xor_block_const(ctx->key, ctx->key, 0x5C^0x36, ctx->m.key_len); hash_begin(ctx->h); hash_update(ctx->h, ctx->key, ctx->m.key_len); hash_update(ctx->h, temp, hlen); - + PURGE(temp); return hash_final(ctx->h); } /*********************************************************************/ -void HMAC_init(HMAC_Context *ctx, Hash *h) +void hmac_init(HmacContext *ctx, Hash *h) { ctx->h = h; ctx->m.key_len = hash_block_len(h); ctx->m.digest_len = hash_digest_len(h); - ctx->m.set_key = HMAC_set_key; - ctx->m.begin = HMAC_begin; - ctx->m.update = HMAC_update; - ctx->m.final = HMAC_final; + ctx->m.set_key = hmac_set_key; + ctx->m.begin = hmac_begin; + ctx->m.update = hmac_update; + ctx->m.final = hmac_final; ASSERT(sizeof(ctx->key) >= ctx->m.key_len); }