diff --git a/dap-sdk/crypto/src/dap_enc_key.c b/dap-sdk/crypto/src/dap_enc_key.c
index a361c1513a31281c2aa8d64e4461a1cf8912a8e7..24e38aedf9968d1da58de509f444d66532d337f0 100755
--- a/dap-sdk/crypto/src/dap_enc_key.c
+++ b/dap-sdk/crypto/src/dap_enc_key.c
@@ -650,14 +650,19 @@ dap_enc_key_t* dap_enc_key_deserealize(const void *buf, size_t buf_size)
     result->priv_key_data_size = in_key->priv_key_data_size;
     result->pub_key_data_size = in_key->pub_key_data_size;
     result->_inheritor_size = in_key->inheritor_size;
+    DAP_DEL_Z(result->priv_key_data)
+    DAP_DEL_Z(result->pub_key_data)
+    result->priv_key_data = DAP_NEW_Z_SIZE(uint8_t, result->priv_key_data_size);
     memcpy(result->priv_key_data, in_key->priv_key_data, result->priv_key_data_size);
+    result->pub_key_data = DAP_NEW_Z_SIZE(uint8_t, result->pub_key_data_size);
     memcpy(result->pub_key_data, in_key->pub_key_data, result->pub_key_data_size);
-
-    if(in_key->inheritor_size)
+    if(in_key->inheritor_size) {
+        DAP_DEL_Z(result->_inheritor)
+        result->_inheritor = DAP_NEW_Z(dap_enc_key_t);
         memcpy(result->_inheritor, in_key->inheritor, in_key->inheritor_size);
-    else
+    } else {
         result->_inheritor = NULL;
-
+    }
     return result;
 }