diff options
author | Dr. David von Oheimb <David.von.Oheimb@siemens.com> | 2019-09-27 10:22:23 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2019-10-29 15:17:39 +0100 |
commit | 4dde554c6ae2375ce53b24cc535124355c339462 (patch) | |
tree | a60fc6631418823956f1553307f524f1017cbd16 /test/cmp_status_test.c | |
parent | Fix an s_server arbitrary file read issue on Windows (diff) | |
download | openssl-4dde554c6ae2375ce53b24cc535124355c339462.tar.xz openssl-4dde554c6ae2375ce53b24cc535124355c339462.zip |
chunk 5 of CMP contribution to OpenSSL
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10036)
Diffstat (limited to 'test/cmp_status_test.c')
-rw-r--r-- | test/cmp_status_test.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/test/cmp_status_test.c b/test/cmp_status_test.c new file mode 100644 index 0000000000..7311c2e444 --- /dev/null +++ b/test/cmp_status_test.c @@ -0,0 +1,111 @@ +/* + * Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "cmp_testlib.h" + +typedef struct test_fixture { + const char *test_case_name; + int pkistatus; + const char *str; /* Not freed by tear_down */ + const char *text; /* Not freed by tear_down */ + int pkifailure; +} CMP_STATUS_TEST_FIXTURE; + +static CMP_STATUS_TEST_FIXTURE *set_up(const char *const test_case_name) +{ + CMP_STATUS_TEST_FIXTURE *fixture; + + if (!TEST_ptr(fixture = OPENSSL_zalloc(sizeof(*fixture)))) + return NULL; + fixture->test_case_name = test_case_name; + return fixture; +} + +static void tear_down(CMP_STATUS_TEST_FIXTURE *fixture) +{ + OPENSSL_free(fixture); +} + + +/* + * Tests PKIStatusInfo creation and get-functions + */ +static int execute_PKISI_test(CMP_STATUS_TEST_FIXTURE *fixture) +{ + OSSL_CMP_PKISI *si = NULL; + int status; + ASN1_UTF8STRING *statusString = NULL; + int res = 0, i; + + if (!TEST_ptr(si = ossl_cmp_statusinfo_new(fixture->pkistatus, + fixture->pkifailure, + fixture->text))) + goto end; + + status = ossl_cmp_pkisi_get_pkistatus(si); + if (!TEST_int_eq(fixture->pkistatus, status) + || !TEST_str_eq(fixture->str, ossl_cmp_PKIStatus_to_string(status))) + goto end; + + if (!TEST_ptr(statusString = + sk_ASN1_UTF8STRING_value(ossl_cmp_pkisi_get0_statusstring(si), + 0)) + || !TEST_str_eq(fixture->text, (char *)statusString->data)) + goto end; + + if (!TEST_int_eq(fixture->pkifailure, + ossl_cmp_pkisi_get_pkifailureinfo(si))) + goto end; + for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++) + if (!TEST_int_eq((fixture->pkifailure >> i) & 1, + ossl_cmp_pkisi_pkifailureinfo_check(si, i))) + goto end; + + res = 1; + + end: + OSSL_CMP_PKISI_free(si); + return res; +} + +static int test_PKISI(void) +{ + SETUP_TEST_FIXTURE(CMP_STATUS_TEST_FIXTURE, set_up); + fixture->pkistatus = OSSL_CMP_PKISTATUS_revocationNotification; + fixture->str = "PKIStatus: revocation notification - a revocation of the cert has occurred"; + fixture->text = "this is an additional text describing the failure"; + fixture->pkifailure = OSSL_CMP_CTX_FAILINFO_unsupportedVersion | + OSSL_CMP_CTX_FAILINFO_badDataFormat; + EXECUTE_TEST(execute_PKISI_test, tear_down); + return result; +} + + + +void cleanup_tests(void) +{ + return; +} + +int setup_tests(void) +{ + /*- + * this tests all of: + * ossl_cmp_statusinfo_new() + * ossl_cmp_pkisi_get_pkistatus() + * ossl_cmp_PKIStatus_to_string() + * ossl_cmp_pkisi_get0_statusstring() + * ossl_cmp_pkisi_get_pkifailureinfo() + * ossl_cmp_pkisi_pkifailureinfo_check() + */ + ADD_TEST(test_PKISI); + return 1; +} |