diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index d1ad6664b6cc9507c4e397109eb62f1646ea7811..82fe0bb1172c4d372887e194a384ea4dc35889fe 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.11.2, 2020-04-26T22:56:12. -->
+<!-- Written by QtCreator 4.11.2, 2020-04-29T10:52:27. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -329,7 +329,7 @@
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
     <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-Debug/test/crypto</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
     <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
@@ -404,7 +404,7 @@
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
     <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/qt_proj/build-libdap-crypto_new-Desktop_Qt_5_14_2_MinGW_32_bit-Debug/test/cert</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
    </valuemap>
    <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
   </valuemap>
diff --git a/include/dap_enc_GOST.h b/include/dap_enc_GOST.h
index ba36ccb0b2527cf2ef14c560a03a9b0676c72cb6..9ba75cc899ec35c2ed59927b9bb556dee1a01bae 100644
--- a/include/dap_enc_GOST.h
+++ b/include/dap_enc_GOST.h
@@ -26,6 +26,21 @@ size_t dap_enc_gost_ofb_decrypt_fast(struct dap_enc_key * a_key, const void * a_
 // Writes result ( out ) in already allocated buffer
 size_t dap_enc_gost_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in,
         size_t a_in_size, void * buf_out, size_t buf_out_size);
+//------KUZNECHIK_OFB--------------
+void dap_enc_kuzn_ofb_key_new(struct dap_enc_key * a_key);
+
+size_t dap_enc_kuzn_ofb_calc_decode_size(const size_t size_in);
+size_t dap_enc_kuzn_ofb_calc_encode_size(const size_t size_in);
+
+size_t dap_enc_kuzn_ofb_decrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
+size_t dap_enc_kuzn_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out);
+
+// Writes result ( out ) in already allocated buffer
+size_t dap_enc_kuzn_ofb_decrypt_fast(struct dap_enc_key * a_key, const void * a_in,
+        size_t a_in_size, void * buf_out, size_t buf_out_size);
+// Writes result ( out ) in already allocated buffer
+size_t dap_enc_kuzn_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in,
+        size_t a_in_size, void * buf_out, size_t buf_out_size);
 
 #ifdef __cplusplus
 }
diff --git a/include/dap_enc_key.h b/include/dap_enc_key.h
index 0d47a9aa4a87cc005c7e83e99210e86ac33e62c0..145fb27d64abb454a66a4864932fe50028bd0a56 100755
--- a/include/dap_enc_key.h
+++ b/include/dap_enc_key.h
@@ -53,6 +53,8 @@ typedef enum dap_enc_key_type{
                            DAP_ENC_KEY_TYPE_GOST_OFB,//GOST28147_89
                            DAP_ENC_KEY_TYPE_KUZN_OFB,//GOST28147_14
 
+                           DAP_ENC_KEY_TYPE_SALSA2012,//SALSA2012//http://www.ecrypt.eu.org/stream/salsa20pf.html//https://ianix.com/pub/salsa20-deployment.html
+
                            DAP_ENC_KEY_TYPE_RLWE_NEWHOPE, // "NewHope": key exchange from the ring learning with errors problem
                                                 //  (Alkim, Ducas, Pöppelmann, Schwabe, USENIX Security 2016 )
                                                 //  Using the reference C implementation of NewHope
@@ -173,7 +175,7 @@ typedef size_t (*dap_enc_gen_bob_shared_key) (struct dap_enc_key *b_key, const v
 typedef size_t (*dap_enc_gen_alice_shared_key) (struct dap_enc_key *a_key, const void *a_priv,
                                              size_t b_pub_size, unsigned char *b_pub);
 
-typedef int (*dap_enc_callback_gen_key_public_t ) (struct dap_enc_key *l_key, void * l_output);
+typedef int (*dap_enc_callback_gen_key_public_t ) (struct dap_enc_key *a_key, void * a_output);
 
 typedef void (*dap_enc_callback_ptr_t)(struct dap_enc_key *, void *);
 typedef size_t (*dap_enc_callback_pptr_r_size_t)(struct dap_enc_key *, void **);
@@ -182,7 +184,7 @@ typedef void (*dap_enc_callback_size_t)(struct dap_enc_key *, size_t);
 typedef void (*dap_enc_callback_str_t)(struct dap_enc_key *, const char*);
 typedef char* (*dap_enc_callback_r_str_t)(struct dap_enc_key *);
 typedef size_t (*dap_enc_callback_calc_out_size)(const size_t);
-typedef size_t (*dap_enc_get_allpbkList) (struct dap_enc_key *b_key, const void *allpbkList, const int allpbknum);
+typedef size_t (*dap_enc_get_allpbk_list) (struct dap_enc_key *a_key, const void *allpbk_list, const int allpbk_num);
 
 typedef struct dap_enc_key {
     size_t priv_key_data_size;
@@ -209,7 +211,7 @@ typedef struct dap_enc_key {
 
     void *pbkListdata;
     size_t pbkListsize;
-    dap_enc_get_allpbkList getallpbkList;
+    dap_enc_get_allpbk_list getallpbkList;
 
 
     void * _inheritor; // WARNING! Inheritor must have only serealizeble/deserializeble data (copy)
diff --git a/include/dap_enc_ringct20.h b/include/dap_enc_ringct20.h
index 39cfef2e1b879742fce114dd6ed72fd8bfbfbedc..3ee3ccb5d6dfbcace6006333e10dcabba3588391 100644
--- a/include/dap_enc_ringct20.h
+++ b/include/dap_enc_ringct20.h
@@ -15,9 +15,9 @@ void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void
                                     size_t kex_size, const void * seed, size_t seed_size,
                                     size_t key_size);
 
-size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_get_sign_with_pb_list(struct dap_enc_key * key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size);
-size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_verify_sign_with_pbk_list(struct dap_enc_key * key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size, const void *pbkList_buf, const int wpbkList);
 
 size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key,const void * msg,
diff --git a/src/GOST/block_chipher.c b/src/GOST/block_chipher.c
index 68b64bab746622b36bcbb7b42adf99b470e7c273..0bd604f81b6af07ba539daeef362e65b6157ac09 100644
--- a/src/GOST/block_chipher.c
+++ b/src/GOST/block_chipher.c
@@ -997,7 +997,7 @@ void DLL_IMPORT free_imit(void* ctx)
 
 }
 
-int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT encrypt_ecb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_ecb* context;
      unsigned char* block;
@@ -1021,7 +1021,7 @@ int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outd
      return 0;
 }
 
-int DLL_IMPORT decrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT decrypt_ecb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_ecb* context;
      size_t i;
@@ -1049,7 +1049,7 @@ static void PackBlock(unsigned char* a, size_t aLen, unsigned char* b, unsigned
      memcpy(r + aLen, b, rLen - aLen);
 }
 
-int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT encrypt_cbc(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_cbc* context;
      size_t i, j;
@@ -1082,7 +1082,7 @@ int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outd
      return 0;
 }
 
-int DLL_IMPORT decrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT decrypt_cbc(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_cbc* context;
      size_t i, j;
@@ -1137,7 +1137,7 @@ static void IncrementModulo(unsigned char* value, size_t size)
      }
 }
 
