|
Lines 1146-1155
fail:
Link Here
|
| 1146 |
*/ |
1146 |
*/ |
| 1147 |
static int |
1147 |
static int |
| 1148 |
pkcs11_fetch_keys(struct pkcs11_provider *p, CK_ULONG slotidx, |
1148 |
pkcs11_fetch_keys(struct pkcs11_provider *p, CK_ULONG slotidx, |
| 1149 |
struct sshkey ***keysp, int *nkeys) |
1149 |
CK_OBJECT_CLASS key_class, struct sshkey ***keysp, int *nkeys) |
| 1150 |
{ |
1150 |
{ |
| 1151 |
struct sshkey *key = NULL; |
1151 |
struct sshkey *key = NULL; |
| 1152 |
CK_OBJECT_CLASS key_class; |
|
|
| 1153 |
CK_ATTRIBUTE key_attr[1]; |
1152 |
CK_ATTRIBUTE key_attr[1]; |
| 1154 |
CK_SESSION_HANDLE session; |
1153 |
CK_SESSION_HANDLE session; |
| 1155 |
CK_FUNCTION_LIST *f = NULL; |
1154 |
CK_FUNCTION_LIST *f = NULL; |
|
Lines 1161-1167
pkcs11_fetch_keys(struct pkcs11_provider *p, CK_ULONG slotidx,
Link Here
|
| 1161 |
memset(&key_attr, 0, sizeof(key_attr)); |
1160 |
memset(&key_attr, 0, sizeof(key_attr)); |
| 1162 |
memset(&obj, 0, sizeof(obj)); |
1161 |
memset(&obj, 0, sizeof(obj)); |
| 1163 |
|
1162 |
|
| 1164 |
key_class = CKO_PUBLIC_KEY; |
|
|
| 1165 |
key_attr[0].type = CKA_CLASS; |
1163 |
key_attr[0].type = CKA_CLASS; |
| 1166 |
key_attr[0].pValue = &key_class; |
1164 |
key_attr[0].pValue = &key_class; |
| 1167 |
key_attr[0].ulValueLen = sizeof(key_class); |
1165 |
key_attr[0].ulValueLen = sizeof(key_class); |
|
Lines 1540-1551
pkcs11_register_provider(char *provider_id, char *pin, struct sshkey ***keyp,
Link Here
|
| 1540 |
* open session, login with pin and retrieve public |
1538 |
* open session, login with pin and retrieve public |
| 1541 |
* keys (if keyp is provided) |
1539 |
* keys (if keyp is provided) |
| 1542 |
*/ |
1540 |
*/ |
| 1543 |
if ((ret = pkcs11_open_session(p, i, pin, user)) == 0) { |
1541 |
if ((ret = pkcs11_open_session(p, i, pin, user)) != 0 || |
| 1544 |
if (keyp == NULL) |
1542 |
keyp == NULL) |
| 1545 |
continue; |
1543 |
continue; |
| 1546 |
pkcs11_fetch_keys(p, i, keyp, &nkeys); |
1544 |
pkcs11_fetch_keys(p, i, keyp, CKO_PUBLIC_KEY, &nkeys); |
| 1547 |
pkcs11_fetch_certs(p, i, keyp, &nkeys); |
1545 |
pkcs11_fetch_keys(p, i, keyp, CKO_PRIVATE_KEY, &nkeys); |
| 1548 |
} |
1546 |
pkcs11_fetch_certs(p, i, keyp, &nkeys); |
| 1549 |
} |
1547 |
} |
| 1550 |
|
1548 |
|
| 1551 |
/* now owned by caller */ |
1549 |
/* now owned by caller */ |