@blerpc/protocol-rn 0.6.0 → 0.8.1

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 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)
@@ -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("ascii");
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("Command packet truncated");
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":";AAAA,0CAA0C;AAC1C,EAAE;AACF,yBAAyB;AACzB,8DAA8D;AAC9D,sCAAsC;AACtC,EAAE;AACF,gCAAgC;AAChC,iCAAiC;AACjC,mCAAmC;AACnC,iCAAiC;;;AAEjC,yCAAyC;AACzC,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,mDAAW,CAAA;IACX,qDAAY,CAAA;AACd,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAE7C,+BAA+B;AAC/B,MAAa,aAAa;IAKxB,YAAY,MAAoE;QAC9E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,SAAS;QACP,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;QAChE,CAAC;QAED,qDAAqD;QACrD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAChE,MAAM,IAAI,CAAC,CAAC;QACZ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,WAAW,CAAC,IAAgB;QACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;QACpE,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;QAC5E,MAAM,IAAI,UAAU,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,CAAC;QAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO;YACP,OAAO;YACP,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;CACF;AArED,sCAqEC"}
1
+ {"version":3,"file":"commandPacket.js","sourceRoot":"","sources":["../src/commandPacket.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ContainerType, ControlCmd } from "./containerTypes";
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,
@@ -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 "./container";
1
+ import { Container } from './container';
2
2
  /** Reassembles containers into a complete payload. */
3
3
  export declare class ContainerAssembler {
4
4
  private _transactions;
@@ -1,4 +1,4 @@
1
- import { Container } from "./container";
1
+ import { Container } from './container';
2
2
  /** Splits a payload into containers respecting MTU. */
3
3
  export declare class ContainerSplitter {
4
4
  private readonly _mtu;
@@ -1,4 +1,4 @@
1
- import { Container } from "./container";
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
- /** Perform the 4-step central key exchange using send/receive callbacks. */
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("BLERPC_CONFIRM_C");
18
- exports.CONFIRM_PERIPHERAL = encoder.encode("BLERPC_CONFIRM_P");
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("blerpc-session-key");
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("Invalid step 1 payload");
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("Invalid step 2 payload");
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("Invalid step 3 payload");
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("Invalid step 4 payload");
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("TX counter overflow: session must be rekeyed");
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("Invalid state for start()");
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("Invalid state for processStep2()");
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("Ed25519 signature verification failed");
276
+ throw new Error('Ed25519 signature verification failed');
276
277
  }
277
278
  if (verifyKeyCb && !verifyKeyCb(periphEd25519Pub)) {
278
- throw new Error("Peripheral key rejected by verify callback");
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("Invalid state for finish()");
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("Peripheral confirmation mismatch");
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("Invalid state for processStep1()");
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("Invalid state for processStep3()");
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("Central confirmation mismatch");
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("Empty key exchange payload");
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("Invalid state for step 1");
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("Invalid state for step 3");
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, "0")}`);
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
- /** Perform the 4-step central key exchange using send/receive callbacks. */
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, options.verifyKeyCb);
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();
@@ -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 "./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, } from "./crypto";
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,mCAckB;AAbhB,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"}
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.6.0",
3
+ "version": "0.8.1",
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",