This change removes the old ASN.1 functions (ASN1_seq_unpack and ASN1_seq_pack) which have always been disabled in BoringSSL. It also removes code enabled by OPENSSL_EXPORT_VAR_AS_FUNCTION, which we have never used. Change-Id: I1fe323abf945a8a5828a04cc195c072e100a5095 Reviewed-on: https://boringssl-review.googlesource.com/1556 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>kris/onging/CECPQ3_patch15
@@ -60,95 +60,6 @@ | |||
#include <openssl/mem.h> | |||
#if 0 | |||
#ifndef NO_ASN1_OLD | |||
/* ASN1 packing and unpacking functions */ | |||
/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */ | |||
STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len, | |||
d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK)) | |||
{ | |||
STACK_OF(OPENSSL_BLOCK) *sk; | |||
const unsigned char *pbuf; | |||
pbuf = buf; | |||
if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func, | |||
V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL))) | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ASN1_R_DECODE_ERROR); | |||
return sk; | |||
} | |||
/* Turn a STACK structures into an ASN1 encoded SEQUENCE OF structure in a | |||
* OPENSSL_malloc'ed buffer | |||
*/ | |||
unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d, | |||
unsigned char **buf, int *len) | |||
{ | |||
int safelen; | |||
unsigned char *safe, *p; | |||
if (!(safelen = i2d_ASN1_SET(safes, NULL, i2d, V_ASN1_SEQUENCE, | |||
V_ASN1_UNIVERSAL, IS_SEQUENCE))) { | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ASN1_R_ENCODE_ERROR); | |||
return NULL; | |||
} | |||
if (!(safe = OPENSSL_malloc (safelen))) { | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ERR_R_MALLOC_FAILURE); | |||
return NULL; | |||
} | |||
p = safe; | |||
i2d_ASN1_SET(safes, &p, i2d, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, | |||
IS_SEQUENCE); | |||
if (len) *len = safelen; | |||
if (buf) *buf = safe; | |||
return safe; | |||
} | |||
/* Extract an ASN1 object from an ASN1_STRING */ | |||
void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i) | |||
{ | |||
const unsigned char *p; | |||
char *ret; | |||
p = oct->data; | |||
if(!(ret = d2i(NULL, &p, oct->length))) | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ASN1_R_DECODE_ERROR); | |||
return ret; | |||
} | |||
/* Pack an ASN1 object into an ASN1_STRING */ | |||
ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct) | |||
{ | |||
unsigned char *p; | |||
ASN1_STRING *octmp; | |||
if (!oct || !*oct) { | |||
if (!(octmp = ASN1_STRING_new ())) { | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ERR_R_MALLOC_FAILURE); | |||
return NULL; | |||
} | |||
if (oct) *oct = octmp; | |||
} else octmp = *oct; | |||
if (!(octmp->length = i2d(obj, NULL))) { | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ASN1_R_ENCODE_ERROR); | |||
return NULL; | |||
} | |||
if (!(p = OPENSSL_malloc (octmp->length))) { | |||
OPENSSL_PUT_ERROR(ASN1, XXX, ERR_R_MALLOC_FAILURE); | |||
return NULL; | |||
} | |||
octmp->data = p; | |||
i2d (obj, &p); | |||
return octmp; | |||
} | |||
#endif | |||
#endif | |||
/* ASN1_ITEM versions of the above */ | |||
ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_STRING **oct) | |||
@@ -380,8 +380,6 @@ TYPEDEF_D2I2D_OF(void); | |||
* | |||
*/ | |||
#ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION | |||
/* ASN1_ITEM pointer exported type */ | |||
typedef const ASN1_ITEM ASN1_ITEM_EXP; | |||
@@ -396,28 +394,6 @@ typedef const ASN1_ITEM ASN1_ITEM_EXP; | |||
#define DECLARE_ASN1_ITEM(name) \ | |||
extern const ASN1_ITEM name##_it; | |||
#else | |||
/* Platforms that can't easily handle shared global variables are declared | |||
* as functions returning ASN1_ITEM pointers. | |||
*/ | |||
/* ASN1_ITEM pointer exported type */ | |||
typedef const ASN1_ITEM * ASN1_ITEM_EXP(void); | |||
/* Macro to obtain ASN1_ITEM pointer from exported type */ | |||
#define ASN1_ITEM_ptr(iptr) (iptr()) | |||
/* Macro to include ASN1_ITEM pointer from base type */ | |||
#define ASN1_ITEM_ref(iptr) (iptr##_it) | |||
#define ASN1_ITEM_rptr(ref) (ref##_it()) | |||
#define DECLARE_ASN1_ITEM(name) \ | |||
OPENSSL_EXPORT const ASN1_ITEM * name##_it(void); | |||
#endif | |||
/* Parameters used by ASN1_STRING_print_ex() */ | |||
/* These determine which characters to escape: | |||
@@ -73,8 +73,6 @@ extern "C" { | |||
#endif | |||
#ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION | |||
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ | |||
#define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr)) | |||
@@ -87,27 +85,6 @@ extern "C" { | |||
#define ASN1_ITEM_end(itname) \ | |||
}; | |||
#else | |||
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ | |||
#define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr())) | |||
/* Macros for start and end of ASN1_ITEM definition */ | |||
#define ASN1_ITEM_start(itname) \ | |||
const ASN1_ITEM * itname##_it(void) \ | |||
{ \ | |||
static const ASN1_ITEM local_it = { | |||
#define ASN1_ITEM_end(itname) \ | |||
}; \ | |||
return &local_it; \ | |||
} | |||
#endif | |||
/* Macros to aid ASN1 template writing */ | |||
#define ASN1_ITEM_TEMPLATE(tname) \ | |||
@@ -316,13 +293,8 @@ extern "C" { | |||
/* Any defined by macros: the field used is in the table itself */ | |||
#ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION | |||
#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } | |||
#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } | |||
#else | |||
#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } | |||
#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } | |||
#endif | |||
/* Plain simple type */ | |||
#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type) | |||
@@ -395,8 +367,6 @@ extern "C" { | |||
#define ASN1_ADB(name) \ | |||
static const ASN1_ADB_TABLE name##_adbtbl[] | |||
#ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION | |||
#define ASN1_ADB_END(name, flags, field, app_table, def, none) \ | |||
;\ | |||
static const ASN1_ADB name##_adb = {\ | |||
@@ -409,28 +379,6 @@ extern "C" { | |||
none\ | |||
} | |||
#else | |||
#define ASN1_ADB_END(name, flags, field, app_table, def, none) \ | |||
;\ | |||
static const ASN1_ITEM *name##_adb(void) \ | |||
{ \ | |||
static const ASN1_ADB internal_adb = \ | |||
{\ | |||
flags,\ | |||
offsetof(name, field),\ | |||
app_table,\ | |||
name##_adbtbl,\ | |||
sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ | |||
def,\ | |||
none\ | |||
}; \ | |||
return (const ASN1_ITEM *) &internal_adb; \ | |||
} \ | |||
void dummy_function(void) | |||
#endif | |||
#define ADB_ENTRY(val, template) {val, template} | |||
#define ASN1_ADB_TEMPLATE(name) \ | |||