LCOV - code coverage report
Current view: top level - extras/test/unit/tests - TestCrypto.cpp (source / functions) Hit Total Coverage
Test: lcov.info Lines: 24 24 100.0 %
Date: 2026-06-03 18:53:41 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // boost test header
       2             : #include <boost/test/unit_test.hpp>
       3             : 
       4             : // the crypto header
       5             : #include "utils/Cryptography.h"
       6             : 
       7             : // mock HAL
       8             : #include "ModuleFixture.hpp"
       9             : 
      10             : #include <string.h>
      11             : 
      12             : // test message, key and vectors
      13             : // from https://www.rfc-editor.org/rfc/rfc4493.html#section-4
      14             : 
      15             : static const unsigned char msg[64] = {
      16             :   0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
      17             :   0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
      18             :   0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
      19             :   0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
      20             :   0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
      21             :   0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
      22             :   0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
      23             :   0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10
      24             : };
      25             : 
      26             : static unsigned char key[16] = {
      27             :   0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
      28             :   0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
      29             : };
      30             : 
      31             : static const unsigned char testVectEx1[] = {
      32             :   0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28,
      33             :   0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46
      34             : };
      35             : 
      36             : static const unsigned char testVectEx2[] = {
      37             :   0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44,
      38             :   0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
      39             : };
      40             : 
      41             : static const unsigned char testVectEx3[] = {
      42             :   0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30,
      43             :   0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27
      44             : };
      45             : 
      46             : static const unsigned char testVectEx4[] = {
      47             :   0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92,
      48             :   0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
      49             : };
      50             : 
      51             : static RadioLibSoftwareAES128 RadioLibAES128Instance;
      52             : 
      53             : BOOST_FIXTURE_TEST_SUITE(suite_Crypto, ModuleFixture)
      54             : 
      55           2 : BOOST_FIXTURE_TEST_CASE(Crypto_CMAC, ModuleFixture) {
      56           1 :   BOOST_TEST_MESSAGE("--- Test Crypto::CMAC ---");
      57             :   uint8_t cmac[RADIOLIB_AES128_BLOCK_SIZE];
      58             :   size_t testLen;
      59             : 
      60           1 :   BOOST_TEST_MESSAGE("--- Test Crypto::CMAC RFC 4493 chapter 4 Example 1: len = 0 ---");
      61           1 :   testLen = 0;
      62           1 :   hal->aes128 = &RadioLibAES128Instance;
      63           1 :   hal->aes128->init(key);
      64           1 :   hal->aes128->generateCMAC(msg, testLen, cmac);
      65           1 :   BOOST_TEST(memcmp(cmac, testVectEx1, RADIOLIB_AES128_BLOCK_SIZE) == 0);
      66             : 
      67           1 :   BOOST_TEST_MESSAGE("--- Test Crypto::CMAC RFC 4493 chapter 4 Example 2: len = 16 ---");
      68           1 :   testLen = 16;
      69           1 :   hal->aes128->init(key);
      70           1 :   hal->aes128->generateCMAC(msg, testLen, cmac);
      71           1 :   BOOST_TEST(memcmp(cmac, testVectEx2, RADIOLIB_AES128_BLOCK_SIZE) == 0);
      72             : 
      73             : 
      74           1 :   BOOST_TEST_MESSAGE("--- Test Crypto::CMAC RFC 4493 chapter 4 Example 2: len = 40 ---");
      75           1 :   testLen = 40;
      76           1 :   hal->aes128->init(key);
      77           1 :   hal->aes128->generateCMAC(msg, testLen, cmac);
      78           1 :   BOOST_TEST(memcmp(cmac, testVectEx3, RADIOLIB_AES128_BLOCK_SIZE) == 0);
      79             : 
      80           1 :   BOOST_TEST_MESSAGE("--- Test Crypto::CMAC RFC 4493 chapter 4 Example 2: len = 64 ---");
      81           1 :   testLen = 64;
      82           1 :   hal->aes128->init(key);
      83           1 :   hal->aes128->generateCMAC(msg, testLen, cmac);
      84           1 :   BOOST_TEST(memcmp(cmac, testVectEx4, RADIOLIB_AES128_BLOCK_SIZE) == 0);
      85           1 : }
      86             : 
      87             : BOOST_AUTO_TEST_SUITE_END()

Generated by: LCOV version 1.14