[PATCH 2/3] Add PK11_GetTokenUri() and use it from certutil

David Woodhouse <[email protected]>
Newsgroups gmane.comp.mozilla.crypto
Message-ID <[email protected]>
From: David Woodhouse <[email protected]>

The result must be freed by calling P11URI_FreeString()
---
 cmd/certutil/certutil.c |  3 +++
 lib/nss/nss.def         |  1 +
 lib/pk11wrap/pk11pub.h  |  2 ++
 lib/pk11wrap/pk11slot.c | 18 ++++++++++++++++++
 4 files changed, 24 insertions(+)

diff --git a/cmd/certutil/certutil.c b/cmd/certutil/certutil.c
index f4d4809..06bc45b 100644
--- a/cmd/certutil/certutil.c
+++ b/cmd/certutil/certutil.c
@@ -990,9 +990,12 @@ ListModules(void)
 
     /* look at each slot*/
     for (le = list->head; le; le = le->next) {
+        char *token_uri = PK11_GetTokenUri(le->slot, P11URI_FOR_TOKEN);
         printf("\n");
         printf("    slot: %s\n", PK11_GetSlotName(le->slot));
         printf("   token: %s\n", PK11_GetTokenName(le->slot));
+        printf("     uri: %s\n", token_uri);
+        P11URI_FreeString(token_uri);
     }
     PK11_FreeSlotList(list);
 
diff --git a/lib/nss/nss.def b/lib/nss/nss.def
index fa11944..ddf8f1e 100644
--- a/lib/nss/nss.def
+++ b/lib/nss/nss.def
@@ -104,6 +104,7 @@ PK11_GetInternalKeySlot;
 PK11_GetInternalSlot;
 PK11_GetSlotName;
 PK11_GetTokenName;
+PK11_GetTokenUri;
 PK11_HashBuf;
 PK11_IsFIPS;
 PK11_IsFriendly;
diff --git a/lib/pk11wrap/pk11pub.h b/lib/pk11wrap/pk11pub.h
index c130e1e..e496b91 100644
--- a/lib/pk11wrap/pk11pub.h
+++ b/lib/pk11wrap/pk11pub.h
@@ -14,6 +14,7 @@
 #include "seccomon.h"
 #include "pkcs7t.h"
 #include "cmsreclist.h"
+#include "p11uri.h"
 
 /*
  * Exported PK11 wrap functions.
@@ -78,6 +79,7 @@ PRBool PK11_IsReadOnly(PK11SlotInfo *slot);
 PRBool PK11_IsInternal(PK11SlotInfo *slot);
 PRBool PK11_IsInternalKeySlot(PK11SlotInfo *slot);
 char * PK11_GetTokenName(PK11SlotInfo *slot);
+char * PK11_GetTokenUri(PK11SlotInfo *slot, P11URIType type);
 char * PK11_GetSlotName(PK11SlotInfo *slot);
 PRBool PK11_NeedLogin(PK11SlotInfo *slot);
 PRBool PK11_IsFriendly(PK11SlotInfo *slot);
diff --git a/lib/pk11wrap/pk11slot.c b/lib/pk11wrap/pk11slot.c
index b6eef51..1b42bd5 100644
--- a/lib/pk11wrap/pk11slot.c
+++ b/lib/pk11wrap/pk11slot.c
@@ -18,6 +18,7 @@
 #include "dev3hack.h" 
 #include "pkim.h"
 #include "utilpars.h"
+#include "p11uri.h"
 
 
 /*************************************************************
@@ -1604,6 +1605,23 @@ PK11_GetTokenName(PK11SlotInfo *slot)
 }
 
 char *
+PK11_GetTokenUri(PK11SlotInfo *slot, P11URIType type)
+{
+    P11URI *uri;
+
+    uri = P11URI_New();
+    if (!uri)
+        return NULL;
+
+    if (PK11_GetTokenInfo(slot, P11URI_GetTokenInfo(uri)) != SECSuccess) {
+	P11URI_Free(uri);
+	return NULL;
+    }
+
+    return P11URI_Format(uri, type);
+}
+
+char *
 PK11_GetSlotName(PK11SlotInfo *slot)
 {
      return slot->slot_name;
-- 
2.7.4

-- 
dev-tech-crypto mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-crypto
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.