Update to ASN1 printing code.
This commit is contained in:
parent
f022c177db
commit
c11c64fbe0
@ -241,7 +241,7 @@ bad:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (p7_print)
|
if (p7_print)
|
||||||
PKCS7_print(out, p7, 0, NULL);
|
PKCS7_print_ctx(out, p7, 0, NULL);
|
||||||
|
|
||||||
if (print_certs)
|
if (print_certs)
|
||||||
{
|
{
|
||||||
|
@ -321,7 +321,7 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
|
|||||||
DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
|
DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
|
||||||
|
|
||||||
#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
|
#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
|
||||||
int fname##_print(BIO *out, stname *x, int indent, \
|
int fname##_print_ctx(BIO *out, stname *x, int indent, \
|
||||||
const ASN1_PCTX *pctx);
|
const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
#define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
#define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
||||||
|
@ -58,6 +58,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include "cryptlib.h"
|
||||||
#include <openssl/asn1.h>
|
#include <openssl/asn1.h>
|
||||||
#include <openssl/asn1t.h>
|
#include <openssl/asn1t.h>
|
||||||
#include <openssl/objects.h>
|
#include <openssl/objects.h>
|
||||||
@ -66,8 +67,6 @@
|
|||||||
#include <openssl/x509v3.h>
|
#include <openssl/x509v3.h>
|
||||||
#include "asn1_locl.h"
|
#include "asn1_locl.h"
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/* Print routines.
|
/* Print routines.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -196,12 +195,25 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
|||||||
const ASN1_TEMPLATE *tt;
|
const ASN1_TEMPLATE *tt;
|
||||||
const ASN1_EXTERN_FUNCS *ef;
|
const ASN1_EXTERN_FUNCS *ef;
|
||||||
ASN1_VALUE **tmpfld;
|
ASN1_VALUE **tmpfld;
|
||||||
|
const ASN1_AUX *aux = it->funcs;
|
||||||
|
ASN1_aux_cb *asn1_cb;
|
||||||
|
ASN1_PRINT_ARG parg;
|
||||||
int i;
|
int i;
|
||||||
|
if (aux && aux->asn1_cb)
|
||||||
|
{
|
||||||
|
parg.out = out;
|
||||||
|
parg.indent = indent;
|
||||||
|
parg.pctx = pctx;
|
||||||
|
asn1_cb = aux->asn1_cb;
|
||||||
|
}
|
||||||
|
else asn1_cb = 0;
|
||||||
|
|
||||||
if(*fld == NULL)
|
if(*fld == NULL)
|
||||||
{
|
{
|
||||||
if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_ABSENT)
|
if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_ABSENT)
|
||||||
{
|
{
|
||||||
if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx))
|
if (!nohdr && !asn1_print_fsname(out, indent,
|
||||||
|
fname, sname, pctx))
|
||||||
return 0;
|
return 0;
|
||||||
if (BIO_puts(out, "<ABSENT>\n") <= 0)
|
if (BIO_puts(out, "<ABSENT>\n") <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
@ -283,6 +295,15 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (asn1_cb)
|
||||||
|
{
|
||||||
|
i = asn1_cb(ASN1_OP_PRINT_PRE, fld, it, &parg);
|
||||||
|
if (i == 0)
|
||||||
|
return 0;
|
||||||
|
if (i == 2)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Print each field entry */
|
/* Print each field entry */
|
||||||
for(i = 0, tt = it->templates; i < it->tcount; i++, tt++)
|
for(i = 0, tt = it->templates; i < it->tcount; i++, tt++)
|
||||||
{
|
{
|
||||||
@ -298,6 +319,13 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
|||||||
if (BIO_printf(out, "%*s}\n", indent, "") < 0)
|
if (BIO_printf(out, "%*s}\n", indent, "") < 0)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (asn1_cb)
|
||||||
|
{
|
||||||
|
i = asn1_cb(ASN1_OP_PRINT_POST, fld, it, &parg);
|
||||||
|
if (i == 0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user