Bitcoin ABC 0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
chacha20.h
Go to the documentation of this file.
1// Copyright (c) 2017 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#ifndef BITCOIN_CRYPTO_CHACHA20_H
6#define BITCOIN_CRYPTO_CHACHA20_H
7
8#include <cstdint>
9#include <cstdlib>
10
15class ChaCha20 {
16private:
18
19public:
20 ChaCha20();
21 ChaCha20(const uint8_t *key, size_t keylen);
23 void SetKey(const uint8_t *key, size_t keylen);
24 // set the 64bit nonce
25 void SetIV(uint64_t iv);
26 // set the 64bit block counter
27 void Seek(uint64_t pos);
28
30 void Keystream(uint8_t *c, size_t bytes);
31
36 void Crypt(const uint8_t *input, uint8_t *output, size_t bytes);
37};
38
39#endif // BITCOIN_CRYPTO_CHACHA20_H
A class for ChaCha20 256-bit stream cipher developed by Daniel J.
Definition chacha20.h:15
void SetKey(const uint8_t *key, size_t keylen)
set key with flexible keylength; 256bit recommended
Definition chacha20.cpp:32
void Keystream(uint8_t *c, size_t bytes)
outputs the keystream of size <bytes> into
Definition chacha20.cpp:79
void Crypt(const uint8_t *input, uint8_t *output, size_t bytes)
enciphers the message <input> of length <bytes> and write the enciphered representation into <output>...
Definition chacha20.cpp:194
uint32_t input[16]
Definition chacha20.h:17
void SetIV(uint64_t iv)
Definition chacha20.cpp:69
void Seek(uint64_t pos)
Definition chacha20.cpp:74
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
Definition random.h:85