/*
 * passphrase_protect() - Set passphrase protection
 *
 * INPUT
 *     none
 * OUTPUT
 *     true/false whether passphrase was received
 */
bool passphrase_protect(void)
{
    bool ret = false;
    PassphraseInfo passphrase_info;

    if(storage_getPassphraseProtected() && !session_isPassphraseCached())
    {
        /* Get passphrase and cache */
        if(passphrase_request(&passphrase_info))
        {
            session_cachePassphrase(passphrase_info.passphrase);
            ret = true;
        }
    }
    else
    {
        ret = true;
    }

    return (ret);
}
Exemple #2
0
bool protectPassphrase(void)
{
	if (!storage.has_passphrase_protection || !storage.passphrase_protection || session_isPassphraseCached()) {
		return true;
	}

	PassphraseRequest resp;
	memset(&resp, 0, sizeof(PassphraseRequest));
	usbTiny(1);
	msg_write(MessageType_MessageType_PassphraseRequest, &resp);

	layoutDialogSwipe(DIALOG_ICON_INFO, NULL, NULL, NULL, "Please enter your", "passphrase using", "the computer's", "keyboard.", NULL, NULL);

	bool result;
	for (;;) {
		usbPoll();
		if (msg_tiny_id == MessageType_MessageType_PassphraseAck) {
			msg_tiny_id = 0xFFFF;
			PassphraseAck *ppa = (PassphraseAck *)msg_tiny;
			session_cachePassphrase(ppa->passphrase);
			result = true;
			break;
		}
		if (msg_tiny_id == MessageType_MessageType_Cancel || msg_tiny_id == MessageType_MessageType_Initialize) {
			if (msg_tiny_id == MessageType_MessageType_Initialize) {
				protectAbortedByInitialize = true;
			}
			msg_tiny_id = 0xFFFF;
			result = false;
			break;
		}
	}
	usbTiny(0);
	layoutHome();
	return result;
}