X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fsrc%2Fpdkim%2Fpdkim.h;h=8c477f744cbd3f49b6ba0a7b05af71c15d27ba0d;hb=d5c0d8c9374623620844d539d4810da63e9abca1;hp=5d0157e6385488d15a9006de33ee8cb930c37884;hpb=44bc8f0c2f3576b46bd6df1b818cb29eaf84df5b;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/pdkim/pdkim.h b/src/src/pdkim/pdkim.h index 5d0157e63..8c477f744 100644 --- a/src/src/pdkim/pdkim.h +++ b/src/src/pdkim/pdkim.h @@ -2,7 +2,7 @@ * PDKIM - a RFC4871 (DKIM) implementation * * Copyright (C) 2009 - 2012 Tom Kistner - * Copyright (c) Jeremy Harris 2016 + * Copyright (c) 2016 - 2017 Jeremy Harris * * http://duncanthrax.net/pdkim/ * @@ -100,13 +100,14 @@ typedef struct pdkim_pubkey { uschar *version; /* v= */ uschar *granularity; /* g= */ +#ifdef notdef uschar *hashes; /* h= */ uschar *keytype; /* k= */ +#endif uschar *srvtype; /* s= */ uschar *notes; /* n= */ blob key; /* p= */ - int testing; /* t=y */ int no_subdomaining; /* t=s */ } pdkim_pubkey; @@ -163,7 +164,7 @@ typedef struct pdkim_signature { uschar *copiedheaders; /* (b=) Raw signature data, along with its length in bytes */ - blob sigdata; + blob sighash; /* (bh=) Raw body hash data, along with its length in bytes */ blob bodyhash; @@ -232,7 +233,7 @@ typedef struct pdkim_signature { /* Properties below this point are used internally only ------------- */ /* Per-signature helper variables ----------------------------------- */ - hctx body_hash; + hctx body_hash_ctx; unsigned long signed_body_bytes; /* How many body bytes we hashed */ pdkim_stringlist *headers; /* Raw headers included in the sig */ @@ -245,12 +246,15 @@ typedef struct pdkim_signature { /* -------------------------------------------------------------------------- */ /* Context to keep state between all operations. */ -#define PDKIM_MODE_SIGN 0 -#define PDKIM_MODE_VERIFY 1 typedef struct pdkim_ctx { - /* PDKIM_MODE_VERIFY or PDKIM_MODE_SIGN */ - int mode; +#define PDKIM_MODE_SIGN BIT(0) /* if unset, mode==verify */ +#define PDKIM_DOT_TERM BIT(1) /* dot termination and unstuffing */ +#define PDKIM_SEEN_CR BIT(2) +#define PDKIM_SEEN_LF BIT(3) +#define PDKIM_PAST_HDRS BIT(4) +#define PDKIM_SEEN_EOD BIT(5) + unsigned flags; /* One (signing) or several chained (verification) signatures */ pdkim_signature *sig; @@ -264,9 +268,6 @@ typedef struct pdkim_ctx { int cur_header_len; char *linebuf; int linebuf_offset; - BOOL seen_lf; - BOOL seen_eod; - BOOL past_headers; int num_buffered_crlf; int num_headers; pdkim_stringlist *headers; /* Raw headers for verification */ @@ -285,10 +286,11 @@ extern "C" { void pdkim_init (void); DLLEXPORT -pdkim_ctx *pdkim_init_sign (char *, char *, char *, int); +pdkim_ctx *pdkim_init_sign (char *, char *, char *, int, + BOOL, int(*)(char *, char *), const uschar **); DLLEXPORT -pdkim_ctx *pdkim_init_verify (int(*)(char *, char *)); +pdkim_ctx *pdkim_init_verify (int(*)(char *, char *), BOOL); DLLEXPORT int pdkim_set_optional (pdkim_ctx *, char *, char *,int, int, @@ -299,13 +301,13 @@ int pdkim_set_optional (pdkim_ctx *, char *, char *,int, int, DLLEXPORT int pdkim_feed (pdkim_ctx *, char *, int); DLLEXPORT -int pdkim_feed_finish (pdkim_ctx *, pdkim_signature **); +int pdkim_feed_finish (pdkim_ctx *, pdkim_signature **, const uschar **); DLLEXPORT void pdkim_free_ctx (pdkim_ctx *); -const char * pdkim_errstr(int); +const uschar * pdkim_errstr(int); #ifdef __cplusplus }