This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <cstring> | |
#include "utils.h" | |
#include "app.h" | |
#include "wallet.h" | |
#include "enclave.h" | |
void info_print(const char* str) { | |
printf("[INFO] %s\n", str); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ocall_is_wallet(void) { | |
ifstream file(WALLET_FILE, ios::in | ios::binary); | |
if (file.fail()) {return 0;} // failure means no wallet found | |
file.close(); | |
return 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ocall_load_wallet(uint8_t* sealed_data, const size_t sealed_size) { | |
ifstream file(WALLET_FILE, ios::in | ios::binary); | |
if (file.fail()) {return 1;} | |
file.read((char*) sealed_data, sealed_size); | |
file.close(); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ocall_save_wallet(const uint8_t* sealed_data, const size_t sealed_size) { | |
ofstream file(WALLET_FILE, ios::out | ios::binary); | |
if (file.fail()) {return 1;} | |
file.write((const char*) sealed_data, sealed_size); | |
file.close(); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ecall_remove_item(const char* master_password, const int index) { | |
// | |
// OVERVIEW: | |
// 1. check index bounds | |
// 2. [ocall] load wallet | |
// 3. unseal wallet | |
// 4. verify master-password | |
// 5. remove item from the wallet | |
// 6. seal wallet |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ecall_add_item(const char* master_password, const item_t* item, const size_t item_size) { | |
// | |
// OVERVIEW: | |
// 1. [ocall] load wallet | |
// 2. unseal wallet | |
// 3. verify master-password | |
// 4. check input length | |
// 5. add item to the wallet | |
// 6. seal wallet |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ecall_change_master_password(const char* old_password, const char* new_password) { | |
// | |
// OVERVIEW: | |
// 1. check password policy | |
// 2. [ocall] load wallet | |
// 3. unseal wallet | |
// 4. verify old password | |
// 5. update password | |
// 6. seal wallet |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ecall_show_wallet(const char* master_password, wallet_t* wallet, size_t wallet_size) { | |
// | |
// OVERVIEW: | |
// 1. [ocall] load wallet | |
// 2. unseal wallet | |
// 3. verify master-password | |
// 4. return wallet to app | |
// 5. exit enclave | |
// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int ecall_create_wallet(const char* master_password) { | |
// | |
// OVERVIEW: | |
// 1. check password policy | |
// 2. [ocall] abort if wallet already exist | |
// 3. create wallet | |
// 4. seal wallet | |
// 5. [ocall] save wallet | |
// 6. exit enclave |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
enclave { | |
// includes | |
include "wallet.h" | |
// define ECALLs | |
trusted { | |
public int ecall_create_wallet( |
NewerOlder