struct evp_cipher_ctx_st {
const EVP_CIPHER *cipher;
ENGINE *engine; /* functional reference if 'cipher' is
* ENGINE-provided */
int encrypt; /* encrypt or decrypt */
int buf_len; /* number we have left */
unsigned char oivEVP_MAX_IV_LENGTH; /* original iv */
unsigned char ivEVP_MAX_IV_LENGTH; /* working iv */
unsigned char bufEVP_MAX_BLOCK_LENGTH; /* saved partial block */
int num; /* used by cfb/ofb/ctr mode */
/* FIXME: Should this even exist? It appears unused */
void *app_data; /* application stuff */
int key_len; /* May change for variable length cipher */
unsigned long flags; /* Various flags */
void *cipher_data; /* per EVP data */
int final_used;
int block_mask;
unsigned char finalEVP_MAX_BLOCK_LENGTH; /* possible final block */
} /* EVP_CIPHER_CTX */ ;
crypto/evp/evp_local.h