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

Collapse All | Expand All

(-)a/ssh-pkcs11.c (-8 / +16 lines)
Lines 255-276 pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa, Link Here
255
	si = &k11->provider->slotinfo[k11->slotidx];
255
	si = &k11->provider->slotinfo[k11->slotidx];
256
	if ((si->token.flags & CKF_LOGIN_REQUIRED) && !si->logged_in) {
256
	if ((si->token.flags & CKF_LOGIN_REQUIRED) && !si->logged_in) {
257
		if (!pkcs11_interactive) {
257
		if (!pkcs11_interactive) {
258
			error("need pin");
258
			error("need pin%s", 
259
				(si->token.flags & CKF_PROTECTED_AUTHENTICATION_PATH) 
260
					? " entry on reader keypad" : "");
259
			return (-1);
261
			return (-1);
260
		}
262
		}
261
		snprintf(prompt, sizeof(prompt), "Enter PIN for '%s': ",
263
		if (si->token.flags & CKF_PROTECTED_AUTHENTICATION_PATH) {
262
		    si->token.label);
264
			verbose("Deferring PIN entry to keypad of chipcard reader.");
263
		pin = read_passphrase(prompt, RP_ALLOW_EOF);
265
			pin = NULL;
264
		if (pin == NULL)
266
		} else {
265
			return (-1);	/* bail out */
267
			snprintf(prompt, sizeof(prompt), "Enter PIN for '%s': ",
268
				si->token.label);
269
			pin = read_passphrase(prompt, RP_ALLOW_EOF);
270
			if (pin == NULL)
271
				return (-1);    /* bail out */
272
               };
273
266
		rv = f->C_Login(si->session, CKU_USER,
274
		rv = f->C_Login(si->session, CKU_USER,
267
		    (u_char *)pin, strlen(pin));
275
		    (u_char *)pin, strlen(pin));
268
		if (rv != CKR_OK && rv != CKR_USER_ALREADY_LOGGED_IN) {
276
		if (rv != CKR_OK && rv != CKR_USER_ALREADY_LOGGED_IN) {
269
			free(pin);
277
			if (pin) free(pin);
270
			error("C_Login failed: %lu", rv);
278
			error("C_Login failed: %lu", rv);
271
			return (-1);
279
			return (-1);
272
		}
280
		}
273
		free(pin);
281
		if (pin) free(pin);
274
		si->logged_in = 1;
282
		si->logged_in = 1;
275
	}
283
	}
276
	key_filter[1].pValue = k11->keyid;
284
	key_filter[1].pValue = k11->keyid;

Return to bug 2240