diff options
author | Jakub Zelenka <bukka@php.net> | 2016-07-24 18:33:29 +0100 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2016-07-24 19:23:00 +0100 |
commit | c1054bb4d2a2e730d8ecb25037904f7d9a7f137d (patch) | |
tree | a29cce5463523de7b81d935de614259282ed849e | |
parent | 47d96bcc6b0eea6348b3b08a0c5b075d4d70de95 (diff) | |
download | openssl-c1054bb4d2a2e730d8ecb25037904f7d9a7f137d.tar.gz |
Add EVP_ENCODE_CTX_copy
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1344)
-rw-r--r-- | crypto/evp/encode.c | 8 | ||||
-rw-r--r-- | doc/crypto/EVP_EncodeInit.pod | 12 | ||||
-rw-r--r-- | include/openssl/evp.h | 1 | ||||
-rw-r--r-- | util/libcrypto.num | 1 |
4 files changed, 18 insertions, 4 deletions
diff --git a/crypto/evp/encode.c b/crypto/evp/encode.c index d140da67cc..abb1044378 100644 --- a/crypto/evp/encode.c +++ b/crypto/evp/encode.c @@ -102,6 +102,14 @@ void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx) { OPENSSL_free(ctx); } + +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx) +{ + memcpy(dctx, sctx, sizeof(EVP_ENCODE_CTX)); + + return 1; +} + int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx) { return ctx->num; diff --git a/doc/crypto/EVP_EncodeInit.pod b/doc/crypto/EVP_EncodeInit.pod index 52c97d5a50..d919b14b29 100644 --- a/doc/crypto/EVP_EncodeInit.pod +++ b/doc/crypto/EVP_EncodeInit.pod @@ -2,10 +2,10 @@ =head1 NAME -EVP_ENCODE_CTX_new, EVP_ENCODE_CTX_free, EVP_ENCODE_CTX_num, EVP_EncodeInit, -EVP_EncodeUpdate, EVP_EncodeFinal, EVP_EncodeBlock, EVP_DecodeInit, -EVP_DecodeUpdate, EVP_DecodeFinal, EVP_DecodeBlock - EVP base 64 encode/decode -routines +EVP_ENCODE_CTX_new, EVP_ENCODE_CTX_free, EVP_ENCODE_CTX_copy, +EVP_ENCODE_CTX_num, EVP_EncodeInit, EVP_EncodeUpdate, EVP_EncodeFinal, +EVP_EncodeBlock, EVP_DecodeInit, EVP_DecodeUpdate, EVP_DecodeFinal, +EVP_DecodeBlock - EVP base 64 encode/decode routines =head1 SYNOPSIS @@ -13,6 +13,7 @@ routines EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); + int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, @@ -76,6 +77,9 @@ in B<*outl>. It is the caller's responsibility to ensure that B<out> is sufficiently large to accommodate the output data which will never be more than 65 bytes plus an additional NUL terminator (i.e. 66 bytes in total). +EVP_ENCODE_CTX_copy() can be used to copy a context B<sctx> to a context +B<dctx>. B<dctx> must be initialized before calling this function. + EVP_ENCODE_CTX_num() will return the number of as yet unprocessed bytes still to be encoded or decoded that are pending in the B<ctx> object. diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 999660365c..10e048a795 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -608,6 +608,7 @@ __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_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, diff --git a/util/libcrypto.num b/util/libcrypto.num index ea17c0f45b..0f2d82f03a 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4153,3 +4153,4 @@ NAME_CONSTRAINTS_check_CN 4097 1_1_0 EXIST::FUNCTION: OCSP_resp_get0_id 4098 1_1_0 EXIST::FUNCTION:OCSP OCSP_resp_get0_certs 4099 1_1_0 EXIST::FUNCTION:OCSP X509_set_proxy_flag 4100 1_1_0 EXIST::FUNCTION: +EVP_ENCODE_CTX_copy 4101 1_1_0 EXIST::FUNCTION: |