]> git.ipfire.org Git - thirdparty/openssl.git/blobdiff - crypto/evp/evp_locl.h
Make EVP_CIPHER_CTX opaque and renew the creator / destructor functions
[thirdparty/openssl.git] / crypto / evp / evp_locl.h
index 1c879b462414db7abc1ccc52142290818d8978d2..8e0e99e7f2e96cd047ce86d63b22c1eab040667b 100644 (file)
@@ -71,6 +71,26 @@ struct evp_md_ctx_st {
     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 */ ;
+
 /* Macros to code block cipher wrappers */
 
 /* Wrapper functions for each cipher mode */