Skip to content

Commit 6aea5e4

Browse files
committed
write tests with using getting key from Hub
1 parent 9185104 commit 6aea5e4

10 files changed

+91
-175
lines changed

contracts/Hub.sol

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ contract Hub {
3939
emit PublicKeyRegistered(heir, publicKey);
4040
}
4141

42-
function registerPubKeyOracle(bytes calldata publicKey) public {
43-
registeredKeys[msg.sender] = publicKey;
44-
emit PublicKeyRegistered(msg.sender, publicKey);
42+
function registerPubKeyOracle(address oracle, bytes calldata publicKey) public {
43+
registeredKeys[oracle] = publicKey;
44+
emit PublicKeyRegistered(oracle, publicKey);
4545
}
4646

4747
//Function for getting public keys

dapps/utils/compress-key-browser-version.js

-10
This file was deleted.

dapps/utils/compress-key.js

-9
This file was deleted.

dapps/utils/decrypt-im-browser-version.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
// const compressKey = require('./compress-key.js');
2-
3-
const compressKey = require('./compress-key-browser-version.js');
41
const sodium = require('sodium-universal');
52
const CryptoJS = require('crypto-js');
63
const cryptoConfigConstant = require('./crypto-config-constant.js');
74

85
async function decryptIM(encryptedMessage, recipientPrivateKey, senderPublicKey) {
96
return new Promise((resolve, reject) => {
107
try {
8+
if (recipientPrivateKey.startsWith("0x")) {
9+
recipientPrivateKey = recipientPrivateKey.substring(2);
10+
}
11+
12+
if (senderPublicKey.startsWith("0x")) {
13+
senderPublicKey = senderPublicKey.substring(2);
14+
}
15+
1116
const privKeyBuf = Uint8Array.from(recipientPrivateKey.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
1217
const pubKeyBuf = Uint8Array.from(senderPublicKey.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
1318

dapps/utils/decrypt-im.js

-41
This file was deleted.

dapps/utils/encrypt-im-browser-version.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
// const compressKey = require('./compress-key.js');
2-
3-
const compressKey = require('./compress-key-browser-version.js');
41
const sodium = require('sodium-universal');
52
const CryptoJS = require('crypto-js');
63
const cryptoConfigConstant = require('./crypto-config-constant.js');
74

85
async function encryptIM(message, senderPrivateKey, recipientPublicKey) {
96
return new Promise((resolve, reject) => {
107
try {
8+
9+
if (typeof message === 'object') {
10+
message = JSON.stringify(message);
11+
}
12+
13+
if (senderPrivateKey.startsWith("0x")) {
14+
senderPrivateKey = senderPrivateKey.substring(2);
15+
}
16+
17+
if (recipientPublicKey.startsWith("0x")) {
18+
recipientPublicKey = recipientPublicKey.substring(2);
19+
}
20+
1121
const privKeyBuf = Uint8Array.from(senderPrivateKey.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
1222
const pubKeyBuf = Uint8Array.from(recipientPublicKey.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
1323

dapps/utils/encrypt-im.js

-71
This file was deleted.

test/encrypt-decrypt.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ describe("Encryption and Decryption", function () {
8282
expect(decryptedMessageFromOwnerToOracle).to.equal(encryptedMessage)
8383
})
8484

85-
it("create new account using ether.js and private key", async function () {
85+
it("should encrypt the message, send it to Oracle, Oracle should encrypt and send it Heir, Heir should decrypt it from Oracle and decrypt it from Owner ", async function () {
8686
const message = "Hello, world!";
8787

8888
// Encrypting a message from Owner to Heir

test/hub/pubKeyRegistration.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ describe("Hub Contract", function () {
5151
it("should register public key for oracle", async function () {
5252
const expectedPublicKey = "0x9876543210FEDCBA"; // Expected public key value by oracle
5353

54-
await hubContract.connect(owner).registerPubKeyOracle(expectedPublicKey);
55-
const registeredPublicKey = await hubContract.registeredKeys(owner.address);
54+
await hubContract.connect(owner).registerPubKeyOracle(oracle.address, expectedPublicKey);
55+
const registeredPublicKey = await hubContract.registeredKeys(oracle.address);
5656

5757
expect(registeredPublicKey.toLowerCase()).to.equal(expectedPublicKey.toLowerCase());
5858
});

test/new-encrypt-decrypt.test.js

+64-32
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,64 @@
1-
// const { expect } = require("chai");
2-
// const {ethers} = require("hardhat");
3-
// const encryptIM = require("./../dapps/utils/encrypt-im.js");
4-
// const decryptIM = require("./../dapps/utils/decrypt-im.js");
5-
// const { describe } = require("mocha");
6-
7-
8-
// describe("New encrypr decrypt tests functions", function() {
9-
// let Hub;
10-
// let hubContract;
11-
// let owner;
12-
// let heir;
13-
// let oracle;
14-
15-
// before(async function() {
16-
// Hub = await ethers.getContractFactory("Hub");
17-
// [owner, heir, oracle] = await ethers.getSigners();
18-
// ethers.ge
19-
20-
// hubContract = await Hub.deploy();
21-
// await hubContract.deployed();
22-
// })
23-
24-
// it("should encrypt and decrypt the message in Hub Smart Contract", async function() {
25-
// const ownerPublicKey = await owner.getPublicKey();
26-
27-
// await hubContract.connect(owner).registerPubKeyOwner(ownerPublicKey);
28-
// const registerPubKeyHeirByOwner = await hubContract.registeredKeys(owner.address);
29-
30-
// expect(registerPubKeyHeirByOwner).to.equal(ownerPublicKey);
31-
// })
32-
// })
1+
const { expect } = require("chai");
2+
const { ethers } = require("hardhat");
3+
4+
const encryptIM = require("./../dapps/utils/encrypt-im-browser-version.js");
5+
const decryptIM = require("./../dapps/utils/decrypt-im-browser-version.js");
6+
7+
describe("New encryption and decryption", function () {
8+
let Hub;
9+
let hubContract;
10+
let owner;
11+
let heir;
12+
let oracle;
13+
14+
before(async function () {
15+
Hub = await ethers.getContractFactory("Hub");
16+
[owner, heir, oracle] = await ethers.getSigners();
17+
ethers.ge
18+
19+
hubContract = await Hub.deploy();
20+
await hubContract.deployed();
21+
});
22+
23+
const accounts = {
24+
Owner: {
25+
address: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
26+
publicKey: '9adac7a7558764cf6bc45d88968b7d1e27b95e641c2827fba034350e91a44d22',
27+
privateKey: 'ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
28+
},
29+
Heir: {
30+
address: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
31+
publicKey: '107302eea84f3f75c50184df4102862bf50f6fbcee88bf9d7d33852ab90f302d',
32+
privateKey: '59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d',
33+
},
34+
Oracle: {
35+
address: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC",
36+
publicKey: '9a09fdb91965386b6705c734ed36c3265144967b823e23a1b665ae8be922683c',
37+
privateKey: '5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a',
38+
}
39+
}
40+
41+
it("should register public keys for owner, heir, and oracle", async function () {
42+
const ownerPublicKey = '0x' + accounts.Owner.publicKey;
43+
const heirPublicKey = '0x' + accounts.Heir.publicKey;
44+
const oraclePublicKey = '0x' + accounts.Oracle.publicKey;
45+
46+
const message = "Hello world!";
47+
48+
await hubContract.connect(owner).registerPubKeyOwner(ownerPublicKey);
49+
await hubContract.connect(owner).registerPubKeyHeir(heir.address, heirPublicKey);
50+
await hubContract.connect(owner).registerPubKeyOracle(oracle.address, oraclePublicKey);
51+
52+
const contractPublicKeyOwner = await hubContract.getPubKey(owner.address);
53+
const contractPublicKeyHeir = await hubContract.getPubKey(heir.address);
54+
const contractPublicKeyOracle = await hubContract.getPubKey(oracle.address);
55+
56+
const encryptedMessage = await encryptIM(message, accounts.Owner.privateKey, contractPublicKeyHeir);
57+
console.log("encryptedMessage:", encryptedMessage)
58+
59+
const decryptedMessage = await decryptIM(encryptedMessage, accounts.Heir.privateKey, contractPublicKeyOwner);
60+
console.log("decryptedMessage:", decryptedMessage)
61+
62+
expect(decryptedMessage).to.equal(message);
63+
});
64+
})

0 commit comments

Comments
 (0)