quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

test_suite_poly1305.function (2426B)


      1 /* BEGIN_HEADER */
      2 #include "mbedtls/poly1305.h"
      3 #include <stddef.h>
      4 /* END_HEADER */
      5 
      6 /* BEGIN_DEPENDENCIES
      7  * depends_on:MBEDTLS_POLY1305_C
      8  * END_DEPENDENCIES
      9  */
     10 
     11 /* BEGIN_CASE */
     12 void mbedtls_poly1305(data_t *key, data_t *expected_mac, data_t *src_str)
     13 {
     14     unsigned char mac[16]; /* size set by the standard */
     15     mbedtls_poly1305_context ctx;
     16 
     17     memset(mac, 0x00, sizeof(mac));
     18 
     19     /*
     20      * Test the integrated API
     21      */
     22     TEST_ASSERT(mbedtls_poly1305_mac(key->x, src_str->x,
     23                                      src_str->len, mac) == 0);
     24 
     25     TEST_MEMORY_COMPARE(mac, expected_mac->len,
     26                         expected_mac->x, expected_mac->len);
     27 
     28     /*
     29      * Test the streaming API
     30      */
     31     mbedtls_poly1305_init(&ctx);
     32 
     33     TEST_ASSERT(mbedtls_poly1305_starts(&ctx, key->x) == 0);
     34 
     35     TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x, src_str->len) == 0);
     36 
     37     TEST_ASSERT(mbedtls_poly1305_finish(&ctx, mac) == 0);
     38 
     39     TEST_MEMORY_COMPARE(mac, expected_mac->len,
     40                         expected_mac->x, expected_mac->len);
     41 
     42     /*
     43      * Test the streaming API again, piecewise
     44      */
     45 
     46     /* Don't free/init the context, in order to test that starts() does the
     47      * right thing. */
     48     if (src_str->len >= 1) {
     49         TEST_ASSERT(mbedtls_poly1305_starts(&ctx, key->x) == 0);
     50 
     51         TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x, 1) == 0);
     52         TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x + 1, src_str->len - 1) == 0);
     53 
     54         TEST_ASSERT(mbedtls_poly1305_finish(&ctx, mac) == 0);
     55 
     56         TEST_MEMORY_COMPARE(mac, expected_mac->len,
     57                             expected_mac->x, expected_mac->len);
     58     }
     59 
     60     /*
     61      * Again with more pieces
     62      */
     63     if (src_str->len >= 2) {
     64         TEST_ASSERT(mbedtls_poly1305_starts(&ctx, key->x) == 0);
     65 
     66         TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x, 1) == 0);
     67         TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x + 1, 1) == 0);
     68         TEST_ASSERT(mbedtls_poly1305_update(&ctx, src_str->x + 2, src_str->len - 2) == 0);
     69 
     70         TEST_ASSERT(mbedtls_poly1305_finish(&ctx, mac) == 0);
     71 
     72         TEST_MEMORY_COMPARE(mac, expected_mac->len,
     73                             expected_mac->x, expected_mac->len);
     74     }
     75 
     76     mbedtls_poly1305_free(&ctx);
     77 }
     78 /* END_CASE */
     79 
     80 /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
     81 void poly1305_selftest()
     82 {
     83     TEST_ASSERT(mbedtls_poly1305_self_test(1) == 0);
     84 }
     85 /* END_CASE */