annotate src/crypter.cpp @ 2968:04987f8907d6 draft

Merge branch '0.5.x' into 0.6.0.x Conflicts: src/main.cpp
author Luke Dashjr <luke-jr+git@utopios.org>
date Fri, 04 May 2012 19:55:54 +0000
parents 380b719106a8
children 6d9afd854c97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1818
20667468f95b Update all copyrights to 2012
Gavin Andresen <gavinandresen@gmail.com>
parents: 1533
diff changeset
1 // Copyright (c) 2009-2012 The Bitcoin Developers
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
2 // Distributed under the MIT/X11 software license, see the accompanying
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
4
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
5 #include <openssl/aes.h>
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
6 #include <openssl/evp.h>
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
7 #include <vector>
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
8 #include <string>
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
9 #include "headers.h"
1390
97bac6569f62 Fix build on windows and mac
Gavin Andresen <gavinandresen@gmail.com>
parents: 760
diff changeset
10 #ifdef WIN32
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
11 #include <windows.h>
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
12 #endif
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
13
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
14 #include "crypter.h"
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
15 #include "main.h"
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
16 #include "util.h"
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
17
1533
d0ccfedf2957 Implement an mlock()'d string class for storing passphrases
Dylan Noblesmith <nobled@dreamwidth.org>
parents: 1390
diff changeset
18 bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector<unsigned char>& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod)
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
19 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
20 if (nRounds < 1 || chSalt.size() != WALLET_CRYPTO_SALT_SIZE)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
21 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
22
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
23 // Try to keep the keydata out of swap (and be a bit over-careful to keep the IV that we don't even use out of swap)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
24 // Note that this does nothing about suspend-to-disk (which will put all our key data on disk)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
25 // Note as well that at no point in this program is any attempt made to prevent stealing of keys by reading the memory of the running process.
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
26 mlock(&chKey[0], sizeof chKey);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
27 mlock(&chIV[0], sizeof chIV);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
28
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
29 int i = 0;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
30 if (nDerivationMethod == 0)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
31 i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha512(), &chSalt[0],
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
32 (unsigned char *)&strKeyData[0], strKeyData.size(), nRounds, chKey, chIV);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
33
2930
b2958cc2cbd6 Fix misc. minor sign-comparison warnings
Jeff Garzik <jeff@garzik.org>
parents: 2877
diff changeset
34 if (i != (int)WALLET_CRYPTO_KEY_SIZE)
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
35 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
36 memset(&chKey, 0, sizeof chKey);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
37 memset(&chIV, 0, sizeof chIV);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
38 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
39 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
40
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
41 fKeySet = true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
42 return true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
43 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
44
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
45 bool CCrypter::SetKey(const CKeyingMaterial& chNewKey, const std::vector<unsigned char>& chNewIV)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
46 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
47 if (chNewKey.size() != WALLET_CRYPTO_KEY_SIZE || chNewIV.size() != WALLET_CRYPTO_KEY_SIZE)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
48 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
49
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
50 // Try to keep the keydata out of swap
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
51 // Note that this does nothing about suspend-to-disk (which will put all our key data on disk)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
52 // Note as well that at no point in this program is any attempt made to prevent stealing of keys by reading the memory of the running process.
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
53 mlock(&chKey[0], sizeof chKey);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
54 mlock(&chIV[0], sizeof chIV);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
55
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
56 memcpy(&chKey[0], &chNewKey[0], sizeof chKey);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
57 memcpy(&chIV[0], &chNewIV[0], sizeof chIV);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
58
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
59 fKeySet = true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
60 return true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
61 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
62
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
63 bool CCrypter::Encrypt(const CKeyingMaterial& vchPlaintext, std::vector<unsigned char> &vchCiphertext)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
64 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
65 if (!fKeySet)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
66 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
67
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
68 // max ciphertext len for a n bytes of plaintext is
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
69 // n + AES_BLOCK_SIZE - 1 bytes
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
70 int nLen = vchPlaintext.size();
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
71 int nCLen = nLen + AES_BLOCK_SIZE, nFLen = 0;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
72 vchCiphertext = std::vector<unsigned char> (nCLen);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
73
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
74 EVP_CIPHER_CTX ctx;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
75
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
76 bool fOk = true;
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
77
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
78 EVP_CIPHER_CTX_init(&ctx);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
79 if (fOk) fOk = EVP_EncryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
80 if (fOk) fOk = EVP_EncryptUpdate(&ctx, &vchCiphertext[0], &nCLen, &vchPlaintext[0], nLen);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
81 if (fOk) fOk = EVP_EncryptFinal_ex(&ctx, (&vchCiphertext[0])+nCLen, &nFLen);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
82 EVP_CIPHER_CTX_cleanup(&ctx);
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
83
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
84 if (!fOk) return false;
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
85
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
86 vchCiphertext.resize(nCLen + nFLen);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
87 return true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
88 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
89
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
90 bool CCrypter::Decrypt(const std::vector<unsigned char>& vchCiphertext, CKeyingMaterial& vchPlaintext)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
91 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
92 if (!fKeySet)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
93 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
94
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
95 // plaintext will always be equal to or lesser than length of ciphertext
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
96 int nLen = vchCiphertext.size();
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
97 int nPLen = nLen, nFLen = 0;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
98
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
99 vchPlaintext = CKeyingMaterial(nPLen);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
100
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
101 EVP_CIPHER_CTX ctx;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
102
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
103 bool fOk = true;
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
104
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
105 EVP_CIPHER_CTX_init(&ctx);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
106 if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
107 if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
108 if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0])+nPLen, &nFLen);
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
109 EVP_CIPHER_CTX_cleanup(&ctx);
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
110
2877
843b53c1c3d1 Verify status of encrypt/decrypt calls to detect failed padding
Pieter Wuille <pieter.wuille@gmail.com>
parents: 760
diff changeset
111 if (!fOk) return false;
760
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
112
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
113 vchPlaintext.resize(nPLen + nFLen);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
114 return true;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
115 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
116
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
117
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
118 bool EncryptSecret(CKeyingMaterial& vMasterKey, const CSecret &vchPlaintext, const uint256& nIV, std::vector<unsigned char> &vchCiphertext)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
119 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
120 CCrypter cKeyCrypter;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
121 std::vector<unsigned char> chIV(WALLET_CRYPTO_KEY_SIZE);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
122 memcpy(&chIV[0], &nIV, WALLET_CRYPTO_KEY_SIZE);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
123 if(!cKeyCrypter.SetKey(vMasterKey, chIV))
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
124 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
125 return cKeyCrypter.Encrypt((CKeyingMaterial)vchPlaintext, vchCiphertext);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
126 }
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
127
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
128 bool DecryptSecret(const CKeyingMaterial& vMasterKey, const std::vector<unsigned char>& vchCiphertext, const uint256& nIV, CSecret& vchPlaintext)
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
129 {
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
130 CCrypter cKeyCrypter;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
131 std::vector<unsigned char> chIV(WALLET_CRYPTO_KEY_SIZE);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
132 memcpy(&chIV[0], &nIV, WALLET_CRYPTO_KEY_SIZE);
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
133 if(!cKeyCrypter.SetKey(vMasterKey, chIV))
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
134 return false;
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
135 return cKeyCrypter.Decrypt(vchCiphertext, *((CKeyingMaterial*)&vchPlaintext));
fd7e5b1cfc08 Add wallet privkey encryption.
Matt Corallo <matt@bluematt.me>
parents:
diff changeset
136 }