From fe5632e60345f374efc97c31c30c90730ce12ae5 Mon Sep 17 00:00:00 2001 From: Klas Lindfors Date: Mon, 16 Jun 2014 12:35:28 +0200 Subject: [PATCH] start library structure --- lib/Makefile.am | 2 +- lib/internal.h | 38 ++++++++++++++++++++++++++++++++++++++ lib/ykpiv.c | 30 ++++++++++++++++++++++++++++++ lib/ykpiv.h | 5 +++++ lib/ykpiv.map | 2 ++ 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 lib/internal.h diff --git a/lib/Makefile.am b/lib/Makefile.am index 2fddc41..72b2229 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -29,7 +29,7 @@ AM_CPPFLAGS = $(OPENSSL_CFLAGS) $(PCSC_CFLAGS) lib_LTLIBRARIES = libykpiv.la -libykpiv_la_SOURCES = ykpiv.c version.c ykpiv.pc.in ykpiv.map +libykpiv_la_SOURCES = ykpiv.c version.c ykpiv.pc.in ykpiv.map internal.h libykpiv_la_includedir = $(includedir)/ykpiv libykpiv_la_include_HEADERS = ykpiv.h ykpiv-version.h diff --git a/lib/internal.h b/lib/internal.h new file mode 100644 index 0000000..d213456 --- /dev/null +++ b/lib/internal.h @@ -0,0 +1,38 @@ + /* + * 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. + * + */ + +#ifndef YKPIV_INTERNAL_H +#define YKPIV_INTERNAL_H + +struct ykpiv_state { + SCARDCONTEXT card; + SCARDHANDLE cardHandle; +}; + +#endif diff --git a/lib/ykpiv.c b/lib/ykpiv.c index 312531b..3467b0c 100644 --- a/lib/ykpiv.c +++ b/lib/ykpiv.c @@ -26,3 +26,33 @@ * for the parts of OpenSSL used as well as that of the covered work. * */ + +#include +#include + +#if BACKEND_PCSC +#if defined HAVE_PCSC_WINSCARD_H +# include +# include +#else +# include +#endif +#endif + +#include "internal.h" +#include "ykpiv.h" + +int ykpiv_init(ykpiv_state **state) { + ykpiv_state *s = malloc(sizeof(ykpiv_state)); + if(s == NULL) { + return -1; + } + memset(s, 0, sizeof(ykpiv_state)); + *state = s; + return 0; +} + +int ykpiv_done(ykpiv_state *state) { + free(state); + return 0; +} diff --git a/lib/ykpiv.h b/lib/ykpiv.h index b4f2a8c..6b74800 100644 --- a/lib/ykpiv.h +++ b/lib/ykpiv.h @@ -35,6 +35,11 @@ extern "C" { #endif + typedef struct ykpiv_state ykpiv_state; + + int ykpiv_init(ykpiv_state **state); + int ykpiv_done(ykpiv_state *state); + #ifdef __cplusplus } #endif diff --git a/lib/ykpiv.map b/lib/ykpiv.map index a4a66a4..c9a2ae7 100644 --- a/lib/ykpiv.map +++ b/lib/ykpiv.map @@ -28,6 +28,8 @@ YKPIV_0.1.0 { global: ykpiv_check_version; + ykpiv_init; + ykpiv_map; local: *;