void hmac_sha1_init()

in src/hmac-sha.c [14:41]


void hmac_sha1_init(hmac_sha1_ctx_t *s, const void *key, uint16_t keylength_b){
    uint8_t buffer[SHA1_BLOCK_BYTES];
    uint8_t i;

    memset(buffer, 0, SHA1_BLOCK_BYTES);
    if (keylength_b > SHA1_BLOCK_BITS){
        sha1((void*)buffer, key, keylength_b);
    } else {
        memcpy(buffer, key, (keylength_b+7)/8);
    }

    for (i=0; i<SHA1_BLOCK_BYTES; ++i){
        buffer[i] ^= IPAD;
    }
    sha1_init(&(s->a));
    sha1_nextBlock(&(s->a), buffer);

    for (i=0; i<SHA1_BLOCK_BYTES; ++i){
        buffer[i] ^= IPAD^OPAD;
    }
    sha1_init(&(s->b));
    sha1_nextBlock(&(s->b), buffer);


#if defined SECURE_WIPE_BUFFER
    memset(buffer, 0, SHA1_BLOCK_BYTES);
#endif
}