Protocol: Add CRC for zigbee crypto frame.
This commit is contained in:
parent
075b222670
commit
402b5ff08a
|
@ -121,6 +121,7 @@ typedef struct crypto_zdata_frame
|
|||
{
|
||||
u16 head;
|
||||
u16 length;
|
||||
u16 crc;
|
||||
u8 data[100];
|
||||
}crypto_zdata_frame;
|
||||
|
||||
|
|
|
@ -166,6 +166,7 @@ void Protocol::zigbee_data_encrypt(uint8_t *data, uint8_t data_len, crypto_zdata
|
|||
QByteArray key = QByteArray::fromHex(en_key == "" ? hmac_verify_key.toLatin1() : en_key.toLatin1());
|
||||
SM4_encrypt((u8 *)key.data(), 16, data, data_len, zdata->data,&len,false);
|
||||
zdata->length = len + CRYPTO_ZDATA_FRAME_PREFIX_LEN;
|
||||
zdata->crc = crc16_xmodem(data, data_len);
|
||||
}
|
||||
|
||||
bool Protocol::zigbee_data_dectypt(uint8_t *data, uint8_t *data_len, crypto_zdata_frame *zdata,
|
||||
|
@ -179,6 +180,9 @@ bool Protocol::zigbee_data_dectypt(uint8_t *data, uint8_t *data_len, crypto_zdat
|
|||
QByteArray key = QByteArray::fromHex(en_key == "" ? hmac_verify_key.toLatin1() : en_key.toLatin1());
|
||||
SM4_decrypt((u8 *)key.data(), 16, zdata->data, msglen, data, &len,false);
|
||||
*data_len = len;
|
||||
u16 crc = crc16_xmodem(data, *data_len);
|
||||
if (crc != zdata->crc)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -251,6 +251,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue(note_text));
|
||||
emit data_send("zigbee_recv_data_view",object);
|
||||
node->second.id=0;
|
||||
node->second.verified=0;
|
||||
new_data_frame(5) dframe;
|
||||
memset(&dframe,0,sizeof (dframe));
|
||||
_protocol->protocal_wrapper((data_frame *)&dframe, 0, 5, (u8 *)"RESET", false);
|
||||
|
@ -324,6 +325,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("type","zigbee_recv_data");
|
||||
emit data_send("zigbee_recv_data_view",object);
|
||||
node->second.id=0;
|
||||
node->second.verified=0;
|
||||
new_data_frame(5) dframe;
|
||||
memset(&dframe,0,sizeof (dframe));
|
||||
_protocol->protocal_wrapper((data_frame *)&dframe, 0, 5, (u8 *)"RESET", false);
|
||||
|
|
Loading…
Reference in New Issue