X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Frpccrypt.cpp;fp=src%2Frpccrypt.cpp;h=aaccb701ffa82a127a57369e6f28911f54780958;hp=056917636608c91382e1826b959929d0f0dffad2;hb=ac7598160fb4a54fcc2c759e3f6c8a461b331381;hpb=6ca5afa667d15dc0de629290ba75bb6aa5697be0 diff --git a/src/rpccrypt.cpp b/src/rpccrypt.cpp index 0569176..aaccb70 100644 --- a/src/rpccrypt.cpp +++ b/src/rpccrypt.cpp @@ -50,3 +50,44 @@ Value decryptdata(const Array& params, bool fHelp) return HexStr(vchDecrypted); } + +Value encryptmessage(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 2) + throw runtime_error( + "encryptmessage \n" + "Encrypt message with provided public key.\n"); + + CPubKey pubKey(ParseHex(params[0].get_str())); + + vector vchEncrypted; + string strData = params[1].get_str(); + pubKey.EncryptData(vector(strData.begin(), strData.end()), vchEncrypted); + + return EncodeBase58Check(vchEncrypted); +} + +Value decryptmessage(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 2) + throw runtime_error( + "decryptdata \n" + "Decrypt message string.\n"); + + EnsureWalletIsUnlocked(); + CBitcoinAddress addr(params[0].get_str()); + + CKeyID keyID; + addr.GetKeyID(keyID); + + CKey key; + pwalletMain->GetKey(keyID, key); + + vector vchEncrypted; + if (!DecodeBase58Check(params[1].get_str(), vchEncrypted)) + throw runtime_error("Incorrect string"); + vector vchDecrypted; + key.DecryptData(vchEncrypted, vchDecrypted); + + return std::string((const char*)&vchDecrypted[0], vchDecrypted.size()); +}