diff --git a/core/include/dap_common.h b/core/include/dap_common.h
index 10c79eefe8902a109e483acefa7fe1a6dc6b9af7..539423e0f47a2136f6f601c37fbec23e8a199e89 100755
--- a/core/include/dap_common.h
+++ b/core/include/dap_common.h
@@ -859,6 +859,10 @@ static const uint16_t s_ascii_table_data[256] = {
 #define dap_ascii_isprint(c) (s_ascii_table_data[(unsigned char) (c)] & DAP_ASCII_PRINT)
 #define dap_ascii_isxdigit(c) (s_ascii_table_data[(unsigned char) (c)] & DAP_ASCII_XDIGIT)
 
+#define DAP_FLAG_ADD(a, flag) ((a) | (flag))
+#define DAP_FLAG_REMOVE(a, flag) ((a) & ~(flag))
+#define DAP_FLAG_CHECK(a, flag) ((a) & (flag))
+
 static void * ( *const volatile memset_safe ) (void*, int, size_t) = memset;
 
 DAP_STATIC_INLINE void DAP_AtomicLock( dap_spinlock_t *lock )
diff --git a/crypto/include/dap_enc_ecdsa.h b/crypto/include/dap_enc_ecdsa.h
index 0d32bce6fad839a7b286326ce0af9f1056c70831..438d67be187c159a17b156a8bc02f6593473e301 100755
--- a/crypto/include/dap_enc_ecdsa.h
+++ b/crypto/include/dap_enc_ecdsa.h
@@ -25,7 +25,7 @@ uint8_t *dap_enc_sig_ecdsa_write_signature(const void* a_sign, size_t *a_sign_ou
 uint8_t *dap_enc_sig_ecdsa_write_public_key(const void *a_public_key, size_t *a_buflen_out);
 void* dap_enc_sig_ecdsa_read_signature(const uint8_t *a_buf, size_t a_buflen);
 void* dap_enc_sig_ecdsa_read_public_key(const uint8_t *a_buf, size_t a_buflen);
-int dap_enc_sig_ecdsa_hash_fast(const unsigned char *a_data, size_t a_data_size, dap_hash_fast_t *a_out);
+bool dap_enc_sig_ecdsa_hash_fast(const unsigned char *a_data, size_t a_data_size, dap_hash_fast_t *a_out);
 
 DAP_STATIC_INLINE uint64_t dap_enc_sig_ecdsa_ser_key_size(UNUSED_ARG const void *a_in) {
     return ECDSA_PRIVATE_KEY_SIZE;
diff --git a/crypto/include/dap_enc_key.h b/crypto/include/dap_enc_key.h
index f70d6c1d13627d4214c1c8981630546a753660a5..4a177d9c099e486de3467e175bd98c38fb4d8cbd 100755
--- a/crypto/include/dap_enc_key.h
+++ b/crypto/include/dap_enc_key.h
@@ -340,7 +340,7 @@ int dap_enc_key_get_pkey_hash(dap_enc_key_t *a_key, dap_hash_fast_t *a_hash_out)
  * @param a_type checked enc_key type
  * @return true if this enc_key type hashing signing data, false if not
  */
-DAP_INLINE bool dap_enc_key_is_insign_hashing(dap_enc_key_type_t a_type)
+DAP_STATIC_INLINE bool dap_enc_key_is_insign_hashing(dap_enc_key_type_t a_type)
 {
     return a_type == DAP_ENC_KEY_TYPE_SIG_ECDSA;
 }
diff --git a/crypto/src/dap_enc_ecdsa.c b/crypto/src/dap_enc_ecdsa.c
index d7e619a921d2ddf689abb75ffd473dedf1460326..3122b5a7bb35ed36d1d6e3e56b013c7aa35bb847 100644
--- a/crypto/src/dap_enc_ecdsa.c
+++ b/crypto/src/dap_enc_ecdsa.c
@@ -46,13 +46,13 @@ static ecdsa_context_t *s_context_create()
     return s_context;
 }
 
-int dap_enc_sig_ecdsa_hash_fast(const unsigned char *a_data, size_t a_data_size, dap_hash_fast_t *a_out)
+bool dap_enc_sig_ecdsa_hash_fast(const unsigned char *a_data, size_t a_data_size, dap_hash_fast_t *a_out)
 {
     secp256k1_sha256 l_hasher;
     secp256k1_sha256_initialize(&l_hasher);
     secp256k1_sha256_write(&l_hasher, a_data, a_data_size);
     secp256k1_sha256_finalize(&l_hasher, (unsigned char *)a_out);
-    return 0;
+    return true;
 }
 
 void dap_enc_sig_ecdsa_key_new(dap_enc_key_t *a_key) {
diff --git a/crypto/src/dap_enc_key.c b/crypto/src/dap_enc_key.c
index 98d474aa45cd17861ff961eef0119f73235e4bbd..f1f5fd7989db4fb0f8cfda1f1b901f4e786aabaa 100755
--- a/crypto/src/dap_enc_key.c
+++ b/crypto/src/dap_enc_key.c
@@ -1259,14 +1259,14 @@ int dap_enc_key_get_pkey_hash(dap_enc_key_t *a_key, dap_hash_fast_t *a_hash_out)
 {
     dap_return_val_if_fail(a_key && a_key->pub_key_data && a_key->pub_key_data_size && a_hash_out, -1);
     size_t l_pub_key_size = 0;
+    int l_ret = -2;
     uint8_t *l_pub_key = dap_enc_key_serialize_pub_key(a_key, &l_pub_key_size);
-    int l_ret = -3;
     if (!l_pub_key)
-        return -2;
+        return l_ret;
     switch (a_key->type) {
         case DAP_ENC_KEY_TYPE_SIG_ECDSA:
 #ifdef DAP_ECDSA
-            l_ret = dap_enc_sig_ecdsa_hash_fast((const unsigned char *)l_pub_key, l_pub_key_size, a_hash_out);
+            l_ret = !dap_enc_sig_ecdsa_hash_fast((const unsigned char *)l_pub_key, l_pub_key_size, a_hash_out);
             break;
 #else
             log_it(L_ERROR, "Using DAP_ENC_KEY_TYPE_SIG_ECDSA hash without DAP_ECDSA defining");
diff --git a/net/server/cli_server/dap_cli_server.c b/net/server/cli_server/dap_cli_server.c
index d748efda11eec1e3493dc591e4d68b54eeb884aa..33c4947030726a7cd3ae2ce3590ae3f07948902c 100644
--- a/net/server/cli_server/dap_cli_server.c
+++ b/net/server/cli_server/dap_cli_server.c
@@ -248,7 +248,8 @@ int json_commands(const char * a_name) {
             "stake_lock",
             "exec_cmd",
             "srv_xchange",
-            "file"
+            "file",
+            "policy"
     };
     for (size_t i = 0; i < sizeof(long_cmd)/sizeof(long_cmd[0]); i++) {
         if (!strcmp(a_name, long_cmd[i])) {