diff --git a/aktool/aktool_icode_config.c b/aktool/aktool_icode_config.c
index 0f5dbe39e80f0f395c1625e75f7d78772916377b..48430a1b05f3fa569920e14ddf15ecc634a36a06 100644
--- a/aktool/aktool_icode_config.c
+++ b/aktool/aktool_icode_config.c
@@ -22,14 +22,15 @@
     if(( memcmp( name, "input", 5 ) == 0 ) ||
        ( memcmp( name, "output", 6 ) == 0  ) ||
        ( memcmp( name, "database", 8 ) == 0 )) {
-    #ifdef _WIN32
-     GetFullPathName( value, FILENAME_MAX, ki->pubkey_file, NULL );
-    #else
-     if( ak_realpath( value, ki->pubkey_file, sizeof( ki->pubkey_file ) -1 ) != ak_error_ok ) {
-       aktool_error(_("the full name of checksum file \"%s\" cannot be created"), value );
-       return 0;
-     }
-    #endif
+     #ifdef _WIN32
+      GetFullPathName( value, FILENAME_MAX, ki->pubkey_file, NULL );
+     #else
+      if( ak_realpath( value, ki->pubkey_file, sizeof( ki->pubkey_file ) -1 ) != ak_error_ok ) {
+        aktool_error(_("the full name of checksum file \"%s\" cannot be created"), value );
+        return 0;
+      }
+     #endif
+      return 1;
     }
 
    /* --format устанавливаем формат хранения вычисленных/проверочных значений */
@@ -37,26 +38,70 @@
       if( memcmp( value, "bsd", 3 ) == 0 ) ki->field = format_bsd;
       if( memcmp( value, "linux", 5 ) == 0 ) ki->field = format_linux;
       if( memcmp( value, "binary", 6 ) == 0 ) ki->field = format_binary;
+      return 1;
     }
 
    /* --hash-table-nodes устанавливаем количество узлов верхнего уровня в хеш-таблице
                       результирующее значение всегда находится между 16 и 4096 */
     if( memcmp( name, "hash-table-nodes", 16 ) == 0 ) {
       ki->icode_lists_count = ak_min( 4096, ak_max( 16, atoi( value )));
-    }
+      return 1;
+   }
 
    /* --recursive устанавливаем флаг рекурсивного обхода каталогов */
     if( memcmp( name, "recursive", 9 ) == 0 ) {
       if(( memcmp( value, "true", 4 ) == 0 ) || ( memcmp( value, "TRUE", 4 ) == 0 ))
         ki->tree = ak_true;
+      return 1;
     }
 
    /* шаблон поиска файлов */
     if( memcmp( name, "pattern", 7 ) == 0 ) {
       if( ki->pattern != NULL ) free( ki->pattern );
       ki->pattern = strdup( value );
+      return 1;
     }
 
+   /* --algorithm  устанавливаем имя алгоритма бесключевого хеширования */
+    if( memcmp( name, "algorithm", 9 ) == 0 ) {
+      if(( ki->method = ak_oid_find_by_ni( value )) == NULL ) {
+        aktool_error(_("using unsupported name or identifier \"%s\""), value );
+        printf(_("try \"aktool s --oid hash\" for list of all available identifiers\n"));
+        return 0;
+      }
+      if( ki->method->engine != hash_function ) {
+        aktool_error(_("option --algorithm accepts only keyless integrity mechanism"));
+        printf(_("try \"aktool s --oid hash\" for list of all available identifiers\n"));
+        return 0;
+      }
+      return 1;
+    }
+
+   /* --key устанавливаем имя файла, содержащего секретный ключ */
+    if( memcmp( name, "key", 3 ) == 0 ) {
+     #ifdef _WIN32
+      GetFullPathName( value, FILENAME_MAX, ki->key_file, NULL );
+     #else
+      if( ak_realpath( value, ki->key_file, sizeof( ki->key_file ) -1 ) != ak_error_ok ) {
+        aktool_error(_("the full name of key file \"%s\" cannot be created"), value );
+        return 0;
+      }
+     #endif
+      return 1;
+    }
+
+   /* --no-derive */
+    if( memcmp( name, "no-derive", 9 ) == 0 ) {
+      if(( memcmp( value, "false", 5 ) == 0 ) || ( memcmp( value, "FALSE", 5 ) == 0 )) {
+        ki->key_derive = ak_false;
+      }
+      return 1;
+    }
+
+
+    if( ak_log_get_level() > ak_log_standard )
+      ak_error_message_fmt( ak_error_undefined_value, __func__,
+                             "unsupported record in section [%s]: %s = %s", section, name, value );
   return 1;
 }
 
diff --git a/aktool/icode.conf b/aktool/icode.conf
index 1be74b578ff7a1e05afb65dcd83aa6cd1657b7e9..3f1979e43f6e0bff22403b0734637d7666b9afbd 100644
--- a/aktool/icode.conf
+++ b/aktool/icode.conf
@@ -44,7 +44,7 @@
 # последние два формата используют простые записи в текстовом файле
  format = binary
 
-# ключ hash-table-nodes позхволяет определить количество узлов верхнего уровня
+# ключ hash-table-nodes позволяет определить количество узлов верхнего уровня
 # в хеш-таблице, хранящей значения вычисленных кодов целостности.
 # чем больше указанное значение, тем быстрее реализуется поиск, но используется
 # большее количество оперативной памяти
@@ -66,7 +66,7 @@
 # ключ key используется для указания файла с секретным ключом, используемым
 # для выработки имитовставки. указанный ключ определяет алгоритм выработки имитовставки
 # допустимыми алгоритмами являются: cmac-magma cmac-kuznechik hmac-streebog256 hmac-streebog512 nmac-streebog
-# key = secret.key
+# key = magma.key
 
 # ключ no-derive запрещает выработку производного ключа для каждого контролируемого
 # файла или сегмента данных. использование этой опции может привести к быстрому