]>
Commit | Line | Data |
---|---|---|
4dde554c | 1 | /* |
a8d9bd81 | 2 | * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. |
4dde554c DDO |
3 | * Copyright Nokia 2007-2019 |
4 | * Copyright Siemens AG 2015-2019 | |
5 | * | |
6 | * Licensed under the Apache License 2.0 (the "License"). You may not use | |
7 | * this file except in compliance with the License. You can obtain a copy | |
8 | * in the file LICENSE in the source distribution or at | |
9 | * https://www.openssl.org/source/license.html | |
10 | */ | |
11 | ||
20f8bc72 | 12 | #include "helpers/cmp_testlib.h" |
4dde554c DDO |
13 | |
14 | typedef struct test_fixture { | |
15 | const char *test_case_name; | |
16 | int pkistatus; | |
17 | const char *str; /* Not freed by tear_down */ | |
18 | const char *text; /* Not freed by tear_down */ | |
19 | int pkifailure; | |
20 | } CMP_STATUS_TEST_FIXTURE; | |
21 | ||
22 | static CMP_STATUS_TEST_FIXTURE *set_up(const char *const test_case_name) | |
23 | { | |
24 | CMP_STATUS_TEST_FIXTURE *fixture; | |
25 | ||
26 | if (!TEST_ptr(fixture = OPENSSL_zalloc(sizeof(*fixture)))) | |
27 | return NULL; | |
28 | fixture->test_case_name = test_case_name; | |
29 | return fixture; | |
30 | } | |
31 | ||
32 | static void tear_down(CMP_STATUS_TEST_FIXTURE *fixture) | |
33 | { | |
34 | OPENSSL_free(fixture); | |
35 | } | |
36 | ||
37 | ||
38 | /* | |
39 | * Tests PKIStatusInfo creation and get-functions | |
40 | */ | |
41 | static int execute_PKISI_test(CMP_STATUS_TEST_FIXTURE *fixture) | |
42 | { | |
43 | OSSL_CMP_PKISI *si = NULL; | |
44 | int status; | |
45 | ASN1_UTF8STRING *statusString = NULL; | |
46 | int res = 0, i; | |
47 | ||
62dcd2aa | 48 | if (!TEST_ptr(si = OSSL_CMP_STATUSINFO_new(fixture->pkistatus, |
4dde554c DDO |
49 | fixture->pkifailure, |
50 | fixture->text))) | |
51 | goto end; | |
52 | ||
62dcd2aa | 53 | status = ossl_cmp_pkisi_get_status(si); |
4dde554c DDO |
54 | if (!TEST_int_eq(fixture->pkistatus, status) |
55 | || !TEST_str_eq(fixture->str, ossl_cmp_PKIStatus_to_string(status))) | |
56 | goto end; | |
57 | ||
58 | if (!TEST_ptr(statusString = | |
62dcd2aa | 59 | sk_ASN1_UTF8STRING_value(ossl_cmp_pkisi_get0_statusString(si), |
4dde554c | 60 | 0)) |
1f365708 MC |
61 | || !TEST_mem_eq(fixture->text, strlen(fixture->text), |
62 | (char *)statusString->data, statusString->length)) | |
4dde554c DDO |
63 | goto end; |
64 | ||
65 | if (!TEST_int_eq(fixture->pkifailure, | |
66 | ossl_cmp_pkisi_get_pkifailureinfo(si))) | |
67 | goto end; | |
68 | for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++) | |
69 | if (!TEST_int_eq((fixture->pkifailure >> i) & 1, | |
62dcd2aa | 70 | ossl_cmp_pkisi_check_pkifailureinfo(si, i))) |
4dde554c DDO |
71 | goto end; |
72 | ||
73 | res = 1; | |
74 | ||
75 | end: | |
76 | OSSL_CMP_PKISI_free(si); | |
77 | return res; | |
78 | } | |
79 | ||
80 | static int test_PKISI(void) | |
81 | { | |
82 | SETUP_TEST_FIXTURE(CMP_STATUS_TEST_FIXTURE, set_up); | |
83 | fixture->pkistatus = OSSL_CMP_PKISTATUS_revocationNotification; | |
84 | fixture->str = "PKIStatus: revocation notification - a revocation of the cert has occurred"; | |
85 | fixture->text = "this is an additional text describing the failure"; | |
86 | fixture->pkifailure = OSSL_CMP_CTX_FAILINFO_unsupportedVersion | | |
87 | OSSL_CMP_CTX_FAILINFO_badDataFormat; | |
88 | EXECUTE_TEST(execute_PKISI_test, tear_down); | |
89 | return result; | |
90 | } | |
91 | ||
92 | ||
93 | ||
94 | void cleanup_tests(void) | |
95 | { | |
96 | return; | |
97 | } | |
98 | ||
99 | int setup_tests(void) | |
100 | { | |
101 | /*- | |
102 | * this tests all of: | |
62dcd2aa DDO |
103 | * OSSL_CMP_STATUSINFO_new() |
104 | * ossl_cmp_pkisi_get_status() | |
4dde554c | 105 | * ossl_cmp_PKIStatus_to_string() |
62dcd2aa | 106 | * ossl_cmp_pkisi_get0_statusString() |
4dde554c | 107 | * ossl_cmp_pkisi_get_pkifailureinfo() |
62dcd2aa | 108 | * ossl_cmp_pkisi_check_pkifailureinfo() |
4dde554c DDO |
109 | */ |
110 | ADD_TEST(test_PKISI); | |
111 | return 1; | |
112 | } |