|  | /* | 
|  | * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. | 
|  | * | 
|  | * Licensed under the OpenSSL license (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 | 
|  | */ | 
|  |  | 
|  | /* EVP_MD_CTX related stuff */ | 
|  |  | 
|  | struct evp_md_ctx_st { | 
|  | const EVP_MD *digest; | 
|  | ENGINE *engine;             /* functional reference if 'digest' is | 
|  | * ENGINE-provided */ | 
|  | unsigned long flags; | 
|  | void *md_data; | 
|  | /* Public key context for sign/verify */ | 
|  | EVP_PKEY_CTX *pctx; | 
|  | /* Update function: usually copied from EVP_MD */ | 
|  | int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); | 
|  | } /* EVP_MD_CTX */ ; | 
|  |  | 
|  | 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 oiv[EVP_MAX_IV_LENGTH]; /* original iv */ | 
|  | unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ | 
|  | unsigned char buf[EVP_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 final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ | 
|  | } /* EVP_CIPHER_CTX */ ; | 
|  |  | 
|  | int PKCS5_v2_PBKDF2_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, | 
|  | int passlen, ASN1_TYPE *param, | 
|  | const EVP_CIPHER *c, const EVP_MD *md, | 
|  | int en_de); | 
|  |  | 
|  | struct evp_Encode_Ctx_st { | 
|  | /* number saved in a partial encode/decode */ | 
|  | int num; | 
|  | /* | 
|  | * The length is either the output line length (in input bytes) or the | 
|  | * shortest input line length that is ok.  Once decoding begins, the | 
|  | * length is adjusted up each time a longer line is decoded | 
|  | */ | 
|  | int length; | 
|  | /* data to encode */ | 
|  | unsigned char enc_data[80]; | 
|  | /* number read on current line */ | 
|  | int line_num; | 
|  | int expect_nl; | 
|  | }; | 
|  |  | 
|  | typedef struct evp_pbe_st EVP_PBE_CTL; | 
|  | DEFINE_STACK_OF(EVP_PBE_CTL) | 
|  |  | 
|  | int is_partially_overlapping(const void *ptr1, const void *ptr2, int len); |