diff options
| author | jsing <> | 2022-02-12 12:42:19 +0000 |
|---|---|---|
| committer | jsing <> | 2022-02-12 12:42:19 +0000 |
| commit | 6f9eb565f453fa9044079a79dec3faa21c640811 (patch) | |
| tree | 0b13562f44700224dbde183b88260a7fd00a27b5 /src | |
| parent | ed44c785483d961996be1105c8471657b251bf1d (diff) | |
| download | openbsd-6f9eb565f453fa9044079a79dec3faa21c640811.tar.gz openbsd-6f9eb565f453fa9044079a79dec3faa21c640811.tar.bz2 openbsd-6f9eb565f453fa9044079a79dec3faa21c640811.zip | |
Add test coverage for OBJ_txt2obj()/OBJ_obj2txt() with no_name == 0.
Diffstat (limited to 'src')
| -rw-r--r-- | src/regress/lib/libcrypto/objects/objectstest.c | 103 |
1 files changed, 99 insertions, 4 deletions
diff --git a/src/regress/lib/libcrypto/objects/objectstest.c b/src/regress/lib/libcrypto/objects/objectstest.c index 18b57436c8..9f28b6329a 100644 --- a/src/regress/lib/libcrypto/objects/objectstest.c +++ b/src/regress/lib/libcrypto/objects/objectstest.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: objectstest.c,v 1.3 2022/02/12 03:02:47 jsing Exp $ */ | 1 | /* $OpenBSD: objectstest.c,v 1.4 2022/02/12 12:42:19 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2017, 2022 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2017, 2022 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -93,6 +93,15 @@ struct obj_test obj_tests[] = { | |||
| 93 | .data_len = 3, | 93 | .data_len = 3, |
| 94 | }, | 94 | }, |
| 95 | { | 95 | { |
| 96 | .oid = "2.23.43.1", | ||
| 97 | .sn = "wap-wsg", | ||
| 98 | .nid = NID_wap_wsg, | ||
| 99 | .data = { | ||
| 100 | 0x67, 0x2b, 0x01, | ||
| 101 | }, | ||
| 102 | .data_len = 3, | ||
| 103 | }, | ||
| 104 | { | ||
| 96 | .oid = "1.3.6.1.4.1.11129.2.4.5", | 105 | .oid = "1.3.6.1.4.1.11129.2.4.5", |
| 97 | .sn = "ct_cert_scts", | 106 | .sn = "ct_cert_scts", |
| 98 | .ln = "CT Certificate SCTs", | 107 | .ln = "CT Certificate SCTs", |
| @@ -256,9 +265,7 @@ obj_oid_test(struct obj_test *ot) | |||
| 256 | if (ot->oid == NULL) | 265 | if (ot->oid == NULL) |
| 257 | return 0; | 266 | return 0; |
| 258 | 267 | ||
| 259 | /* XXX - need to also test with no_name == 0. */ | 268 | if ((obj = OBJ_txt2obj(ot->oid, 0)) == NULL) { |
| 260 | |||
| 261 | if ((obj = OBJ_txt2obj(ot->oid, 1)) == NULL) { | ||
| 262 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s'\n", ot->oid); | 269 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s'\n", ot->oid); |
| 263 | goto failed; | 270 | goto failed; |
| 264 | } | 271 | } |
| @@ -303,6 +310,93 @@ obj_oid_tests(void) | |||
| 303 | return failed; | 310 | return failed; |
| 304 | } | 311 | } |
| 305 | 312 | ||
| 313 | static int | ||
| 314 | obj_txt_test(struct obj_test *ot) | ||
| 315 | { | ||
| 316 | ASN1_OBJECT *obj = NULL; | ||
| 317 | const char *want; | ||
| 318 | char buf[1024]; | ||
| 319 | int len, nid; | ||
| 320 | int failed = 1; | ||
| 321 | |||
| 322 | if (ot->oid == NULL) | ||
| 323 | return 0; | ||
| 324 | |||
| 325 | if (ot->sn != NULL) { | ||
| 326 | if ((obj = OBJ_txt2obj(ot->sn, 0)) == NULL) { | ||
| 327 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s'\n", | ||
| 328 | ot->sn); | ||
| 329 | goto failed; | ||
| 330 | } | ||
| 331 | if ((nid = OBJ_obj2nid(obj)) != ot->nid) { | ||
| 332 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s', " | ||
| 333 | "got nid %d want %d\n", ot->sn, nid, ot->nid); | ||
| 334 | goto failed; | ||
| 335 | } | ||
| 336 | ASN1_OBJECT_free(obj); | ||
| 337 | obj = NULL; | ||
| 338 | } | ||
| 339 | if (ot->ln != NULL) { | ||
| 340 | if ((obj = OBJ_txt2obj(ot->ln, 0)) == NULL) { | ||
| 341 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s'\n", | ||
| 342 | ot->ln); | ||
| 343 | goto failed; | ||
| 344 | } | ||
| 345 | if ((nid = OBJ_obj2nid(obj)) != ot->nid) { | ||
| 346 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s', " | ||
| 347 | "got nid %d want %d\n", ot->ln, nid, ot->nid); | ||
| 348 | goto failed; | ||
| 349 | } | ||
| 350 | ASN1_OBJECT_free(obj); | ||
| 351 | obj = NULL; | ||
| 352 | } | ||
| 353 | |||
| 354 | if ((obj = OBJ_txt2obj(ot->oid, 0)) == NULL) { | ||
| 355 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s'\n", ot->oid); | ||
| 356 | goto failed; | ||
| 357 | } | ||
| 358 | if ((nid = OBJ_obj2nid(obj)) != ot->nid) { | ||
| 359 | fprintf(stderr, "FAIL: OBJ_txt2obj() failed for '%s', " | ||
| 360 | "got nid %d want %d\n", ot->oid, nid, ot->nid); | ||
| 361 | goto failed; | ||
| 362 | } | ||
| 363 | |||
| 364 | len = OBJ_obj2txt(buf, sizeof(buf), obj, 0); | ||
| 365 | if (len <= 0 || (size_t)len >= sizeof(buf)) { | ||
| 366 | fprintf(stderr, "FAIL: OBJ_obj2txt() failed for '%s'\n", ot->oid); | ||
| 367 | goto failed; | ||
| 368 | } | ||
| 369 | want = ot->ln; | ||
| 370 | if (want == NULL) | ||
| 371 | want = ot->sn; | ||
| 372 | if (want == NULL) | ||
| 373 | want = ot->oid; | ||
| 374 | if (strcmp(buf, want) != 0) { | ||
| 375 | fprintf(stderr, "FAIL: OBJ_obj2txt() returned '%s', want '%s'\n", | ||
| 376 | buf, want); | ||
| 377 | goto failed; | ||
| 378 | } | ||
| 379 | |||
| 380 | failed = 0; | ||
| 381 | |||
| 382 | failed: | ||
| 383 | ASN1_OBJECT_free(obj); | ||
| 384 | |||
| 385 | return failed; | ||
| 386 | } | ||
| 387 | |||
| 388 | static int | ||
| 389 | obj_txt_tests(void) | ||
| 390 | { | ||
| 391 | int failed = 0; | ||
| 392 | size_t i; | ||
| 393 | |||
| 394 | for (i = 0; i < N_OBJ_TESTS; i++) | ||
| 395 | failed |= obj_txt_test(&obj_tests[i]); | ||
| 396 | |||
| 397 | return failed; | ||
| 398 | } | ||
| 399 | |||
| 306 | /* OID 1.3.18446744073709551615 (64 bits). */ | 400 | /* OID 1.3.18446744073709551615 (64 bits). */ |
| 307 | const uint8_t asn1_large_oid1[] = { | 401 | const uint8_t asn1_large_oid1[] = { |
| 308 | 0x06, 0x0b, | 402 | 0x06, 0x0b, |
| @@ -432,6 +526,7 @@ main(int argc, char **argv) | |||
| 432 | failed |= obj_name_tests(); | 526 | failed |= obj_name_tests(); |
| 433 | failed |= obj_nid_tests(); | 527 | failed |= obj_nid_tests(); |
| 434 | failed |= obj_oid_tests(); | 528 | failed |= obj_oid_tests(); |
| 529 | failed |= obj_txt_tests(); | ||
| 435 | failed |= obj_oid_large_tests(); | 530 | failed |= obj_oid_large_tests(); |
| 436 | 531 | ||
| 437 | return (failed); | 532 | return (failed); |
