UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

29 lines 2.68 kB
import { TapStreamWriter } from '@iotize/tap/client/impl'; import { hmacSHA256 } from '@iotize/tap/crypto'; export class DefaultSinglePacketKeyGenerator { /** * HMsg = UserName | IoTizeSN | PacketHeader1 */ generate(options) { const stream = new TapStreamWriter(); if (options.username.length > 16) { // TODO constant throw new Error(`Invalid username too long: ${options.username}`); } stream.writeStr(options.username); if (options.serialNumber.length !== 18) { // TODO constant // TODO constant throw new Error(`Invalid sn: ${options.serialNumber}. Length must be 18`); } stream.writeStr(options.serialNumber, 18); if (options.headerBytes.length !== 12) { throw new Error(`Invalid header length ${options.headerBytes.length}. Expected 12`); } stream.writeBytes(options.headerBytes); const data = stream.toBytes; const key = hmacSHA256(data, options.hashKey).slice(0, 16); return key; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXBhY2tldC1rZXktZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZS9pbXBsL3NpbmdsZS1wYWNrZXQvc3JjL2xpYi9jdXN0b20vc2luZ2xlLXBhY2tldC1rZXktZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsTUFBTSxPQUFPLCtCQUErQjtJQUcxQzs7T0FFRztJQUNJLFFBQVEsQ0FBQyxPQUF5QztRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLGdCQUFnQjtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQ3RDLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLE9BQU8sQ0FBQyxZQUFZLHFCQUFxQixDQUFDLENBQUM7U0FDM0U7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FDYix5QkFBeUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLGVBQWUsQ0FDbkUsQ0FBQztTQUNIO1FBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIn0=