From dc2986f1ebbbf0541a8916d8bc6b12409c245d4f Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Thu, 5 Dec 2024 18:23:21 -0600 Subject: [PATCH] rlp header should be hex string --- packages/acn/src/models.ts | 2 +- packages/acn/src/pdu/rlp.ts | 4 +++- packages/acn/src/utils.ts | 7 +++++++ packages/acn/tests/udp-decode.test.js | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 packages/acn/src/utils.ts diff --git a/packages/acn/src/models.ts b/packages/acn/src/models.ts index e113d19..a339a25 100644 --- a/packages/acn/src/models.ts +++ b/packages/acn/src/models.ts @@ -16,6 +16,6 @@ export type ACNPacket = { export type RootLayerPDU = { vector: number; - header: Uint8Array; + header: string; data: Uint8Array; }; diff --git a/packages/acn/src/pdu/rlp.ts b/packages/acn/src/pdu/rlp.ts index 422d29c..bf8e9dc 100644 --- a/packages/acn/src/pdu/rlp.ts +++ b/packages/acn/src/pdu/rlp.ts @@ -1,4 +1,5 @@ import { RootLayerPDU } from '../models'; +import { toHex } from '../utils'; function decode(bytes: Uint8Array): RootLayerPDU { const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); @@ -43,7 +44,8 @@ function decode(bytes: Uint8Array): RootLayerPDU { const vector = view.getUint32(vectorOffset); const headerOffset = vectorOffset + 4; - const header = bytes.subarray(headerOffset, headerOffset + 16); + const header = toHex(bytes.subarray(headerOffset, headerOffset + 16)); + const dataOffset = headerOffset + 16; // NOTE(jwetzell): flags/lengthH + lengthL + lengthX + vector + header const dataLength = length - (1 + 1 + (lengthFlag ? 1 : 0) + 4 + 16); diff --git a/packages/acn/src/utils.ts b/packages/acn/src/utils.ts new file mode 100644 index 0000000..cd0b88d --- /dev/null +++ b/packages/acn/src/utils.ts @@ -0,0 +1,7 @@ +export function toHex(bytes: Uint8Array): string{ + let hex = ''; + bytes.forEach((byte)=>{ + hex += byte.toString(16).padStart(2,'0') + }) + return hex; +} \ No newline at end of file diff --git a/packages/acn/tests/udp-decode.test.js b/packages/acn/tests/udp-decode.test.js index fdd6c60..fe1602b 100644 --- a/packages/acn/tests/udp-decode.test.js +++ b/packages/acn/tests/udp-decode.test.js @@ -19,7 +19,7 @@ const goodTests = [ }, pduBlock: { vector: 1, - header: new Uint8Array([176, 171, 216, 42, 32, 210, 66, 64, 167, 205, 62, 73, 217, 153, 164, 229]), + header: 'b0abd82a20d24240a7cd3e49d999a4e5', data: new Uint8Array([ 112, 50, 4, 73, 136, 131, 52, 255, 255, 74, 69, 176, 66, 102, 183, 33, 235, 216, 155, 0, 1, 244, 136, 0, 0, 0, 0, 244, 136, 0, 0, 244, 136, 1, 67, 216, 239, 192, 220, 207, 5, 0, 0, 2, 0, 10, 0, 20, 1, 44,