From a0be4fd17b1c7f5ab8f8e11c71d71a5dd20158f4 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 11 Dec 2015 16:07:48 +0100 Subject: [PATCH] Make EVP_ENCODE_CTX opaque Reviewed-by: Rich Salz --- crypto/evp/encode.c | 15 +++++++++++++++ crypto/evp/evp_locl.h | 16 ++++++++++++++++ include/openssl/evp.h | 19 +++---------------- include/openssl/ossl_typ.h | 2 ++ 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/crypto/evp/encode.c b/crypto/evp/encode.c index ccfd84b7a8..91160adec0 100644 --- a/crypto/evp/encode.c +++ b/crypto/evp/encode.c @@ -59,6 +59,7 @@ #include #include "internal/cryptlib.h" #include +#include "evp_locl.h" static unsigned char conv_ascii2bin(unsigned char a); #ifndef CHARSET_EBCDIC @@ -140,6 +141,20 @@ static unsigned char conv_ascii2bin(unsigned char a) } #endif +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void) +{ + return (EVP_ENCODE_CTX *)OPENSSL_zalloc(sizeof(EVP_ENCODE_CTX)); +} + +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx) +{ + OPENSSL_free(ctx); +} +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx) +{ + return ctx->num; +} + void EVP_EncodeInit(EVP_ENCODE_CTX *ctx) { ctx->length = 48; diff --git a/crypto/evp/evp_locl.h b/crypto/evp/evp_locl.h index 918ff0a6fa..89ac37ed63 100644 --- a/crypto/evp/evp_locl.h +++ b/crypto/evp/evp_locl.h @@ -279,3 +279,19 @@ 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; +}; diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 5126803087..40708f21ea 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -447,22 +447,6 @@ struct evp_cipher_ctx_st { unsigned char final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */ } /* EVP_CIPHER_CTX */ ; -typedef 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; -} EVP_ENCODE_CTX; - /* Password based encryption function */ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ASN1_TYPE *param, @@ -701,6 +685,9 @@ __owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, EVP_PKEY **pubk, int npubk); __owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h index a6d07a0bb3..ed7c2a853c 100644 --- a/include/openssl/ossl_typ.h +++ b/include/openssl/ossl_typ.h @@ -137,6 +137,8 @@ typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; typedef struct evp_pkey_method_st EVP_PKEY_METHOD; typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + typedef struct hmac_ctx_st HMAC_CTX; typedef struct dh_st DH; -- 2.25.1