]> www.wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
CI: set OpenSSL branch v.1.1.1g, apply new patch
authorigrkir <i.kirillov@kryptonite.ru>
Mon, 7 Jun 2021 08:44:13 +0000 (11:44 +0300)
committerDmitry Belyavskiy <beldmit@users.noreply.github.com>
Tue, 8 Jun 2021 11:28:18 +0000 (14:28 +0300)
add new patch to update OpenSSL objects database

.cirrus.yml
.github/before_script.sh
.github/workflows/ci.yml
.github/workflows/codeql-analysis.yml
patches/openssl_111g_obj.diff [new file with mode: 0644]

index 6e04657785adadd1f2299ad054e8dd44e4005caa..936ecd1fc570c3a4e6afd660267397aef6d49665 100644 (file)
@@ -4,13 +4,15 @@ FreeBSD_task:
   env:
     PREFIX: ${HOME}/opt
     PATH: ${PREFIX}/bin:${PATH}
-    OPENSSL_BRANCH: master
+    OPENSSL_BRANCH: OpenSSL_1_1_1g
   install_script:
     - pkg install -y git cmake p5-App-cpanminus gdb pkgconf
     - sudo cpanm --notest Test2::V0
   script:
     - git clone --depth 1 -b ${OPENSSL_BRANCH} https://github.com/openssl/openssl.git
     - cd openssl
+    - patch -p0 < ../patches/openssl_111g.diff
+    - patch -p0 < ../patches/openssl_111g_obj.diff
     - ./config shared -d --prefix=${PREFIX} --openssldir=${PREFIX} -Wl,-rpath=${PREFIX}/lib && make all install_sw > build.log 2>&1 || (cat build.log && exit 1)
     - cd ..
     - mkdir build
index 7a86543452e7be130ebd7becf40e0e5df3ca0019..388a8aebefe27e782b8141cfa310bf4383018b6c 100755 (executable)
@@ -9,6 +9,8 @@ fi
 
 git clone --depth 1 -b $OPENSSL_BRANCH https://github.com/openssl/openssl.git
 cd openssl
+patch -p0 < ../patches/openssl_111g.diff
+patch -p0 < ../patches/openssl_111g_obj.diff
 git describe --always --long
 
 PREFIX=$HOME/opt
index 29740624339ee124dcf48d71a3fe462b5404cfc5..e039bacb48a5bf1c86c761292353b9b03e677209 100644 (file)
@@ -2,17 +2,17 @@ name: CI
 on: [push, pull_request]
 
 env:
-    OPENSSL_BRANCH: openssl-3.0.0-alpha17
+    OPENSSL_BRANCH: OpenSSL_1_1_1g
 
 jobs:
-    gcc-openssl-stable:
+    gcc-openssl-111g:
         runs-on: ubuntu-20.04
         steps:
             - uses: actions/checkout@v2
             - run: .github/before_script.sh
             - run: .github/script.sh
 
-    clang-openssl-stable:
+    clang-openssl-111g:
         runs-on: ubuntu-20.04
         env:
             CC: clang
@@ -21,54 +21,17 @@ jobs:
             - run: .github/before_script.sh
             - run: .github/script.sh
 
-    gcc-openssl-master:
+    gcc-asan-openssl-111g:
         runs-on: ubuntu-20.04
         env:
-            OPENSSL_BRANCH: master
-        steps:
-            - uses: actions/checkout@v2
-            - run: .github/before_script.sh
-            - run: .github/script.sh
-
-    gcc-asan-openssl-master:
-        runs-on: ubuntu-20.04
-        env:
-            OPENSSL_BRANCH: master
+            OPENSSL_BRANCH: OpenSSL_1_1_1g
             ASAN: -DASAN=1
         steps:
             - uses: actions/checkout@v2
             - run: .github/before_script.sh
             - run: .github/script.sh
 
-    macos-asan-openssl-master:
-        runs-on: macos-latest
-        env:
-            OPENSSL_BRANCH: master
-            ASAN: -DASAN=1
-        steps:
-            - name: install cpanm and Test2::V0
-              uses: perl-actions/install-with-cpanm@v1
-              with:
-                  install: Test2::V0
-            - name: Checkout gost-engine
-              uses: actions/checkout@v2
-            - name: checkout OpenSSL
-              uses: actions/checkout@v2
-              with:
-                  repository: openssl/openssl
-                  ref: master
-                  path: openssl
-            - name: configure OpenSSL
-              run: |
-                  mkdir $HOME/opt
-                  ./Configure --prefix=$HOME/opt
-              working-directory: openssl
-            - name: build+install OpenSSL
-              run: make -s install_sw
-              working-directory: openssl
-            - run: .github/script.sh
-
-    gcc-openssl-stable-x86:
+    gcc-openssl-111g-x86:
         runs-on: ubuntu-20.04
         env:
             CFLAGS: -m32
index dcefc07d8d4cd04a50e519aa5f179e4e60ea20db..1eea4f7d3e0071bd892e7c92de473bbad2440262 100644 (file)
@@ -1,7 +1,7 @@
 name: "CodeQL"
 
 env:
-  OPENSSL_BRANCH: openssl-3.0.0-alpha17
+  OPENSSL_BRANCH: OpenSSL_1_1_1g
   #RPATH: "-Wl,-rpath=${PREFIX}/lib"
   #PREFIX: ${HOME}/opt
   #PATH: ${PREFIX}/bin:${PATH}
@@ -36,13 +36,13 @@ jobs:
     # Initializes the CodeQL tools for scanning.
     - name: Initialize CodeQL
       uses: github/codeql-action/init@v1
-      # languages: cpp
       # Override language selection by uncommenting this and choosing your languages
       # with:
+      #   languages: go, javascript, csharp, python, cpp, java
 
     # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
     # If this step fails, then you should remove it and run the build manually (see below)
-    #- name: Autobuild
+    # - name: Autobuild
     #  uses: github/codeql-action/autobuild@v1
 
     # ℹ️ Command-line programs to run using the OS shell.
@@ -60,6 +60,8 @@ jobs:
        export PREFIX=`pwd`/opt
        export RPATH="-Wl,-rpath=${PREFIX}/lib"
        cd openssl
+       patch -p0 < ../patches/openssl_111g.diff
+       patch -p0 < ../patches/openssl_111g_obj.diff
        git describe --always --long
        ./config shared -d --prefix=${PREFIX} --openssldir=${PREFIX} ${RPATH}
        make -s build_libs
