1 /* Test vectors from https://tools.ietf.org/html/rfc3720#appendix-B.4 */
3 /* Get access to sw version explicitly */
4 #include <ccan/crc32c/crc32c.c>
5 #include <ccan/tap/tap.h>
8 #define BSWAP_32(val) \
9 ((((uint32_t)(val) & 0x000000ff) << 24) \
10 | (((uint32_t)(val) & 0x0000ff00) << 8) \
11 | (((uint32_t)(val) & 0x00ff0000) >> 8) \
12 | (((uint32_t)(val) & 0xff000000) >> 24))
14 #if HAVE_LITTLE_ENDIAN
15 #define BE32_TO_CPU(le_val) BSWAP_32((uint32_t)le_val)
17 #define BE32_TO_CPU(le_val) ((uint32_t)(le_val))
26 /* 32 bytes of zeroes:
38 ok1(crc32c_sw(0, m, 32) == BE32_TO_CPU(0xaa36918a));
51 ok1(crc32c_sw(0, m, 32) == BE32_TO_CPU(0x43aba862));
53 /* 32 bytes of incrementing 00..1f:
63 for (size_t i = 0; i < 32; i++)
65 ok1(crc32c_sw(0, m, 32) == BE32_TO_CPU(0x4e79dd46));
67 /* 32 bytes of decrementing 1f..00:
77 for (size_t i = 0; i < 32; i++)
79 ok1(crc32c_sw(0, m, 32) == BE32_TO_CPU(0x5cdb3f11));
81 /* An iSCSI - SCSI Read (10) Command PDU
99 memset(m, 0, sizeof(m));
108 ok1(crc32c_sw(0, m, sizeof(m)) == BE32_TO_CPU(0x563a96d9));
110 return exit_status();