You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.1 KiB
C
78 lines
2.1 KiB
C
|
1 month ago
|
// CBase64Coder.h: interface for the CBase64Coder 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
|
||
|
|
|
||
|
|
// Valik - WINVER needs defined for VC 7.1 will complain and define it to 0x0501 (Windows XP
|
||
|
|
#ifndef WINVER
|
||
|
|
#define WINVER 0x0400 // Windows 95
|
||
|
|
#endif // WINVER
|
||
|
|
|
||
|
|
#ifdef _AFXDLL
|
||
|
|
#include <afx.h>
|
||
|
|
typedef CString String;
|
||
|
|
#else
|
||
|
|
#include <windows.h>
|
||
|
|
#include <string>
|
||
|
|
typedef std::string String;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
class AFX_EXT_CLASS CBase64Coder
|
||
|
|
{
|
||
|
|
// Internal bucket class.
|
||
|
|
class TempBucket
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
BYTE nData[4];
|
||
|
|
BYTE nSize;
|
||
|
|
void Clear() { ::ZeroMemory(nData, 4); nSize = 0; };
|
||
|
|
};
|
||
|
|
|
||
|
|
PBYTE m_pDBuffer;
|
||
|
|
PBYTE m_pEBuffer;
|
||
|
|
DWORD m_nDBufLen;
|
||
|
|
DWORD m_nEBufLen;
|
||
|
|
DWORD m_nDDataLen;
|
||
|
|
DWORD m_nEDataLen;
|
||
|
|
|
||
|
|
public:
|
||
|
|
CBase64Coder();
|
||
|
|
virtual ~CBase64Coder();
|
||
|
|
|
||
|
|
public:
|
||
|
|
virtual void Encode(const PBYTE, DWORD);
|
||
|
|
virtual void Decode(const PBYTE, DWORD);
|
||
|
|
virtual void Encode(LPCTSTR sMessage);
|
||
|
|
virtual void Decode(LPCTSTR sMessage);
|
||
|
|
|
||
|
|
virtual LPCTSTR DecodedMessage() const;
|
||
|
|
virtual LPCTSTR EncodedMessage() const;
|
||
|
|
virtual PBYTE EncodedMessage(DWORD& nLenMessage) const;
|
||
|
|
virtual PBYTE DecodedMessage(DWORD& nLenMessage) const;
|
||
|
|
PBYTE MoveDecodeMessage(DWORD& nLenMessage);
|
||
|
|
|
||
|
|
virtual void AllocEncode(DWORD);
|
||
|
|
virtual void AllocDecode(DWORD);
|
||
|
|
virtual void SetEncodeBuffer(const PBYTE pBuffer, DWORD nBufLen);
|
||
|
|
virtual void SetDecodeBuffer(const PBYTE pBuffer, DWORD nBufLen);
|
||
|
|
|
||
|
|
protected:
|
||
|
|
virtual void _EncodeToBuffer(const TempBucket &Decode, PBYTE pBuffer);
|
||
|
|
virtual ULONG _DecodeToBuffer(const TempBucket &Decode, PBYTE pBuffer);
|
||
|
|
virtual void _EncodeRaw(TempBucket &, const TempBucket &);
|
||
|
|
virtual void _DecodeRaw(TempBucket &, const TempBucket &);
|
||
|
|
virtual BOOL _IsBadMimeChar(BYTE);
|
||
|
|
|
||
|
|
static char m_DecodeTable[256];
|
||
|
|
static BOOL m_Init;
|
||
|
|
void _Init();
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif // !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)
|