| 278 | } |
| 279 | |
| 280 | unsigned char* KasaSmartController::Encrypt(const std::string request) |
| 281 | { |
| 282 | /*----------------------------------------------------------------*\ |
| 283 | | "Encrypted" payload consists of size as a uint32 + XOR'd payload | |
| 284 | \*----------------------------------------------------------------*/ |
| 285 | unsigned long size = htonl(request.length()); |
| 286 | int payload_size = request.length() + sizeof(size); |
| 287 | unsigned char* payload = new unsigned char[payload_size]; |
| 288 | memcpy(payload, &size, sizeof(size)); |
| 289 | unsigned char* request_data = new unsigned char[request.length()]; |
| 290 | memcpy(request_data, request.data(), request.length()); |
| 291 | KasaSmartController::XorPayload(request_data, request.length()); |
| 292 | memcpy(payload + sizeof(size), request_data, request.length()); |
| 293 | delete[] request_data; |
| 294 | return payload; |
| 295 | } |
| 296 | |
| 297 | std::string KasaSmartController::Decrypt(const unsigned char* encrypted, int length, std::string &response) |
| 298 | { |