-int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT crypt_ctr(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_ctr* context;
      size_t i;
@@ -1178,7 +1178,7 @@ int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdat
      return 0;
 }
 
-int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT crypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_ofb* context;
      size_t i, j;
@@ -1220,17 +1220,17 @@ int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdat
      return 0;
 }
 
-int DLL_IMPORT encrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT encrypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      return crypt_ofb(ctx, indata, outdata, length);
 }
 
-int DLL_IMPORT decrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT decrypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      return crypt_ofb(ctx, indata, outdata, length);
 }
 
-int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT encrypt_cfb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_cfb* context;
      size_t i, j;
@@ -1273,7 +1273,7 @@ int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outd
      return 0;
 }
 
-int DLL_IMPORT decrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length)
+int DLL_IMPORT decrypt_cfb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length)
 {
      Context_cfb* context;
      size_t i, j;
diff --git a/src/GOST/block_chipher.h b/src/GOST/block_chipher.h
index 029201d798e6c9a3bcc65f962839e7d12ec0ef2f..6dd6f1234898f69072995870a6f88de4471591da 100644
--- a/src/GOST/block_chipher.h
+++ b/src/GOST/block_chipher.h
@@ -52,6 +52,9 @@
 /** @brief Размер блока алгоритма 28147-89 */
 #define kBlockLen89 8
 
+/** @brief Размер ключа алгоритма "кузнечик" */
+#define kKeyLen14 32
+
 /** @brief Размер ключа алгоритма 28147-89 */
 #define kKeyLen89 32
 
@@ -275,7 +278,7 @@ void DLL_IMPORT free_imit(void* ctx);
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length);
+int DLL_IMPORT encrypt_ecb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length);
 
 /** @brief Выполнение расшифрования информации в режиме простой замены для данных кратных размеру блока
  *
@@ -286,7 +289,7 @@ int DLL_IMPORT encrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT decrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length);
+int DLL_IMPORT decrypt_ecb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length);
 
 /** @brief Выполнение зашифрования информации в режиме простой замены с зацеплением для данных кратных размеру блока
  *
@@ -297,7 +300,7 @@ int DLL_IMPORT decrypt_ecb(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length);
+int DLL_IMPORT encrypt_cbc(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length);
 
 /** @brief Выполнение рсшифрования информации в режиме простой замены с зацеплением для данных кратных размеру блока
  *
@@ -308,7 +311,7 @@ int DLL_IMPORT encrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT decrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length);
+int DLL_IMPORT decrypt_cbc(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length);
 
 /** @brief Выполнение шифрования (зашифрования или расшифрования) в режиме гаммирования
  * @details неполным блоком может быть только последний блок, при попытке шифрования после передачи неполного блока возвращается ошибка
@@ -320,7 +323,7 @@ int DLL_IMPORT decrypt_cbc(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdata, size_t length);
+int DLL_IMPORT crypt_ctr(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t length);
 
 /** @brief Выполнение шаговой шифрования информации в режиме гаммирования с обратной связью
  * @details неполным блоком может быть только последний блок, при попытке шифрования после передачи неполного блока возвращается ошибка
@@ -332,7 +335,7 @@ int DLL_IMPORT crypt_ctr(void *ctx, unsigned char *indata, unsigned char *outdat
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength);
+int DLL_IMPORT crypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t inlength);
 
 /** @brief Выполнение зашифрования информации в режиме гаммирования с обратной связью
  *
@@ -343,7 +346,7 @@ int DLL_IMPORT crypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdat
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT encrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength);
+int DLL_IMPORT encrypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t inlength);
 
 /** @brief Выполнение расшифрования информации в режиме гаммирования с обратной связью
  *
@@ -354,7 +357,7 @@ int DLL_IMPORT encrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT decrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength);
+int DLL_IMPORT decrypt_ofb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t inlength);
 
 /** @brief Выполнение зашифрования информации в режиме гаммирования с обратной связью по шифртексту
  * @details неполным блоком может быть только последний блок, при попытке шифрования после передачи неполного блока возвращается ошибка
@@ -366,7 +369,7 @@ int DLL_IMPORT decrypt_ofb(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength);
+int DLL_IMPORT encrypt_cfb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t inlength);
 
 /** @brief Выполнение расшифрования информации в режиме гаммирования с обратной связью по шифртексту
  * @details неполным блоком может быть только последний блок, при попытке шифрования после передачи неполного блока возвращается ошибка
@@ -378,7 +381,7 @@ int DLL_IMPORT encrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outd
  * @return 0 если все преобразование прошло успешно
  * @return -1 если произошла ошибка
  */
