//#include "algid.h" #ifndef _ENCODE_H_ #define _ENCODE_H_ /* tag definitions for ASN.1 encoding decoding */ #define INTEGER_TAG 0x02 #define CHAR_STRING_TAG 0x16 #define OCTET_STRING_TAG 0x04 #define BIT_STRING_TAG 0x03 #define UTCTIME_TAG 0x17 #define SEQUENCE_TAG 0x30 #define SET_OF_TAG 0x11 #define OBJECT_ID_TAG 0x06 #define NULL_TAG 0x05 #define PRINTABLE_STRING_TAG 0x13 #define TELETEX_STRING_TAG 0x14 /* definitions of maximum lengths needed for the ASN.1 encoded form of some of the common fields in a certificate */ #define MAXVALIDITYLEN 0x24 #define MAXKEYINFOLEN 0x50 #define MAXALGIDLEN 0x0A #define MAXOBJIDLEN 0x0A #define MAXNAMEVALUELEN 0x40 #define UTCTIMELEN 0x0F #define MAXPUBKEYDATALEN 0x30 #define VERSIONLEN 0x03 #define MAXENCODEDSIGLEN 0x30 #define MAXHEADERLEN 0x08 #define MINHEADERLEN 0x03 #define MAXTIMELEN 0x20 /* definitions for scrubbing memory */ #define ALLBITSOFF 0x00 #define ALLBITSON 0xFF /* prototypes for the functions in encode.c */ long EncodeLength (BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag); long EncodeAlgid (BYTE *pbEncoded, ALG_ID Algid, BOOL Writeflag); long EncodeInteger (BYTE *pbEncoded, BYTE *pbInt, DWORD dwLen, BOOL Writeflag); long EncodeString (BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag); long EncodeOctetString (BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag); long EncodeBitString (BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag); //long EncodeUTCTime (BYTE *pbEncoded, time_t Time, BOOL Writeflag); long EncodeHeader (BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag); long EncodeSetOfHeader (BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag); long EncodeName (BYTE *pbEncoded, BYTE *pbName, DWORD dwLen, BOOL Writeflag); long DecodeLength (DWORD *pdwLen, BYTE *pbEncoded); long DecodeAlgid (ALG_ID *pAlgid, BYTE *pbEncoded, BOOL Writeflag); long DecodeHeader (DWORD *pdwLen, BYTE *pbEncoded); long DecodeSetOfHeader (DWORD *pdwLen, BYTE *pbEncoded); long DecodeInteger (BYTE *pbInt, DWORD *pdwLen, BYTE *pbEncoded, BOOL Writeflag); long DecodeString (BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, BOOL Writeflag); long DecodeOctetString (BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, BOOL Writeflag); long DecodeBitString (BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, BOOL Writeflag); //long DecodeUTCTime (time_t *pTime, BYTE *pbEncoded, BOOL Writeflag); long DecodeName (BYTE *pbName, DWORD *pdwLen, BYTE *pbEncoded, BOOL Writeflag); long EncodeAlgorithm( BYTE * pbEncoded, ALG_ID AlgId, BOOL WriteFlag); long EncodeFileTime( BYTE * pbEncoded, FILETIME Time, BOOL UTC, BOOL WriteFlag); long EncodeDN( BYTE * pbEncoded, PSTR pszDN, BOOL WriteFlag); long DecodeFileTime( FILETIME * pTime, BYTE * pbEncoded, BOOL WriteFlag); long DecodeNull( BYTE * pbEncoded); long DecodeDN( PSTR pName, DWORD * pdwLen, BYTE * pbEncoded, BOOL WriteFlag); long DecodeAlgorithm( ALG_ID * pAlgId, PBYTE pbEncoded, BOOL WriteFlag); long DecodeBsafePubKey( LPBSAFE_PUB_KEY * ppPubKey, DWORD * pcbPubKey, PBYTE pbEncoded); long DecodePrivateKeyFile( LPBSAFE_PRV_KEY * ppKey, PBYTE pbEncoded, DWORD cbEncoded, PSTR Password ); #endif // _ENCODE_H_