From cdcbec814025d87bb468d1fdd3e4ad0664b02825 Mon Sep 17 00:00:00 2001 From: Klas Lindfors Date: Tue, 24 Jun 2014 10:27:52 +0200 Subject: [PATCH] test for parse_name() --- .gitignore | 4 +++ tool/tests/Makefile.am | 12 ++++++++- tool/tests/parse_name.c | 60 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 tool/tests/parse_name.c diff --git a/.gitignore b/.gitignore index a3d3236..baea115 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,7 @@ tool/util.o tool/tests/basic.sh.log tool/tests/basic.sh.trs tool/tests/test-suite.log +tool/tests/parse_name +tool/tests/parse_name.log +tool/tests/parse_name.o +tool/tests/parse_name.trs diff --git a/tool/tests/Makefile.am b/tool/tests/Makefile.am index 88b2b85..a25a3f1 100644 --- a/tool/tests/Makefile.am +++ b/tool/tests/Makefile.am @@ -26,4 +26,14 @@ TESTS_ENVIRONMENT = export VERSION=$(VERSION); export EXEEXT=$(EXEEXT); -TESTS = basic.sh +AM_CFLAGS = $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CPPFLAGS += -I$(top_srcdir)/tool -I$(top_builddir)/tool +AM_CPPFLAGS += $(OPENSSL_CFLAGS) + +AM_LDFLAGS = -no-install + +parse_name_LDADD = ../libpiv_util.la $(OPENSSL_LIBS) + +check_PROGRAMS = parse_name +TESTS = basic.sh $(check_PROGRAMS) diff --git a/tool/tests/parse_name.c b/tool/tests/parse_name.c new file mode 100644 index 0000000..e3319a2 --- /dev/null +++ b/tool/tests/parse_name.c @@ -0,0 +1,60 @@ + /* + * Copyright (c) 2014 Yubico AB + * All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this program, or any covered work, by linking or + * combining it with the OpenSSL project's OpenSSL library (or a + * modified version of that library), containing parts covered by the + * terms of the OpenSSL or SSLeay licenses, We grant you additional + * permission to convey the resulting work. Corresponding Source for a + * non-source form of such a combination shall include the source code + * for the parts of OpenSSL used as well as that of the covered work. + */ + +#include + +#ifdef _WIN32 +#include +#endif + +#include + +#include "util.h" + +static void test_name(char *name, char *expected) { + char buf[1024]; + X509_NAME *parsed = parse_name(name); + BIO *bio = BIO_new(BIO_s_mem()); + const char none[] = {0}; + + X509_NAME_print_ex(bio, parsed, 0, XN_FLAG_ONELINE); + BIO_write(bio, none, 1); + BIO_read(bio, buf, 1024); + BIO_free(bio); + X509_NAME_free(parsed); + if(strcmp(buf, expected) != 0) { + printf("Names not matching: '%s' != '%s'\n", expected, buf); + exit(EXIT_FAILURE); + } +} + +int main(void) { + test_name("/CN=test foo/", "CN = test foo"); + test_name("/CN=test/OU=bar/O=EXAMPLE/", "CN = test, OU = bar, O = EXAMPLE"); + return EXIT_SUCCESS; +}