UNPKG

@ieigen/anonmisc

Version:

Eigen Anonymous Misc Library

102 lines (92 loc) 2.39 kB
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(); }); });