Bitcoin Core
21.99.0
P2P Digital Currency
src
crypto
hmac_sha512.cpp
Go to the documentation of this file.
1
// Copyright (c) 2014-2018 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_sha512.h
>
6
7
#include <
string.h
>
8
9
CHMAC_SHA512::CHMAC_SHA512
(
const
unsigned
char
* key,
size_t
keylen)
10
{
11
unsigned
char
rkey[128];
12
if
(keylen <= 128) {
13
memcpy(rkey, key, keylen);
14
memset(rkey + keylen, 0, 128 - keylen);
15
}
else
{
16
CSHA512
().
Write
(key, keylen).
Finalize
(rkey);
17
memset(rkey + 64, 0, 64);
18
}
19
20
for
(
int
n = 0; n < 128; n++)
21
rkey[n] ^= 0x5c;
22
outer
.
Write
(rkey, 128);
23
24
for
(
int
n = 0; n < 128; n++)
25
rkey[n] ^= 0x5c ^ 0x36;
26
inner
.
Write
(rkey, 128);
27
}
28
29
void
CHMAC_SHA512::Finalize
(
unsigned
char
hash[OUTPUT_SIZE])
30
{
31
unsigned
char
temp[64];
32
inner
.
Finalize
(temp);
33
outer
.
Write
(temp, 64).
Finalize
(hash);
34
}
string.h
hmac_sha512.h
CSHA512::Finalize
void Finalize(unsigned char hash[OUTPUT_SIZE])
Definition:
sha512.cpp:185
CHMAC_SHA512::Finalize
void Finalize(unsigned char hash[OUTPUT_SIZE])
Definition:
hmac_sha512.cpp:29
CHMAC_SHA512::CHMAC_SHA512
CHMAC_SHA512(const unsigned char *key, size_t keylen)
Definition:
hmac_sha512.cpp:9
CSHA512::Write
CSHA512 & Write(const unsigned char *data, size_t len)
Definition:
sha512.cpp:159
CHMAC_SHA512::outer
CSHA512 outer
Definition:
hmac_sha512.h:17
CHMAC_SHA512::inner
CSHA512 inner
Definition:
hmac_sha512.h:18
CSHA512
A hasher class for SHA-512.
Definition:
sha512.h:12
Generated on Mon Apr 19 2021 20:03:36 for Bitcoin Core by
1.8.17