]> wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_lcl.h
test_digest: Test CMAC using EVP_MAC (provider) API
[openssl-gost/engine.git] / gost_lcl.h
index 08120b574b20b4380d1e1d66a22b2487fdb3e1a1..e693841b08c70dd9bf44c0a661c65e6ecf518b91 100644 (file)
@@ -55,6 +55,7 @@ int register_pmeth_gost(int id, EVP_PKEY_METHOD **pmeth, int flags);
 /* Gost-specific pmeth control-function parameters */
 /* For GOST R34.10 parameters */
 # define param_ctrl_string "paramset"
+# define ukm_ctrl_string "ukmhex"
 # define EVP_PKEY_CTRL_GOST_PARAMSET (EVP_PKEY_ALG_CTRL+1)
 /* For GOST 28147 MAC */
 # define key_ctrl_string "key"
@@ -67,8 +68,8 @@ struct gost_pmeth_data {
     int sign_param_nid;         /* Should be set whenever parameters are
                                  * filled */
     EVP_MD *md;
-    unsigned char *shared_ukm;
-    size_t shared_ukm_size;     /* XXX temporary use shared_ukm and hash for 2018 CKE */
+    unsigned char shared_ukm[32];
+    size_t shared_ukm_size;
     int peer_key_used;
     int cipher_nid;             /* KExp15/KImp15 algs */
 };
@@ -129,6 +130,7 @@ typedef struct {                /* FIXME incomplete */
 typedef struct PSKeyTransport_st {
     ASN1_OCTET_STRING *psexp;
     X509_PUBKEY       *ephem_key;
+    ASN1_OCTET_STRING *ukm;
 } PSKeyTransport_gost;
 
 DECLARE_ASN1_FUNCTIONS(PSKeyTransport_gost)
@@ -165,6 +167,12 @@ typedef struct {
 
 DECLARE_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS)
 
+typedef struct {
+       ASN1_OCTET_STRING *ukm;
+       } GOST2015_CIPHER_PARAMS;
+
+DECLARE_ASN1_FUNCTIONS(GOST2015_CIPHER_PARAMS)
+
 typedef struct {
     ASN1_OCTET_STRING *masked_priv_key;
     ASN1_OCTET_STRING *public_key;
@@ -209,7 +217,10 @@ struct ossl_gost_cipher_ctx {
     int paramNID;
     unsigned int count;
     int key_meshing;
+    unsigned char kdf_seed[8];
+    unsigned char tag[8];
     gost_ctx cctx;
+    EVP_MD_CTX *omac_ctx;
 };
 /* Structure to map parameter NID to S-block */
 struct gost_cipher_info {
@@ -239,7 +250,12 @@ const EVP_CIPHER *cipher_gost_cpacnt();
 const EVP_CIPHER *cipher_gost_cpcnt_12();
 const EVP_CIPHER *cipher_magma_cbc();
 const EVP_CIPHER *cipher_magma_ctr();
+const EVP_CIPHER *cipher_magma_ctr_acpkm();
+const EVP_CIPHER *cipher_magma_ctr_acpkm_omac();
+const EVP_CIPHER *cipher_magma_wrap();
+const EVP_CIPHER *cipher_kuznyechik_wrap();
 void cipher_gost_destroy();
+void wrap_ciphers_destroy();
 
 void inc_counter(unsigned char *counter, size_t counter_bytes);