From 22b2fb06cb9bf8ee1bf92e727d94e026201818d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 27 Jun 2007 08:08:15 +0000 Subject: [PATCH] test universal strings. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21357 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/check-der.c | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/lib/asn1/check-der.c b/lib/asn1/check-der.c index 4bc5c1b50..e00c6b4de 100644 --- a/lib/asn1/check-der.c +++ b/lib/asn1/check-der.c @@ -296,6 +296,51 @@ test_bmp_string (void) return ret; } +static int +cmp_universal_string (void *a, void *b) +{ + heim_universal_string *oa = (heim_universal_string *)a; + heim_universal_string *ob = (heim_universal_string *)b; + + return der_heim_universal_string_cmp(oa, ob); +} + +static uint32_t universal_d1[] = { 32 }; +static uint32_t universal_d2[] = { 32, 32 }; + +static int +test_universal_string (void) +{ + heim_universal_string s1 = { 1, universal_d1 }; + heim_universal_string s2 = { 2, universal_d2 }; + + struct test_case tests[] = { + {NULL, 4, "\x00\x00\x00\x20"}, + {NULL, 8, "\x00\x00\x00\x20\x00\x00\x00\x20"} + }; + int ntests = sizeof(tests) / sizeof(*tests); + int ret; + + tests[0].val = &s1; + asprintf (&tests[0].name, "a universal string"); + if (tests[0].name == NULL) + errx(1, "malloc"); + tests[1].val = &s2; + asprintf (&tests[1].name, "second universal string"); + if (tests[1].name == NULL) + errx(1, "malloc"); + + ret = generic_test (tests, ntests, sizeof(heim_universal_string), + (generic_encode)der_put_universal_string, + (generic_length)der_length_universal_string, + (generic_decode)der_get_universal_string, + (generic_free)der_free_universal_string, + cmp_universal_string); + free(tests[0].name); + free(tests[1].name); + return ret; +} + static int cmp_general_string (void *a, void *b) { @@ -965,6 +1010,7 @@ main(int argc, char **argv) ret += test_unsigned (); ret += test_octet_string (); ret += test_bmp_string (); + ret += test_universal_string (); ret += test_general_string (); ret += test_generalized_time (); ret += test_oid ();