aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2016-07-24 18:33:29 +0100
committerJakub Zelenka <bukka@php.net>2016-07-24 19:23:00 +0100
commitc1054bb4d2a2e730d8ecb25037904f7d9a7f137d (patch)
treea29cce5463523de7b81d935de614259282ed849e
parent47d96bcc6b0eea6348b3b08a0c5b075d4d70de95 (diff)
downloadopenssl-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.c8
-rw-r--r--doc/crypto/EVP_EncodeInit.pod12
-rw-r--r--include/openssl/evp.h1
-rw-r--r--util/libcrypto.num1
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: