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

Generated by: LCOV version 1.14