PRCYCoin  2.0.0.7rc1
P2P Digital Currency
aes.h
Go to the documentation of this file.
1 // Copyright (c) 2015 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 // C++ wrapper around ctaes, a constant-time AES implementation
6 
7 #ifndef BITCOIN_CRYPTO_AES_H
8 #define BITCOIN_CRYPTO_AES_H
9 
10 extern "C" {
11 #include "crypto/ctaes/ctaes.h"
12 }
13 
14 static const int AES_BLOCKSIZE = 16;
15 static const int AES128_KEYSIZE = 16;
16 static const int AES256_KEYSIZE = 32;
17 
20 {
21 private:
23 
24 public:
25  AES128Encrypt(const unsigned char key[16]);
27  void Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const;
28 };
29 
32 {
33 private:
35 
36 public:
37  AES128Decrypt(const unsigned char key[16]);
39  void Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const;
40 };
41 
44 {
45 private:
47 
48 public:
49  AES256Encrypt(const unsigned char key[32]);
51  void Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const;
52 };
53 
56 {
57 private:
59 
60 public:
61  AES256Decrypt(const unsigned char key[32]);
63  void Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const;
64 };
65 
67 {
68 public:
69  AES256CBCEncrypt(const unsigned char key[AES256_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn);
71  int Encrypt(const unsigned char* data, int size, unsigned char* out) const;
72 
73 private:
75  const bool pad;
76  unsigned char iv[AES_BLOCKSIZE];
77 };
78 
80 {
81 public:
82  AES256CBCDecrypt(const unsigned char key[AES256_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn);
84  int Decrypt(const unsigned char* data, int size, unsigned char* out) const;
85 
86 private:
88  const bool pad;
89  unsigned char iv[AES_BLOCKSIZE];
90 };
91 
93 {
94 public:
95  AES128CBCEncrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn);
97  int Encrypt(const unsigned char* data, int size, unsigned char* out) const;
98 
99 private:
101  const bool pad;
102  unsigned char iv[AES_BLOCKSIZE];
103 };
104 
106 {
107 public:
108  AES128CBCDecrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn);
110  int Decrypt(const unsigned char* data, int size, unsigned char* out) const;
111 
112 private:
114  const bool pad;
115  unsigned char iv[AES_BLOCKSIZE];
116 };
117 
118 #endif // BITCOIN_CRYPTO_AES_H
AES128CBCEncrypt::AES128CBCEncrypt
AES128CBCEncrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn)
Definition: aes.cpp:187
AES128CBCEncrypt::iv
unsigned char iv[AES_BLOCKSIZE]
Definition: aes.h:102
AES128Encrypt::ctx
AES128_ctx ctx
Definition: aes.h:22
AES256CBCDecrypt::iv
unsigned char iv[AES_BLOCKSIZE]
Definition: aes.h:89
AES256CBCEncrypt::pad
const bool pad
Definition: aes.h:75
AES256CBCEncrypt::iv
unsigned char iv[AES_BLOCKSIZE]
Definition: aes.h:76
AES128CBCDecrypt
Definition: aes.h:105
AES128Encrypt::AES128Encrypt
AES128Encrypt(const unsigned char key[16])
Definition: aes.cpp:15
AES128CBCDecrypt::AES128CBCDecrypt
AES128CBCDecrypt(const unsigned char key[AES128_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn)
Definition: aes.cpp:203
AES256Decrypt::ctx
AES256_ctx ctx
Definition: aes.h:58
AES256Decrypt::AES256Decrypt
AES256Decrypt(const unsigned char key[32])
Definition: aes.cpp:60
AES128CBCEncrypt
Definition: aes.h:92
AES256Encrypt::AES256Encrypt
AES256Encrypt(const unsigned char key[32])
Definition: aes.cpp:45
AES256Encrypt::Encrypt
void Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const
Definition: aes.cpp:55
AES256CBCDecrypt::dec
const AES256Decrypt dec
Definition: aes.h:87
AES128CBCDecrypt::Decrypt
int Decrypt(const unsigned char *data, int size, unsigned char *out) const
Definition: aes.cpp:214
AES256Decrypt::Decrypt
void Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const
Definition: aes.cpp:70
AES128CBCDecrypt::iv
unsigned char iv[AES_BLOCKSIZE]
Definition: aes.h:115
AES256CBCDecrypt::pad
const bool pad
Definition: aes.h:88
AES256Encrypt::~AES256Encrypt
~AES256Encrypt()
Definition: aes.cpp:50
AES128CBCEncrypt::enc
const AES128Encrypt enc
Definition: aes.h:100
AES128Decrypt::~AES128Decrypt
~AES128Decrypt()
Definition: aes.cpp:35
AES256CBCDecrypt::Decrypt
int Decrypt(const unsigned char *data, int size, unsigned char *out) const
Definition: aes.cpp:177
AES128CBCEncrypt::Encrypt
int Encrypt(const unsigned char *data, int size, unsigned char *out) const
Definition: aes.cpp:198
AES256CBCDecrypt::AES256CBCDecrypt
AES256CBCDecrypt(const unsigned char key[AES256_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn)
Definition: aes.cpp:170
AES128Decrypt
A decryption class for AES-128.
Definition: aes.h:31
AES128Encrypt::~AES128Encrypt
~AES128Encrypt()
Definition: aes.cpp:20
AES128CBCDecrypt::~AES128CBCDecrypt
~AES128CBCDecrypt()
Definition: aes.cpp:209
AES256CBCDecrypt
Definition: aes.h:79
AES128Decrypt::Decrypt
void Decrypt(unsigned char plaintext[16], const unsigned char ciphertext[16]) const
Definition: aes.cpp:40
AES256CBCEncrypt
Definition: aes.h:66
AES128CBCDecrypt::dec
const AES128Decrypt dec
Definition: aes.h:113
AES256CBCEncrypt::AES256CBCEncrypt
AES256CBCEncrypt(const unsigned char key[AES256_KEYSIZE], const unsigned char ivIn[AES_BLOCKSIZE], bool padIn)
Definition: aes.cpp:154
AES256_ctx
Definition: ctaes.h:25
AES256Encrypt
An encryption class for AES-256.
Definition: aes.h:43
AES128CBCEncrypt::pad
const bool pad
Definition: aes.h:101
AES256CBCDecrypt::~AES256CBCDecrypt
~AES256CBCDecrypt()
Definition: aes.cpp:182
AES128Encrypt::Encrypt
void Encrypt(unsigned char ciphertext[16], const unsigned char plaintext[16]) const
Definition: aes.cpp:25
AES256CBCEncrypt::Encrypt
int Encrypt(const unsigned char *data, int size, unsigned char *out) const
Definition: aes.cpp:160
AES256Decrypt::~AES256Decrypt
~AES256Decrypt()
Definition: aes.cpp:65
key
CKey key
Definition: bip38tooldialog.cpp:173
AES128_ctx
Definition: ctaes.h:17
AES128Decrypt::ctx
AES128_ctx ctx
Definition: aes.h:34
AES256Encrypt::ctx
AES256_ctx ctx
Definition: aes.h:46
AES128Decrypt::AES128Decrypt
AES128Decrypt(const unsigned char key[16])
Definition: aes.cpp:30
AES256CBCEncrypt::enc
const AES256Encrypt enc
Definition: aes.h:74
AES128CBCDecrypt::pad
const bool pad
Definition: aes.h:114
ctaes.h
AES128CBCEncrypt::~AES128CBCEncrypt
~AES128CBCEncrypt()
Definition: aes.cpp:193
AES256CBCEncrypt::~AES256CBCEncrypt
~AES256CBCEncrypt()
Definition: aes.cpp:165
AES128Encrypt
An encryption class for AES-128.
Definition: aes.h:19
AES256Decrypt
A decryption class for AES-256.
Definition: aes.h:55