ASN1_ITEM version of ASN1_dup(). Might want
something more efficient later...
This commit is contained in:
parent
66a0def81b
commit
f86c5c9ac7
@ -60,7 +60,7 @@
|
|||||||
#include "cryptlib.h"
|
#include "cryptlib.h"
|
||||||
#include <openssl/asn1.h>
|
#include <openssl/asn1.h>
|
||||||
|
|
||||||
#define READ_CHUNK 2048
|
#ifndef NO_OLD_ASN1
|
||||||
|
|
||||||
char *ASN1_dup(int (*i2d)(), char *(*d2i)(), char *x)
|
char *ASN1_dup(int (*i2d)(), char *(*d2i)(), char *x)
|
||||||
{
|
{
|
||||||
@ -81,3 +81,27 @@ char *ASN1_dup(int (*i2d)(), char *(*d2i)(), char *x)
|
|||||||
OPENSSL_free(b);
|
OPENSSL_free(b);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ASN1_ITEM version of dup: this follows the model above except we don't need
|
||||||
|
* to allocate the buffer. At some point this could be rewritten to directly dup
|
||||||
|
* the underlying structure instead of doing and encode and decode.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *ASN1_item_dup(const ASN1_ITEM *it, void *x)
|
||||||
|
{
|
||||||
|
unsigned char *b = NULL, *p;
|
||||||
|
long i;
|
||||||
|
void *ret;
|
||||||
|
|
||||||
|
if (x == NULL) return(NULL);
|
||||||
|
|
||||||
|
i=ASN1_item_i2d(x,&b,it);
|
||||||
|
if (b == NULL)
|
||||||
|
{ ASN1err(ASN1_F_ASN1_DUP,ERR_R_MALLOC_FAILURE); return(NULL); }
|
||||||
|
p= b;
|
||||||
|
ret=ASN1_item_d2i(NULL,&p,i, it);
|
||||||
|
OPENSSL_free(b);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
@ -801,6 +801,8 @@ int ASN1_object_size(int constructed, int length, int tag);
|
|||||||
/* Used to implement other functions */
|
/* Used to implement other functions */
|
||||||
char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x);
|
char *ASN1_dup(int (*i2d)(),char *(*d2i)(),char *x);
|
||||||
|
|
||||||
|
void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
|
||||||
|
|
||||||
#ifndef NO_FP_API
|
#ifndef NO_FP_API
|
||||||
char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x);
|
char *ASN1_d2i_fp(char *(*xnew)(),char *(*d2i)(),FILE *fp,unsigned char **x);
|
||||||
int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x);
|
int ASN1_i2d_fp(int (*i2d)(),FILE *out,unsigned char *x);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user