goto err;
}
- EVP_EncodeInit(&ctx->encode);
+ ctx->encode = EVP_ENCODE_CTX_new();
+ EVP_EncodeInit(ctx->encode);
ctx->md = EVP_MD_CTX_new();
if (!EVP_SignInit(ctx->md, md_type))
i = inl;
if (!EVP_EncryptUpdate(&ctx->cipher, buffer, &j, in, i))
return 0;
- EVP_EncodeUpdate(&ctx->encode, out, &j, buffer, j);
+ EVP_EncodeUpdate(ctx->encode, out, &j, buffer, j);
*outl += j;
out += j;
in += i;
if (!EVP_EncryptFinal_ex(&ctx->cipher, s, (int *)&i))
goto err;
- EVP_EncodeUpdate(&ctx->encode, out, &j, s, i);
+ EVP_EncodeUpdate(ctx->encode, out, &j, s, i);
*outl = j;
out += j;
- EVP_EncodeFinal(&ctx->encode, out, &j);
+ EVP_EncodeFinal(ctx->encode, out, &j);
*outl += j;
if (!EVP_SignFinal(ctx->md, s, &i, priv))
ret = 1;
err:
+ EVP_ENCODE_CTX_free(ctx->encode);
EVP_MD_CTX_free(ctx->md);
EVP_CIPHER_CTX_cleanup(&ctx->cipher);
OPENSSL_free(s);