static int test_heim_integer (void) { struct test_case tests[] = { {NULL, 2, "\xfe\x01", NULL }, {NULL, 2, "\xef\x01", NULL }, {NULL, 3, "\xff\x00\xff", NULL }, {NULL, 3, "\xff\x01\x00", NULL }, {NULL, 1, "\x00", NULL }, {NULL, 1, "\x01", NULL }, {NULL, 2, "\x00\x80", NULL } }; heim_integer values[] = { { 2, "\x01\xff", 1 }, { 2, "\x10\xff", 1 }, { 2, "\xff\x01", 1 }, { 2, "\xff\x00", 1 }, { 0, "", 0 }, { 1, "\x01", 0 }, { 1, "\x80", 0 } }; int i, ret; int ntests = sizeof(tests) / sizeof(tests[0]); size_t size; heim_integer i2; for (i = 0; i < ntests; ++i) { tests[i].val = &values[i]; if (asprintf (&tests[i].name, "heim_integer %d", i) < 0) errx(1, "malloc"); if (tests[i].name == NULL) errx(1, "malloc"); } ret = generic_test (tests, ntests, sizeof(heim_integer), (generic_encode)der_put_heim_integer, (generic_length)der_length_heim_integer, (generic_decode)der_get_heim_integer, (generic_free)der_free_heim_integer, test_cmp_heim_integer, NULL); for (i = 0; i < ntests; ++i) free (tests[i].name); if (ret) return ret; /* test zero length integer (BER format) */ ret = der_get_heim_integer(NULL, 0, &i2, &size); if (ret) errx(1, "der_get_heim_integer"); if (i2.length != 0) errx(1, "der_get_heim_integer wrong length"); der_free_heim_integer(&i2); return 0; }
static int test_boolean (void) { struct test_case tests[] = { {NULL, 1, "\xff"}, {NULL, 1, "\x00"} }; int values[] = { 1, 0 }; int i, ret; int ntests = sizeof(tests) / sizeof(tests[0]); size_t size; heim_integer i2; for (i = 0; i < ntests; ++i) { tests[i].val = &values[i]; if (asprintf (&tests[i].name, "heim_boolean %d", i) < 0) errx(1, "malloc"); if (tests[i].name == NULL) errx(1, "malloc"); } ret = generic_test (tests, ntests, sizeof(int), (generic_encode)der_put_boolean, (generic_length)der_length_boolean, (generic_decode)der_get_boolean, (generic_free)NULL, test_cmp_boolean, NULL); for (i = 0; i < ntests; ++i) free (tests[i].name); if (ret) return ret; /* test zero length integer (BER format) */ ret = der_get_heim_integer(NULL, 0, &i2, &size); if (ret) errx(1, "der_get_heim_integer"); if (i2.length != 0) errx(1, "der_get_heim_integer wrong length"); der_free_heim_integer(&i2); return 0; }