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