Add EVP_ENCODE_CTX_copy
authorJakub Zelenka <bukka@php.net>
Sun, 24 Jul 2016 17:33:29 +0000 (18:33 +0100)
committerJakub Zelenka <bukka@php.net>
Sun, 24 Jul 2016 18:23:00 +0000 (19:23 +0100)
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1344)

crypto/evp/encode.c
doc/crypto/EVP_EncodeInit.pod
include/openssl/evp.h
util/libcrypto.num

index d140da6..abb1044 100644 (file)
@@ -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;
index 52c97d5..d919b14 100644 (file)
@@ -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.
 
index 9996603..10e048a 100644 (file)
@@ -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,
index ea17c0f..0f2d82f 100644 (file)
@@ -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: