1 /* 2 * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the OpenSSL license (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 /* EVP_MD_CTX related stuff */ 11 12 struct evp_md_ctx_st { 13 const EVP_MD *digest; 14 ENGINE *engine; /* functional reference if 'digest' is 15 * ENGINE-provided */ 16 unsigned long flags; 17 void *md_data; 18 /* Public key context for sign/verify */ 19 EVP_PKEY_CTX *pctx; 20 /* Update function: usually copied from EVP_MD */ 21 int (*update) (EVP_MD_CTX *ctx, const void *data, size_t count); 22 } /* EVP_MD_CTX */ ; 23 24 struct evp_cipher_ctx_st { 25 const EVP_CIPHER *cipher; 26 ENGINE *engine; /* functional reference if 'cipher' is 27 * ENGINE-provided */ 28 int encrypt; /* encrypt or decrypt */ 29 int buf_len; /* number we have left */ 30 unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ 31 unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ 32 unsigned char buf[EVP_MAX_BLOCK_LENGTH]; /* saved partial block */ 33 int num; /* used by cfb/ofb/ctr mode */ 34 /* FIXME: Should this even exist? It appears unused */ 35 void *app_data; /* application stuff */ 36 int key_len; /* May change for variable length cipher */ 37 unsigned long flags; /* Various flags */ 38 void *cipher_data; /* per EVP data */ 39 int final_used; 40 int block_mask; 41 unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ 42 } /* EVP_CIPHER_CTX */ ; 43 44 int PKCS5_v2_PBKDF2_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, 45 int passlen, ASN1_TYPE *param, 46 const EVP_CIPHER *c, const EVP_MD *md, 47 int en_de); 48 49 struct evp_Encode_Ctx_st { 50 /* number saved in a partial encode/decode */ 51 int num; 52 /* 53 * The length is either the output line length (in input bytes) or the 54 * shortest input line length that is ok. Once decoding begins, the 55 * length is adjusted up each time a longer line is decoded 56 */ 57 int length; 58 /* data to encode */ 59 unsigned char enc_data[80]; 60 /* number read on current line */ 61 int line_num; 62 unsigned int flags; 63 }; 64 65 typedef struct evp_pbe_st EVP_PBE_CTL; 66 DEFINE_STACK_OF(EVP_PBE_CTL) 67 68 int is_partially_overlapping(const void *ptr1, const void *ptr2, int len); 69