@unknownncat/curve25519-node 2.0.0 → 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 +110 -20
- package/README.md +102 -12
- package/SECURITY.md +23 -0
- package/THIRD_PARTY_NOTICE.md +3 -0
- package/THIRD_PARTY_NOTICES.md +5 -0
- package/dist/axlsign.d.ts.map +1 -1
- package/dist/axlsign.js +29 -7
- package/dist/axlsign.js.map +1 -1
- package/dist/cjs/axlsign.js +28 -6
- package/dist/cjs/axlsign.js.map +1 -1
- package/dist/cjs/ed25519.js +46 -10
- package/dist/cjs/ed25519.js.map +1 -1
- package/dist/cjs/index.js +27 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/assert.js.map +1 -1
- 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 +87 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/assert.js.map +1 -1
- 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 +28 -5
package/dist/wasm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../src/wasm.ts"],"names":[],"mappings":"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"}
|
package/dist/x25519.d.ts
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
|
+
import { type KeyObject } from "node:crypto";
|
|
1
2
|
import type { Bytes32, KeyPair32 } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Constant-time style 32-byte zero check for shared-secret hardening.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isAllZero32(bytes32: Bytes32): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Builds a reusable X25519 private KeyObject from a raw 32-byte secret scalar.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createPrivateKeyObject(secretKey32: Bytes32): KeyObject;
|
|
11
|
+
/**
|
|
12
|
+
* Builds a reusable X25519 public KeyObject from a raw 32-byte public key.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createPublicKeyObject(publicKey32: Bytes32): KeyObject;
|
|
15
|
+
/**
|
|
16
|
+
* Derives raw 32-byte X25519 public key from a private KeyObject.
|
|
17
|
+
*/
|
|
18
|
+
export declare function publicKeyFromPrivateKeyObject(privateKey: KeyObject): Bytes32;
|
|
2
19
|
/**
|
|
3
20
|
* Derives an X25519 public key from a raw 32-byte secret scalar.
|
|
4
21
|
*/
|
|
5
22
|
export declare function publicKey(secretKey32: Bytes32): Bytes32;
|
|
23
|
+
/**
|
|
24
|
+
* Computes X25519 ECDH shared secret (raw 32 bytes) from reusable KeyObjects.
|
|
25
|
+
*/
|
|
26
|
+
export declare function sharedKeyFromKeyObjects(privateKey: KeyObject, publicKey: KeyObject): Bytes32;
|
|
6
27
|
/**
|
|
7
28
|
* Computes X25519 ECDH shared secret (raw 32 bytes).
|
|
8
29
|
*/
|
|
9
30
|
export declare function sharedKey(secretKey32: Bytes32, publicKey32: Bytes32): Bytes32;
|
|
31
|
+
/**
|
|
32
|
+
* Strict X25519 ECDH: rejects all-zero shared secret.
|
|
33
|
+
*/
|
|
34
|
+
export declare function sharedKeyStrict(secretKey32: Bytes32, publicKey32: Bytes32): Bytes32;
|
|
35
|
+
/**
|
|
36
|
+
* Strict X25519 ECDH from reusable KeyObjects: rejects all-zero shared secret.
|
|
37
|
+
*/
|
|
38
|
+
export declare function sharedKeyStrictFromKeyObjects(privateKey: KeyObject, publicKey: KeyObject): Bytes32;
|
|
10
39
|
/**
|
|
11
40
|
* Deterministically creates an X25519 key pair from a 32-byte seed.
|
|
12
41
|
* The returned private key is explicitly clamped for stable output.
|
package/dist/x25519.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x25519.d.ts","sourceRoot":"","sources":["../src/x25519.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"x25519.d.ts","sourceRoot":"","sources":["../src/x25519.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7E,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqBrD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAOrD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAGtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAGrE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAE5E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAE5F;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAI7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAQnF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,SAAS,EACrB,SAAS,EAAE,SAAS,GACnB,OAAO,CAQT;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAQ1D"}
|
package/dist/x25519.js
CHANGED
|
@@ -9,28 +9,82 @@ function clampScalar(seed32) {
|
|
|
9
9
|
clamped[31] = (last & 127) | 64;
|
|
10
10
|
return asBytes32(clamped, "clamped scalar");
|
|
11
11
|
}
|
|
12
|
+
function normalizeSharedSecret(shared) {
|
|
13
|
+
if (shared.byteLength !== 32) {
|
|
14
|
+
throw new Error(`X25519 shared secret must be 32 bytes, received ${shared.byteLength}`);
|
|
15
|
+
}
|
|
16
|
+
return asBytes32(new Uint8Array(shared.buffer, shared.byteOffset, shared.byteLength), "sharedKey");
|
|
17
|
+
}
|
|
12
18
|
/**
|
|
13
|
-
*
|
|
19
|
+
* Constant-time style 32-byte zero check for shared-secret hardening.
|
|
14
20
|
*/
|
|
15
|
-
export function
|
|
21
|
+
export function isAllZero32(bytes32) {
|
|
22
|
+
assertBytes32(bytes32, "bytes32");
|
|
23
|
+
let acc = 0;
|
|
24
|
+
for (let i = 0; i < 32; i += 1) {
|
|
25
|
+
acc |= bytes32[i] ?? 0;
|
|
26
|
+
}
|
|
27
|
+
return acc === 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Builds a reusable X25519 private KeyObject from a raw 32-byte secret scalar.
|
|
31
|
+
*/
|
|
32
|
+
export function createPrivateKeyObject(secretKey32) {
|
|
16
33
|
assertBytes32(secretKey32, "secretKey32");
|
|
17
|
-
|
|
34
|
+
return keyFromX25519Private(secretKey32);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Builds a reusable X25519 public KeyObject from a raw 32-byte public key.
|
|
38
|
+
*/
|
|
39
|
+
export function createPublicKeyObject(publicKey32) {
|
|
40
|
+
assertBytes32(publicKey32, "publicKey32");
|
|
41
|
+
return keyFromX25519Public(publicKey32);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Derives raw 32-byte X25519 public key from a private KeyObject.
|
|
45
|
+
*/
|
|
46
|
+
export function publicKeyFromPrivateKeyObject(privateKey) {
|
|
18
47
|
return rawPublicFromX25519Spki(createPublicKey(privateKey));
|
|
19
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Derives an X25519 public key from a raw 32-byte secret scalar.
|
|
51
|
+
*/
|
|
52
|
+
export function publicKey(secretKey32) {
|
|
53
|
+
return publicKeyFromPrivateKeyObject(createPrivateKeyObject(secretKey32));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Computes X25519 ECDH shared secret (raw 32 bytes) from reusable KeyObjects.
|
|
57
|
+
*/
|
|
58
|
+
export function sharedKeyFromKeyObjects(privateKey, publicKey) {
|
|
59
|
+
return normalizeSharedSecret(diffieHellman({ privateKey, publicKey }));
|
|
60
|
+
}
|
|
20
61
|
/**
|
|
21
62
|
* Computes X25519 ECDH shared secret (raw 32 bytes).
|
|
22
63
|
*/
|
|
23
64
|
export function sharedKey(secretKey32, publicKey32) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
65
|
+
const privateKey = createPrivateKeyObject(secretKey32);
|
|
66
|
+
const publicKey = createPublicKeyObject(publicKey32);
|
|
67
|
+
return sharedKeyFromKeyObjects(privateKey, publicKey);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Strict X25519 ECDH: rejects all-zero shared secret.
|
|
71
|
+
*/
|
|
72
|
+
export function sharedKeyStrict(secretKey32, publicKey32) {
|
|
73
|
+
const shared = sharedKey(secretKey32, publicKey32);
|
|
74
|
+
if (isAllZero32(shared)) {
|
|
75
|
+
throw new Error("X25519 shared secret is all-zero; reject low-order/invalid peer public key in protocol flow.");
|
|
32
76
|
}
|
|
33
|
-
return
|
|
77
|
+
return shared;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Strict X25519 ECDH from reusable KeyObjects: rejects all-zero shared secret.
|
|
81
|
+
*/
|
|
82
|
+
export function sharedKeyStrictFromKeyObjects(privateKey, publicKey) {
|
|
83
|
+
const shared = sharedKeyFromKeyObjects(privateKey, publicKey);
|
|
84
|
+
if (isAllZero32(shared)) {
|
|
85
|
+
throw new Error("X25519 shared secret is all-zero; reject low-order/invalid peer public key in protocol flow.");
|
|
86
|
+
}
|
|
87
|
+
return shared;
|
|
34
88
|
}
|
|
35
89
|
/**
|
|
36
90
|
* Deterministically creates an X25519 key pair from a 32-byte seed.
|
package/dist/x25519.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x25519.js","sourceRoot":"","sources":["../src/x25519.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"x25519.js","sourceRoot":"","sources":["../src/x25519.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unknownncat/curve25519-node",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Modern zero-dependency X25519 + Ed25519 for Node.js using OpenSSL via node:crypto",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"curve25519",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "git+https://github.com/unknownncat/curve25519-node.git"
|
|
23
23
|
},
|
|
24
24
|
"license": "MIT",
|
|
25
|
-
"author": "
|
|
25
|
+
"author": "Sem nome bah",
|
|
26
26
|
"type": "module",
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"main": "./dist/cjs/index.js",
|
|
@@ -53,6 +53,12 @@
|
|
|
53
53
|
"require": "./dist/cjs/axlsign.js",
|
|
54
54
|
"default": "./dist/axlsign.js"
|
|
55
55
|
},
|
|
56
|
+
"./wasm": {
|
|
57
|
+
"types": "./dist/wasm.d.ts",
|
|
58
|
+
"import": "./dist/wasm.js",
|
|
59
|
+
"require": "./dist/cjs/wasm.js",
|
|
60
|
+
"default": "./dist/wasm.js"
|
|
61
|
+
},
|
|
56
62
|
"./types": {
|
|
57
63
|
"types": "./dist/types.d.ts",
|
|
58
64
|
"import": "./dist/types.js",
|
|
@@ -64,6 +70,11 @@
|
|
|
64
70
|
"files": [
|
|
65
71
|
"dist/**/*",
|
|
66
72
|
"README.md",
|
|
73
|
+
"README.en.md",
|
|
74
|
+
"NOTICE.md",
|
|
75
|
+
"THIRD_PARTY_NOTICE.md",
|
|
76
|
+
"THIRD_PARTY_NOTICES.md",
|
|
77
|
+
"SECURITY.md",
|
|
67
78
|
"LICENSE"
|
|
68
79
|
],
|
|
69
80
|
"engines": {
|
|
@@ -71,19 +82,31 @@
|
|
|
71
82
|
},
|
|
72
83
|
"scripts": {
|
|
73
84
|
"clean": "node scripts/clean.mjs",
|
|
74
|
-
"build:wasm": "node scripts/build-axlsign-wasm.mjs",
|
|
85
|
+
"build:wasm": "node scripts/build-axlsign-wasm.mjs && node scripts/build-curve25519-wasm.mjs",
|
|
75
86
|
"build:esm": "tsc -p tsconfig.json",
|
|
76
87
|
"build:cjs": "tsc -p tsconfig.cjs.json && node scripts/write-cjs-package-json.mjs",
|
|
77
88
|
"build:copy-wasm": "node scripts/copy-axlsign-wasm.mjs",
|
|
78
89
|
"build": "npm run clean && npm run build:wasm && npm run build:esm && npm run build:cjs && npm run build:copy-wasm",
|
|
90
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
91
|
+
"lint": "eslint .",
|
|
92
|
+
"lint:fix": "eslint . --fix",
|
|
93
|
+
"format": "prettier . --write",
|
|
94
|
+
"format:check": "prettier . --check",
|
|
79
95
|
"test": "npm run build && node --test \"test/*.test.mjs\"",
|
|
96
|
+
"ci": "npm run format:check && npm run lint && npm run typecheck && npm run test",
|
|
80
97
|
"bench": "npm run build && npm --prefix bench run bench",
|
|
81
98
|
"bench:quick": "npm run build && npm --prefix bench run bench:quick",
|
|
82
|
-
"prepack": "npm run
|
|
83
|
-
"prepublishOnly": "npm run
|
|
99
|
+
"prepack": "npm run ci",
|
|
100
|
+
"prepublishOnly": "npm run ci"
|
|
84
101
|
},
|
|
85
102
|
"devDependencies": {
|
|
103
|
+
"@eslint/js": "^9.37.0",
|
|
86
104
|
"@types/node": "^22.18.6",
|
|
105
|
+
"eslint": "^9.37.0",
|
|
106
|
+
"eslint-config-prettier": "^10.1.8",
|
|
107
|
+
"globals": "^16.4.0",
|
|
108
|
+
"prettier": "^3.6.2",
|
|
109
|
+
"typescript-eslint": "^8.46.1",
|
|
87
110
|
"typescript": "^5.9.2"
|
|
88
111
|
}
|
|
89
112
|
}
|