]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - hmac-sha256.c
renaming to AVR-Crypto-Lib
[avr-crypto-lib.git] / hmac-sha256.c
index c57ba95becb42b71b83ee4cb25d310462cc3f108..d84f46dd7a323a58ac6e705088a69fd9695f85d0 100644 (file)
@@ -1,6 +1,6 @@
 /* hmac-sha256.c */
 /*
-    This file is part of the Crypto-avr-lib/microcrypt-lib.
+    This file is part of the This file is part of the AVR-Crypto-Lib.
     Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
 
     This program is free software: you can redistribute it and/or modify
@@ -19,9 +19,9 @@
 /**
  * 
  * implementation of HMAC as described in RFC2104
- * Author:     Daniel Otte
- * 
- * License:    GPL
+ * Author:      Daniel Otte
+ * email:       daniel.otte@rub.de
+ * License:     GPLv3 or later
  **/
 
 /* 
@@ -40,41 +40,41 @@ typedef sha256_ctx_t hmac_sha256_ctx_t;
 
 #ifndef HMAC_SHORTONLY
 
-void hmac_sha256_init(hmac_sha256_ctx_t *s, void* key, uint16_t kl){
-       uint8_t buffer[SHA256_BLOCK_BITS/8];
+void hmac_sha256_init(hmac_sha256_ctx_t *s, void* key, uint16_t keylength_b){
+       uint8_t buffer[SHA256_HASH_BYTES];
        uint8_t i;
        
-       memset(buffer, 0, SHA256_BLOCK_BITS/8);
-       if (kl > SHA256_BLOCK_BITS){
-               sha256((void*)buffer, key, kl);
+       memset(buffer, 0, SHA256_HASH_BYTES);
+       if (keylength_b > SHA256_BLOCK_BITS){
+               sha256((void*)buffer, key, keylength_b);
        } else {
-               memcpy(buffer, key, (kl+7)/8);
+               memcpy(buffer, key, (keylength_b+7)/8);
        }
        
-       for (i=0; i<SHA256_BLOCK_BITS/8; ++i){
+       for (i=0; i<SHA256_HASH_BYTES; ++i){
                buffer[i] ^= IPAD;
        }
        
        sha256_init(s);
        sha256_nextBlock(s, buffer);
 #if defined SECURE_WIPE_BUFFER
-       memset(buffer, 0, SHA256_BLOCK_BITS/8);
+       memset(buffer, 0, SHA256_HASH_BYTES);
 #endif
 }
 
-void hmac_sha256_final(hmac_sha256_ctx_t *s, void* key, uint16_t kl){
-       uint8_t buffer[SHA256_BLOCK_BITS/8];
+void hmac_sha256_final(hmac_sha256_ctx_t *s, void* key, uint16_t keylength_b){
+       uint8_t buffer[SHA256_HASH_BYTES];
        uint8_t i;
        sha256_ctx_t a;
        
-       memset(buffer, 0, SHA256_BLOCK_BITS/8);
-       if (kl > SHA256_BLOCK_BITS){
-               sha256((void*)buffer, key, kl);
+       memset(buffer, 0, SHA256_HASH_BYTES);
+       if (keylength_b > SHA256_BLOCK_BITS){
+               sha256((void*)buffer, key, keylength_b);
        } else {
-               memcpy(buffer, key, (kl+7)/8);
+               memcpy(buffer, key, (keylength_b+7)/8);
        }
        
-       for (i=0; i<SHA256_BLOCK_BITS/8; ++i){
+       for (i=0; i<SHA256_HASH_BYTES; ++i){
                buffer[i] ^= OPAD;
        }
        
@@ -84,7 +84,7 @@ void hmac_sha256_final(hmac_sha256_ctx_t *s, void* key, uint16_t kl){
        sha256_lastBlock(&a, buffer, SHA256_HASH_BITS);
        memcpy(s, &a, sizeof(sha256_ctx_t));
 #if defined SECURE_WIPE_BUFFER
-       memset(buffer, 0, SHA256_BLOCK_BITS/8);
+       memset(buffer, 0, SHA256_HASH_BYTES);
        memset(a.h, 0, 8*4);
 #endif 
 }
@@ -100,33 +100,33 @@ void hmac_sha256_lastBlock()
  * keylength in bits!
  * message length in bits!
  */
-void hmac_sha256(void* dest, void* key, uint16_t kl, void* msg, uint64_t ml){ /* a one-shot*/
+void hmac_sha256(void* dest, void* key, uint16_t keylength_b, void* msg, uint64_t msglength_b){ /* a one-shot*/
        sha256_ctx_t s;
        uint8_t i;
-       uint8_t buffer[SHA256_BLOCK_BITS/8];
+       uint8_t buffer[SHA256_HASH_BYTES];
        
-       memset(buffer, 0, SHA256_BLOCK_BITS/8);
+       memset(buffer, 0, SHA256_HASH_BYTES);
        
        /* if key is larger than a block we have to hash it*/
-       if (kl > SHA256_BLOCK_BITS){
-               sha256((void*)buffer, key, kl);
+       if (keylength_b > SHA256_BLOCK_BITS){
+               sha256((void*)buffer, key, keylength_b);
        } else {
-               memcpy(buffer, key, (kl+7)/8);
+               memcpy(buffer, key, (keylength_b+7)/8);
        }
        
-       for (i=0; i<SHA256_BLOCK_BITS/8; ++i){
+       for (i=0; i<SHA256_HASH_BYTES; ++i){
                buffer[i] ^= IPAD;
        }
        sha256_init(&s);
        sha256_nextBlock(&s, buffer);
-       while (ml >= SHA256_BLOCK_BITS){
+       while (msglength_b >= SHA256_BLOCK_BITS){
                sha256_nextBlock(&s, msg);
-               msg = (uint8_t*)msg + SHA256_BLOCK_BITS/8;
-               ml -=  SHA256_BLOCK_BITS;
+               msg = (uint8_t*)msg + SHA256_HASH_BYTES;
+               msglength_b -=  SHA256_BLOCK_BITS;
        }
-       sha256_lastBlock(&s, msg, ml);
+       sha256_lastBlock(&s, msg, msglength_b);
        /* since buffer still contains key xor ipad we can do ... */
-       for (i=0; i<SHA256_BLOCK_BITS/8; ++i){
+       for (i=0; i<SHA256_HASH_BYTES; ++i){
                buffer[i] ^= IPAD ^ OPAD;
        }
        sha256_ctx2hash(dest, &s); /* save inner hash temporary to dest */