summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwyllys <none@none>2007-12-21 13:00:16 -0800
committerwyllys <none@none>2007-12-21 13:00:16 -0800
commit71a79fe7afa36dcf0de6902c2c6ef432980534d3 (patch)
tree5771259a7edc8f3a7aec798e840f560698353513
parentba753d4a1cf19adb873981f5e1dbc4daa05f91ab (diff)
downloadillumos-joyent-71a79fe7afa36dcf0de6902c2c6ef432980534d3.tar.gz
6643206 pktool should check for all keys when exporting objtype=key
-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;