/Users/eugenesiegel/btc/bitcoin/src/crypto/hmac_sha256.cpp
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | // Copyright (c) 2014-present The Bitcoin Core developers | 
| 2 |  | // Distributed under the MIT software license, see the accompanying | 
| 3 |  | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | 
| 4 |  |  | 
| 5 |  | #include <crypto/hmac_sha256.h> | 
| 6 |  |  | 
| 7 |  | #include <cstring> | 
| 8 |  |  | 
| 9 |  | CHMAC_SHA256::CHMAC_SHA256(const unsigned char* key, size_t keylen) | 
| 10 | 0 | { | 
| 11 | 0 |     unsigned char rkey[64]; | 
| 12 | 0 |     if (keylen <= 64) { | 
| 13 | 0 |         memcpy(rkey, key, keylen); | 
| 14 | 0 |         memset(rkey + keylen, 0, 64 - keylen); | 
| 15 | 0 |     } else { | 
| 16 | 0 |         CSHA256().Write(key, keylen).Finalize(rkey); | 
| 17 | 0 |         memset(rkey + 32, 0, 32); | 
| 18 | 0 |     } | 
| 19 |  | 
 | 
| 20 | 0 |     for (int n = 0; n < 64; n++) | 
| 21 | 0 |         rkey[n] ^= 0x5c; | 
| 22 | 0 |     outer.Write(rkey, 64); | 
| 23 |  | 
 | 
| 24 | 0 |     for (int n = 0; n < 64; n++) | 
| 25 | 0 |         rkey[n] ^= 0x5c ^ 0x36; | 
| 26 | 0 |     inner.Write(rkey, 64); | 
| 27 | 0 | } | 
| 28 |  |  | 
| 29 |  | void CHMAC_SHA256::Finalize(unsigned char hash[OUTPUT_SIZE]) | 
| 30 | 0 | { | 
| 31 | 0 |     unsigned char temp[32]; | 
| 32 | 0 |     inner.Finalize(temp); | 
| 33 | 0 |     outer.Write(temp, 32).Finalize(hash); | 
| 34 | 0 | } |