@matter/general 0.16.0-alpha.0-20250814-484abe647 → 0.16.0-alpha.0-20250815-ac9fd6eb0
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/codec/DerCodec.d.ts +15 -14
- package/dist/cjs/codec/DerCodec.d.ts.map +1 -1
- package/dist/cjs/codec/DerCodec.js +19 -25
- package/dist/cjs/codec/DerCodec.js.map +1 -1
- package/dist/cjs/codec/DerTypes.d.ts +9 -8
- package/dist/cjs/codec/DerTypes.d.ts.map +1 -1
- package/dist/cjs/codec/DerTypes.js.map +1 -1
- package/dist/cjs/codec/DnsCodec.d.ts +16 -16
- package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
- package/dist/cjs/codec/DnsCodec.js +7 -7
- package/dist/cjs/codec/DnsCodec.js.map +1 -1
- package/dist/cjs/crypto/Crypto.d.ts +11 -10
- 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 +22 -21
- package/dist/cjs/crypto/Key.d.ts.map +1 -1
- package/dist/cjs/crypto/Key.js +17 -16
- package/dist/cjs/crypto/Key.js.map +1 -1
- package/dist/cjs/crypto/MockCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/MockCrypto.js +2 -1
- package/dist/cjs/crypto/MockCrypto.js.map +1 -1
- package/dist/cjs/crypto/Spake2p.d.ts +12 -11
- package/dist/cjs/crypto/Spake2p.d.ts.map +1 -1
- package/dist/cjs/crypto/Spake2p.js +15 -11
- package/dist/cjs/crypto/Spake2p.js.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.d.ts +12 -11
- package/dist/cjs/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/cjs/crypto/StandardCrypto.js +27 -17
- package/dist/cjs/crypto/StandardCrypto.js.map +1 -1
- package/dist/cjs/crypto/aes/Aes.d.ts +2 -1
- package/dist/cjs/crypto/aes/Aes.d.ts.map +1 -1
- package/dist/cjs/crypto/aes/Aes.js +3 -1
- package/dist/cjs/crypto/aes/Aes.js.map +1 -1
- package/dist/cjs/crypto/aes/Ccm.d.ts +4 -3
- package/dist/cjs/crypto/aes/Ccm.d.ts.map +1 -1
- package/dist/cjs/crypto/aes/Ccm.js.map +1 -1
- package/dist/cjs/log/Diagnostic.js +1 -1
- package/dist/cjs/log/Diagnostic.js.map +1 -1
- package/dist/cjs/log/LogFormat.js +1 -1
- package/dist/cjs/log/LogFormat.js.map +1 -1
- package/dist/cjs/log/Logger.js +1 -1
- package/dist/cjs/log/Logger.js.map +1 -1
- package/dist/cjs/net/NetInterface.d.ts +2 -1
- package/dist/cjs/net/NetInterface.d.ts.map +1 -1
- package/dist/cjs/net/NetInterface.js.map +1 -1
- package/dist/cjs/net/TransportInterface.d.ts +2 -1
- package/dist/cjs/net/TransportInterface.d.ts.map +1 -1
- package/dist/cjs/net/TransportInterface.js.map +1 -1
- package/dist/cjs/net/UdpChannel.d.ts +3 -3
- package/dist/cjs/net/UdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/UdpInterface.d.ts +4 -3
- package/dist/cjs/net/UdpInterface.d.ts.map +1 -1
- package/dist/cjs/net/UdpInterface.js.map +1 -1
- package/dist/cjs/net/UdpMulticastServer.d.ts +3 -2
- package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/cjs/net/UdpMulticastServer.js.map +1 -1
- package/dist/cjs/net/mock/MockRouter.d.ts +1 -1
- package/dist/cjs/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/cjs/net/mock/NetworkSimulator.d.ts +1 -1
- package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/dist/cjs/storage/Storage.d.ts +1 -1
- package/dist/cjs/storage/Storage.d.ts.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.d.ts +1 -1
- package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.js +7 -5
- package/dist/cjs/storage/StorageBackendMemory.js.map +1 -1
- package/dist/cjs/storage/StorageContext.d.ts +1 -1
- package/dist/cjs/storage/StorageContext.d.ts.map +1 -1
- package/dist/cjs/storage/StorageContext.js.map +1 -1
- package/dist/cjs/storage/StringifyTools.d.ts +2 -1
- package/dist/cjs/storage/StringifyTools.d.ts.map +1 -1
- package/dist/cjs/storage/StringifyTools.js +1 -1
- package/dist/cjs/storage/StringifyTools.js.map +1 -1
- package/dist/cjs/transaction/Tx.js +5 -1
- package/dist/cjs/transaction/Tx.js.map +1 -1
- package/dist/cjs/util/Bytes.d.ts +29 -11
- package/dist/cjs/util/Bytes.d.ts.map +1 -1
- package/dist/cjs/util/Bytes.js +30 -11
- package/dist/cjs/util/Bytes.js.map +1 -1
- package/dist/cjs/util/DataReader.d.ts +2 -2
- package/dist/cjs/util/DataReader.d.ts.map +1 -1
- package/dist/cjs/util/DataReader.js +1 -1
- package/dist/cjs/util/DataReader.js.map +1 -1
- package/dist/cjs/util/DataWriter.d.ts +3 -3
- package/dist/cjs/util/DataWriter.d.ts.map +1 -1
- package/dist/cjs/util/DataWriter.js +1 -1
- package/dist/cjs/util/DataWriter.js.map +1 -1
- package/dist/cjs/util/String.d.ts.map +1 -1
- package/dist/cjs/util/String.js +3 -8
- package/dist/cjs/util/String.js.map +1 -1
- package/dist/esm/codec/DerCodec.d.ts +15 -14
- package/dist/esm/codec/DerCodec.d.ts.map +1 -1
- package/dist/esm/codec/DerCodec.js +19 -25
- package/dist/esm/codec/DerCodec.js.map +1 -1
- package/dist/esm/codec/DerTypes.d.ts +9 -8
- package/dist/esm/codec/DerTypes.d.ts.map +1 -1
- package/dist/esm/codec/DerTypes.js.map +1 -1
- package/dist/esm/codec/DnsCodec.d.ts +16 -16
- package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
- package/dist/esm/codec/DnsCodec.js +7 -7
- package/dist/esm/codec/DnsCodec.js.map +1 -1
- package/dist/esm/crypto/Crypto.d.ts +11 -10
- package/dist/esm/crypto/Crypto.d.ts.map +1 -1
- package/dist/esm/crypto/Crypto.js +4 -4
- package/dist/esm/crypto/Crypto.js.map +1 -1
- package/dist/esm/crypto/Key.d.ts +22 -21
- package/dist/esm/crypto/Key.d.ts.map +1 -1
- package/dist/esm/crypto/Key.js +17 -16
- package/dist/esm/crypto/Key.js.map +1 -1
- package/dist/esm/crypto/MockCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/MockCrypto.js +2 -1
- package/dist/esm/crypto/MockCrypto.js.map +1 -1
- package/dist/esm/crypto/Spake2p.d.ts +12 -11
- package/dist/esm/crypto/Spake2p.d.ts.map +1 -1
- package/dist/esm/crypto/Spake2p.js +15 -11
- package/dist/esm/crypto/Spake2p.js.map +1 -1
- package/dist/esm/crypto/StandardCrypto.d.ts +12 -11
- package/dist/esm/crypto/StandardCrypto.d.ts.map +1 -1
- package/dist/esm/crypto/StandardCrypto.js +27 -17
- package/dist/esm/crypto/StandardCrypto.js.map +1 -1
- package/dist/esm/crypto/aes/Aes.d.ts +2 -1
- package/dist/esm/crypto/aes/Aes.d.ts.map +1 -1
- package/dist/esm/crypto/aes/Aes.js +3 -1
- package/dist/esm/crypto/aes/Aes.js.map +1 -1
- package/dist/esm/crypto/aes/Ccm.d.ts +4 -3
- package/dist/esm/crypto/aes/Ccm.d.ts.map +1 -1
- package/dist/esm/crypto/aes/Ccm.js.map +1 -1
- package/dist/esm/log/Diagnostic.js +1 -1
- package/dist/esm/log/Diagnostic.js.map +1 -1
- package/dist/esm/log/LogFormat.js +1 -1
- package/dist/esm/log/LogFormat.js.map +1 -1
- package/dist/esm/log/Logger.js +1 -1
- package/dist/esm/log/Logger.js.map +1 -1
- package/dist/esm/net/NetInterface.d.ts +2 -1
- package/dist/esm/net/NetInterface.d.ts.map +1 -1
- package/dist/esm/net/NetInterface.js.map +1 -1
- package/dist/esm/net/TransportInterface.d.ts +2 -1
- package/dist/esm/net/TransportInterface.d.ts.map +1 -1
- package/dist/esm/net/TransportInterface.js.map +1 -1
- package/dist/esm/net/UdpChannel.d.ts +3 -3
- package/dist/esm/net/UdpChannel.d.ts.map +1 -1
- package/dist/esm/net/UdpInterface.d.ts +4 -3
- package/dist/esm/net/UdpInterface.d.ts.map +1 -1
- package/dist/esm/net/UdpInterface.js.map +1 -1
- package/dist/esm/net/UdpMulticastServer.d.ts +3 -2
- package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -1
- package/dist/esm/net/UdpMulticastServer.js.map +1 -1
- package/dist/esm/net/mock/MockRouter.d.ts +1 -1
- package/dist/esm/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts +1 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/esm/net/mock/NetworkSimulator.d.ts +1 -1
- package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/dist/esm/storage/Storage.d.ts +1 -1
- package/dist/esm/storage/Storage.d.ts.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.d.ts +1 -1
- package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.js +7 -5
- package/dist/esm/storage/StorageBackendMemory.js.map +1 -1
- package/dist/esm/storage/StorageContext.d.ts +1 -1
- package/dist/esm/storage/StorageContext.d.ts.map +1 -1
- package/dist/esm/storage/StorageContext.js.map +1 -1
- package/dist/esm/storage/StringifyTools.d.ts +2 -1
- package/dist/esm/storage/StringifyTools.d.ts.map +1 -1
- package/dist/esm/storage/StringifyTools.js +1 -1
- package/dist/esm/storage/StringifyTools.js.map +1 -1
- package/dist/esm/transaction/Tx.js +5 -1
- package/dist/esm/transaction/Tx.js.map +1 -1
- package/dist/esm/util/Bytes.d.ts +29 -11
- package/dist/esm/util/Bytes.d.ts.map +1 -1
- package/dist/esm/util/Bytes.js +31 -12
- package/dist/esm/util/Bytes.js.map +1 -1
- package/dist/esm/util/DataReader.d.ts +2 -2
- package/dist/esm/util/DataReader.d.ts.map +1 -1
- package/dist/esm/util/DataReader.js +1 -1
- package/dist/esm/util/DataReader.js.map +1 -1
- package/dist/esm/util/DataWriter.d.ts +3 -3
- package/dist/esm/util/DataWriter.d.ts.map +1 -1
- package/dist/esm/util/DataWriter.js +2 -2
- package/dist/esm/util/DataWriter.js.map +1 -1
- package/dist/esm/util/String.d.ts.map +1 -1
- package/dist/esm/util/String.js +3 -8
- package/dist/esm/util/String.js.map +1 -1
- package/package.json +2 -2
- package/src/codec/DerCodec.ts +32 -39
- package/src/codec/DerTypes.ts +4 -3
- package/src/codec/DnsCodec.ts +21 -21
- package/src/crypto/Crypto.ts +16 -26
- package/src/crypto/Key.ts +46 -41
- package/src/crypto/MockCrypto.ts +2 -1
- package/src/crypto/Spake2p.ts +26 -22
- package/src/crypto/StandardCrypto.ts +40 -31
- package/src/crypto/aes/Aes.ts +4 -2
- package/src/crypto/aes/Ccm.ts +4 -3
- package/src/log/Diagnostic.ts +1 -1
- package/src/log/LogFormat.ts +1 -1
- package/src/log/Logger.ts +1 -1
- package/src/net/NetInterface.ts +2 -1
- package/src/net/TransportInterface.ts +2 -1
- package/src/net/UdpChannel.ts +3 -3
- package/src/net/UdpInterface.ts +4 -3
- package/src/net/UdpMulticastServer.ts +3 -2
- package/src/net/mock/MockRouter.ts +1 -1
- package/src/net/mock/MockUdpChannel.ts +1 -1
- package/src/net/mock/NetworkSimulator.ts +1 -1
- package/src/storage/Storage.ts +1 -1
- package/src/storage/StorageBackendMemory.ts +8 -6
- package/src/storage/StorageContext.ts +1 -1
- package/src/storage/StringifyTools.ts +2 -2
- package/src/transaction/Tx.ts +5 -1
- package/src/util/Bytes.ts +59 -21
- package/src/util/DataReader.ts +2 -2
- package/src/util/DataWriter.ts +3 -3
- package/src/util/String.ts +3 -8
|
@@ -23,16 +23,16 @@ const CRYPTO_SYMMETRIC_KEY_LENGTH = 16;
|
|
|
23
23
|
const logger = Logger.get("Crypto");
|
|
24
24
|
class Crypto {
|
|
25
25
|
get randomUint8() {
|
|
26
|
-
return this.randomBytes(1)[0];
|
|
26
|
+
return Bytes.of(this.randomBytes(1))[0];
|
|
27
27
|
}
|
|
28
28
|
get randomUint16() {
|
|
29
|
-
return
|
|
29
|
+
return Bytes.dataViewOf(this.randomBytes(2)).getUint16(0);
|
|
30
30
|
}
|
|
31
31
|
get randomUint32() {
|
|
32
|
-
return
|
|
32
|
+
return Bytes.dataViewOf(this.randomBytes(4)).getUint32(0);
|
|
33
33
|
}
|
|
34
34
|
get randomBigUint64() {
|
|
35
|
-
return
|
|
35
|
+
return Bytes.dataViewOf(this.randomBytes(8)).getBigUint64(0);
|
|
36
36
|
}
|
|
37
37
|
randomBigInt(size, maxValue) {
|
|
38
38
|
if (maxValue === void 0) {
|
|
@@ -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,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,
|
|
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,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
|
}
|
package/dist/esm/crypto/Key.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Bytes } from "../util/Bytes.js";
|
|
6
7
|
export declare enum KeyType {
|
|
7
8
|
EC = "EC",
|
|
8
9
|
RSA = "RSA",
|
|
@@ -14,8 +15,8 @@ export declare enum CurveType {
|
|
|
14
15
|
p521 = "P-521"
|
|
15
16
|
}
|
|
16
17
|
export type BinaryKeyPair = {
|
|
17
|
-
publicKey:
|
|
18
|
-
privateKey:
|
|
18
|
+
publicKey: Bytes;
|
|
19
|
+
privateKey: Bytes;
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
21
22
|
* Represents a cryptographic key.
|
|
@@ -75,34 +76,34 @@ export interface Key extends JsonWebKey {
|
|
|
75
76
|
* Binary alias to private key field. Automatically encodes/decodes the
|
|
76
77
|
* base-64 private key.
|
|
77
78
|
*/
|
|
78
|
-
privateBits?:
|
|
79
|
+
privateBits?: Bytes;
|
|
79
80
|
/**
|
|
80
81
|
* Binary alias to the x field. Automatically encodes/decodes the base-64
|
|
81
82
|
* x-point on EC public keys.
|
|
82
83
|
*/
|
|
83
|
-
xBits?:
|
|
84
|
+
xBits?: Bytes;
|
|
84
85
|
/**
|
|
85
86
|
* Binary alias to the y field. Automatically encodes/decodes the base-64
|
|
86
87
|
* y-point on EC public keys.
|
|
87
88
|
*/
|
|
88
|
-
yBits?:
|
|
89
|
+
yBits?: Bytes;
|
|
89
90
|
/**
|
|
90
91
|
* Import (write-only) of private keys encoded in SEC1 format.
|
|
91
92
|
*/
|
|
92
|
-
sec1?:
|
|
93
|
+
sec1?: Bytes;
|
|
93
94
|
/**
|
|
94
95
|
* Import (write-only) of private keys encoded in PKCS #8 format.
|
|
95
96
|
*/
|
|
96
|
-
pkcs8?:
|
|
97
|
+
pkcs8?: Bytes;
|
|
97
98
|
/**
|
|
98
99
|
* Import (write-only) of public keys encoded in SPKI format.
|
|
99
100
|
*/
|
|
100
|
-
spki?:
|
|
101
|
+
spki?: Bytes;
|
|
101
102
|
/**
|
|
102
103
|
* Import/export of EC public key in SEC1/SPKI format. Maps to x & y
|
|
103
104
|
* fields internally.
|
|
104
105
|
*/
|
|
105
|
-
publicBits?:
|
|
106
|
+
publicBits?: Bytes;
|
|
106
107
|
/**
|
|
107
108
|
* Import/export of BinaryKeyPair structure used as an alternate
|
|
108
109
|
* serialization format for legacy reasons.
|
|
@@ -111,11 +112,11 @@ export interface Key extends JsonWebKey {
|
|
|
111
112
|
/**
|
|
112
113
|
* Alias for publicBits that throws if no public key is present.
|
|
113
114
|
*/
|
|
114
|
-
publicKey:
|
|
115
|
+
publicKey: Bytes;
|
|
115
116
|
/**
|
|
116
117
|
* Alias for privateBits that throws if no private key is present.
|
|
117
118
|
*/
|
|
118
|
-
privateKey:
|
|
119
|
+
privateKey: Bytes;
|
|
119
120
|
/**
|
|
120
121
|
* Alias for keyPairBits that throws if a complete key pair is not present.
|
|
121
122
|
*/
|
|
@@ -129,9 +130,9 @@ export interface PublicKey extends Key {
|
|
|
129
130
|
curve: CurveType;
|
|
130
131
|
x: string;
|
|
131
132
|
y: string;
|
|
132
|
-
xBits:
|
|
133
|
-
yBits:
|
|
134
|
-
publicBits:
|
|
133
|
+
xBits: Bytes;
|
|
134
|
+
yBits: Bytes;
|
|
135
|
+
publicBits: Bytes;
|
|
135
136
|
}
|
|
136
137
|
/**
|
|
137
138
|
* EC key with extractable private fields.
|
|
@@ -139,11 +140,11 @@ export interface PublicKey extends Key {
|
|
|
139
140
|
export interface PrivateKey extends PublicKey {
|
|
140
141
|
private: string;
|
|
141
142
|
d: string;
|
|
142
|
-
privateBits:
|
|
143
|
-
privateKey:
|
|
143
|
+
privateBits: Bytes;
|
|
144
|
+
privateKey: Bytes;
|
|
144
145
|
keyPair: BinaryKeyPair;
|
|
145
146
|
keyPairBits: BinaryKeyPair;
|
|
146
|
-
sharedSecretFor(peerKey: PublicKey):
|
|
147
|
+
sharedSecretFor(peerKey: PublicKey): Bytes;
|
|
147
148
|
}
|
|
148
149
|
/**
|
|
149
150
|
* Symmetric key.
|
|
@@ -160,19 +161,19 @@ export declare function Key(properties: Partial<Key>): Key;
|
|
|
160
161
|
/**
|
|
161
162
|
* EC private key factory.
|
|
162
163
|
*/
|
|
163
|
-
export declare function PrivateKey(privateKey:
|
|
164
|
+
export declare function PrivateKey(privateKey: Bytes | BinaryKeyPair, options?: Partial<Key>): PrivateKey;
|
|
164
165
|
/**
|
|
165
166
|
* EC public key factory.
|
|
166
167
|
*/
|
|
167
|
-
export declare function PublicKey(publicKey:
|
|
168
|
+
export declare function PublicKey(publicKey: Bytes, options?: Partial<Key>): PublicKey;
|
|
168
169
|
/**
|
|
169
170
|
* Symmetric key factory.
|
|
170
171
|
*/
|
|
171
|
-
export declare function SymmetricKey(privateKey:
|
|
172
|
+
export declare function SymmetricKey(privateKey: Bytes, options?: Partial<Key>): Key;
|
|
172
173
|
/**
|
|
173
174
|
* Diffie-Hellman shared secret computation.
|
|
174
175
|
*
|
|
175
176
|
* We provide this for platforms without a native implementation.
|
|
176
177
|
*/
|
|
177
|
-
export declare function sharedSecretFor(this: PrivateKey, peerKey: PublicKey):
|
|
178
|
+
export declare function sharedSecretFor(this: PrivateKey, peerKey: PublicKey): Bytes;
|
|
178
179
|
//# sourceMappingURL=Key.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Key.d.ts","sourceRoot":"","sources":["../../../src/crypto/Key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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
|
@@ -57,13 +57,13 @@ const CurveLookup = {
|
|
|
57
57
|
["0103840023" /* prime521r1 */]: "P-521" /* p521 */
|
|
58
58
|
};
|
|
59
59
|
function checkDerVersion(type, node, version) {
|
|
60
|
-
const derVersion = node && node._tag === DerType.Integer && node._bytes && node._bytes.
|
|
60
|
+
const derVersion = node && node._tag === DerType.Integer && node._bytes && node._bytes.byteLength === 1 && Bytes.of(node._bytes)[0];
|
|
61
61
|
if (derVersion !== version) {
|
|
62
62
|
throw new KeyInputError(`${type} key version mismatch`);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
function getDerObjectID(type, node) {
|
|
66
|
-
const id = node && node._tag === DerType.ObjectIdentifier && node._bytes?.
|
|
66
|
+
const id = node && node._tag === DerType.ObjectIdentifier && node._bytes?.byteLength > 1 && node._bytes;
|
|
67
67
|
if (id) return id;
|
|
68
68
|
throw new KeyInputError(`Missing object in ${type} key`);
|
|
69
69
|
}
|
|
@@ -74,7 +74,7 @@ function getDerCurve(type, node) {
|
|
|
74
74
|
throw new KeyInputError(`Unsupported ${type} EC curve`);
|
|
75
75
|
}
|
|
76
76
|
function getDerKey(type, node, derType = DerType.OctetString) {
|
|
77
|
-
const key = node && node._tag === derType && node._bytes?.
|
|
77
|
+
const key = node && node._tag === derType && node._bytes?.byteLength > 1 && node._bytes;
|
|
78
78
|
if (key) return key;
|
|
79
79
|
throw new MatterError(`Missing ${type} key node`);
|
|
80
80
|
}
|
|
@@ -142,10 +142,11 @@ var Translators;
|
|
|
142
142
|
};
|
|
143
143
|
Translators2.publicBits = {
|
|
144
144
|
set: function(input) {
|
|
145
|
-
|
|
145
|
+
const data = Bytes.of(input);
|
|
146
|
+
if (!(data.length % 2)) {
|
|
146
147
|
throw new KeyInputError("Invalid public key encoding");
|
|
147
148
|
}
|
|
148
|
-
switch (
|
|
149
|
+
switch (data[0]) {
|
|
149
150
|
case 2:
|
|
150
151
|
case 3:
|
|
151
152
|
throw new KeyInputError("Unsupported public key compression");
|
|
@@ -154,17 +155,17 @@ var Translators;
|
|
|
154
155
|
case 5:
|
|
155
156
|
throw new KeyInputError("Illegal public key format specifier");
|
|
156
157
|
}
|
|
157
|
-
const coordinateLength = (
|
|
158
|
+
const coordinateLength = (data.length - 1) / 2;
|
|
158
159
|
inferCurve(this, coordinateLength);
|
|
159
160
|
this.type = "EC" /* EC */;
|
|
160
|
-
this.xBits =
|
|
161
|
-
this.yBits =
|
|
161
|
+
this.xBits = data.slice(1, coordinateLength + 1);
|
|
162
|
+
this.yBits = data.slice(coordinateLength + 1);
|
|
162
163
|
},
|
|
163
164
|
get: function() {
|
|
164
165
|
if (this.xBits === void 0 || this.yBits === void 0) {
|
|
165
166
|
return void 0;
|
|
166
167
|
}
|
|
167
|
-
return new Uint8Array([4,
|
|
168
|
+
return Bytes.concat(new Uint8Array([4]), this.xBits, this.yBits);
|
|
168
169
|
}
|
|
169
170
|
};
|
|
170
171
|
Translators2.keyPairBits = {
|
|
@@ -179,8 +180,8 @@ var Translators;
|
|
|
179
180
|
return;
|
|
180
181
|
}
|
|
181
182
|
return {
|
|
182
|
-
publicKey: publicBits2,
|
|
183
|
-
privateKey: privateBits
|
|
183
|
+
publicKey: Bytes.of(publicBits2),
|
|
184
|
+
privateKey: Bytes.of(privateBits)
|
|
184
185
|
};
|
|
185
186
|
}
|
|
186
187
|
};
|
|
@@ -279,15 +280,15 @@ function Key(properties) {
|
|
|
279
280
|
default:
|
|
280
281
|
throw new KeyInputError(`Unsupported elliptic curve ${crv}`);
|
|
281
282
|
}
|
|
282
|
-
const ecKey = Point.fromPrivateKey(that.privateKey);
|
|
283
|
+
const ecKey = Point.fromPrivateKey(Bytes.of(that.privateKey));
|
|
283
284
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
|
284
285
|
that.yBits = numberToBytesBE(ecKey.y, keyLength);
|
|
285
286
|
}
|
|
286
287
|
if (that.type === "EC" /* EC */) {
|
|
287
288
|
if (that.d) {
|
|
288
|
-
inferCurve(that, that.privateKey.
|
|
289
|
+
inferCurve(that, that.privateKey.byteLength);
|
|
289
290
|
} else if (that.xBits) {
|
|
290
|
-
inferCurve(that, that.xBits.
|
|
291
|
+
inferCurve(that, that.xBits.byteLength);
|
|
291
292
|
}
|
|
292
293
|
if (that.d && (!that.x || !that.y)) {
|
|
293
294
|
derivePublicFromPrivate();
|
|
@@ -297,7 +298,7 @@ function Key(properties) {
|
|
|
297
298
|
}
|
|
298
299
|
function PrivateKey(privateKey, options) {
|
|
299
300
|
let priv, pub;
|
|
300
|
-
if (
|
|
301
|
+
if (Bytes.isBytes(privateKey)) {
|
|
301
302
|
priv = privateKey;
|
|
302
303
|
} else {
|
|
303
304
|
priv = privateKey.privateKey;
|
|
@@ -326,7 +327,7 @@ function SymmetricKey(privateKey, options) {
|
|
|
326
327
|
});
|
|
327
328
|
}
|
|
328
329
|
function sharedSecretFor(peerKey) {
|
|
329
|
-
return getSharedSecret(this.privateBits, peerKey.publicBits);
|
|
330
|
+
return Bytes.of(getSharedSecret(Bytes.of(this.privateBits), Bytes.of(peerKey.publicBits)));
|
|
330
331
|
}
|
|
331
332
|
export {
|
|
332
333
|
CurveType,
|
|
@@ -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;AACnC,IAAI;AAEJ,MAAM,WAAW;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,QAAK;AACL,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,UAAO;AAHC,SAAAA;AAAA,GAAA;AAMZ,IAAK,eAAL,kBAAKC,kBAAL;AACI,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AAJZ,SAAAA;AAAA,GAAA;AAOL,MAAM,cAAc;AAAA,EAChB,CAAC,mCAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAAA,EAC3B,CAAC,6BAAuB,GAAG;AAC/B;AAoKA,SAAS,gBAAgB,MAAc,MAA2B,SAAiB;AAC/E,QAAM,aACF,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["KeyType", "CurveType", "Asn1ObjectID", "Translators", "publicBits", "Aliases", "Base64Codecs", "AssertedAliases"]
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/MockCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"MockCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/MockCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,MAAM,EAAM,MAAM,aAAa,CAAC;AAIzC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM;IACtC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,MAAa,EAAE,cAAc,GAAE,UAAU,MAAuB,GAsC7E,UAAU,CAoB9B"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { ImplementationError } from "#MatterError.js";
|
|
7
|
+
import { Bytes } from "#util/Bytes.js";
|
|
7
8
|
import { ec } from "./Crypto.js";
|
|
8
9
|
import { CurveType, Key, KeyType } from "./Key.js";
|
|
9
10
|
import { StandardCrypto } from "./StandardCrypto.js";
|
|
@@ -45,7 +46,7 @@ function MockCrypto(index = 128, implementation = StandardCrypto) {
|
|
|
45
46
|
return result;
|
|
46
47
|
};
|
|
47
48
|
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
48
|
-
const privateBits = ec.mapHashToField(
|
|
49
|
+
const privateBits = ec.mapHashToField(Bytes.of(crypto.randomBytes(48)), ec.p256.CURVE.n);
|
|
49
50
|
return Key({
|
|
50
51
|
kty: KeyType.EC,
|
|
51
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,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,
|
|
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;AACvF,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
|
}
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Bytes } from "../util/Bytes.js";
|
|
6
7
|
import { Crypto } from "./Crypto.js";
|
|
7
8
|
export interface PbkdfParameters {
|
|
8
9
|
iterations: number;
|
|
9
|
-
salt:
|
|
10
|
+
salt: Bytes;
|
|
10
11
|
}
|
|
11
12
|
export declare class Spake2p {
|
|
12
13
|
#private;
|
|
@@ -18,19 +19,19 @@ export declare class Spake2p {
|
|
|
18
19
|
w0: bigint;
|
|
19
20
|
L: Uint8Array<ArrayBufferLike>;
|
|
20
21
|
}>;
|
|
21
|
-
static create(crypto: Crypto, context:
|
|
22
|
-
constructor(crypto: Crypto, context:
|
|
23
|
-
computeX():
|
|
24
|
-
computeY():
|
|
25
|
-
computeSecretAndVerifiersFromY(w1: bigint, X:
|
|
22
|
+
static create(crypto: Crypto, context: Bytes, w0: bigint): Spake2p;
|
|
23
|
+
constructor(crypto: Crypto, context: Bytes, random: bigint, w0: bigint);
|
|
24
|
+
computeX(): Bytes;
|
|
25
|
+
computeY(): Bytes;
|
|
26
|
+
computeSecretAndVerifiersFromY(w1: bigint, X: Bytes, Y: Bytes): Promise<{
|
|
26
27
|
Ke: Uint8Array<ArrayBuffer>;
|
|
27
|
-
hAY:
|
|
28
|
-
hBX:
|
|
28
|
+
hAY: AllowSharedBufferSource;
|
|
29
|
+
hBX: AllowSharedBufferSource;
|
|
29
30
|
}>;
|
|
30
|
-
computeSecretAndVerifiersFromX(L:
|
|
31
|
+
computeSecretAndVerifiersFromX(L: Bytes, X: Bytes, Y: Bytes): Promise<{
|
|
31
32
|
Ke: Uint8Array<ArrayBuffer>;
|
|
32
|
-
hAY:
|
|
33
|
-
hBX:
|
|
33
|
+
hAY: AllowSharedBufferSource;
|
|
34
|
+
hBX: AllowSharedBufferSource;
|
|
34
35
|
}>;
|
|
35
36
|
private computeSecretAndVerifiers;
|
|
36
37
|
private computeTranscriptHash;
|
|
@@ -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;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;;;;WAW9E,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;gBAK5C,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"}
|
|
@@ -25,7 +25,9 @@ class Spake2p {
|
|
|
25
25
|
static async computeW0W1(crypto, { iterations, salt }, pin) {
|
|
26
26
|
const pinWriter = new DataWriter(Endian.Little);
|
|
27
27
|
pinWriter.writeUInt32(pin);
|
|
28
|
-
const ws =
|
|
28
|
+
const ws = Bytes.of(
|
|
29
|
+
await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2)
|
|
30
|
+
);
|
|
29
31
|
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), P256_CURVE.n);
|
|
30
32
|
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), P256_CURVE.n);
|
|
31
33
|
return { w0, w1 };
|
|
@@ -54,7 +56,7 @@ class Spake2p {
|
|
|
54
56
|
return Y.toRawBytes(false);
|
|
55
57
|
}
|
|
56
58
|
async computeSecretAndVerifiersFromY(w1, X, Y) {
|
|
57
|
-
const YPoint = ProjectivePoint.fromHex(Y);
|
|
59
|
+
const YPoint = ProjectivePoint.fromHex(Bytes.of(Y));
|
|
58
60
|
try {
|
|
59
61
|
YPoint.assertValidity();
|
|
60
62
|
} catch (error) {
|
|
@@ -63,11 +65,11 @@ class Spake2p {
|
|
|
63
65
|
const yNwo = YPoint.add(N.multiply(this.#w0).negate());
|
|
64
66
|
const Z = yNwo.multiply(this.#random);
|
|
65
67
|
const V = yNwo.multiply(w1);
|
|
66
|
-
return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
|
|
68
|
+
return this.computeSecretAndVerifiers(X, Y, Bytes.of(Z.toRawBytes(false)), Bytes.of(V.toRawBytes(false)));
|
|
67
69
|
}
|
|
68
70
|
async computeSecretAndVerifiersFromX(L, X, Y) {
|
|
69
|
-
const XPoint = ProjectivePoint.fromHex(X);
|
|
70
|
-
const LPoint = ProjectivePoint.fromHex(L);
|
|
71
|
+
const XPoint = ProjectivePoint.fromHex(Bytes.of(X));
|
|
72
|
+
const LPoint = ProjectivePoint.fromHex(Bytes.of(L));
|
|
71
73
|
try {
|
|
72
74
|
XPoint.assertValidity();
|
|
73
75
|
} catch (error) {
|
|
@@ -75,13 +77,15 @@ class Spake2p {
|
|
|
75
77
|
}
|
|
76
78
|
const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
|
|
77
79
|
const V = LPoint.multiply(this.#random);
|
|
78
|
-
return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
|
|
80
|
+
return this.computeSecretAndVerifiers(X, Y, Bytes.of(Z.toRawBytes(false)), Bytes.of(V.toRawBytes(false)));
|
|
79
81
|
}
|
|
80
82
|
async computeSecretAndVerifiers(X, Y, Z, V) {
|
|
81
|
-
const TT_HASH = await this.computeTranscriptHash(X, Y, Z, V);
|
|
83
|
+
const TT_HASH = Bytes.of(await this.computeTranscriptHash(X, Y, Z, V));
|
|
82
84
|
const Ka = TT_HASH.slice(0, 16);
|
|
83
85
|
const Ke = TT_HASH.slice(16, 32);
|
|
84
|
-
const KcAB =
|
|
86
|
+
const KcAB = Bytes.of(
|
|
87
|
+
await this.#crypto.createHkdfKey(Ka, new Uint8Array(0), Bytes.fromString("ConfirmationKeys"), 32)
|
|
88
|
+
);
|
|
85
89
|
const KcA = KcAB.slice(0, 16);
|
|
86
90
|
const KcB = KcAB.slice(16, 32);
|
|
87
91
|
const hAY = await this.#crypto.signHmac(KcA, Y);
|
|
@@ -93,8 +97,8 @@ class Spake2p {
|
|
|
93
97
|
this.addToContext(TTwriter, this.#context);
|
|
94
98
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
95
99
|
this.addToContext(TTwriter, Bytes.fromString(""));
|
|
96
|
-
this.addToContext(TTwriter, M.toRawBytes(false));
|
|
97
|
-
this.addToContext(TTwriter, N.toRawBytes(false));
|
|
100
|
+
this.addToContext(TTwriter, Bytes.of(M.toRawBytes(false)));
|
|
101
|
+
this.addToContext(TTwriter, Bytes.of(N.toRawBytes(false)));
|
|
98
102
|
this.addToContext(TTwriter, X);
|
|
99
103
|
this.addToContext(TTwriter, Y);
|
|
100
104
|
this.addToContext(TTwriter, Z);
|
|
@@ -103,7 +107,7 @@ class Spake2p {
|
|
|
103
107
|
return this.#crypto.computeSha256(TTwriter.toByteArray());
|
|
104
108
|
}
|
|
105
109
|
addToContext(TTwriter, data) {
|
|
106
|
-
TTwriter.writeUInt64(data.
|
|
110
|
+
TTwriter.writeUInt64(data.byteLength);
|
|
107
111
|
TTwriter.writeByteArray(data);
|
|
108
112
|
}
|
|
109
113
|
}
|
|
@@ -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,iBAAiB,OAAO,WAAW;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACJ,IAAI;AAGJ,MAAM,IAAI,gBAAgB,QAAQ,oEAAoE;AACtG,MAAM,IAAI,gBAAgB,QAAQ,oEAAoE;AAEtG,MAAM,sBAAsB,0BAA0B;AAO/C,MAAM,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,aAAa,YAAY,QAAgB,EAAE,YAAY,KAAK,GAAoB,KAAa;AACzF,UAAM,YAAY,IAAI,WAAW,OAAO,MAAM;AAC9C,cAAU,YAAY,GAAG;AACzB,UAAM,KAAK,MAAM,OAAO,gBAAgB,UAAU,YAAY,GAAG,MAAM,YAAY,sBAAsB,CAAC;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Portions copyright 2022-2023 Project CHIP Authors
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
|
+
import { Bytes } from "#util/Bytes.js";
|
|
7
8
|
import { Crypto, CryptoDsaEncoding } from "./Crypto.js";
|
|
8
9
|
import { PrivateKey, PublicKey } from "./Key.js";
|
|
9
10
|
import { WebCrypto } from "./WebCrypto.js";
|
|
@@ -22,18 +23,18 @@ export declare class StandardCrypto extends Crypto {
|
|
|
22
23
|
constructor(crypto?: WebCrypto);
|
|
23
24
|
protected get subtle(): SubtleCrypto;
|
|
24
25
|
static provider(): StandardCrypto;
|
|
25
|
-
randomBytes(length: number):
|
|
26
|
-
encrypt(key:
|
|
27
|
-
decrypt(key:
|
|
28
|
-
computeSha256(buffer:
|
|
29
|
-
createPbkdf2Key(secret:
|
|
30
|
-
createHkdfKey(secret:
|
|
31
|
-
signHmac(secret:
|
|
32
|
-
signEcdsa(key: JsonWebKey, data:
|
|
33
|
-
verifyEcdsa(key: JsonWebKey, data:
|
|
26
|
+
randomBytes(length: number): Bytes;
|
|
27
|
+
encrypt(key: Bytes, data: Bytes, nonce: Bytes, associatedData?: Bytes): AllowSharedBufferSource;
|
|
28
|
+
decrypt(key: Bytes, data: Bytes, nonce: Bytes, associatedData?: Bytes): AllowSharedBufferSource;
|
|
29
|
+
computeSha256(buffer: Bytes | Bytes[]): Promise<ArrayBuffer>;
|
|
30
|
+
createPbkdf2Key(secret: Bytes, salt: Bytes, iteration: number, keyLength: number): Promise<ArrayBuffer>;
|
|
31
|
+
createHkdfKey(secret: Bytes, salt: Bytes, info: Bytes, length?: number): Promise<Bytes>;
|
|
32
|
+
signHmac(secret: Bytes, data: Bytes): Promise<Bytes>;
|
|
33
|
+
signEcdsa(key: JsonWebKey, data: Bytes | Bytes[], dsaEncoding?: CryptoDsaEncoding): Promise<AllowSharedBufferSource>;
|
|
34
|
+
verifyEcdsa(key: JsonWebKey, data: Bytes, signature: Bytes, dsaEncoding?: CryptoDsaEncoding): Promise<void>;
|
|
34
35
|
createKeyPair(): Promise<PrivateKey>;
|
|
35
36
|
protected generateJwk(): Promise<JsonWebKey>;
|
|
36
|
-
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<
|
|
37
|
-
protected importKey(format: KeyFormat, keyData: JsonWebKey |
|
|
37
|
+
generateDhSecret(key: PrivateKey, peerKey: PublicKey): Promise<Bytes>;
|
|
38
|
+
protected importKey(format: KeyFormat, keyData: JsonWebKey | Bytes, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray<KeyUsage>): Promise<CryptoKey>;
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=StandardCrypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"StandardCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/StandardCrypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,OAAO,EAAE,MAAM,EAA+B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAA2B,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuB3C;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;;IACtC,kBAAkB,SAAQ;gBAId,MAAM,GAAE,SAA6B;IAYjD,SAAS,KAAK,MAAM,iBAEnB;IAED,MAAM,CAAC,QAAQ;IAIf,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAMlC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,KAAK;IASrE,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;IAO/B,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAchF,aAAa,CACf,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACX,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,KAAK,CAAC;IAcX,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpD,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,CAAC,EAAE,iBAAiB;IA+BjF,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,iBAAiB;IAgC3F,aAAa;cAaH,WAAW;IAkBrB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;cAiC3D,SAAS,CACrB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,GAAG,KAAK,EAC3B,SAAS,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,EAC/G,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;CAQzC"}
|