@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
JavaScript
;
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