1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2012 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
8 #include "bitcoinrpc.h"
14 using namespace json_spirit;
17 Value encryptdata(const Array& params, bool fHelp)
19 if (fHelp || params.size() != 2)
21 "encryptdata <public key> <hex data>\n"
22 "Encrypt octet stream with provided public key..\n");
24 CPubKey pubKey(ParseHex(params[0].get_str()));
26 vector<unsigned char> vchEncrypted;
27 pubKey.EncryptData(ParseHex(params[1].get_str()), vchEncrypted);
29 return HexStr(vchEncrypted);
32 Value decryptdata(const Array& params, bool fHelp)
34 if (fHelp || params.size() != 2)
36 "decryptdata <novacoin address> <encrypted stream>\n"
37 "Decrypt octet stream.\n");
39 EnsureWalletIsUnlocked();
40 CBitcoinAddress addr(params[0].get_str());
46 pwalletMain->GetKey(keyID, key);
48 vector<unsigned char> vchDecrypted;
49 key.DecryptData(ParseHex(params[1].get_str()), vchDecrypted);
51 return HexStr(vchDecrypted);
54 Value encryptmessage(const Array& params, bool fHelp)
56 if (fHelp || params.size() != 2)
58 "encryptmessage <public key> <message string>\n"
59 "Encrypt message with provided public key.\n");
61 CPubKey pubKey(ParseHex(params[0].get_str()));
63 vector<unsigned char> vchEncrypted;
64 string strData = params[1].get_str();
65 pubKey.EncryptData(vector<unsigned char>(strData.begin(), strData.end()), vchEncrypted);
67 return EncodeBase58Check(vchEncrypted);
70 Value decryptmessage(const Array& params, bool fHelp)
72 if (fHelp || params.size() != 2)
74 "decryptdata <novacoin address> <encrypted message>\n"
75 "Decrypt message string.\n");
77 EnsureWalletIsUnlocked();
78 CBitcoinAddress addr(params[0].get_str());
84 pwalletMain->GetKey(keyID, key);
86 vector<unsigned char> vchEncrypted;
87 if (!DecodeBase58Check(params[1].get_str(), vchEncrypted))
88 throw runtime_error("Incorrect string");
89 vector<unsigned char> vchDecrypted;
90 key.DecryptData(vchEncrypted, vchDecrypted);
92 return std::string((const char*)&vchDecrypted[0], vchDecrypted.size());