aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/crypto/evp/evp_local.h
blob: 020a6f4c005d1419318634e754456b6011dd76c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* 
 * Copyright 2000-2018 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; 
    unsigned int flags; 
}; 
 
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);