@matter/general 0.16.0-alpha.0-20250812-285b75d83 → 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
package/dist/cjs/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/cjs/crypto/Key.js
CHANGED
|
@@ -86,13 +86,13 @@ const CurveLookup = {
|
|
|
86
86
|
["0103840023" /* prime521r1 */]: "P-521" /* p521 */
|
|
87
87
|
};
|
|
88
88
|
function checkDerVersion(type, node, version) {
|
|
89
|
-
const derVersion = node && node._tag === import_DerCodec.DerType.Integer && node._bytes && node._bytes.
|
|
89
|
+
const derVersion = node && node._tag === import_DerCodec.DerType.Integer && node._bytes && node._bytes.byteLength === 1 && import_Bytes.Bytes.of(node._bytes)[0];
|
|
90
90
|
if (derVersion !== version) {
|
|
91
91
|
throw new import_CryptoError.KeyInputError(`${type} key version mismatch`);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
function getDerObjectID(type, node) {
|
|
95
|
-
const id = node && node._tag === import_DerCodec.DerType.ObjectIdentifier && node._bytes?.
|
|
95
|
+
const id = node && node._tag === import_DerCodec.DerType.ObjectIdentifier && node._bytes?.byteLength > 1 && node._bytes;
|
|
96
96
|
if (id) return id;
|
|
97
97
|
throw new import_CryptoError.KeyInputError(`Missing object in ${type} key`);
|
|
98
98
|
}
|
|
@@ -103,7 +103,7 @@ function getDerCurve(type, node) {
|
|
|
103
103
|
throw new import_CryptoError.KeyInputError(`Unsupported ${type} EC curve`);
|
|
104
104
|
}
|
|
105
105
|
function getDerKey(type, node, derType = import_DerCodec.DerType.OctetString) {
|
|
106
|
-
const key = node && node._tag === derType && node._bytes?.
|
|
106
|
+
const key = node && node._tag === derType && node._bytes?.byteLength > 1 && node._bytes;
|
|
107
107
|
if (key) return key;
|
|
108
108
|
throw new import_MatterError.MatterError(`Missing ${type} key node`);
|
|
109
109
|
}
|
|
@@ -171,10 +171,11 @@ var Translators;
|
|
|
171
171
|
};
|
|
172
172
|
Translators2.publicBits = {
|
|
173
173
|
set: function(input) {
|
|
174
|
-
|
|
174
|
+
const data = import_Bytes.Bytes.of(input);
|
|
175
|
+
if (!(data.length % 2)) {
|
|
175
176
|
throw new import_CryptoError.KeyInputError("Invalid public key encoding");
|
|
176
177
|
}
|
|
177
|
-
switch (
|
|
178
|
+
switch (data[0]) {
|
|
178
179
|
case 2:
|
|
179
180
|
case 3:
|
|
180
181
|
throw new import_CryptoError.KeyInputError("Unsupported public key compression");
|
|
@@ -183,17 +184,17 @@ var Translators;
|
|
|
183
184
|
case 5:
|
|
184
185
|
throw new import_CryptoError.KeyInputError("Illegal public key format specifier");
|
|
185
186
|
}
|
|
186
|
-
const coordinateLength = (
|
|
187
|
+
const coordinateLength = (data.length - 1) / 2;
|
|
187
188
|
inferCurve(this, coordinateLength);
|
|
188
189
|
this.type = "EC" /* EC */;
|
|
189
|
-
this.xBits =
|
|
190
|
-
this.yBits =
|
|
190
|
+
this.xBits = data.slice(1, coordinateLength + 1);
|
|
191
|
+
this.yBits = data.slice(coordinateLength + 1);
|
|
191
192
|
},
|
|
192
193
|
get: function() {
|
|
193
194
|
if (this.xBits === void 0 || this.yBits === void 0) {
|
|
194
195
|
return void 0;
|
|
195
196
|
}
|
|
196
|
-
return new Uint8Array([4,
|
|
197
|
+
return import_Bytes.Bytes.concat(new Uint8Array([4]), this.xBits, this.yBits);
|
|
197
198
|
}
|
|
198
199
|
};
|
|
199
200
|
Translators2.keyPairBits = {
|
|
@@ -208,8 +209,8 @@ var Translators;
|
|
|
208
209
|
return;
|
|
209
210
|
}
|
|
210
211
|
return {
|
|
211
|
-
publicKey: publicBits2,
|
|
212
|
-
privateKey: privateBits
|
|
212
|
+
publicKey: import_Bytes.Bytes.of(publicBits2),
|
|
213
|
+
privateKey: import_Bytes.Bytes.of(privateBits)
|
|
213
214
|
};
|
|
214
215
|
}
|
|
215
216
|
};
|
|
@@ -308,15 +309,15 @@ function Key(properties) {
|
|
|
308
309
|
default:
|
|
309
310
|
throw new import_CryptoError.KeyInputError(`Unsupported elliptic curve ${crv}`);
|
|
310
311
|
}
|
|
311
|
-
const ecKey = Point.fromPrivateKey(that.privateKey);
|
|
312
|
+
const ecKey = Point.fromPrivateKey(import_Bytes.Bytes.of(that.privateKey));
|
|
312
313
|
that.xBits = numberToBytesBE(ecKey.x, keyLength);
|
|
313
314
|
that.yBits = numberToBytesBE(ecKey.y, keyLength);
|
|
314
315
|
}
|
|
315
316
|
if (that.type === "EC" /* EC */) {
|
|
316
317
|
if (that.d) {
|
|
317
|
-
inferCurve(that, that.privateKey.
|
|
318
|
+
inferCurve(that, that.privateKey.byteLength);
|
|
318
319
|
} else if (that.xBits) {
|
|
319
|
-
inferCurve(that, that.xBits.
|
|
320
|
+
inferCurve(that, that.xBits.byteLength);
|
|
320
321
|
}
|
|
321
322
|
if (that.d && (!that.x || !that.y)) {
|
|
322
323
|
derivePublicFromPrivate();
|
|
@@ -326,7 +327,7 @@ function Key(properties) {
|
|
|
326
327
|
}
|
|
327
328
|
function PrivateKey(privateKey, options) {
|
|
328
329
|
let priv, pub;
|
|
329
|
-
if (
|
|
330
|
+
if (import_Bytes.Bytes.isBytes(privateKey)) {
|
|
330
331
|
priv = privateKey;
|
|
331
332
|
} else {
|
|
332
333
|
priv = privateKey.privateKey;
|
|
@@ -355,6 +356,6 @@ function SymmetricKey(privateKey, options) {
|
|
|
355
356
|
});
|
|
356
357
|
}
|
|
357
358
|
function sharedSecretFor(peerKey) {
|
|
358
|
-
return getSharedSecret(this.privateBits, peerKey.publicBits);
|
|
359
|
+
return import_Bytes.Bytes.of(getSharedSecret(import_Bytes.Bytes.of(this.privateBits), import_Bytes.Bytes.of(peerKey.publicBits)));
|
|
359
360
|
}
|
|
360
361
|
//# sourceMappingURL=Key.js.map
|
|
@@ -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;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;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"}
|
|
@@ -22,6 +22,7 @@ __export(MockCrypto_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(MockCrypto_exports);
|
|
24
24
|
var import_MatterError = require("#MatterError.js");
|
|
25
|
+
var import_Bytes = require("#util/Bytes.js");
|
|
25
26
|
var import_Crypto = require("./Crypto.js");
|
|
26
27
|
var import_Key = require("./Key.js");
|
|
27
28
|
var import_StandardCrypto = require("./StandardCrypto.js");
|
|
@@ -68,7 +69,7 @@ function MockCrypto(index = 128, implementation = import_StandardCrypto.Standard
|
|
|
68
69
|
return result;
|
|
69
70
|
};
|
|
70
71
|
crypto.createKeyPair = function getRandomDataNONENTROPIC() {
|
|
71
|
-
const privateBits = import_Crypto.ec.mapHashToField(
|
|
72
|
+
const privateBits = import_Crypto.ec.mapHashToField(import_Bytes.Bytes.of(crypto.randomBytes(48)), import_Crypto.ec.p256.CURVE.n);
|
|
72
73
|
return (0, import_Key.Key)({
|
|
73
74
|
kty: import_Key.KeyType.EC,
|
|
74
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,oBAA2B;AAC3B,iBAAoD;AACpD,4BAA+B;
|
|
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;AACvF,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
|
}
|
|
@@ -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"}
|
|
@@ -48,7 +48,9 @@ class Spake2p {
|
|
|
48
48
|
static async computeW0W1(crypto, { iterations, salt }, pin) {
|
|
49
49
|
const pinWriter = new import_DataWriter.DataWriter(import_Bytes.Endian.Little);
|
|
50
50
|
pinWriter.writeUInt32(pin);
|
|
51
|
-
const ws =
|
|
51
|
+
const ws = import_Bytes.Bytes.of(
|
|
52
|
+
await crypto.createPbkdf2Key(pinWriter.toByteArray(), salt, iterations, CRYPTO_W_SIZE_BYTES * 2)
|
|
53
|
+
);
|
|
52
54
|
const w0 = mod(bytesToNumberBE(ws.slice(0, 40)), P256_CURVE.n);
|
|
53
55
|
const w1 = mod(bytesToNumberBE(ws.slice(40, 80)), P256_CURVE.n);
|
|
54
56
|
return { w0, w1 };
|
|
@@ -77,7 +79,7 @@ class Spake2p {
|
|
|
77
79
|
return Y.toRawBytes(false);
|
|
78
80
|
}
|
|
79
81
|
async computeSecretAndVerifiersFromY(w1, X, Y) {
|
|
80
|
-
const YPoint = ProjectivePoint.fromHex(Y);
|
|
82
|
+
const YPoint = ProjectivePoint.fromHex(import_Bytes.Bytes.of(Y));
|
|
81
83
|
try {
|
|
82
84
|
YPoint.assertValidity();
|
|
83
85
|
} catch (error) {
|
|
@@ -86,11 +88,11 @@ class Spake2p {
|
|
|
86
88
|
const yNwo = YPoint.add(N.multiply(this.#w0).negate());
|
|
87
89
|
const Z = yNwo.multiply(this.#random);
|
|
88
90
|
const V = yNwo.multiply(w1);
|
|
89
|
-
return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
|
|
91
|
+
return this.computeSecretAndVerifiers(X, Y, import_Bytes.Bytes.of(Z.toRawBytes(false)), import_Bytes.Bytes.of(V.toRawBytes(false)));
|
|
90
92
|
}
|
|
91
93
|
async computeSecretAndVerifiersFromX(L, X, Y) {
|
|
92
|
-
const XPoint = ProjectivePoint.fromHex(X);
|
|
93
|
-
const LPoint = ProjectivePoint.fromHex(L);
|
|
94
|
+
const XPoint = ProjectivePoint.fromHex(import_Bytes.Bytes.of(X));
|
|
95
|
+
const LPoint = ProjectivePoint.fromHex(import_Bytes.Bytes.of(L));
|
|
94
96
|
try {
|
|
95
97
|
XPoint.assertValidity();
|
|
96
98
|
} catch (error) {
|
|
@@ -98,13 +100,15 @@ class Spake2p {
|
|
|
98
100
|
}
|
|
99
101
|
const Z = XPoint.add(M.multiply(this.#w0).negate()).multiply(this.#random);
|
|
100
102
|
const V = LPoint.multiply(this.#random);
|
|
101
|
-
return this.computeSecretAndVerifiers(X, Y, Z.toRawBytes(false), V.toRawBytes(false));
|
|
103
|
+
return this.computeSecretAndVerifiers(X, Y, import_Bytes.Bytes.of(Z.toRawBytes(false)), import_Bytes.Bytes.of(V.toRawBytes(false)));
|
|
102
104
|
}
|
|
103
105
|
async computeSecretAndVerifiers(X, Y, Z, V) {
|
|
104
|
-
const TT_HASH = await this.computeTranscriptHash(X, Y, Z, V);
|
|
106
|
+
const TT_HASH = import_Bytes.Bytes.of(await this.computeTranscriptHash(X, Y, Z, V));
|
|
105
107
|
const Ka = TT_HASH.slice(0, 16);
|
|
106
108
|
const Ke = TT_HASH.slice(16, 32);
|
|
107
|
-
const KcAB =
|
|
109
|
+
const KcAB = import_Bytes.Bytes.of(
|
|
110
|
+
await this.#crypto.createHkdfKey(Ka, new Uint8Array(0), import_Bytes.Bytes.fromString("ConfirmationKeys"), 32)
|
|
111
|
+
);
|
|
108
112
|
const KcA = KcAB.slice(0, 16);
|
|
109
113
|
const KcB = KcAB.slice(16, 32);
|
|
110
114
|
const hAY = await this.#crypto.signHmac(KcA, Y);
|
|
@@ -116,8 +120,8 @@ class Spake2p {
|
|
|
116
120
|
this.addToContext(TTwriter, this.#context);
|
|
117
121
|
this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
|
|
118
122
|
this.addToContext(TTwriter, import_Bytes.Bytes.fromString(""));
|
|
119
|
-
this.addToContext(TTwriter, M.toRawBytes(false));
|
|
120
|
-
this.addToContext(TTwriter, N.toRawBytes(false));
|
|
123
|
+
this.addToContext(TTwriter, import_Bytes.Bytes.of(M.toRawBytes(false)));
|
|
124
|
+
this.addToContext(TTwriter, import_Bytes.Bytes.of(N.toRawBytes(false)));
|
|
121
125
|
this.addToContext(TTwriter, X);
|
|
122
126
|
this.addToContext(TTwriter, Y);
|
|
123
127
|
this.addToContext(TTwriter, Z);
|
|
@@ -126,7 +130,7 @@ class Spake2p {
|
|
|
126
130
|
return this.#crypto.computeSha256(TTwriter.toByteArray());
|
|
127
131
|
}
|
|
128
132
|
addToContext(TTwriter, data) {
|
|
129
|
-
TTwriter.writeUInt64(data.
|
|
133
|
+
TTwriter.writeUInt64(data.byteLength);
|
|
130
134
|
TTwriter.writeByteArray(data);
|
|
131
135
|
}
|
|
132
136
|
}
|
|
@@ -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,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,iDAA0B;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,6BAAW,oBAAO,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"}
|
|
@@ -76,49 +76,55 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
76
76
|
}
|
|
77
77
|
encrypt(key, data, nonce, associatedData) {
|
|
78
78
|
const ccm = (0, import_Ccm.Ccm)(key);
|
|
79
|
-
return ccm.encrypt({
|
|
79
|
+
return ccm.encrypt({
|
|
80
|
+
pt: import_Bytes.Bytes.of(data),
|
|
81
|
+
nonce: import_Bytes.Bytes.of(nonce),
|
|
82
|
+
adata: associatedData !== void 0 ? import_Bytes.Bytes.of(associatedData) : void 0
|
|
83
|
+
});
|
|
80
84
|
}
|
|
81
85
|
decrypt(key, data, nonce, associatedData) {
|
|
82
86
|
const ccm = (0, import_Ccm.Ccm)(key);
|
|
83
|
-
return ccm.decrypt({
|
|
87
|
+
return ccm.decrypt({
|
|
88
|
+
ct: import_Bytes.Bytes.of(data),
|
|
89
|
+
nonce: import_Bytes.Bytes.of(nonce),
|
|
90
|
+
adata: associatedData !== void 0 ? import_Bytes.Bytes.of(associatedData) : void 0
|
|
91
|
+
});
|
|
84
92
|
}
|
|
85
|
-
|
|
93
|
+
computeSha256(buffer) {
|
|
86
94
|
if (Array.isArray(buffer)) {
|
|
87
95
|
buffer = import_Bytes.Bytes.concat(...buffer);
|
|
88
96
|
}
|
|
89
|
-
return
|
|
97
|
+
return this.#subtle.digest("SHA-256", import_Bytes.Bytes.exclusive(buffer));
|
|
90
98
|
}
|
|
91
99
|
async createPbkdf2Key(secret, salt, iteration, keyLength) {
|
|
92
100
|
const key = await this.importKey("raw", secret, "PBKDF2", false, ["deriveBits"]);
|
|
93
|
-
|
|
101
|
+
return this.#subtle.deriveBits(
|
|
94
102
|
{
|
|
95
103
|
name: "PBKDF2",
|
|
96
104
|
hash: "SHA-256",
|
|
97
|
-
salt,
|
|
105
|
+
salt: import_Bytes.Bytes.exclusive(salt),
|
|
98
106
|
iterations: iteration
|
|
99
107
|
},
|
|
100
108
|
key,
|
|
101
109
|
keyLength * 8
|
|
102
110
|
);
|
|
103
|
-
return new Uint8Array(bits);
|
|
104
111
|
}
|
|
105
112
|
async createHkdfKey(secret, salt, info, length = import_Crypto.CRYPTO_SYMMETRIC_KEY_LENGTH) {
|
|
106
113
|
const key = await this.importKey("raw", secret, "HKDF", false, ["deriveBits"]);
|
|
107
|
-
|
|
114
|
+
return this.#subtle.deriveBits(
|
|
108
115
|
{
|
|
109
116
|
name: "HKDF",
|
|
110
117
|
hash: "SHA-256",
|
|
111
|
-
salt,
|
|
112
|
-
info
|
|
118
|
+
salt: import_Bytes.Bytes.exclusive(salt),
|
|
119
|
+
info: import_Bytes.Bytes.exclusive(info)
|
|
113
120
|
},
|
|
114
121
|
key,
|
|
115
122
|
8 * length
|
|
116
123
|
);
|
|
117
|
-
return new Uint8Array(bits);
|
|
118
124
|
}
|
|
119
125
|
async signHmac(secret, data) {
|
|
120
126
|
const key = await this.importKey("raw", secret, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
121
|
-
return
|
|
127
|
+
return this.#subtle.sign("HMAC", key, import_Bytes.Bytes.exclusive(data));
|
|
122
128
|
}
|
|
123
129
|
async signEcdsa(key, data, dsaEncoding) {
|
|
124
130
|
if (Array.isArray(data)) {
|
|
@@ -136,8 +142,8 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
136
142
|
key_ops: ["sign"]
|
|
137
143
|
};
|
|
138
144
|
const subtleKey = await this.importKey("jwk", key, SIGNATURE_ALGORITHM, false, ["sign"]);
|
|
139
|
-
const ieeeP1363 = await this.#subtle.sign(SIGNATURE_ALGORITHM, subtleKey, data);
|
|
140
|
-
if (dsaEncoding !== "der") return
|
|
145
|
+
const ieeeP1363 = import_Bytes.Bytes.of(await this.#subtle.sign(SIGNATURE_ALGORITHM, subtleKey, import_Bytes.Bytes.exclusive(data)));
|
|
146
|
+
if (dsaEncoding !== "der") return ieeeP1363;
|
|
141
147
|
const bytesPerComponent = ieeeP1363.byteLength / 2;
|
|
142
148
|
return import_DerCodec.DerCodec.encode({
|
|
143
149
|
r: (0, import_DerCodec.DerBigUint)(ieeeP1363.slice(0, bytesPerComponent)),
|
|
@@ -159,7 +165,12 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
159
165
|
throw new import_CryptoError.CryptoVerifyError("Invalid DER signature", { cause });
|
|
160
166
|
}
|
|
161
167
|
}
|
|
162
|
-
const verified = await this.#subtle.verify(
|
|
168
|
+
const verified = await this.#subtle.verify(
|
|
169
|
+
SIGNATURE_ALGORITHM,
|
|
170
|
+
subtleKey,
|
|
171
|
+
import_Bytes.Bytes.exclusive(signature),
|
|
172
|
+
import_Bytes.Bytes.exclusive(data)
|
|
173
|
+
);
|
|
163
174
|
if (!verified) {
|
|
164
175
|
throw new import_CryptoError.CryptoVerifyError("Signature verification failed");
|
|
165
176
|
}
|
|
@@ -209,7 +220,7 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
209
220
|
false,
|
|
210
221
|
[]
|
|
211
222
|
);
|
|
212
|
-
|
|
223
|
+
return this.#subtle.deriveBits(
|
|
213
224
|
{
|
|
214
225
|
name: "ECDH",
|
|
215
226
|
public: subtlePeerKey
|
|
@@ -217,7 +228,6 @@ class StandardCrypto extends import_Crypto.Crypto {
|
|
|
217
228
|
subtleKey,
|
|
218
229
|
256
|
|
219
230
|
);
|
|
220
|
-
return new Uint8Array(secret);
|
|
221
231
|
}
|
|
222
232
|
async importKey(format, keyData, algorithm, extractable, keyUsages) {
|
|
223
233
|
try {
|