+static EVP_PKEY_METHOD* pmeth_GostR3410_2001 = NULL,
+ * pmeth_GostR3410_2012_256 = NULL,
+ * pmeth_GostR3410_2012_512 = NULL,
+ * pmeth_Gost28147_MAC = NULL, * pmeth_Gost28147_MAC_12 = NULL,
+ * pmeth_magma_mac = NULL, * pmeth_grasshopper_mac = NULL,
+ * pmeth_magma_mac_acpkm = NULL, * pmeth_grasshopper_mac_acpkm = NULL;
+
+static EVP_PKEY_ASN1_METHOD* ameth_GostR3410_2001 = NULL,
+ * ameth_GostR3410_2012_256 = NULL,
+ * ameth_GostR3410_2012_512 = NULL,
+ * ameth_Gost28147_MAC = NULL, * ameth_Gost28147_MAC_12 = NULL,
+ * ameth_magma_mac = NULL, * ameth_grasshopper_mac = NULL,
+ * ameth_magma_mac_acpkm = NULL, * ameth_grasshopper_mac_acpkm = NULL;
+
+static struct gost_digest_minfo {
+ int nid;
+ EVP_MD *(*digest)(void);
+ void (*destroy)(void);
+ const char *sn;
+ const char *alias;
+} gost_digest_array[] = {
+ {
+ NID_id_GostR3411_94,
+ digest_gost,
+ digest_gost_destroy,
+ },
+ {
+ NID_id_Gost28147_89_MAC,
+ imit_gost_cpa,
+ imit_gost_cpa_destroy,
+ },
+ {
+ NID_id_GostR3411_2012_256,
+ digest_gost2012_256,
+ digest_gost2012_256_destroy,
+ SN_id_GostR3411_2012_256,
+ "streebog256",
+ },
+ {
+ NID_id_GostR3411_2012_512,
+ digest_gost2012_512,
+ digest_gost2012_512_destroy,
+ SN_id_GostR3411_2012_512,
+ "streebog512",
+ },
+ {
+ NID_gost_mac_12,
+ imit_gost_cp_12,
+ imit_gost_cp_12_destroy,
+ },
+ {
+ NID_magma_mac,
+ magma_omac,
+ magma_omac_destroy,
+ },
+ {
+ NID_grasshopper_mac,
+ grasshopper_omac,
+ grasshopper_omac_destroy,
+ },
+ {
+ NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac,
+ grasshopper_omac_acpkm,
+ grasshopper_omac_acpkm_destroy,
+ },
+ { 0 },
+};
+
+static struct gost_cipher_minfo {
+ int nid;
+ const EVP_CIPHER *(*cipher)(void);
+} gost_cipher_array[] = {
+ {