]>
Commit | Line | Data |
---|---|---|
4dde554c | 1 | /* |
33388b44 | 2 | * Copyright 2007-2020 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 DDO |
60 | 0)) |
61 | || !TEST_str_eq(fixture->text, (char *)statusString->data)) | |
62 | goto end; | |
63 | ||
64 | if (!TEST_int_eq(fixture->pkifailure, | |
65 | ossl_cmp_pkisi_get_pkifailureinfo(si))) | |
66 | goto end; | |
67 | for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++) | |
68 | if (!TEST_int_eq((fixture->pkifailure >> i) & 1, | |
62dcd2aa | 69 | ossl_cmp_pkisi_check_pkifailureinfo(si, i))) |
4dde554c DDO |
70 | goto end; |
71 | ||
72 | res = 1; | |
73 | ||
74 | end: | |
75 | OSSL_CMP_PKISI_free(si); | |
76 | return res; | |
77 | } | |
78 | ||
79 | static int test_PKISI(void) | |
80 | { | |
81 | SETUP_TEST_FIXTURE(CMP_STATUS_TEST_FIXTURE, set_up); | |
82 | fixture->pkistatus = OSSL_CMP_PKISTATUS_revocationNotification; | |
83 | fixture->str = "PKIStatus: revocation notification - a revocation of the cert has occurred"; | |
84 | fixture->text = "this is an additional text describing the failure"; | |
85 | fixture->pkifailure = OSSL_CMP_CTX_FAILINFO_unsupportedVersion | | |
86 | OSSL_CMP_CTX_FAILINFO_badDataFormat; | |
87 | EXECUTE_TEST(execute_PKISI_test, tear_down); | |
88 | return result; | |
89 | } | |
90 | ||
91 | ||
92 | ||
93 | void cleanup_tests(void) | |
94 | { | |
95 | return; | |
96 | } | |
97 | ||
98 | int setup_tests(void) | |
99 | { | |
100 | /*- | |
101 | * this tests all of: | |
62dcd2aa DDO |
102 | * OSSL_CMP_STATUSINFO_new() |
103 | * ossl_cmp_pkisi_get_status() | |
4dde554c | 104 | * ossl_cmp_PKIStatus_to_string() |
62dcd2aa | 105 | * ossl_cmp_pkisi_get0_statusString() |
4dde554c | 106 | * ossl_cmp_pkisi_get_pkifailureinfo() |
62dcd2aa | 107 | * ossl_cmp_pkisi_check_pkifailureinfo() |
4dde554c DDO |
108 | */ |
109 | ADD_TEST(test_PKISI); | |
110 | return 1; | |
111 | } |