X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fpdkim%2Fpdkim.h;h=8b8b95032e244cde94a55550fa4610a35fbd13e7;hb=863bd541063e72fcea7305b9d3ee2cb460a6d3d1;hp=5d0157e6385488d15a9006de33ee8cb930c37884;hpb=f7302073a0de0db3750659a0f27b869ea45a0e4e;p=exim.git diff --git a/src/src/pdkim/pdkim.h b/src/src/pdkim/pdkim.h index 5d0157e63..8b8b95032 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 *)); 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,