1 /* Test vectors from https://tools.ietf.org/html/rfc3720#appendix-B.4 */
2 #include <ccan/crc32c/crc32c.h>
3 #include <ccan/tap/tap.h>
6 #define BSWAP_32(val) \
7 ((((uint32_t)(val) & 0x000000ff) << 24) \
8 | (((uint32_t)(val) & 0x0000ff00) << 8) \
9 | (((uint32_t)(val) & 0x00ff0000) >> 8) \
10 | (((uint32_t)(val) & 0xff000000) >> 24))
12 #if HAVE_LITTLE_ENDIAN
13 #define BE32_TO_CPU(le_val) BSWAP_32((uint32_t)le_val)
15 #define BE32_TO_CPU(le_val) ((uint32_t)(le_val))
24 /* 32 bytes of zeroes:
36 ok1(crc32c(0, m, 32) == BE32_TO_CPU(0xaa36918a));
49 ok1(crc32c(0, m, 32) == BE32_TO_CPU(0x43aba862));
51 /* 32 bytes of incrementing 00..1f:
61 for (size_t i = 0; i < 32; i++)
63 ok1(crc32c(0, m, 32) == BE32_TO_CPU(0x4e79dd46));
65 /* 32 bytes of decrementing 1f..00:
75 for (size_t i = 0; i < 32; i++)
77 ok1(crc32c(0, m, 32) == BE32_TO_CPU(0x5cdb3f11));
79 /* An iSCSI - SCSI Read (10) Command PDU
97 memset(m, 0, sizeof(m));
106 ok1(crc32c(0, m, sizeof(m)) == BE32_TO_CPU(0x563a96d9));
108 return exit_status();