@unknownncat/curve25519-node 1.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +89 -0
- package/README.en.md +422 -0
- package/README.md +309 -112
- package/SECURITY.md +23 -0
- package/THIRD_PARTY_NOTICE.md +3 -0
- package/THIRD_PARTY_NOTICES.md +5 -0
- package/dist/axlsign.d.ts +31 -0
- package/dist/axlsign.d.ts.map +1 -0
- package/dist/axlsign.js +118 -0
- package/dist/axlsign.js.map +1 -0
- package/dist/cjs/axlsign.js +127 -0
- package/dist/cjs/axlsign.js.map +1 -0
- package/dist/cjs/ed25519.js +46 -10
- package/dist/cjs/ed25519.js.map +1 -1
- package/dist/cjs/index.js +41 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/assert.js.map +1 -1
- package/dist/cjs/internal/axlsign-wasm/LICENSE +21 -0
- package/dist/cjs/internal/axlsign-wasm/axlsign_wasm.d.ts +12 -0
- package/dist/cjs/internal/axlsign-wasm/axlsign_wasm.js +171 -0
- package/dist/cjs/internal/axlsign-wasm/axlsign_wasm_bg.wasm +0 -0
- package/dist/cjs/internal/axlsign-wasm/axlsign_wasm_bg.wasm.d.ts +13 -0
- package/dist/cjs/internal/axlsign-wasm/package.json +17 -0
- package/dist/cjs/internal/curve25519-wasm/LICENSE +21 -0
- package/dist/cjs/internal/curve25519-wasm/curve25519_wasm.d.ts +12 -0
- package/dist/cjs/internal/curve25519-wasm/curve25519_wasm.js +165 -0
- package/dist/cjs/internal/curve25519-wasm/curve25519_wasm_bg.wasm +0 -0
- package/dist/cjs/internal/curve25519-wasm/curve25519_wasm_bg.wasm.d.ts +13 -0
- package/dist/cjs/internal/curve25519-wasm/package.json +17 -0
- package/dist/cjs/wasm.js +228 -0
- package/dist/cjs/wasm.js.map +1 -0
- package/dist/cjs/x25519.js +73 -12
- package/dist/cjs/x25519.js.map +1 -1
- package/dist/ed25519.d.ts +21 -0
- package/dist/ed25519.d.ts.map +1 -1
- package/dist/ed25519.js +44 -13
- package/dist/ed25519.js.map +1 -1
- package/dist/index.d.ts +109 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/assert.js.map +1 -1
- package/dist/internal/axlsign-wasm/LICENSE +21 -0
- package/dist/internal/axlsign-wasm/axlsign_wasm.d.ts +12 -0
- package/dist/internal/axlsign-wasm/axlsign_wasm.js +171 -0
- package/dist/internal/axlsign-wasm/axlsign_wasm_bg.wasm +0 -0
- package/dist/internal/axlsign-wasm/axlsign_wasm_bg.wasm.d.ts +13 -0
- package/dist/internal/axlsign-wasm/package.json +17 -0
- package/dist/internal/curve25519-wasm/LICENSE +21 -0
- package/dist/internal/curve25519-wasm/curve25519_wasm.d.ts +12 -0
- package/dist/internal/curve25519-wasm/curve25519_wasm.js +165 -0
- package/dist/internal/curve25519-wasm/curve25519_wasm_bg.wasm +0 -0
- package/dist/internal/curve25519-wasm/curve25519_wasm_bg.wasm.d.ts +13 -0
- package/dist/internal/curve25519-wasm/package.json +17 -0
- package/dist/types.d.ts +2 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/wasm.d.ts +92 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +204 -0
- package/dist/wasm.js.map +1 -0
- package/dist/x25519.d.ts +29 -0
- package/dist/x25519.d.ts.map +1 -1
- package/dist/x25519.js +66 -12
- package/dist/x25519.js.map +1 -1
- package/package.json +38 -5
package/dist/axlsign.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { asBytes32, asBytes64, assertBytes32, assertBytes64, assertUint8Array, } from "./internal/assert.js";
|
|
4
|
+
const SELF_PACKAGE_NAME = "@unknownncat/curve25519-node";
|
|
5
|
+
const requireBase = typeof __filename === "string"
|
|
6
|
+
? __filename
|
|
7
|
+
: typeof process.argv[1] === "string"
|
|
8
|
+
? process.argv[1]
|
|
9
|
+
: join(process.cwd(), "index.js");
|
|
10
|
+
const nodeRequire = createRequire(requireBase);
|
|
11
|
+
let wasmModulePath;
|
|
12
|
+
let wasmAxl;
|
|
13
|
+
function getWasmAxl() {
|
|
14
|
+
if (wasmAxl !== undefined) {
|
|
15
|
+
return wasmAxl;
|
|
16
|
+
}
|
|
17
|
+
if (wasmModulePath === undefined) {
|
|
18
|
+
const packageJsonPath = nodeRequire.resolve(`${SELF_PACKAGE_NAME}/package.json`);
|
|
19
|
+
wasmModulePath = join(dirname(packageJsonPath), "dist", "internal", "axlsign-wasm", "axlsign_wasm.js");
|
|
20
|
+
}
|
|
21
|
+
// Lazy-load WASM bindings to keep modern-only imports lightweight.
|
|
22
|
+
wasmAxl = nodeRequire(wasmModulePath);
|
|
23
|
+
return wasmAxl;
|
|
24
|
+
}
|
|
25
|
+
function clampScalar(seed32) {
|
|
26
|
+
const out = new Uint8Array(32);
|
|
27
|
+
out.set(seed32);
|
|
28
|
+
out[0] = (out[0] ?? 0) & 248;
|
|
29
|
+
const last = out[31] ?? 0;
|
|
30
|
+
out[31] = (last & 127) | 64;
|
|
31
|
+
return asBytes32(out, "clamped scalar");
|
|
32
|
+
}
|
|
33
|
+
function assertOptionalRandom64(value, fnName) {
|
|
34
|
+
if (value === undefined)
|
|
35
|
+
return;
|
|
36
|
+
assertBytes64(value, `${fnName} opt_random`);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Derives an axlsign-compatible public key (Montgomery/X25519 format).
|
|
40
|
+
*/
|
|
41
|
+
export function publicKey(secretKey32) {
|
|
42
|
+
assertBytes32(secretKey32, "secretKey32");
|
|
43
|
+
const out = getWasmAxl().axlsignPublicKey(secretKey32);
|
|
44
|
+
return asBytes32(out, "axlsign public key");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Computes an axlsign-compatible X25519 shared key.
|
|
48
|
+
*/
|
|
49
|
+
export function sharedKey(secretKey32, publicKey32) {
|
|
50
|
+
assertBytes32(secretKey32, "secretKey32");
|
|
51
|
+
assertBytes32(publicKey32, "publicKey32");
|
|
52
|
+
const out = getWasmAxl().axlsignSharedKey(secretKey32, publicKey32);
|
|
53
|
+
return asBytes32(out, "axlsign shared key");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generates an axlsign-compatible key pair from a 32-byte seed.
|
|
57
|
+
*/
|
|
58
|
+
export function generateKeyPair(seed32) {
|
|
59
|
+
assertBytes32(seed32, "seed32");
|
|
60
|
+
const privateKey = clampScalar(seed32);
|
|
61
|
+
const publicKey32 = publicKey(privateKey);
|
|
62
|
+
return {
|
|
63
|
+
public: publicKey32,
|
|
64
|
+
private: privateKey,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Detached axlsign signature using X25519-format secret key.
|
|
69
|
+
* opt_random (64 bytes) enables randomized signing as in curve25519-js.
|
|
70
|
+
*/
|
|
71
|
+
export function sign(secretKey32, msg, opt_random) {
|
|
72
|
+
assertBytes32(secretKey32, "secretKey32");
|
|
73
|
+
assertUint8Array(msg, "msg");
|
|
74
|
+
assertOptionalRandom64(opt_random, "sign");
|
|
75
|
+
const signature = opt_random === undefined
|
|
76
|
+
? getWasmAxl().axlsignSign(secretKey32, msg)
|
|
77
|
+
: getWasmAxl().axlsignSignRnd(secretKey32, msg, opt_random);
|
|
78
|
+
return asBytes64(signature, "axlsign signature");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Verifies detached axlsign signature.
|
|
82
|
+
*/
|
|
83
|
+
export function verify(publicKey32, msg, signature64) {
|
|
84
|
+
assertBytes32(publicKey32, "publicKey32");
|
|
85
|
+
assertUint8Array(msg, "msg");
|
|
86
|
+
assertBytes64(signature64, "signature64");
|
|
87
|
+
return getWasmAxl().axlsignVerify(publicKey32, msg, signature64);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns signature || message (axlsign mode).
|
|
91
|
+
*/
|
|
92
|
+
export function signMessage(secretKey32, msg, opt_random) {
|
|
93
|
+
assertBytes32(secretKey32, "secretKey32");
|
|
94
|
+
assertUint8Array(msg, "msg");
|
|
95
|
+
assertOptionalRandom64(opt_random, "signMessage");
|
|
96
|
+
const signature = sign(secretKey32, msg, opt_random);
|
|
97
|
+
const out = new Uint8Array(64 + msg.byteLength);
|
|
98
|
+
out.set(signature, 0);
|
|
99
|
+
out.set(msg, 64);
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Verifies signature || message and returns original message on success.
|
|
104
|
+
*/
|
|
105
|
+
export function openMessage(publicKey32, signedMsg) {
|
|
106
|
+
assertBytes32(publicKey32, "publicKey32");
|
|
107
|
+
assertUint8Array(signedMsg, "signedMsg");
|
|
108
|
+
if (signedMsg.byteLength < 64) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const signature64 = asBytes64(signedMsg.subarray(0, 64), "signedMsg signature");
|
|
112
|
+
const msg = signedMsg.subarray(64);
|
|
113
|
+
if (!verify(publicKey32, msg, signature64)) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return new Uint8Array(msg);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=axlsign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axlsign.js","sourceRoot":"","sources":["../src/axlsign.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.publicKey = publicKey;
|
|
4
|
+
exports.sharedKey = sharedKey;
|
|
5
|
+
exports.generateKeyPair = generateKeyPair;
|
|
6
|
+
exports.sign = sign;
|
|
7
|
+
exports.verify = verify;
|
|
8
|
+
exports.signMessage = signMessage;
|
|
9
|
+
exports.openMessage = openMessage;
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const node_module_1 = require("node:module");
|
|
12
|
+
const assert_js_1 = require("./internal/assert.js");
|
|
13
|
+
const SELF_PACKAGE_NAME = "@unknownncat/curve25519-node";
|
|
14
|
+
const requireBase = typeof __filename === "string"
|
|
15
|
+
? __filename
|
|
16
|
+
: typeof process.argv[1] === "string"
|
|
17
|
+
? process.argv[1]
|
|
18
|
+
: (0, node_path_1.join)(process.cwd(), "index.js");
|
|
19
|
+
const nodeRequire = (0, node_module_1.createRequire)(requireBase);
|
|
20
|
+
let wasmModulePath;
|
|
21
|
+
let wasmAxl;
|
|
22
|
+
function getWasmAxl() {
|
|
23
|
+
if (wasmAxl !== undefined) {
|
|
24
|
+
return wasmAxl;
|
|
25
|
+
}
|
|
26
|
+
if (wasmModulePath === undefined) {
|
|
27
|
+
const packageJsonPath = nodeRequire.resolve(`${SELF_PACKAGE_NAME}/package.json`);
|
|
28
|
+
wasmModulePath = (0, node_path_1.join)((0, node_path_1.dirname)(packageJsonPath), "dist", "internal", "axlsign-wasm", "axlsign_wasm.js");
|
|
29
|
+
}
|
|
30
|
+
// Lazy-load WASM bindings to keep modern-only imports lightweight.
|
|
31
|
+
wasmAxl = nodeRequire(wasmModulePath);
|
|
32
|
+
return wasmAxl;
|
|
33
|
+
}
|
|
34
|
+
function clampScalar(seed32) {
|
|
35
|
+
const out = new Uint8Array(32);
|
|
36
|
+
out.set(seed32);
|
|
37
|
+
out[0] = (out[0] ?? 0) & 248;
|
|
38
|
+
const last = out[31] ?? 0;
|
|
39
|
+
out[31] = (last & 127) | 64;
|
|
40
|
+
return (0, assert_js_1.asBytes32)(out, "clamped scalar");
|
|
41
|
+
}
|
|
42
|
+
function assertOptionalRandom64(value, fnName) {
|
|
43
|
+
if (value === undefined)
|
|
44
|
+
return;
|
|
45
|
+
(0, assert_js_1.assertBytes64)(value, `${fnName} opt_random`);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Derives an axlsign-compatible public key (Montgomery/X25519 format).
|
|
49
|
+
*/
|
|
50
|
+
function publicKey(secretKey32) {
|
|
51
|
+
(0, assert_js_1.assertBytes32)(secretKey32, "secretKey32");
|
|
52
|
+
const out = getWasmAxl().axlsignPublicKey(secretKey32);
|
|
53
|
+
return (0, assert_js_1.asBytes32)(out, "axlsign public key");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Computes an axlsign-compatible X25519 shared key.
|
|
57
|
+
*/
|
|
58
|
+
function sharedKey(secretKey32, publicKey32) {
|
|
59
|
+
(0, assert_js_1.assertBytes32)(secretKey32, "secretKey32");
|
|
60
|
+
(0, assert_js_1.assertBytes32)(publicKey32, "publicKey32");
|
|
61
|
+
const out = getWasmAxl().axlsignSharedKey(secretKey32, publicKey32);
|
|
62
|
+
return (0, assert_js_1.asBytes32)(out, "axlsign shared key");
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Generates an axlsign-compatible key pair from a 32-byte seed.
|
|
66
|
+
*/
|
|
67
|
+
function generateKeyPair(seed32) {
|
|
68
|
+
(0, assert_js_1.assertBytes32)(seed32, "seed32");
|
|
69
|
+
const privateKey = clampScalar(seed32);
|
|
70
|
+
const publicKey32 = publicKey(privateKey);
|
|
71
|
+
return {
|
|
72
|
+
public: publicKey32,
|
|
73
|
+
private: privateKey,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Detached axlsign signature using X25519-format secret key.
|
|
78
|
+
* opt_random (64 bytes) enables randomized signing as in curve25519-js.
|
|
79
|
+
*/
|
|
80
|
+
function sign(secretKey32, msg, opt_random) {
|
|
81
|
+
(0, assert_js_1.assertBytes32)(secretKey32, "secretKey32");
|
|
82
|
+
(0, assert_js_1.assertUint8Array)(msg, "msg");
|
|
83
|
+
assertOptionalRandom64(opt_random, "sign");
|
|
84
|
+
const signature = opt_random === undefined
|
|
85
|
+
? getWasmAxl().axlsignSign(secretKey32, msg)
|
|
86
|
+
: getWasmAxl().axlsignSignRnd(secretKey32, msg, opt_random);
|
|
87
|
+
return (0, assert_js_1.asBytes64)(signature, "axlsign signature");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Verifies detached axlsign signature.
|
|
91
|
+
*/
|
|
92
|
+
function verify(publicKey32, msg, signature64) {
|
|
93
|
+
(0, assert_js_1.assertBytes32)(publicKey32, "publicKey32");
|
|
94
|
+
(0, assert_js_1.assertUint8Array)(msg, "msg");
|
|
95
|
+
(0, assert_js_1.assertBytes64)(signature64, "signature64");
|
|
96
|
+
return getWasmAxl().axlsignVerify(publicKey32, msg, signature64);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns signature || message (axlsign mode).
|
|
100
|
+
*/
|
|
101
|
+
function signMessage(secretKey32, msg, opt_random) {
|
|
102
|
+
(0, assert_js_1.assertBytes32)(secretKey32, "secretKey32");
|
|
103
|
+
(0, assert_js_1.assertUint8Array)(msg, "msg");
|
|
104
|
+
assertOptionalRandom64(opt_random, "signMessage");
|
|
105
|
+
const signature = sign(secretKey32, msg, opt_random);
|
|
106
|
+
const out = new Uint8Array(64 + msg.byteLength);
|
|
107
|
+
out.set(signature, 0);
|
|
108
|
+
out.set(msg, 64);
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Verifies signature || message and returns original message on success.
|
|
113
|
+
*/
|
|
114
|
+
function openMessage(publicKey32, signedMsg) {
|
|
115
|
+
(0, assert_js_1.assertBytes32)(publicKey32, "publicKey32");
|
|
116
|
+
(0, assert_js_1.assertUint8Array)(signedMsg, "signedMsg");
|
|
117
|
+
if (signedMsg.byteLength < 64) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const signature64 = (0, assert_js_1.asBytes64)(signedMsg.subarray(0, 64), "signedMsg signature");
|
|
121
|
+
const msg = signedMsg.subarray(64);
|
|
122
|
+
if (!verify(publicKey32, msg, signature64)) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return new Uint8Array(msg);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=axlsign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axlsign.js","sourceRoot":"","sources":["../../src/axlsign.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/ed25519.js
CHANGED
|
@@ -1,20 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPrivateKeyObject = createPrivateKeyObject;
|
|
4
|
+
exports.createPublicKeyObject = createPublicKeyObject;
|
|
5
|
+
exports.publicKeyFromPrivateKeyObject = publicKeyFromPrivateKeyObject;
|
|
3
6
|
exports.publicKey = publicKey;
|
|
4
7
|
exports.generateKeyPair = generateKeyPair;
|
|
5
8
|
exports.sign = sign;
|
|
9
|
+
exports.signWithPrivateKey = signWithPrivateKey;
|
|
6
10
|
exports.verify = verify;
|
|
11
|
+
exports.verifyWithPublicKey = verifyWithPublicKey;
|
|
7
12
|
exports.signMessage = signMessage;
|
|
8
13
|
exports.openMessage = openMessage;
|
|
9
14
|
const node_crypto_1 = require("node:crypto");
|
|
10
15
|
const assert_js_1 = require("./internal/assert.js");
|
|
11
16
|
const der_js_1 = require("./internal/der.js");
|
|
17
|
+
function normalizeSignature(signature) {
|
|
18
|
+
if (signature.byteLength !== 64) {
|
|
19
|
+
throw new Error(`Ed25519 signature must be 64 bytes, received ${signature.byteLength}`);
|
|
20
|
+
}
|
|
21
|
+
return (0, assert_js_1.asBytes64)(new Uint8Array(signature.buffer, signature.byteOffset, signature.byteLength), "signature");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Builds a reusable Ed25519 private KeyObject from a raw 32-byte seed.
|
|
25
|
+
*/
|
|
26
|
+
function createPrivateKeyObject(secretSeed32) {
|
|
27
|
+
(0, assert_js_1.assertBytes32)(secretSeed32, "secretSeed32");
|
|
28
|
+
return (0, der_js_1.keyFromEd25519Private)(secretSeed32);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Builds a reusable Ed25519 public KeyObject from a raw 32-byte public key.
|
|
32
|
+
*/
|
|
33
|
+
function createPublicKeyObject(publicKey32) {
|
|
34
|
+
(0, assert_js_1.assertBytes32)(publicKey32, "publicKey32");
|
|
35
|
+
return (0, der_js_1.keyFromEd25519Public)(publicKey32);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Derives raw 32-byte Ed25519 public key from a private KeyObject.
|
|
39
|
+
*/
|
|
40
|
+
function publicKeyFromPrivateKeyObject(privateKey) {
|
|
41
|
+
return (0, der_js_1.rawPublicFromEd25519Spki)((0, node_crypto_1.createPublicKey)(privateKey));
|
|
42
|
+
}
|
|
12
43
|
/**
|
|
13
44
|
* Derives an Ed25519 public key from a raw 32-byte seed.
|
|
14
45
|
*/
|
|
15
46
|
function publicKey(secretSeed32) {
|
|
16
|
-
|
|
17
|
-
return (0, der_js_1.rawPublicFromEd25519Spki)((0, node_crypto_1.createPublicKey)((0, der_js_1.keyFromEd25519Private)(secretSeed32)));
|
|
47
|
+
return publicKeyFromPrivateKeyObject(createPrivateKeyObject(secretSeed32));
|
|
18
48
|
}
|
|
19
49
|
/**
|
|
20
50
|
* Deterministically creates an Ed25519 key pair from a 32-byte seed.
|
|
@@ -31,22 +61,28 @@ function generateKeyPair(seed32) {
|
|
|
31
61
|
* Signs a message with Ed25519 and returns the 64-byte detached signature.
|
|
32
62
|
*/
|
|
33
63
|
function sign(secretSeed32, msg) {
|
|
34
|
-
|
|
64
|
+
return signWithPrivateKey(createPrivateKeyObject(secretSeed32), msg);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Signs a message with Ed25519 using a reusable private KeyObject.
|
|
68
|
+
*/
|
|
69
|
+
function signWithPrivateKey(privateKey, msg) {
|
|
35
70
|
(0, assert_js_1.assertUint8Array)(msg, "msg");
|
|
36
|
-
|
|
37
|
-
if (signature.byteLength !== 64) {
|
|
38
|
-
throw new Error(`Ed25519 signature must be 64 bytes, received ${signature.byteLength}`);
|
|
39
|
-
}
|
|
40
|
-
return (0, assert_js_1.asBytes64)(new Uint8Array(signature.buffer, signature.byteOffset, signature.byteLength), "signature");
|
|
71
|
+
return normalizeSignature((0, node_crypto_1.sign)(null, (0, assert_js_1.toBufferView)(msg), privateKey));
|
|
41
72
|
}
|
|
42
73
|
/**
|
|
43
74
|
* Verifies a detached Ed25519 signature.
|
|
44
75
|
*/
|
|
45
76
|
function verify(publicKey32, msg, signature64) {
|
|
46
|
-
|
|
77
|
+
return verifyWithPublicKey(createPublicKeyObject(publicKey32), msg, signature64);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Verifies a detached Ed25519 signature using a reusable public KeyObject.
|
|
81
|
+
*/
|
|
82
|
+
function verifyWithPublicKey(publicKey, msg, signature64) {
|
|
47
83
|
(0, assert_js_1.assertUint8Array)(msg, "msg");
|
|
48
84
|
(0, assert_js_1.assertBytes64)(signature64, "signature64");
|
|
49
|
-
return (0, node_crypto_1.verify)(null, (0, assert_js_1.toBufferView)(msg),
|
|
85
|
+
return (0, node_crypto_1.verify)(null, (0, assert_js_1.toBufferView)(msg), publicKey, (0, assert_js_1.toBufferView)(signature64));
|
|
50
86
|
}
|
|
51
87
|
/**
|
|
52
88
|
* Returns signature || message.
|
package/dist/cjs/ed25519.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../src/ed25519.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../../src/ed25519.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verify = exports.openMessage = exports.generateKeyPairEd25519 = exports.generateKeyPairX25519 = exports.generateKeyPair = exports.sharedKey = exports.ed25519 = exports.x25519 = exports.assertBytes64 = exports.assertBytes32 = exports.asBytes64 = exports.asBytes32 = void 0;
|
|
3
|
+
exports.verify = exports.openMessage = exports.generateKeyPairEd25519 = exports.generateKeyPairX25519 = exports.generateKeyPair = exports.sharedKeyStrict = exports.sharedKey = exports.wasm = exports.axlsign = exports.ed25519 = exports.x25519 = exports.assertBytes64 = exports.assertBytes32 = exports.asBytes64 = exports.asBytes32 = void 0;
|
|
4
4
|
exports.sign = sign;
|
|
5
5
|
exports.signMessage = signMessage;
|
|
6
6
|
const assert_js_1 = require("./internal/assert.js");
|
|
7
|
+
const axlsignApi = require("./axlsign.js");
|
|
8
|
+
const wasmApi = require("./wasm.js");
|
|
7
9
|
const ed25519Api = require("./ed25519.js");
|
|
8
10
|
const x25519Api = require("./x25519.js");
|
|
9
11
|
var assert_js_2 = require("./internal/assert.js");
|
|
@@ -15,25 +17,60 @@ Object.defineProperty(exports, "assertBytes64", { enumerable: true, get: functio
|
|
|
15
17
|
* Standard X25519 namespace.
|
|
16
18
|
*/
|
|
17
19
|
exports.x25519 = {
|
|
20
|
+
createPrivateKeyObject: x25519Api.createPrivateKeyObject,
|
|
21
|
+
createPublicKeyObject: x25519Api.createPublicKeyObject,
|
|
22
|
+
publicKeyFromPrivateKeyObject: x25519Api.publicKeyFromPrivateKeyObject,
|
|
18
23
|
publicKey: x25519Api.publicKey,
|
|
19
24
|
sharedKey: x25519Api.sharedKey,
|
|
25
|
+
sharedKeyFromKeyObjects: x25519Api.sharedKeyFromKeyObjects,
|
|
26
|
+
sharedKeyStrict: x25519Api.sharedKeyStrict,
|
|
27
|
+
sharedKeyStrictFromKeyObjects: x25519Api.sharedKeyStrictFromKeyObjects,
|
|
28
|
+
isAllZero32: x25519Api.isAllZero32,
|
|
20
29
|
generateKeyPair: x25519Api.generateKeyPair,
|
|
21
30
|
};
|
|
22
31
|
/**
|
|
23
32
|
* Standard Ed25519 namespace.
|
|
24
33
|
*/
|
|
25
34
|
exports.ed25519 = {
|
|
35
|
+
createPrivateKeyObject: ed25519Api.createPrivateKeyObject,
|
|
36
|
+
createPublicKeyObject: ed25519Api.createPublicKeyObject,
|
|
37
|
+
publicKeyFromPrivateKeyObject: ed25519Api.publicKeyFromPrivateKeyObject,
|
|
26
38
|
publicKey: ed25519Api.publicKey,
|
|
27
39
|
generateKeyPair: ed25519Api.generateKeyPair,
|
|
28
40
|
sign: ed25519Api.sign,
|
|
41
|
+
signWithPrivateKey: ed25519Api.signWithPrivateKey,
|
|
29
42
|
verify: ed25519Api.verify,
|
|
43
|
+
verifyWithPublicKey: ed25519Api.verifyWithPublicKey,
|
|
30
44
|
signMessage: ed25519Api.signMessage,
|
|
31
45
|
openMessage: ed25519Api.openMessage,
|
|
32
46
|
};
|
|
47
|
+
/**
|
|
48
|
+
* Optional legacy-compatible axlsign namespace implemented with WASM.
|
|
49
|
+
*/
|
|
50
|
+
exports.axlsign = {
|
|
51
|
+
publicKey: axlsignApi.publicKey,
|
|
52
|
+
sharedKey: axlsignApi.sharedKey,
|
|
53
|
+
generateKeyPair: axlsignApi.generateKeyPair,
|
|
54
|
+
sign: axlsignApi.sign,
|
|
55
|
+
verify: axlsignApi.verify,
|
|
56
|
+
signMessage: axlsignApi.signMessage,
|
|
57
|
+
openMessage: axlsignApi.openMessage,
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Optional modern WASM namespace with X25519 + Ed25519 parity methods.
|
|
61
|
+
*/
|
|
62
|
+
exports.wasm = {
|
|
63
|
+
x25519: wasmApi.x25519,
|
|
64
|
+
ed25519: wasmApi.ed25519,
|
|
65
|
+
};
|
|
33
66
|
/**
|
|
34
67
|
* Top-level compatibility alias for X25519 shared secret.
|
|
35
68
|
*/
|
|
36
69
|
exports.sharedKey = exports.x25519.sharedKey;
|
|
70
|
+
/**
|
|
71
|
+
* Top-level strict X25519 shared secret helper that rejects all-zero results.
|
|
72
|
+
*/
|
|
73
|
+
exports.sharedKeyStrict = exports.x25519.sharedKeyStrict;
|
|
37
74
|
/**
|
|
38
75
|
* Top-level compatibility alias for X25519 deterministic key generation.
|
|
39
76
|
*/
|
|
@@ -75,7 +112,10 @@ exports.verify = exports.ed25519.verify;
|
|
|
75
112
|
const api = {
|
|
76
113
|
x25519: exports.x25519,
|
|
77
114
|
ed25519: exports.ed25519,
|
|
115
|
+
axlsign: exports.axlsign,
|
|
116
|
+
wasm: exports.wasm,
|
|
78
117
|
sharedKey: exports.sharedKey,
|
|
118
|
+
sharedKeyStrict: exports.sharedKeyStrict,
|
|
79
119
|
generateKeyPair: exports.generateKeyPair,
|
|
80
120
|
generateKeyPairX25519: exports.generateKeyPairX25519,
|
|
81
121
|
generateKeyPairEd25519: exports.generateKeyPairEd25519,
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/internal/assert.ts"],"names":[],"mappings":";;AAEA,4CAKC;AAQD,sCAGC;AAED,sCAGC;AAED,8BAGC;AAED,8BAGC;AAED,8CAOC;AAED,oCAEC;AA5CD,SAAgB,gBAAgB,CAAC,KAAc,EAAE,IAAY;IAC3D,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,mCAAmC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB,EAAE,QAAgB,EAAE,IAAY;IACrE,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,YAAY,QAAQ,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IAC7D,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,aAAa,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IAC7D,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,SAAS,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IACzD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/internal/assert.ts"],"names":[],"mappings":";;AAEA,4CAKC;AAQD,sCAGC;AAED,sCAGC;AAED,8BAGC;AAED,8BAGC;AAED,8CAOC;AAED,oCAEC;AA5CD,SAAgB,gBAAgB,CAAC,KAAc,EAAE,IAAY;IAC3D,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,mCAAmC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB,EAAE,QAAgB,EAAE,IAAY;IACrE,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,YAAY,QAAQ,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IAC7D,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,aAAa,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IAC7D,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,SAAS,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IACzD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,SAAS,CAAC,KAAiB,EAAE,IAAI,GAAG,OAAO;IACzD,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAkB,EAAE,MAAc;IAClE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,yDAAyD;YAChE,kEAAkE,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,KAAiB;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sem nome bah
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
|
|
4
|
+
export function axlsignPublicKey(secret_key: Uint8Array): Uint8Array;
|
|
5
|
+
|
|
6
|
+
export function axlsignSharedKey(secret_key: Uint8Array, public_key: Uint8Array): Uint8Array;
|
|
7
|
+
|
|
8
|
+
export function axlsignSign(secret_key: Uint8Array, msg: Uint8Array): Uint8Array;
|
|
9
|
+
|
|
10
|
+
export function axlsignSignRnd(secret_key: Uint8Array, msg: Uint8Array, rnd: Uint8Array): Uint8Array;
|
|
11
|
+
|
|
12
|
+
export function axlsignVerify(public_key: Uint8Array, msg: Uint8Array, signature: Uint8Array): boolean;
|