diff --git a/dap_chain_wallet.c b/dap_chain_wallet.c index 3767b7b9394477d92d98b281ee231a22434e4332..459ca2f2c72472f93edebe764da56553f7dbf9e6 100755 --- a/dap_chain_wallet.c +++ b/dap_chain_wallet.c @@ -121,7 +121,7 @@ RET: } /** - * @brief dap_chain_wallet_create + * @brief dap_chain_wallet_create_with_seed * @param a_wallet_name * @param a_wallets_path * @param a_net_id @@ -129,7 +129,8 @@ RET: * @details Creates new wallet * @return Wallet, new wallet or NULL if errors */ -dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const char * a_wallets_path, dap_sign_type_t a_sig_type) +dap_chain_wallet_t * dap_chain_wallet_create_with_seed(const char * a_wallet_name, const char * a_wallets_path, + dap_sign_type_t a_sig_type, const void* a_seed, size_t a_seed_size) { dap_chain_wallet_t * l_wallet = DAP_NEW_Z(dap_chain_wallet_t); DAP_CHAIN_WALLET_INTERNAL_LOCAL_NEW(l_wallet); @@ -142,8 +143,8 @@ dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const c dap_snprintf(l_wallet_internal->file_name,l_file_name_size,"%s/%s.dwallet",a_wallets_path,a_wallet_name); - l_wallet_internal->certs[0] = dap_cert_generate_mem(a_wallet_name, - dap_sign_type_to_key_type(a_sig_type)); + l_wallet_internal->certs[0] = dap_cert_generate_mem_with_seed(a_wallet_name, + dap_sign_type_to_key_type(a_sig_type), a_seed, a_seed_size); if ( dap_chain_wallet_save(l_wallet) == 0 ) @@ -154,12 +155,28 @@ dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const c return NULL; } +/** + * @brief dap_chain_wallet_create + * @param a_wallet_name + * @param a_wallets_path + * @param a_net_id + * @param a_sig_type + * @details Creates new wallet + * @return Wallet, new wallet or NULL if errors + */ +dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const char * a_wallets_path, dap_sign_type_t a_sig_type) +{ + return dap_chain_wallet_create_with_seed(a_wallet_name, a_wallets_path, a_sig_type, NULL, 0); +} + /** * @brief dap_chain_wallet_close * @param a_wallet */ void dap_chain_wallet_close( dap_chain_wallet_t * a_wallet) { + if(!a_wallet) + return; DAP_CHAIN_WALLET_INTERNAL_LOCAL(a_wallet); if(a_wallet->name) DAP_DELETE (a_wallet->name); diff --git a/dap_chain_wallet.h b/dap_chain_wallet.h index 2dbb780c655876616b203504ea174be126fb06a2..963aae5dcd150441686c16a58d6115ad2a7dff6e 100755 --- a/dap_chain_wallet.h +++ b/dap_chain_wallet.h @@ -42,6 +42,8 @@ void dap_chain_wallet_deinit(void); const char* dap_chain_wallet_get_path(dap_config_t * a_config); +dap_chain_wallet_t * dap_chain_wallet_create_with_seed(const char * a_wallet_name, const char * a_wallets_path, + dap_sign_type_t a_sig_type, const void* a_seed, size_t a_seed_size); dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const char * a_wallets_path, dap_sign_type_t a_sig_type); // Creates new one if not found dap_chain_wallet_t * dap_chain_wallet_open_file(const char * a_file_name); dap_chain_wallet_t * dap_chain_wallet_open(const char * a_wallet_name, const char * a_wallets_path);