summaryrefslogtreecommitdiff
path: root/sqmail-4.3.07/src/include/dkimbase.h
blob: 25aac02aa6d946701d61e7e5772e110b29f40bab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*****************************************************************************
*  Copyright 2005 Alt-N Technologies, Ltd. 
*
*  Licensed under the Apache License, Version 2.0 (the "License"); 
*  you may not use this file except in compliance with the License. 
*  You may obtain a copy of the License at 
*
*      http://www.apache.org/licenses/LICENSE-2.0 
*
*  This code incorporates intellectual property owned by Yahoo! and licensed 
*  pursuant to the Yahoo! DomainKeys Patent License Agreement.
*
*  Unless required by applicable law or agreed to in writing, software 
*  distributed under the License is distributed on an "AS IS" BASIS, 
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
*  See the License for the specific language governing permissions and 
*  limitations under the License.
*
*  Changes done by ¢feh@fehcom.de obeying the above license
*
*****************************************************************************/
#ifndef DKIMBASE_H
#define DKIMBASE_H

#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/err.h>

#define BUFFER_ALLOC_INCREMENT 256

#include <string>
#include <list>

using namespace std;

class CDKIMBase
{
public:

	CDKIMBase();
	~CDKIMBase();

	int Init(void);

	int Process(const char* szBuffer,int nBufLength,bool bEOF);
	int ProcessFinal(void);

	int Alloc(char*& szBuffer,int nRequiredSize);
	int ReAlloc(char*& szBuffer,int& nBufferLength,int nRequiredSize);
	void Free(char* szBuffer);

	static void RemoveSWSP(char* szBuffer);
	static void RemoveSWSP(char* pBuffer,int& nBufLength);
	static void RemoveSWSP(string& sBuffer);

	static void CompressSWSP(char* pBuffer,int& nBufLength);
	static void CompressSWSP(string& sBuffer);

	static string RelaxHeader(const string& sHeader);

	virtual int ProcessHeaders(void);
	virtual int ProcessBody(char* szBuffer,int nBufLength,bool bEOF);

protected:
	char* m_From;
	char* m_Sender;
	char* m_hTag;
	int m_hTagSize;
	int m_hTagPos;
	char* m_Line;
	int m_LineSize;
	int m_LinePos;
	bool m_InHeaders;

	list<string> HeaderList;
};


#endif // DKIMBASE_H