//
// Created by 78472 on 2020/12/9.
//

#ifndef LIBDEVCPP_MESSAGEHANDLE_H
#define LIBDEVCPP_MESSAGEHANDLE_H

#include <string>
#include <qlibc/qlibc.h>
#include "hmcrypt/mlssl.h"

using namespace std;
using namespace qlibc;

namespace messagehandle {

/**
 * 解密从app端接收到的命令
 * @param secret 秘钥
 * @param topic 发布app命令的主题
 * @param buff  存储接收到命令
 * @param buff_len  命令的长度
 * @param stringout 解密后得到的字符串
 * @return
 */
    bool decrypt_mqttReceiveCommand(uint8_t *secret, const string &topic, const byte buff[], int buff_len,
                                    string &stringout);

/**
 * 加密上传给app的状态字符串
 * @param sn 网关序列号
 * @param mqttdata 状态字符串
 * @param stringOut 加密后的状态字符串
 * @return
 */
    bool encrypt_uploadMessage(uint8_t *secret, const string &mqttdata, string &stringOut);

    void gen_mqtt_comm_key (const std::string& sn, std::string& target_key, char **code);

}

#endif //LIBDEVCPP_MESSAGEHANDLE_H