-int DLL_IMPORT decrypt_cfb(void *ctx, unsigned char *indata, unsigned char *outdata, size_t inlength);
+int DLL_IMPORT decrypt_cfb(void *ctx, const unsigned char *indata, unsigned char *outdata, size_t inlength);
 
 /** @brief Выполнение вычисления имитовставки по данным кратным размеру блока
  *
diff --git a/src/dap_enc_GOST.c b/src/dap_enc_GOST.c
index 59d320bea159500d411324832f31c9f21efaf785..22c7fb98b2925802db533cfa7615179ce3fa96c8 100644
--- a/src/dap_enc_GOST.c
+++ b/src/dap_enc_GOST.c
@@ -16,22 +16,32 @@ void dap_enc_gost_key_generate(struct dap_enc_key * a_key, const void *kex_buf,
 {
     if(key_size < 32)
     {
-        log_it(L_ERROR, "Gost key cannot be less than 32 bytes.");
+        log_it(L_ERROR, "GOST key cannot be less than 32 bytes.");
     }
     a_key->last_used_timestamp = time(NULL);
 
 
-    a_key->priv_key_data_size = key_size;
+    a_key->priv_key_data_size = 32;
     a_key->priv_key_data = DAP_NEW_SIZE(uint8_t, key_size);
 
     Keccak_HashInstance Keccak_ctx;
-    Keccak_HashInitialize(&Keccak_ctx, 1088,  512, key_size*8, 0x06);
+    Keccak_HashInitialize(&Keccak_ctx, 1088,  512, 32*8, 0x06);
     Keccak_HashUpdate(&Keccak_ctx, kex_buf, kex_size*8);
     if(seed_size)
         Keccak_HashUpdate(&Keccak_ctx, seed, seed_size*8);
     Keccak_HashFinal(&Keccak_ctx, a_key->priv_key_data);
 }
 
+void dap_enc_gost_key_delete(struct dap_enc_key *a_key)
+{
+    if(a_key->priv_key_data != NULL)
+    {
+        randombytes(a_key->priv_key_data,a_key->priv_key_data_size);
+        DAP_DELETE(a_key->priv_key_data);
+    }
+    a_key->priv_key_data_size = 0;
+}
+//------GOST_OFB-----------
 void dap_enc_gost_ofb_key_new(struct dap_enc_key * a_key)
 {
     a_key->_inheritor = NULL;
@@ -43,141 +53,218 @@ void dap_enc_gost_ofb_key_new(struct dap_enc_key * a_key)
     a_key->dec_na = dap_enc_gost_ofb_decrypt_fast;
 }
 
-void dap_enc_gost_key_delete(struct dap_enc_key *a_key)
+
+size_t dap_enc_gost_ofb_decrypt(struct dap_enc_key *a_key, const void * a_in, size_t a_in_size, void ** a_out)
 {
-    if(a_key->priv_key_data != NULL)
-    {
-        randombytes(a_key->priv_key_data,a_key->priv_key_data_size);
-        DAP_DELETE(a_key->priv_key_data);
+    size_t a_out_size = a_in_size - kBlockLen89;
+    if(a_out_size <= 0) {
+        log_it(L_ERROR, "gost_ofb decryption ct with iv must be more than kBlockLen89 bytes");
+        return 0;
     }
-    a_key->priv_key_data_size = 0;
+    *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - kBlockLen89);
+    a_out_size = dap_enc_gost_ofb_decrypt_fast(a_key, a_in, a_in_size, *a_out, a_out_size);
+    if(a_out_size == 0)
+        DAP_DEL_Z(*a_out);
+    return a_out_size;
 }
-//------GOST_OFB-----------
 
-size_t dap_enc_gost_ofb_decrypt(struct dap_enc_key *a_key, const void * a_in,
-        size_t a_in_size, void ** a_out) {
+size_t dap_enc_gost_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out)
+{
+    if(a_in_size <= 0) {
+        log_it(L_ERROR, "gost ofb encryption pt cannot be 0 bytes");
+        return 0;
+    }
+    size_t a_out_size = a_in_size + kBlockLen89;
+    *a_out = DAP_NEW_SIZE(uint8_t, a_out_size);
+    a_out_size = dap_enc_gost_ofb_encrypt_fast(a_key, a_in, a_in_size, *a_out, a_out_size);
+    if(a_out_size == 0)
+        DAP_DEL_Z(*a_out);
+    return a_out_size;
+}
+
+size_t dap_enc_gost_ofb_calc_encode_size(const size_t size_in)
+{
+    return size_in + kBlockLen89;
+}
 
-    if(a_in_size <= 8) {
-        log_it(L_ERROR, "gost_ofb decryption ct with iv must be more than 8 bytes");
+size_t dap_enc_gost_ofb_calc_decode_size(const size_t size_in)
+{
+    if(size_in <= kBlockLen89) {
+        log_it(L_ERROR, "gost_ofb decryption size_in ct with iv must be more than kBlockLen89 bytes");
         return 0;
     }
+    return size_in - kBlockLen89;
+}
 
+size_t dap_enc_gost_ofb_decrypt_fast(struct dap_enc_key *a_key, const void * a_in,
+        size_t a_in_size, void * a_out, size_t buf_out_size) {
+    size_t a_out_size = a_in_size - kBlockLen89;
+    if(a_out_size > buf_out_size) {
+        log_it(L_ERROR, "gost_ofb fast_decryption too small buf_out_size");
+        return 0;
+    }
+    uint8_t iv[kBlockLen89];
 
-    uint8_t iv[8];
-    memcpy(iv, a_in, 8);
+    memcpy(iv, a_in, kBlockLen89);
 
-    *a_out = DAP_NEW_SIZE(uint8_t, a_in_size - 8);
     unsigned char ctx[kOfb89ContextLen];
-    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array))
+    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, kBlockLen89,NULL, NULL))//, print_array, print_uint_array))
     {
          return 0;
     }
-    if(crypt_ofb(ctx, a_in + 8, *a_out, a_in_size - 8))
+    if(crypt_ofb(ctx, a_in + kBlockLen89, a_out, a_in_size - kBlockLen89))
     {
          return 0;
     }
     free_ofb(ctx);
-    size_t a_out_size = a_in_size - 8;
     return a_out_size;
 }
 
-size_t dap_enc_gost_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out)
+size_t dap_enc_gost_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size)
 {
     //generate iv and put it in *a_out first bytes
-    uint8_t iv[8];
-
-    if(a_in_size <= 0) {
-        log_it(L_ERROR, "gost ofb encryption pt cannot be 0 bytes");
+    size_t a_out_size = a_in_size + kBlockLen89;
+    if(a_out_size > buf_out_size) {
+        log_it(L_ERROR, "gost_ofb fast_encryption too small buf_out_size");
         return 0;
     }
-    if(randombytes(iv, 8) == 1)
+
+    uint8_t iv[kBlockLen89];
+    if(randombytes(iv, kBlockLen89) == 1)
     {
-        log_it(L_ERROR, "failed to get 8 bytes iv gost ofb");
+        log_it(L_ERROR, "failed to get kBlockLen89 bytes iv gost ofb");
         return 0;
     }
 
-   size_t a_out_size = a_in_size + 8;
-    *a_out = DAP_NEW_SIZE(uint8_t, a_out_size);
-    memcpy(*a_out, iv, 8);
+    memcpy(a_out, iv, kBlockLen89);
     unsigned char ctx[kOfb89ContextLen];
-    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array))
+    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, kBlockLen89,NULL, NULL))//, print_array, print_uint_array))
     {
         return 0;
     }
-    if(crypt_ofb(ctx, a_in, *a_out + 8, a_in_size))
+    if(crypt_ofb(ctx, a_in, a_out + kBlockLen89, a_in_size))
     {
         return 0;
     }
     free_ofb(ctx);
     return a_out_size;
+ }
+
+//------KUZN_OFB-----------
+void dap_enc_kuzn_ofb_key_new(struct dap_enc_key * a_key)
+{
+    a_key->_inheritor = NULL;
+    a_key->_inheritor_size = 0;
+    a_key->type = DAP_ENC_KEY_TYPE_GOST_OFB;
+    a_key->enc = dap_enc_kuzn_ofb_encrypt;
+    a_key->dec = dap_enc_kuzn_ofb_decrypt;
+    a_key->enc_na = dap_enc_kuzn_ofb_encrypt_fast;
+    a_key->dec_na = dap_enc_kuzn_ofb_decrypt_fast;
 }
 
-size_t dap_enc_gost_ofb_calc_encode_size(const size_t size_in)
+
+
+size_t dap_enc_kuzn_ofb_calc_encode_size(const size_t size_in)
 {
-    return size_in + 8;
+    return size_in + kBlockLen14;
 }
 
-size_t dap_enc_gost_ofb_calc_decode_size(const size_t size_in)
+size_t dap_enc_kuzn_ofb_calc_decode_size(const size_t size_in)
 {
-    if(size_in <= 8) {
-        log_it(L_ERROR, "gost_ofb decryption size_in ct with iv must be more than 8 bytes");
+    if(size_in <= kBlockLen14) {
+        log_it(L_ERROR, "gost_ofb decryption size_in ct with iv must be more than kBlockLen14 bytes");
         return 0;
     }
-    return size_in - 8;
+    return size_in - kBlockLen14;
 }
 
-size_t dap_enc_gost_ofb_decrypt_fast(struct dap_enc_key *a_key, const void * a_in,
-        size_t a_in_size, void * a_out, size_t buf_out_size) {
-    size_t a_out_size = a_in_size - 8;
+size_t dap_enc_kuzn_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size)
+{
+    //generate iv and put it in *a_out first bytes
+    size_t a_out_size = a_in_size + kBlockLen14;
+    if(a_in_size <= 0) {
+        log_it(L_ERROR, "kuzn_ofb fast_encryption too small a_in_size");
+        return 0;
+    }
     if(a_out_size > buf_out_size) {
-        log_it(L_ERROR, "gost_ofb fast_decryption too small buf_out_size");
+        log_it(L_ERROR, "kuzn_ofb fast_encryption too small buf_out_size");
         return 0;
     }
-    uint8_t iv[8];
-
-    memcpy(iv, a_in, 8);
 
-    unsigned char ctx[kOfb89ContextLen];
-    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array))
+    if(randombytes(a_out, kBlockLen14) == 1)//iv
     {
-         return 0;
-    }
-    if(crypt_ofb(ctx, a_in + 8, a_out, a_in_size - 8))
-    {
-         return 0;
+        log_it(L_ERROR, "failed to get kBlockLen14 bytes iv gost ofb");
+        return 0;
     }
-    free_ofb(ctx);
-    return a_out_size;
-}
 
 
+    unsigned char ctx[kOfb14ContextLen];
 
-size_t dap_enc_gost_ofb_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size)
+
+    if(init_ofb_14(a_key->priv_key_data, ctx, kBlockLen14, a_out, kBlockLen14, NULL,NULL))
+         return -1;
+
+    if(crypt_ofb(ctx, a_in, a_out + kBlockLen14, a_in_size))
+         return -1;
+
+    free_ofb(ctx);
+    return a_out_size;
+ }
+
+size_t dap_enc_kuzn_ofb_decrypt_fast(struct dap_enc_key *a_key, const void * a_in,
+        size_t a_in_size, void * a_out, size_t buf_out_size)
 {
-    //generate iv and put it in *a_out first bytes
-    size_t a_out_size = a_in_size + 8;
-    if(a_out_size > buf_out_size) {
-        log_it(L_ERROR, "blowfish_cbc fast_encryption too small buf_out_size");
+    size_t a_out_size = a_in_size - kBlockLen14;
+    if(a_out_size <= 0) {
+        log_it(L_ERROR, "kuzn_ofb fast_decryption too small a_in_size");
         return 0;
     }
 
-    uint8_t iv[8];
-    if(randombytes(iv, 8) == 1)
-    {
-        log_it(L_ERROR, "failed to get 8 bytes iv gost ofb");
+    if(a_out_size > buf_out_size) {
+        log_it(L_ERROR, "kuzn_ofb fast_decryption too small buf_out_size");
         return 0;
     }
 
-    memcpy(a_out, iv, 8);
-    unsigned char ctx[kOfb89ContextLen];
-    if(init_ofb_89(a_key->priv_key_data, ctx, kBlockLen89, iv, 8,NULL, NULL))//, print_array, print_uint_array))
-    {
+    unsigned char ctx[kOfb14ContextLen];
+    //iv first kBlockLen14 a_in bytes
+
+    if(init_ofb_14(a_key->priv_key_data, ctx, kBlockLen14, a_in, kBlockLen14, NULL, NULL))
+         return -1;
+
+    if(decrypt_ofb(ctx, a_in + kBlockLen14, a_out, a_out_size))
+         return -1;
+
+    free_ofb(ctx);
+    return a_out_size;
+}
+size_t dap_enc_kuzn_ofb_decrypt(struct dap_enc_key *a_key, const void * a_in,
+        size_t a_in_size, void ** a_out) {
+
+    size_t a_out_size = a_in_size - kBlockLen14;
+    if(a_out_size <= 0) {
+        log_it(L_ERROR, "kuzn_ofb decryption too small a_in_size");
         return 0;
     }
-    if(crypt_ofb(ctx, a_in, a_out + 8, a_in_size))
-    {
+
+    *a_out = DAP_NEW_SIZE(uint8_t, a_out_size);
+    a_out_size = dap_enc_kuzn_ofb_decrypt_fast(a_key, a_in, a_in_size, *a_out, a_out_size);
+    if(!a_out_size)
+        DAP_DEL_Z(*a_out);
+    return a_out_size;
+}
+
+size_t dap_enc_kuzn_ofb_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out)
+{
+    //generate iv and put it in *a_out first bytes
+    if(a_in_size <= 0) {
+        log_it(L_ERROR, "kuzn fast_encryption too small a_in_size");
         return 0;
     }
-    free_ofb(ctx);
+    size_t a_out_size = a_in_size + kBlockLen14;
+    *a_out = DAP_NEW_SIZE(uint8_t, a_out_size);
+
+    a_out_size = dap_enc_kuzn_ofb_encrypt_fast(a_key, a_in, a_in_size, *a_out, a_out_size);
+    if(!a_out_size)
+        DAP_DEL_Z(*a_out);
     return a_out_size;
- }
+}
diff --git a/src/dap_enc_key.c b/src/dap_enc_key.c
index 198a851c2bb391664f8a99c5b1e849c21d4f0aeb..55258d7d61454410f2c3edbb122a918588bb296e 100755
--- a/src/dap_enc_key.c
+++ b/src/dap_enc_key.c
@@ -27,6 +27,7 @@
 #include "dap_enc_oaes.h"
 #include "dap_enc_bf.h"
 #include "dap_enc_GOST.h"
+#include "dap_enc_salsa2012.h"
 
 #include "dap_enc_msrln.h"
 #include "dap_enc_defeo.h"
@@ -149,6 +150,23 @@ struct dap_enc_key_callbacks{
         .sign_get = NULL,
         .sign_verify = NULL
     },
+    [DAP_ENC_KEY_TYPE_KUZN_OFB]={
+        .name = "KUZN_OFB",
+        .enc = dap_enc_kuzn_ofb_encrypt,
+        .enc_na = dap_enc_kuzn_ofb_encrypt_fast ,
+        .dec = dap_enc_kuzn_ofb_decrypt,
+        .dec_na = dap_enc_kuzn_ofb_decrypt_fast ,
+        .new_callback = dap_enc_kuzn_ofb_key_new,
+        .delete_callback = dap_enc_gost_key_delete,
+        .new_generate_callback = dap_enc_gost_key_generate,
+        .gen_key_public = NULL,
+        .gen_key_public_size = NULL,
+        .enc_out_size = dap_enc_kuzn_ofb_calc_encode_size,
+        .dec_out_size = dap_enc_kuzn_ofb_calc_decode_size,
+        .sign_get = NULL,
+        .sign_verify = NULL
+    },
+
     [DAP_ENC_KEY_TYPE_MSRLN] = {
         .name = "MSRLN",
         .enc = NULL,
@@ -259,9 +277,9 @@ struct dap_enc_key_callbacks{
         .name = "SIG_RINGCT20",
         .enc = NULL,
         .dec = NULL,
-        .enc_na = dap_enc_sig_ringct20_get_sign_with_pbkList,//dap_enc_sig_ringct20_get_sign,
+        .enc_na = dap_enc_sig_ringct20_get_sign_with_pb_list,//dap_enc_sig_ringct20_get_sign,
         .dec_na = dap_enc_sig_ringct20_verify_sign,
-        .dec_na_ext = dap_enc_sig_ringct20_verify_sign_with_pbkList,
+        .dec_na_ext = dap_enc_sig_ringct20_verify_sign_with_pbk_list,
         .gen_key_public = NULL,
         .gen_key_public_size = NULL,
         .gen_bob_shared_key = NULL,
diff --git a/src/dap_enc_ringct20.c b/src/dap_enc_ringct20.c
index ffaca3c5f32efecc1ceb61f7b5c621969bd9c286..61ea4278a438138a239cfe66772b756c58c39a09 100644
--- a/src/dap_enc_ringct20.c
+++ b/src/dap_enc_ringct20.c
@@ -541,7 +541,6 @@ int32_t ringct20_private_and_public_keys_init(ringct20_private_key_t *private_ke
     f = calloc(p->RINGCT20_PBK_SIZE, sizeof(char));
     if (f == NULL) {
         free(f);
-//        free(g);
         return -1;
     }
     public_key->kind = p->kind;
@@ -569,24 +568,24 @@ void dap_enc_sig_ringct20_key_new(struct dap_enc_key *key) {
 
     key->type = DAP_ENC_KEY_TYPE_SIG_RINGCT20;
     key->enc = NULL;
-    key->enc_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_get_sign_with_pbkList;//dap_enc_sig_ringct20_get_sign;
+    key->enc_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_get_sign_with_pb_list;//dap_enc_sig_ringct20_get_sign;
     key->dec_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_verify_sign;
-    key->dec_na_ext = (dap_enc_callback_dataop_na_ext_t) dap_enc_sig_ringct20_verify_sign_with_pbkList;//dap_enc_sig_ringct20_verify_sign;
-    key->getallpbkList = (dap_enc_get_allpbkList) dap_enc_sig_ringct20_getallpbk;
+    key->dec_na_ext = (dap_enc_callback_dataop_na_ext_t) dap_enc_sig_ringct20_verify_sign_with_pbk_list;//dap_enc_sig_ringct20_verify_sign;
+    key->getallpbkList = (dap_enc_get_allpbk_list) dap_enc_sig_ringct20_getallpbk;
     key->pbkListsize = 0;
     key->pbkListdata = NULL;
 
 }
 
-size_t dap_enc_sig_ringct20_getallpbk(dap_enc_key_t *key, const void *allpbkList, const int allpbkListsize)
+size_t dap_enc_sig_ringct20_getallpbk(dap_enc_key_t *key, const void *allpbk_list, const int allpbk_list_size)
 {
-    key->pbkListdata = DAP_NEW_SIZE(uint8_t, allpbkListsize);
-    memcpy(key->pbkListdata, allpbkList, allpbkListsize);
-    key->pbkListsize= allpbkListsize;
+    key->pbkListdata = DAP_NEW_SIZE(uint8_t, allpbk_list_size);
+    memcpy(key->pbkListdata, allpbk_list, allpbk_list_size);
+    key->pbkListsize= allpbk_list_size;
     return 0;
 }
 
-void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void *kex_buf,
+void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * a_key, const void *kex_buf,
         size_t kex_size, const void * seed, size_t seed_size,
         size_t key_size)
 {
@@ -597,22 +596,22 @@ void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void
     dap_enc_sig_ringct20_set_type(ringct20_type);
 
 
-    key->priv_key_data_size = sizeof(ringct20_private_key_t);
-    key->pub_key_data_size = sizeof(ringct20_public_key_t);
-    key->priv_key_data = malloc(key->priv_key_data_size);
-    key->pub_key_data = malloc(key->pub_key_data_size);
+    a_key->priv_key_data_size = sizeof(ringct20_private_key_t);
+    a_key->pub_key_data_size = sizeof(ringct20_public_key_t);
+    a_key->priv_key_data = malloc(a_key->priv_key_data_size);
+    a_key->pub_key_data = malloc(a_key->pub_key_data_size);
 
-    retcode = ringct20_crypto_sign_keypair((ringct20_public_key_t *) key->pub_key_data,
-            (ringct20_private_key_t *) key->priv_key_data, _ringct20_type);
+    retcode = ringct20_crypto_sign_keypair((ringct20_public_key_t *) a_key->pub_key_data,
+            (ringct20_private_key_t *) a_key->priv_key_data, _ringct20_type);
     if(retcode != 0) {
-        ringct20_private_and_public_keys_delete((ringct20_private_key_t *) key->pub_key_data,
-                (ringct20_public_key_t *) key->pub_key_data);
+        ringct20_private_and_public_keys_delete((ringct20_private_key_t *) a_key->pub_key_data,
+                (ringct20_public_key_t *) a_key->pub_key_data);
         log_it(L_CRITICAL, "Error");
         return;
     }
 }
 
-int ringct20_crypto_sign_with_pbkList( ringct20_signature_t *sig, const unsigned char *m,
+int ringct20_crypto_sign_with_pbk_list( ringct20_signature_t *sig, const unsigned char *m,
     unsigned long long mlen, const ringct20_private_key_t *private_key, const void *allpbk_buf, const int allpbk_size)
 {
 
@@ -699,7 +698,7 @@ int ringct20_crypto_sign_with_pbkList( ringct20_signature_t *sig, const unsigned
     return 0;
 }
 
-size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_get_sign_with_pb_list(struct dap_enc_key * a_key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size)
 {
     if(signature_size < sizeof(ringct20_signature_t)) {
@@ -707,14 +706,14 @@ size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, cons
         return 0;
     }
 
-    if(!ringct20_crypto_sign_with_pbkList((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, key->priv_key_data, key->pbkListdata, key->pbkListsize))
+    if(!ringct20_crypto_sign_with_pbk_list((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, a_key->priv_key_data, a_key->pbkListdata, a_key->pbkListsize))
         return signature_size;
     else
         return 0;
 }
 
 
-size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * a_key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size)
 {
     if(signature_size < sizeof(ringct20_signature_t)) {
@@ -722,13 +721,13 @@ size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key, const void * msg,
         return 0;
     }
 
-    if(!ringct20_crypto_sign((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, key->priv_key_data))
+    if(!ringct20_crypto_sign((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, a_key->priv_key_data))
         return signature_size;
     else
         return 0;
 }
 
-size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * a_key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size)
 {
     if(signature_size < sizeof(ringct20_signature_t)) {
@@ -736,10 +735,10 @@ size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * key, const void * m
         return 1;
     }
 
-    return (ringct20_crypto_sign_open( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, key->pub_key_data));
+    return (ringct20_crypto_sign_open( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, a_key->pub_key_data));
 }
 
-size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, const void * msg,
+size_t dap_enc_sig_ringct20_verify_sign_with_pbk_list(struct dap_enc_key * a_key, const void * msg,
         const size_t msg_size, void * signature, const size_t signature_size, const void *pbkList_buf, const int wpbkList)
 {
     if(signature_size < sizeof(ringct20_signature_t)) {
@@ -750,15 +749,15 @@ size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, c
     return ringct20_crypto_sign_open_with_pbkList( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, pbkList_buf, wpbkList);
 }
 
-void dap_enc_sig_ringct20_key_delete(struct dap_enc_key * key)
+void dap_enc_sig_ringct20_key_delete(struct dap_enc_key * a_key)
 {
-    if(key->pbkListsize)
+    if(a_key->pbkListsize)
     {
-        DAP_DELETE(key->pbkListdata);
-        key->pbkListsize = 0;
+        DAP_DELETE(a_key->pbkListdata);
+        a_key->pbkListsize = 0;
     }
-    ringct20_private_and_public_keys_delete((ringct20_private_key_t *) key->priv_key_data,
-            (ringct20_public_key_t *) key->pub_key_data);
+    ringct20_private_and_public_keys_delete((ringct20_private_key_t *) a_key->priv_key_data,
+            (ringct20_public_key_t *) a_key->pub_key_data);
 }
 
 size_t dap_enc_ringct20_calc_signature_size(void)
diff --git a/test/crypto/dap_enc_ringct20_test.c b/test/crypto/dap_enc_ringct20_test.c
index 24d7b6cfc37df06b66564c99f03823bdf92b521e..0633dafed0d468e4344fb4dc611c35b05c30ed8b 100644
--- a/test/crypto/dap_enc_ringct20_test.c
+++ b/test/crypto/dap_enc_ringct20_test.c
@@ -107,7 +107,7 @@ static void test_signing_verifying2(void)
     dap_enc_key_delete(key);
 }
 
-//DEBUG TO USE IT get back:dap_enc_sig_ringct20_get_sign_with_pbkList,//dap_enc_sig_ringct20_get_sign,
+//DEBUG TO USE IT get back:dap_enc_sig_ringct20_get_sign_with_pb_list,//dap_enc_sig_ringct20_get_sign,
 static void test_signing_verifying(void)
 {
 
diff --git a/test/crypto/dap_enc_test.c b/test/crypto/dap_enc_test.c
index 94b09beaa439a6848ed70c806e6ba61b60cb0d79..024f96bddc6c0b7f69ab684dece354884cbfd229 100755
--- a/test/crypto/dap_enc_test.c
+++ b/test/crypto/dap_enc_test.c
@@ -77,6 +77,7 @@ void test_encypt_decrypt(int count_steps, const dap_enc_key_type_t key_type, con
 
 void test_encypt_decrypt_fast(int count_steps, const dap_enc_key_type_t key_type, const int cipher_key_size)
 {
+    dap_print_module_name(dap_enc_get_type_name(key_type));
     const size_t buf_size = 4096;
     char buf_encrypt_out[buf_size];
     char buf_decrypt_out[buf_size];
diff --git a/test/crypto/main.c b/test/crypto/main.c
index 208592653d7d8ad09be2b01d819bd71e4a4ce865..dc0d5420314c0d0ccea789117b410929a1352d50 100755
--- a/test/crypto/main.c
+++ b/test/crypto/main.c
@@ -18,15 +18,18 @@ int main(void)
  // switch off debug info from library
     dap_log_level_set(L_CRITICAL);
 
-    dap_enc_ringct20_tests_run(10);return 0;
+    test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_GOST_OFB,   32);
+    test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_GOST_OFB,   32);
+    test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_KUZN_OFB,  32);
+    test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_KUZN_OFB,  32);
+    return 0;
+    dap_enc_ringct20_tests_run(10);
     dap_enc_tests_run();
 
     test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_BF_CBC,     0);
     test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_BF_CBC,     0);
     test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_BF_OFB,     0);
     test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_BF_OFB,     0);
-    test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_GOST_OFB,   32);
-    test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_GOST_OFB,   32);
     test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_IAES,       32);
     test_encypt_decrypt_fast (1000, DAP_ENC_KEY_TYPE_IAES,       32);
     test_encypt_decrypt      (1000, DAP_ENC_KEY_TYPE_OAES,       32);