Update from 1.0.0-stable
[openssl.git] / engines / ccgost / gost_crypt.c
index eb15895a6982ede67af708282f54b10741ae3333..39bb6964469b203e8a426aa9ae3030d11a71888c 100644 (file)
@@ -127,7 +127,7 @@ const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj)
                {
                const char * params = get_gost_engine_param(GOST_PARAM_CRYPT_PARAMS);
                if (!params || !strlen(params)) 
-                       return &gost_cipher_list[0];
+                       return &gost_cipher_list[1];
 
                nid = OBJ_txt2nid(params);
                if (nid == NID_undef)
@@ -390,6 +390,14 @@ int gost_cipher_ctl(EVP_CIPHER_CTX *ctx,int type,int arg,void *ptr)
                        }
                break;
                }
+               case EVP_CTRL_PBE_PRF_NID:
+                       if (ptr) {
+                               *((int *)ptr)=  NID_id_HMACGostR3411_94;
+                               return 1;
+                       } else {
+                               return 0;
+                       }       
+                               
                default:
                        GOSTerr(GOST_F_GOST_CIPHER_CTL,GOST_R_UNSUPPORTED_CIPHER_CTL_COMMAND);
                        return -1;
@@ -550,7 +558,10 @@ int gost_imit_update(EVP_MD_CTX *ctx, const void *data, size_t count)
 int gost_imit_final(EVP_MD_CTX *ctx,unsigned char *md)
        {
        struct ossl_gost_imit_ctx *c = ctx->md_data;
-       if (!c->key_set) return 0;
+       if (!c->key_set) {
+               GOSTerr(GOST_F_GOST_IMIT_FINAL, GOST_R_MAC_KEY_NOT_SET);
+               return 0;
+       }
        if (c->bytes_left)
                {
                int i;