⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cert_util.h

📁 vc环境下的pgp源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************
 *
 * 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 + -