@matter/general 0.15.0-alpha.0-20250613-a55f991d4 → 0.15.0-alpha.0-20250616-4b3754906
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 +21 -47
- package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
- package/dist/cjs/crypto/Crypto.js +24 -101
- package/dist/cjs/crypto/Crypto.js.map +1 -1
- package/dist/cjs/crypto/MockCrypto.d.ts +24 -0
- package/dist/cjs/crypto/MockCrypto.d.ts.map +1 -0
- package/dist/cjs/crypto/MockCrypto.js +61 -0
- package/dist/cjs/crypto/MockCrypto.js.map +6 -0
- package/dist/cjs/crypto/Spake2p.d.ts +6 -7
- package/dist/cjs/crypto/Spake2p.d.ts.map +1 -1
- package/dist/cjs/crypto/Spake2p.js +29 -24
- package/dist/cjs/crypto/Spake2p.js.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.d.ts +2 -2
- package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.js +4 -8
- package/dist/cjs/crypto/StandardCrypto.js.map +1 -1
- package/dist/cjs/crypto/index.d.ts +1 -1
- package/dist/cjs/crypto/index.d.ts.map +1 -1
- package/dist/cjs/crypto/index.js +1 -1
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/util/Bytes.d.ts +1 -0
- package/dist/cjs/util/Bytes.d.ts.map +1 -1
- package/dist/cjs/util/Bytes.js +22 -0
- package/dist/cjs/util/Bytes.js.map +1 -1
- package/dist/esm/crypto/Crypto.d.ts +21 -47
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/crypto/Crypto.js +24 -101
- package/dist/esm/crypto/Crypto.js.map +1 -1
- package/dist/esm/crypto/MockCrypto.d.ts +24 -0
- package/dist/esm/crypto/MockCrypto.d.ts.map +1 -0
- package/dist/esm/crypto/MockCrypto.js +41 -0
- package/dist/esm/crypto/MockCrypto.js.map +6 -0
- package/dist/esm/crypto/Spake2p.d.ts +6 -7
- package/dist/esm/crypto/Spake2p.d.ts.map +1 -1
- package/dist/esm/crypto/Spake2p.js +30 -25
- package/dist/esm/crypto/Spake2p.js.map +1 -1
- package/dist/esm/crypto/StandardCrypto.d.ts +2 -2
- package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/StandardCrypto.js +4 -8
- package/dist/esm/crypto/StandardCrypto.js.map +1 -1
- package/dist/esm/crypto/index.d.ts +1 -1
- package/dist/esm/crypto/index.d.ts.map +1 -1
- package/dist/esm/crypto/index.js +1 -1
- package/dist/esm/util/Bytes.d.ts +1 -0
- package/dist/esm/util/Bytes.d.ts.map +1 -1
- package/dist/esm/util/Bytes.js +22 -0
- package/dist/esm/util/Bytes.js.map +1 -1
- package/package.json +2 -2
- package/src/crypto/Crypto.ts +46 -146
- package/src/crypto/MockCrypto.ts +64 -0
- package/src/crypto/Spake2p.ts +30 -24
- package/src/crypto/StandardCrypto.ts +6 -10
- package/src/crypto/index.ts +1 -1
- package/src/util/Bytes.ts +22 -0
- package/dist/cjs/crypto/nonentropic.d.ts +0 -16
- package/dist/cjs/crypto/nonentropic.d.ts.map +0 -1
- package/dist/cjs/crypto/nonentropic.js +0 -70
- package/dist/cjs/crypto/nonentropic.js.map +0 -6
- package/dist/esm/crypto/nonentropic.d.ts +0 -16
- package/dist/esm/crypto/nonentropic.d.ts.map +0 -1
- package/dist/esm/crypto/nonentropic.js +0 -50
- package/dist/esm/crypto/nonentropic.js.map +0 -6
- package/src/crypto/nonentropic.ts +0 -65
|
@@ -22,7 +22,7 @@ __export(StandardCrypto_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(StandardCrypto_exports);
|
|
24
24
|
var import_DerCodec = require("#codec/DerCodec.js");
|
|
25
|
-
var
|
|
25
|
+
var import_Environment = require("#environment/Environment.js");
|
|
26
26
|
var import_Bytes = require("#util/Bytes.js");
|
|
27
27
|
var import_Ccm = require("./aes/Ccm.js");
|
|
28
28
|
var import_Crypto = require("./Crypto.js");
|
|
@@ -40,12 +40,12 @@ const SIGNATURE_ALGORITHM = {
|
|
|
40
40
|
namedCurve: "P-256",
|
|
41
41
|
hash: { name: "SHA-256" }
|
|
42
42
|
};
|
|
43
|
-
class StandardCrypto {
|
|
43
|
+
class StandardCrypto extends import_Crypto.Crypto {
|
|
44
44
|
implementationName = "JS";
|
|
45
45
|
static provider() {
|
|
46
46
|
return new StandardCrypto();
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
randomBytes(length) {
|
|
49
49
|
const result = new Uint8Array(length);
|
|
50
50
|
crypto.getRandomValues(result);
|
|
51
51
|
return result;
|
|
@@ -193,11 +193,6 @@ class StandardCrypto {
|
|
|
193
193
|
return new Uint8Array(secret);
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
|
-
if (globalThis.crypto?.subtle?.[Symbol.toStringTag] === "SubtleCrypto") {
|
|
197
|
-
import_Boot.Boot.init(() => {
|
|
198
|
-
import_Crypto.Crypto.provider = StandardCrypto.provider;
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
196
|
async function importKey(...params) {
|
|
202
197
|
try {
|
|
203
198
|
return await crypto.subtle.importKey(...params);
|
|
@@ -205,4 +200,5 @@ async function importKey(...params) {
|
|
|
205
200
|
throw new import_CryptoError.KeyInputError("Invalid key", { cause });
|
|
206
201
|
}
|
|
207
202
|
}
|
|
203
|
+
import_Environment.Environment.default.set(import_Crypto.Crypto, new StandardCrypto());
|
|
208
204
|
//# sourceMappingURL=StandardCrypto.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/StandardCrypto.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,sBAA+C;AAC/C,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -7,7 +7,7 @@ export * from "./Crypto.js";
|
|
|
7
7
|
export * from "./CryptoConstants.js";
|
|
8
8
|
export * from "./CryptoError.js";
|
|
9
9
|
export * from "./Key.js";
|
|
10
|
-
export * from "./
|
|
10
|
+
export * from "./MockCrypto.js";
|
|
11
11
|
export * from "./Spake2p.js";
|
|
12
12
|
export * from "./StandardCrypto.js";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
package/dist/cjs/crypto/index.js
CHANGED
|
@@ -19,7 +19,7 @@ __reExport(crypto_exports, require("./Crypto.js"), module.exports);
|
|
|
19
19
|
__reExport(crypto_exports, require("./CryptoConstants.js"), module.exports);
|
|
20
20
|
__reExport(crypto_exports, require("./CryptoError.js"), module.exports);
|
|
21
21
|
__reExport(crypto_exports, require("./Key.js"), module.exports);
|
|
22
|
-
__reExport(crypto_exports, require("./
|
|
22
|
+
__reExport(crypto_exports, require("./MockCrypto.js"), module.exports);
|
|
23
23
|
__reExport(crypto_exports, require("./Spake2p.js"), module.exports);
|
|
24
24
|
__reExport(crypto_exports, require("./StandardCrypto.js"), module.exports);
|
|
25
25
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,wBANd;AAOA,2BAAc,iCAPd;AAQA,2BAAc,6BARd;AASA,2BAAc,qBATd;AAUA,2BAAc,4BAVd;AAWA,2BAAc,yBAXd;AAYA,2BAAc,gCAZd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/cjs/util/Bytes.d.ts
CHANGED
|
@@ -25,5 +25,6 @@ export declare namespace Bytes {
|
|
|
25
25
|
function fromBase64(base64String: string): Uint8Array<ArrayBuffer>;
|
|
26
26
|
function fromString(string: string): Uint8Array<ArrayBufferLike>;
|
|
27
27
|
function concat(...arrays: Uint8Array[]): Uint8Array;
|
|
28
|
+
function asBigInt(bytes: Uint8Array): bigint;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=Bytes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../../src/util/Bytes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oBAAY,MAAM;IACd,MAAM,IAAA;IACN,GAAG,IAAA;CACN;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,2BAYrE;AAED;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACnB,SAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,UAKtC;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAIzC;IAED,SAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,6BAE3C;IAED,SAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAG9D;IAED,SAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,2BAMxC;IAED,SAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,2BAQ9C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,+BAExC;IAED,SAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAU1D;CACJ"}
|
|
1
|
+
{"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../../src/util/Bytes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oBAAY,MAAM;IACd,MAAM,IAAA;IACN,GAAG,IAAA;CACN;AAED;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,2BAYrE;AAED;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACnB,SAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,UAKtC;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAIzC;IAED,SAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,6BAE3C;IAED,SAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAG9D;IAED,SAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,2BAMxC;IAED,SAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,2BAQ9C;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,+BAExC;IAED,SAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAU1D;IAED,SAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,UAoBzC;CACJ"}
|
package/dist/cjs/util/Bytes.js
CHANGED
|
@@ -105,5 +105,27 @@ var Bytes;
|
|
|
105
105
|
return result;
|
|
106
106
|
}
|
|
107
107
|
Bytes2.concat = concat;
|
|
108
|
+
function asBigInt(bytes) {
|
|
109
|
+
const view = new DataView(bytes.buffer);
|
|
110
|
+
let result = 0n;
|
|
111
|
+
for (let i = 0; i < bytes.length; ) {
|
|
112
|
+
const remaining = bytes.length - i;
|
|
113
|
+
if (remaining >= 8) {
|
|
114
|
+
result = (result << 64n) + view.getBigUint64(i);
|
|
115
|
+
i += 8;
|
|
116
|
+
} else if (remaining >= 4) {
|
|
117
|
+
result = (result << 32n) + BigInt(view.getUint32(i));
|
|
118
|
+
i += 4;
|
|
119
|
+
} else if (remaining >= 2) {
|
|
120
|
+
result = (result << 16n) + BigInt(view.getUint16(i));
|
|
121
|
+
i += 2;
|
|
122
|
+
} else {
|
|
123
|
+
result = (result << 8n) + BigInt(view.getUint8(i));
|
|
124
|
+
i++;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
Bytes2.asBigInt = asBigInt;
|
|
108
130
|
})(Bytes || (Bytes = {}));
|
|
109
131
|
//# sourceMappingURL=Bytes.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/Bytes.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoC;AANpC;AAAA;AAAA;AAAA;AAAA;AAQO,IAAK,SAAL,kBAAKA,YAAL;AACH,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AAFQ,SAAAA;AAAA,GAAA;AAUL,SAAS,GAAG,YAAkC,QAAmB;AACpE,MAAI,QAAQ,WAAW,KAAK,OAAO,WAAW,GAAG;AAC7C,WAAO,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACnC;AACA,QAAM,QAAQ,MAAc;AAC5B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,UAAM,KAAK,QAAQ,CAAC,CAAC;AACrB,QAAI,IAAI,OAAO,QAAQ;AACnB,YAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE;AAAA,IAC7B;AAAA,EACJ;AACA,SAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,CAAC;AACvC;AAKO,IAAU;AAAA,CAAV,CAAUC,WAAV;AACI,WAAS,MAAM,OAAmB;AACrC,UAAM,WAAW,IAAI,MAAc;AACnC,aAAS,SAAS,MAAM;AACxB,UAAM,QAAQ,UAAQ,SAAS,KAAK,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AACvE,WAAO,SAAS,KAAK,EAAE;AAAA,EAC3B;AALO,EAAAA,OAAS;AAOT,WAAS,SAAS,OAAmB;AACxC,QAAI,SAAS;AACb,UAAM,QAAQ,UAAS,UAAU,OAAO,aAAa,IAAI,CAAE;AAC3D,WAAO,KAAK,MAAM;AAAA,EACtB;AAJO,EAAAA,OAAS;AAMT,WAAS,WAAW,OAAmB;AAC1C,WAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EACxE;AAFO,EAAAA,OAAS;AAIT,WAAS,SAAS,QAAoB,QAAoB;AAC7D,QAAI,OAAO,WAAW,OAAO,OAAQ,QAAO;AAC5C,WAAO,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK;AAAA,EACjE;AAHO,EAAAA,OAAS;AAKT,WAAS,QAAQ,WAAmB;AACvC,QAAI,UAAU,WAAW,EAAG,QAAO,IAAI,WAAW,CAAC;AACnD,QAAI,UAAU,SAAS,MAAM,EAAG,OAAM,IAAI,uCAAoB,wCAAwC;AACtG,UAAM,QAAQ,UAAU,MAAM,SAAS,GAAG,IAAI,aAAW,SAAS,SAAS,EAAE,CAAC;AAC9E,QAAI,UAAU,OAAW,OAAM,IAAI,uCAAoB,iCAAiC;AACxF,WAAO,WAAW,KAAK,KAAK;AAAA,EAChC;AANO,EAAAA,OAAS;AAQT,WAAS,WAAW,cAAsB;AAC7C,UAAM,MAAM,KAAK,YAAY;AAC7B,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,YAAM,MAAM,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE;AACzC,gBAAU,IAAI,WAAW,IAAI,MAAM,MAAM;AAAA,IAC7C;AACA,WAAO,QAAQ,MAAM;AAAA,EACzB;AARO,EAAAA,OAAS;AAUT,WAAS,WAAW,QAAgB;AACvC,WAAO,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,EAC1C;AAFO,EAAAA,OAAS;AAIT,WAAS,UAAU,QAAkC;AACxD,QAAI,SAAS;AACb,WAAO,QAAQ,WAAU,UAAU,MAAM,MAAO;AAChD,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,QAAI,SAAS;AACb,WAAO,QAAQ,WAAS;AACpB,aAAO,IAAI,OAAO,MAAM;AACxB,gBAAU,MAAM;AAAA,IACpB,CAAC;AACD,WAAO;AAAA,EACX;AAVO,EAAAA,OAAS;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAoC;AANpC;AAAA;AAAA;AAAA;AAAA;AAQO,IAAK,SAAL,kBAAKA,YAAL;AACH,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AAFQ,SAAAA;AAAA,GAAA;AAUL,SAAS,GAAG,YAAkC,QAAmB;AACpE,MAAI,QAAQ,WAAW,KAAK,OAAO,WAAW,GAAG;AAC7C,WAAO,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACnC;AACA,QAAM,QAAQ,MAAc;AAC5B,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,UAAM,KAAK,QAAQ,CAAC,CAAC;AACrB,QAAI,IAAI,OAAO,QAAQ;AACnB,YAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE;AAAA,IAC7B;AAAA,EACJ;AACA,SAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,CAAC;AACvC;AAKO,IAAU;AAAA,CAAV,CAAUC,WAAV;AACI,WAAS,MAAM,OAAmB;AACrC,UAAM,WAAW,IAAI,MAAc;AACnC,aAAS,SAAS,MAAM;AACxB,UAAM,QAAQ,UAAQ,SAAS,KAAK,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;AACvE,WAAO,SAAS,KAAK,EAAE;AAAA,EAC3B;AALO,EAAAA,OAAS;AAOT,WAAS,SAAS,OAAmB;AACxC,QAAI,SAAS;AACb,UAAM,QAAQ,UAAS,UAAU,OAAO,aAAa,IAAI,CAAE;AAC3D,WAAO,KAAK,MAAM;AAAA,EACtB;AAJO,EAAAA,OAAS;AAMT,WAAS,WAAW,OAAmB;AAC1C,WAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EACxE;AAFO,EAAAA,OAAS;AAIT,WAAS,SAAS,QAAoB,QAAoB;AAC7D,QAAI,OAAO,WAAW,OAAO,OAAQ,QAAO;AAC5C,WAAO,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK;AAAA,EACjE;AAHO,EAAAA,OAAS;AAKT,WAAS,QAAQ,WAAmB;AACvC,QAAI,UAAU,WAAW,EAAG,QAAO,IAAI,WAAW,CAAC;AACnD,QAAI,UAAU,SAAS,MAAM,EAAG,OAAM,IAAI,uCAAoB,wCAAwC;AACtG,UAAM,QAAQ,UAAU,MAAM,SAAS,GAAG,IAAI,aAAW,SAAS,SAAS,EAAE,CAAC;AAC9E,QAAI,UAAU,OAAW,OAAM,IAAI,uCAAoB,iCAAiC;AACxF,WAAO,WAAW,KAAK,KAAK;AAAA,EAChC;AANO,EAAAA,OAAS;AAQT,WAAS,WAAW,cAAsB;AAC7C,UAAM,MAAM,KAAK,YAAY;AAC7B,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,YAAM,MAAM,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE;AACzC,gBAAU,IAAI,WAAW,IAAI,MAAM,MAAM;AAAA,IAC7C;AACA,WAAO,QAAQ,MAAM;AAAA,EACzB;AARO,EAAAA,OAAS;AAUT,WAAS,WAAW,QAAgB;AACvC,WAAO,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,EAC1C;AAFO,EAAAA,OAAS;AAIT,WAAS,UAAU,QAAkC;AACxD,QAAI,SAAS;AACb,WAAO,QAAQ,WAAU,UAAU,MAAM,MAAO;AAChD,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,QAAI,SAAS;AACb,WAAO,QAAQ,WAAS;AACpB,aAAO,IAAI,OAAO,MAAM;AACxB,gBAAU,MAAM;AAAA,IACpB,CAAC;AACD,WAAO;AAAA,EACX;AAVO,EAAAA,OAAS;AAYT,WAAS,SAAS,OAAmB;AACxC,UAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,QAAI,SAAS;AACb,aAAS,IAAI,GAAG,IAAI,MAAM,UAAU;AAChC,YAAM,YAAY,MAAM,SAAS;AACjC,UAAI,aAAa,GAAG;AAChB,kBAAU,UAAU,OAAO,KAAK,aAAa,CAAC;AAC9C,aAAK;AAAA,MACT,WAAW,aAAa,GAAG;AACvB,kBAAU,UAAU,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC;AACnD,aAAK;AAAA,MACT,WAAW,aAAa,GAAG;AACvB,kBAAU,UAAU,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC;AACnD,aAAK;AAAA,MACT,OAAO;AACH,kBAAU,UAAU,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC;AACjD;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AApBO,EAAAA,OAAS;AAAA,GAzDH;",
|
|
5
5
|
"names": ["Endian", "Bytes"]
|
|
6
6
|
}
|
|
@@ -68,7 +68,6 @@ export declare const ec: {
|
|
|
68
68
|
notImplemented: () => never;
|
|
69
69
|
p256: import("@noble/curves/_shortw_utils").CurveFnWithCreate;
|
|
70
70
|
};
|
|
71
|
-
export declare const CRYPTO_RANDOM_LENGTH = 32;
|
|
72
71
|
export declare const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
|
|
73
72
|
export declare const CRYPTO_HASH_ALGORITHM = "sha256";
|
|
74
73
|
export declare const CRYPTO_EC_CURVE = "prime256v1";
|
|
@@ -83,89 +82,64 @@ export type CryptoDsaEncoding = "ieee-p1363" | "der";
|
|
|
83
82
|
* AES-CCM implementation.
|
|
84
83
|
*
|
|
85
84
|
* If your platform does not fully implement Web Crypto, or offers a native implementation of AES-CCM, you can replace
|
|
86
|
-
* {@link
|
|
85
|
+
* the implementation in {@link Environment.default}.
|
|
87
86
|
*
|
|
88
87
|
* WARNING: The standard implementation is unaudited. See relevant warnings in StandardCrypto.ts.
|
|
89
88
|
*/
|
|
90
|
-
export
|
|
89
|
+
export declare abstract class Crypto {
|
|
91
90
|
/**
|
|
92
91
|
* The name used in log messages.
|
|
93
92
|
*/
|
|
94
|
-
implementationName: string;
|
|
93
|
+
abstract implementationName: string;
|
|
95
94
|
/**
|
|
96
95
|
* Encrypt using AES-CCM with constants limited to those required by Matter.
|
|
97
96
|
*/
|
|
98
|
-
encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
97
|
+
abstract encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
99
98
|
/**
|
|
100
99
|
* Decrypt using AES-CCM with constants limited to those required by Matter.
|
|
101
100
|
*/
|
|
102
|
-
decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
101
|
+
abstract decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
103
102
|
/**
|
|
104
|
-
*
|
|
103
|
+
* Create a random buffer from the most cryptographically-appropriate source available.
|
|
105
104
|
*/
|
|
106
|
-
|
|
105
|
+
abstract randomBytes(length: number): Uint8Array;
|
|
107
106
|
/**
|
|
108
107
|
* Compute the SHA-256 hash of a buffer.
|
|
109
108
|
*/
|
|
110
|
-
computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array>;
|
|
109
|
+
abstract computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array>;
|
|
111
110
|
/**
|
|
112
111
|
* Create a key from a secret using PBKDF2.
|
|
113
112
|
*/
|
|
114
|
-
createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array>;
|
|
113
|
+
abstract createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array>;
|
|
115
114
|
/**
|
|
116
115
|
* Create a key from a secret using HKDF.
|
|
117
116
|
*/
|
|
118
|
-
createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array>;
|
|
117
|
+
abstract createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array>;
|
|
119
118
|
/**
|
|
120
119
|
* Create an HMAC signature.
|
|
121
120
|
*/
|
|
122
|
-
signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array>;
|
|
121
|
+
abstract signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array>;
|
|
123
122
|
/**
|
|
124
123
|
* Create an ECDSA signature.
|
|
125
124
|
*/
|
|
126
|
-
signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array>;
|
|
125
|
+
abstract signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array>;
|
|
127
126
|
/**
|
|
128
127
|
* Authenticate an ECDSA signature.
|
|
129
128
|
*/
|
|
130
|
-
verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
|
|
129
|
+
abstract verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
|
|
131
130
|
/**
|
|
132
131
|
* Create a general-purpose EC key.
|
|
133
132
|
*/
|
|
134
|
-
createKeyPair(): MaybePromise<PrivateKey>;
|
|
133
|
+
abstract createKeyPair(): MaybePromise<PrivateKey>;
|
|
135
134
|
/**
|
|
136
135
|
* Compute the shared secret for a Diffie-Hellman exchange.
|
|
137
136
|
*/
|
|
138
|
-
generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array>;
|
|
137
|
+
abstract generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array>;
|
|
138
|
+
get randomUint8(): number;
|
|
139
|
+
get randomUint16(): number;
|
|
140
|
+
get randomUint32(): number;
|
|
141
|
+
get randomBigUint64(): bigint;
|
|
142
|
+
randomBigInt(size: number, maxValue?: bigint): bigint;
|
|
143
|
+
reportUsage(component?: string): void;
|
|
139
144
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Crypto support functions.
|
|
142
|
-
*/
|
|
143
|
-
export declare const Crypto: {
|
|
144
|
-
/**
|
|
145
|
-
* The default crypto implementation.
|
|
146
|
-
*/
|
|
147
|
-
readonly default: Crypto;
|
|
148
|
-
get provider(): undefined | (() => Crypto);
|
|
149
|
-
/**
|
|
150
|
-
* Set the default crypto provider.
|
|
151
|
-
*/
|
|
152
|
-
set provider(provider: () => Crypto);
|
|
153
|
-
readonly implementationName: string;
|
|
154
|
-
encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array<ArrayBufferLike>;
|
|
155
|
-
decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array<ArrayBufferLike>;
|
|
156
|
-
getRandomData(length: number): Uint8Array<ArrayBufferLike>;
|
|
157
|
-
getRandom(): Uint8Array<ArrayBufferLike>;
|
|
158
|
-
getRandomUInt16(): number;
|
|
159
|
-
getRandomUInt32(): number;
|
|
160
|
-
getRandomBigUInt64(): bigint;
|
|
161
|
-
getRandomBigInt(size: number, maxValue?: bigint): bigint;
|
|
162
|
-
computeSha256(data: Uint8Array | Uint8Array[]): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
163
|
-
createPbkdf2Key(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
164
|
-
createHkdfKey(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
165
|
-
signHmac(key: Uint8Array, data: Uint8Array): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
166
|
-
signEcdsa(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
167
|
-
verifyEcdsa(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): MaybePromise<void>;
|
|
168
|
-
createKeyPair(): MaybePromise<PrivateKey>;
|
|
169
|
-
generateDhSecret(key: PrivateKey, peerKey: PublicKey): MaybePromise<Uint8Array<ArrayBufferLike>>;
|
|
170
|
-
};
|
|
171
145
|
//# sourceMappingURL=Crypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,19 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Diagnostic } from "#log/Diagnostic.js";
|
|
7
7
|
import { Logger } from "#log/Logger.js";
|
|
8
|
-
import {
|
|
8
|
+
import { Bytes } from "#util/Bytes.js";
|
|
9
9
|
import * as mod from "@noble/curves/abstract/modular";
|
|
10
10
|
import * as utils from "@noble/curves/abstract/utils";
|
|
11
11
|
import { p256 } from "@noble/curves/p256";
|
|
12
|
-
import { NoProviderError } from "../MatterError.js";
|
|
13
|
-
import { Endian } from "../util/Bytes.js";
|
|
14
|
-
import { DataReader } from "../util/DataReader.js";
|
|
15
12
|
const ec = {
|
|
16
13
|
p256,
|
|
17
14
|
...utils,
|
|
18
15
|
...mod
|
|
19
16
|
};
|
|
20
|
-
const CRYPTO_RANDOM_LENGTH = 32;
|
|
21
17
|
const CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm";
|
|
22
18
|
const CRYPTO_HASH_ALGORITHM = "sha256";
|
|
23
19
|
const CRYPTO_EC_CURVE = "prime256v1";
|
|
@@ -25,115 +21,42 @@ const CRYPTO_EC_KEY_BYTES = 32;
|
|
|
25
21
|
const CRYPTO_AUTH_TAG_LENGTH = 16;
|
|
26
22
|
const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
|
|
27
23
|
const logger = Logger.get("Crypto");
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
get
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
defaultInstance = defaultProvider();
|
|
43
|
-
if (logImplementationName) {
|
|
44
|
-
logger.debug("Using", Diagnostic.strong(defaultInstance.implementationName), "cryptography implementation");
|
|
45
|
-
}
|
|
46
|
-
return defaultInstance;
|
|
47
|
-
},
|
|
48
|
-
get provider() {
|
|
49
|
-
return defaultProvider;
|
|
50
|
-
},
|
|
51
|
-
/**
|
|
52
|
-
* Set the default crypto provider.
|
|
53
|
-
*/
|
|
54
|
-
set provider(provider) {
|
|
55
|
-
if (defaultProvider === provider) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
defaultProvider = void 0;
|
|
59
|
-
defaultProvider = provider;
|
|
60
|
-
},
|
|
61
|
-
get implementationName() {
|
|
62
|
-
return Crypto.default.implementationName;
|
|
63
|
-
},
|
|
64
|
-
encrypt(key, data, nonce, aad) {
|
|
65
|
-
return Crypto.default.encrypt(key, data, nonce, aad);
|
|
66
|
-
},
|
|
67
|
-
decrypt(key, data, nonce, aad) {
|
|
68
|
-
return Crypto.default.decrypt(key, data, nonce, aad);
|
|
69
|
-
},
|
|
70
|
-
getRandomData(length) {
|
|
71
|
-
return Crypto.default.getRandomData(length);
|
|
72
|
-
},
|
|
73
|
-
getRandom() {
|
|
74
|
-
return Crypto.default.getRandomData(CRYPTO_RANDOM_LENGTH);
|
|
75
|
-
},
|
|
76
|
-
getRandomUInt16() {
|
|
77
|
-
return new DataReader(Crypto.default.getRandomData(2), Endian.Little).readUInt16();
|
|
78
|
-
},
|
|
79
|
-
getRandomUInt32() {
|
|
80
|
-
return new DataReader(Crypto.default.getRandomData(4), Endian.Little).readUInt32();
|
|
81
|
-
},
|
|
82
|
-
getRandomBigUInt64() {
|
|
83
|
-
return new DataReader(Crypto.default.getRandomData(8), Endian.Little).readUInt64();
|
|
84
|
-
},
|
|
85
|
-
getRandomBigInt(size, maxValue) {
|
|
86
|
-
const { bytesToNumberBE } = ec;
|
|
24
|
+
class Crypto {
|
|
25
|
+
get randomUint8() {
|
|
26
|
+
return this.randomBytes(1)[0];
|
|
27
|
+
}
|
|
28
|
+
get randomUint16() {
|
|
29
|
+
return new DataView(this.randomBytes(2).buffer).getUint16(0);
|
|
30
|
+
}
|
|
31
|
+
get randomUint32() {
|
|
32
|
+
return new DataView(this.randomBytes(4).buffer).getUint32(0);
|
|
33
|
+
}
|
|
34
|
+
get randomBigUint64() {
|
|
35
|
+
return new DataView(this.randomBytes(8).buffer).getBigUint64(0);
|
|
36
|
+
}
|
|
37
|
+
randomBigInt(size, maxValue) {
|
|
87
38
|
if (maxValue === void 0) {
|
|
88
|
-
return
|
|
39
|
+
return Bytes.asBigInt(this.randomBytes(size));
|
|
89
40
|
}
|
|
90
41
|
while (true) {
|
|
91
|
-
const random =
|
|
42
|
+
const random = Bytes.asBigInt(this.randomBytes(size));
|
|
92
43
|
if (random < maxValue) return random;
|
|
93
44
|
}
|
|
94
|
-
},
|
|
95
|
-
computeSha256(data) {
|
|
96
|
-
return Crypto.default.computeSha256(data);
|
|
97
|
-
},
|
|
98
|
-
createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
99
|
-
return Crypto.default.createPbkdf2Key(secret, salt, iteration, keyLength);
|
|
100
|
-
},
|
|
101
|
-
createHkdfKey(secret, salt, info, length) {
|
|
102
|
-
return Crypto.default.createHkdfKey(secret, salt, info, length);
|
|
103
|
-
},
|
|
104
|
-
signHmac(key, data) {
|
|
105
|
-
return Crypto.default.signHmac(key, data);
|
|
106
|
-
},
|
|
107
|
-
signEcdsa(privateKey, data, dsaEncoding) {
|
|
108
|
-
return Crypto.default.signEcdsa(privateKey, data, dsaEncoding);
|
|
109
|
-
},
|
|
110
|
-
verifyEcdsa(publicKey, data, signature, dsaEncoding) {
|
|
111
|
-
return Crypto.default.verifyEcdsa(publicKey, data, signature, dsaEncoding);
|
|
112
|
-
},
|
|
113
|
-
createKeyPair() {
|
|
114
|
-
return Crypto.default.createKeyPair();
|
|
115
|
-
},
|
|
116
|
-
generateDhSecret(key, peerKey) {
|
|
117
|
-
return Crypto.default.generateDhSecret(key, peerKey);
|
|
118
45
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (typeof MatterHooks !== "undefined") {
|
|
126
|
-
logImplementationName = true;
|
|
127
|
-
MatterHooks.cryptoSetup?.(Crypto);
|
|
46
|
+
reportUsage(component) {
|
|
47
|
+
const message = ["Using", Diagnostic.strong(this.implementationName), "crypto implementation"];
|
|
48
|
+
if (component) {
|
|
49
|
+
message.push("for", component);
|
|
50
|
+
}
|
|
51
|
+
logger.debug(...message);
|
|
128
52
|
}
|
|
129
|
-
}
|
|
53
|
+
}
|
|
130
54
|
export {
|
|
131
55
|
CRYPTO_AUTH_TAG_LENGTH,
|
|
132
56
|
CRYPTO_EC_CURVE,
|
|
133
57
|
CRYPTO_EC_KEY_BYTES,
|
|
134
58
|
CRYPTO_ENCRYPT_ALGORITHM,
|
|
135
59
|
CRYPTO_HASH_ALGORITHM,
|
|
136
|
-
CRYPTO_RANDOM_LENGTH,
|
|
137
60
|
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
138
61
|
Crypto,
|
|
139
62
|
ec
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/crypto/Crypto.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,aAAa;AAEtB,YAAY,SAAS;AACrB,YAAY,WAAW;AACvB,SAAS,YAAY;AAGd,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,EAgFzB,IAAI,cAAc;AACd,WAAO,KAAK,YAAY,CAAC,EAAE,CAAC;AAAA,EAChC;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;AAAA,EAC/D;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC;AAAA,EAC/D;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,IAAI,SAAS,KAAK,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC;AAAA,EAClE;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
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Crypto } from "./Crypto.js";
|
|
7
|
+
/**
|
|
8
|
+
* WARNING: ONLY FOR USE IN PROTECTED TESTING ENVIRONMENTS WHERE SECURITY IS NOT A CONCERN
|
|
9
|
+
*
|
|
10
|
+
* A {@link Crypto} with sources of entropy replaced to produce stable values based on an input index.
|
|
11
|
+
*
|
|
12
|
+
* This is useful in testing environments where Matter logic is difficult to test with true entropy.
|
|
13
|
+
*
|
|
14
|
+
* Depending on implementation some methods may need further mocking to remove entropy entirely. Mocking is sufficient
|
|
15
|
+
* for current testing purposes.
|
|
16
|
+
*/
|
|
17
|
+
export interface MockCrypto extends Crypto {
|
|
18
|
+
/**
|
|
19
|
+
* The index of the random space. May be modified to adjust computations going forward.
|
|
20
|
+
*/
|
|
21
|
+
index: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function MockCrypto(index?: number, implementation?: new () => Crypto): MockCrypto;
|
|
24
|
+
//# sourceMappingURL=MockCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/MockCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAIzC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACtC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,MAAa,EAAE,cAAc,GAAE,UAAU,MAAuB,GAkC7E,UAAU,CAC9B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ImplementationError } from "#MatterError.js";
|
|
7
|
+
import { ec } from "./Crypto.js";
|
|
8
|
+
import { CurveType, Key, KeyType } from "./Key.js";
|
|
9
|
+
import { StandardCrypto } from "./StandardCrypto.js";
|
|
10
|
+
function MockCrypto(index = 128, implementation = StandardCrypto) {
|
|
11
|
+
if (index < 0 || index > 255) {
|
|
12
|
+
throw new ImplementationError(`Index for stable crypto must be 0-255`);
|
|
13
|
+
}
|
|
14
|
+
const crypto = new implementation();
|
|
15
|
+
crypto.randomBytes = function getRandomDataNONENTROPIC(length) {
|
|
16
|
+
const result = new Uint8Array(length);
|
|
17
|
+
result.fill(index);
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
21
|
+
const privateBits = ec.mapHashToField(new Uint8Array(crypto.randomBytes(48)), ec.p256.CURVE.n);
|
|
22
|
+
return Key({
|
|
23
|
+
kty: KeyType.EC,
|
|
24
|
+
crv: CurveType.p256,
|
|
25
|
+
privateBits
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(crypto, "index", {
|
|
29
|
+
get() {
|
|
30
|
+
return index;
|
|
31
|
+
},
|
|
32
|
+
set(newIndex) {
|
|
33
|
+
index = newIndex % 256;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return crypto;
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
MockCrypto
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=MockCrypto.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/MockCrypto.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AACpC,SAAiB,UAAU;AAC3B,SAAS,WAAW,KAAK,eAA2B;AACpD,SAAS,sBAAsB;AAmBxB,SAAS,WAAW,QAAgB,KAAM,iBAAmC,gBAAgB;AAChG,MAAI,QAAQ,KAAK,QAAQ,KAAK;AAC1B,UAAM,IAAI,oBAAoB,uCAAuC;AAAA,EACzE;AAEA,QAAM,SAAS,IAAI,eAAe;AAGlC,SAAO,cAAc,SAAS,yBAAyB,QAAQ;AAC3D,UAAM,SAAS,IAAI,WAAW,MAAM;AACpC,WAAO,KAAK,KAAK;AACjB,WAAO;AAAA,EACX;AAGA,SAAO,gBAAgB,SAAS,2BAA2B;AACvD,UAAM,cAAc,GAAG,eAAe,IAAI,WAAW,OAAO,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC;AAC7F,WAAO,IAAI;AAAA,MACP,KAAK,QAAQ;AAAA,MACb,KAAK,UAAU;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO,eAAe,QAAQ,SAAS;AAAA,IACnC,MAAM;AACF,aAAO;AAAA,IACX;AAAA,IAEA,IAAI,UAAkB;AAClB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -3,24 +3,23 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Crypto } from "./Crypto.js";
|
|
6
7
|
export interface PbkdfParameters {
|
|
7
8
|
iterations: number;
|
|
8
9
|
salt: Uint8Array;
|
|
9
10
|
}
|
|
10
11
|
export declare class Spake2p {
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
private readonly w0;
|
|
14
|
-
static computeW0W1({ iterations, salt }: PbkdfParameters, pin: number): Promise<{
|
|
12
|
+
#private;
|
|
13
|
+
static computeW0W1(crypto: Crypto, { iterations, salt }: PbkdfParameters, pin: number): Promise<{
|
|
15
14
|
w0: bigint;
|
|
16
15
|
w1: bigint;
|
|
17
16
|
}>;
|
|
18
|
-
static computeW0L(pbkdfParameters: PbkdfParameters, pin: number): Promise<{
|
|
17
|
+
static computeW0L(crypto: Crypto, pbkdfParameters: PbkdfParameters, pin: number): Promise<{
|
|
19
18
|
w0: bigint;
|
|
20
19
|
L: Uint8Array<ArrayBufferLike>;
|
|
21
20
|
}>;
|
|
22
|
-
static create(context: Uint8Array, w0: bigint): Spake2p;
|
|
23
|
-
constructor(context: Uint8Array, random: bigint, w0: bigint);
|
|
21
|
+
static create(crypto: Crypto, context: Uint8Array, w0: bigint): Spake2p;
|
|
22
|
+
constructor(crypto: Crypto, context: Uint8Array, random: bigint, w0: bigint);
|
|
24
23
|
computeX(): Uint8Array;
|
|
25
24
|
computeY(): Uint8Array;
|
|
26
25
|
computeSecretAndVerifiersFromY(w1: bigint, X: Uint8Array, Y: Uint8Array): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"Spake2p.d.ts","sourceRoot":"","sources":["../../../src/crypto/Spake2p.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,OAAO;;WAMH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;WAS9E,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM;;;;IAMrF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM;gBAKjD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAO3E,QAAQ,IAAI,UAAU;IAKtB,QAAQ,IAAI,UAAU;IAKhB,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;IAavE,8BAA8B,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;;;;;YAalE,yBAAyB;IAevC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,YAAY;CAIvB"}
|