Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
3.7 KiB

//#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_