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:
*;