diff --git a/patches/openssl_111g_obj.diff b/patches/openssl_111g_obj.diff
new file mode 100644 (file)
index 0000000..cf32bd6
--- /dev/null
@@ -0,0 +1,749 @@
+diff --git crypto/objects/obj_compat.h crypto/objects/obj_compat.h
+new file mode 100644
+index 00000000..68d1d733
+--- /dev/null
++++ crypto/objects/obj_compat.h
+@@ -0,0 +1,46 @@
++
++#ifndef OPENSSL_NO_DEPRECATED_3_0
++
++#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm                 SN_magma_ctr_acpkm
++#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm                NID_magma_ctr_acpkm
++#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm                OBJ_magma_ctr_acpkm
++
++#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac            SN_magma_ctr_acpkm_omac
++#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac           NID_magma_ctr_acpkm_omac
++#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac           OBJ_magma_ctr_acpkm_omac
++
++#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm            SN_kuznyechik_ctr_acpkm
++#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm           NID_kuznyechik_ctr_acpkm
++#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm           OBJ_kuznyechik_ctr_acpkm
++
++#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac               SN_kuznyechik_ctr_acpkm_omac
++#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac              NID_kuznyechik_ctr_acpkm_omac
++#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac              OBJ_kuznyechik_ctr_acpkm_omac
++
++#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15             SN_magma_kexp15
++#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15            NID_magma_kexp15
++#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15            OBJ_magma_kexp15
++
++#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15                SN_kuznyechik_kexp15
++#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15               NID_kuznyechik_kexp15
++#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15               OBJ_kuznyechik_kexp15
++
++#define SN_grasshopper_ecb              SN_kuznyechik_ecb
++#define NID_grasshopper_ecb             NID_kuznyechik_ecb
++
++#define SN_grasshopper_ctr              SN_kuznyechik_ctr
++#define NID_grasshopper_ctr             NID_kuznyechik_ctr
++
++#define SN_grasshopper_ofb              SN_kuznyechik_ofb
++#define NID_grasshopper_ofb             NID_kuznyechik_ofb
++
++#define SN_grasshopper_cbc              SN_kuznyechik_cbc
++#define NID_grasshopper_cbc             NID_kuznyechik_cbc
++
++#define SN_grasshopper_cfb              SN_kuznyechik_cfb
++#define NID_grasshopper_cfb             NID_kuznyechik_cfb
++
++#define SN_grasshopper_mac              SN_kuznyechik_mac
++#define NID_grasshopper_mac             NID_kuznyechik_mac
++
++#endif
+diff --git crypto/objects/obj_dat.h crypto/objects/obj_dat.h
+index d1b1bc7f..d8082b59 100644
+--- crypto/objects/obj_dat.h
++++ crypto/objects/obj_dat.h
+@@ -2,7 +2,7 @@
+  * WARNING: do not edit!
+  * Generated by crypto/objects/obj_dat.pl
+  *
+- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+  * Licensed under the OpenSSL license (the "License").  You may not use
+  * this file except in compliance with the License.  You can obtain a copy
+  * in the file LICENSE in the source distribution or at
+@@ -10,7 +10,7 @@
+  */
+ /* Serialized OID's */
+-static const unsigned char so[7762] = {
++static const unsigned char so[7838] = {
+     0x2A,0x86,0x48,0x86,0xF7,0x0D,                 /* [    0] OBJ_rsadsi */
+     0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,            /* [    6] OBJ_pkcs */
+     0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02,       /* [   13] OBJ_md2 */
+@@ -1061,24 +1061,36 @@ static const unsigned char so[7762] = {
+     0x2B,0x6F,0x02,0x8C,0x53,                      /* [ 7612] OBJ_ieee_siswg */
+     0x2A,0x81,0x1C,0xCF,0x55,0x01,0x82,0x2D,       /* [ 7617] OBJ_sm2 */
+     0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x01,       /* [ 7625] OBJ_id_tc26_cipher_gostr3412_2015_magma */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x01,0x01,  /* [ 7633] OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x01,0x02,  /* [ 7642] OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,       /* [ 7651] OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,0x01,  /* [ 7659] OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,0x02,  /* [ 7668] OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,            /* [ 7677] OBJ_id_tc26_wrap */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x01,       /* [ 7684] OBJ_id_tc26_wrap_gostr3412_2015_magma */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x01,0x01,  /* [ 7692] OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x02,       /* [ 7701] OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik */
+-    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x02,0x01,  /* [ 7709] OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 */
+-    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x02,  /* [ 7718] OBJ_id_tc26_gost_3410_2012_256_paramSetB */
+-    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x03,  /* [ 7727] OBJ_id_tc26_gost_3410_2012_256_paramSetC */
+-    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x04,  /* [ 7736] OBJ_id_tc26_gost_3410_2012_256_paramSetD */
+-    0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0C,       /* [ 7745] OBJ_hmacWithSHA512_224 */
+-    0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0D,       /* [ 7753] OBJ_hmacWithSHA512_256 */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,       /* [ 7633] OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,            /* [ 7641] OBJ_id_tc26_wrap */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x01,       /* [ 7648] OBJ_id_tc26_wrap_gostr3412_2015_magma */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x02,       /* [ 7656] OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik */
++    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x02,  /* [ 7664] OBJ_id_tc26_gost_3410_2012_256_paramSetB */
++    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x03,  /* [ 7673] OBJ_id_tc26_gost_3410_2012_256_paramSetC */
++    0x2A,0x85,0x03,0x07,0x01,0x02,0x01,0x01,0x04,  /* [ 7682] OBJ_id_tc26_gost_3410_2012_256_paramSetD */
++    0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0C,       /* [ 7691] OBJ_hmacWithSHA512_224 */
++    0x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x0D,       /* [ 7699] OBJ_hmacWithSHA512_256 */
++    0x2A,0x85,0x03,0x07,0x01,0x00,                 /* [ 7707] OBJ_id_tc26_modules */
++    0x2A,0x85,0x03,0x07,0x01,0x00,0x06,            /* [ 7713] OBJ_id_tc26_cms */
++    0x2A,0x85,0x03,0x07,0x01,0x00,0x06,0x01,       /* [ 7720] OBJ_id_tc26_cms_attrs */
++    0x2A,0x85,0x03,0x07,0x01,0x00,0x06,0x01,0x01,  /* [ 7728] OBJ_id_tc26_mac_attr */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x01,0x01,  /* [ 7737] OBJ_magma_ctr_acpkm */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x01,0x02,  /* [ 7746] OBJ_magma_ctr_acpkm_omac */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,0x01,  /* [ 7755] OBJ_kuznyechik_ctr_acpkm */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x05,0x02,0x02,  /* [ 7764] OBJ_kuznyechik_ctr_acpkm_omac */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x01,0x01,  /* [ 7773] OBJ_magma_kexp15 */
++    0x2A,0x85,0x03,0x07,0x01,0x01,0x07,0x02,0x01,  /* [ 7782] OBJ_kuznyechik_kexp15 */
++    0x2A,0x85,0x03,0x64,0x05,                      /* [ 7791] OBJ_OGRNIP */
++    0x2A,0x85,0x03,0x64,0x71,                      /* [ 7796] OBJ_classSignTool */
++    0x2A,0x85,0x03,0x64,0x71,0x01,                 /* [ 7801] OBJ_classSignToolKC1 */
++    0x2A,0x85,0x03,0x64,0x71,0x02,                 /* [ 7807] OBJ_classSignToolKC2 */
++    0x2A,0x85,0x03,0x64,0x71,0x03,                 /* [ 7813] OBJ_classSignToolKC3 */
++    0x2A,0x85,0x03,0x64,0x71,0x04,                 /* [ 7819] OBJ_classSignToolKB1 */
++    0x2A,0x85,0x03,0x64,0x71,0x05,                 /* [ 7825] OBJ_classSignToolKB2 */
++    0x2A,0x85,0x03,0x64,0x71,0x06,                 /* [ 7831] OBJ_classSignToolKA1 */
+ };
+-#define NUM_NID 1195
++#define NUM_NID 1221
+ static const ASN1_OBJECT nid_objs[NUM_NID] = {
+     {"UNDEF", "undefined", NID_undef},
+     {"rsadsi", "RSA Data Security, Inc.", NID_rsadsi, 6, &so[0]},
+@@ -2092,12 +2104,12 @@ static const ASN1_OBJECT nid_objs[NUM_NID] = {
+     {"gost89-cbc", "gost89-cbc", NID_gost89_cbc},
+     {"gost89-ecb", "gost89-ecb", NID_gost89_ecb},
+     {"gost89-ctr", "gost89-ctr", NID_gost89_ctr},
+-    {"grasshopper-ecb", "grasshopper-ecb", NID_grasshopper_ecb},
+-    {"grasshopper-ctr", "grasshopper-ctr", NID_grasshopper_ctr},
+-    {"grasshopper-ofb", "grasshopper-ofb", NID_grasshopper_ofb},
+-    {"grasshopper-cbc", "grasshopper-cbc", NID_grasshopper_cbc},
+-    {"grasshopper-cfb", "grasshopper-cfb", NID_grasshopper_cfb},
+-    {"grasshopper-mac", "grasshopper-mac", NID_grasshopper_mac},
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
+     {"ChaCha20-Poly1305", "chacha20-poly1305", NID_chacha20_poly1305},
+     {"ChaCha20", "chacha20", NID_chacha20},
+     {"tlsfeature", "TLS Feature", NID_tlsfeature, 8, &so[6619]},
+@@ -2254,30 +2266,56 @@ static const ASN1_OBJECT nid_objs[NUM_NID] = {
+     {"ieee-siswg", "IEEE Security in Storage Working Group", NID_ieee_siswg, 5, &so[7612]},
+     {"SM2", "sm2", NID_sm2, 8, &so[7617]},
+     {"id-tc26-cipher-gostr3412-2015-magma", "id-tc26-cipher-gostr3412-2015-magma", NID_id_tc26_cipher_gostr3412_2015_magma, 8, &so[7625]},
+-    {"id-tc26-cipher-gostr3412-2015-magma-ctracpkm", "id-tc26-cipher-gostr3412-2015-magma-ctracpkm", NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm, 9, &so[7633]},
+-    {"id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac", "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac", NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac, 9, &so[7642]},
+-    {"id-tc26-cipher-gostr3412-2015-kuznyechik", "id-tc26-cipher-gostr3412-2015-kuznyechik", NID_id_tc26_cipher_gostr3412_2015_kuznyechik, 8, &so[7651]},
+-    {"id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm", "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm", NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm, 9, &so[7659]},
+-    {"id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac", "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac", NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac, 9, &so[7668]},
+-    {"id-tc26-wrap", "id-tc26-wrap", NID_id_tc26_wrap, 7, &so[7677]},
+-    {"id-tc26-wrap-gostr3412-2015-magma", "id-tc26-wrap-gostr3412-2015-magma", NID_id_tc26_wrap_gostr3412_2015_magma, 8, &so[7684]},
+-    {"id-tc26-wrap-gostr3412-2015-magma-kexp15", "id-tc26-wrap-gostr3412-2015-magma-kexp15", NID_id_tc26_wrap_gostr3412_2015_magma_kexp15, 9, &so[7692]},
+-    {"id-tc26-wrap-gostr3412-2015-kuznyechik", "id-tc26-wrap-gostr3412-2015-kuznyechik", NID_id_tc26_wrap_gostr3412_2015_kuznyechik, 8, &so[7701]},
+-    {"id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15", "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15", NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15, 9, &so[7709]},
+-    {"id-tc26-gost-3410-2012-256-paramSetB", "GOST R 34.10-2012 (256 bit) ParamSet B", NID_id_tc26_gost_3410_2012_256_paramSetB, 9, &so[7718]},
+-    {"id-tc26-gost-3410-2012-256-paramSetC", "GOST R 34.10-2012 (256 bit) ParamSet C", NID_id_tc26_gost_3410_2012_256_paramSetC, 9, &so[7727]},
+-    {"id-tc26-gost-3410-2012-256-paramSetD", "GOST R 34.10-2012 (256 bit) ParamSet D", NID_id_tc26_gost_3410_2012_256_paramSetD, 9, &so[7736]},
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    {"id-tc26-cipher-gostr3412-2015-kuznyechik", "id-tc26-cipher-gostr3412-2015-kuznyechik", NID_id_tc26_cipher_gostr3412_2015_kuznyechik, 8, &so[7633]},
++    { NULL, NULL, NID_undef },
++    { NULL, NULL, NID_undef },
++    {"id-tc26-wrap", "id-tc26-wrap", NID_id_tc26_wrap, 7, &so[7641]},
++    {"id-tc26-wrap-gostr3412-2015-magma", "id-tc26-wrap-gostr3412-2015-magma", NID_id_tc26_wrap_gostr3412_2015_magma, 8, &so[7648]},
++    { NULL, NULL, NID_undef },
++    {"id-tc26-wrap-gostr3412-2015-kuznyechik", "id-tc26-wrap-gostr3412-2015-kuznyechik", NID_id_tc26_wrap_gostr3412_2015_kuznyechik, 8, &so[7656]},
++    { NULL, NULL, NID_undef },
++    {"id-tc26-gost-3410-2012-256-paramSetB", "GOST R 34.10-2012 (256 bit) ParamSet B", NID_id_tc26_gost_3410_2012_256_paramSetB, 9, &so[7664]},
++    {"id-tc26-gost-3410-2012-256-paramSetC", "GOST R 34.10-2012 (256 bit) ParamSet C", NID_id_tc26_gost_3410_2012_256_paramSetC, 9, &so[7673]},
++    {"id-tc26-gost-3410-2012-256-paramSetD", "GOST R 34.10-2012 (256 bit) ParamSet D", NID_id_tc26_gost_3410_2012_256_paramSetD, 9, &so[7682]},
+     {"magma-ecb", "magma-ecb", NID_magma_ecb},
+     {"magma-ctr", "magma-ctr", NID_magma_ctr},
+     {"magma-ofb", "magma-ofb", NID_magma_ofb},
+     {"magma-cbc", "magma-cbc", NID_magma_cbc},
+     {"magma-cfb", "magma-cfb", NID_magma_cfb},
+     {"magma-mac", "magma-mac", NID_magma_mac},
+-    {"hmacWithSHA512-224", "hmacWithSHA512-224", NID_hmacWithSHA512_224, 8, &so[7745]},
+-    {"hmacWithSHA512-256", "hmacWithSHA512-256", NID_hmacWithSHA512_256, 8, &so[7753]},
++    {"hmacWithSHA512-224", "hmacWithSHA512-224", NID_hmacWithSHA512_224, 8, &so[7691]},
++    {"hmacWithSHA512-256", "hmacWithSHA512-256", NID_hmacWithSHA512_256, 8, &so[7699]},
++    {"id-tc26-modules", "GOST TC26 ASN.1 modules", NID_id_tc26_modules, 6, &so[7707]},
++    {"id-tc26-cms", "GOST TC26 SMS", NID_id_tc26_cms, 7, &so[7713]},
++    {"id-tc26-cms-attrs", "GOST TC26 SMS attributes", NID_id_tc26_cms_attrs, 8, &so[7720]},
++    {"id-tc26-mac-attr", "GOST TC26 SMS content-mac attribute", NID_id_tc26_mac_attr, 9, &so[7728]},
++    {"magma-ctr-acpkm", "magma-ctr-acpkm", NID_magma_ctr_acpkm, 9, &so[7737]},
++    {"magma-ctr-acpkm-omac", "magma-ctr-acpkm-omac", NID_magma_ctr_acpkm_omac, 9, &so[7746]},
++    {"kuznyechik-ctr-acpkm", "kuznyechik-ctr-acpkm", NID_kuznyechik_ctr_acpkm, 9, &so[7755]},
++    {"kuznyechik-ctr-acpkm-omac", "kuznyechik-ctr-acpkm-omac", NID_kuznyechik_ctr_acpkm_omac, 9, &so[7764]},
++    {"magma-kexp15", "magma-kexp15", NID_magma_kexp15, 9, &so[7773]},
++    {"kuznyechik-kexp15", "kuznyechik-kexp15", NID_kuznyechik_kexp15, 9, &so[7782]},
++    {"OGRNIP", "OGRNIP", NID_OGRNIP, 5, &so[7791]},
++    {"classSignTool", "Class of Signing Tool", NID_classSignTool, 5, &so[7796]},
++    {"classSignToolKC1", "Class of Signing Tool KC1", NID_classSignToolKC1, 6, &so[7801]},
++    {"classSignToolKC2", "Class of Signing Tool KC2", NID_classSignToolKC2, 6, &so[7807]},
++    {"classSignToolKC3", "Class of Signing Tool KC3", NID_classSignToolKC3, 6, &so[7813]},
++    {"classSignToolKB1", "Class of Signing Tool KB1", NID_classSignToolKB1, 6, &so[7819]},
++    {"classSignToolKB2", "Class of Signing Tool KB2", NID_classSignToolKB2, 6, &so[7825]},
++    {"classSignToolKA1", "Class of Signing Tool KA1", NID_classSignToolKA1, 6, &so[7831]},
++    {"kuznyechik-ecb", "kuznyechik-ecb", NID_kuznyechik_ecb},
++    {"kuznyechik-ctr", "kuznyechik-ctr", NID_kuznyechik_ctr},
++    {"kuznyechik-ofb", "kuznyechik-ofb", NID_kuznyechik_ofb},
++    {"kuznyechik-cbc", "kuznyechik-cbc", NID_kuznyechik_cbc},
++    {"kuznyechik-cfb", "kuznyechik-cfb", NID_kuznyechik_cfb},
++    {"kuznyechik-mac", "kuznyechik-mac", NID_kuznyechik_mac},
++    {"kuznyechik-mgm", "kuznyechik-mgm", NID_kuznyechik_mgm},
++    {"magma-mgm", "magma-mgm", NID_magma_mgm},
+ };
+-#define NUM_SN 1186
++#define NUM_SN 1200
+ static const unsigned int sn_objs[NUM_SN] = {
+      364,    /* "AD_DVCS" */
+      419,    /* "AES-128-CBC" */
+@@ -2469,6 +2507,7 @@ static const unsigned int sn_objs[NUM_SN] = {
+      178,    /* "OCSP" */
+      180,    /* "OCSPSigning" */
+     1005,    /* "OGRN" */
++    1205,    /* "OGRNIP" */
+      379,    /* "ORG" */
+       18,    /* "OU" */
+      749,    /* "Oakley-EC2N-3" */
+@@ -2642,6 +2681,13 @@ static const unsigned int sn_objs[NUM_SN] = {
+      883,    /* "certificateRevocationList" */
+       54,    /* "challengePassword" */
+      407,    /* "characteristic-two-field" */
++    1206,    /* "classSignTool" */
++    1212,    /* "classSignToolKA1" */
++    1210,    /* "classSignToolKB1" */
++    1211,    /* "classSignToolKB2" */
++    1207,    /* "classSignToolKC1" */
++    1208,    /* "classSignToolKC2" */
++    1209,    /* "classSignToolKC3" */
+      395,    /* "clearance" */
+      130,    /* "clientAuth" */
+     1131,    /* "cmcCA" */
+@@ -2748,12 +2794,6 @@ static const unsigned int sn_objs[NUM_SN] = {
+     1010,    /* "gost89-ecb" */
+      812,    /* "gost94" */
+      850,    /* "gost94cc" */
+-    1015,    /* "grasshopper-cbc" */
+-    1016,    /* "grasshopper-cfb" */
+-    1013,    /* "grasshopper-ctr" */
+-    1012,    /* "grasshopper-ecb" */
+-    1017,    /* "grasshopper-mac" */
+-    1014,    /* "grasshopper-ofb" */
+     1156,    /* "hmacWithDstu34311" */
+      797,    /* "hmacWithMD5" */
+      163,    /* "hmacWithSHA1" */
+@@ -3040,11 +3080,9 @@ static const unsigned int sn_objs[NUM_SN] = {
+      990,    /* "id-tc26-cipher" */
+     1001,    /* "id-tc26-cipher-constants" */
+     1176,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik" */
+-    1177,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" */
+-    1178,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" */
+     1173,    /* "id-tc26-cipher-gostr3412-2015-magma" */
+-    1174,    /* "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" */
+-    1175,    /* "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" */
++    1196,    /* "id-tc26-cms" */
++    1197,    /* "id-tc26-cms-attrs" */
+      994,    /* "id-tc26-constants" */
+      981,    /* "id-tc26-digest" */
+     1000,    /* "id-tc26-digest-constants" */
+@@ -3063,6 +3101,8 @@ static const unsigned int sn_objs[NUM_SN] = {
+      988,    /* "id-tc26-hmac-gost-3411-2012-256" */
+      989,    /* "id-tc26-hmac-gost-3411-2012-512" */
+      987,    /* "id-tc26-mac" */
++    1198,    /* "id-tc26-mac-attr" */
++    1195,    /* "id-tc26-modules" */
+      978,    /* "id-tc26-sign" */
+      995,    /* "id-tc26-sign-constants" */
+      984,    /* "id-tc26-signwithdigest" */
+@@ -3070,9 +3110,7 @@ static const unsigned int sn_objs[NUM_SN] = {
+      986,    /* "id-tc26-signwithdigest-gost3410-2012-512" */
+     1179,    /* "id-tc26-wrap" */
+     1182,    /* "id-tc26-wrap-gostr3412-2015-kuznyechik" */
+-    1183,    /* "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" */
+     1180,    /* "id-tc26-wrap-gostr3412-2015-magma" */
+-    1181,    /* "id-tc26-wrap-gostr3412-2015-magma-kexp15" */
+      676,    /* "identified-organization" */
+     1170,    /* "ieee" */
+     1171,    /* "ieee-siswg" */
+@@ -3095,6 +3133,16 @@ static const unsigned int sn_objs[NUM_SN] = {
+      956,    /* "jurisdictionST" */
+      150,    /* "keyBag" */
+       83,    /* "keyUsage" */
++    1216,    /* "kuznyechik-cbc" */
++    1217,    /* "kuznyechik-cfb" */
++    1214,    /* "kuznyechik-ctr" */
++    1201,    /* "kuznyechik-ctr-acpkm" */
++    1202,    /* "kuznyechik-ctr-acpkm-omac" */
++    1213,    /* "kuznyechik-ecb" */
++    1204,    /* "kuznyechik-kexp15" */
++    1218,    /* "kuznyechik-mac" */
++    1219,    /* "kuznyechik-mgm" */
++    1215,    /* "kuznyechik-ofb" */
+      477,    /* "lastModifiedBy" */
+      476,    /* "lastModifiedTime" */
+      157,    /* "localKeyID" */
+@@ -3102,8 +3150,12 @@ static const unsigned int sn_objs[NUM_SN] = {
+     1190,    /* "magma-cbc" */
+     1191,    /* "magma-cfb" */
+     1188,    /* "magma-ctr" */
++    1199,    /* "magma-ctr-acpkm" */
++    1200,    /* "magma-ctr-acpkm-omac" */
+     1187,    /* "magma-ecb" */
++    1203,    /* "magma-kexp15" */
+     1192,    /* "magma-mac" */
++    1220,    /* "magma-mgm" */
+     1189,    /* "magma-ofb" */
+      460,    /* "mail" */
+      493,    /* "mailPreferenceOption" */
+@@ -3467,7 +3519,7 @@ static const unsigned int sn_objs[NUM_SN] = {
+     1093,    /* "x509ExtAdmission" */
+ };
+-#define NUM_LN 1186
++#define NUM_LN 1200
+ static const unsigned int ln_objs[NUM_LN] = {
+      363,    /* "AD Time Stamping" */
+      405,    /* "ANSI X9.62" */
+@@ -3485,6 +3537,13 @@ static const unsigned int ln_objs[NUM_LN] = {
+      952,    /* "CT Precertificate Poison" */
+      951,    /* "CT Precertificate SCTs" */
+      953,    /* "CT Precertificate Signer" */
++    1206,    /* "Class of Signing Tool" */
++    1212,    /* "Class of Signing Tool KA1" */
++    1210,    /* "Class of Signing Tool KB1" */
++    1211,    /* "Class of Signing Tool KB2" */
++    1207,    /* "Class of Signing Tool KC1" */
++    1208,    /* "Class of Signing Tool KC2" */
++    1209,    /* "Class of Signing Tool KC3" */
+      131,    /* "Code Signing" */
+     1024,    /* "Ctrl/Provision WAP Termination" */
+     1023,    /* "Ctrl/provision WAP Access" */
+@@ -3546,6 +3605,10 @@ static const unsigned int ln_objs[NUM_LN] = {
+      808,    /* "GOST R 34.11-94 with GOST R 34.10-94" */
+      852,    /* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */
+      854,    /* "GOST R 3410-2001 Parameter Set Cryptocom" */
++    1195,    /* "GOST TC26 ASN.1 modules" */
++    1196,    /* "GOST TC26 SMS" */
++    1197,    /* "GOST TC26 SMS attributes" */
++    1198,    /* "GOST TC26 SMS content-mac attribute" */
+     1156,    /* "HMAC DSTU Gost 34311-95" */
+      988,    /* "HMAC GOST 34.11-2012 256 bit" */
+      989,    /* "HMAC GOST 34.11-2012 512 bit" */
+@@ -3604,6 +3667,7 @@ static const unsigned int ln_objs[NUM_LN] = {
+      371,    /* "OCSP Service Locator" */
+      180,    /* "OCSP Signing" */
+     1005,    /* "OGRN" */
++    1205,    /* "OGRNIP" */
+      161,    /* "PBES2" */
+       69,    /* "PBKDF2" */
+      162,    /* "PBMAC1" */
+@@ -3967,12 +4031,6 @@ static const unsigned int ln_objs[NUM_LN] = {
+      975,    /* "gost89-cnt-12" */
+     1011,    /* "gost89-ctr" */
+     1010,    /* "gost89-ecb" */
+-    1015,    /* "grasshopper-cbc" */
+-    1016,    /* "grasshopper-cfb" */
+-    1013,    /* "grasshopper-ctr" */
+-    1012,    /* "grasshopper-ecb" */
+-    1017,    /* "grasshopper-mac" */
+-    1014,    /* "grasshopper-ofb" */
+     1036,    /* "hkdf" */
+      855,    /* "hmac" */
+      780,    /* "hmac-md5" */
+@@ -4220,11 +4278,7 @@ static const unsigned int ln_objs[NUM_LN] = {
+      990,    /* "id-tc26-cipher" */
+     1001,    /* "id-tc26-cipher-constants" */
+     1176,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik" */
+-    1177,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" */
+-    1178,    /* "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" */
+     1173,    /* "id-tc26-cipher-gostr3412-2015-magma" */
+-    1174,    /* "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" */
+-    1175,    /* "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" */
+      994,    /* "id-tc26-constants" */
+      981,    /* "id-tc26-digest" */
+     1000,    /* "id-tc26-digest-constants" */
+@@ -4237,9 +4291,7 @@ static const unsigned int ln_objs[NUM_LN] = {
+      984,    /* "id-tc26-signwithdigest" */
+     1179,    /* "id-tc26-wrap" */
+     1182,    /* "id-tc26-wrap-gostr3412-2015-kuznyechik" */
+-    1183,    /* "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" */
+     1180,    /* "id-tc26-wrap-gostr3412-2015-magma" */
+-    1181,    /* "id-tc26-wrap-gostr3412-2015-magma-kexp15" */
+       34,    /* "idea-cbc" */
+       35,    /* "idea-cfb" */
+       36,    /* "idea-ecb" */
+@@ -4262,6 +4314,16 @@ static const unsigned int ln_objs[NUM_LN] = {
+      956,    /* "jurisdictionStateOrProvinceName" */
+      150,    /* "keyBag" */
+      773,    /* "kisa" */
++    1216,    /* "kuznyechik-cbc" */
++    1217,    /* "kuznyechik-cfb" */
++    1214,    /* "kuznyechik-ctr" */
++    1201,    /* "kuznyechik-ctr-acpkm" */
++    1202,    /* "kuznyechik-ctr-acpkm-omac" */
++    1213,    /* "kuznyechik-ecb" */
++    1204,    /* "kuznyechik-kexp15" */
++    1218,    /* "kuznyechik-mac" */
++    1219,    /* "kuznyechik-mgm" */
++    1215,    /* "kuznyechik-ofb" */
+     1063,    /* "kx-any" */
+     1039,    /* "kx-dhe" */
+     1041,    /* "kx-dhe-psk" */
+@@ -4280,8 +4342,12 @@ static const unsigned int ln_objs[NUM_LN] = {
+     1190,    /* "magma-cbc" */
+     1191,    /* "magma-cfb" */
+     1188,    /* "magma-ctr" */
++    1199,    /* "magma-ctr-acpkm" */
++    1200,    /* "magma-ctr-acpkm-omac" */
+     1187,    /* "magma-ecb" */
++    1203,    /* "magma-kexp15" */
+     1192,    /* "magma-mac" */
++    1220,    /* "magma-mgm" */
+     1189,    /* "magma-ofb" */
+      493,    /* "mailPreferenceOption" */
+      467,    /* "manager" */
+@@ -4657,7 +4723,7 @@ static const unsigned int ln_objs[NUM_LN] = {
+      125,    /* "zlib compression" */
+ };
+-#define NUM_OBJ 1071
++#define NUM_OBJ 1083
+ static const unsigned int obj_objs[NUM_OBJ] = {
+        0,    /* OBJ_undef                        0 */
+      181,    /* OBJ_iso                          1 */
+@@ -4910,8 +4976,10 @@ static const unsigned int obj_objs[NUM_OBJ] = {
+      974,    /* OBJ_id_tc26                      1 2 643 7 1 */
+     1005,    /* OBJ_OGRN                         1 2 643 100 1 */
+     1006,    /* OBJ_SNILS                        1 2 643 100 3 */
++    1205,    /* OBJ_OGRNIP                       1 2 643 100 5 */
+     1007,    /* OBJ_subjectSignTool              1 2 643 100 111 */
+     1008,    /* OBJ_issuerSignTool               1 2 643 100 112 */
++    1206,    /* OBJ_classSignTool                1 2 643 100 113 */
+      184,    /* OBJ_X9_57                        1 2 840 10040 */
+      405,    /* OBJ_ansi_X9_62                   1 2 840 10045 */
+      389,    /* OBJ_Enterprises                  1 3 6 1 4 1 */
+@@ -4998,8 +5066,15 @@ static const unsigned int obj_objs[NUM_OBJ] = {
+      816,    /* OBJ_id_GostR3411_94_prf          1 2 643 2 2 23 */
+      817,    /* OBJ_id_GostR3410_2001DH          1 2 643 2 2 98 */
+      818,    /* OBJ_id_GostR3410_94DH            1 2 643 2 2 99 */
++    1195,    /* OBJ_id_tc26_modules              1 2 643 7 1 0 */
+      977,    /* OBJ_id_tc26_algorithms           1 2 643 7 1 1 */
+      994,    /* OBJ_id_tc26_constants            1 2 643 7 1 2 */
++    1207,    /* OBJ_classSignToolKC1             1 2 643 100 113 1 */
++    1208,    /* OBJ_classSignToolKC2             1 2 643 100 113 2 */
++    1209,    /* OBJ_classSignToolKC3             1 2 643 100 113 3 */
++    1210,    /* OBJ_classSignToolKB1             1 2 643 100 113 4 */
++    1211,    /* OBJ_classSignToolKB2             1 2 643 100 113 5 */
++    1212,    /* OBJ_classSignToolKA1             1 2 643 100 113 6 */
+        1,    /* OBJ_rsadsi                       1 2 840 113549 */
+      185,    /* OBJ_X9cm                         1 2 840 10040 4 */
+     1031,    /* OBJ_id_pkinit                    1 3 6 1 5 2 3 */
+@@ -5051,6 +5126,7 @@ static const unsigned int obj_objs[NUM_OBJ] = {
+      842,    /* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */
+      843,    /* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */
+      844,    /* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */
++    1196,    /* OBJ_id_tc26_cms                  1 2 643 7 1 0 6 */
+      978,    /* OBJ_id_tc26_sign                 1 2 643 7 1 1 1 */
+      981,    /* OBJ_id_tc26_digest               1 2 643 7 1 1 2 */
+      984,    /* OBJ_id_tc26_signwithdigest       1 2 643 7 1 1 3 */
+@@ -5138,6 +5214,7 @@ static const unsigned int obj_objs[NUM_OBJ] = {
+      849,    /* OBJ_id_Gost28147_89_cc           1 2 643 2 9 1 6 1 */
+      854,    /* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */
+     1004,    /* OBJ_INN                          1 2 643 3 131 1 1 */
++    1197,    /* OBJ_id_tc26_cms_attrs            1 2 643 7 1 0 6 1 */
+      979,    /* OBJ_id_GostR3410_2012_256        1 2 643 7 1 1 1 1 */
+      980,    /* OBJ_id_GostR3410_2012_512        1 2 643 7 1 1 1 2 */
+      982,    /* OBJ_id_GostR3411_2012_256        1 2 643 7 1 1 2 2 */
+@@ -5359,12 +5436,13 @@ static const unsigned int obj_objs[NUM_OBJ] = {
+     1120,    /* OBJ_aria_128_ccm                 1 2 410 200046 1 1 37 */
+     1121,    /* OBJ_aria_192_ccm                 1 2 410 200046 1 1 38 */
+     1122,    /* OBJ_aria_256_ccm                 1 2 410 200046 1 1 39 */
+-    1174,    /* OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1 2 643 7 1 1 5 1 1 */
+-    1175,    /* OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1 2 643 7 1 1 5 1 2 */
+-    1177,    /* OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1 2 643 7 1 1 5 2 1 */
+-    1178,    /* OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1 2 643 7 1 1 5 2 2 */
+-    1181,    /* OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 1 2 643 7 1 1 7 1 1 */
+-    1183,    /* OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1 2 643 7 1 1 7 2 1 */
++    1198,    /* OBJ_id_tc26_mac_attr             1 2 643 7 1 0 6 1 1 */
++    1199,    /* OBJ_magma_ctr_acpkm              1 2 643 7 1 1 5 1 1 */
++    1200,    /* OBJ_magma_ctr_acpkm_omac         1 2 643 7 1 1 5 1 2 */
++    1201,    /* OBJ_kuznyechik_ctr_acpkm         1 2 643 7 1 1 5 2 1 */
++    1202,    /* OBJ_kuznyechik_ctr_acpkm_omac    1 2 643 7 1 1 5 2 2 */
++    1203,    /* OBJ_magma_kexp15                 1 2 643 7 1 1 7 1 1 */
++    1204,    /* OBJ_kuznyechik_kexp15            1 2 643 7 1 1 7 2 1 */
+     1148,    /* OBJ_id_tc26_gost_3410_2012_256_paramSetA 1 2 643 7 1 2 1 1 1 */
+     1184,    /* OBJ_id_tc26_gost_3410_2012_256_paramSetB 1 2 643 7 1 2 1 1 2 */
+     1185,    /* OBJ_id_tc26_gost_3410_2012_256_paramSetC 1 2 643 7 1 2 1 1 3 */
+diff --git crypto/objects/obj_mac.num crypto/objects/obj_mac.num
+index 1b6a9c61..6d70d8c0 100644
+--- crypto/objects/obj_mac.num
++++ crypto/objects/obj_mac.num
+@@ -1192,3 +1192,29 @@ magma_cfb               1191
+ magma_mac             1192
+ hmacWithSHA512_224            1193
+ hmacWithSHA512_256            1194
++id_tc26_modules               1195
++id_tc26_cms           1196
++id_tc26_cms_attrs             1197
++id_tc26_mac_attr              1198
++magma_ctr_acpkm               1199
++magma_ctr_acpkm_omac          1200
++kuznyechik_ctr_acpkm          1201
++kuznyechik_ctr_acpkm_omac             1202
++magma_kexp15          1203
++kuznyechik_kexp15             1204
++OGRNIP                1205
++classSignTool         1206
++classSignToolKC1              1207
++classSignToolKC2              1208
++classSignToolKC3              1209
++classSignToolKB1              1210
++classSignToolKB2              1211
++classSignToolKA1              1212
++kuznyechik_ecb                1213
++kuznyechik_ctr                1214
++kuznyechik_ofb                1215
++kuznyechik_cbc                1216
++kuznyechik_cfb                1217
++kuznyechik_mac                1218
++kuznyechik_mgm                1219
++magma_mgm             1220
+diff --git fuzz/oids.txt fuzz/oids.txt
+index eda55e4e..5c81d68a 100644
+--- fuzz/oids.txt
++++ fuzz/oids.txt
+@@ -1048,18 +1048,30 @@ OBJ_ieee="\x2B\x6F"
+ OBJ_ieee_siswg="\x2B\x6F\x02\x8C\x53"
+ OBJ_sm2="\x2A\x81\x1C\xCF\x55\x01\x82\x2D"
+ OBJ_id_tc26_cipher_gostr3412_2015_magma="\x2A\x85\x03\x07\x01\x01\x05\x01"
+-OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm="\x2A\x85\x03\x07\x01\x01\x05\x01\x01"
+-OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac="\x2A\x85\x03\x07\x01\x01\x05\x01\x02"
+ OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik="\x2A\x85\x03\x07\x01\x01\x05\x02"
+-OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm="\x2A\x85\x03\x07\x01\x01\x05\x02\x01"
+-OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac="\x2A\x85\x03\x07\x01\x01\x05\x02\x02"
+ OBJ_id_tc26_wrap="\x2A\x85\x03\x07\x01\x01\x07"
+ OBJ_id_tc26_wrap_gostr3412_2015_magma="\x2A\x85\x03\x07\x01\x01\x07\x01"
+-OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15="\x2A\x85\x03\x07\x01\x01\x07\x01\x01"
+ OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik="\x2A\x85\x03\x07\x01\x01\x07\x02"
+-OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15="\x2A\x85\x03\x07\x01\x01\x07\x02\x01"
+ OBJ_id_tc26_gost_3410_2012_256_paramSetB="\x2A\x85\x03\x07\x01\x02\x01\x01\x02"
+ OBJ_id_tc26_gost_3410_2012_256_paramSetC="\x2A\x85\x03\x07\x01\x02\x01\x01\x03"
+ OBJ_id_tc26_gost_3410_2012_256_paramSetD="\x2A\x85\x03\x07\x01\x02\x01\x01\x04"
+ OBJ_hmacWithSHA512_224="\x2A\x86\x48\x86\xF7\x0D\x02\x0C"
+ OBJ_hmacWithSHA512_256="\x2A\x86\x48\x86\xF7\x0D\x02\x0D"
++OBJ_id_tc26_modules="\x2A\x85\x03\x07\x01\x00"
++OBJ_id_tc26_cms="\x2A\x85\x03\x07\x01\x00\x06"
++OBJ_id_tc26_cms_attrs="\x2A\x85\x03\x07\x01\x00\x06\x01"
++OBJ_id_tc26_mac_attr="\x2A\x85\x03\x07\x01\x00\x06\x01\x01"
++OBJ_magma_ctr_acpkm="\x2A\x85\x03\x07\x01\x01\x05\x01\x01"
++OBJ_magma_ctr_acpkm_omac="\x2A\x85\x03\x07\x01\x01\x05\x01\x02"
++OBJ_kuznyechik_ctr_acpkm="\x2A\x85\x03\x07\x01\x01\x05\x02\x01"
++OBJ_kuznyechik_ctr_acpkm_omac="\x2A\x85\x03\x07\x01\x01\x05\x02\x02"
++OBJ_magma_kexp15="\x2A\x85\x03\x07\x01\x01\x07\x01\x01"
++OBJ_kuznyechik_kexp15="\x2A\x85\x03\x07\x01\x01\x07\x02\x01"
++OBJ_OGRNIP="\x2A\x85\x03\x64\x05"
++OBJ_classSignTool="\x2A\x85\x03\x64\x71"
++OBJ_classSignToolKC1="\x2A\x85\x03\x64\x71\x01"
++OBJ_classSignToolKC2="\x2A\x85\x03\x64\x71\x02"
++OBJ_classSignToolKC3="\x2A\x85\x03\x64\x71\x03"
++OBJ_classSignToolKB1="\x2A\x85\x03\x64\x71\x04"
++OBJ_classSignToolKB2="\x2A\x85\x03\x64\x71\x05"
++OBJ_classSignToolKA1="\x2A\x85\x03\x64\x71\x06"
+diff --git include/openssl/obj_mac.h include/openssl/obj_mac.h
+index 8795a5e3..90b5de76 100644
+--- include/openssl/obj_mac.h
++++ include/openssl/obj_mac.h
+@@ -2,7 +2,7 @@
+  * WARNING: do not edit!
+  * Generated by crypto/objects/objects.pl
+  *
+- * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+  * Licensed under the OpenSSL license (the "License").  You may not use
+  * this file except in compliance with the License.  You can obtain a copy
+  * in the file LICENSE in the source distribution or at
+@@ -4164,22 +4164,22 @@
+ #define SN_id_tc26_modules              "id-tc26-modules"
+ #define LN_id_tc26_modules              "GOST TC26 ASN.1 modules"
+-#define NID_id_tc26_modules             1203
++#define NID_id_tc26_modules             1195
+ #define OBJ_id_tc26_modules             OBJ_id_tc26,0L
+ #define SN_id_tc26_cms          "id-tc26-cms"
+ #define LN_id_tc26_cms          "GOST TC26 SMS"
+-#define NID_id_tc26_cms         1204
++#define NID_id_tc26_cms         1196
+ #define OBJ_id_tc26_cms         OBJ_id_tc26_modules,6L
+ #define SN_id_tc26_cms_attrs            "id-tc26-cms-attrs"
+ #define LN_id_tc26_cms_attrs            "GOST TC26 SMS attributes"
+-#define NID_id_tc26_cms_attrs           1205
++#define NID_id_tc26_cms_attrs           1197
+ #define OBJ_id_tc26_cms_attrs           OBJ_id_tc26_cms,1L
+ #define SN_id_tc26_mac_attr             "id-tc26-mac-attr"
+ #define LN_id_tc26_mac_attr             "GOST TC26 SMS content-mac attribute"
+-#define NID_id_tc26_mac_attr            1206
++#define NID_id_tc26_mac_attr            1198
+ #define OBJ_id_tc26_mac_attr            OBJ_id_tc26_cms_attrs,1L
+ #define SN_id_tc26_algorithms           "id-tc26-algorithms"
+@@ -4251,11 +4251,11 @@
+ #define OBJ_id_tc26_cipher_gostr3412_2015_magma         OBJ_id_tc26_cipher,1L
+ #define SN_magma_ctr_acpkm              "magma-ctr-acpkm"
+-#define NID_magma_ctr_acpkm             1174
++#define NID_magma_ctr_acpkm             1199
+ #define OBJ_magma_ctr_acpkm             OBJ_id_tc26_cipher_gostr3412_2015_magma,1L
+ #define SN_magma_ctr_acpkm_omac         "magma-ctr-acpkm-omac"
+-#define NID_magma_ctr_acpkm_omac                1175
++#define NID_magma_ctr_acpkm_omac                1200
+ #define OBJ_magma_ctr_acpkm_omac                OBJ_id_tc26_cipher_gostr3412_2015_magma,2L
+ #define SN_id_tc26_cipher_gostr3412_2015_kuznyechik             "id-tc26-cipher-gostr3412-2015-kuznyechik"
+@@ -4263,11 +4263,11 @@
+ #define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik            OBJ_id_tc26_cipher,2L
+ #define SN_kuznyechik_ctr_acpkm         "kuznyechik-ctr-acpkm"
+-#define NID_kuznyechik_ctr_acpkm                1177
++#define NID_kuznyechik_ctr_acpkm                1201
+ #define OBJ_kuznyechik_ctr_acpkm                OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L
+ #define SN_kuznyechik_ctr_acpkm_omac            "kuznyechik-ctr-acpkm-omac"
+-#define NID_kuznyechik_ctr_acpkm_omac           1178
++#define NID_kuznyechik_ctr_acpkm_omac           1202
+ #define OBJ_kuznyechik_ctr_acpkm_omac           OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L
+ #define SN_id_tc26_agreement            "id-tc26-agreement"
+@@ -4291,7 +4291,7 @@
+ #define OBJ_id_tc26_wrap_gostr3412_2015_magma           OBJ_id_tc26_wrap,1L
+ #define SN_magma_kexp15         "magma-kexp15"
+-#define NID_magma_kexp15                1181
++#define NID_magma_kexp15                1203
+ #define OBJ_magma_kexp15                OBJ_id_tc26_wrap_gostr3412_2015_magma,1L
+ #define SN_id_tc26_wrap_gostr3412_2015_kuznyechik               "id-tc26-wrap-gostr3412-2015-kuznyechik"
+@@ -4299,7 +4299,7 @@
+ #define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik              OBJ_id_tc26_wrap,2L
+ #define SN_kuznyechik_kexp15            "kuznyechik-kexp15"
+-#define NID_kuznyechik_kexp15           1183
++#define NID_kuznyechik_kexp15           1204
+ #define OBJ_kuznyechik_kexp15           OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L
+ #define SN_id_tc26_constants            "id-tc26-constants"
+@@ -4392,7 +4392,7 @@
+ #define SN_OGRNIP               "OGRNIP"
+ #define LN_OGRNIP               "OGRNIP"
+-#define NID_OGRNIP              1195
++#define NID_OGRNIP              1205
+ #define OBJ_OGRNIP              OBJ_member_body,643L,100L,5L
+ #define SN_subjectSignTool              "subjectSignTool"
+@@ -4407,59 +4407,59 @@
+ #define SN_classSignTool                "classSignTool"
+ #define LN_classSignTool                "Class of Signing Tool"
+-#define NID_classSignTool               1196
++#define NID_classSignTool               1206
+ #define OBJ_classSignTool               OBJ_member_body,643L,100L,113L
+ #define SN_classSignToolKC1             "classSignToolKC1"
+ #define LN_classSignToolKC1             "Class of Signing Tool KC1"
+-#define NID_classSignToolKC1            1197
++#define NID_classSignToolKC1            1207
+ #define OBJ_classSignToolKC1            OBJ_member_body,643L,100L,113L,1L
+ #define SN_classSignToolKC2             "classSignToolKC2"
+ #define LN_classSignToolKC2             "Class of Signing Tool KC2"
+-#define NID_classSignToolKC2            1198
++#define NID_classSignToolKC2            1208
+ #define OBJ_classSignToolKC2            OBJ_member_body,643L,100L,113L,2L
+ #define SN_classSignToolKC3             "classSignToolKC3"
+ #define LN_classSignToolKC3             "Class of Signing Tool KC3"
+-#define NID_classSignToolKC3            1199
++#define NID_classSignToolKC3            1209
+ #define OBJ_classSignToolKC3            OBJ_member_body,643L,100L,113L,3L
+ #define SN_classSignToolKB1             "classSignToolKB1"
+ #define LN_classSignToolKB1             "Class of Signing Tool KB1"
+-#define NID_classSignToolKB1            1200
++#define NID_classSignToolKB1            1210
+ #define OBJ_classSignToolKB1            OBJ_member_body,643L,100L,113L,4L
+ #define SN_classSignToolKB2             "classSignToolKB2"
+ #define LN_classSignToolKB2             "Class of Signing Tool KB2"
+-#define NID_classSignToolKB2            1201
++#define NID_classSignToolKB2            1211
+ #define OBJ_classSignToolKB2            OBJ_member_body,643L,100L,113L,5L
+ #define SN_classSignToolKA1             "classSignToolKA1"
+ #define LN_classSignToolKA1             "Class of Signing Tool KA1"
+-#define NID_classSignToolKA1            1202
++#define NID_classSignToolKA1            1212
+ #define OBJ_classSignToolKA1            OBJ_member_body,643L,100L,113L,6L
+ #define SN_kuznyechik_ecb               "kuznyechik-ecb"
+-#define NID_kuznyechik_ecb              1012
++#define NID_kuznyechik_ecb              1213
+ #define SN_kuznyechik_ctr               "kuznyechik-ctr"
+-#define NID_kuznyechik_ctr              1013
++#define NID_kuznyechik_ctr              1214
+ #define SN_kuznyechik_ofb               "kuznyechik-ofb"
+-#define NID_kuznyechik_ofb              1014
++#define NID_kuznyechik_ofb              1215
+ #define SN_kuznyechik_cbc               "kuznyechik-cbc"
+-#define NID_kuznyechik_cbc              1015
++#define NID_kuznyechik_cbc              1216
+ #define SN_kuznyechik_cfb               "kuznyechik-cfb"
+-#define NID_kuznyechik_cfb              1016
++#define NID_kuznyechik_cfb              1217
+ #define SN_kuznyechik_mac               "kuznyechik-mac"
+-#define NID_kuznyechik_mac              1017
++#define NID_kuznyechik_mac              1218
+ #define SN_kuznyechik_mgm               "kuznyechik-mgm"
+-#define NID_kuznyechik_mgm              1207
++#define NID_kuznyechik_mgm              1219
+ #define SN_magma_ecb            "magma-ecb"
+ #define NID_magma_ecb           1187
+@@ -4480,7 +4480,7 @@
+ #define NID_magma_mac           1192
+ #define SN_magma_mgm            "magma-mgm"
+-#define NID_magma_mgm           1208
++#define NID_magma_mgm           1220
+ #define SN_camellia_128_cbc             "CAMELLIA-128-CBC"
+ #define LN_camellia_128_cbc             "camellia-128-cbc"