]> www.wagner.pp.ru Git - openssl-gost/engine.git/blobdiff - gost_lcl.h
Remove dependency from DSA
[openssl-gost/engine.git] / gost_lcl.h
index 58ac94d8921bee24b06a59d95282b31e969a32d9..52984a00336ed96a0aebe595a92780aff586fee6 100644 (file)
@@ -11,7 +11,6 @@
  **********************************************************************/
 # include <openssl/bn.h>
 # include <openssl/evp.h>
-# include <openssl/dsa.h>
 # include <openssl/asn1t.h>
 # include <openssl/x509.h>
 # include <openssl/engine.h>
@@ -35,6 +34,7 @@ typedef struct R3410_ec {
     char *q;
     char *x;
     char *y;
+    char *cofactor;
 } R3410_ec_params;
 
 extern R3410_ec_params R3410_2001_paramset[],
@@ -68,7 +68,9 @@ struct gost_pmeth_data {
                                  * filled */
     EVP_MD *md;
     unsigned char *shared_ukm;
+    size_t shared_ukm_size;     /* XXX temporary use shared_ukm and hash for 2018 CKE */
     int peer_key_used;
+    int cipher_nid;             /* KExp15/KImp15 algs */
 };
 
 struct gost_mac_pmeth_data {
@@ -181,7 +183,9 @@ void imit_gost_cp_12_destroy(void);
 EVP_MD *magma_omac(void);
 void magma_omac_destroy(void);
 EVP_MD *grasshopper_omac(void);
+EVP_MD *grasshopper_omac_acpkm(void);
 void grasshopper_omac_destroy(void);
+void grasshopper_omac_acpkm_destroy(void);
 /* Cipher context used for EVP_CIPHER operation */
 struct ossl_gost_cipher_ctx {
     int paramNID;
@@ -216,7 +220,11 @@ const EVP_CIPHER *cipher_gost_cbc();
 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();
 void cipher_gost_destroy();
+
+void inc_counter(unsigned char *buffer, size_t buf_len);
+
 # define EVP_MD_CTRL_KEY_LEN (EVP_MD_CTRL_ALG_CTRL+3)
 # define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+4)
 # define EVP_MD_CTRL_MAC_LEN (EVP_MD_CTRL_ALG_CTRL+5)
@@ -231,19 +239,21 @@ int pkey_GOST_ECcp_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out,
                            size_t in_len);
 /* derive functions */
 /* From gost_ec_keyx.c */
-int pkey_gost_ec_derive(EVP_PKEY_CTX *ctx, unsigned char *key,
-                        size_t *keylen);
+int pkey_gost_ec_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
 int fill_GOST_EC_params(EC_KEY *eckey, int nid);
-int gost_sign_keygen(DSA *dsa);
 int gost_ec_keygen(EC_KEY *ec);
 
-DSA_SIG *gost_ec_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey);
-
-int gost_do_verify(const unsigned char *dgst, int dgst_len,
-                   DSA_SIG *sig, DSA *dsa);
+ECDSA_SIG *gost_ec_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey);
 int gost_ec_verify(const unsigned char *dgst, int dgst_len,
-                   DSA_SIG *sig, EC_KEY *ec);
+                   ECDSA_SIG *sig, EC_KEY *ec);
 int gost_ec_compute_public(EC_KEY *ec);
+
+/* KDF TREE */
+int gost_kdftree2012_256(unsigned char *keyout, size_t keyout_len,
+                         const unsigned char *key, size_t keylen,
+                         const unsigned char *label, size_t label_len,
+                         const unsigned char *seed, size_t seed_len,
+                         const size_t representation);
 /*============== miscellaneous functions============================= */
 /* from gost_sign.c */
 /* Convert GOST R 34.11 hash sum to bignum according to standard */
@@ -254,7 +264,7 @@ BIGNUM *hashsum2bn(const unsigned char *dgst, int len);
  */
 int store_bignum(const BIGNUM *bn, unsigned char *buf, int len);
 /* Pack GOST R 34.10 signature according to CryptoPro rules */
-int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen);
+int pack_sign_cp(ECDSA_SIG *s, int order, unsigned char *sig, size_t *siglen);
 /* from ameth.c */
 /* Get private key as BIGNUM from both 34.10-2001 keys*/
 /* Returns pointer into EVP_PKEY structure */