From e238d2e0ac536dc0c1a68d7edff65f938cbb4aa1 Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Mon, 1 Jul 2024 12:54:41 +0300 Subject: [PATCH] [*] No private key check for signing certs --- dap-sdk | 2 +- .../stake/dap_chain_net_srv_stake_pos_delegate.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dap-sdk b/dap-sdk index f2e28810dc..dbe2fe1f58 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit f2e28810dca3e5cf9575a28109e860bd19fda2be +Subproject commit dbe2fe1f5893776de3cb67ac2eb05e4885fe4332 diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index da0faa4edc..cb3b482092 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -1326,6 +1326,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't load cert %s", l_cert_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } // Create the order & put it in GDB char *l_order_hash_str = s_fee_order_create(l_net, &l_value, l_cert->enc_key, a_hash_out_type); if (l_order_hash_str) { @@ -1383,6 +1387,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't load cert %s", l_cert_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } dap_chain_addr_t l_signing_addr; dap_chain_addr_fill_from_key(&l_signing_addr, l_cert->enc_key, l_net->pub.id); dap_chain_node_addr_t l_node_addr = g_node_addr; @@ -1498,6 +1506,10 @@ static int s_cli_srv_stake_order(int a_argc, char **a_argv, int a_arg_index, voi DAP_DELETE(l_tx_hash_str); return -8; } + if (!l_cert->enc_key || !l_cert->enc_key->priv_key_data || !l_cert->enc_key->priv_key_data_size) { + dap_cli_server_cmd_set_reply_text(a_str_reply, "Certificate \"%s\" has no private key", l_cert_str); + return -20; + } DAP_DEL_Z(l_default_cert_str); char *l_order_hash_str = s_staker_order_create(l_net, l_value, &l_tx_hash, l_cert->enc_key, a_hash_out_type); if (!l_order_hash_str) { -- GitLab