/* * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */#include<stdio.h>#include<assert.h>#include"internal/cryptlib.h"#include<openssl/evp.h>#include<openssl/err.h>#include<openssl/rand.h>#include<openssl/rand_drbg.h>#include<openssl/engine.h>#include<openssl/params.h>#include<openssl/core_names.h>#include"internal/evp_int.h"#include"internal/provider.h"#include"evp_locl.h"intEVP_CIPHER_CTX_reset(EVP_CIPHER_CTX*ctx){if(ctx==NULL)return1;if(ctx->cipher==NULL||ctx->cipher->prov==NULL)gotolegacy;if(ctx->provctx!=NULL){if(ctx->cipher->freectx!=NULL)ctx->cipher->freectx(ctx->provctx);ctx->provctx=NULL;}if(ctx->fetched_cipher!=NULL)EVP_CIPHER_meth_free(ctx->fetched_cipher);memset(ctx,0,sizeof(*ctx));return1;/* TODO(3.0): Remove legacy code below */legacy:if(ctx->cipher!=NULL){if(ctx->cipher->cleanup&&!ctx->cipher->cleanup(ctx))return0;/* Cleanse cipher context data */if(ctx->cipher_da