summaryrefslogtreecommitdiff
path: root/usr/src/cmd/cmd-crypto/pktool/export.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/cmd-crypto/pktool/export.c')
-rw-r--r--usr/src/cmd/cmd-crypto/pktool/export.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/usr/src/cmd/cmd-crypto/pktool/export.c b/usr/src/cmd/cmd-crypto/pktool/export.c
index 2e973f8184..be24ba0b9c 100644
--- a/usr/src/cmd/cmd-crypto/pktool/export.c
+++ b/usr/src/cmd/cmd-crypto/pktool/export.c
@@ -520,6 +520,22 @@ pk_export_pk11_keys(KMF_HANDLE_T kmfhandle, char *token,
numattr++;
rv = kmf_find_key(kmfhandle, numattr, attrlist);
+ /*
+ * If nothing found but caller wanted ALL keys, try symmetric
+ * this time.
+ */
+ if (rv == KMF_ERR_KEY_NOT_FOUND && (oclass == PK_KEY_OBJ)) {
+ kclass = KMF_SYMMETRIC;
+ rv = kmf_find_key(kmfhandle, numattr, attrlist);
+ }
+ /*
+ * If nothing found but caller wanted ALL keys, try asymmetric
+ * public this time.
+ */
+ if (rv == KMF_ERR_KEY_NOT_FOUND && (oclass == PK_KEY_OBJ)) {
+ kclass = KMF_ASYM_PUB;
+ rv = kmf_find_key(kmfhandle, numattr, attrlist);
+ }
if (rv == KMF_OK && key.keyclass == KMF_SYMMETRIC) {
KMF_RAW_SYM_KEY rkey;