mirror of
https://github.com/openssl/openssl.git
synced 2024-12-13 12:03:48 +08:00
Update ASN1 printing code and add a -print option to 'pkcs7' utility for
initial testing.
This commit is contained in:
parent
6273a91cb7
commit
9194296de8
@ -90,7 +90,7 @@ int MAIN(int argc, char **argv)
|
|||||||
BIO *in=NULL,*out=NULL;
|
BIO *in=NULL,*out=NULL;
|
||||||
int informat,outformat;
|
int informat,outformat;
|
||||||
char *infile,*outfile,*prog;
|
char *infile,*outfile,*prog;
|
||||||
int print_certs=0,text=0,noout=0;
|
int print_certs=0,text=0,noout=0,p7_print=0;
|
||||||
int ret=1;
|
int ret=1;
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
char *engine=NULL;
|
char *engine=NULL;
|
||||||
@ -139,6 +139,8 @@ int MAIN(int argc, char **argv)
|
|||||||
noout=1;
|
noout=1;
|
||||||
else if (strcmp(*argv,"-text") == 0)
|
else if (strcmp(*argv,"-text") == 0)
|
||||||
text=1;
|
text=1;
|
||||||
|
else if (strcmp(*argv,"-print") == 0)
|
||||||
|
p7_print=1;
|
||||||
else if (strcmp(*argv,"-print_certs") == 0)
|
else if (strcmp(*argv,"-print_certs") == 0)
|
||||||
print_certs=1;
|
print_certs=1;
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
@ -238,6 +240,9 @@ bad:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p7_print)
|
||||||
|
PKCS7_print(out, p7, 0, NULL);
|
||||||
|
|
||||||
if (print_certs)
|
if (print_certs)
|
||||||
{
|
{
|
||||||
STACK_OF(X509) *certs=NULL;
|
STACK_OF(X509) *certs=NULL;
|
||||||
|
@ -317,6 +317,13 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
|
|||||||
type *name##_new(void); \
|
type *name##_new(void); \
|
||||||
void name##_free(type *a);
|
void name##_free(type *a);
|
||||||
|
|
||||||
|
#define DECLARE_ASN1_PRINT_FUNCTION(stname) \
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
|
||||||
|
|
||||||
|
#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
|
||||||
|
int fname##_print(BIO *out, stname *x, int indent, \
|
||||||
|
const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
#define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
#define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
|
||||||
#define I2D_OF(type) int (*)(type *,unsigned char **)
|
#define I2D_OF(type) int (*)(type *,unsigned char **)
|
||||||
#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
|
#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
|
||||||
@ -1011,6 +1018,8 @@ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
|
|||||||
/* Don't show structure name even at top level */
|
/* Don't show structure name even at top level */
|
||||||
#define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
|
#define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
|
||||||
|
|
||||||
|
int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
|
||||||
|
const ASN1_ITEM *it, const ASN1_PCTX *pctx);
|
||||||
ASN1_PCTX *ASN1_PCTX_new(void);
|
ASN1_PCTX *ASN1_PCTX_new(void);
|
||||||
void ASN1_PCTX_free(ASN1_PCTX *p);
|
void ASN1_PCTX_free(ASN1_PCTX *p);
|
||||||
unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
|
unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
|
||||||
|
@ -832,6 +832,17 @@ typedef struct ASN1_AUX_st {
|
|||||||
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
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(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) \
|
#define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
|
||||||
IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
|
IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
|
||||||
|
|
||||||
|
@ -161,12 +161,15 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
|||||||
const ASN1_ITEM *it,
|
const ASN1_ITEM *it,
|
||||||
const char *fname, const char *sname,
|
const char *fname, const char *sname,
|
||||||
int nohdr, const ASN1_PCTX *pctx);
|
int nohdr, const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
|
||||||
const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx);
|
const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld,
|
static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld,
|
||||||
const ASN1_ITEM *it, int indent,
|
const ASN1_ITEM *it, int indent,
|
||||||
const char *fname, const char *sname,
|
const char *fname, const char *sname,
|
||||||
const ASN1_PCTX *pctx);
|
const ASN1_PCTX *pctx);
|
||||||
|
|
||||||
static int asn1_print_fsname(BIO *out, int indent,
|
static int asn1_print_fsname(BIO *out, int indent,
|
||||||
const char *fname, const char *sname,
|
const char *fname, const char *sname,
|
||||||
const ASN1_PCTX *pctx);
|
const ASN1_PCTX *pctx);
|
||||||
|
@ -212,3 +212,5 @@ ASN1_ITEM_TEMPLATE(PKCS7_ATTR_VERIFY) =
|
|||||||
ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_IMPTAG | ASN1_TFLG_UNIVERSAL,
|
ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_IMPTAG | ASN1_TFLG_UNIVERSAL,
|
||||||
V_ASN1_SET, PKCS7_ATTRIBUTES, X509_ATTRIBUTE)
|
V_ASN1_SET, PKCS7_ATTRIBUTES, X509_ATTRIBUTE)
|
||||||
ASN1_ITEM_TEMPLATE_END(PKCS7_ATTR_VERIFY)
|
ASN1_ITEM_TEMPLATE_END(PKCS7_ATTR_VERIFY)
|
||||||
|
|
||||||
|
IMPLEMENT_ASN1_PRINT_FUNCTION(PKCS7)
|
||||||
|
@ -307,6 +307,7 @@ DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
|
|||||||
DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
|
DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
|
||||||
|
|
||||||
DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
|
DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
|
||||||
|
DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
|
||||||
|
|
||||||
long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
|
long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user