summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/reference/gcr/gcr-sections.txt4
-rw-r--r--egg/tests/Makefile.am6
-rw-r--r--egg/tests/test-padding.c2
-rw-r--r--egg/tests/unit-test-asn1.c4
-rw-r--r--egg/tests/unit-test-dh.c2
-rw-r--r--egg/tests/unit-test-hex.c2
-rw-r--r--egg/tests/unit-test-oid.c2
-rw-r--r--egg/tests/unit-test-openssl.c4
-rw-r--r--egg/tests/unit-test-secmem.c2
-rw-r--r--egg/tests/unit-test-spawn.c18
-rw-r--r--egg/tests/unit-test-symkey.c2
-rw-r--r--gcr/tests/Makefile.am8
-rw-r--r--gcr/tests/unit-test-certificate.c4
-rw-r--r--gcr/tests/unit-test-parser.c6
-rw-r--r--gp11/tests/Makefile.am8
-rw-r--r--gp11/tests/test-gp11-mechanism.c2
-rw-r--r--gp11/tests/unit-test-gp11-attributes.c2
-rw-r--r--gp11/tests/unit-test-gp11-crypto.c30
-rw-r--r--gp11/tests/unit-test-gp11-module.c2
-rw-r--r--gp11/tests/unit-test-gp11-object.c18
-rw-r--r--gp11/tests/unit-test-gp11-session.c20
-rw-r--r--gp11/tests/unit-test-gp11-slot.c2
-rw-r--r--testing/Makefile.am19
-rw-r--r--testing/ca-example/certs/ca.crt23
-rw-r--r--testing/ca-example/certs/client.crt19
-rw-r--r--testing/ca-example/certs/email.crt19
-rw-r--r--testing/ca-example/certs/generic-dsa.crt22
-rw-r--r--testing/ca-example/database.txt0
-rw-r--r--testing/ca-example/keys/ca.key15
-rw-r--r--testing/ca-example/keys/client.key27
-rw-r--r--testing/ca-example/keys/dsa.params9
-rw-r--r--testing/ca-example/keys/email.key27
-rw-r--r--testing/ca-example/keys/generic-dsa.key12
-rw-r--r--testing/ca-example/profiles/ca.conf32
-rw-r--r--testing/ca-example/profiles/extensions.conf16
-rw-r--r--testing/ca-example/profiles/request.conf18
-rw-r--r--testing/ca-example/requests/client.req17
-rw-r--r--testing/ca-example/requests/email.req17
-rw-r--r--testing/ca-example/requests/generic-dsa.req16
-rw-r--r--testing/ca-example/serial.txt1
40 files changed, 382 insertions, 77 deletions
diff --git a/docs/reference/gcr/gcr-sections.txt b/docs/reference/gcr/gcr-sections.txt
index 6dd180c..ac83c61 100644
--- a/docs/reference/gcr/gcr-sections.txt
+++ b/docs/reference/gcr/gcr-sections.txt
@@ -198,7 +198,3 @@ GCR_DATA_ERROR
gcr_data_error_get_domain
</SECTION>
-<SECTION>
-<FILE>run-auto-test</FILE>
-</SECTION>
-
diff --git a/egg/tests/Makefile.am b/egg/tests/Makefile.am
index 9c31d86..7e166de 100644
--- a/egg/tests/Makefile.am
+++ b/egg/tests/Makefile.am
@@ -2,7 +2,7 @@ asn1-def-test.h: test.asn
$(ASN1PARSER) -o asn1-def-test.h $(srcdir)/test.asn
# Test files should be listed in order they need to run
-UNIT_AUTO = \
+TESTING_FILES = \
unit-test-asn1.c \
unit-test-cleanup.c \
unit-test-hex.c \
@@ -17,14 +17,14 @@ UNIT_AUTO = \
UNIT_PROMPT =
-UNIT_LIBS = \
+TESTING_LIBS = \
$(top_builddir)/egg/libegg.la
EXTRA_DIST = \
test.asn \
test-data
-include $(top_srcdir)/tests/gtest.make
+include $(top_srcdir)/testing/testing.make
BUILT_SOURCES += \
asn1-def-test.h
diff --git a/egg/tests/test-padding.c b/egg/tests/test-padding.c
index 569f07f..8a02c9a 100644
--- a/egg/tests/test-padding.c
+++ b/egg/tests/test-padding.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg/egg-padding.h"
diff --git a/egg/tests/unit-test-asn1.c b/egg/tests/unit-test-asn1.c
index 20301a0..a1c5327 100644
--- a/egg/tests/unit-test-asn1.c
+++ b/egg/tests/unit-test-asn1.c
@@ -23,7 +23,7 @@
#include "config.h"
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg/egg-asn1.h"
#include "egg/egg-oid.h"
@@ -55,7 +55,7 @@ DEFINE_SETUP(asn1_tree)
/* -------- */
- data_cert = test_data_read ("test-certificate-1.der", &n_data_cert);
+ data_cert = testing_data_read ("test-certificate-1.der", &n_data_cert);
/* We'll be catching this error later */
pkix = egg_asn1_get_pkix_asn1type ();
diff --git a/egg/tests/unit-test-dh.c b/egg/tests/unit-test-dh.c
index 1111fd4..5adba5b 100644
--- a/egg/tests/unit-test-dh.c
+++ b/egg/tests/unit-test-dh.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg-dh.h"
#include "egg-secure-memory.h"
diff --git a/egg/tests/unit-test-hex.c b/egg/tests/unit-test-hex.c
index f620991..93ad7ef 100644
--- a/egg/tests/unit-test-hex.c
+++ b/egg/tests/unit-test-hex.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg-hex.h"
diff --git a/egg/tests/unit-test-oid.c b/egg/tests/unit-test-oid.c
index dd3eab1..fc9ea9a 100644
--- a/egg/tests/unit-test-oid.c
+++ b/egg/tests/unit-test-oid.c
@@ -23,7 +23,7 @@
#include "config.h"
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg/egg-oid.h"
diff --git a/egg/tests/unit-test-openssl.c b/egg/tests/unit-test-openssl.c
index d0719ee..909a1da 100644
--- a/egg/tests/unit-test-openssl.c
+++ b/egg/tests/unit-test-openssl.c
@@ -23,7 +23,7 @@
#include "config.h"
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg-symkey.h"
#include "egg-openssl.h"
@@ -76,7 +76,7 @@ DEFINE_TEST(parse_reference)
gsize n_input;
guint num;
- input = test_data_read ("pem-rsa-enc.key", &n_input);
+ input = testing_data_read ("pem-rsa-enc.key", &n_input);
num = egg_openssl_pem_parse (input, n_input, parse_reference, NULL);
g_assert ("couldn't PEM block in reference data" && num == 1);
diff --git a/egg/tests/unit-test-secmem.c b/egg/tests/unit-test-secmem.c
index 32e6813..a140953 100644
--- a/egg/tests/unit-test-secmem.c
+++ b/egg/tests/unit-test-secmem.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg/egg-secure-memory.h"
diff --git a/egg/tests/unit-test-spawn.c b/egg/tests/unit-test-spawn.c
index 7ed7cfd..2e53b53 100644
--- a/egg/tests/unit-test-spawn.c
+++ b/egg/tests/unit-test-spawn.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg-spawn.h"
@@ -113,7 +113,7 @@ completed_func (gpointer user_data)
g_assert (!data->completed);
data->completed = TRUE;
if (data->is_async)
- test_wait_stop ();
+ testing_wait_stop ();
}
static void
@@ -172,7 +172,7 @@ DEFINE_TEST(test_spawn_sync)
data.parent_pid = getpid();
data.index = 80;
- ret = egg_spawn_sync_with_callbacks (test_data_directory (),
+ ret = egg_spawn_sync_with_callbacks (testing_data_directory (),
echo_argv, NULL, 0, &pid,
&echo_callbacks, &data,
&exit_status, &error);
@@ -192,7 +192,7 @@ DEFINE_TEST(test_spawn_sync_error)
GError *error = NULL;
gboolean ret;
- ret = egg_spawn_sync_with_callbacks (test_data_directory (),
+ ret = egg_spawn_sync_with_callbacks (testing_data_directory (),
error_argv, NULL, 0, NULL,
NULL, NULL,
NULL, &error);
@@ -214,7 +214,7 @@ DEFINE_TEST(test_spawn_async)
data.index = 80;
data.is_async = TRUE;
- ret = egg_spawn_async_with_callbacks (test_data_directory (),
+ ret = egg_spawn_async_with_callbacks (testing_data_directory (),
echo_argv, NULL, 0, &pid,
&echo_callbacks, &data,
NULL, &error);
@@ -224,7 +224,7 @@ DEFINE_TEST(test_spawn_async)
g_assert (!data.output);
g_assert (!data.completed);
- test_wait_until (2000);
+ testing_wait_until (2000);
g_assert (data.finalized);
g_assert (data.completed);
@@ -242,7 +242,7 @@ DEFINE_TEST(test_spawn_async_none)
data.parent_pid = getpid();
data.is_async = TRUE;
- ret = egg_spawn_async_with_callbacks (test_data_directory (),
+ ret = egg_spawn_async_with_callbacks (testing_data_directory (),
echo_argv, NULL, 0, NULL,
&null_callbacks, &data,
NULL, &error);
@@ -252,7 +252,7 @@ DEFINE_TEST(test_spawn_async_none)
g_assert (!data.completed);
g_assert (!data.output);
- test_wait_until (2000);
+ testing_wait_until (2000);
g_assert (data.finalized);
g_assert (data.completed);
@@ -264,7 +264,7 @@ DEFINE_TEST(test_spawn_async_error)
GError *error = NULL;
guint ret;
- ret = egg_spawn_async_with_callbacks (test_data_directory (),
+ ret = egg_spawn_async_with_callbacks (testing_data_directory (),
error_argv, NULL, 0, NULL,
NULL, NULL,
NULL, &error);
diff --git a/egg/tests/unit-test-symkey.c b/egg/tests/unit-test-symkey.c
index 228312f..f175aa9 100644
--- a/egg/tests/unit-test-symkey.c
+++ b/egg/tests/unit-test-symkey.c
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg-libgcrypt.h"
#include "egg-secure-memory.h"
diff --git a/gcr/tests/Makefile.am b/gcr/tests/Makefile.am
index 8d7134c..27e2a2a 100644
--- a/gcr/tests/Makefile.am
+++ b/gcr/tests/Makefile.am
@@ -1,19 +1,19 @@
# Test files should be listed in order they need to run
-UNIT_AUTO = \
+TESTING_FILES = \
unit-test-certificate.c \
unit-test-parser.c
-UNIT_LIBS = \
+TESTING_LIBS = \
$(top_builddir)/gcr/libgcr.la \
$(top_builddir)/egg/libegg.la \
$(top_builddir)/egg/libegg-entry-buffer.la \
$(top_builddir)/gp11/libgp11.la
-UNIT_FLAGS = \
+TESTING_FLAGS = \
-DGCR_API_SUBJECT_TO_CHANGE
-include $(top_srcdir)/tests/gtest.make
+include $(top_srcdir)/testing/testing.make
# ------------------------------------------------------------------
diff --git a/gcr/tests/unit-test-certificate.c b/gcr/tests/unit-test-certificate.c
index d7ef979..518365f 100644
--- a/gcr/tests/unit-test-certificate.c
+++ b/gcr/tests/unit-test-certificate.c
@@ -1,6 +1,6 @@
#include "config.h"
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "gcr-certificate.h"
#include "gcr-simple-certificate.h"
@@ -16,7 +16,7 @@ DEFINE_SETUP(certificate)
guchar *contents;
gsize n_contents;
- contents = test_data_read ("der-certificate.crt", &n_contents);
+ contents = testing_data_read ("der-certificate.crt", &n_contents);
certificate = gcr_simple_certificate_new (contents, n_contents);
g_assert (certificate);
g_free (contents);
diff --git a/gcr/tests/unit-test-parser.c b/gcr/tests/unit-test-parser.c
index 4a2cfdd..defd525 100644
--- a/gcr/tests/unit-test-parser.c
+++ b/gcr/tests/unit-test-parser.c
@@ -23,7 +23,7 @@
#include "config.h"
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "egg/egg-error.h"
#include "egg/egg-secure-memory.h"
@@ -114,7 +114,7 @@ DEFINE_TEST(parse_all)
gsize len;
GDir *dir;
- dir = g_dir_open (test_data_directory (), 0, NULL);
+ dir = g_dir_open (testing_data_directory (), 0, NULL);
g_assert (dir);
for (;;) {
@@ -125,7 +125,7 @@ DEFINE_TEST(parse_all)
continue;
filedesc = filename;
- contents = test_data_read (filename, &len);
+ contents = testing_data_read (filename, &len);
result = gcr_parser_parse_data (parser, contents, len, &err);
if (!result) {
diff --git a/gp11/tests/Makefile.am b/gp11/tests/Makefile.am
index b896cd9..5c23f3e 100644
--- a/gp11/tests/Makefile.am
+++ b/gp11/tests/Makefile.am
@@ -1,6 +1,6 @@
# Keep these in the order they should be tested
-UNIT_AUTO = \
+TESTING_FILES = \
unit-test-gp11-attributes.c \
test-gp11-mechanism.c \
unit-test-gp11-module.c \
@@ -9,11 +9,11 @@ UNIT_AUTO = \
unit-test-gp11-object.c \
unit-test-gp11-crypto.c
-UNIT_FLAGS = \
+TESTING_FLAGS = \
-I$(top_srcdir)/gp11/ \
-DEXTERNAL_TEST
-UNIT_LIBS = \
+TESTING_LIBS = \
$(GIO_LIBS) \
$(top_builddir)/gp11/libgp11.la \
libgp11-test-module.la
@@ -21,7 +21,7 @@ UNIT_LIBS = \
EXTRA_DIST = \
gp11-test.h
-include $(top_srcdir)/tests/gtest.make
+include $(top_srcdir)/testing/testing.make
# ------------------------------------------------------------------------
diff --git a/gp11/tests/test-gp11-mechanism.c b/gp11/tests/test-gp11-mechanism.c
index 68543a2..23eeddb 100644
--- a/gp11/tests/test-gp11-mechanism.c
+++ b/gp11/tests/test-gp11-mechanism.c
@@ -2,7 +2,7 @@
#include <glib.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "gp11-test.h"
#define MECH_TYPE 55
diff --git a/gp11/tests/unit-test-gp11-attributes.c b/gp11/tests/unit-test-gp11-attributes.c
index fc5619f..48d8be1 100644
--- a/gp11/tests/unit-test-gp11-attributes.c
+++ b/gp11/tests/unit-test-gp11-attributes.c
@@ -2,7 +2,7 @@
#include <glib.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "gp11-test.h"
#define ATTR_TYPE 55
diff --git a/gp11/tests/unit-test-gp11-crypto.c b/gp11/tests/unit-test-gp11-crypto.c
index ed3806c..8f9fccb 100644
--- a/gp11/tests/unit-test-gp11-crypto.c
+++ b/gp11/tests/unit-test-gp11-crypto.c
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include <glib.h>
@@ -44,7 +44,7 @@ fetch_async_result (GObject *source, GAsyncResult *result, gpointer user_data)
{
*((GAsyncResult**)user_data) = result;
g_object_ref (result);
- test_wait_stop ();
+ testing_wait_stop ();
}
static GP11Object*
@@ -159,7 +159,7 @@ DEFINE_TEST(encrypt)
/* Asynchronous one */
gp11_session_encrypt_async (session, key, mech, (const guchar*)"second chance", 14, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
/* Get the result */
@@ -206,7 +206,7 @@ DEFINE_TEST(decrypt)
/* Asynchronous one */
gp11_session_decrypt_async (session, key, mech, (const guchar*)"FAT CHANCE", 11, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
/* Get the result */
@@ -279,7 +279,7 @@ DEFINE_TEST(sign)
/* Asynchronous one */
gp11_session_sign_async (session, key, mech, (const guchar*)"Conrad", 7, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
/* Get the result */
@@ -330,7 +330,7 @@ DEFINE_TEST(verify)
/* Asynchronous one */
gp11_session_verify_async (session, key, mech, (const guchar*)"Labarbara", 10,
(const guchar*)"my-prefix:Labarbara", 20, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_verify_finish (session, result, &error);
SUCCESS_RES (ret, error);
@@ -340,7 +340,7 @@ DEFINE_TEST(verify)
result = NULL;
gp11_session_verify_async (session, key, mech, (const guchar*)"Labarbara", 10,
(const guchar*)"my-prefix:Labarxoro", 20, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_verify_finish (session, result, &error);
FAIL_RES (ret, error);
@@ -385,7 +385,7 @@ DEFINE_TEST(generate_key_pair)
/* Asynchronous one */
mech->type = CKM_GENERATE;
gp11_session_generate_key_pair_async (session, mech, pub_attrs, prv_attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_generate_key_pair_finish (session, result, &pub_key, &prv_key, &error);
SUCCESS_RES (ret, error);
@@ -398,7 +398,7 @@ DEFINE_TEST(generate_key_pair)
mech->type = 0;
pub_key = prv_key = NULL;
gp11_session_generate_key_pair_async (session, mech, pub_attrs, prv_attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_generate_key_pair_finish (session, result, &pub_key, &prv_key, &error);
FAIL_RES (ret, error);
@@ -449,7 +449,7 @@ DEFINE_TEST(wrap_key)
/* Asynchronous one */
mech->type = CKM_WRAP;
gp11_session_wrap_key_async (session, wrapper, mech, wrapped, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
output = gp11_session_wrap_key_finish (session, result, &n_output, &error);
SUCCESS_RES (output, error);
@@ -463,7 +463,7 @@ DEFINE_TEST(wrap_key)
mech->type = 0;
n_output = 0;
gp11_session_wrap_key_async (session, wrapper, mech, wrapped, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
output = gp11_session_wrap_key_finish (session, result, &n_output, &error);
FAIL_RES (output, error);
@@ -510,7 +510,7 @@ DEFINE_TEST(unwrap_key)
/* Asynchronous one */
mech->type = CKM_WRAP;
gp11_session_unwrap_key_async (session, wrapper, mech, "special", 7, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
unwrapped = gp11_session_unwrap_key_finish (session, result, &error);
SUCCESS_RES (unwrapped, error);
@@ -523,7 +523,7 @@ DEFINE_TEST(unwrap_key)
result = NULL;
mech->type = 0;
gp11_session_unwrap_key_async (session, wrapper, mech, "special", 6, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
unwrapped = gp11_session_unwrap_key_finish (session, result, &error);
FAIL_RES (unwrapped, error);
@@ -570,7 +570,7 @@ g_printerr ("derived is: %lu", gp11_object_get_handle (derived));
/* Asynchronous one */
mech->type = CKM_DERIVE;
gp11_session_derive_key_async (session, wrapper, mech, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
derived = gp11_session_derive_key_finish (session, result, &error);
SUCCESS_RES (derived, error);
@@ -583,7 +583,7 @@ g_printerr ("derived is: %lu", gp11_object_get_handle (derived));
result = NULL;
mech->type = 0;
gp11_session_derive_key_async (session, wrapper, mech, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
derived = gp11_session_derive_key_finish (session, result, &error);
FAIL_RES (derived, error);
diff --git a/gp11/tests/unit-test-gp11-module.c b/gp11/tests/unit-test-gp11-module.c
index 8fabc2d..7ff14a1 100644
--- a/gp11/tests/unit-test-gp11-module.c
+++ b/gp11/tests/unit-test-gp11-module.c
@@ -2,7 +2,7 @@
#include <glib.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "gp11-test.h"
static GP11Module *module = NULL;
diff --git a/gp11/tests/unit-test-gp11-object.c b/gp11/tests/unit-test-gp11-object.c
index a0f8eb2..d5d0a98 100644
--- a/gp11/tests/unit-test-gp11-object.c
+++ b/gp11/tests/unit-test-gp11-object.c
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include <glib.h>
@@ -94,7 +94,7 @@ fetch_async_result (GObject *source, GAsyncResult *result, gpointer user_data)
{
*((GAsyncResult**)user_data) = result;
g_object_ref (result);
- test_wait_stop ();
+ testing_wait_stop ();
}
DEFINE_TEST(create_object)
@@ -139,7 +139,7 @@ DEFINE_TEST(create_object)
/* Using async */
gp11_session_create_object_async (session, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
object = gp11_session_create_object_finish (session, result, &err);
@@ -205,7 +205,7 @@ DEFINE_TEST(destroy_object)
/* Using async */
gp11_object_destroy_async (object, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_object_destroy_finish (object, result, &err);
@@ -247,7 +247,7 @@ DEFINE_TEST(get_attributes)
/* Async */
attrs = gp11_attributes_new_empty (CKA_CLASS, CKA_LABEL, GP11_INVALID);
gp11_object_get_async (object, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
attrs_ret = gp11_object_get_finish (object, result, &err);
@@ -289,7 +289,7 @@ DEFINE_TEST(get_data_attribute)
/* Async */
gp11_object_get_data_async (object, CKA_CLASS, NULL, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
klass = gp11_object_get_data_finish (object, result, &n_data, &err);
@@ -348,7 +348,7 @@ DEFINE_TEST(set_attributes)
/* Async */
gp11_object_set_async (object, templ, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_object_set_finish (object, result, &err);
@@ -399,7 +399,7 @@ DEFINE_TEST(find_objects)
/* Async, None */
gp11_attributes_add_string (templ, CKA_LABEL, "blah blah");
gp11_session_find_objects_async (session, templ, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
objects = gp11_session_find_objects_finish (session, result, &err);
@@ -436,7 +436,7 @@ DEFINE_TEST(explicit_sessions)
/* Async */
gp11_object_get_data_async (object, CKA_CLASS, NULL, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
klass = gp11_object_get_data_finish (object, result, &n_data, &err);
diff --git a/gp11/tests/unit-test-gp11-session.c b/gp11/tests/unit-test-gp11-session.c
index 0299ce5..d03d45a 100644
--- a/gp11/tests/unit-test-gp11-session.c
+++ b/gp11/tests/unit-test-gp11-session.c
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include <glib.h>
@@ -73,7 +73,7 @@ fetch_async_result (GObject *source, GAsyncResult *result, gpointer user_data)
{
*((GAsyncResult**)user_data) = result;
g_object_ref (result);
- test_wait_stop ();
+ testing_wait_stop ();
}
DEFINE_TEST(open_close_session)
@@ -90,7 +90,7 @@ DEFINE_TEST(open_close_session)
/* Test opening async */
gp11_slot_open_session_async (slot, 0, NULL, NULL, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
/* Get the result */
@@ -132,7 +132,7 @@ DEFINE_TEST(open_reused)
/* Test opening async */
gp11_slot_open_session_async (slot, 0, NULL, NULL, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
sess = gp11_slot_open_session_finish (slot, result, &err);
SUCCESS_RES (sess, err);
@@ -177,7 +177,7 @@ DEFINE_TEST(init_set_pin)
/* init pin async */
gp11_session_init_pin_async (session, (guchar*)"booo", 4, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_init_pin_finish (session, result, &err);
SUCCESS_RES (ret, err);
@@ -186,7 +186,7 @@ DEFINE_TEST(init_set_pin)
/* set pin async */
gp11_session_set_pin_async (session, (guchar*)"booo", 4, (guchar*)"tooo", 4, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_set_pin_finish (session, result, &err);
SUCCESS_RES (ret, err);
@@ -217,7 +217,7 @@ DEFINE_TEST(login_logout)
/* login async */
gp11_session_login_async (session, CKU_USER, (guchar*)"booo", 4, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_login_finish (session, result, &err);
@@ -228,7 +228,7 @@ DEFINE_TEST(login_logout)
/* logout async */
gp11_session_logout_async (session, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
ret = gp11_session_logout_finish (session, result, &err);
@@ -298,7 +298,7 @@ DEFINE_TEST(auto_login)
/* Now try the same thing, but asyncronously */
gp11_slot_open_session_async (slot, CKF_RW_SESSION, NULL, NULL, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
new_session = gp11_slot_open_session_finish (slot, result, &err);
SUCCESS_RES (new_session, err);
@@ -307,7 +307,7 @@ DEFINE_TEST(auto_login)
result = NULL;
gp11_session_create_object_async (session, attrs, NULL, fetch_async_result, &result);
- test_wait_until (500);
+ testing_wait_until (500);
g_assert (result != NULL);
object = gp11_session_create_object_finish (session, result, &err);
SUCCESS_RES (object, err);
diff --git a/gp11/tests/unit-test-gp11-slot.c b/gp11/tests/unit-test-gp11-slot.c
index 175cc36..1fcda58 100644
--- a/gp11/tests/unit-test-gp11-slot.c
+++ b/gp11/tests/unit-test-gp11-slot.c
@@ -2,7 +2,7 @@
#include <glib.h>
#include <string.h>
-#include "run-auto-test.h"
+#include "test-framework.h"
#include "gp11-test.h"
static GP11Module *module = NULL;
diff --git a/testing/Makefile.am b/testing/Makefile.am
new file mode 100644
index 0000000..82bb215
--- /dev/null
+++ b/testing/Makefile.am
@@ -0,0 +1,19 @@
+
+EXTRA_DIST = \
+ ca-example \
+ testing.c testing.h \
+ testing-build.sh \
+ testing.make
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(GTK_CFLAGS) \
+ $(GLIB_CFLAGS)
+
+LIBS = \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(GTHREAD_LIBS)
+
+noinst_PROGRAMS =
diff --git a/testing/ca-example/certs/ca.crt b/testing/ca-example/certs/ca.crt
new file mode 100644
index 0000000..b8d6008
--- /dev/null
+++ b/testing/ca-example/certs/ca.crt
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDxjCCAy+gAwIBAgIJAOpd4Em2fjp3MA0GCSqGSIb3DQEBBQUAMIGGMRMwEQYK
+CZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYHRVhBTVBMRTEeMBwGA1UE
+CxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
+bTEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBsZS5jb20wHhcNMDcxMjIwMTc1NjA2
+WhcNMzUwNTA4MTc1NjA2WjCBhjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmS
+JomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0
+eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkqhkiG9w0BCQEWDmNhQGV4
+YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5OjHuXXN2LG3s
+FHISaZZ6L1RSYgRdTenu1nvqkMn/xvzOz385oede1z/7f6BoXyM0kNWCf4SOXtXr
+EIGmQoeURhFfLCnoK8NHfNcel3IPyMPhdJUMJlc3gfpWm+QxjkyqVyMhyYxC9Pmg
+QC7zx4ZKcQrL3zVGYtg8wxmaKY2HwQIDAQABo4IBODCCATQwHQYDVR0OBBYEFNSE
+nYhMCPaaFynFeQ2R5y25+AcFMIG7BgNVHSMEgbMwgbCAFNSEnYhMCPaaFynFeQ2R
+5y25+AcFoYGMpIGJMIGGMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPy
+LGQBGRYHRVhBTVBMRTEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRcw
+FQYDVQQDEw5jYS5leGFtcGxlLmNvbTEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBs
+ZS5jb22CCQDqXeBJtn46dzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAZBgNVHREEEjAQgQ5jYUBleGFtcGxlLmNvbTAZBgNVHRIEEjAQgQ5jYUBleGFt
+cGxlLmNvbTANBgkqhkiG9w0BAQUFAAOBgQA6xjU2aPgMOh2yyz2KCb6d5gNNvfr4
+pLGpZWilbRkA36OOG43zxeRZoumh1ybyOvhm73cMvNihDUyOf7vQe75Qtp5koGPS
+V3mSruhsRGvOZxcV+SJnBj1exKyH3mdaZA74Xg4y5qkUkywPqnP5Y+E6UMJM7Nmw
+kHk2bKJC5vjxoA==
+-----END CERTIFICATE-----
diff --git a/testing/ca-example/certs/client.crt b/testing/ca-example/certs/client.crt
new file mode 100644
index 0000000..ddd4a9a
--- /dev/null
+++ b/testing/ca-example/certs/client.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDBTCCAm6gAwIBAgIBAzANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
+ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
+ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4MTMwOFoXDTA4MDEx
+OTE4MTMwOFowYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+B0VYQU1QTEUxDzANBgNVBAMTBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xpZW50
+QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwSA0
+Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYScp/Rv2WRPlxpe7kYAzzh
+qFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhCJwf3afPvyTGaOVuLO93d
+8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d5T0/B8aZYcpVzUiC9EUw
+fTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzVPZqy9j8/f4943rL6V4Ud
+K0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJeKY06RiLl+DCykweLx8la
+ZjIHKlSZAFHPB+bvsQIDAQABoyIwIDAJBgNVHRMEAjAAMBMGA1UdJQQMMAoGCCsG
+AQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBAGxG+re2c/gVEai91X3RrvpjgfsNIrvW
+xx37s4QOBrJn41xaSKN+qznaNbrBm072Ca8L222e5Bi9xdfopTdZyfYMTHL6XTFU
+ELtdTwWoRl8Uhd/vnM2iVqR8k/iyo6ozUJfg/LEe3jX38wRK2xGufzS5YjEAaVjU
+EVAMfd96036K
+-----END CERTIFICATE-----
diff --git a/testing/ca-example/certs/email.crt b/testing/ca-example/certs/email.crt
new file mode 100644
index 0000000..5e26d92
--- /dev/null
+++ b/testing/ca-example/certs/email.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDEDCCAnmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
+ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
+ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4MTAyOVoXDTA4MDEx
+OTE4MTAyOVowYDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+B0VYQU1QTEUxDjAMBgNVBAMTBWVtYWlsMSAwHgYJKoZIhvcNAQkBFhFlbWFpbEBl
+eGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALGKZRrb
+s6E1i+J0P8bpj2I1nxl/hDkezTgIs0V9SGGEFdwLwG2QqsGu9eD58KCA8pJ65tKG
+XI5XuIozlyw18SfgEL/P4CWWdG99k8Ihyf9UyFP6JE0G0M/8/YDrA1wXaw24adOH
++CkrZMFgS0DzN39gPu8kggYpyv1re7O4Ls+D2zbELu19j4uDWOAzUY9nRPuIXUQD
+/gKpQMlBi8oVH+ts7rLjc2yiTBTqUMU1ioKW7++LFD/CnZLSwg8SDTUsDf3HYr8F
+ejAZGEgpBiy00COOIzxjMiDr5XgJHm4iCmh/rt4F2IsmpCFlBRJm4hCTKGSDyTCR
+mDY5v27F6SgsbckCAwEAAaMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBJAwEwYD
+VR0lBAwwCgYIKwYBBQUHAwQwDQYJKoZIhvcNAQEFBQADgYEAeLL/CxUM8BWu2lSs
+CweOyGyU3vjYM4K2wmO0ClDfoSGFkUxjBfuRP92arJ+fQurS9dwKLMz8yr+/X+NT
+K+47rns2hpG5B+YSgGYrIxfKPLFkXRJmDQEhxVe5fGvPAIJeaRKa+cjndyK/taol
+0FOZxhQa+8qBocTde6111xGQn3c=
+-----END CERTIFICATE-----
diff --git a/testing/ca-example/certs/generic-dsa.crt b/testing/ca-example/certs/generic-dsa.crt
new file mode 100644
index 0000000..0d81ef2
--- /dev/null
+++ b/testing/ca-example/certs/generic-dsa.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAvugAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
+ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
+ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
+hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4NDc0N1oXDTA4MDEx
+OTE4NDc0N1owbDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
+B0VYQU1QTEUxFDASBgNVBAMTC0dlbmVyaWMgRFNBMSYwJAYJKoZIhvcNAQkBFhdn
+ZW5lcmljLWRzYUBleGFtcGxlLmNvbTCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQCd
+LeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06OI4XXmEHCVdU
+xykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2Yn8wj8y2VYSO
+veFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUetENlaaH+QeAO3
+IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC747afIasS0Q/+
+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7QdD06pg1BbdaAz
+SxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuMi/w7A4GEAAKB
+gH1y5aPJgkIABsu8t9pP9jp7/C1wC+YXEFBDO1kIR5FNkGl4Ie7KpjpeL7zPe2GY
+uSSJUdMIz+/nWYiSZ2EmOTzGhqQCJO4SxrD2yVuk56MwF8Aj5YtV7qHLm76w1o2f
+80nrJzt7IhjwiLj/eyKlWwShkBv7yVMBS9HsG//hVGu/oxAwDjAMBgNVHRMBAf8E
+AjAAMA0GCSqGSIb3DQEBBQUAA4GBAPRyHCHjWKKVHZ7wSJQOS/Ve8e4DWFiuP9J8
+X4/sXEg59yWjScy9EovZVj5iELZI6OqUArvwVV6w6tewK0BAed4UGp+TyTHjPuJG
+WGxBm2AhtZUlYmpHQ+gA+E9weeFNQWP1QOATmFQ+r18eNH0rUONnR3G0XUYQTgd1
+LgEYxM4t
+-----END CERTIFICATE-----
diff --git a/testing/ca-example/database.txt b/testing/ca-example/database.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testing/ca-example/database.txt
diff --git a/testing/ca-example/keys/ca.key b/testing/ca-example/keys/ca.key
new file mode 100644
index 0000000..451f2b1
--- /dev/null
+++ b/testing/ca-example/keys/ca.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQD5OjHuXXN2LG3sFHISaZZ6L1RSYgRdTenu1nvqkMn/xvzOz385
+oede1z/7f6BoXyM0kNWCf4SOXtXrEIGmQoeURhFfLCnoK8NHfNcel3IPyMPhdJUM
+Jlc3gfpWm+QxjkyqVyMhyYxC9PmgQC7zx4ZKcQrL3zVGYtg8wxmaKY2HwQIDAQAB
+AoGBAJv0cJ5KWCAQuVBLkv42mHUo/Mj4kOaaBNLx4GTt6ZlmuXfonCJCT/gnFeCZ
+ApWNQwh3wUOB7D7y1UXc9GRHqXJBLhBWEoqCvRhz7aRAWtwfQ7QI7DaepP5+IiG8
+C3aEh+b2Jqd6bEM4M1Rdywl+Hrs2BZYXarGqdqi126D8HXZpAkEA/W6hGLCOto/k
+qdE9JWMfiolBij6xqfW4HVl+dpGZGRb1IUctnxBUVMcTbLKy4o0KKGr5rnbPjnTG
+gRo1pMetMwJBAPvAqLOJIGT8SImZeW9eAF9jvcmZyVhdXtz9bp+dqbMIHd6rBA1l
+b9PhhT2o1BuEpcrl1brVQSznR/xuMIvS7zsCQC5EzVqRmWyRNsEeN1ilETQcvP99
+VLhf6R5KoYEKMfZXr6dEtHqO46aatdwpf+lGsK0SYsVMYbZzcW5Ol66e2esCQQDD
+CNqpXE6wbZJ0p2WglZ6MR+U8TdvijVN0uRH+rlJN1LfvTWXySud7qndi8WyBdR5M
+NgqCl7vKYdMvCN6rNFsJAkA9cTwm8M1cY0OZfMAlH1CCDzwpo0i5jN2JzwMf//cx
+RWqaOLG1RQOqB2S7yKiiiawI47d5fH4kaMsvLwTnLkN6
+-----END RSA PRIVATE KEY-----
diff --git a/testing/ca-example/keys/client.key b/testing/ca-example/keys/client.key
new file mode 100644
index 0000000..206f527
--- /dev/null
+++ b/testing/ca-example/keys/client.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEAwSA0Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYS
+cp/Rv2WRPlxpe7kYAzzhqFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhC
+Jwf3afPvyTGaOVuLO93d8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d
+5T0/B8aZYcpVzUiC9EUwfTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzV
+PZqy9j8/f4943rL6V4UdK0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJe
+KY06RiLl+DCykweLx8laZjIHKlSZAFHPB+bvsQIDAQABAoIBAQCQUI1RYnHIdPFO
+qZ+8bvDQ+g8tR30ApjM8QZsBrDRyjg579bhhWVY2jSJdFFdqseTkvoDt9KZzgGQy
+Kj9MYOZru3xRbSfmiWsaLbiUFJJPPaIvpa+BVS2oSjX8BYn2pJbF9MRfclc5CsIS
+qMNl3XUbj8mx2hKdIpJ5EvLD1adKE4Se6peqSZAmEHONNCsrMrQ0GSQqV3viInJr
+tc3kp3HcPffSROWqmc6jAJ77Cs3ApgJavL5RGjx30Kd+dKVq4PXZ+IhWM8dOSput
+wcyxEosiP/W2g0rDgNW2mGOVOwa/D5SnOolicHifdV7idjwLAjkyYgvmBMNSsECj
+yKBkE0gxAoGBAN8iHMumyvriHuj9bSLZ1bcyYFz7jIwUxpHTT7VqN/j/Y1BoBIBy
+ZZLDGMa+ID/brpRHzJQAKSNtbFQ0S1HTSKcFud5OWE8Rp3pQJU+sdeO3pCMWAD1z
+Q4ggF07JjTSSnK+4fcXgEN9P2OdfXy7Rj3HFpSahql55Kp5udoUdzUVFAoGBAN2S
+krlcEuqsEYjqsCJw5pctIwPMvCM51JgirrdETwSGquMklSrobH0PHMlR67gsA/9I
+UGShT0LL4UWYpBn/4xLrLbua5aHIBfQQZp9K6jDZddWS+EFL5JkO/Up4/qM6fUbH
+CuweVv1gd6i2Ti35K60mgx6MqVunaB1k8Q9P3Pl9AoGALSVtxha9Qv21W1bLWh3R
+C/v5W1baHQ2nD6I9omsXYB3sLjydjI+Y1ZT70lptk/4S2JWeYuOVb0GYhYD/LFMf
+hAu4i642V+kuhaTpp7ExOR3S6/ZrngNQSp6TmLFXDKgNY9BkQkEPqN8y971oOMTV
+zSM8QxC6s9q4MM4Q1OYuvjECgYEAsO2V1AW95T45Ukd1FktpFlaomyQlJ0vKgyFO
+unEFV+vhETfpFTY7SzGCHxAXVh1vo62u5Gwayo/a9qQIhepa/IRnJGNv8luyxU1D
+ZPeBQjija0PMkPd1NvNNNuafDuBpoNbX1ev0MqeRZVsN2pAZXE5gbUiNA+8NqEsu
+Yre3EFECgYEA13rXE76zZgsefx+2spjqJDUWEmTDd1460xTtxCCgL9dy4rW5bgwo
+MvINphSUXOwSkn8Oja/IvpN28zSj9W/ci5wU52P5w4blkBmuj8UoCjP2FN1b1OBa
+86mkwVsCYUyyI2apuwrHP77yeb8jXZb+reqSns3hU+HyO/nUTVmnews=
+-----END RSA PRIVATE KEY-----
diff --git a/testing/ca-example/keys/dsa.params b/testing/ca-example/keys/dsa.params
new file mode 100644
index 0000000..bf5d9f3
--- /dev/null
+++ b/testing/ca-example/keys/dsa.params
@@ -0,0 +1,9 @@
+-----BEGIN DSA PARAMETERS-----
+MIIBHwKBgQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06
+OI4XXmEHCVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2
+Yn8wj8y2VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUet
+ENlaaH+QeAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC7
+47afIasS0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7Qd
+D06pg1BbdaAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuM
+i/w7
+-----END DSA PARAMETERS-----
diff --git a/testing/ca-example/keys/email.key b/testing/ca-example/keys/email.key
new file mode 100644
index 0000000..54ae2de
--- /dev/null
+++ b/testing/ca-example/keys/email.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAsYplGtuzoTWL4nQ/xumPYjWfGX+EOR7NOAizRX1IYYQV3AvA
+bZCqwa714PnwoIDyknrm0oZcjle4ijOXLDXxJ+AQv8/gJZZ0b32TwiHJ/1TIU/ok
+TQbQz/z9gOsDXBdrDbhp04f4KStkwWBLQPM3f2A+7ySCBinK/Wt7s7guz4PbNsQu
+7X2Pi4NY4DNRj2dE+4hdRAP+AqlAyUGLyhUf62zusuNzbKJMFOpQxTWKgpbv74sU
+P8KdktLCDxINNSwN/cdivwV6MBkYSCkGLLTQI44jPGMyIOvleAkebiIKaH+u3gXY
+iyakIWUFEmbiEJMoZIPJMJGYNjm/bsXpKCxtyQIDAQABAoIBAHJ7n36WNVq6wJ0i
+AQ4vBXp6wUEb7RM4PXToh1FD3Cylk8L1APyl0LZcL8kG4pddDw5NmhIe+gf/oMvd
+QJoNnpfr8GD/lrYmMqbB/0mrqCmxbgxYvJe+0V+M75r18JCtuSZ7yCHTB77kcHAR
+u/UB4MOOOIbUr9Nxl6eaa4YUOnsso3KctxpIVUcl8MNXQ7f9HKDZimkqCkQBHDKJ
+mWIzacFE0OmuuhLNKp0fC0PSt+GhLLclBm7Lwq8nPKY4gCNc0GBYnxddWlm58KLW
+dEjTv1KTXr+9wztBrCh+2rhCHgOfEGexSymvFOXg8eykPpSRRCwsnlGN2Yd5evtW
+0NSO31ECgYEA6GPc9aDtLQOIwLlQbHJLvqE2julI3FhV9sttR/DXgtZuRcMMN6gY
+qHt4cg6g2SchGu8un+aZeMLHCNstS1bj2Szh/RxXxILLkPmZVPi68WMF+sIflNtY
+gVZeU0mADFizMOkFRaGBw31zjkC2k8ZZsLpRoausc2Y4eNhOA/QqzvsCgYEAw5P5
+dZd9UVrExyb1diopuG0iRPkHcC96a7kfn69jlXH0Dsnls2kxCskAB9cJzYLzSSNv
+4M6efD6ZmMwOlwErOkkAu6GV4VjCYU7bildHxY/iUD73xxaWIf37H7bo83yKcDOO
+Z5HXevYlzd8NEQ2sGX6fti2Ea11ycZGJ36h2SwsCgYBjW275RdihykUJwTF1bFie
+JGcjKvKP4uS+I7ORcpNxySRUh1QN57zDLCcO/Nogfe5VibWxf/JWA1D9pFf1Qi0g
+iWQFx7xutE08qrq37bBfzCqeT6kZB78LbVXe3in1HWdfngE3CBpm7pgdVeW5wLBQ
+Mxj7ul586FN0t2aDoj07SQKBgQCLu+W3xoya26dMQuGNk4JLam3ZqbNOzB1DafjW
+NpGH7OraxhV/oeCQPBvxfgpa8vyvfMoqbHV/f5puOR0TdppUAmSrqj9Tyf7XV2gz
+5zg4Rx0DCHovnEuX7cbGWgEGNi0TDULpbKHwEH3iIUNMs+AKNxYVK2A49YMW8Uz4
+p3wdEQKBgQCUPublorKW6KmnobFL0iVWkM8hZL1xVDB4Yj8Xr7/Vpjs/Jb1dX/Hc
+u1fkc6p4d8zmueTfDchEkIrmt49ZqtwvWlH55a8nfPvdrOq8sbcEhRVAzre075R4
+s/yD9FBk1FQSJHhy0IcHSWyf4bq9+kt9t4BaxfMP2d+YPphiUa72OQ==
+-----END RSA PRIVATE KEY-----
diff --git a/testing/ca-example/keys/generic-dsa.key b/testing/ca-example/keys/generic-dsa.key
new file mode 100644
index 0000000..cdd7ca5
--- /dev/null
+++ b/testing/ca-example/keys/generic-dsa.key
@@ -0,0 +1,12 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIBuwIBAAKBgQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtu
+TI06OI4XXmEHCVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpd
+XFP2Yn8wj8y2VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1D
+KUetENlaaH+QeAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+
+srC747afIasS0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyR
+L7QdD06pg1BbdaAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83
+ymuMi/w7AoGAfXLlo8mCQgAGy7y32k/2Onv8LXAL5hcQUEM7WQhHkU2QaXgh7sqm
+Ol4vvM97YZi5JIlR0wjP7+dZiJJnYSY5PMaGpAIk7hLGsPbJW6TnozAXwCPli1Xu
+ocubvrDWjZ/zSesnO3siGPCIuP97IqVbBKGQG/vJUwFL0ewb/+FUa78CFHgQdcw2
+4vVlnuMrqdmrfXMvzbrw
+-----END DSA PRIVATE KEY-----
diff --git a/testing/ca-example/profiles/ca.conf b/testing/ca-example/profiles/ca.conf
new file mode 100644
index 0000000..f28d954
--- /dev/null
+++ b/testing/ca-example/profiles/ca.conf
@@ -0,0 +1,32 @@
+[ req ]
+distinguished_name = req_distinguished_name
+x509_extensions = v3_ca
+string_mask = nombstr
+
+
+[ req_distinguished_name ]
+0.domainComponent = Domain Component
+0.domainComponent_default = COM
+
+1.domainComponent = Second Domain Component
+1.domainComponent_default = EXAMPLE
+
+organizationalUnitName = Organizational Unit Name (eg, section)
+organizationalUnitName_default = Certificate Authority
+
+commonName = Common Name (eg, YOUR name)
+commonName_max = 64
+
+emailAddress = Email Address
+emailAddress_max = 64
+
+[ v3_ca ]
+
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid:always,issuer:always
+
+basicConstraints = critical,CA:true
+keyUsage = critical,cRLSign, keyCertSign
+
+subjectAltName=email:copy
+issuerAltName=issuer:copy
diff --git a/testing/ca-example/profiles/extensions.conf b/testing/ca-example/profiles/extensions.conf
new file mode 100644
index 0000000..5978d1b
--- /dev/null
+++ b/testing/ca-example/profiles/extensions.conf
@@ -0,0 +1,16 @@
+
+[ email ]
+basicConstraints = CA:FALSE
+keyUsage = digitalSignature, dataEncipherment
+extendedKeyUsage = emailProtection
+
+[ server ]
+basicConstraints = CA:FALSE
+extendedKeyUsage = serverAuth
+
+[ client ]
+basicConstraints = CA:FALSE
+extendedKeyUsage = clientAuth
+
+[ generic ]
+basicConstraints = critical,CA:FALSE
diff --git a/testing/ca-example/profiles/request.conf b/testing/ca-example/profiles/request.conf
new file mode 100644
index 0000000..0a49508
--- /dev/null
+++ b/testing/ca-example/profiles/request.conf
@@ -0,0 +1,18 @@
+[ req ]
+distinguished_name = req_distinguished_name
+string_mask = nombstr
+
+
+[ req_distinguished_name ]
+
+0.domainComponent = Domain Component
+0.domainComponent_default = COM
+
+1.domainComponent = Second Domain Component
+1.domainComponent_default = EXAMPLE
+
+commonName = Common Name
+commonName_max = 64
+
+emailAddress = Email Address (again)
+emailAddress_max = 64
diff --git a/testing/ca-example/requests/client.req b/testing/ca-example/requests/client.req
new file mode 100644
index 0000000..8024570
--- /dev/null
+++ b/testing/ca-example/requests/client.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICpzCCAY8CAQAwYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxDzANBgNVBAMTBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xp
+ZW50QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+wSA0Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYScp/Rv2WRPlxpe7kY
+AzzhqFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhCJwf3afPvyTGaOVuL
+O93d8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d5T0/B8aZYcpVzUiC
+9EUwfTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzVPZqy9j8/f4943rL6
+V4UdK0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJeKY06RiLl+DCykweL
+x8laZjIHKlSZAFHPB+bvsQIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAEEfK+a4
+yCsQEfVTVhJnJ519UeX6AaW4dtt1/w02DB2Ntn/O/SoJCtsREWkZTJW1RcqA6hcD
+KWqRu6G5QOOdEDq1OulbI5dPISqjQ+INcgSyo4PznARsx3pzBZ3mfl+WLBypj2wn
+IpNLhF6mKb6dS7rkYywi1kNLXX4U0UtSNx3Hl39xjcKNoNyaPW3P8Lw9ftycjOZf
+HspIXjfcLFBJMnXTV8wZ8LmyhmKt0d0rOlU/OreOo6JfXVSypUaAhFSMdD5ENDxT
+ld9dzQx1FzHNH4Miqf7rKxxhgqIQ+yeaJnaVIqxsX6gvIjtCKj5L5jU/jHArnCGo
+XFlV4rO8nPyAGRE=
+-----END CERTIFICATE REQUEST-----
diff --git a/testing/ca-example/requests/email.req b/testing/ca-example/requests/email.req
new file mode 100644
index 0000000..71bd130
--- /dev/null
+++ b/testing/ca-example/requests/email.req
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICpTCCAY0CAQAwYDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxDjAMBgNVBAMTBWVtYWlsMSAwHgYJKoZIhvcNAQkBFhFlbWFp
+bEBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALGK
+ZRrbs6E1i+J0P8bpj2I1nxl/hDkezTgIs0V9SGGEFdwLwG2QqsGu9eD58KCA8pJ6
+5tKGXI5XuIozlyw18SfgEL/P4CWWdG99k8Ihyf9UyFP6JE0G0M/8/YDrA1wXaw24
+adOH+CkrZMFgS0DzN39gPu8kggYpyv1re7O4Ls+D2zbELu19j4uDWOAzUY9nRPuI
+XUQD/gKpQMlBi8oVH+ts7rLjc2yiTBTqUMU1ioKW7++LFD/CnZLSwg8SDTUsDf3H
+Yr8FejAZGEgpBiy00COOIzxjMiDr5XgJHm4iCmh/rt4F2IsmpCFlBRJm4hCTKGSD
+yTCRmDY5v27F6SgsbckCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQB312vpA1P4
+Jb35YVmNBtLlUL8OlBLj6hr48NBjkRigHSBeUiKMgUFjbWmTSK1DRddD6hZFTjBm
+S1yquCXxh+JMXi957NVHVk8w3fS1ySFpOxXMmZCjT5edgae7VTDBveDBQfAVtTP+
+02VUhdnwZGQAH7mBM8Ml9iHB5rcgS5BsMexu0YH3p7Qi5DBHeVo6CqbguST1Wczm
+Faql7m329stKQHf1nCOsSroLWb4qugtZ9rxpQJVIqOxVPxP3tBK1GQg/nM/VwI0l
+jMZ8lpn7J77XEYgb+Q642RoXxV8PRLtG4GKeZ13/5LssAsTvS4EkzuhxD+bPAcYu
+WXklJECG6mpw
+-----END CERTIFICATE REQUEST-----
diff --git a/testing/ca-example/requests/generic-dsa.req b/testing/ca-example/requests/generic-dsa.req
new file mode 100644
index 0000000..f59b5da
--- /dev/null
+++ b/testing/ca-example/requests/generic-dsa.req
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICcDCCAi4CAQAwbDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
+ARkWB0VYQU1QTEUxFDASBgNVBAMTC0dlbmVyaWMgRFNBMSYwJAYJKoZIhvcNAQkB
+FhdnZW5lcmljLWRzYUBleGFtcGxlLmNvbTCCAbcwggEsBgcqhkjOOAQBMIIBHwKB
+gQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06OI4XXmEH
+CVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2Yn8wj8y2
+VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUetENlaaH+Q
+eAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC747afIasS
+0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7QdD06pg1Bb
+daAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuMi/w7A4GE
+AAKBgH1y5aPJgkIABsu8t9pP9jp7/C1wC+YXEFBDO1kIR5FNkGl4Ie7KpjpeL7zP
+e2GYuSSJUdMIz+/nWYiSZ2EmOTzGhqQCJO4SxrD2yVuk56MwF8Aj5YtV7qHLm76w
+1o2f80nrJzt7IhjwiLj/eyKlWwShkBv7yVMBS9HsG//hVGu/oAAwCQYHKoZIzjgE
+AwMxADAuAhUAhUtGgWACqrKIYMG9t2Bjv94s6oMCFQCtjGF1voWxW4HaBofgmbfJ
+cIJkVA==
+-----END CERTIFICATE REQUEST-----
diff --git a/testing/ca-example/serial.txt b/testing/ca-example/serial.txt
new file mode 100644
index 0000000..6496923
--- /dev/null
+++ b/testing/ca-example/serial.txt
@@ -0,0 +1 @@
+04