Allowed user to type in passphrase
This commit is contained in:
parent
c9680982c8
commit
7365bdd42f
8 changed files with 98 additions and 9 deletions
|
@ -85,12 +85,12 @@ void manager_loadnames(Manager* manager){
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
Manager* manager_init() {
|
Manager* manager_init(char* key) {
|
||||||
// Creating result in memory
|
// Creating result in memory
|
||||||
Manager* result = malloc(sizeof(Manager));
|
Manager* result = malloc(sizeof(Manager));
|
||||||
|
|
||||||
// Setting variables
|
// Setting variables
|
||||||
result->secure_storage = secure_storage_init("password");
|
result->secure_storage = secure_storage_init(key);
|
||||||
result->count = 0;
|
result->count = 0;
|
||||||
|
|
||||||
// Loading all names on start
|
// Loading all names on start
|
||||||
|
|
|
@ -20,7 +20,7 @@ typedef struct {
|
||||||
} Manager;
|
} Manager;
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
Manager* manager_init();
|
Manager* manager_init(char* key);
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
void manager_savepass(Manager* manager, Password* pass);
|
void manager_savepass(Manager* manager, Password* pass);
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
// Header
|
// Header
|
||||||
#include "secure.h"
|
#include "secure.h"
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
#define KEYBOARD_STR_LEN 64
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
SecureStorage* secure_storage_init(char* key){
|
SecureStorage* secure_storage_init(char* key){
|
||||||
// Creating memory for secure storage
|
// Creating memory for secure storage
|
||||||
SecureStorage* result = malloc(sizeof(SecureStorage));
|
SecureStorage* result = malloc(sizeof(SecureStorage));
|
||||||
|
|
||||||
// Setting key
|
// Setting key
|
||||||
result->key = key;
|
result->key = malloc(sizeof(char) * KEYBOARD_STR_LEN);
|
||||||
|
|
||||||
|
// Copying key
|
||||||
|
strcpy(result->key, key);
|
||||||
|
|
||||||
// Return result
|
// Return result
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -30,6 +30,7 @@ typedef enum { FP_View_VariableItemList, FP_View_Submenu, FP_View_TextBox, FP_Vi
|
||||||
|
|
||||||
/* Scenes */
|
/* Scenes */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
FP_Scene_Auth,
|
||||||
FP_Scene_MainMenu,
|
FP_Scene_MainMenu,
|
||||||
FP_Scene_Overview,
|
FP_Scene_Overview,
|
||||||
FP_Scene_View,
|
FP_Scene_View,
|
||||||
|
@ -55,6 +56,7 @@ typedef struct {
|
||||||
|
|
||||||
void* usb_prev_mode;
|
void* usb_prev_mode;
|
||||||
Manager* manager;
|
Manager* manager;
|
||||||
|
char* enterkey;
|
||||||
char* keyboard;
|
char* keyboard;
|
||||||
int selection;
|
int selection;
|
||||||
} FP_App;
|
} FP_App;
|
||||||
|
|
59
project/ui/scenes/auth.c
Normal file
59
project/ui/scenes/auth.c
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
// Header
|
||||||
|
#include "auth.h"
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
#define KEYBOARD_STR_LEN 64
|
||||||
|
|
||||||
|
// Functions
|
||||||
|
void FP_Scene_Callback_Auth(void* context) {
|
||||||
|
// Setting context
|
||||||
|
FP_App* app = context;
|
||||||
|
|
||||||
|
// Loading manager with key
|
||||||
|
app->manager = manager_init(app->enterkey);
|
||||||
|
|
||||||
|
// Freeing key
|
||||||
|
free(app->enterkey);
|
||||||
|
|
||||||
|
// Going to main menu!
|
||||||
|
scene_manager_next_scene(app->scene_manager, FP_Scene_MainMenu);
|
||||||
|
}
|
||||||
|
void FP_Scene_Enter_Auth(void* context) {
|
||||||
|
// Set Context
|
||||||
|
FP_App* app = context;
|
||||||
|
|
||||||
|
// Reset view
|
||||||
|
text_input_reset(app->textinput);
|
||||||
|
|
||||||
|
// Creating keyboard string
|
||||||
|
app->enterkey = malloc(sizeof(char) * KEYBOARD_STR_LEN);
|
||||||
|
|
||||||
|
// Setting stuff
|
||||||
|
text_input_set_header_text(
|
||||||
|
app->textinput,
|
||||||
|
"Enter Passphrase"
|
||||||
|
);
|
||||||
|
text_input_set_result_callback(
|
||||||
|
app->textinput,
|
||||||
|
FP_Scene_Callback_Auth,
|
||||||
|
app,
|
||||||
|
app->enterkey,
|
||||||
|
KEYBOARD_STR_LEN,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
// Send view to Flipper
|
||||||
|
view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_TextInput);
|
||||||
|
}
|
||||||
|
void FP_Scene_Exit_Auth(void* context) {
|
||||||
|
// Setting context
|
||||||
|
FP_App* app = context;
|
||||||
|
|
||||||
|
// Reset menu
|
||||||
|
submenu_reset(app->submenu);
|
||||||
|
}
|
||||||
|
bool FP_Scene_Event_Auth(void* context, SceneManagerEvent event) {
|
||||||
|
// Return result
|
||||||
|
UNUSED(context);
|
||||||
|
return event.type == SceneManagerEventTypeCustom;
|
||||||
|
}
|
14
project/ui/scenes/auth.h
Normal file
14
project/ui/scenes/auth.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// Define once
|
||||||
|
#ifndef H_AUTH
|
||||||
|
#define H_AUTH
|
||||||
|
|
||||||
|
// Libraries
|
||||||
|
#include "../app.h"
|
||||||
|
|
||||||
|
// Functions
|
||||||
|
void FP_Scene_Callback_Auth(void* context);
|
||||||
|
void FP_Scene_Enter_Auth(void* context);
|
||||||
|
void FP_Scene_Exit_Auth(void* context);
|
||||||
|
bool FP_Scene_Event_Auth(void* context, SceneManagerEvent event);
|
||||||
|
|
||||||
|
#endif
|
|
@ -136,9 +136,16 @@ bool FP_Scene_Event_Create(void* context, SceneManagerEvent event) {
|
||||||
// Save the password
|
// Save the password
|
||||||
manager_savepass(app->manager, app->manager->new);
|
manager_savepass(app->manager, app->manager->new);
|
||||||
|
|
||||||
|
// Saving key
|
||||||
|
char* key = malloc(sizeof(char) * 64);
|
||||||
|
strcpy(key, app->manager->secure_storage->key);
|
||||||
|
|
||||||
// Reload manager
|
// Reload manager
|
||||||
manager_free(app->manager);
|
manager_free(app->manager);
|
||||||
app->manager = manager_init();
|
app->manager = manager_init(key);
|
||||||
|
|
||||||
|
// Freeing key
|
||||||
|
free(key);
|
||||||
|
|
||||||
// Switching scenes
|
// Switching scenes
|
||||||
scene_manager_previous_scene(app->scene_manager);
|
scene_manager_previous_scene(app->scene_manager);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
|
||||||
// Scenes
|
// Scenes
|
||||||
|
#include "scenes/auth.h"
|
||||||
#include "scenes/mainmenu.h"
|
#include "scenes/mainmenu.h"
|
||||||
#include "scenes/overview.h"
|
#include "scenes/overview.h"
|
||||||
#include "scenes/view.h"
|
#include "scenes/view.h"
|
||||||
|
@ -12,6 +13,7 @@
|
||||||
|
|
||||||
// Handlers
|
// Handlers
|
||||||
void (*const FP_Scene_Enter_Handlers[])(void*) = {
|
void (*const FP_Scene_Enter_Handlers[])(void*) = {
|
||||||
|
FP_Scene_Enter_Auth,
|
||||||
FP_Scene_Enter_MainMenu,
|
FP_Scene_Enter_MainMenu,
|
||||||
FP_Scene_Enter_Overview,
|
FP_Scene_Enter_Overview,
|
||||||
FP_Scene_Enter_View,
|
FP_Scene_Enter_View,
|
||||||
|
@ -21,6 +23,7 @@ void (*const FP_Scene_Enter_Handlers[])(void*) = {
|
||||||
FP_Scene_Enter_Type
|
FP_Scene_Enter_Type
|
||||||
};
|
};
|
||||||
bool (*const FP_Scene_Event_Handlers[])(void*, SceneManagerEvent) = {
|
bool (*const FP_Scene_Event_Handlers[])(void*, SceneManagerEvent) = {
|
||||||
|
FP_Scene_Event_Auth,
|
||||||
FP_Scene_Event_MainMenu,
|
FP_Scene_Event_MainMenu,
|
||||||
FP_Scene_Event_Overview,
|
FP_Scene_Event_Overview,
|
||||||
FP_Scene_Event_View,
|
FP_Scene_Event_View,
|
||||||
|
@ -30,6 +33,7 @@ bool (*const FP_Scene_Event_Handlers[])(void*, SceneManagerEvent) = {
|
||||||
FP_Scene_Event_Type
|
FP_Scene_Event_Type
|
||||||
};
|
};
|
||||||
void (*const FP_Scene_Exit_Handlers[])(void*) = {
|
void (*const FP_Scene_Exit_Handlers[])(void*) = {
|
||||||
|
FP_Scene_Exit_Auth,
|
||||||
FP_Scene_Exit_MainMenu,
|
FP_Scene_Exit_MainMenu,
|
||||||
FP_Scene_Exit_Overview,
|
FP_Scene_Exit_Overview,
|
||||||
FP_Scene_Exit_View,
|
FP_Scene_Exit_View,
|
||||||
|
@ -74,9 +78,6 @@ FP_App* fp_app_init() {
|
||||||
// Allocate memory for new app variable
|
// Allocate memory for new app variable
|
||||||
FP_App* result = malloc(sizeof(FP_App));
|
FP_App* result = malloc(sizeof(FP_App));
|
||||||
|
|
||||||
// Initilize the manager
|
|
||||||
result->manager = manager_init();
|
|
||||||
|
|
||||||
// Init Scene Manager
|
// Init Scene Manager
|
||||||
result->scene_manager = scene_manager_alloc(&FP_SceneEventHandlers, result);
|
result->scene_manager = scene_manager_alloc(&FP_SceneEventHandlers, result);
|
||||||
|
|
||||||
|
@ -118,7 +119,7 @@ void fp_app_run(FP_App* app) {
|
||||||
view_dispatcher_attach_to_gui(app->view_dispatcher, gui, ViewDispatcherTypeFullscreen);
|
view_dispatcher_attach_to_gui(app->view_dispatcher, gui, ViewDispatcherTypeFullscreen);
|
||||||
|
|
||||||
// Starting scene
|
// Starting scene
|
||||||
scene_manager_next_scene(app->scene_manager, FP_Scene_MainMenu);
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Auth);
|
||||||
|
|
||||||
// Start view dispatcher
|
// Start view dispatcher
|
||||||
view_dispatcher_run(app->view_dispatcher);
|
view_dispatcher_run(app->view_dispatcher);
|
||||||
|
|
Loading…
Reference in a new issue