@ieigen/anonmisc
Version:
Eigen Anonymous Misc Library
102 lines (92 loc) • 2.39 kB
text/typescript
import { expect } from "chai";
const { utils } = require("ethers");
var EC = require("elliptic").ec;
var ec = new EC("secp256k1");
import { DKSAP } from "../lib/anonymous_address";
import * as crypto from "crypto";
const main = () => {
var keyA = ec.genKeyPair();
var pubAPoint = keyA.getPublic();
var pubA = pubAPoint.encode("hex");
var keyB = ec.genKeyPair();
var pubBPoint = keyB.getPublic();
var pubB = pubBPoint.encode("hex");
let bsap = new DKSAP();
const nonce = 0;
const amount = 10;
const messageObj = {
nonce: nonce,
pubA: pubA,
pubB: pubB,
amount: amount,
};
const message = crypto
.createHash("sha256")
.update(JSON.stringify(messageObj))
.digest("hex");
console.log("message", message);
let newSK = bsap.PrivateKey(
keyB.getPrivate().toString("hex"),
Buffer.from(message),
nonce,
pubA
);
console.log(newSK.getPublic().encode("hex"));
let pubkey = bsap.PublicKey(
pubB,
Buffer.from(message),
nonce,
keyA.getPrivate().toString("hex")
);
console.log(pubkey);
expect(newSK.getPublic().encode("hex")).to.eq(pubkey);
expect(
bsap.Verify(
pubkey,
keyB.getPrivate().toString("hex"),
Buffer.from(message),
nonce,
pubA
)
).to.eq(true);
expect(
bsap.Verify(
pubkey,
keyB.getPrivate().toString("hex"),
Buffer.from(message),
nonce + 1,
pubA
)
).to.eq(false);
expect(
bsap.Verify(
pubkey,
keyB.getPrivate().toString("hex"),
Buffer.from("121121"),
nonce,
pubA
)
).to.eq(false);
expect(
bsap.Verify(
pubkey,
keyA.getPrivate().toString("hex"),
Buffer.from(message),
nonce,
pubA
)
).to.eq(false);
console.log(bsap.PublickeyToAddress(pubkey));
let pk2 =
"0x043dfddf56028982b8e1ab9279b7487952712f0e08409a46a933f5c52886f129d58706a270294e80637fcf181303b4d2311de9ee47ec57c60a10c0c0886e26a215";
let address = utils.getAddress("0x78db2f1965916bb49c567c33124674f5d042e85a");
expect(bsap.PublickeyToAddress(pk2)).to.eq(address);
let pk3 =
"043dfddf56028982b8e1ab9279b7487952712f0e08409a46a933f5c52886f129d58706a270294e80637fcf181303b4d2311de9ee47ec57c60a10c0c0886e26a215";
expect(bsap.PublickeyToAddress(pk3)).to.eq(address);
};
describe("Anon Address", () => {
it("BSAP test", () => {
main();
});
});