diff --git a/include/dap_enc_dilithium.h b/include/dap_enc_dilithium.h
index ba63e2f0759e4b46354cafdf7d7149889852c6be..7f285580f12b1e512c1275f5a9dd1549deb5d57c 100755
--- a/include/dap_enc_dilithium.h
+++ b/include/dap_enc_dilithium.h
@@ -25,7 +25,12 @@ size_t dap_enc_sig_dilithium_verify_sign(struct dap_enc_key * key,const void * m
 
 void dap_enc_sig_dilithium_key_delete(struct dap_enc_key * key);
 
-size_t dap_enc_dilithium_calc_signature_size(void);
+size_t dap_enc_dilithium_calc_signature_unserialized_size(void);
+
+static inline size_t dap_enc_dilithium_calc_signagture_size(dilithium_signature_t* a_sign)
+{
+    return sizeof(size_t) + sizeof(dilithium_kind_t) + a_sign->sig_len + sizeof(unsigned long long);
+}
 
 uint8_t* dap_enc_dilithium_write_signature(dilithium_signature_t* a_sign, size_t *a_sign_out);
 dilithium_signature_t* dap_enc_dilithium_read_signature(uint8_t *a_buf, size_t a_buflen);
diff --git a/include/dap_enc_tesla.h b/include/dap_enc_tesla.h
index ce33495a42df0a69067141b96fcbea66c64584a9..7ed2bea0efab795cfcdd884d931b4b730ad066e5 100755
--- a/include/dap_enc_tesla.h
+++ b/include/dap_enc_tesla.h
@@ -1,5 +1,4 @@
-#ifndef _DAP_ENC_TESLA_H_
-#define _DAP_ENC_TESLA_H_
+#pragma once
 
 #include "sig_tesla/tesla_params.h"
 #include "dap_enc_key.h"
@@ -26,6 +25,7 @@ size_t dap_enc_sig_tesla_verify_sign(struct dap_enc_key * key,const void * msg,
 void dap_enc_sig_tesla_key_delete(struct dap_enc_key * key);
 
 size_t dap_enc_tesla_calc_signature_size(void);
+size_t dap_enc_tesla_calc_signature_serialized_size(tesla_signature_t* a_sign);
 
 uint8_t* dap_enc_tesla_write_signature(tesla_signature_t* a_sign, size_t *a_sign_out);
 tesla_signature_t* dap_enc_tesla_read_signature(uint8_t *a_buf, size_t a_buflen);
@@ -34,4 +34,3 @@ uint8_t* dap_enc_tesla_write_public_key(const tesla_public_key_t* a_public_key,
 tesla_private_key_t* dap_enc_tesla_read_private_key(const uint8_t *a_buf, size_t a_buflen);
 tesla_public_key_t* dap_enc_tesla_read_public_key(const uint8_t *a_buf, size_t a_buflen);
 
-#endif
diff --git a/src/dap_enc_dilithium.c b/src/dap_enc_dilithium.c
index da925e026fe307d7e70b3fd75e88286bc77e5e85..5ddd872e306f0c67cd58c56cf567171c34c4ef99 100755
--- a/src/dap_enc_dilithium.c
+++ b/src/dap_enc_dilithium.c
@@ -98,19 +98,22 @@ void dap_enc_sig_dilithium_key_delete(struct dap_enc_key * key)
 
 }
 
-size_t dap_enc_dilithium_calc_signature_size(void)
+size_t dap_enc_dilithium_calc_signature_unserialized_size(void)
 {
     return sizeof(dilithium_signature_t);
 }
 
+
+
+
 /* Serialize a signature */
 uint8_t* dap_enc_dilithium_write_signature(dilithium_signature_t* a_sign, size_t *a_sign_out)
 {
-    if(!a_sign || *a_sign_out!=sizeof(dilithium_signature_t)) {
+    if(!a_sign ) {
         return NULL ;
     }
     size_t l_shift_mem = 0;
-    size_t l_buflen = sizeof(size_t) + sizeof(dilithium_kind_t) + a_sign->sig_len + sizeof(unsigned long long);
+    size_t l_buflen = dap_enc_dilithium_calc_signagture_size(a_sign);
 
     uint8_t *l_buf = DAP_NEW_SIZE(uint8_t, l_buflen);
     memcpy(l_buf, &l_buflen, sizeof(size_t));
diff --git a/src/dap_enc_tesla.c b/src/dap_enc_tesla.c
index 775eab1f64ba731ce64f4e621d749348df3b96d8..1bba317a8100d9ed031f4e4c15f06f6a18817c60 100755
--- a/src/dap_enc_tesla.c
+++ b/src/dap_enc_tesla.c
@@ -103,6 +103,11 @@ size_t dap_enc_tesla_calc_signature_size(void)
     return sizeof(tesla_signature_t);
 }
 
+size_t dap_enc_tesla_calc_signature_serialized_size(tesla_signature_t* a_sign)
+{
+    return sizeof(size_t) + sizeof(tesla_kind_t) + a_sign->sig_len + sizeof(unsigned long long);
+}
+
 /* Serialize a signature */
 uint8_t* dap_enc_tesla_write_signature(tesla_signature_t* a_sign, size_t *a_sign_out)
 {
@@ -110,7 +115,7 @@ uint8_t* dap_enc_tesla_write_signature(tesla_signature_t* a_sign, size_t *a_sign
         return NULL ;
     }
     size_t l_shift_mem = 0;
-    size_t l_buflen = sizeof(size_t) + sizeof(tesla_kind_t) + a_sign->sig_len + sizeof(unsigned long long);
+    size_t l_buflen = dap_enc_tesla_calc_signature_serialized_size(a_sign);
 
     uint8_t *l_buf = DAP_NEW_SIZE(uint8_t, l_buflen);
     memcpy(l_buf, &l_buflen, sizeof(size_t));
diff --git a/src/sig_dilithium/dilithium_sign.c b/src/sig_dilithium/dilithium_sign.c
index 4b2a59e34742ced37c42ca6ca2f74ed3a37f6cfb..28a5ec9e93c5d16f2aff98600e50858739733043 100755
--- a/src/sig_dilithium/dilithium_sign.c
+++ b/src/sig_dilithium/dilithium_sign.c
@@ -195,7 +195,7 @@ int dilithium_crypto_sign_keypair(dilithium_public_key_t *public_key, dilithium_
 /*************************************************/
 int dilithium_crypto_sign( dilithium_signature_t *sig, const unsigned char *m, unsigned long long mlen, const dilithium_private_key_t *private_key)
 {
-    dilithium_param_t *p = malloc(sizeof(dilithium_param_t));
+    dilithium_param_t *p = DAP_NEW_Z(dilithium_param_t);
     if (! dilithium_params_init( p, private_key->kind)) {
         free(p);
         return 1;
@@ -218,7 +218,7 @@ int dilithium_crypto_sign( dilithium_signature_t *sig, const unsigned char *m, u
     dilithium_unpack_sk(rho, key, tr, &s1, &s2, &t0, private_key->data, p);
 
     sig->sig_len = mlen + p->CRYPTO_BYTES;
-    sig->sig_data = malloc( sig->sig_len);
+    sig->sig_data = DAP_NEW_Z_SIZE(unsigned char, sig->sig_len);
 
     for(i = 1; i <= mlen; ++i)
         sig->sig_data[p->CRYPTO_BYTES + mlen - i] = m[mlen - i];