diff options
author | Stef Walter <stef@thewalter.net> | 2013-09-05 11:22:13 +0200 |
---|---|---|
committer | Stef Walter <stef@thewalter.net> | 2013-09-05 11:26:40 +0200 |
commit | 3c7553a1fd47671a98a6d496ac7eeedb1b43df7c (patch) | |
tree | 25ebf7407c7404a0a1d2ca54fae6c13505f373e9 | |
parent | 2476ecb35e175a45ba72101ddfa38b2d048323bb (diff) |
anchor: Better failure messages when removing anchors
-rw-r--r-- | trust/anchor.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/trust/anchor.c b/trust/anchor.c index d00bef3..e20282b 100644 --- a/trust/anchor.c +++ b/trust/anchor.c @@ -39,6 +39,7 @@ #include "anchor.h" #include "attrs.h" #include "debug.h" +#include "constants.h" #include "iter.h" #include "message.h" #include "parser.h" @@ -473,23 +474,45 @@ anchor_store (int argc, return (rv == CKR_OK) ? 0 : 1; } +static const char * +description_for_object_at_iter (p11_kit_iter *iter) +{ + CK_OBJECT_CLASS klass; + CK_ATTRIBUTE attrs[] = { + { CKA_CLASS, &klass, sizeof (klass) }, + { CKA_INVALID }, + }; + + const char *desc = "object"; + CK_RV rv; + + rv = p11_kit_iter_load_attributes (iter, attrs, 1); + if (rv == CKR_OK) + desc = p11_constant_nick (p11_constant_classes, klass); + + return desc; +} + static bool remove_all (p11_kit_iter *iter) { + const char *desc; CK_RV rv; while ((rv = p11_kit_iter_next (iter)) == CKR_OK) { - p11_debug ("removing object: %lu", p11_kit_iter_get_object (iter)); + desc = description_for_object_at_iter (iter); + p11_debug ("removing %s: %lu", desc, p11_kit_iter_get_object (iter)); rv = p11_kit_iter_destroy_object (iter); switch (rv) { case CKR_OK: continue; case CKR_TOKEN_WRITE_PROTECTED: case CKR_SESSION_READ_ONLY: - p11_message ("couldn't remove read-only object"); + p11_message ("couldn't remove read-only %s", desc); continue; default: - p11_message ("couldn't remove object: %s", p11_kit_strerror (rv)); + p11_message ("couldn't remove %s: %s", desc, + p11_kit_strerror (rv)); break; } } |