R:BYPASS BYPASSED_CROSS_ASYNC DATA="Radio\ Configuration"
# send data
-#R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00 IV=@iv.txt DATA=@encryptred.txt
-R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 IV=@iv.txt DATA=@encrypted.txt
+R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00 IV=@iv.txt DATA=@encrypted.txt
# wait
SLEEP 1000
SLEEP 1000
# receive data
-R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 DATA=@decrypted.txt
+R:CROSS_CRYPTO DECRYPTED_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00:00 DATA=@decrypted.txt
T:CONTROL STATUS_RESP STATUS=4
# send data
-#R:CROSS_CRYPTO_RED ENCRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00:00 DATA=@plaintext.txt
-R:CROSS_CRYPTO_RED ENCRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 DATA=@plaintext.txt
+R:CROSS_CRYPTO_RED ENCRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00:00 DATA=@plaintext.txt
T:CROSS_CRYPTO_BLACK ENCRYPTED_CROSS_ASYNC CHANNELID=0 IV=@iv.txt DATA=@encrypted.txt
# wait
#SLEEP 1000
# receive data
-#R:CROSS_CRYPTO_BLACK DECRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 ADD=00:00:00:00 IV=@iv.txt DATA=@encrypted.txt
-R:CROSS_CRYPTO_BLACK DECRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 IV=@iv.txt DATA=@encrypted.txt
+R:CROSS_CRYPTO_BLACK DECRYPT_CROSS_ASYNC CHANNELID=0 BYPASSLEN=0 AAD=00:00:00:00 IV=@iv.txt DATA=@encrypted.txt
T:CROSS_CRYPTO_RED DECRYPTED_CROSS_ASYNC CHANNELID=0 DATA=@decrypted.txt
PARSE_INT ("CHANNELID", out->channel_id)
PARSE_INT ("BYPASSLEN", out->bypass_len)
PARSE_ARRAY ("BYPASS", out->bypass, 1)
+ PARSE_TAB ("AAD", out->aad)
PARSE_ARRAY ("DATA", out->data)
END_PARSE ()
}
FORMAT_INT ("CHANNELID", in->channel_id)
FORMAT_INT ("BYPASSLEN", in->bypass_len)
FORMAT_ARRAY ("BYPASS", in->bypass)
+ FORMAT_TAB ("AAD", in->aad)
FORMAT_ARRAY ("DATA", in->data)
END_FORMAT ()
}
SERIAL_INT ("CHANNELID", in->channel_id)
SERIAL_INT ("BYPASSLEN", in->bypass_len)
SERIAL_ARRAY ("BYPASS", in->bypass)
+ SERIAL_TAB ("AAD", in->aad)
SERIAL_ARRAY ("DATA", in->data)
END_SERIAL ()
}
DESERIAL_INT ("CHANNELID", out->channel_id)
DESERIAL_INT ("BYPASSLEN", out->bypass_len)
DESERIAL_ARRAY ("BYPASS", out->bypass, 1)
+ DESERIAL_TAB ("AAD", out->aad)
DESERIAL_ARRAY ("DATA", out->data)
END_DESERIAL ()
}
CHECK_INT ("CHANNELID", first->channel_id, second->channel_id)
CHECK_INT ("BYPASSLEN", first->bypass_len, second->bypass_len)
CHECK_ARRAY ("BYPASS", first->bypass, second->bypass)
+ CHECK_TAB ("AAD", first->aad, second->aad)
CHECK_ARRAY ("DATA", first->data, second->data)
END_CHECK ()
}
uint8_t channel_id; /**< channel index */
uint8_t bypass_len; /**< attached bypass message length */
uint8_t bypass[255]; /**< attached bypass message */
+ uint8_t aad[4]; /**< additional authenticated data */
uint16_t data_len; /**< data length (must be aligned to 16 bytes) */
- uint8_t data[16 * ((MOREP_PAYLOAD - 14) / 16)]; /**< data message */
+ uint8_t data[16 * ((MOREP_PAYLOAD - 34) / 16)]; /**< data message */
} CLEAR_DATA_t;
/**
{
BEGIN_PARSE (line)
PARSE_INT ("CHANNELID", out->channel_id)
- PARSE_TAB ("IV", out->iv)
PARSE_INT ("BYPASSLEN", out->bypass_len)
PARSE_ARRAY ("BYPASS", out->bypass, 1)
+ PARSE_TAB ("AAD", out->aad)
+ PARSE_TAB ("IV", out->iv)
PARSE_ARRAY ("DATA", out->data)
END_PARSE ()
}
{
BEGIN_FORMAT (buffer, maxlen)
FORMAT_INT ("CHANNELID", in->channel_id)
- FORMAT_TAB ("IV", in->iv)
FORMAT_INT ("BYPASSLEN", in->bypass_len)
FORMAT_ARRAY ("BYPASS", in->bypass)
+ FORMAT_TAB ("AAD", in->aad)
+ FORMAT_TAB ("IV", in->iv)
FORMAT_ARRAY ("DATA", in->data)
END_FORMAT ()
}
{
BEGIN_SERIAL (buffer, maxlen)
SERIAL_INT ("CHANNELID", in->channel_id)
- SERIAL_TAB ("IV", in->iv)
SERIAL_INT ("BYPASSLEN", in->bypass_len)
SERIAL_ARRAY ("BYPASS", in->bypass)
+ SERIAL_TAB ("AAD", in->aad)
+ SERIAL_TAB ("IV", in->iv)
SERIAL_ARRAY ("DATA", in->data)
END_SERIAL ()
}
{
BEGIN_DESERIAL (buffer, len)
DESERIAL_INT ("CHANNELID", out->channel_id)
- DESERIAL_TAB ("IV", out->iv)
DESERIAL_INT ("BYPASSLEN", out->bypass_len)
DESERIAL_ARRAY ("BYPASS", out->bypass, 1)
+ DESERIAL_TAB ("AAD", out->aad)
+ DESERIAL_TAB ("IV", out->iv)
DESERIAL_ARRAY ("DATA", out->data)
END_DESERIAL ()
}
{
BEGIN_CHECK (fields)
CHECK_INT ("CHANNELID", first->channel_id, second->channel_id)
- CHECK_TAB ("IV", first->iv, second->iv)
CHECK_INT ("BYPASSLEN", first->bypass_len, second->bypass_len)
CHECK_ARRAY ("BYPASS", first->bypass, second->bypass)
+ CHECK_TAB ("AAD", first->aad, second->aad)
+ CHECK_TAB ("IV", first->iv, second->iv)
CHECK_ARRAY ("DATA", first->data, second->data)
END_CHECK ()
}
*/
typedef struct {
uint8_t channel_id; /**< channel index */
- uint8_t iv[12]; /**< initial vector */
uint8_t bypass_len; /**< attached bypass message length */
uint8_t bypass[255]; /**< attached bypass message */
+ uint8_t aad[4]; /**< additional authenticated data */
+ uint8_t iv[12]; /**< initial vector */
uint16_t data_len; /**< data length (must be aligned to 16 bytes) */
- uint8_t data[16 * ((MOREP_PAYLOAD - 14) / 16)]; /**< data message */
+ uint8_t data[16 * ((MOREP_PAYLOAD - 34 + 16) / 16)]; /**< data message + tag */
} ENCRYPTED_DATA_t;
/**
# Cross crypto test script
-T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 DATA=@script-local_crypto.eth
-R:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44
+T:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=01:02:03:04 DATA=@script-local_crypto.eth
+R:CROSS_CRYPTO ENCRYPT_CROSS_ASYNC CHANNELID=2 BYPASSLEN=4 BYPASS=11:22:33:44 AAD=01:02:03:04
T:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC CHANNELID=9 BYPASSLEN=1 BYPASS=55 DATA=@script-local_crypto.eth
-R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC BYPASSLEN=1 BYPASS=55
+R:CROSS_CRYPTO ENCRYPTED_CROSS_ASYNC BYPASSLEN=1 BYPASS=55 DATA=@script-local_crypto.eth
T:CROSS_CRYPTO DECRYPT_CROSS_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth
R:CROSS_CRYPTO DECRYPT_CROSS_ASYNC DATA=@script-local_crypto.eth
# Local crypto test script
-T:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC CHANNELID=2 BYPASSLEN=3 BYPASS=11:22:33:44 DATA=@script-cross_crypto.eth
-R:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC
+T:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC CHANNELID=2 BYPASSLEN=3 BYPASS=11:22:33:44 AAD=01:02:03:04 DATA=@script-cross_crypto.eth
+R:LOCAL_CRYPTO ENCRYPT_LOCAL_ASYNC CHANNELID=2 BYPASSLEN=3 BYPASS=11:22:33:44 AAD=01:02:03:04 DATA=@script-cross_crypto.eth
-T:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC CHANNELID=9 BYPASSLEN=0 DATA=@script-local_crypto.eth
-R:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC
+T:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC CHANNELID=9 BYPASSLEN=0 AAD=11:22 IV=31:32:33 DATA=@script-local_crypto.eth
+R:LOCAL_CRYPTO ENCRYPTED_LOCAL_ASYNC AAD=11:22 IV=31:32:33
T:LOCAL_CRYPTO DECRYPT_LOCAL_ASYNC CHANNELID=5 BYPASSLEN=0 DATA=@script-local_crypto.eth
R:LOCAL_CRYPTO DECRYPT_LOCAL_ASYNC