www.pudn.com > SNMP·¶ÀýÔ´´úÂë.zip > Asn1.h
/******************************************************************************* * asn1 -**************************************************************************/ #ifndef _ASN1_H_ #define _ASN1_H_ /*------------- Class ----------------------*/ #define ASN1_UNI 0 /* Universal */ #define ASN1_APL 1 /* Application */ #define ASN1_CTX 2 /* Context */ #define ASN1_PRV 3 /* Private */ /*------------- Tag -------------------------------*/ #define ASN1_EOC 0 /* End Of Contents */ #define ASN1_BOL 1 /* intean */ #define ASN1_INT 2 /* Integer */ #define ASN1_BTS 3 /* Bit String */ #define ASN1_OTS 4 /* Octet String */ #define ASN1_NUL 5 /* Null */ #define ASN1_OJI 6 /* Object Identifier */ #define ASN1_OJD 7 /* Object Description */ #define ASN1_EXT 8 /* External */ #define ASN1_SEQ 16 /* Sequence */ #define ASN1_SET 17 /* Set */ #define ASN1_NUMSTR 18 /* Numerical String */ #define ASN1_PRNSTR 19 /* Printable String */ #define ASN1_TEXSTR 20 /* Teletext String */ #define ASN1_VIDSTR 21 /* Video String */ #define ASN1_IA5STR 22 /* IA5 String */ #define ASN1_UNITIM 23 /* Universal Time */ #define ASN1_GENTIM 24 /* General Time */ #define ASN1_GRASTR 25 /* Graphical String */ #define ASN1_VISSTR 26 /* Visible String */ #define ASN1_GENSTR 27 /* General String */ /*------------- Primitive/Constructed -----------------*/ #define ASN1_PRI 0 /* Primitive */ #define ASN1_CON 1 /* Constructed */ /*------------- Mode to open ASN11 ---------------*/ #define ASN1_ENC 0 /* Encoding */ #define ASN1_DEC 1 /* Decoding */ #define ASN1_ERR_NOERROR 0 #define ASN1_ERR_ENC_FULL 1 #define ASN1_ERR_DEC_EMPTY 2 #define ASN1_ERR_DEC_EOC_MISMATCH 3 #define ASN1_ERR_DEC_LENGTH_MISMATCH 4 #define ASN1_ERR_DEC_BADVALUE 5 #define ASN1_ERR_ENC_BADVALUE 6 typedef struct asn1_sck_s asn1_sck_t; struct asn1_sck_s { /* ASN1 socket */ u8 *Pointer; /* Octet just encoded or to be decoded */ u8 *Begin; /* First octet */ u8 *End; /* Octet after last octet */ }; extern i32 asn1ErrStatus; void Asn1Opn(asn1_sck_t *Asn1, u8 *Buf, u32 Len, u32 Mde); void Asn1Cls(asn1_sck_t *Asn1, u8 **Buf, u32 *Len); int Asn1OctEnc(asn1_sck_t *Asn1, u8 Chr); int Asn1OctDec(asn1_sck_t *Asn1, u8 *Chr); int Asn1TagEnc(asn1_sck_t *Asn1, u32 Tag); int Asn1TagDec(asn1_sck_t *Asn1, u32 *Tag); int Asn1IdrEnc(asn1_sck_t *Asn1, u32 Cls, u32 Con, u32 Tag); int Asn1IdrDec(asn1_sck_t *Asn1, u32 *Cls, u32 *Con, u32 *Tag); int Asn1LenEnc(asn1_sck_t *Asn1, u32 Def, u32 Len); int Asn1LenDec(asn1_sck_t *Asn1, u32 *Def, u32 *Len); int Asn1HdrEnc(asn1_sck_t *Asn1, u8 *Eoc, u32 Cls, u32 Con, u32 Tag); int Asn1HdrDec(asn1_sck_t *Asn1, u8 **Eoc, u32 *Cls, u32 *Con, u32 *Tag); int Asn1Eoc(asn1_sck_t *Asn1, u8 *Eoc); int Asn1EocEnc(asn1_sck_t *Asn1, u8 **Eoc); int Asn1EocDec(asn1_sck_t *Asn1, u8 *Eoc); int Asn1NulEnc(asn1_sck_t *Asn1, u8 **Eoc); int Asn1NulDec(asn1_sck_t *Asn1, u8 *Eoc); int Asn1BolEnc(asn1_sck_t *Asn1, u8 **Eoc, int Bol); int Asn1BolDec(asn1_sck_t *Asn1, u8 *Eoc, int *Bol); int Asn1IntEnc(asn1_sck_t *Asn1, u8 **Eoc, i32 Int); int Asn1IntDec(asn1_sck_t *Asn1, u8 *Eoc, i32 *Int); int Asn1IntEncLng(asn1_sck_t *Asn1, u8 **Eoc, i32 Int); int Asn1IntDecLng(asn1_sck_t *Asn1, u8 *Eoc, i32 *Int); int Asn1IntEncUns(asn1_sck_t *Asn1, u8 **Eoc, u32 Int); int Asn1IntDecUns(asn1_sck_t *Asn1, u8 *Eoc, u32 *Int); int Asn1IntEncLngUns(asn1_sck_t *Asn1, u8 **Eoc, u32 Int); int Asn1IntDecLngUns(asn1_sck_t *Asn1, u8 *Eoc, u32 *Int); int Asn1BtsEnc(asn1_sck_t *Asn1, u8 **Eoc, u8 *Bts, u32 BtsLen, u8 BtsUnu); int Asn1BtsDec(asn1_sck_t *Asn1, u8 *Eoc, u8 *Bts, u32 BtsSze, u32 *BtsLen, u8 *BtsUnu); int Asn1OtsEnc(asn1_sck_t *Asn1, u8 **Eoc, u8 *Ots, u32 OtsLen); int Asn1OtsDec(asn1_sck_t *Asn1, u8 *Eoc, u8 *Ots, u32 OtsSze, u32 *OtsLen); int Asn1SbiEnc(asn1_sck_t *Asn1, u32 Sbi); int Asn1SbiDec(asn1_sck_t *Asn1, u32 *Sbi); int Asn1OjiEnc(asn1_sck_t *Asn1, u8 **Eoc, u32 *Oji, u32 OjiLen); int Asn1OjiDec(asn1_sck_t *Asn1, u8 *Eoc, u32 *Oji, u32 OjiSze, u32 *OjiLen); #endif