View | Details | Raw Unified | Return to bug 2432 | Differences between
and this patch

Collapse All | Expand All

(-)a/ssh-pkcs11.c (-9 / +7 lines)
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 */

Return to bug 2432