Skip to content

Commit

Permalink
wallet.verify accepts string
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffWScott committed Feb 15, 2023
1 parent d08806a commit 40a01af
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 17 deletions.
12 changes: 9 additions & 3 deletions dist/cjs/lamden.js
Original file line number Diff line number Diff line change
Expand Up @@ -2979,10 +2979,10 @@ function sign$1(sk, msg) {
}
/**
* @param String vk
* @param Uint8Array msg
* @param {(Uint8Array|string)} msg
* @param String sig
* vk: A 64 character long hex representation of a verify key (public key)
* msg: A Uint8Array (bytes) representation of a message that has been signed
* msg: A Uint8Array (bytes) || (string) representation of a message that has been signed
* sig: A 128 character long hex representation of a nacl signature
*
* @return Bool result
Expand All @@ -2991,9 +2991,15 @@ function sign$1(sk, msg) {
function verify(vk, msg, sig) {
var vkb = hex2buf(vk);
var sigb = hex2buf(sig);
var msgb = msg;

// Convert string messages to Uint8Array
if (Object.prototype.toString.call(msgb) === "[object String]") msgb = str2buf(msg);

try {
return nacl__default["default"].sign.detached.verify(msg, sigb, vkb);
return nacl__default["default"].sign.detached.verify(msgb, sigb, vkb);
} catch (_a) {
console.log(_a);
return false;
}
}
Expand Down
10 changes: 5 additions & 5 deletions dist/esm/lamden.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lamden-js",
"version": "3.8.0",
"version": "3.8.1",
"description": "A javascript implementaion for creating wallets, submitting transactions and interacting with masternodes on the Lamden Blockchain.",
"main": "dist/cjs/lamden.js",
"types": "src/index.d.ts",
Expand Down
12 changes: 9 additions & 3 deletions src/js/wallet.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,10 @@ export function sign(sk, msg) {
}
/**
* @param String vk
* @param Uint8Array msg
* @param {(Uint8Array|string)} msg
* @param String sig
* vk: A 64 character long hex representation of a verify key (public key)
* msg: A Uint8Array (bytes) representation of a message that has been signed
* msg: A Uint8Array (bytes) || (string) representation of a message that has been signed
* sig: A 128 character long hex representation of a nacl signature
*
* @return Bool result
Expand All @@ -212,9 +212,15 @@ export function sign(sk, msg) {
export function verify(vk, msg, sig) {
var vkb = helpers.hex2buf(vk);
var sigb = helpers.hex2buf(sig);
var msgb = msg

// Convert string messages to Uint8Array
if (Object.prototype.toString.call(msgb) === "[object String]") msgb = helpers.str2buf(msg)

try {
return nacl.sign.detached.verify(msg, sigb, vkb);
return nacl.sign.detached.verify(msgb, sigb, vkb);
} catch (_a) {
console.log(_a)
return false;
}
}
Expand Down
53 changes: 50 additions & 3 deletions test/wallet-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,63 @@ describe("Test Lamden Wallet methods", () => {
});
it("wallet object can sign messages", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });
let message = new Uint8Array("this is a message");

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = newWallet.sign(message);

expect(wallet.verify(newWallet.vk, message, signedMessage)).to.be(true);
});
it("wallet object can verify a messages", () => {
it("wallet object can verify a messages, returns true", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });
let message = new Uint8Array("this is a message");

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = newWallet.sign(message);

expect(newWallet.verify(message, signedMessage)).to.be(true);
});
it("wallet object can verify a message using String message, returns true", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = newWallet.sign(message);

expect(newWallet.verify("this is a message", signedMessage)).to.be(true);
});
it("wallet object can verify a message, returns false if message incorrect", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = newWallet.sign(message);

let message_buffer_2 = Buffer.from("this is another message")
let message_2 = new Uint8Array(message_buffer_2);

expect(newWallet.verify(message_2, signedMessage)).to.be(false);
});
it("wallet object can verify a message, returns false if vk incorrect", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });
let anotherWallet = wallet.create_wallet({ keepPrivate: true });

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = newWallet.sign(message);

expect(anotherWallet.verify(message, signedMessage)).to.be(false);
});
it("wallet object can verify a message, returns false if sig incorrect", () => {
let newWallet = wallet.create_wallet({ keepPrivate: true });
let anotherWallet = wallet.create_wallet({ keepPrivate: true });

let mesage_buffer = Buffer.from("this is a message")
let message = new Uint8Array(mesage_buffer);
let signedMessage = anotherWallet.sign(message);

expect(newWallet.verify(message, signedMessage)).to.be(false);
});
});

context("wallet.validateMnemonic(): ", () => {
Expand Down

0 comments on commit 40a01af

Please sign in to comment.