| Index: openssl/crypto/asn1/asn1t.h
|
| ===================================================================
|
| --- openssl/crypto/asn1/asn1t.h (revision 105093)
|
| +++ openssl/crypto/asn1/asn1t.h (working copy)
|
| @@ -3,7 +3,7 @@
|
| * project 2000.
|
| */
|
| /* ====================================================================
|
| - * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
|
| + * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
|
| *
|
| * Redistribution and use in source and binary forms, with or without
|
| * modification, are permitted provided that the following conditions
|
| @@ -218,7 +218,19 @@
|
| #stname \
|
| ASN1_ITEM_end(tname)
|
|
|
| +#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
|
| + ;\
|
| + ASN1_ITEM_start(tname) \
|
| + ASN1_ITYPE_NDEF_SEQUENCE,\
|
| + V_ASN1_SEQUENCE,\
|
| + tname##_seq_tt,\
|
| + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
| + &tname##_aux,\
|
| + sizeof(stname),\
|
| + #stname \
|
| + ASN1_ITEM_end(tname)
|
|
|
| +
|
| /* This pair helps declare a CHOICE type. We can do:
|
| *
|
| * ASN1_CHOICE(chname) = {
|
| @@ -651,8 +663,13 @@
|
| typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
| typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
|
|
| +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
|
| + int indent, const char *fname,
|
| + const ASN1_PCTX *pctx);
|
| +
|
| typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
|
| typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
|
| +typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
|
|
|
| typedef struct ASN1_COMPAT_FUNCS_st {
|
| ASN1_new_func *asn1_new;
|
| @@ -668,6 +685,7 @@
|
| ASN1_ex_free_func *asn1_ex_clear;
|
| ASN1_ex_d2i *asn1_ex_d2i;
|
| ASN1_ex_i2d *asn1_ex_i2d;
|
| + ASN1_ex_print_func *asn1_ex_print;
|
| } ASN1_EXTERN_FUNCS;
|
|
|
| typedef struct ASN1_PRIMITIVE_FUNCS_st {
|
| @@ -678,6 +696,7 @@
|
| ASN1_ex_free_func *prim_clear;
|
| ASN1_primitive_c2i *prim_c2i;
|
| ASN1_primitive_i2c *prim_i2c;
|
| + ASN1_primitive_print *prim_print;
|
| } ASN1_PRIMITIVE_FUNCS;
|
|
|
| /* This is the ASN1_AUX structure: it handles various
|
| @@ -697,7 +716,8 @@
|
| * then an external type is more appropriate.
|
| */
|
|
|
| -typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it);
|
| +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
|
| + void *exarg);
|
|
|
| typedef struct ASN1_AUX_st {
|
| void *app_data;
|
| @@ -708,6 +728,23 @@
|
| int enc_offset; /* Offset of ASN1_ENCODING structure */
|
| } ASN1_AUX;
|
|
|
| +/* For print related callbacks exarg points to this structure */
|
| +typedef struct ASN1_PRINT_ARG_st {
|
| + BIO *out;
|
| + int indent;
|
| + const ASN1_PCTX *pctx;
|
| +} ASN1_PRINT_ARG;
|
| +
|
| +/* For streaming related callbacks exarg points to this structure */
|
| +typedef struct ASN1_STREAM_ARG_st {
|
| + /* BIO to stream through */
|
| + BIO *out;
|
| + /* BIO with filters appended */
|
| + BIO *ndef_bio;
|
| + /* Streaming I/O boundary */
|
| + unsigned char **boundary;
|
| +} ASN1_STREAM_ARG;
|
| +
|
| /* Flags in ASN1_AUX */
|
|
|
| /* Use a reference count */
|
| @@ -727,6 +764,12 @@
|
| #define ASN1_OP_D2I_POST 5
|
| #define ASN1_OP_I2D_PRE 6
|
| #define ASN1_OP_I2D_POST 7
|
| +#define ASN1_OP_PRINT_PRE 8
|
| +#define ASN1_OP_PRINT_POST 9
|
| +#define ASN1_OP_STREAM_PRE 10
|
| +#define ASN1_OP_STREAM_POST 11
|
| +#define ASN1_OP_DETACHED_PRE 12
|
| +#define ASN1_OP_DETACHED_POST 13
|
|
|
| /* Macro to implement a primitive type */
|
| #define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
|
| @@ -782,9 +825,22 @@
|
| #define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
|
| IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
|
|
|
| +#define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
|
| + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
|
| +
|
| #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
|
| IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
|
|
|
| +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
|
| + pre stname *fname##_new(void) \
|
| + { \
|
| + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
| + } \
|
| + pre void fname##_free(stname *a) \
|
| + { \
|
| + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
| + }
|
| +
|
| #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
|
| stname *fname##_new(void) \
|
| { \
|
| @@ -834,6 +890,17 @@
|
| return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
| }
|
|
|
| +#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
|
| + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
| +
|
| +#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
| + int fname##_print_ctx(BIO *out, stname *x, int indent, \
|
| + const ASN1_PCTX *pctx) \
|
| + { \
|
| + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
|
| + ASN1_ITEM_rptr(itname), pctx); \
|
| + }
|
| +
|
| #define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
|
| IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
|
|
|
|
|