Leaked source code of windows server 2003
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.
 
 
 
 
 
 

73 lines
2.0 KiB

// Base64Coder.h: interface for the Base64Coder class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)
#define AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
////////////////////////////////////////////////////////////////////////
// Standard foo for file name aliasing. This code block must be after
// all includes of VSS header files.
//
#ifdef VSS_FILE_ALIAS
#undef VSS_FILE_ALIAS
#endif
#define VSS_FILE_ALIAS "BUEB64CH"
//
////////////////////////////////////////////////////////////////////////
class Base64Coder
{
// Internal bucket class.
class TempBucket
{
public:
BYTE nData[4];
BYTE nSize;
void Clear()
{
::ZeroMemory(nData, sizeof(nData));
nSize = 0;
}
};
PBYTE m_pDBuffer;
LPWSTR m_pEBuffer;
UINT m_nDBufLen;
UINT m_nEBufLen;
UINT m_nDDataLen;
UINT m_nEDataLen;
public:
Base64Coder();
virtual ~Base64Coder();
public:
virtual void Encode(const BYTE *, UINT);
virtual void Decode(LPCWSTR);
virtual BYTE * DecodedMessage() const;
virtual LPCWSTR EncodedMessage() const;
virtual void AllocEncode(UINT);
virtual void AllocDecode(UINT);
virtual void SetEncodeBuffer(LPCWSTR pBuffer, UINT nBufLen);
virtual void SetDecodeBuffer(const BYTE *pBuffer, UINT nBufLen);
protected:
virtual void _EncodeToBuffer(const TempBucket &Decode, LPWSTR pBuffer);
virtual UINT _DecodeToBuffer(const TempBucket &Decode, BYTE *pBuffer);
virtual void _EncodeRaw(TempBucket &, const TempBucket &);
virtual void _DecodeRaw(TempBucket &, const TempBucket &);
virtual BOOL _IsBadMimeChar(WCHAR);
static char m_DecodeTable[256];
static BOOL m_Init;
void _Init();
};
#endif // !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)