ed25519
Version:
An Ed25519 elliptic-curve cryptography implementation for Node.js
74 lines (62 loc) • 2.6 kB
JavaScript
var crypto = require("crypto");
var assert = require("assert");
var ed25519 = require("../");
var data = {
seed: "af9881fe34edfd3463cf3e14e22ad95a0608967e084d3ca1fc57be023040de59",
privateKey:"af9881fe34edfd3463cf3e14e22ad95a0608967e084d3ca1fc57be023040de590c32c468980d40237f4e44a66dec3beb564b3e1394a4c6df1da2065e3afc1d81",
publicKey: "0c32c468980d40237f4e44a66dec3beb564b3e1394a4c6df1da2065e3afc1d81",
message: "test",
signature: "98c8351675ade54b3aedc14f0b9c40b47569d9da191db066312ed6423d20dff8a52988f869fc3fbf4402971034b387ac7fbcfa704eb4c1e86e48e15de5e3d206",
invalidSignature: "88c8351675ade54b3aedc14f0b9c40b47569d9da191db066312ed6423d20dff8a52988f869fc3fbf4402971034b387ac7fbcfa704eb4c1e86e48e15de5e3d205"
};
describe("ed25519", function () {
describe("#MakeKeypair()", function () {
it("returns a public and private key", function () {
var seed = Buffer.from(data.seed, "hex");
var keyPair = ed25519.MakeKeypair(seed);
assert.equal(
keyPair.publicKey.toString("hex"),
data.publicKey
);
assert.equal(
keyPair.privateKey.toString("hex"),
data.privateKey
);
});
});
describe("#Sign()", function () {
it("Generates a valid signature using a seed", function () {
var seed = Buffer.from(data.seed, "hex");
var message = Buffer.from(data.message);
var signature = ed25519.Sign(message, seed);
assert.equal(signature.toString("hex"), data.signature)
});
it("Generates a valid signature using a keyPair", function () {
var privateKey = Buffer.from(data.privateKey, "hex");
var publicKey = Buffer.from(data.publicKey, "hex");
var message = Buffer.from(data.message);
var signature = ed25519.Sign(
message,
{
privateKey: privateKey,
publicKey: publicKey
}
);
assert.equal(signature.toString("hex"), data.signature);
});
});
describe("#Verify", function() {
it("returns true if the signature is valid", function () {
var publicKey = Buffer.from(data.publicKey, "hex");
var signature = Buffer.from(data.signature, "hex");
var message = Buffer.from(data.message);
assert.ok(ed25519.Verify(message, signature, publicKey));
});
it("returns false if the signature is not valid", function () {
var publicKey = Buffer.from(data.publicKey, "hex");
var signature = Buffer.from(data.invalidSignature, "hex");
var message = Buffer.from(data.message);
assert.ok(!ed25519.Verify(message, signature, publicKey));
});
})
});