PHP WebShell
Текущая директория: /opt/BitGoJS/node_modules/@bitcoinerlab/secp256k1/test
Просмотр файла: points.js
import test from "tape";
import { fromHex } from "./util.js";
import fpoints from "./fixtures/points.json";
export default function (secp256k1) {
test("isPoint", (t) => {
for (const f of fpoints.valid.isPoint) {
const p = fromHex(f.P);
t.equal(
secp256k1.isPoint(p),
f.expected,
`${f.P} is ${f.expected ? "OK" : "rejected"}`
);
}
t.end();
});
test("isPointCompressed", (t) => {
for (const f of fpoints.valid.isPoint) {
if (!f.expected) continue;
const p = fromHex(f.P);
const e = p.length === 33;
t.equal(
secp256k1.isPointCompressed(p),
e,
`${f.P} is ${e ? "compressed" : "uncompressed"}`
);
}
t.end();
});
test("isXOnlyPoint", (t) => {
for (const f of fpoints.valid.isPoint) {
if (!f.expected) continue;
const p = fromHex(f.P);
const e = p.length === 33;
const p2 = e ? p.slice(1, 33) : p;
t.equal(
secp256k1.isXOnlyPoint(p2),
e,
`${f.P} is ${e ? "xonly" : "uncompressed"}`
);
}
t.end();
});
test("pointAdd", (t) => {
for (const f of fpoints.valid.pointAdd) {
const p = fromHex(f.P);
const q = fromHex(f.Q);
const expected = f.expected ? fromHex(f.expected) : null;
let description = `${f.P} + ${f.Q} = ${f.expected ? f.expected : null}`;
if (f.description) description += ` (${f.description})`;
t.same(secp256k1.pointAdd(p, q), expected, description);
if (expected === null) continue;
t.same(
secp256k1.pointAdd(p, q, true),
secp256k1.pointCompress(expected, true),
description
);
t.same(
secp256k1.pointAdd(p, q, false),
secp256k1.pointCompress(expected, false),
description
);
}
for (const f of fpoints.invalid.pointAdd) {
const p = fromHex(f.P);
const q = fromHex(f.Q);
t.throws(
() => {
secp256k1.pointAdd(p, q);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
test("pointAddScalar", (t) => {
for (const f of fpoints.valid.pointAddScalar) {
const p = fromHex(f.P);
const d = fromHex(f.d);
const expected = f.expected ? fromHex(f.expected) : null;
let description = `${f.P} + ${f.d} = ${f.expected ? f.expected : null}`;
if (f.description) description += ` (${f.description})`;
t.same(secp256k1.pointAddScalar(p, d), expected, description);
if (expected === null) continue;
t.same(
secp256k1.pointAddScalar(p, d, true),
secp256k1.pointCompress(expected, true),
description
);
t.same(
secp256k1.pointAddScalar(p, d, false),
secp256k1.pointCompress(expected, false),
description
);
}
for (const f of fpoints.invalid.pointAddScalar) {
const p = fromHex(f.P);
const d = fromHex(f.d);
t.throws(
() => {
secp256k1.pointAddScalar(p, d);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
test("pointCompress", (t) => {
for (const f of fpoints.valid.pointCompress) {
const p = fromHex(f.P);
const expected = fromHex(f.expected);
if (f.noarg) {
t.same(secp256k1.pointCompress(p), expected);
} else {
t.same(secp256k1.pointCompress(p, f.compress), expected);
}
}
for (const f of fpoints.invalid.pointCompress) {
const p = fromHex(f.P);
t.throws(
() => {
secp256k1.pointCompress(p);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
test("pointFromScalar", (t) => {
for (const f of fpoints.valid.pointFromScalar) {
const d = fromHex(f.d);
const expected = fromHex(f.expected);
let description = `${f.d} * G = ${f.expected}`;
if (f.description) description += ` (${f.description})`;
t.same(secp256k1.pointFromScalar(d), expected, description);
if (expected === null) continue;
t.same(
secp256k1.pointFromScalar(d, true),
secp256k1.pointCompress(expected, true),
description
);
t.same(
secp256k1.pointFromScalar(d, false),
secp256k1.pointCompress(expected, false),
description
);
}
for (const f of fpoints.invalid.pointFromScalar) {
const d = fromHex(f.d);
t.throws(
() => {
secp256k1.pointFromScalar(d);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
test("pointMultiply", (t) => {
for (const f of fpoints.valid.pointMultiply) {
const p = fromHex(f.P);
const d = fromHex(f.d);
const expected = f.expected ? fromHex(f.expected) : null;
let description = `${f.P} * ${f.d} = ${f.expected ? f.expected : null}`;
if (f.description) description += ` (${f.description})`;
t.same(secp256k1.pointMultiply(p, d), expected, description);
if (expected === null) continue;
t.same(
secp256k1.pointMultiply(p, d, true),
secp256k1.pointCompress(expected, true),
description
);
t.same(
secp256k1.pointMultiply(p, d, false),
secp256k1.pointCompress(expected, false),
description
);
}
for (const f of fpoints.invalid.pointMultiply) {
const p = fromHex(f.P);
const d = fromHex(f.d);
t.throws(
() => {
secp256k1.pointMultiply(p, d);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
test("pointNegate", (t) => {
for (const f of fpoints.valid.pointNegate) {
const d = fromHex(f.d);
const expected = fromHex(f.expected);
let description = `-${f.d} = ${f.expected}`;
if (f.description) description += ` (${f.description})`;
t.same(secp256k1.privateNegate(d), expected, description);
t.equal(secp256k1.privateAdd(d, expected), null, description);
}
// using the same data as point from scalar
for (const f of fpoints.invalid.pointFromScalar) {
const d = fromHex(f.d);
t.throws(
() => {
secp256k1.privateNegate(d);
},
new RegExp(f.exception),
`${f.description} throws ${f.exception}`
);
}
t.end();
});
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!