X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_lcl.h;h=61c2aa61524884b2d845672f7fe3d78255dd04a7;hb=cba16944bff9d8c5dcf37be641822cd3de6d2ec1;hp=3a2c7d57014733f3193d56f88d36956412c6f23d;hpb=c98ba9d03213d0c63d6874539d59f7b55fbc3fae;p=openssl-gost%2Fengine.git diff --git a/gost_lcl.h b/gost_lcl.h index 3a2c7d5..61c2aa6 100644 --- a/gost_lcl.h +++ b/gost_lcl.h @@ -20,8 +20,10 @@ # include "gosthash.h" /* Control commands */ # define GOST_PARAM_CRYPT_PARAMS 0 -# define GOST_PARAM_MAX 0 +# define GOST_PARAM_PBE_PARAMS 1 +# define GOST_PARAM_MAX 1 # define GOST_CTRL_CRYPT_PARAMS (ENGINE_CMD_BASE+GOST_PARAM_CRYPT_PARAMS) +# define GOST_CTRL_PBE_PARAMS (ENGINE_CMD_BASE+GOST_PARAM_PBE_PARAMS) extern const ENGINE_CMD_DEFN gost_cmds[]; int gost_control_func(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); @@ -117,6 +119,14 @@ typedef struct { } GOST_CIPHER_PARAMS; DECLARE_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) + +typedef struct { + ASN1_OCTET_STRING *masked_priv_key; + ASN1_OCTET_STRING *public_key; +} MASKED_GOST_KEY; + +DECLARE_ASN1_FUNCTIONS(MASKED_GOST_KEY) + /*============== Message digest and cipher related structures ==========*/ /* * Structure used as EVP_MD_CTX-md_data. It allows to avoid storing @@ -132,8 +142,12 @@ struct ossl_gost_digest_ctx { }; /* EVP_MD structure for GOST R 34.11 */ extern EVP_MD digest_gost; +/* EVP MD structure for GOST R 34.11-2012 algorithms */ +extern EVP_MD digest_gost2012_256; +extern EVP_MD digest_gost2012_512; /* EVP_MD structure for GOST 28147 in MAC mode */ extern EVP_MD imit_gost_cpa; +extern EVP_MD imit_gost_cp_12; /* Cipher context used for EVP_CIPHER operation */ struct ossl_gost_cipher_ctx { int paramNID; @@ -164,6 +178,7 @@ const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj); /* Implementation of GOST 28147-89 cipher in CFB and CNT modes */ extern EVP_CIPHER cipher_gost; extern EVP_CIPHER cipher_gost_cpacnt; +extern EVP_CIPHER cipher_gost_cpcnt_12; # define EVP_MD_CTRL_KEY_LEN (EVP_MD_CTRL_ALG_CTRL+3) # define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+4) /* EVP_PKEY_METHOD key encryption callbacks */ @@ -175,39 +190,39 @@ int pkey_GOST94cp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, int pkey_GOST94cp_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t in_len); -/* From gost2001_keyx.c */ -int pkey_GOST01cp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, - size_t *outlen, const unsigned char *key, - size_t key_len); - -int pkey_GOST01cp_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, - size_t *outlen, const unsigned char *in, - size_t in_len); +/* From gost_ec_keyx.c */ +int pkey_GOST_ECcp_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, + size_t *outlen, const unsigned char *key, + size_t key_len); + +int pkey_GOST_ECcp_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, + size_t *outlen, const unsigned char *in, + size_t in_len); /* derive functions */ -/* From gost2001_keyx.c */ -int pkey_gost2001_derive(EVP_PKEY_CTX *ctx, unsigned char *key, - size_t *keylen); +/* From gost_ec_keyx.c */ +int pkey_gost_ec_derive(EVP_PKEY_CTX *ctx, unsigned char *key, + size_t *keylen); /* From gost94_keyx.c */ int pkey_gost94_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); /* Internal functions for signature algorithms */ int fill_GOST94_params(DSA *dsa, int nid); -int fill_GOST2001_params(EC_KEY *eckey, int nid); +int fill_GOST_EC_params(EC_KEY *eckey, int nid); int gost_sign_keygen(DSA *dsa); -int gost2001_keygen(EC_KEY *ec); +int gost_ec_keygen(EC_KEY *ec); DSA_SIG *gost_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); -DSA_SIG *gost2001_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey); +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); -int gost2001_do_verify(const unsigned char *dgst, int dgst_len, - DSA_SIG *sig, EC_KEY *ec); -int gost2001_compute_public(EC_KEY *ec); +int gost_ec_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, EC_KEY *ec); +int gost_ec_compute_public(EC_KEY *ec); int gost94_compute_public(DSA *dsa); /*============== miscellaneous functions============================= */ /* from gost_sign.c */ /* Convert GOST R 34.11 hash sum to bignum according to standard */ -BIGNUM *hashsum2bn(const unsigned char *dgst); +BIGNUM *hashsum2bn(const unsigned char *dgst, int len); /* * Store bignum in byte array of given length, prepending by zeros if * nesseccary