27#define DKIMID ('D' | 'K'<<8 | 'I'<<16 | 'M'<<24)
30#define VERSION_STRING VERSION
32#define VERSION_STRING "1.4.0"
35static void InitContext(
DKIMContext* pContext,
bool bSign,
void* pObject)
42static void* ValidateContext(
DKIMContext* pContext,
bool bSign)
47 if (pContext->
reserved2 != (
unsigned int)(bSign ? 1 : 0))
60 nRet = pSign->
Init(pOptions);
65 if (nRet ==
DKIM_SUCCESS) { InitContext(pSignContext,
true,pSign); }
73 if (pSign) {
return pSign->
Process(szBuffer,nBufLength,
false); }
81 if (pSign) {
return pSign->
GetSig2(szRSAPrivKey,szECCPrivKey,pszSignature); }
102 nRet = pVerify->
Init(pOptions);
108 InitContext(pVerifyContext,
false,pVerify);
120 return pVerify->
Process(szBuffer,nBufLength,
false);
138 szPractices[0] =
'\0';
144 return pVerify->
GetDetails(nSigCount,pDetails);
169 "DKIM_SIGNATURE_BAD",
170 "DKIM_SIGNATURE_BAD_BUT_TESTING",
171 "DKIM_SIGNATURE_EXPIRED",
172 "DKIM_SELECTOR_INVALID",
173 "DKIM_SELECTOR_GRANULARITY_MISMATCH",
174 "DKIM_SELECTOR_KEY_REVOKED",
175 "DKIM_SELECTOR_DOMAIN_NAME_TOO_LONG",
176 "DKIM_SELECTOR_DNS_TEMP_FAILURE",
177 "DKIM_SELECTOR_DNS_PERM_FAILURE",
178 "DKIM_SELECTOR_PUBLIC_KEY_INVALID",
179 "DKIM_NO_SIGNATURES",
180 "DKIM_NO_VALID_SIGNATURES",
181 "DKIM_BODY_HASH_MISMATCH",
182 "DKIM_SELECTOR_ALGORITHM_MISMATCH",
183 "DKIM_STAT_INCOMPAT",
184 "DKIM_UNSIGNED_FROM",
185 "DKIM_OUT_OF_MEMORY",
186 "DKIM_INVALID_CONTEXT",
188 "DKIM_BAD_PRIVATE_KEY",
189 "DKIM_BUFFER_TOO_SMALL",
196 return DKIMErrorStrings[-1-ErrorCode];
int Process(const char *szBuffer, int nBufLength, bool bEOF)
int GetSig2(char *szRSAPrivKey, char *szECCPrivKey, char **pszSignature)
int Init(DKIMSignOptions *pOptions)
int Init(DKIMVerifyOptions *pOptions)
const char * GetPractices()
int GetDetails(int *nSigCount, DKIMVerifyDetails **pDetails)
int DKIMSignInit(DKIMContext *pSignContext, DKIMSignOptions *pOptions)
int DKIMVerifyInit(DKIMContext *pVerifyContext, DKIMVerifyOptions *pOptions)
int DKIMSignGetSig2(DKIMContext *pSignContext, char *szRSAPrivKey, char *szECCPrivKey, char **pszSignature)
const char * DKIMVersion()
void DKIMSignFree(DKIMContext *pSignContext)
int DKIMSignProcess(DKIMContext *pSignContext, char *szBuffer, int nBufLength)
void DKIMVerifyFree(DKIMContext *pVerifyContext)
int DKIMVerifyResults(DKIMContext *pVerifyContext)
const char * DKIMGetErrorString(int ErrorCode)
int DKIMVerifyGetDetails(DKIMContext *pVerifyContext, int *nSigCount, DKIMVerifyDetails **pDetails, char *szPractices)
int DKIMVerifyProcess(DKIMContext *pVerifyContext, const char *const szBuffer, int nBufLength)
#define DKIM_INVALID_CONTEXT
#define DKIM_OUT_OF_MEMORY