diff options
Diffstat (limited to 'src/include/dkimverify.h')
-rw-r--r-- | src/include/dkimverify.h | 169 |
1 files changed, 85 insertions, 84 deletions
diff --git a/src/include/dkimverify.h b/src/include/dkimverify.h index 64de2a1..685426b 100644 --- a/src/include/dkimverify.h +++ b/src/include/dkimverify.h @@ -22,131 +22,132 @@ #ifndef DKIMVERIFY_H #define DKIMVERIFY_H -#include "dkimbase.h" #include <vector> +#include "dkimbase.h" + /* not used anymore #define DKIM_ADSP_UNKNOWN 1 #define DKIM_ADSP_ALL 2 #define DKIM_ADSP_DISCARDABLE 3 */ -#define DKIM_POLICY_DOMAIN_NAME_TOO_LONG -50 // internal error -#define DKIM_POLICY_DNS_TEMP_FAILURE -51 // internal error -#define DKIM_POLICY_DNS_PERM_FAILURE -52 // internal error -#define DKIM_POLICY_INVALID -53 // internal error +#define DKIM_POLICY_DOMAIN_NAME_TOO_LONG -50 // internal error +#define DKIM_POLICY_DNS_TEMP_FAILURE -51 // internal error +#define DKIM_POLICY_DNS_PERM_FAILURE -52 // internal error +#define DKIM_POLICY_INVALID -53 // internal error /* dito #define DKIM_SIG_VERSION_PRE_02 0 #define DKIM_SIG_VERSION_02_PLUS 1 */ -class SelectorInfo -{ +class SelectorInfo { public: - SelectorInfo(const string &sSelector,const string &sDomain); - ~SelectorInfo(); + SelectorInfo(const string& sSelector, const string& sDomain); + ~SelectorInfo(); - string Domain; - string Selector; - string Granularity; - bool AllowSHA1; - bool AllowSHA256; - EVP_PKEY *PublicKey; /* the public key */ - bool Testing; - bool SameDomain; + string Domain; + string Selector; + string Granularity; + bool AllowSHA1; + bool AllowSHA256; + EVP_PKEY *PublicKey; /* the public key */ + bool Testing; + bool SameDomain; - int Status; + int Status; - int Parse(char* Buffer); + int Parse(char *Buffer); }; -class SignatureInfo -{ +class SignatureInfo { public: - SignatureInfo(bool SaveCanonicalizedData); - ~SignatureInfo(); - - void Hash(const char* szBuffer,unsigned nBufLength,bool IsBody=false); - - string Header; - unsigned Version; - string Domain; - string Selector; - string SignatureData; - string BodyHashData; - string IdentityLocalPart; - string IdentityDomain; - string CanonicalizedData; - vector<string> SignedHeaders; - unsigned BodyLength; - unsigned HeaderCanonicalization; - unsigned BodyCanonicalization; - unsigned ExpireTime; - - unsigned VerifiedBodyCount; - unsigned UnverifiedBodyCount; - -#if ((OPENSSL_VERSION_NUMBER < 0x10100000L) || (LIBRESSL_VERSION_NUMBER > 0 && LIBRESSL_VERSION_NUMBER < 0x20700000L)) - EVP_MD_CTX m_Hdr_ctx; - EVP_MD_CTX m_Bdy_ctx; + SignatureInfo(bool SaveCanonicalizedData); + ~SignatureInfo(); + + void Hash(const char *szBuffer, unsigned nBufLength, bool IsBody = false); + + string Header; + unsigned Version; + string Domain; + string Selector; + string SignatureData; + string BodyHashData; + string IdentityLocalPart; + string IdentityDomain; + string CanonicalizedData; + vector<string> SignedHeaders; + unsigned BodyLength; + unsigned HeaderCanonicalization; + unsigned BodyCanonicalization; + unsigned ExpireTime; + + unsigned VerifiedBodyCount; + unsigned UnverifiedBodyCount; + +#if ( \ + (OPENSSL_VERSION_NUMBER < 0x10100000L) \ + || (LIBRESSL_VERSION_NUMBER > 0 && LIBRESSL_VERSION_NUMBER < 0x20700000L)) + EVP_MD_CTX m_Hdr_ctx; + EVP_MD_CTX m_Bdy_ctx; #else - EVP_MD_CTX *m_Hdr_ctx; - EVP_MD_CTX *m_Bdy_ctx; + EVP_MD_CTX *m_Hdr_ctx; + EVP_MD_CTX *m_Bdy_ctx; #endif #if (OPENSSL_VERSION_NUMBER > 0x10101000L) - EVP_MD_CTX *m_Msg_ctx; + EVP_MD_CTX *m_Msg_ctx; #endif - SelectorInfo *m_pSelector; + SelectorInfo *m_pSelector; - int Status; - int m_nHash; // use one of the DKIM_HASH_xxx constants here - unsigned EmptyLineCount; - bool m_SaveCanonicalizedData; + int Status; + int m_nHash; // use one of the DKIM_HASH_xxx constants here + unsigned EmptyLineCount; + bool m_SaveCanonicalizedData; }; -class CDKIMVerify : public CDKIMBase -{ +class CDKIMVerify : public CDKIMBase { public: + CDKIMVerify(); + ~CDKIMVerify(); + // virtual ~CDKIMVerify() = 0; - CDKIMVerify(); - ~CDKIMVerify(); -// virtual ~CDKIMVerify() = 0; + int Init(DKIMVerifyOptions *pOptions); - int Init(DKIMVerifyOptions* pOptions); + int GetResults(void); + int GetDetails(int *nSigCount, DKIMVerifyDetails **pDetails); + // int _DNSGetTXT(const char* szFQDN,char* Buffer,int nBufLen); - int GetResults(void); - int GetDetails(int* nSigCount,DKIMVerifyDetails** pDetails); -// int _DNSGetTXT(const char* szFQDN,char* Buffer,int nBufLen); + virtual int ProcessHeaders(void); + virtual int ProcessBody(char *szBuffer, int nBufLength, bool bEOF); - virtual int ProcessHeaders(void); - virtual int ProcessBody(char* szBuffer,int nBufLength,bool bEOF); - - const char* GetPractices() { return Practices.c_str(); } + const char *GetPractices() + { + return Practices.c_str(); + } protected: + int ParseDKIMSignature(const string& sHeader, SignatureInfo& sig); - int ParseDKIMSignature(const string& sHeader,SignatureInfo &sig); - - SelectorInfo& GetSelector(const string &sSelector,const string &sDomain); + SelectorInfo& GetSelector(const string& sSelector, const string& sDomain); -// int GetADSP(const string &sDomain,int &iADSP); + // int GetADSP(const string &sDomain,int &iADSP); - list<SignatureInfo> Signatures; - list<SelectorInfo> Selectors; + list<SignatureInfo> Signatures; + list<SelectorInfo> Selectors; - DKIMDNSCALLBACK m_pfnSelectorCallback; // selector record callback -// DKIMDNSCALLBACK m_pfnPracticesCallback; // ADSP record callback + DKIMDNSCALLBACK m_pfnSelectorCallback; // selector record callback + // DKIMDNSCALLBACK m_pfnPracticesCallback; // ADSP record callback - bool m_HonorBodyLengthTag; - bool m_CheckPractices; - bool m_SubjectIsRequired; - bool m_SaveCanonicalizedData; - bool m_AllowUnsignedFromHeaders; + bool m_HonorBodyLengthTag; + bool m_CheckPractices; + bool m_SubjectIsRequired; + bool m_SaveCanonicalizedData; + bool m_AllowUnsignedFromHeaders; - vector<DKIMVerifyDetails> Details; - string Practices; + vector<DKIMVerifyDetails> Details; + string Practices; }; -#endif //DKIMVERIFY_H +#endif //DKIMVERIFY_H |