]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_lcl.h
GOST CMS encryption implementation.
[openssl-gost/engine.git] / gost_lcl.h
index 4c099dd27d34315c5b5ec4b635df8007edae75f2..e693841b08c70dd9bf44c0a661c65e6ecf518b91 100644 (file)
@@ -68,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 */
 };
@@ -130,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)
@@ -166,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;
@@ -210,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 {
@@ -240,6 +250,8 @@ 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();