@matter/general 0.16.0-alpha.0-20250902-38a7cc156 → 0.16.0-alpha.0-20250906-463912bd0
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/dist/cjs/crypto/Crypto.d.ts +36 -41
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
- package/dist/cjs/crypto/Crypto.js +4 -4
- package/dist/cjs/crypto/Crypto.js.map +1 -1
- package/dist/cjs/crypto/Key.d.ts.map +1 -1
- package/dist/cjs/crypto/Key.js +3 -2
- package/dist/cjs/crypto/Key.js.map +1 -1
- package/dist/cjs/crypto/MockCrypto.js +1 -1
- package/dist/cjs/crypto/MockCrypto.js.map +1 -1
- package/dist/cjs/crypto/Spake2p.d.ts.map +1 -1
- package/dist/cjs/crypto/Spake2p.js +20 -18
- package/dist/cjs/crypto/Spake2p.js.map +1 -1
- package/dist/esm/crypto/Crypto.d.ts +36 -41
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/crypto/Crypto.js +3 -3
- package/dist/esm/crypto/Crypto.js.map +1 -1
- package/dist/esm/crypto/Key.d.ts.map +1 -1
- package/dist/esm/crypto/Key.js +3 -2
- package/dist/esm/crypto/Key.js.map +1 -1
- package/dist/esm/crypto/MockCrypto.js +1 -1
- package/dist/esm/crypto/MockCrypto.js.map +1 -1
- package/dist/esm/crypto/Spake2p.d.ts.map +1 -1
- package/dist/esm/crypto/Spake2p.js +20 -18
- package/dist/esm/crypto/Spake2p.js.map +1 -1
- package/package.json +3 -3
- package/src/crypto/Crypto.ts +3 -3
- package/src/crypto/Key.ts +3 -2
- package/src/crypto/MockCrypto.ts +1 -1
- package/src/crypto/Spake2p.ts +20 -18
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Bytes } from "#util/Bytes.js";
|
|
7
7
|
import { MaybePromise } from "#util/Promises.js";
|
|
8
|
-
import * as mod from "@noble/curves/abstract/modular";
|
|
8
|
+
import * as mod from "@noble/curves/abstract/modular.js";
|
|
9
|
+
import * as utils from "@noble/curves/utils.js";
|
|
9
10
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
11
|
export declare const ec: {
|
|
11
12
|
mod(a: bigint, b: bigint): bigint;
|
|
@@ -21,55 +22,49 @@ export declare const ec: {
|
|
|
21
22
|
FpLegendre<T>(Fp: mod.IField<T>, n: T): -1 | 0 | 1;
|
|
22
23
|
FpIsSquare<T>(Fp: mod.IField<T>, n: T): boolean;
|
|
23
24
|
nLength(n: bigint, nBitLength?: number): mod.NLength;
|
|
24
|
-
Field(ORDER: bigint,
|
|
25
|
-
sqrt: (n: bigint) => bigint;
|
|
25
|
+
Field(ORDER: bigint, opts?: Partial<{
|
|
26
26
|
isLE: boolean;
|
|
27
27
|
BITS: number;
|
|
28
|
-
|
|
28
|
+
sqrt: (n: bigint) => bigint;
|
|
29
29
|
allowedLengths?: readonly number[];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}): Readonly<mod.IField<bigint> & Required<Pick<mod.IField<bigint>, "isOdd">>>;
|
|
30
|
+
modFromBytes: boolean;
|
|
31
|
+
}>): Readonly<mod.IField<bigint> & Required<Pick<mod.IField<bigint>, "isOdd">>>;
|
|
33
32
|
FpSqrtOdd<T>(Fp: mod.IField<T>, elm: T): T;
|
|
34
33
|
FpSqrtEven<T>(Fp: mod.IField<T>, elm: T): T;
|
|
35
|
-
hashToPrivateScalar(hash: string | Uint8Array, groupOrder: bigint, isLE?: boolean): bigint;
|
|
36
34
|
getFieldBytesLength(fieldOrder: bigint): number;
|
|
37
35
|
getMinHashLength(fieldOrder: bigint): number;
|
|
38
36
|
mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE?: boolean): Uint8Array;
|
|
39
37
|
isNegativeLE: (num: bigint, modulo: bigint) => boolean;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
notImplemented:
|
|
69
|
-
|
|
70
|
-
validateObject: typeof import("@noble/curves/utils").validateObject;
|
|
71
|
-
isHash: typeof import("@noble/curves/utils").isHash;
|
|
72
|
-
p256: import("@noble/curves/_shortw_utils").CurveFnWithCreate;
|
|
38
|
+
abool(value: boolean, title?: string): boolean;
|
|
39
|
+
asafenumber(value: number, title?: string): void;
|
|
40
|
+
numberToHexUnpadded(num: number | bigint): string;
|
|
41
|
+
hexToNumber(hex: string): bigint;
|
|
42
|
+
bytesToNumberBE(bytes: Uint8Array): bigint;
|
|
43
|
+
bytesToNumberLE(bytes: Uint8Array): bigint;
|
|
44
|
+
numberToBytesBE(n: number | bigint, len: number): Uint8Array;
|
|
45
|
+
numberToBytesLE(n: number | bigint, len: number): Uint8Array;
|
|
46
|
+
numberToVarBytesBE(n: number | bigint): Uint8Array;
|
|
47
|
+
equalBytes(a: Uint8Array, b: Uint8Array): boolean;
|
|
48
|
+
copyBytes(bytes: Uint8Array): Uint8Array;
|
|
49
|
+
asciiToBytes(ascii: string): Uint8Array;
|
|
50
|
+
inRange(n: bigint, min: bigint, max: bigint): boolean;
|
|
51
|
+
aInRange(title: string, n: bigint, min: bigint, max: bigint): void;
|
|
52
|
+
bitLen(n: bigint): number;
|
|
53
|
+
bitGet(n: bigint, pos: number): bigint;
|
|
54
|
+
bitSet(n: bigint, pos: number, value: boolean): bigint;
|
|
55
|
+
createHmacDrbg<T>(hashLen: number, qByteLen: number, hmacFn: (key: Uint8Array, message: Uint8Array) => Uint8Array): (seed: Uint8Array, predicate: (v: Uint8Array) => T | undefined) => T;
|
|
56
|
+
validateObject(object: Record<string, any>, fields?: Record<string, string>, optFields?: Record<string, string>): void;
|
|
57
|
+
memoized<T extends object, R, O extends any[]>(fn: (arg: T, ...args: O) => R): (arg: T, ...args: O) => R;
|
|
58
|
+
abytes: typeof utils.abytes;
|
|
59
|
+
anumber: typeof utils.anumber;
|
|
60
|
+
bytesToHex: typeof utils.bytesToHex;
|
|
61
|
+
concatBytes: typeof utils.concatBytes;
|
|
62
|
+
hexToBytes: typeof utils.hexToBytes;
|
|
63
|
+
isBytes: typeof utils.isBytes;
|
|
64
|
+
randomBytes: typeof utils.randomBytes;
|
|
65
|
+
bitMask: (n: number) => bigint;
|
|
66
|
+
notImplemented: () => never;
|
|
67
|
+
p256: import("@noble/curves/abstract/weierstrass.js").ECDSA;
|
|
73
68
|
};
|
|
74
69
|
export declare const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
|
|
75
70
|
export declare const CRYPTO_HASH_ALGORITHM = "sha256";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,16 +41,16 @@ module.exports = __toCommonJS(Crypto_exports);
|
|
|
41
41
|
var import_Diagnostic = require("#log/Diagnostic.js");
|
|
42
42
|
var import_Logger = require("#log/Logger.js");
|
|
43
43
|
var import_Bytes = require("#util/Bytes.js");
|
|
44
|
-
var mod = __toESM(require("@noble/curves/abstract/modular"), 1);
|
|
45
|
-
var
|
|
46
|
-
var
|
|
44
|
+
var mod = __toESM(require("@noble/curves/abstract/modular.js"), 1);
|
|
45
|
+
var import_nist = require("@noble/curves/nist.js");
|
|
46
|
+
var utils = __toESM(require("@noble/curves/utils.js"), 1);
|
|
47
47
|
/**
|
|
48
48
|
* @license
|
|
49
49
|
* Copyright 2022-2025 Matter.js Authors
|
|
50
50
|
* SPDX-License-Identifier: Apache-2.0
|
|
51
51
|
*/
|
|
52
52
|
const ec = {
|
|
53
|
-
p256:
|
|
53
|
+
p256: import_nist.p256,
|
|
54
54
|
...utils,
|
|
55
55
|
...mod
|
|
56
56
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Crypto.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAA2B;AAC3B,oBAAuB;AACvB,mBAAsB;AAEtB,UAAqB;AACrB,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAA2B;AAC3B,oBAAuB;AACvB,mBAAsB;AAEtB,UAAqB;AACrB,kBAAqB;AACrB,YAAuB;AAbvB;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,KAAK;AAAA,EACd;AAAA,EACA,GAAG;AAAA,EACH,GAAG;AACP;AAEO,MAAM,2BAA2B;AACjC,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAC/B,MAAM,8BAA8B;AAG3C,MAAM,SAAS,qBAAO,IAAI,QAAQ;AAa3B,MAAe,OAAO;AAAA,EAsEzB,IAAI,cAAc;AACd,WAAO,mBAAM,GAAG,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;AAAA,EAC1C;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,mBAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;AAAA,EAC5D;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,mBAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;AAAA,EAC5D;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,mBAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC;AAAA,EAC/D;AAAA,EAEA,aAAa,MAAc,UAAmB;AAC1C,QAAI,aAAa,QAAW;AACxB,aAAO,mBAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AAAA,IAChD;AAEA,WAAO,MAAM;AACT,YAAM,SAAS,mBAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AACpD,UAAI,SAAS,SAAU,QAAO;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,YAAY,WAAoB;AAC5B,UAAM,UAAU,CAAC,SAAS,6BAAW,OAAO,KAAK,kBAAkB,GAAG,uBAAuB;AAC7F,QAAI,WAAW;AACX,cAAQ,KAAK,OAAO,SAAS;AAAA,IACjC;AACA,WAAO,MAAM,GAAG,OAAO;AAAA,EAC3B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/crypto/Key.js
CHANGED
|
@@ -39,7 +39,7 @@ var import_CryptoError = require("./CryptoError.js");
|
|
|
39
39
|
*/
|
|
40
40
|
const {
|
|
41
41
|
numberToBytesBE,
|
|
42
|
-
p256: { Point, getSharedSecret }
|
|
42
|
+
p256: { getPublicKey, Point, getSharedSecret }
|
|
43
43
|
} = import_Crypto.ec;
|
|
44
44
|
const JWK_KEYS = [
|
|
45
45
|
"crv",
|
|
@@ -308,7 +308,8 @@ function Key(properties) {
|
|
|
308
308
|
default:
|
|
309
309
|
throw new import_CryptoError.KeyInputError(`Unsupported elliptic curve ${crv}`);
|
|
310
310
|
}
|
|
311
|
-
const
|
|
311
|
+
const pubKeyBytes = getPublicKey(import_Bytes.Bytes.of(that.privateKey));
|
|
312
|
+
const ecKey = Point.fromBytes(pubKeyBytes);
|
|
312
313
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
|
313
314
|
that.yBits = numberToBytesBE(ecKey.y, keyLength);
|
|
314
315
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Key.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAuB;AACvB,sBAA2C;AAC3C,yBAAiD;AACjD,mBAAsB;AACtB,oBAAmB;AACnB,yBAA8B;AAX9B;AAAA;AAAA;AAAA;AAAA;AAaA,MAAM;AAAA,EACF;AAAA,EACA,MAAM,EAAE,OAAO,gBAAgB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases", "Key"]
|
|
6
6
|
}
|
|
@@ -69,7 +69,7 @@ function MockCrypto(index = 128, implementation = import_StandardCrypto.Standard
|
|
|
69
69
|
return result;
|
|
70
70
|
};
|
|
71
71
|
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
72
|
-
const privateBits = import_Crypto.ec.mapHashToField(import_Bytes.Bytes.of(crypto.randomBytes(48)), import_Crypto.ec.p256.CURVE.n);
|
|
72
|
+
const privateBits = import_Crypto.ec.mapHashToField(import_Bytes.Bytes.of(crypto.randomBytes(48)), import_Crypto.ec.p256.Point.CURVE().n);
|
|
73
73
|
return (0, import_Key.Key)({
|
|
74
74
|
kty: import_Key.KeyType.EC,
|
|
75
75
|
crv: import_Key.CurveType.p256,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/MockCrypto.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoC;AACpC,mBAAsB;AACtB,oBAA2B;AAC3B,iBAAoD;AACpD,4BAA+B;AAV/B;AAAA;AAAA;AAAA;AAAA;AAkCO,SAAS,WAAW,QAAgB,KAAM,iBAAmC,sCAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,uCAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAElC,QAAM,EAAE,aAAa,cAAc,IAAI;AAEvC,SAAO,iBAAiB,QAAQ;AAAA,IAC5B,OAAO;AAAA,MACH,MAAM;AACF,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,UAAkB;AAClB,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,MAAM;AACF,eAAO,OAAO,gBAAgB;AAAA,MAClC;AAAA,MAEA,IAAI,UAAmB;AACnB,YAAI,UAAU;AACV,iBAAO,cAAc;AACrB,iBAAO,gBAAgB;AAAA,QAC3B,OAAO;AACH,yBAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,iBAAe;AAEf,SAAO;AAEP,WAAS,iBAAiB;AAEtB,WAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,YAAM,SAAS,IAAI,WAAW,MAAM;AACpC,aAAO,KAAK,KAAK;AACjB,aAAO;AAAA,IACX;AAGA,WAAO,gBAAgB,SAAS,2BAA2B;AACvD,YAAM,cAAc,iBAAG,eAAe,mBAAM,GAAG,OAAO,YAAY,EAAE,CAAC,GAAG,iBAAG,KAAK,MAAM,CAAC;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoC;AACpC,mBAAsB;AACtB,oBAA2B;AAC3B,iBAAoD;AACpD,4BAA+B;AAV/B;AAAA;AAAA;AAAA;AAAA;AAkCO,SAAS,WAAW,QAAgB,KAAM,iBAAmC,sCAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,uCAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAElC,QAAM,EAAE,aAAa,cAAc,IAAI;AAEvC,SAAO,iBAAiB,QAAQ;AAAA,IAC5B,OAAO;AAAA,MACH,MAAM;AACF,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,UAAkB;AAClB,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,MAAM;AACF,eAAO,OAAO,gBAAgB;AAAA,MAClC;AAAA,MAEA,IAAI,UAAmB;AACnB,YAAI,UAAU;AACV,iBAAO,cAAc;AACrB,iBAAO,gBAAgB;AAAA,QAC3B,OAAO;AACH,yBAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,iBAAe;AAEf,SAAO;AAEP,WAAS,iBAAiB;AAEtB,WAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,YAAM,SAAS,IAAI,WAAW,MAAM;AACpC,aAAO,KAAK,KAAK;AACjB,aAAO;AAAA,IACX;AAGA,WAAO,gBAAgB,SAAS,2BAA2B;AACvD,YAAM,cAAc,iBAAG,eAAe,mBAAM,GAAG,OAAO,YAAY,EAAE,CAAC,GAAG,iBAAG,KAAK,MAAM,MAAM,EAAE,CAAC;AAC/F,iBAAO,gBAAI;AAAA,QACP,KAAK,mBAAQ;AAAA,QACb,KAAK,qBAAU;AAAA,QACf;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAU,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAU,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;WAY9E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;IAMrF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM;gBAM5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAOtE,QAAQ,IAAI,KAAK;IAKjB,QAAQ,IAAI,KAAK;IAKX,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK;;;;;IAa7D,8BAA8B,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK;;;;;YAanD,yBAAyB;IAiBvC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,YAAY;CAIvB"}
|
|
@@ -32,13 +32,13 @@ var import_CryptoConstants = require("./CryptoConstants.js");
|
|
|
32
32
|
* SPDX-License-Identifier: Apache-2.0
|
|
33
33
|
*/
|
|
34
34
|
const {
|
|
35
|
-
p256: {
|
|
35
|
+
p256: { Point },
|
|
36
36
|
numberToBytesBE,
|
|
37
37
|
bytesToNumberBE,
|
|
38
38
|
mod
|
|
39
39
|
} = import_Crypto.ec;
|
|
40
|
-
const M =
|
|
41
|
-
const N =
|
|
40
|
+
const M = Point.fromHex("02886e2f97ace46e55ba9dd7242579f2993b64e16ef3dcab95afd497333d8fa12f");
|
|
41
|
+
const N = Point.fromHex("03d8bbd6c639c62937b04d997f38c3770719c629d7014d49a24b4f98baa1292b49");
|
|
42
42
|
const CRYPTO_W_SIZE_BYTES = import_CryptoConstants.CRYPTO_GROUP_SIZE_BYTES + 8;
|
|
43
43
|
class Spake2p {
|
|
44
44
|
#crypto;
|
|
@@ -51,17 +51,19 @@ class Spake2p {
|
|
|
51
51
|
const ws = import_Bytes.Bytes.of(
|
|
52
52
|
await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2)
|
|
53
53
|
);
|
|
54
|
-
const
|
|
55
|
-
const
|
|
54
|
+
const curve = Point.CURVE();
|
|
55
|
+
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), curve.n);
|
|
56
|
+
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), curve.n);
|
|
56
57
|
return { w0, w1 };
|
|
57
58
|
}
|
|
58
59
|
static async computeW0L(crypto, pbkdfParameters, pin) {
|
|
59
60
|
const { w0, w1 } = await this.computeW0W1(crypto, pbkdfParameters, pin);
|
|
60
|
-
const L =
|
|
61
|
+
const L = Point.BASE.multiply(w1).toBytes(false);
|
|
61
62
|
return { w0, L };
|
|
62
63
|
}
|
|
63
64
|
static create(crypto, context, w0) {
|
|
64
|
-
const
|
|
65
|
+
const curve = Point.CURVE();
|
|
66
|
+
const random = crypto.randomBigInt(32, curve.p);
|
|
65
67
|
return new Spake2p(crypto, context, random, w0);
|
|
66
68
|
}
|
|
67
69
|
constructor(crypto, context, random, w0) {
|
|
@@ -71,15 +73,15 @@ class Spake2p {
|
|
|
71
73
|
this.#w0 = w0;
|
|
72
74
|
}
|
|
73
75
|
computeX() {
|
|
74
|
-
const X =
|
|
75
|
-
return X.
|
|
76
|
+
const X = Point.BASE.multiply(this.#random).add(M.multiply(this.#w0));
|
|
77
|
+
return X.toBytes(false);
|
|
76
78
|
}
|
|
77
79
|
computeY() {
|
|
78
|
-
const Y =
|
|
79
|
-
return Y.
|
|
80
|
+
const Y = Point.BASE.multiply(this.#random).add(N.multiply(this.#w0));
|
|
81
|
+
return Y.toBytes(false);
|
|
80
82
|
}
|
|
81
83
|
async computeSecretAndVerifiersFromY(w1, X, Y) {
|
|
82
|
-
const YPoint =
|
|
84
|
+
const YPoint = Point.fromBytes(import_Bytes.Bytes.of(Y));
|
|
83
85
|
try {
|
|
84
86
|
YPoint.assertValidity();
|
|
85
87
|
} catch (error) {
|
|
@@ -88,11 +90,11 @@ class Spake2p {
|
|
|
88
90
|
const yNwo = YPoint.add(N.multiply(this.#w0).negate());
|
|
89
91
|
const Z = yNwo.multiply(this.#random);
|
|
90
92
|
const V = yNwo.multiply(w1);
|
|
91
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
93
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
92
94
|
}
|
|
93
95
|
async computeSecretAndVerifiersFromX(L, X, Y) {
|
|
94
|
-
const XPoint =
|
|
95
|
-
const LPoint =
|
|
96
|
+
const XPoint = Point.fromBytes(import_Bytes.Bytes.of(X));
|
|
97
|
+
const LPoint = Point.fromBytes(import_Bytes.Bytes.of(L));
|
|
96
98
|
try {
|
|
97
99
|
XPoint.assertValidity();
|
|
98
100
|
} catch (error) {
|
|
@@ -100,7 +102,7 @@ class Spake2p {
|
|
|
100
102
|
}
|
|
101
103
|
const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
|
|
102
104
|
const V = LPoint.multiply(this.#random);
|
|
103
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
105
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
104
106
|
}
|
|
105
107
|
async computeSecretAndVerifiers(X, Y, Z, V) {
|
|
106
108
|
const TT_HASH = import_Bytes.Bytes.of(await this.computeTranscriptHash(X, Y, Z, V));
|
|
@@ -120,8 +122,8 @@ class Spake2p {
|
|
|
120
122
|
this.addToContext(TTwriter, this.#context);
|
|
121
123
|
this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
|
|
122
124
|
this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
|
|
123
|
-
this.addToContext(TTwriter,
|
|
124
|
-
this.addToContext(TTwriter,
|
|
125
|
+
this.addToContext(TTwriter, M.toBytes(false));
|
|
126
|
+
this.addToContext(TTwriter, N.toBytes(false));
|
|
125
127
|
this.addToContext(TTwriter, X);
|
|
126
128
|
this.addToContext(TTwriter, Y);
|
|
127
129
|
this.addToContext(TTwriter, Z);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Spake2p.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAA8B;AAC9B,mBAA8B;AAC9B,wBAA2B;AAC3B,oBAA2B;AAC3B,6BAAwC;AAVxC;AAAA;AAAA;AAAA;AAAA;AAYA,MAAM;AAAA,EACF,MAAM,EAAE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Bytes } from "#util/Bytes.js";
|
|
7
7
|
import { MaybePromise } from "#util/Promises.js";
|
|
8
|
-
import * as mod from "@noble/curves/abstract/modular";
|
|
8
|
+
import * as mod from "@noble/curves/abstract/modular.js";
|
|
9
|
+
import * as utils from "@noble/curves/utils.js";
|
|
9
10
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
10
11
|
export declare const ec: {
|
|
11
12
|
mod(a: bigint, b: bigint): bigint;
|
|
@@ -21,55 +22,49 @@ export declare const ec: {
|
|
|
21
22
|
FpLegendre<T>(Fp: mod.IField<T>, n: T): -1 | 0 | 1;
|
|
22
23
|
FpIsSquare<T>(Fp: mod.IField<T>, n: T): boolean;
|
|
23
24
|
nLength(n: bigint, nBitLength?: number): mod.NLength;
|
|
24
|
-
Field(ORDER: bigint,
|
|
25
|
-
sqrt: (n: bigint) => bigint;
|
|
25
|
+
Field(ORDER: bigint, opts?: Partial<{
|
|
26
26
|
isLE: boolean;
|
|
27
27
|
BITS: number;
|
|
28
|
-
|
|
28
|
+
sqrt: (n: bigint) => bigint;
|
|
29
29
|
allowedLengths?: readonly number[];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}): Readonly<mod.IField<bigint> & Required<Pick<mod.IField<bigint>, "isOdd">>>;
|
|
30
|
+
modFromBytes: boolean;
|
|
31
|
+
}>): Readonly<mod.IField<bigint> & Required<Pick<mod.IField<bigint>, "isOdd">>>;
|
|
33
32
|
FpSqrtOdd<T>(Fp: mod.IField<T>, elm: T): T;
|
|
34
33
|
FpSqrtEven<T>(Fp: mod.IField<T>, elm: T): T;
|
|
35
|
-
hashToPrivateScalar(hash: string | Uint8Array, groupOrder: bigint, isLE?: boolean): bigint;
|
|
36
34
|
getFieldBytesLength(fieldOrder: bigint): number;
|
|
37
35
|
getMinHashLength(fieldOrder: bigint): number;
|
|
38
36
|
mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE?: boolean): Uint8Array;
|
|
39
37
|
isNegativeLE: (num: bigint, modulo: bigint) => boolean;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
notImplemented:
|
|
69
|
-
|
|
70
|
-
validateObject: typeof import("@noble/curves/utils").validateObject;
|
|
71
|
-
isHash: typeof import("@noble/curves/utils").isHash;
|
|
72
|
-
p256: import("@noble/curves/_shortw_utils").CurveFnWithCreate;
|
|
38
|
+
abool(value: boolean, title?: string): boolean;
|
|
39
|
+
asafenumber(value: number, title?: string): void;
|
|
40
|
+
numberToHexUnpadded(num: number | bigint): string;
|
|
41
|
+
hexToNumber(hex: string): bigint;
|
|
42
|
+
bytesToNumberBE(bytes: Uint8Array): bigint;
|
|
43
|
+
bytesToNumberLE(bytes: Uint8Array): bigint;
|
|
44
|
+
numberToBytesBE(n: number | bigint, len: number): Uint8Array;
|
|
45
|
+
numberToBytesLE(n: number | bigint, len: number): Uint8Array;
|
|
46
|
+
numberToVarBytesBE(n: number | bigint): Uint8Array;
|
|
47
|
+
equalBytes(a: Uint8Array, b: Uint8Array): boolean;
|
|
48
|
+
copyBytes(bytes: Uint8Array): Uint8Array;
|
|
49
|
+
asciiToBytes(ascii: string): Uint8Array;
|
|
50
|
+
inRange(n: bigint, min: bigint, max: bigint): boolean;
|
|
51
|
+
aInRange(title: string, n: bigint, min: bigint, max: bigint): void;
|
|
52
|
+
bitLen(n: bigint): number;
|
|
53
|
+
bitGet(n: bigint, pos: number): bigint;
|
|
54
|
+
bitSet(n: bigint, pos: number, value: boolean): bigint;
|
|
55
|
+
createHmacDrbg<T>(hashLen: number, qByteLen: number, hmacFn: (key: Uint8Array, message: Uint8Array) => Uint8Array): (seed: Uint8Array, predicate: (v: Uint8Array) => T | undefined) => T;
|
|
56
|
+
validateObject(object: Record<string, any>, fields?: Record<string, string>, optFields?: Record<string, string>): void;
|
|
57
|
+
memoized<T extends object, R, O extends any[]>(fn: (arg: T, ...args: O) => R): (arg: T, ...args: O) => R;
|
|
58
|
+
abytes: typeof utils.abytes;
|
|
59
|
+
anumber: typeof utils.anumber;
|
|
60
|
+
bytesToHex: typeof utils.bytesToHex;
|
|
61
|
+
concatBytes: typeof utils.concatBytes;
|
|
62
|
+
hexToBytes: typeof utils.hexToBytes;
|
|
63
|
+
isBytes: typeof utils.isBytes;
|
|
64
|
+
randomBytes: typeof utils.randomBytes;
|
|
65
|
+
bitMask: (n: number) => bigint;
|
|
66
|
+
notImplemented: () => never;
|
|
67
|
+
p256: import("@noble/curves/abstract/weierstrass.js").ECDSA;
|
|
73
68
|
};
|
|
74
69
|
export declare const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
|
|
75
70
|
export declare const CRYPTO_HASH_ALGORITHM = "sha256";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
import { Diagnostic } from "#log/Diagnostic.js";
|
|
7
7
|
import { Logger } from "#log/Logger.js";
|
|
8
8
|
import { Bytes } from "#util/Bytes.js";
|
|
9
|
-
import * as mod from "@noble/curves/abstract/modular";
|
|
10
|
-
import
|
|
11
|
-
import
|
|
9
|
+
import * as mod from "@noble/curves/abstract/modular.js";
|
|
10
|
+
import { p256 } from "@noble/curves/nist.js";
|
|
11
|
+
import * as utils from "@noble/curves/utils.js";
|
|
12
12
|
const ec = {
|
|
13
13
|
p256,
|
|
14
14
|
...utils,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Crypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,aAAa;AAEtB,YAAY,SAAS;AACrB,YAAY
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,aAAa;AAEtB,YAAY,SAAS;AACrB,SAAS,YAAY;AACrB,YAAY,WAAW;AAGhB,MAAM,KAAK;AAAA,EACd;AAAA,EACA,GAAG;AAAA,EACH,GAAG;AACP;AAEO,MAAM,2BAA2B;AACjC,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAC/B,MAAM,8BAA8B;AAG3C,MAAM,SAAS,OAAO,IAAI,QAAQ;AAa3B,MAAe,OAAO;AAAA,EAsEzB,IAAI,cAAc;AACd,WAAO,MAAM,GAAG,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;AAAA,EAC1C;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,MAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;AAAA,EAC5D;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,MAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC;AAAA,EAC5D;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,MAAM,WAAW,KAAK,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC;AAAA,EAC/D;AAAA,EAEA,aAAa,MAAc,UAAmB;AAC1C,QAAI,aAAa,QAAW;AACxB,aAAO,MAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AAAA,IAChD;AAEA,WAAO,MAAM;AACT,YAAM,SAAS,MAAM,SAAS,KAAK,YAAY,IAAI,CAAC;AACpD,UAAI,SAAS,SAAU,QAAO;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,YAAY,WAAoB;AAC5B,UAAM,UAAU,CAAC,SAAS,WAAW,OAAO,KAAK,kBAAkB,GAAG,uBAAuB;AAC7F,QAAI,WAAW;AACX,cAAQ,KAAK,OAAO,SAAS;AAAA,IACjC;AACA,WAAO,MAAM,GAAG,OAAO;AAAA,EAC3B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/crypto/Key.js
CHANGED
|
@@ -11,7 +11,7 @@ import { ec } from "./Crypto.js";
|
|
|
11
11
|
import { KeyInputError } from "./CryptoError.js";
|
|
12
12
|
const {
|
|
13
13
|
numberToBytesBE,
|
|
14
|
-
p256: { Point, getSharedSecret }
|
|
14
|
+
p256: { getPublicKey, Point, getSharedSecret }
|
|
15
15
|
} = ec;
|
|
16
16
|
const JWK_KEYS = [
|
|
17
17
|
"crv",
|
|
@@ -280,7 +280,8 @@ function Key(properties) {
|
|
|
280
280
|
default:
|
|
281
281
|
throw new KeyInputError(`Unsupported elliptic curve ${crv}`);
|
|
282
282
|
}
|
|
283
|
-
const
|
|
283
|
+
const pubKeyBytes = getPublicKey(Bytes.of(that.privateKey));
|
|
284
|
+
const ecKey = Point.fromBytes(pubKeyBytes);
|
|
284
285
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
|
285
286
|
that.yBits = numberToBytesBE(ecKey.y, keyLength);
|
|
286
287
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Key.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,UAAmB,eAAe;AAC3C,SAAS,aAAa,2BAA2B;AACjD,SAAS,aAAa;AACtB,SAAS,UAAU;AACnB,SAAS,qBAAqB;AAE9B,MAAM;AAAA,EACF;AAAA,EACA,MAAM,EAAE,OAAO,gBAAgB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases", "Key"]
|
|
6
6
|
}
|
|
@@ -46,7 +46,7 @@ function MockCrypto(index = 128, implementation = StandardCrypto) {
|
|
|
46
46
|
return result;
|
|
47
47
|
};
|
|
48
48
|
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
49
|
-
const privateBits = ec.mapHashToField(Bytes.of(crypto.randomBytes(48)), ec.p256.CURVE.n);
|
|
49
|
+
const privateBits = ec.mapHashToField(Bytes.of(crypto.randomBytes(48)), ec.p256.Point.CURVE().n);
|
|
50
50
|
return Key({
|
|
51
51
|
kty: KeyType.EC,
|
|
52
52
|
crv: CurveType.p256,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/MockCrypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AACpC,SAAS,aAAa;AACtB,SAAiB,UAAU;AAC3B,SAAS,WAAW,KAAK,eAA2B;AACpD,SAAS,sBAAsB;AAwBxB,SAAS,WAAW,QAAgB,KAAM,iBAAmC,gBAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,oBAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAElC,QAAM,EAAE,aAAa,cAAc,IAAI;AAEvC,SAAO,iBAAiB,QAAQ;AAAA,IAC5B,OAAO;AAAA,MACH,MAAM;AACF,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,UAAkB;AAClB,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,MAAM;AACF,eAAO,OAAO,gBAAgB;AAAA,MAClC;AAAA,MAEA,IAAI,UAAmB;AACnB,YAAI,UAAU;AACV,iBAAO,cAAc;AACrB,iBAAO,gBAAgB;AAAA,QAC3B,OAAO;AACH,yBAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,iBAAe;AAEf,SAAO;AAEP,WAAS,iBAAiB;AAEtB,WAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,YAAM,SAAS,IAAI,WAAW,MAAM;AACpC,aAAO,KAAK,KAAK;AACjB,aAAO;AAAA,IACX;AAGA,WAAO,gBAAgB,SAAS,2BAA2B;AACvD,YAAM,cAAc,GAAG,eAAe,MAAM,GAAG,OAAO,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AACpC,SAAS,aAAa;AACtB,SAAiB,UAAU;AAC3B,SAAS,WAAW,KAAK,eAA2B;AACpD,SAAS,sBAAsB;AAwBxB,SAAS,WAAW,QAAgB,KAAM,iBAAmC,gBAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,oBAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAElC,QAAM,EAAE,aAAa,cAAc,IAAI;AAEvC,SAAO,iBAAiB,QAAQ;AAAA,IAC5B,OAAO;AAAA,MACH,MAAM;AACF,eAAO;AAAA,MACX;AAAA,MAEA,IAAI,UAAkB;AAClB,gBAAQ,WAAW;AAAA,MACvB;AAAA,IACJ;AAAA,IAEA,UAAU;AAAA,MACN,MAAM;AACF,eAAO,OAAO,gBAAgB;AAAA,MAClC;AAAA,MAEA,IAAI,UAAmB;AACnB,YAAI,UAAU;AACV,iBAAO,cAAc;AACrB,iBAAO,gBAAgB;AAAA,QAC3B,OAAO;AACH,yBAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,iBAAe;AAEf,SAAO;AAEP,WAAS,iBAAiB;AAEtB,WAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,YAAM,SAAS,IAAI,WAAW,MAAM;AACpC,aAAO,KAAK,KAAK;AACjB,aAAO;AAAA,IACX;AAGA,WAAO,gBAAgB,SAAS,2BAA2B;AACvD,YAAM,cAAc,GAAG,eAAe,MAAM,GAAG,OAAO,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,MAAM,EAAE,CAAC;AAC/F,aAAO,IAAI;AAAA,QACP,KAAK,QAAQ;AAAA,QACb,KAAK,UAAU;AAAA,QACf;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAU,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAU,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;WAY9E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;IAMrF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM;gBAM5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAOtE,QAAQ,IAAI,KAAK;IAKjB,QAAQ,IAAI,KAAK;IAKX,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK;;;;;IAa7D,8BAA8B,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK;;;;;YAanD,yBAAyB;IAiBvC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,YAAY;CAIvB"}
|
|
@@ -9,13 +9,13 @@ import { DataWriter } from "../util/DataWriter.js";
|
|
|
9
9
|
import { ec } from "./Crypto.js";
|
|
10
10
|
import { CRYPTO_GROUP_SIZE_BYTES } from "./CryptoConstants.js";
|
|
11
11
|
const {
|
|
12
|
-
p256: {
|
|
12
|
+
p256: { Point },
|
|
13
13
|
numberToBytesBE,
|
|
14
14
|
bytesToNumberBE,
|
|
15
15
|
mod
|
|
16
16
|
} = ec;
|
|
17
|
-
const M =
|
|
18
|
-
const N =
|
|
17
|
+
const M = Point.fromHex("02886e2f97ace46e55ba9dd7242579f2993b64e16ef3dcab95afd497333d8fa12f");
|
|
18
|
+
const N = Point.fromHex("03d8bbd6c639c62937b04d997f38c3770719c629d7014d49a24b4f98baa1292b49");
|
|
19
19
|
const CRYPTO_W_SIZE_BYTES = CRYPTO_GROUP_SIZE_BYTES + 8;
|
|
20
20
|
class Spake2p {
|
|
21
21
|
#crypto;
|
|
@@ -28,17 +28,19 @@ class Spake2p {
|
|
|
28
28
|
const ws = Bytes.of(
|
|
29
29
|
await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2)
|
|
30
30
|
);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
31
|
+
const curve = Point.CURVE();
|
|
32
|
+
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), curve.n);
|
|
33
|
+
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), curve.n);
|
|
33
34
|
return { w0, w1 };
|
|
34
35
|
}
|
|
35
36
|
static async computeW0L(crypto, pbkdfParameters, pin) {
|
|
36
37
|
const { w0, w1 } = await this.computeW0W1(crypto, pbkdfParameters, pin);
|
|
37
|
-
const L =
|
|
38
|
+
const L = Point.BASE.multiply(w1).toBytes(false);
|
|
38
39
|
return { w0, L };
|
|
39
40
|
}
|
|
40
41
|
static create(crypto, context, w0) {
|
|
41
|
-
const
|
|
42
|
+
const curve = Point.CURVE();
|
|
43
|
+
const random = crypto.randomBigInt(32, curve.p);
|
|
42
44
|
return new Spake2p(crypto, context, random, w0);
|
|
43
45
|
}
|
|
44
46
|
constructor(crypto, context, random, w0) {
|
|
@@ -48,15 +50,15 @@ class Spake2p {
|
|
|
48
50
|
this.#w0 = w0;
|
|
49
51
|
}
|
|
50
52
|
computeX() {
|
|
51
|
-
const X =
|
|
52
|
-
return X.
|
|
53
|
+
const X = Point.BASE.multiply(this.#random).add(M.multiply(this.#w0));
|
|
54
|
+
return X.toBytes(false);
|
|
53
55
|
}
|
|
54
56
|
computeY() {
|
|
55
|
-
const Y =
|
|
56
|
-
return Y.
|
|
57
|
+
const Y = Point.BASE.multiply(this.#random).add(N.multiply(this.#w0));
|
|
58
|
+
return Y.toBytes(false);
|
|
57
59
|
}
|
|
58
60
|
async computeSecretAndVerifiersFromY(w1, X, Y) {
|
|
59
|
-
const YPoint =
|
|
61
|
+
const YPoint = Point.fromBytes(Bytes.of(Y));
|
|
60
62
|
try {
|
|
61
63
|
YPoint.assertValidity();
|
|
62
64
|
} catch (error) {
|
|
@@ -65,11 +67,11 @@ class Spake2p {
|
|
|
65
67
|
const yNwo = YPoint.add(N.multiply(this.#w0).negate());
|
|
66
68
|
const Z = yNwo.multiply(this.#random);
|
|
67
69
|
const V = yNwo.multiply(w1);
|
|
68
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
70
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
69
71
|
}
|
|
70
72
|
async computeSecretAndVerifiersFromX(L, X, Y) {
|
|
71
|
-
const XPoint =
|
|
72
|
-
const LPoint =
|
|
73
|
+
const XPoint = Point.fromBytes(Bytes.of(X));
|
|
74
|
+
const LPoint = Point.fromBytes(Bytes.of(L));
|
|
73
75
|
try {
|
|
74
76
|
XPoint.assertValidity();
|
|
75
77
|
} catch (error) {
|
|
@@ -77,7 +79,7 @@ class Spake2p {
|
|
|
77
79
|
}
|
|
78
80
|
const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
|
|
79
81
|
const V = LPoint.multiply(this.#random);
|
|
80
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
82
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
81
83
|
}
|
|
82
84
|
async computeSecretAndVerifiers(X, Y, Z, V) {
|
|
83
85
|
const TT_HASH = Bytes.of(await this.computeTranscriptHash(X, Y, Z, V));
|
|
@@ -97,8 +99,8 @@ class Spake2p {
|
|
|
97
99
|
this.addToContext(TTwriter, this.#context);
|
|
98
100
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
99
101
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
100
|
-
this.addToContext(TTwriter,
|
|
101
|
-
this.addToContext(TTwriter,
|
|
102
|
+
this.addToContext(TTwriter, M.toBytes(false));
|
|
103
|
+
this.addToContext(TTwriter, N.toBytes(false));
|
|
102
104
|
this.addToContext(TTwriter, X);
|
|
103
105
|
this.addToContext(TTwriter, Y);
|
|
104
106
|
this.addToContext(TTwriter, Z);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Spake2p.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,OAAO,cAAc;AAC9B,SAAS,kBAAkB;AAC3B,SAAiB,UAAU;AAC3B,SAAS,+BAA+B;AAExC,MAAM;AAAA,EACF,MAAM,EAAE,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250906-463912bd0",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"embed-examples": "embedme **/README.md"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@noble/curves": "^
|
|
36
|
+
"@noble/curves": "^2.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
39
|
+
"@matter/testing": "0.16.0-alpha.0-20250906-463912bd0"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/crypto/Crypto.ts
CHANGED
|
@@ -9,9 +9,9 @@ import { Diagnostic } from "#log/Diagnostic.js";
|
|
|
9
9
|
import { Logger } from "#log/Logger.js";
|
|
10
10
|
import { Bytes } from "#util/Bytes.js";
|
|
11
11
|
import { MaybePromise } from "#util/Promises.js";
|
|
12
|
-
import * as mod from "@noble/curves/abstract/modular";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
12
|
+
import * as mod from "@noble/curves/abstract/modular.js";
|
|
13
|
+
import { p256 } from "@noble/curves/nist.js";
|
|
14
|
+
import * as utils from "@noble/curves/utils.js";
|
|
15
15
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
16
16
|
|
|
17
17
|
export const ec = {
|
package/src/crypto/Key.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { KeyInputError } from "./CryptoError.js";
|
|
|
13
13
|
|
|
14
14
|
const {
|
|
15
15
|
numberToBytesBE,
|
|
16
|
-
p256: { Point, getSharedSecret },
|
|
16
|
+
p256: { getPublicKey, Point, getSharedSecret },
|
|
17
17
|
} = ec;
|
|
18
18
|
|
|
19
19
|
const JWK_KEYS = [
|
|
@@ -540,7 +540,8 @@ export function Key(properties: Partial<Key>) {
|
|
|
540
540
|
}
|
|
541
541
|
|
|
542
542
|
// Compute
|
|
543
|
-
const
|
|
543
|
+
const pubKeyBytes = getPublicKey(Bytes.of(that.privateKey));
|
|
544
|
+
const ecKey = Point.fromBytes(pubKeyBytes);
|
|
544
545
|
|
|
545
546
|
// Install
|
|
546
547
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
package/src/crypto/MockCrypto.ts
CHANGED
|
@@ -82,7 +82,7 @@ export function MockCrypto(index: number = 0x80, implementation: new () => Crypt
|
|
|
82
82
|
|
|
83
83
|
// Ensure EC key generation uses our own "entropy" source rather than the platform's
|
|
84
84
|
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
85
|
-
const privateBits = ec.mapHashToField(Bytes.of(crypto.randomBytes(48)), ec.p256.CURVE.n);
|
|
85
|
+
const privateBits = ec.mapHashToField(Bytes.of(crypto.randomBytes(48)), ec.p256.Point.CURVE().n);
|
|
86
86
|
return Key({
|
|
87
87
|
kty: KeyType.EC,
|
|
88
88
|
crv: CurveType.p256,
|
package/src/crypto/Spake2p.ts
CHANGED
|
@@ -11,15 +11,15 @@ import { Crypto, ec } from "./Crypto.js";
|
|
|
11
11
|
import { CRYPTO_GROUP_SIZE_BYTES } from "./CryptoConstants.js";
|
|
12
12
|
|
|
13
13
|
const {
|
|
14
|
-
p256: {
|
|
14
|
+
p256: { Point },
|
|
15
15
|
numberToBytesBE,
|
|
16
16
|
bytesToNumberBE,
|
|
17
17
|
mod,
|
|
18
18
|
} = ec;
|
|
19
19
|
|
|
20
20
|
// M and N constants from https://datatracker.ietf.org/doc/html/draft-bar-cfrg-spake2plus-01
|
|
21
|
-
const M =
|
|
22
|
-
const N =
|
|
21
|
+
const M = Point.fromHex("02886e2f97ace46e55ba9dd7242579f2993b64e16ef3dcab95afd497333d8fa12f");
|
|
22
|
+
const N = Point.fromHex("03d8bbd6c639c62937b04d997f38c3770719c629d7014d49a24b4f98baa1292b49");
|
|
23
23
|
|
|
24
24
|
const CRYPTO_W_SIZE_BYTES = CRYPTO_GROUP_SIZE_BYTES + 8;
|
|
25
25
|
|
|
@@ -40,19 +40,21 @@ export class Spake2p {
|
|
|
40
40
|
const ws = Bytes.of(
|
|
41
41
|
await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2),
|
|
42
42
|
);
|
|
43
|
-
const
|
|
44
|
-
const
|
|
43
|
+
const curve = Point.CURVE();
|
|
44
|
+
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), curve.n);
|
|
45
|
+
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), curve.n);
|
|
45
46
|
return { w0, w1 };
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
static async computeW0L(crypto: Crypto, pbkdfParameters: PbkdfParameters, pin: number) {
|
|
49
50
|
const { w0, w1 } = await this.computeW0W1(crypto, pbkdfParameters, pin);
|
|
50
|
-
const L =
|
|
51
|
+
const L = Point.BASE.multiply(w1).toBytes(false);
|
|
51
52
|
return { w0, L };
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
static create(crypto: Crypto, context: Bytes, w0: bigint) {
|
|
55
|
-
const
|
|
56
|
+
const curve = Point.CURVE();
|
|
57
|
+
const random = crypto.randomBigInt(32, curve.p);
|
|
56
58
|
return new Spake2p(crypto, context, random, w0);
|
|
57
59
|
}
|
|
58
60
|
|
|
@@ -64,17 +66,17 @@ export class Spake2p {
|
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
computeX(): Bytes {
|
|
67
|
-
const X =
|
|
68
|
-
return X.
|
|
69
|
+
const X = Point.BASE.multiply(this.#random).add(M.multiply(this.#w0));
|
|
70
|
+
return X.toBytes(false);
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
computeY(): Bytes {
|
|
72
|
-
const Y =
|
|
73
|
-
return Y.
|
|
74
|
+
const Y = Point.BASE.multiply(this.#random).add(N.multiply(this.#w0));
|
|
75
|
+
return Y.toBytes(false);
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
async computeSecretAndVerifiersFromY(w1: bigint, X: Bytes, Y: Bytes) {
|
|
77
|
-
const YPoint =
|
|
79
|
+
const YPoint = Point.fromBytes(Bytes.of(Y));
|
|
78
80
|
try {
|
|
79
81
|
YPoint.assertValidity();
|
|
80
82
|
} catch (error) {
|
|
@@ -83,12 +85,12 @@ export class Spake2p {
|
|
|
83
85
|
const yNwo = YPoint.add(N.multiply(this.#w0).negate());
|
|
84
86
|
const Z = yNwo.multiply(this.#random);
|
|
85
87
|
const V = yNwo.multiply(w1);
|
|
86
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
88
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
async computeSecretAndVerifiersFromX(L: Bytes, X: Bytes, Y: Bytes) {
|
|
90
|
-
const XPoint =
|
|
91
|
-
const LPoint =
|
|
92
|
+
const XPoint = Point.fromBytes(Bytes.of(X));
|
|
93
|
+
const LPoint = Point.fromBytes(Bytes.of(L));
|
|
92
94
|
try {
|
|
93
95
|
XPoint.assertValidity();
|
|
94
96
|
} catch (error) {
|
|
@@ -96,7 +98,7 @@ export class Spake2p {
|
|
|
96
98
|
}
|
|
97
99
|
const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
|
|
98
100
|
const V = LPoint.multiply(this.#random);
|
|
99
|
-
return this.computeSecretAndVerifiers(X, Y,
|
|
101
|
+
return this.computeSecretAndVerifiers(X, Y, Z.toBytes(false), V.toBytes(false));
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
private async computeSecretAndVerifiers(X: Bytes, Y: Bytes, Z: Bytes, V: Bytes) {
|
|
@@ -121,8 +123,8 @@ export class Spake2p {
|
|
|
121
123
|
this.addToContext(TTwriter, this.#context);
|
|
122
124
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
123
125
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
124
|
-
this.addToContext(TTwriter,
|
|
125
|
-
this.addToContext(TTwriter,
|
|
126
|
+
this.addToContext(TTwriter, M.toBytes(false));
|
|
127
|
+
this.addToContext(TTwriter, N.toBytes(false));
|
|
126
128
|
this.addToContext(TTwriter, X);
|
|
127
129
|
this.addToContext(TTwriter, Y);
|
|
128
130
|
this.addToContext(TTwriter, Z);
|