diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c index 171c9e3ee60eee6e0ea33de86db083c79172cfdd..99fa9dcea378c90274ca53bcb6be7c0a43588332 100644 --- a/modules/net/srv/dap_chain_net_srv.c +++ b/modules/net/srv/dap_chain_net_srv.c @@ -100,6 +100,7 @@ int dap_chain_net_srv_init(dap_config_t * a_cfg) "net_srv -net <chain net name> order create -direction <sell|buy> -srv_uid <Service UID> -price <Price>\\\n" " -price_unit <Price Unit> -price_token <Token ticker> [-node_addr <Node Address>] [-tx_cond <TX Cond Hash>] \\\n" " [-expires <Unix time when expires>] [-ext <Extension with params>]\\\n" + " [-cert <cert name to sign order>]\\\n" "\tOrder create\n" ); s_load_all(); @@ -452,7 +453,8 @@ static int s_cli_net_srv( int argc, char **argv, void *arg_func, char **a_str_re dap_string_append(l_string_ret,"need -hash param to obtain what the order we need to dump\n"); } }else if( dap_strcmp( l_order_str, "create" ) == 0 ){ - + const char *l_order_cert_name = NULL; + dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-cert", &l_order_cert_name); if ( l_srv_uid_str && l_price_str && l_price_token_str && l_price_unit_str) { dap_chain_net_srv_uid_t l_srv_uid={{0}}; dap_chain_node_addr_t l_node_addr={0}; @@ -490,9 +492,22 @@ static int s_cli_net_srv( int argc, char **argv, void *arg_func, char **a_str_re l_price_unit.uint32 = (uint32_t) atol ( l_price_unit_str ); strncpy(l_price_token, l_price_token_str, DAP_CHAIN_TICKER_SIZE_MAX - 1); size_t l_ext_len = l_ext? strlen(l_ext) + 1 : 0; + // get cert to order sign + dap_cert_t *l_cert = NULL; + dap_enc_key_t *l_key = NULL; + if(l_order_cert_name) { + dap_cert_t *l_cert = dap_cert_find_by_name(l_order_cert_name); + if(l_cert) + l_key = l_cert->enc_key; + else + log_it(L_ERROR, "Can't load cert '%s' for sign order", l_order_cert_name); + } + // create order char * l_order_new_hash_str = dap_chain_net_srv_order_create( l_net,l_direction, l_srv_uid, l_node_addr,l_tx_cond_hash, l_price, l_price_unit, - l_price_token, l_expires, (uint8_t *)l_ext, l_ext_len, l_region_str, l_continent_num, NULL); + l_price_token, l_expires, (uint8_t *)l_ext, l_ext_len, l_region_str, l_continent_num, l_key); + if(l_cert) + dap_cert_delete(l_cert); if (l_order_new_hash_str) dap_string_append_printf( l_string_ret, "Created order %s\n", l_order_new_hash_str); else{