📄 ospasn1.h
字号:
OSPEASN1DATAREFID ospvDataRefId); int OSPPASN1ObjectCreate( OSPTASN1OBJECT **ospvASN1Object, OSPTASN1ELEMENTINFO *ospvElementInfo, OSPTASN1PARSERESULT *ospvParseResults); void OSPPASN1ObjectDelete( OSPTASN1OBJECT **ospvASN1Object); int OSPPASN1ElementTestContext( OSPTASN1ELEMENTINFO *ospvElementInfo); int OSPPASN1PrimitiveDecode( OSPTASN1ELEMENTINFO *ospvElementInfo); int OSPPASN1PrimitiveDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); int OSPPASN1ElementDecode( unsigned char *ospvASN1Element, OSPTASN1ELEMENTINFO **ospvASN1ElementInfo, unsigned int ospvLevel); int OSPPASN1ElementCreate( OSPTASN1ELEMENTINFO **ospvElementInfo); void OSPPASN1ElementDelete( OSPTASN1ELEMENTINFO **ospvElement, unsigned int ospvLevel); int OSPPASN1ElementGet( OSPEASN1DATAREFID ospvDataRefId, OSPTASN1PARSERESULT *ospvParseResults, OSPTASN1ELEMENTINFO **ospvFoundElement); void OSPPASN1EndOfContentDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); void OSPPASN1NullDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); void OSPPASN1ObjectIdentifierDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); void OSPPASN1PrintableStringDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); void OSPPASN1UTCTimeDelete( OSPTASN1ELEMENTINFO *ospvElementInfo); int OSPPASN1IntegerDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1ObjectIdentifierDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1PrintableStringDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1UTCTimeDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1BitStringDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1OctetStringDecode( void *ospvContentValue, unsigned char *ospvContent, unsigned int ospvContentLength); int OSPPASN1NullEncode( OSPTASN1OBJECT **ospvNullObject); int OSPPASN1BigIntegerEncode( OSPTASN1OBJECT **ospvIntegerObject, unsigned char *ospvIntegerData, unsigned int ospvIntegerLength); int OSPPASN1ObjectIdentifierEncode( OSPTASN1OBJECT **ospvOIDObject, OSPEASN1ID ospvObjectId, OSPEASN1DATAREFID ospvDataRefId); int OSPPASN1OctetStringEncode( OSPTASN1OBJECT **ospvOctetStringObject, unsigned char *ospvContent, unsigned ospvContentLength, OSPEASN1DATAREFID ospvDataRefId); int OSPPASN1BufferCreate( unsigned char *ospvContent, unsigned ospvContentLength, OSPTASN1BUFFER **ospvBuffer); void OSPPASN1BufferDelete( OSPTASN1BUFFER **ospvBuffer); int OSPPASN1PrimitiveEncode( OSPTASN1ELEMENTINFO *ospvElementInfo);#ifdef __cplusplus}#endiftypedef struct _OSPTDERBUF { unsigned char *data; /* Pointer to storage for the certificate */ unsigned char *ptr; /* Pointer to beginning of buffer remainder */} OSPTDERBUF;/***************************************************************** ASN1 SIMPLE TYPES*****************************************************************/#define OSPC_ASN1_OID_MAX_ELEMENTS 20typedef struct _OSPTOBJID { int element[OSPC_ASN1_OID_MAX_ELEMENTS];} OSPTOBJECTID;typedef struct { struct tm time; int fracsec;} OSPTUTCTIME;#define OSPC_OID_VALUE_TERMINATOR (-1) /* Not a legal OID value */#define OSPC_OID_VALUE_DIGIT_MASK 0x7F /* Base 128 */#define OSPC_OID_VALUE_END_MASK 0x80 /* MSB = 0 in last octet of value *//***************************************************************** OBJECT ID DEFINITIONS/XREF/TAGS*****************************************************************/#define OSPC_OID_CODE_NOT_FOUND 0#define OSPC_OID_CODE_ALGORITHM 1, 3, 14, 3, 2#define OSPC_OID_CODE_RSADSI 1, 2, 840, 113549#define OSPC_OID_CODE_PKCS OID_CODE_RSADSI, 1 #define OSPC_OID_CODE_PKCS9 OID_CODE_PKCS, 9#define OSPC_OID_CODE_ALG_RSAENCRYPTION \ OSPC_OID_CODE_PKCS, 1, 1#define OSPC_OID_CODE_ALG_MD2WITHRSAENCRYPTION \ OSPC_OID_CODE_PKCS, 1, 2#define OSPC_OID_CODE_ALG_MD5WITHRSAENCRYPTION \ OSPC_OID_CODE_PKCS, 1, 4#define OSPC_OID_CODE_MD2 OID_CODE_RSADSI, 2, 2#define OSPC_OID_CODE_MD5 OID_CODE_RSADSI, 2, 5#define OSPC_OID_CODE_RC4 OID_CODE_RSADSI, 3, 4#define OSPC_OID_CODE_X500 2, 5 #define OSPC_OID_CODE_X509 OID_CODE_X500, 4#define OSPC_OID_CODE_DN_COUNTRY OID_CODE_X509, 6#define OSPC_OID_CODE_DN_STATE OID_CODE_X509, 8#define OSPC_OID_CODE_DN_LOCALITY OID_CODE_X509, 7#define OSPC_OID_CODE_DN_ORGANIZATION \ OSPC_OID_CODE_X509, 10#define OSPC_OID_CODE_DN_ORG_UNIT OID_CODE_X509, 11#define OSPC_OID_CODE_DN_COMMON_NAME OID_CODE_X509, 3#define OSPC_OID_CODE_RSA OID_CODE_X500, 8, 1, 1#define OSPC_OID_CODE_LD_CE OID_CODE_X500, 29#define OSPC_OID_CODE_EXT_KEY_USAGE OID_CODE_LD_CE, 15#define OSPC_OID_CODE_EXT_SUBJECT_KEY_ID \ OSPC_OID_CODE_LD_CE, 14/* *************************************************************** ENTRIES IN THE ARRAY THAT FOLLOWS MUST BE IN THE SAME ORDER AS THE ENUM */typedef enum { OSPC_OID_TAG_DN_COUNTRY, OSPC_OID_TAG_DN_STATE, OSPC_OID_TAG_DN_LOCALITY, OSPC_OID_TAG_DN_ORGANIZATION, OSPC_OID_TAG_DN_ORG_UNIT, OSPC_OID_TAG_DN_COMMON_NAME, OSPC_OID_TAG_ALG_RSAENCRYPTION, OSPC_OID_TAG_ALG_MD5WITHRSAENCRYPTION, OSPC_OID_TAG_EXT_KEY_USAGE, OSPC_OID_TAG_EXT_SUBJECT_KEY_ID, OSPC_OID_TAG_NOT_FOUND } OSPEOIDTAG;typedef struct { OSPEOIDTAG tag; OSPTOBJECTID oid; char *sname; char *lname;} OSPTOIDXREF;#define OSPC_OID_XX OSPC_OID_VALUE_TERMINATOR/* ************************************************************** */typedef struct { int type; unsigned char *value; unsigned length;} OSPTPARAMETER;#define OSPC_ATV_MAX_PARAMS 10typedef struct { OSPTOBJECTID oid; OSPTPARAMETER *params[OSPC_ATV_MAX_PARAMS]; /* Dynamically allocated */} OSPTATTRTYPEVAL; /* typedef OSPTALGORITHMID OSPTDIGESTALGORITHMID; *//************************************************** DER/BER (Encoding/Decoding Rules) Definitions***************************************************/#define OSPC_BER_MAX_TAG_LENGTH 10#define OSPC_BER_MODE_MASK 0x20#define OSPC_BER_MODE_PRIMITIVE 0x00#define OSPC_BER_MODE_CONSTRUCTED 0x20#define OSPM_CONSTRUCTED_TAG(a) \ ((a) | OSPC_BER_MODE_CONSTRUCTED)#define OSPM_IS_PRIMITIVE(a) \ (((a)&OSPC_BER_MODE_MASK) == OSPC_BER_MODE_PRIMITIVE)#define OSPM_IS_CONSTRUCTED(a) \ (((a)&OSPC_BER_MODE_MASK) == OSPC_BER_MODE_CONSTRUCTED)#define OSPC_BER_CLASS_MASK 0xc0#define OSPC_BER_CLASS_UNIVERSAL 0x00#define OSPC_BER_CLASS_APPLICATION 0x40#define OSPC_BER_CLASS_CONTEXT_SENS 0x80#define OSPC_BER_CLASS_PRIVATE 0xc0#define OSPC_BER_EXPLICIT_MASK \ (OSPC_BER_MODE_CONSTRUCTED | OSPC_BER_CLASS_CONTEXT_SENS)/* 0xa0 */#define OSPC_BER_IMPLICIT_MASK \ (OSPC_BER_MODE_CONSTRUCTED | OSPC_BER_CLASS_CONTEXT_SENS)/* 0xa0 */#define OSPC_BER_LENGTH_MODE_MASK 0x80#define OSPC_BER_LENGTH_MODE_SHORT 0x00#define OSPC_BER_LENGTH_MODE_LONG 0x80#define OSPC_BER_LENGTH_MASK 0x7f#define OSPM_IS_SHORT_LENGTH(a) \ (((a)&OSPC_BER_LENGTH_MODE_MASK)==OSPC_BER_LENGTH_MODE_SHORT)#define OSPM_IS_LONG_LENGTH(a) \ (((a)&OSPC_BER_LENGTH_MODE_MASK)==OSPC_BER_LENGTH_MODE_LONG)#define OSPM_BER_LENGTH(a) (((a)&OSPC_BER_LENGTH_MASK))#define OSPC_BER_TAG_MASK 0x1f#define OSPC_BER_TAG_HIGH 0x1f#define OSPM_BASE_TAG(a) ((a) & (OSPC_BER_TAG_MASK)) #define OSPM_IS_HIGH_TAG(a) \ (((a) & (OSPC_BER_TAG_HIGH)) == OSPC_BER_TAG_HIGH)#define OSPC_TAG_TYPE_EOC 0x00#define OSPC_TAG_TYPE_BOOLEAN 0x01#define OSPC_TAG_TYPE_INTEGER 0x02#define OSPC_TAG_TYPE_BIT_STRING 0x03#define OSPC_TAG_TYPE_OCTET_STRING 0x04#define OSPC_TAG_TYPE_NULL 0x05#define OSPC_TAG_TYPE_OBJECT_IDENTIFIER 0x06#define OSPC_TAG_TYPE_SEQUENCE 0x10 #define OSPC_TAG_TYPE_SET 0x11#define OSPC_TAG_TYPE_PRINTABLESTRING 0x13#define OSPC_TAG_TYPE_T61STRING 0x14#define OSPC_TAG_TYPE_IA5STRING 0x16#define OSPC_TAG_TYPE_UTCTIME 0x17#define OSPC_TAG_TYPE_GENERALIZEDTIME 0x18#define OSPC_TAG_TYPE_BMPSTRING 0x1e#define OSPC_TAG_TYPE_IMPLICIT 0xa0#define OSPM_TAG_TYPE_IMPLICIT_TAG(a) ((OSPC_TAG_TYPE_IMPLICIT) | (a))#define OSPM_IS_IMPLICIT(a) \ (((a) & OSPC_BER_IMPLICIT_MASK) == OSPC_BER_IMPLICIT_MASK)#define OSPC_TAG_TYPE_EXPLICIT 0xa0#define OSPM_TAG_TYPE_EXPLICIT_TAG(a) ((OSPC_TAG_TYPE_EXPLICIT) | (a))#define OSPM_IS_EXPLICIT(a) \ (((a) & OSPC_BER_EXPLICIT_MASK) == OSPC_BER_EXPLICIT_MASK)/* SPECIAL NOT-REALLY-A-TAG TAGS */#define OSPC_TAG_TYPE_DER_FORMAT 0xFE#define OSPC_TAG_TYPE_DERIVED 0xFF#define OSPM_EXPLICIT_CLASSNUMBER(a) ((a) & OSPC_BER_TAG_MASK)#define OSPC_BER_MAX_EXTENSIONS 10typedef union char2int_union { OSPTUINT64 num; unsigned char buf[sizeof(OSPTUINT64)];} OSPTCHAR2INT;typedef struct { unsigned char tag[OSPC_BER_MAX_TAG_LENGTH]; /* Complete tag */ unsigned int type; /* Element's type */ unsigned int taglength; /* Length of tag and length fields */ unsigned int length; /* Element's length */ unsigned char *value; /* Pointer to element's data */} OSPTBERELEMENT;typedef struct { int length; unsigned char *buffer;} OSPTDERELEMENT;#define OSPC_BER_MAX_EXTENSIONS 10typedef struct { int id; char *text;} OSPTTEXTLISTELEMENT;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -