mirror of
https://github.com/EvernodeXRPL/sashimono.git
synced 2026-07-29 01:50:47 +00:00
Added redeem decryption support to message board. (#68)
* Added redeem decryption support. * Used updated evernode lib package.
This commit is contained in:
@@ -59,6 +59,7 @@ class MessageBoard {
|
||||
catch (e) { throw e; }
|
||||
|
||||
this.xrplAcc = new XrplAccount(this.rippleAPI, this.cfg.xrpl.address, this.cfg.xrpl.secret);
|
||||
this.accKeyPair = this.xrplAcc.deriveKeypair();
|
||||
|
||||
if (IS_DEREGISTER) {
|
||||
await this.deregisterHost();
|
||||
@@ -136,7 +137,15 @@ class MessageBoard {
|
||||
|
||||
// The last validated ledger when we receive the redeem request.
|
||||
const startingValidatedLedger = this.lastValidatedLedgerSequence;
|
||||
const createRes = await this.sashiCli.createInstance(JSON.parse(memo.data));
|
||||
|
||||
// Decrypt redeem requirements using the decryption key derived from host secret.
|
||||
const instanceRequirements = await EncryptionHelper.decrypt(this.accKeyPair.privateKey, memo.data);
|
||||
if (!instanceRequirements) {
|
||||
console.log('Failed to decrypt redeem data.');
|
||||
break;
|
||||
}
|
||||
|
||||
const createRes = await this.sashiCli.createInstance(instanceRequirements);
|
||||
|
||||
// Number of validated ledgers passed while the instance is created.
|
||||
const diff = this.lastValidatedLedgerSequence - startingValidatedLedger;
|
||||
@@ -207,6 +216,16 @@ class MessageBoard {
|
||||
this.cfg.xrpl.regFeeHash = res.txHash;
|
||||
this.persistConfig();
|
||||
console.log('Registration payment made for evernode account.');
|
||||
|
||||
// Set the encryption key to be used when sending encrypted redeem requirements (MessageKey account field).
|
||||
console.log("Setting message key...");
|
||||
if (await this.xrplAcc.setMessageKey(this.accKeyPair.publicKey))
|
||||
console.log("Host account message key set.");
|
||||
else
|
||||
console.log("Failed to set host account message key.");
|
||||
}
|
||||
else {
|
||||
console.log("Registration payment failed.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -225,8 +244,8 @@ class MessageBoard {
|
||||
|
||||
async sendRedeemResponse(txHash, txPubkey, txAccount, response, encrypt = true) {
|
||||
// Verifying the pubkey.
|
||||
if (!(await this.rippleAPI.isValidAddress(txPubkey, txAccount)))
|
||||
throw 'Invalid public key for encryption';
|
||||
if (!(await this.rippleAPI.isValidKeyForAddress(txPubkey, txAccount)))
|
||||
throw 'Invalid public key for redeem response encryption.';
|
||||
|
||||
// Encrypt response with user pubkey.
|
||||
if (encrypt)
|
||||
|
||||
18
mb-xrpl/package-lock.json
generated
18
mb-xrpl/package-lock.json
generated
@@ -9,9 +9,9 @@
|
||||
"integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "16.10.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz",
|
||||
"integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ=="
|
||||
"version": "16.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.4.tgz",
|
||||
"integrity": "sha512-EITwVTX5B4nDjXjGeQAfXOrm+Jn+qNjDmyDRtWoD+wZsl/RDPRTFRKivs4Mt74iOFlLOrE5+Kf+p5yjyhm3+cA=="
|
||||
},
|
||||
"@types/ws": {
|
||||
"version": "7.4.7",
|
||||
@@ -176,9 +176,9 @@
|
||||
}
|
||||
},
|
||||
"big-integer": {
|
||||
"version": "1.6.49",
|
||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.49.tgz",
|
||||
"integrity": "sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw=="
|
||||
"version": "1.6.50",
|
||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz",
|
||||
"integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ=="
|
||||
},
|
||||
"bignumber.js": {
|
||||
"version": "9.0.1",
|
||||
@@ -490,9 +490,9 @@
|
||||
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
|
||||
},
|
||||
"evernode-js-client": {
|
||||
"version": "0.0.19-alpha",
|
||||
"resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.0.19-alpha.tgz",
|
||||
"integrity": "sha512-0ErIuURPkYdt3eOhy8RV2H5+OrLtcrWS0+ARhSadQvkM6svQRd4bsS9Scvp6gikRjcZ6qPPSDP1IUVTnJkFkSw==",
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.1.0.tgz",
|
||||
"integrity": "sha512-ZFdHFzDZ7E5V7xl7UTab0ZXGd7nrWNgyDYHzND7fa6GgGD88hTVqlL+qX7pVY0oA7ZMubsiE4U6w1CwoY6T2lg==",
|
||||
"requires": {
|
||||
"eccrypto": "1.1.6",
|
||||
"ripple-lib": "1.9.8"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"build": "ncc build mb-xrpl.js -o dist"
|
||||
},
|
||||
"dependencies": {
|
||||
"evernode-js-client": "0.0.19-alpha",
|
||||
"evernode-js-client": "0.1.0",
|
||||
"sqlite3": "5.0.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import fetch from "node-fetch";
|
||||
import { exec } from "child_process";
|
||||
import fs from "fs";
|
||||
import evernode from "evernode-js-client";
|
||||
import { exit } from "process";
|
||||
const { EvernodeClient, XrplAccount, RippleAPIWrapper } = evernode;
|
||||
|
||||
const REDEEM_AMOUNT = 18000; // 18000 Moments ~ 60days
|
||||
@@ -152,7 +153,7 @@ async function initHosts() {
|
||||
await Promise.all(hosts.map(host => initHostAccountData(host)))
|
||||
|
||||
for (const host of hosts) {
|
||||
const { ownsTokens, acc } = hostAccounts[host];
|
||||
const { ownsTokens, hostAccount: acc } = hostAccounts[host];
|
||||
if (!ownsTokens)
|
||||
await transferHostingTokens(acc.token, acc.address, acc.secret);
|
||||
}
|
||||
@@ -250,6 +251,8 @@ async function main() {
|
||||
var args = process.argv.slice(2);
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
if (shouldAbort)
|
||||
exit();
|
||||
console.log('Received SIGINT. Aborting...');
|
||||
shouldAbort = true;
|
||||
});
|
||||
|
||||
18
test/vm-cluster/package-lock.json
generated
18
test/vm-cluster/package-lock.json
generated
@@ -9,9 +9,9 @@
|
||||
"integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "16.10.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz",
|
||||
"integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ=="
|
||||
"version": "16.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.4.tgz",
|
||||
"integrity": "sha512-EITwVTX5B4nDjXjGeQAfXOrm+Jn+qNjDmyDRtWoD+wZsl/RDPRTFRKivs4Mt74iOFlLOrE5+Kf+p5yjyhm3+cA=="
|
||||
},
|
||||
"@types/ws": {
|
||||
"version": "7.4.7",
|
||||
@@ -64,9 +64,9 @@
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"big-integer": {
|
||||
"version": "1.6.49",
|
||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.49.tgz",
|
||||
"integrity": "sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw=="
|
||||
"version": "1.6.50",
|
||||
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz",
|
||||
"integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ=="
|
||||
},
|
||||
"bignumber.js": {
|
||||
"version": "9.0.1",
|
||||
@@ -285,9 +285,9 @@
|
||||
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
|
||||
},
|
||||
"evernode-js-client": {
|
||||
"version": "0.0.19-alpha",
|
||||
"resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.0.19-alpha.tgz",
|
||||
"integrity": "sha512-0ErIuURPkYdt3eOhy8RV2H5+OrLtcrWS0+ARhSadQvkM6svQRd4bsS9Scvp6gikRjcZ6qPPSDP1IUVTnJkFkSw==",
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/evernode-js-client/-/evernode-js-client-0.1.0.tgz",
|
||||
"integrity": "sha512-ZFdHFzDZ7E5V7xl7UTab0ZXGd7nrWNgyDYHzND7fa6GgGD88hTVqlL+qX7pVY0oA7ZMubsiE4U6w1CwoY6T2lg==",
|
||||
"requires": {
|
||||
"eccrypto": "1.1.6",
|
||||
"ripple-lib": "1.9.8"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "evcluster",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"evernode-js-client": "0.0.19-alpha",
|
||||
"evernode-js-client": "0.1.0",
|
||||
"node-fetch": "3.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user