@blerpc/protocol-rn 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/commandPacket.js +5 -2
- package/dist/commandPacket.js.map +1 -1
- package/dist/container.d.ts +1 -1
- package/dist/container.js +6 -0
- package/dist/container.js.map +1 -1
- package/dist/containerAssembler.d.ts +1 -1
- package/dist/containerSplitter.d.ts +1 -1
- package/dist/controlContainers.d.ts +1 -1
- package/dist/crypto.d.ts +33 -1
- package/dist/crypto.js +66 -23
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# blerpc-protocol-rn
|
|
2
|
+
|
|
3
|
+
BLE RPC protocol library for TypeScript/React Native.
|
|
4
|
+
|
|
5
|
+
Part of the [bleRPC](https://blerpc.net) project.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
TypeScript implementation of the bleRPC binary protocol:
|
|
10
|
+
|
|
11
|
+
- Container fragmentation and reassembly with MTU-aware splitting
|
|
12
|
+
- Command packet encoding/decoding with protobuf payload support
|
|
13
|
+
- Control messages (timeout, stream end, capabilities, error)
|
|
14
|
+
- **Encryption layer** — E2E encryption with X25519 key exchange, Ed25519 signatures, and AES-128-GCM
|
|
15
|
+
|
|
16
|
+
No external crypto dependencies beyond `@noble` libraries.
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
npm install @blerpc/protocol-rn
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Encryption
|
|
25
|
+
|
|
26
|
+
The library provides E2E encryption using a 4-step key exchange protocol (X25519 ECDH + Ed25519 signatures) and AES-128-GCM session encryption.
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { centralPerformKeyExchange, BlerpcCryptoSession } from '@blerpc/protocol-rn';
|
|
30
|
+
|
|
31
|
+
// Perform key exchange (central side)
|
|
32
|
+
const session = await centralPerformKeyExchange(bleSend, bleReceive);
|
|
33
|
+
|
|
34
|
+
// Encrypt outgoing commands
|
|
35
|
+
const ciphertext = session.encrypt(plaintext);
|
|
36
|
+
|
|
37
|
+
// Decrypt incoming commands
|
|
38
|
+
const plaintext = session.decrypt(ciphertext);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Requirements
|
|
42
|
+
|
|
43
|
+
- Node.js 18+
|
|
44
|
+
- TypeScript 5.0+
|
|
45
|
+
- React Native 0.71+
|
|
46
|
+
|
|
47
|
+
## License
|
|
48
|
+
|
|
49
|
+
[Apache-2.0](LICENSE)
|
package/dist/commandPacket.js
CHANGED
|
@@ -18,7 +18,7 @@ var CommandType;
|
|
|
18
18
|
CommandType[CommandType["RESPONSE"] = 1] = "RESPONSE";
|
|
19
19
|
})(CommandType || (exports.CommandType = CommandType = {}));
|
|
20
20
|
const textEncoder = new TextEncoder();
|
|
21
|
-
const textDecoder = new TextDecoder(
|
|
21
|
+
const textDecoder = new TextDecoder('utf-8');
|
|
22
22
|
/** A single command packet. */
|
|
23
23
|
class CommandPacket {
|
|
24
24
|
constructor(params) {
|
|
@@ -61,13 +61,16 @@ class CommandPacket {
|
|
|
61
61
|
const cmdNameLen = data[1];
|
|
62
62
|
let offset = 2;
|
|
63
63
|
if (data.length < offset + cmdNameLen + 2) {
|
|
64
|
-
throw new Error(
|
|
64
|
+
throw new Error('Command packet truncated');
|
|
65
65
|
}
|
|
66
66
|
const cmdName = textDecoder.decode(data.slice(offset, offset + cmdNameLen));
|
|
67
67
|
offset += cmdNameLen;
|
|
68
68
|
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
69
69
|
const dataLen = view.getUint16(offset, true);
|
|
70
70
|
offset += 2;
|
|
71
|
+
if (data.length < offset + dataLen) {
|
|
72
|
+
throw new Error(`Command packet data truncated: need ${offset + dataLen}, got ${data.length}`);
|
|
73
|
+
}
|
|
71
74
|
const payload = data.slice(offset, offset + dataLen);
|
|
72
75
|
return new CommandPacket({
|
|
73
76
|
cmdType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandPacket.js","sourceRoot":"","sources":["../src/commandPacket.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"commandPacket.js","sourceRoot":"","sources":["../src/commandPacket.ts"],"names":[],"mappings":"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"}
|
package/dist/container.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContainerType, ControlCmd } from
|
|
1
|
+
import { ContainerType, ControlCmd } from './containerTypes';
|
|
2
2
|
/** Pack type(2) | control_cmd(4) | reserved(2) into a single byte. */
|
|
3
3
|
export declare function packFlags(type: ContainerType, cmd?: ControlCmd): number;
|
|
4
4
|
/** Unpack flags byte into [type, controlCmd]. */
|
package/dist/container.js
CHANGED
|
@@ -77,6 +77,9 @@ class Container {
|
|
|
77
77
|
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
78
78
|
const totalLength = view.getUint16(3, true);
|
|
79
79
|
const payloadLen = data[5];
|
|
80
|
+
if (data.length < containerTypes_1.FIRST_HEADER_SIZE + payloadLen) {
|
|
81
|
+
throw new Error(`FIRST container payload truncated: need ${containerTypes_1.FIRST_HEADER_SIZE + payloadLen}, got ${data.length}`);
|
|
82
|
+
}
|
|
80
83
|
const payload = data.slice(containerTypes_1.FIRST_HEADER_SIZE, containerTypes_1.FIRST_HEADER_SIZE + payloadLen);
|
|
81
84
|
return new Container({
|
|
82
85
|
transactionId,
|
|
@@ -89,6 +92,9 @@ class Container {
|
|
|
89
92
|
}
|
|
90
93
|
else {
|
|
91
94
|
const payloadLen = data[3];
|
|
95
|
+
if (data.length < containerTypes_1.SUBSEQUENT_HEADER_SIZE + payloadLen) {
|
|
96
|
+
throw new Error(`Container payload truncated: need ${containerTypes_1.SUBSEQUENT_HEADER_SIZE + payloadLen}, got ${data.length}`);
|
|
97
|
+
}
|
|
92
98
|
const payload = data.slice(containerTypes_1.SUBSEQUENT_HEADER_SIZE, containerTypes_1.SUBSEQUENT_HEADER_SIZE + payloadLen);
|
|
93
99
|
return new Container({
|
|
94
100
|
transactionId,
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Container } from
|
|
1
|
+
import { Container } from './container';
|
|
2
2
|
/** Create a timeout request control container (Central -> Peripheral). */
|
|
3
3
|
export declare function makeTimeoutRequest(transactionId: number, sequenceNumber?: number): Container;
|
|
4
4
|
/** Create a timeout response control container (Peripheral -> Central). */
|
package/dist/crypto.d.ts
CHANGED
|
@@ -141,9 +141,41 @@ export declare class PeripheralKeyExchange {
|
|
|
141
141
|
/** Reset key exchange state for new connection. */
|
|
142
142
|
reset(): void;
|
|
143
143
|
}
|
|
144
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
* TOFU (Trust On First Use) store for peripheral Ed25519 identity keys.
|
|
146
|
+
*
|
|
147
|
+
* The E2E handshake signature binds only the ephemeral X25519 keys, not the
|
|
148
|
+
* peripheral's long-term identity key, so MitM resistance depends on the
|
|
149
|
+
* central pinning that identity. Implementations supply platform-appropriate
|
|
150
|
+
* persistence (AsyncStorage, …); this library owns the pinning policy and
|
|
151
|
+
* logic ({@link tofuVerify}).
|
|
152
|
+
*/
|
|
153
|
+
export interface KnownKeyStore {
|
|
154
|
+
/** Stored hex-encoded Ed25519 public key for `deviceId`, or null if unknown. */
|
|
155
|
+
get(deviceId: string): string | null | undefined;
|
|
156
|
+
/** Persist the hex-encoded Ed25519 public key for `deviceId`. */
|
|
157
|
+
put(deviceId: string, hexEd25519Pubkey: string): void;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* TOFU verification against a {@link KnownKeyStore}: trust (and pin) the key on
|
|
161
|
+
* first use, and reject a key that differs from the pinned one afterwards.
|
|
162
|
+
*/
|
|
163
|
+
export declare function tofuVerify(store: KnownKeyStore, deviceId: string, ed25519Pubkey: Uint8Array): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Perform the 4-step central key exchange using send/receive callbacks.
|
|
166
|
+
*
|
|
167
|
+
* Identity pinning is **on by default** (fail-closed): pass `knownKeys` and
|
|
168
|
+
* `deviceId` to pin the peripheral's Ed25519 identity (TOFU), or set
|
|
169
|
+
* `pinIdentity` to false to opt out (encrypted but NOT authenticated).
|
|
170
|
+
* `verifyKeyCb` is an escape hatch for custom verification and takes
|
|
171
|
+
* precedence when provided. Throws if pinning is on (the default) but no
|
|
172
|
+
* `knownKeys`/`deviceId` and no `verifyKeyCb` were supplied.
|
|
173
|
+
*/
|
|
145
174
|
export declare function centralPerformKeyExchange(options: {
|
|
146
175
|
send: (payload: Uint8Array) => Promise<void>;
|
|
147
176
|
receive: () => Promise<Uint8Array>;
|
|
177
|
+
knownKeys?: KnownKeyStore;
|
|
178
|
+
deviceId?: string;
|
|
179
|
+
pinIdentity?: boolean;
|
|
148
180
|
verifyKeyCb?: (key: Uint8Array) => boolean;
|
|
149
181
|
}): Promise<BlerpcCryptoSession>;
|
package/dist/crypto.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// E2E encryption for blerpc using X25519, Ed25519, AES-128-GCM, HKDF-SHA256.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.PeripheralKeyExchange = exports.CentralKeyExchange = exports.BlerpcCryptoSession = exports.BlerpcCrypto = exports.KEY_EXCHANGE_STEP4 = exports.KEY_EXCHANGE_STEP3 = exports.KEY_EXCHANGE_STEP2 = exports.KEY_EXCHANGE_STEP1 = exports.CONFIRM_PERIPHERAL = exports.CONFIRM_CENTRAL = exports.DIRECTION_P2C = exports.DIRECTION_C2P = void 0;
|
|
5
|
+
exports.tofuVerify = tofuVerify;
|
|
5
6
|
exports.centralPerformKeyExchange = centralPerformKeyExchange;
|
|
6
7
|
const ed25519_1 = require("@noble/curves/ed25519");
|
|
7
8
|
const ed25519_2 = require("@noble/curves/ed25519");
|
|
@@ -14,8 +15,8 @@ exports.DIRECTION_C2P = 0x00;
|
|
|
14
15
|
exports.DIRECTION_P2C = 0x01;
|
|
15
16
|
// Confirmation plaintexts
|
|
16
17
|
const encoder = new TextEncoder();
|
|
17
|
-
exports.CONFIRM_CENTRAL = encoder.encode(
|
|
18
|
-
exports.CONFIRM_PERIPHERAL = encoder.encode(
|
|
18
|
+
exports.CONFIRM_CENTRAL = encoder.encode('BLERPC_CONFIRM_C');
|
|
19
|
+
exports.CONFIRM_PERIPHERAL = encoder.encode('BLERPC_CONFIRM_P');
|
|
19
20
|
// Key exchange step constants
|
|
20
21
|
exports.KEY_EXCHANGE_STEP1 = 0x01;
|
|
21
22
|
exports.KEY_EXCHANGE_STEP2 = 0x02;
|
|
@@ -64,7 +65,7 @@ class BlerpcCrypto {
|
|
|
64
65
|
*/
|
|
65
66
|
static deriveSessionKey(sharedSecret, centralPubkey, peripheralPubkey) {
|
|
66
67
|
const salt = concatBytes(centralPubkey, peripheralPubkey);
|
|
67
|
-
const info = encoder.encode(
|
|
68
|
+
const info = encoder.encode('blerpc-session-key');
|
|
68
69
|
return (0, hkdf_1.hkdf)(sha256_1.sha256, sharedSecret, salt, info, 16);
|
|
69
70
|
}
|
|
70
71
|
/** Generate an Ed25519 key pair. Returns [privateKey(32), publicKey(32)]. */
|
|
@@ -164,7 +165,7 @@ class BlerpcCrypto {
|
|
|
164
165
|
/** Parse KEY_EXCHANGE step 1 payload. Returns central_x25519_pubkey (32 bytes). */
|
|
165
166
|
static parseStep1Payload(data) {
|
|
166
167
|
if (data.length < 33 || data[0] !== exports.KEY_EXCHANGE_STEP1) {
|
|
167
|
-
throw new Error(
|
|
168
|
+
throw new Error('Invalid step 1 payload');
|
|
168
169
|
}
|
|
169
170
|
return data.slice(1, 33);
|
|
170
171
|
}
|
|
@@ -178,7 +179,7 @@ class BlerpcCrypto {
|
|
|
178
179
|
/** Parse KEY_EXCHANGE step 2 payload. Returns [peripheral_x25519_pubkey, signature, peripheral_ed25519_pubkey]. */
|
|
179
180
|
static parseStep2Payload(data) {
|
|
180
181
|
if (data.length < 129 || data[0] !== exports.KEY_EXCHANGE_STEP2) {
|
|
181
|
-
throw new Error(
|
|
182
|
+
throw new Error('Invalid step 2 payload');
|
|
182
183
|
}
|
|
183
184
|
return [data.slice(1, 33), data.slice(33, 97), data.slice(97, 129)];
|
|
184
185
|
}
|
|
@@ -189,7 +190,7 @@ class BlerpcCrypto {
|
|
|
189
190
|
/** Parse KEY_EXCHANGE step 3 payload. Returns the encrypted confirmation (44 bytes). */
|
|
190
191
|
static parseStep3Payload(data) {
|
|
191
192
|
if (data.length < 45 || data[0] !== exports.KEY_EXCHANGE_STEP3) {
|
|
192
|
-
throw new Error(
|
|
193
|
+
throw new Error('Invalid step 3 payload');
|
|
193
194
|
}
|
|
194
195
|
return data.slice(1, 45);
|
|
195
196
|
}
|
|
@@ -200,7 +201,7 @@ class BlerpcCrypto {
|
|
|
200
201
|
/** Parse KEY_EXCHANGE step 4 payload. Returns the encrypted confirmation (44 bytes). */
|
|
201
202
|
static parseStep4Payload(data) {
|
|
202
203
|
if (data.length < 45 || data[0] !== exports.KEY_EXCHANGE_STEP4) {
|
|
203
|
-
throw new Error(
|
|
204
|
+
throw new Error('Invalid step 4 payload');
|
|
204
205
|
}
|
|
205
206
|
return data.slice(1, 45);
|
|
206
207
|
}
|
|
@@ -220,7 +221,7 @@ class BlerpcCryptoSession {
|
|
|
220
221
|
/** Encrypt plaintext with auto-incrementing TX counter. */
|
|
221
222
|
encrypt(plaintext) {
|
|
222
223
|
if (this.txCounter >= 0xffffffff) {
|
|
223
|
-
throw new Error(
|
|
224
|
+
throw new Error('TX counter overflow: session must be rekeyed');
|
|
224
225
|
}
|
|
225
226
|
const encrypted = BlerpcCrypto.encryptCommand(this._sessionKey, this.txCounter, this._txDirection, plaintext);
|
|
226
227
|
this.txCounter++;
|
|
@@ -257,7 +258,7 @@ class CentralKeyExchange {
|
|
|
257
258
|
/** Generate ephemeral X25519 keypair and return step 1 payload. */
|
|
258
259
|
start() {
|
|
259
260
|
if (this._state !== 0)
|
|
260
|
-
throw new Error(
|
|
261
|
+
throw new Error('Invalid state for start()');
|
|
261
262
|
const [priv, pub] = BlerpcCrypto.generateX25519KeyPair();
|
|
262
263
|
this._x25519PrivKey = priv;
|
|
263
264
|
this._x25519Pubkey = pub;
|
|
@@ -267,15 +268,15 @@ class CentralKeyExchange {
|
|
|
267
268
|
/** Parse step 2, verify signature, derive session key, return step 3 payload. */
|
|
268
269
|
processStep2(step2Payload, verifyKeyCb) {
|
|
269
270
|
if (this._state !== 1)
|
|
270
|
-
throw new Error(
|
|
271
|
+
throw new Error('Invalid state for processStep2()');
|
|
271
272
|
const [periphX25519Pub, signature, periphEd25519Pub] = BlerpcCrypto.parseStep2Payload(step2Payload);
|
|
272
273
|
const signMsg = concatBytes(this._x25519Pubkey, periphX25519Pub);
|
|
273
274
|
const valid = BlerpcCrypto.ed25519Verify(periphEd25519Pub, signMsg, signature);
|
|
274
275
|
if (!valid) {
|
|
275
|
-
throw new Error(
|
|
276
|
+
throw new Error('Ed25519 signature verification failed');
|
|
276
277
|
}
|
|
277
278
|
if (verifyKeyCb && !verifyKeyCb(periphEd25519Pub)) {
|
|
278
|
-
throw new Error(
|
|
279
|
+
throw new Error('Peripheral key rejected by verify callback');
|
|
279
280
|
}
|
|
280
281
|
const sharedSecret = BlerpcCrypto.x25519SharedSecret(this._x25519PrivKey, periphX25519Pub);
|
|
281
282
|
this._sessionKey = BlerpcCrypto.deriveSessionKey(sharedSecret, this._x25519Pubkey, periphX25519Pub);
|
|
@@ -286,11 +287,11 @@ class CentralKeyExchange {
|
|
|
286
287
|
/** Parse step 4, verify peripheral confirmation, return session. */
|
|
287
288
|
finish(step4Payload) {
|
|
288
289
|
if (this._state !== 2)
|
|
289
|
-
throw new Error(
|
|
290
|
+
throw new Error('Invalid state for finish()');
|
|
290
291
|
const encryptedPeriph = BlerpcCrypto.parseStep4Payload(step4Payload);
|
|
291
292
|
const plaintext = BlerpcCrypto.decryptConfirmation(this._sessionKey, encryptedPeriph);
|
|
292
293
|
if (!uint8ArrayEquals(plaintext, exports.CONFIRM_PERIPHERAL)) {
|
|
293
|
-
throw new Error(
|
|
294
|
+
throw new Error('Peripheral confirmation mismatch');
|
|
294
295
|
}
|
|
295
296
|
return new BlerpcCryptoSession(this._sessionKey, true);
|
|
296
297
|
}
|
|
@@ -318,7 +319,7 @@ class PeripheralKeyExchange {
|
|
|
318
319
|
/** Parse step 1, generate ephemeral X25519 keypair, sign, derive session key, return step 2 payload. */
|
|
319
320
|
processStep1(step1Payload) {
|
|
320
321
|
if (this._state !== 0)
|
|
321
|
-
throw new Error(
|
|
322
|
+
throw new Error('Invalid state for processStep1()');
|
|
322
323
|
const centralX25519Pub = BlerpcCrypto.parseStep1Payload(step1Payload);
|
|
323
324
|
const [x25519Priv, x25519Pub] = BlerpcCrypto.generateX25519KeyPair();
|
|
324
325
|
const signMsg = concatBytes(centralX25519Pub, x25519Pub);
|
|
@@ -331,11 +332,11 @@ class PeripheralKeyExchange {
|
|
|
331
332
|
/** Parse step 3, verify confirmation, return [step4Payload, session]. */
|
|
332
333
|
processStep3(step3Payload) {
|
|
333
334
|
if (this._state !== 1)
|
|
334
|
-
throw new Error(
|
|
335
|
+
throw new Error('Invalid state for processStep3()');
|
|
335
336
|
const encrypted = BlerpcCrypto.parseStep3Payload(step3Payload);
|
|
336
337
|
const plaintext = BlerpcCrypto.decryptConfirmation(this._sessionKey, encrypted);
|
|
337
338
|
if (!uint8ArrayEquals(plaintext, exports.CONFIRM_CENTRAL)) {
|
|
338
|
-
throw new Error(
|
|
339
|
+
throw new Error('Central confirmation mismatch');
|
|
339
340
|
}
|
|
340
341
|
const encryptedConfirm = BlerpcCrypto.encryptConfirmation(this._sessionKey, exports.CONFIRM_PERIPHERAL);
|
|
341
342
|
const step4 = BlerpcCrypto.buildStep4Payload(encryptedConfirm);
|
|
@@ -348,23 +349,23 @@ class PeripheralKeyExchange {
|
|
|
348
349
|
*/
|
|
349
350
|
handleStep(payload) {
|
|
350
351
|
if (payload.length === 0) {
|
|
351
|
-
throw new Error(
|
|
352
|
+
throw new Error('Empty key exchange payload');
|
|
352
353
|
}
|
|
353
354
|
const step = payload[0];
|
|
354
355
|
if (step === exports.KEY_EXCHANGE_STEP1) {
|
|
355
356
|
if (this._state !== 0)
|
|
356
|
-
throw new Error(
|
|
357
|
+
throw new Error('Invalid state for step 1');
|
|
357
358
|
const response = this.processStep1(payload);
|
|
358
359
|
return [response, null];
|
|
359
360
|
}
|
|
360
361
|
else if (step === exports.KEY_EXCHANGE_STEP3) {
|
|
361
362
|
if (this._state !== 1)
|
|
362
|
-
throw new Error(
|
|
363
|
+
throw new Error('Invalid state for step 3');
|
|
363
364
|
const [step4, session] = this.processStep3(payload);
|
|
364
365
|
return [step4, session];
|
|
365
366
|
}
|
|
366
367
|
else {
|
|
367
|
-
throw new Error(`Invalid key exchange step: 0x${step.toString(16).padStart(2,
|
|
368
|
+
throw new Error(`Invalid key exchange step: 0x${step.toString(16).padStart(2, '0')}`);
|
|
368
369
|
}
|
|
369
370
|
}
|
|
370
371
|
/** Reset key exchange state for new connection. */
|
|
@@ -374,8 +375,50 @@ class PeripheralKeyExchange {
|
|
|
374
375
|
}
|
|
375
376
|
}
|
|
376
377
|
exports.PeripheralKeyExchange = PeripheralKeyExchange;
|
|
377
|
-
/**
|
|
378
|
+
/**
|
|
379
|
+
* TOFU verification against a {@link KnownKeyStore}: trust (and pin) the key on
|
|
380
|
+
* first use, and reject a key that differs from the pinned one afterwards.
|
|
381
|
+
*/
|
|
382
|
+
function tofuVerify(store, deviceId, ed25519Pubkey) {
|
|
383
|
+
const hex = Array.from(ed25519Pubkey)
|
|
384
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
385
|
+
.join('');
|
|
386
|
+
const stored = store.get(deviceId);
|
|
387
|
+
if (stored == null) {
|
|
388
|
+
store.put(deviceId, hex);
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
391
|
+
return stored === hex;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Perform the 4-step central key exchange using send/receive callbacks.
|
|
395
|
+
*
|
|
396
|
+
* Identity pinning is **on by default** (fail-closed): pass `knownKeys` and
|
|
397
|
+
* `deviceId` to pin the peripheral's Ed25519 identity (TOFU), or set
|
|
398
|
+
* `pinIdentity` to false to opt out (encrypted but NOT authenticated).
|
|
399
|
+
* `verifyKeyCb` is an escape hatch for custom verification and takes
|
|
400
|
+
* precedence when provided. Throws if pinning is on (the default) but no
|
|
401
|
+
* `knownKeys`/`deviceId` and no `verifyKeyCb` were supplied.
|
|
402
|
+
*/
|
|
378
403
|
async function centralPerformKeyExchange(options) {
|
|
404
|
+
const pinIdentity = options.pinIdentity ?? true;
|
|
405
|
+
let effectiveVerifyCb;
|
|
406
|
+
if (options.verifyKeyCb) {
|
|
407
|
+
effectiveVerifyCb = options.verifyKeyCb;
|
|
408
|
+
}
|
|
409
|
+
else if (!pinIdentity) {
|
|
410
|
+
effectiveVerifyCb = undefined;
|
|
411
|
+
}
|
|
412
|
+
else if (options.knownKeys && options.deviceId != null) {
|
|
413
|
+
const store = options.knownKeys;
|
|
414
|
+
const id = options.deviceId;
|
|
415
|
+
effectiveVerifyCb = (pub) => tofuVerify(store, id, pub);
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
throw new Error('Identity pinning is on by default but no KnownKeyStore/deviceId was ' +
|
|
419
|
+
'provided. Pass knownKeys and deviceId to pin the peripheral identity ' +
|
|
420
|
+
'(TOFU), or set pinIdentity: false to opt out (encrypted but unauthenticated).');
|
|
421
|
+
}
|
|
379
422
|
const kx = new CentralKeyExchange();
|
|
380
423
|
// Step 1: Send central's ephemeral public key
|
|
381
424
|
const step1 = kx.start();
|
|
@@ -383,7 +426,7 @@ async function centralPerformKeyExchange(options) {
|
|
|
383
426
|
// Step 2: Receive peripheral's response
|
|
384
427
|
const step2 = await options.receive();
|
|
385
428
|
// Step 2 -> Step 3: Verify and produce confirmation
|
|
386
|
-
const step3 = kx.processStep2(step2,
|
|
429
|
+
const step3 = kx.processStep2(step2, effectiveVerifyCb);
|
|
387
430
|
await options.send(step3);
|
|
388
431
|
// Step 4: Receive peripheral's confirmation
|
|
389
432
|
const step4 = await options.receive();
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { ContainerType, containerTypeFromValue, ControlCmd, controlCmdFromValue, BLERPC_ERROR_RESPONSE_TOO_LARGE, BLERPC_ERROR_BUSY, CAPABILITY_FLAG_ENCRYPTION_SUPPORTED, FIRST_HEADER_SIZE, SUBSEQUENT_HEADER_SIZE, CONTROL_HEADER_SIZE, ATT_OVERHEAD, } from
|
|
2
|
-
export { packFlags, unpackFlags, Container } from
|
|
3
|
-
export { ContainerSplitter } from
|
|
4
|
-
export { ContainerAssembler } from
|
|
5
|
-
export { CommandType, CommandPacket } from
|
|
6
|
-
export { makeTimeoutRequest, makeTimeoutResponse, makeStreamEndC2P, makeStreamEndP2C, makeCapabilitiesRequest, makeCapabilitiesResponse, makeErrorResponse, makeKeyExchange, } from
|
|
7
|
-
export { DIRECTION_C2P, DIRECTION_P2C, CONFIRM_CENTRAL, CONFIRM_PERIPHERAL, KEY_EXCHANGE_STEP1, KEY_EXCHANGE_STEP2, KEY_EXCHANGE_STEP3, KEY_EXCHANGE_STEP4, BlerpcCrypto, BlerpcCryptoSession, CentralKeyExchange, PeripheralKeyExchange, centralPerformKeyExchange, } from
|
|
1
|
+
export { ContainerType, containerTypeFromValue, ControlCmd, controlCmdFromValue, BLERPC_ERROR_RESPONSE_TOO_LARGE, BLERPC_ERROR_BUSY, CAPABILITY_FLAG_ENCRYPTION_SUPPORTED, FIRST_HEADER_SIZE, SUBSEQUENT_HEADER_SIZE, CONTROL_HEADER_SIZE, ATT_OVERHEAD, } from './containerTypes';
|
|
2
|
+
export { packFlags, unpackFlags, Container } from './container';
|
|
3
|
+
export { ContainerSplitter } from './containerSplitter';
|
|
4
|
+
export { ContainerAssembler } from './containerAssembler';
|
|
5
|
+
export { CommandType, CommandPacket } from './commandPacket';
|
|
6
|
+
export { makeTimeoutRequest, makeTimeoutResponse, makeStreamEndC2P, makeStreamEndP2C, makeCapabilitiesRequest, makeCapabilitiesResponse, makeErrorResponse, makeKeyExchange, } from './controlContainers';
|
|
7
|
+
export { DIRECTION_C2P, DIRECTION_P2C, CONFIRM_CENTRAL, CONFIRM_PERIPHERAL, KEY_EXCHANGE_STEP1, KEY_EXCHANGE_STEP2, KEY_EXCHANGE_STEP3, KEY_EXCHANGE_STEP4, BlerpcCrypto, BlerpcCryptoSession, CentralKeyExchange, PeripheralKeyExchange, centralPerformKeyExchange, tofuVerify, } from './crypto';
|
|
8
|
+
export type { KnownKeyStore } from './crypto';
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Pure TypeScript protocol library for blerpc — container, command, and encryption
|
|
3
3
|
// layers for BLE RPC.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.centralPerformKeyExchange = exports.PeripheralKeyExchange = exports.CentralKeyExchange = exports.BlerpcCryptoSession = exports.BlerpcCrypto = exports.KEY_EXCHANGE_STEP4 = exports.KEY_EXCHANGE_STEP3 = exports.KEY_EXCHANGE_STEP2 = exports.KEY_EXCHANGE_STEP1 = exports.CONFIRM_PERIPHERAL = exports.CONFIRM_CENTRAL = exports.DIRECTION_P2C = exports.DIRECTION_C2P = exports.makeKeyExchange = exports.makeErrorResponse = exports.makeCapabilitiesResponse = exports.makeCapabilitiesRequest = exports.makeStreamEndP2C = exports.makeStreamEndC2P = exports.makeTimeoutResponse = exports.makeTimeoutRequest = exports.CommandPacket = exports.CommandType = exports.ContainerAssembler = exports.ContainerSplitter = exports.Container = exports.unpackFlags = exports.packFlags = exports.ATT_OVERHEAD = exports.CONTROL_HEADER_SIZE = exports.SUBSEQUENT_HEADER_SIZE = exports.FIRST_HEADER_SIZE = exports.CAPABILITY_FLAG_ENCRYPTION_SUPPORTED = exports.BLERPC_ERROR_BUSY = exports.BLERPC_ERROR_RESPONSE_TOO_LARGE = exports.controlCmdFromValue = exports.ControlCmd = exports.containerTypeFromValue = exports.ContainerType = void 0;
|
|
5
|
+
exports.tofuVerify = exports.centralPerformKeyExchange = exports.PeripheralKeyExchange = exports.CentralKeyExchange = exports.BlerpcCryptoSession = exports.BlerpcCrypto = exports.KEY_EXCHANGE_STEP4 = exports.KEY_EXCHANGE_STEP3 = exports.KEY_EXCHANGE_STEP2 = exports.KEY_EXCHANGE_STEP1 = exports.CONFIRM_PERIPHERAL = exports.CONFIRM_CENTRAL = exports.DIRECTION_P2C = exports.DIRECTION_C2P = exports.makeKeyExchange = exports.makeErrorResponse = exports.makeCapabilitiesResponse = exports.makeCapabilitiesRequest = exports.makeStreamEndP2C = exports.makeStreamEndC2P = exports.makeTimeoutResponse = exports.makeTimeoutRequest = exports.CommandPacket = exports.CommandType = exports.ContainerAssembler = exports.ContainerSplitter = exports.Container = exports.unpackFlags = exports.packFlags = exports.ATT_OVERHEAD = exports.CONTROL_HEADER_SIZE = exports.SUBSEQUENT_HEADER_SIZE = exports.FIRST_HEADER_SIZE = exports.CAPABILITY_FLAG_ENCRYPTION_SUPPORTED = exports.BLERPC_ERROR_BUSY = exports.BLERPC_ERROR_RESPONSE_TOO_LARGE = exports.controlCmdFromValue = exports.ControlCmd = exports.containerTypeFromValue = exports.ContainerType = void 0;
|
|
6
6
|
var containerTypes_1 = require("./containerTypes");
|
|
7
7
|
Object.defineProperty(exports, "ContainerType", { enumerable: true, get: function () { return containerTypes_1.ContainerType; } });
|
|
8
8
|
Object.defineProperty(exports, "containerTypeFromValue", { enumerable: true, get: function () { return containerTypes_1.containerTypeFromValue; } });
|
|
@@ -49,4 +49,5 @@ Object.defineProperty(exports, "BlerpcCryptoSession", { enumerable: true, get: f
|
|
|
49
49
|
Object.defineProperty(exports, "CentralKeyExchange", { enumerable: true, get: function () { return crypto_1.CentralKeyExchange; } });
|
|
50
50
|
Object.defineProperty(exports, "PeripheralKeyExchange", { enumerable: true, get: function () { return crypto_1.PeripheralKeyExchange; } });
|
|
51
51
|
Object.defineProperty(exports, "centralPerformKeyExchange", { enumerable: true, get: function () { return crypto_1.centralPerformKeyExchange; } });
|
|
52
|
+
Object.defineProperty(exports, "tofuVerify", { enumerable: true, get: function () { return crypto_1.tofuVerify; } });
|
|
52
53
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,mFAAmF;AACnF,sBAAsB;;;AAEtB,mDAY0B;AAXxB,+GAAA,aAAa,OAAA;AACb,wHAAA,sBAAsB,OAAA;AACtB,4GAAA,UAAU,OAAA;AACV,qHAAA,mBAAmB,OAAA;AACnB,iIAAA,+BAA+B,OAAA;AAC/B,mHAAA,iBAAiB,OAAA;AACjB,sIAAA,oCAAoC,OAAA;AACpC,mHAAA,iBAAiB,OAAA;AACjB,wHAAA,sBAAsB,OAAA;AACtB,qHAAA,mBAAmB,OAAA;AACnB,8GAAA,YAAY,OAAA;AAGd,yCAAgE;AAAvD,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,sGAAA,SAAS,OAAA;AAE1C,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAE3B,iDAA6D;AAApD,4GAAA,WAAW,OAAA;AAAE,8GAAA,aAAa,OAAA;AAEnC,yDAS6B;AAR3B,uHAAA,kBAAkB,OAAA;AAClB,wHAAA,mBAAmB,OAAA;AACnB,qHAAA,gBAAgB,OAAA;AAChB,qHAAA,gBAAgB,OAAA;AAChB,4HAAA,uBAAuB,OAAA;AACvB,6HAAA,wBAAwB,OAAA;AACxB,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AAGjB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,mFAAmF;AACnF,sBAAsB;;;AAEtB,mDAY0B;AAXxB,+GAAA,aAAa,OAAA;AACb,wHAAA,sBAAsB,OAAA;AACtB,4GAAA,UAAU,OAAA;AACV,qHAAA,mBAAmB,OAAA;AACnB,iIAAA,+BAA+B,OAAA;AAC/B,mHAAA,iBAAiB,OAAA;AACjB,sIAAA,oCAAoC,OAAA;AACpC,mHAAA,iBAAiB,OAAA;AACjB,wHAAA,sBAAsB,OAAA;AACtB,qHAAA,mBAAmB,OAAA;AACnB,8GAAA,YAAY,OAAA;AAGd,yCAAgE;AAAvD,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,sGAAA,SAAS,OAAA;AAE1C,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAE3B,iDAA6D;AAApD,4GAAA,WAAW,OAAA;AAAE,8GAAA,aAAa,OAAA;AAEnC,yDAS6B;AAR3B,uHAAA,kBAAkB,OAAA;AAClB,wHAAA,mBAAmB,OAAA;AACnB,qHAAA,gBAAgB,OAAA;AAChB,qHAAA,gBAAgB,OAAA;AAChB,4HAAA,uBAAuB,OAAA;AACvB,6HAAA,wBAAwB,OAAA;AACxB,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AAGjB,mCAekB;AAdhB,uGAAA,aAAa,OAAA;AACb,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,4GAAA,kBAAkB,OAAA;AAClB,4GAAA,kBAAkB,OAAA;AAClB,4GAAA,kBAAkB,OAAA;AAClB,4GAAA,kBAAkB,OAAA;AAClB,4GAAA,kBAAkB,OAAA;AAClB,sGAAA,YAAY,OAAA;AACZ,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAClB,+GAAA,qBAAqB,OAAA;AACrB,mHAAA,yBAAyB,OAAA;AACzB,oGAAA,UAAU,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blerpc/protocol-rn",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Pure TypeScript protocol library for blerpc — container, command, and encryption layers for BLE RPC.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"lint": "eslint src/ tests/",
|
|
14
14
|
"format": "prettier --write 'src/**/*.ts' 'tests/**/*.ts'",
|
|
15
15
|
"format:check": "prettier --check 'src/**/*.ts' 'tests/**/*.ts'",
|
|
16
|
-
"prepublishOnly": "npm run build"
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"prepare": "npm run build"
|
|
17
18
|
},
|
|
18
19
|
"repository": {
|
|
19
20
|
"type": "git",
|