📄 cert_util.h
字号:
/*******************************************************************
*
* This file was generated by TIS/ASN1COMP Ver. 4.2, an ASN.1 compiler.
* TIS/ASN1COMP is Copyright (c) 1998, TIS Labs at Network Associates, Inc.
*
* This file was AUTOMATICALLY GENERATED on Mon May 17 09:25:53 1999
*
******************************************************************/
#ifndef cert_UTIL_H_
#define cert_UTIL_H_
#include <stdlib.h>
#include <string.h>
#ifndef PKITRUE
#define PKIFALSE (0)
#define PKITRUE (1)
#endif
#ifndef NULL
#define NULL ((void *) 0)
#endif
/*****
*
* Primitive type definitions
*
*****/
/* BOOLEAN */
typedef struct
{
size_t len; /* # of bytes in value */
int val; /* the boolean */
} PKIBooleanBlock;
/* NULL */
typedef struct
{
size_t len; /* unused */
} PKINullBlock;
/* Variable Length Entity */
typedef struct
{
size_t len; /* # of bytes in value */
unsigned char *val; /* pointer to the bytes of value */
} PKIVariableBlock;
/* Bit String Entity */
typedef struct
{
size_t len; /* # of bytes in value */
unsigned char *val; /* pointer to the bytes of value */
int nuub; /* number of unused bits in LSByte */
} PKIBitstringBlock;
typedef PKINullBlock PKINULL;
typedef PKIBooleanBlock PKIBOOLEAN ;
typedef PKIVariableBlock PKIOBJECT_ID ;
typedef PKIVariableBlock PKIGeneralizedTime ;
typedef PKIVariableBlock PKIIA5String ;
typedef PKIVariableBlock PKIINTEGER ;
typedef PKIBitstringBlock PKIBIT_STRING ;
typedef PKIVariableBlock PKIOCTET_STRING ;
typedef PKIVariableBlock PKIT61String ;
typedef PKIVariableBlock PKIANY ;
typedef PKIVariableBlock PKIUTCTime ;
typedef PKIVariableBlock PKINumericString ;
typedef PKIVariableBlock PKIPrintableString ;
typedef PKIVariableBlock PKIVisibleString ;
/*
* #define ID values for defines for asn types.
*/
#define PKIID_reserved 0x00
#define PKIID_BOOLEAN 0x01
#define PKIID_INTEGER 0x02
#define PKIID_BIT_STRING 0x03
#define PKIID_OCTET_STRING 0x04
#define PKIID_NULL 0x05
#define PKIID_OBJECT_IDENTIFIER 0x06
#define PKIID_OBJECT_ID 0x06
#define PKIID_ObjectDescriptor 0x07
#define PKIID_EXTERNAL 0x08
#define PKIID_REAL 0x09
#define PKIID_SEQUENCE 0x10
#define PKIID_SEQUENCE_OF 0x10
#define PKIID_SET 0x11
#define PKIID_SET_OF 0x011
#define PKIID_NumericString 0x12
#define PKIID_PrintableString 0x13
#define PKIID_T61String 0x14
#define PKIID_TeletexString 0x14
#define PKIID_VideotexString 0x15
#define PKIID_IA5String 0x16
#define PKIID_UTCTime 0x17
#define PKIID_GeneralizedTime 0x18
#define PKIID_GraphicString 0x19
#define PKIID_VisibleString 0x1a
#define PKIID_ISO646String 0x1a
#define PKIID_GeneralString 0x1b
#define PKIID_IMPORTED 0xFA
#define PKIID_UNIVERSAL 0xFB
#define PKIID_CHOICE 0xFC
#define PKIID_SYNONYM 0xFD
#define PKIID_ANY 0xFE
/*********************************************************************
* Error return codes from pack and unpack (uip).
**********************************************************************/
#define PKIErrPackUnderrun (-1)
#define PKIErrPackOverrun (-2)
#define PKIErrPackSEQOFArrayTooLong (-3) /* lth > MAX of that type */
#define PKIErrPackNoBlock (-5) /* ASN block ptr is NULL */
#define PKIErrUnpackNoStructure (-6) /* block pointer is NULL */
#define PKIErrUnpackNoBlockPtr (-7) /* ASN block pointer pointer is NULL */
#define PKIErrUnpackNoBlock (-8) /* ASN block pointer is NULL */
#define PKIErrUnpackOverrun (-9)
#define PKIErrUnpackUnderrun (-10)
#define PKIErrUnpackBooleanLth (-11) /* a boolean block with lth != 1 */
#define PKIErrUnpackTaggedLth (-12) /* a context tag lth failed to match
the length of the contents */
#define PKIErrUnpackReqMissing (-13) /* a required substructure is missing */
#define PKIErrUnpackNullLth (-14) /* a NULL block with lth != 0 */
#define PKIErrPackSETOFArrayTooLong (-15) /* lth > MAX of that type */
#define PKIErrPackSETOFUnsortable (-16) /* SET OF with identical elements */
#define PKIErrOutOfMemory (-17) /* Out of memory */
#define PKIErrPackBufferTooShort (-18) /* provided buffer space too short */
#define PKIErrUnpackInvalidEncoding (-19)
#define PKIErrBadContext (-20)
#define PKIErrUnpackSetBadType (-21)
#define PKIErrUnpackDuplicateField (-22)
/*
* Error code for choice when it has a bad type
*/
#define PKIErrChoiceBadType (-50)
/*
* Error codes for bad characters in strings
*/
#define PKIErrBadNumericString (-60)
#define PKIErrBadPrintableString (-61)
#define PKIErrNotFoundInDict (-70)
/*********************************************************************
* PKIERR macro
*
* This can be re-defined as exit(x) for debugging
**********************************************************************/
#define PKIERR( x ) { *erret = x; PKIErrorHalt(x); }
void PKIErrorHalt ( int x );
/*********************************************************************
* Memory Mgmt Callbacks
**********************************************************************/
typedef struct PKIMemoryMgr PKIMemoryMgr;
extern PKIMemoryMgr PKIdefaultMemoryMgrStruct;
typedef void *(*PKIMemoryMgrAllocationProc)(
PKIMemoryMgr *mgr,
size_t requestSize);
typedef int (*PKIMemoryMgrReallocationProc)(
PKIMemoryMgr *mgr,
void **allocation,
size_t newAllocationSize);
typedef int (*PKIMemoryMgrDeallocationProc)(
PKIMemoryMgr *mgr,
void *allocation);
/* memory management structure */
struct PKIMemoryMgr {
void *customValue;
PKIMemoryMgrAllocationProc allocProc;
PKIMemoryMgrReallocationProc reallocProc;
PKIMemoryMgrDeallocationProc deallocProc;
};
#define PKIAlloc(mgr, size) (*(mgr)->allocProc)(mgr, size)
#define PKIRealloc(mgr, ptr, newsize) \
(*(mgr)->reallocProc)(mgr, ptr, newsize)
#define PKIFree(mgr, ptr) (*(mgr)->deallocProc)(mgr, ptr)
struct PKICONTEXT {
void *customValue;
PKIMemoryMgr *memMgr;
};
typedef struct PKICONTEXT PKICONTEXT;
/*********************************************************************
* Utility routine definitions
**********************************************************************/
size_t PKILengthSize(size_t x);
size_t PKITagged(size_t inner, int seqlike );
size_t PKIPutByte(unsigned char *buf, unsigned char byte );
size_t PKIPutLength(unsigned char *buf, size_t length );
size_t PKIGetByte(const unsigned char *buf, unsigned char *byte);
size_t PKIGetLength(const unsigned char *buf, size_t *length);
size_t PKIPutTag(unsigned char *buf, unsigned char tagbyte, size_t length );
size_t PKITakeTag(const unsigned char *buf, unsigned char tag, size_t *length);
int PKICompareElems(const void *a, const void *b);
long PKIGetIntVal (PKICONTEXT *ctx, PKIINTEGER *b, int *error);
int PKIPutIntVal (PKICONTEXT *ctx, PKIINTEGER *b, long v);
int PKIPutUIntBytes(PKICONTEXT *ctx, PKIINTEGER *b,
const unsigned char *v, size_t lth);
int PKIPutOctVal(PKICONTEXT *ctx, PKIVariableBlock *b, const unsigned char *v, size_t lth);
char *PKIGetStrVal(PKICONTEXT *ctx, PKIVariableBlock *b);
int PKIPutStrVal(PKICONTEXT *ctx, PKIVariableBlock *b, const char *v);
int PKIPutBitString (PKICONTEXT *ctx, PKIBIT_STRING *b,
const unsigned char *str, size_t len, int nuub);
int PKIGetBoolVal(PKICONTEXT *ctx, PKIBOOLEAN *b);
int PKIPutBoolVal(PKICONTEXT *ctx, PKIBOOLEAN *b, int val);
/*********************************************************************
* For tracing ASN.1 processing via compiler-generated routines.
**********************************************************************/
#ifdef PKITRACE
extern int PKITRACE_LEVEL;
int PKITRACE_trval(unsigned char *enc, int len, int lev);
#define PKITRACE_INCR_LEVEL \
PKITRACE_LEVEL++
#define PKITRACE_DECR_LEVEL \
PKITRACE_LEVEL--
#define PKITRACE_PRINT_LENGTH(n) \
fprintf(stderr, "<%d>", n)
#define PKITRACE_PRINT_TAG(tag, rtag) \
{ int j; fprintf(stderr, "\n"); \
for ( j=0 ; j<PKITRACE_LEVEL ; j++ ) fprintf(stderr, ". "); \
fprintf(stderr, "%02x EXPLICIT [%d] ", tag, rtag); }
#define PKITRACE_PRINT_FN(tag, rtag, type, name) \
{ int j; fprintf(stderr, "\n"); \
for ( j=0 ; j<PKITRACE_LEVEL ; j++ ) fprintf(stderr, ". "); \
fprintf(stderr, "%02x ", tag); \
if ( tag != rtag) fprintf(stderr, "IMPLICIT "); \
fprintf(stderr, "%s %s ", type, name); }
#define PKITRACE_PRINT_FM(tag, rtag, type) \
{ int j; fprintf(stderr, "\n"); \
for ( j=0 ; j<PKITRACE_LEVEL ; j++ ) fprintf(stderr, ". "); \
fprintf(stderr, "%02x ", tag); \
if ( tag != rtag) fprintf(stderr, "IMPLICIT "); \
fprintf(stderr, "%s ", type); }
#define PKITRACE_PRINT_DATA(buf, lth) \
PKITRACE_trval( buf, lth, PKITRACE_LEVEL+1)
#define PKITRACE_name(name)
#else
#define PKITRACE_INCR_LEVEL
#define PKITRACE_DECR_LEVEL
#define PKITRACE_PRINT_LENGTH(n)
#define PKITRACE_PRINT_TAG(tag, rtag)
#define PKITRACE_PRINT_FN(tag, rtag, type, name)
#define PKITRACE_PRINT_FM(tag, rtag, type)
#define PKITRACE_PRINT_DATA(buf, lth)
#define PKITRACE_name(name) (void)name
#endif
/********************************************************************
* Primitive object routines.
**********************************************************************/
void *PKINewVariableBlock(PKICONTEXT *ctx);
void PKIFreeVariableBlock (
PKICONTEXT *ctx,
PKIVariableBlock *f);
void PKIDropInPlaceVariableBlock (
PKICONTEXT *ctx,
PKIVariableBlock *f);
size_t PKISizeofVariableBlockInternal(
PKIVariableBlock *block,
int outerSizeFlag,
int expTaggedFlag);
size_t PKISizeofVariableBlock(
PKICONTEXT *ctx,
PKIVariableBlock *block,
int outerSizeFlag);
/********************************************************************
* Base ASN type building, packing and unpacking routines.
**********************************************************************/
#define PKINewANY PKINewVariableBlock
#define PKIDropInPlaceANY PKIDropInPlaceVariableBlock
#define PKIFreeANY PKIFreeVariableBlock
size_t PKISizeofANYInternal(
PKIANY *b,
int outerSizeFlag,
int expTaggedFlag);
size_t PKISizeofANY(
PKICONTEXT *ctx,
PKIANY *b,
int outerSizeFlag);
size_t PKIPackANYInternal(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIANY *block,
unsigned char tag,
int *erret);
size_t PKIPackANY(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIANY *block,
int *erret);
size_t PKIUnpkInPlaceANY(
PKICONTEXT *ctx,
PKIANY *asnstruct,
const unsigned char *buf,
size_t buflen,
unsigned char tag,
int *erret);
size_t PKIUnpackANYInternal(
PKICONTEXT *ctx,
PKIANY **asnstruct,
const unsigned char *buf,
size_t buflen,
unsigned char tag,
int *erret);
size_t PKIUnpackANY(
PKICONTEXT *ctx,
PKIANY **asnstruct,
const unsigned char *buf,
size_t buflen,
int *erret);
PKIBIT_STRING *PKINewBIT_STRING(
PKICONTEXT *ctx);
void PKIFreeBIT_STRING(
PKICONTEXT *ctx,
PKIBIT_STRING *f);
void PKIDropInPlaceBIT_STRING(
PKICONTEXT *ctx,
PKIBIT_STRING *f);
size_t PKISizeofBIT_STRINGInternal(
PKIBIT_STRING *b,
int outerSizeFlag,
int expTaggedFlag);
size_t PKISizeofBIT_STRING(
PKICONTEXT *ctx,
PKIBIT_STRING *b,
int outerSizeFlag);
size_t PKIPackBIT_STRINGInternal(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIBIT_STRING *bitblock,
unsigned char tag,
int *erret);
size_t PKIPackBIT_STRING(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIBIT_STRING *bitblock,
int *erret);
size_t PKIUnpkInPlaceBIT_STRING(
PKICONTEXT *ctx,
PKIBIT_STRING *bitstruct,
const unsigned char *buf,
size_t buflen,
unsigned char tag,
int *erret);
size_t PKIUnpackBIT_STRINGInternal(
PKICONTEXT *ctx,
PKIBIT_STRING **bitstruct,
const unsigned char *buf,
size_t buflen,
unsigned char tag,
int *erret); /* error return */
size_t PKIUnpackBIT_STRING(
PKICONTEXT *ctx,
PKIBIT_STRING **bitstruct,
const unsigned char *buf,
size_t buflen,
int *erret);
PKIBOOLEAN *PKINewBOOLEAN (PKICONTEXT *ctx);
void PKIFreeBOOLEAN (PKICONTEXT *ctx, PKIBOOLEAN *f);
void PKIDropInPlaceBOOLEAN (PKICONTEXT *ctx, PKIBOOLEAN *f);
size_t PKISizeofBOOLEANInternal(
PKIBOOLEAN *b,
int outerSizeFlag,
int expTaggedFlag);
size_t PKISizeofBOOLEAN(
PKICONTEXT *ctx,
PKIBOOLEAN *b,
int outerSizeFlag);
size_t PKIPackBOOLEANInternal(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIBOOLEAN *boolblock,
unsigned char tag,
int *erret );
size_t PKIPackBOOLEAN(
PKICONTEXT *ctx,
unsigned char *buf,
size_t buflen,
PKIBOOLEAN *boolblock,
int *erret);
size_t PKIUnpkInPlaceBOOLEAN(
PKICONTEXT *ctx,
PKIBOOLEAN *boolstruct, /* output block */
const unsigned char *buf, /* loc of input pointer */
size_t buflen, /* max end of my region */
unsigned char tag,
int *erret); /* error return location */
size_t PKIUnpackBOOLEANInternal(
PKICONTEXT *ctx,
PKIBOOLEAN **boolstruct,
const unsigned char *buf,
size_t buflen,
unsigned char tag,
int *erret); /* error return */
size_t PKIUnpackBOOLEAN(
PKICONTEXT *ctx,
PKIBOOLEAN **boolstruct,
const unsigned char *buf,
size_t buflen,
int *erret);
#define PKINewGeneralizedTime PKINewVariableBlock
#define PKIDropInPlaceGeneralizedTime PKIDropInPlaceVariableBlock
#define PKIFreeGeneralizedTime PKIFreeVariableBlock
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -