UNPKG

@hzabala/tplinkcloud-api-client

Version:

<p align="left"> <a href="./LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License MIT"/></a> <p>

71 lines 3.06 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLocalDevices = exports.decrypt = exports.encrypt = exports.decryptHandshakeKey = exports.generateKeyPair = void 0; const crypto = require("crypto"); const find = require("local-devices"); const tpcloud_1 = require("./tpcloud"); const generateKeyPair = () => { return crypto.generateKeyPairSync('rsa', { publicKeyEncoding: { type: 'spki', format: 'pem', }, privateKeyEncoding: { type: 'pkcs1', format: 'pem', }, modulusLength: 1024, }); }; exports.generateKeyPair = generateKeyPair; const decryptHandshakeKey = (key, privateKey) => { const buffer = Buffer.from(key, 'base64'); const decrypted = crypto.privateDecrypt({ key: privateKey, padding: crypto.constants.RSA_PKCS1_PADDING, }, buffer); return { key: decrypted.slice(0, 16), iv: decrypted.slice(16, 32), }; }; exports.decryptHandshakeKey = decryptHandshakeKey; const encrypt = (cipherParam, payload) => { const cipher = crypto.createCipheriv('aes-128-cbc', cipherParam.key, cipherParam.iv); let encrypted = cipher.update(payload, 'utf8', 'base64'); encrypted += cipher.final('base64'); return encrypted; }; exports.encrypt = encrypt; const decrypt = (cipherParam, payload) => { const decipher = crypto.createDecipheriv('aes-128-cbc', cipherParam.key, cipherParam.iv); let decrypted = decipher.update(payload, 'base64', 'utf8'); decrypted += decipher.final('utf8'); return decrypted; }; exports.decrypt = decrypt; const getLocalDevices = (token) => __awaiter(void 0, void 0, void 0, function* () { const devices = yield (0, tpcloud_1.getDevices)(token); const localDevices = yield find(); return localDevices .map((l) => (Object.assign(Object.assign({}, l), { mac: l.mac.replace(/:/g, '').toUpperCase() }))) .filter((l) => { return devices.find((d) => d.deviceMac === l.mac); }) .map((l) => { const device = devices.find((d) => d.deviceMac); const buffer = Buffer.from(device.alias, 'base64'); return Object.assign(Object.assign({}, device), { alias: buffer.toString('utf-8'), ipAddress: l.ip }); }); }); exports.getLocalDevices = getLocalDevices; //# sourceMappingURL=util.js.map