[pkg-opensc-commit] [libp11] 11/67: Print error queue after PKCS11 calls
Eric Dorland
eric at moszumanska.debian.org
Sat Jan 30 05:34:12 UTC 2016
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository libp11.
commit 48995335419c5064b57250b734918d7a6d6bbe13
Author: Michal Trojnara <Michal.Trojnara at mirt.net>
Date: Wed Dec 9 19:28:03 2015 +0100
Print error queue after PKCS11 calls
---
tests/fork-test.c | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/tests/fork-test.c b/tests/fork-test.c
index db519d7..89220be 100644
--- a/tests/fork-test.c
+++ b/tests/fork-test.c
@@ -24,6 +24,7 @@
#define MAX_SIGSIZE 256
static void do_fork();
+static void error_queue(const char *name);
int main(int argc, char *argv[])
{
@@ -42,16 +43,20 @@ int main(int argc, char *argv[])
unsigned int nslots, ncerts, siglen;
if (argc < 2) {
- fprintf(stderr, "usage: auth /usr/lib/opensc-pkcs11.so [PIN]\n");
+ fprintf(stderr,
+ "usage: %s /usr/lib/opensc-pkcs11.so [PIN]\n",
+ argv[0]);
return 1;
}
do_fork();
ctx = PKCS11_CTX_new();
+ error_queue("PKCS11_CTX_new");
/* load pkcs #11 module */
do_fork();
rc = PKCS11_CTX_load(ctx, argv[1]);
+ error_queue("PKCS11_CTX_load");
if (rc) {
fprintf(stderr, "loading pkcs11 engine failed: %s\n",
ERR_reason_error_string(ERR_get_error()));
@@ -62,6 +67,7 @@ int main(int argc, char *argv[])
/* get information on all slots */
do_fork();
rc = PKCS11_enumerate_slots(ctx, &slots, &nslots);
+ error_queue("PKCS11_enumerate_slots");
if (rc < 0) {
fprintf(stderr, "no slots available\n");
rc = 2;
@@ -71,6 +77,7 @@ int main(int argc, char *argv[])
/* get first slot with a token */
do_fork();
slot = PKCS11_find_token(ctx, slots, nslots);
+ error_queue("PKCS11_find_token");
if (!slot || !slot->token) {
fprintf(stderr, "no token available\n");
rc = 3;
@@ -97,6 +104,7 @@ loggedin:
/* perform pkcs #11 login */
do_fork();
rc = PKCS11_login(slot, 0, password);
+ error_queue("PKCS11_login");
memset(password, 0, strlen(password));
if (rc != 0) {
fprintf(stderr, "PKCS11_login failed\n");
@@ -106,6 +114,7 @@ loggedin:
/* get all certs */
do_fork();
rc = PKCS11_enumerate_certs(slot->token, &certs, &ncerts);
+ error_queue("PKCS11_enumerate_certs");
if (rc) {
fprintf(stderr, "PKCS11_enumerate_certs failed\n");
goto failed;
@@ -149,6 +158,7 @@ loggedin:
do_fork();
authkey = PKCS11_find_key(authcert);
+ error_queue("PKCS11_find_key");
if (!authkey) {
fprintf(stderr, "no key matching certificate available\n");
goto failed;
@@ -164,6 +174,7 @@ loggedin:
do_fork();
rc = PKCS11_sign(NID_sha1, random, RANDOM_SIZE, signature, &siglen,
authkey);
+ error_queue("PKCS11_sign");
if (rc != 1) {
fprintf(stderr, "fatal: pkcs11_sign failed\n");
goto failed;
@@ -192,11 +203,8 @@ loggedin:
if (signature != NULL)
free(signature);
- do_fork();
PKCS11_release_all_slots(ctx, slots, nslots);
- do_fork();
PKCS11_CTX_unload(ctx);
- do_fork();
PKCS11_CTX_free(ctx);
CRYPTO_cleanup_all_ex_data();
@@ -206,18 +214,14 @@ loggedin:
return 0;
failed:
- ERR_print_errors_fp(stderr);
notoken:
- do_fork();
PKCS11_release_all_slots(ctx, slots, nslots);
noslots:
- do_fork();
PKCS11_CTX_unload(ctx);
nolib:
- do_fork();
PKCS11_CTX_free(ctx);
printf("authentication failed.\n");
@@ -240,3 +244,11 @@ static void do_fork()
exit(2);
}
}
+
+static void error_queue(const char *name)
+{
+ if (ERR_peek_last_error()) {
+ fprintf(stderr, "%s generated errors:\n", name);
+ ERR_print_errors_fp(stderr);
+ }
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/libp11.git
More information about the pkg-opensc-commit
mailing list