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

Collapse All | Expand All

(-)/tmp/openssh-6.4p1/ssh-pkcs11.c (-9 / +19 lines)
Lines 258-275 Link Here
258
			error("need pin");
258
			error("need pin");
259
			return (-1);
259
			return (-1);
260
		}
260
		}
261
		snprintf(prompt, sizeof(prompt), "Enter PIN for '%s': ",
261
		if (si->token.flags & CKF_PROTECTED_AUTHENTICATION_PATH) {
262
		    si->token.label);
262
			printf("Enter PIN for '%s' on reader pinpad. ", si->token.label);
263
		pin = read_passphrase(prompt, RP_ALLOW_EOF);
263
			fflush(stdout);
264
		if (pin == NULL)
264
			pin = malloc(1);
265
			return (-1);	/* bail out */
265
			*pin = '\0';
266
		if ((rv = f->C_Login(si->session, CKU_USER,
266
		}
267
		    (u_char *)pin, strlen(pin))) != CKR_OK) {
267
		else {
268
			free(pin);
268
			snprintf(prompt, sizeof(prompt), "Enter PIN for '%s': ",
269
				si->token.label);
270
			pin = read_passphrase(prompt, RP_ALLOW_EOF);
271
			if (pin == NULL)
272
				return (-1);	/* bail out */
273
		}
274
		rv = f->C_Login(si->session, CKU_USER, (u_char *)pin, strlen(pin));
275
		free(pin);
276
		if (si->token.flags & CKF_PROTECTED_AUTHENTICATION_PATH) {
277
			printf("\n");
278
		}
279
		if (rv != CKR_OK) {
269
			error("C_Login failed: %lu", rv);
280
			error("C_Login failed: %lu", rv);
270
			return (-1);
281
			return (-1);
271
		}
282
		}
272
		free(pin);
273
		si->logged_in = 1;
283
		si->logged_in = 1;
274
	}
284
	}
275
	key_filter[1].pValue = k11->keyid;
285
	key_filter[1].pValue = k11->keyid;

Return to bug 2185