/* * 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); }
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; }