From: Tom Kistner Date: Thu, 9 Apr 2009 07:49:10 +0000 (+0000) Subject: Update to latest pdkim X-Git-Url: https://git.exim.org/users/jgh/exim.git/commitdiff_plain/a7d286f6c6c73a64ef35e7677a073b1d41a67e0a Update to latest pdkim --- diff --git a/src/src/pdkim/Makefile b/src/src/pdkim/Makefile index 4051402ae..b2c891cb6 100644 --- a/src/src/pdkim/Makefile +++ b/src/src/pdkim/Makefile @@ -1,4 +1,4 @@ -# $Cambridge: exim/src/src/pdkim/Makefile,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ +# $Cambridge: exim/src/src/pdkim/Makefile,v 1.1.2.2 2009/04/09 07:49:10 tom Exp $ OBJ = base64.o bignum.o pdkim.o rsa.o sha1.o sha2.o @@ -13,10 +13,10 @@ pdkim.a: $(OBJ) $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) $*.c base64.o: $(HDRS) base64.c -bignum.o: $(HDRS) base64.c -pdkim.o: $(HDRS) base64.c -rsa.o: $(HDRS) base64.c -sha1.o: $(HDRS) base64.c -sha2.o: $(HDRS) base64.c +bignum.o: $(HDRS) bignum.c +pdkim.o: $(HDRS) pdkim.c +rsa.o: $(HDRS) rsa.c +sha1.o: $(HDRS) sha1.c +sha2.o: $(HDRS) sha2.c # End diff --git a/src/src/pdkim/README b/src/src/pdkim/README index 140a55c38..e4531b818 100644 --- a/src/src/pdkim/README +++ b/src/src/pdkim/README @@ -1,3 +1,13 @@ -# $Cambridge: exim/src/src/pdkim/README,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ +$Cambridge: exim/src/src/pdkim/README,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ -Preliminary REAME. Please ignore FTTB. +PDKIM - a RFC4871 (DKIM) implementation +http://duncanthrax.net/pdkim/ +Copyright (C) 2009 Tom Kistner + +Includes code from the PolarSSL project. +http://polarssl.org +Copyright (C) 2009 Paul Bakker +Copyright (C) 2006-2008 Christophe Devine + +This copy of PDKIM is included with Exim. For a standalone distribution, +visit http://duncanthrax.net/pdkim/. diff --git a/src/src/pdkim/base64.c b/src/src/pdkim/base64.c index 114be2fc6..321bcaeb1 100644 --- a/src/src/pdkim/base64.c +++ b/src/src/pdkim/base64.c @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/base64.c,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /* * RFC 1521 base64 encoding/decoding * @@ -21,6 +20,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +/* $Cambridge: exim/src/src/pdkim/base64.c,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #include "base64.h" static const unsigned char base64_enc_map[64] = diff --git a/src/src/pdkim/base64.h b/src/src/pdkim/base64.h index 4676cffc0..4cd38ba6a 100644 --- a/src/src/pdkim/base64.h +++ b/src/src/pdkim/base64.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/base64.h,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /** * \file base64.h * @@ -20,6 +19,9 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* $Cambridge: exim/src/src/pdkim/base64.h,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_BASE64_H #define POLARSSL_BASE64_H diff --git a/src/src/pdkim/bignum.c b/src/src/pdkim/bignum.c index 3bb1e84b3..c1f733188 100644 --- a/src/src/pdkim/bignum.c +++ b/src/src/pdkim/bignum.c @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/bignum.c,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /* * Multi-precision integer library * @@ -28,6 +27,8 @@ * http://math.libtomcrypt.com/files/tommath.pdf */ +/* $Cambridge: exim/src/src/pdkim/bignum.c,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #include "bignum.h" #include "bn_mul.h" diff --git a/src/src/pdkim/bignum.h b/src/src/pdkim/bignum.h index a39f5c325..a62d42cbc 100644 --- a/src/src/pdkim/bignum.h +++ b/src/src/pdkim/bignum.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/bignum.h,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /** * \file bignum.h * @@ -20,6 +19,9 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* $Cambridge: exim/src/src/pdkim/bignum.h,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_BIGNUM_H #define POLARSSL_BIGNUM_H diff --git a/src/src/pdkim/bn_mul.h b/src/src/pdkim/bn_mul.h index 5f5572292..587193787 100644 --- a/src/src/pdkim/bn_mul.h +++ b/src/src/pdkim/bn_mul.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/bn_mul.h,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /** * \file bn_mul.h * @@ -34,6 +33,9 @@ * . Alpha . MIPS32 * . C, longlong . C, generic */ + +/* $Cambridge: exim/src/src/pdkim/bn_mul.h,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_BN_MUL_H #define POLARSSL_BN_MUL_H diff --git a/src/src/pdkim/pdkim.c b/src/src/pdkim/pdkim.c index f9573fa39..c70b5d4f4 100644 --- a/src/src/pdkim/pdkim.c +++ b/src/src/pdkim/pdkim.c @@ -1,12 +1,31 @@ -/* $Cambridge: exim/src/src/pdkim/pdkim.c,v 1.1.2.8 2009/03/17 16:20:13 tom Exp $ */ -/* pdkim.c */ +/* + * PDKIM - a RFC4871 (DKIM) implementation + * + * Copyright (C) 2009 Tom Kistner + * + * http://duncanthrax.net/pdkim/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* $Cambridge: exim/src/src/pdkim/pdkim.c,v 1.1.2.9 2009/04/09 07:49:11 tom Exp $ */ #include #include #include -#include #include -#include #include "pdkim.h" @@ -22,7 +41,6 @@ #define PDKIM_MAX_HEADERS 512 #define PDKIM_MAX_BODY_LINE_LEN 1024 #define PDKIM_DNS_TXT_MAX_NAMELEN 1024 -#define PDKIM_DNS_TXT_MAX_RECLEN 4096 #define PDKIM_DEFAULT_SIGN_HEADERS "From:Sender:Reply-To:Subject:Date:"\ "Message-ID:To:Cc:MIME-Version:Content-Type:"\ "Content-Transfer-Encoding:Content-ID:"\ @@ -32,7 +50,7 @@ "List-Id:List-Help:List-Unsubscribe:"\ "List-Subscribe:List-Post:List-Owner:List-Archive" - +/* -------------------------------------------------------------------------- */ struct pdkim_stringlist { char *value; void *next; @@ -45,8 +63,6 @@ struct pdkim_str { unsigned int allocated; }; - - /* -------------------------------------------------------------------------- */ /* A bunch of list constants */ char *pdkim_querymethods[] = { @@ -122,7 +138,7 @@ void pdkim_hexprint(FILE *stream, char *data, int len, int lf) { for (i=0;isig); pdkim_strfree(ctx->cur_header); @@ -471,6 +487,7 @@ pdkim_signature *pdkim_parse_sig_header(pdkim_ctx *ctx, char *raw_hdr) { sig = malloc(sizeof(pdkim_signature)); if (sig == NULL) return NULL; memset(sig,0,sizeof(pdkim_signature)); + sig->bodylength = -1; sig->rawsig_no_b_val = malloc(strlen(raw_hdr)+1); if (sig->rawsig_no_b_val == NULL) { @@ -597,7 +614,7 @@ pdkim_signature *pdkim_parse_sig_header(pdkim_ctx *ctx, char *raw_hdr) { sig->expires = strtoul(cur_val->str,NULL,10); break; case 'l': - sig->bodylength = strtoul(cur_val->str,NULL,10); + sig->bodylength = strtol(cur_val->str,NULL,10); break; case 'h': sig->headernames = strdup(cur_val->str); @@ -643,6 +660,12 @@ pdkim_signature *pdkim_parse_sig_header(pdkim_ctx *ctx, char *raw_hdr) { } *q = '\0'; + /* Chomp raw header. The final newline must not be added to the signature. */ + q--; + while( (q > sig->rawsig_no_b_val) && ((*q == '\r') || (*q == '\n')) ) { + *q = '\0'; q--; + } + #ifdef PDKIM_DEBUG if (ctx->debug_stream) { fprintf(ctx->debug_stream, @@ -836,7 +859,7 @@ int pdkim_update_bodyhash(pdkim_ctx *ctx, char *data, int len) { } /* Make sure we don't exceed the to-be-signed body length */ - if (sig->bodylength && + if ((sig->bodylength >= 0) && ((sig->signed_body_bytes+(unsigned long)canon_len) > sig->bodylength)) canon_len = (sig->bodylength - sig->signed_body_bytes); @@ -893,7 +916,7 @@ int pdkim_finish_bodyhash(pdkim_ctx *ctx) { /* If bodylength limit is set, and we have received less bytes than the requested amount, effectively remove the limit tag. */ - if (sig->signed_body_bytes < sig->bodylength) sig->bodylength = 0; + if (sig->signed_body_bytes < sig->bodylength) sig->bodylength = -1; } /* VERIFICATION --------------------------------------------------------- */ else { @@ -992,6 +1015,7 @@ int pdkim_header_complete(pdkim_ctx *ctx) { /* Traverse all signatures */ while (sig != NULL) { + pdkim_stringlist *list; /* SIGNING -------------------------------------------------------------- */ if (ctx->mode == PDKIM_MODE_SIGN) { @@ -1011,8 +1035,8 @@ int pdkim_header_complete(pdkim_ctx *ctx) { } /* Add header to the signed headers list */ - pdkim_stringlist *list = pdkim_append_stringlist(sig->headers, - ctx->cur_header->str); + list = pdkim_append_stringlist(sig->headers, + ctx->cur_header->str); if (list == NULL) return PDKIM_ERR_OOM; sig->headers = list; @@ -1025,13 +1049,14 @@ int pdkim_header_complete(pdkim_ctx *ctx) { (strncasecmp(ctx->cur_header->str, DKIM_SIGNATURE_HEADERNAME, strlen(DKIM_SIGNATURE_HEADERNAME)) == 0) ) { + pdkim_signature *new_sig; /* Create and chain new signature block */ #ifdef PDKIM_DEBUG if (ctx->debug_stream) fprintf(ctx->debug_stream, "PDKIM >> Found sig, trying to parse >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); #endif - pdkim_signature *new_sig = pdkim_parse_sig_header(ctx, ctx->cur_header->str); + new_sig = pdkim_parse_sig_header(ctx, ctx->cur_header->str); if (new_sig != NULL) { pdkim_signature *last_sig = ctx->sig; if (last_sig == NULL) { @@ -1062,7 +1087,7 @@ int pdkim_header_complete(pdkim_ctx *ctx) { /* -------------------------------------------------------------------------- */ #define HEADER_BUFFER_FRAG_SIZE 256 -int pdkim_feed (pdkim_ctx *ctx, +DLLEXPORT int pdkim_feed (pdkim_ctx *ctx, char *data, int len) { int p; @@ -1170,7 +1195,7 @@ char *pdkim_create_header(pdkim_signature *sig, int final) { goto BAIL; } } - if (sig->bodylength > 0) { + if (sig->bodylength >= 0) { if (!( pdkim_strcat(hdr,"l=") && pdkim_numcat(hdr,sig->bodylength) && pdkim_strcat(hdr,";") ) ) { @@ -1210,7 +1235,7 @@ char *pdkim_create_header(pdkim_signature *sig, int final) { /* -------------------------------------------------------------------------- */ -int pdkim_feed_finish(pdkim_ctx *ctx, pdkim_signature **return_signatures) { +DLLEXPORT int pdkim_feed_finish(pdkim_ctx *ctx, pdkim_signature **return_signatures) { pdkim_signature *sig = ctx->sig; pdkim_str *headernames = NULL; /* Collected signed header names */ @@ -1344,10 +1369,14 @@ int pdkim_feed_finish(pdkim_ctx *ctx, pdkim_signature **return_signatures) { if (sig->algo == PDKIM_ALGO_RSA_SHA1) { sha1_update(&(sha1_headers),(unsigned char *)sig_hdr,strlen(sig_hdr)); sha1_finish(&(sha1_headers),(unsigned char *)headerhash); + fprintf(ctx->debug_stream, "PDKIM [%s] hh computed: ", sig->domain); + pdkim_hexprint(ctx->debug_stream, headerhash, 20, 1); } else { sha2_update(&(sha2_headers),(unsigned char *)sig_hdr,strlen(sig_hdr)); sha2_finish(&(sha2_headers),(unsigned char *)headerhash); + fprintf(ctx->debug_stream, "PDKIM [%s] hh computed: ", sig->domain); + pdkim_hexprint(ctx->debug_stream, headerhash, 32, 1); } free(sig_hdr); @@ -1508,7 +1537,7 @@ int pdkim_feed_finish(pdkim_ctx *ctx, pdkim_signature **return_signatures) { /* -------------------------------------------------------------------------- */ -pdkim_ctx *pdkim_init_verify(int input_mode, +DLLEXPORT pdkim_ctx *pdkim_init_verify(int input_mode, int(*dns_txt_callback)(char *, char *) ) { pdkim_ctx *ctx = malloc(sizeof(pdkim_ctx)); @@ -1530,11 +1559,12 @@ pdkim_ctx *pdkim_init_verify(int input_mode, /* -------------------------------------------------------------------------- */ -pdkim_ctx *pdkim_init_sign(int input_mode, +DLLEXPORT pdkim_ctx *pdkim_init_sign(int input_mode, char *domain, char *selector, char *rsa_privkey) { pdkim_ctx *ctx; + pdkim_signature *sig; if (!domain || !selector || !rsa_privkey) return NULL; @@ -1548,13 +1578,14 @@ pdkim_ctx *pdkim_init_sign(int input_mode, return NULL; } - pdkim_signature *sig = malloc(sizeof(pdkim_signature)); + sig = malloc(sizeof(pdkim_signature)); if (sig == NULL) { free(ctx->linebuf); free(ctx); return NULL; } memset(sig,0,sizeof(pdkim_signature)); + sig->bodylength = -1; ctx->mode = PDKIM_MODE_SIGN; ctx->input_mode = input_mode; @@ -1588,19 +1619,19 @@ pdkim_ctx *pdkim_init_sign(int input_mode, #ifdef PDKIM_DEBUG /* -------------------------------------------------------------------------- */ -void pdkim_set_debug_stream(pdkim_ctx *ctx, +DLLEXPORT void pdkim_set_debug_stream(pdkim_ctx *ctx, FILE *debug_stream) { ctx->debug_stream = debug_stream; }; #endif /* -------------------------------------------------------------------------- */ -int pdkim_set_optional(pdkim_ctx *ctx, +DLLEXPORT int pdkim_set_optional(pdkim_ctx *ctx, char *sign_headers, char *identity, int canon_headers, int canon_body, - unsigned long bodylength, + long bodylength, int algo, unsigned long created, unsigned long expires) { diff --git a/src/src/pdkim/pdkim.h b/src/src/pdkim/pdkim.h index 3f7a2dfb4..df7e17e9b 100644 --- a/src/src/pdkim/pdkim.h +++ b/src/src/pdkim/pdkim.h @@ -1,11 +1,37 @@ -/* $Cambridge: exim/src/src/pdkim/pdkim.h,v 1.1.2.8 2009/03/17 21:11:56 tom Exp $ */ -/* pdkim.h */ +/* + * PDKIM - a RFC4871 (DKIM) implementation + * + * Copyright (C) 2009 Tom Kistner + * + * http://duncanthrax.net/pdkim/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* $Cambridge: exim/src/src/pdkim/pdkim.h,v 1.1.2.9 2009/04/09 07:49:11 tom Exp $ */ /* -------------------------------------------------------------------------- */ /* Debugging. This can also be enabled/disabled at run-time. I recommend to leave it defined. */ #define PDKIM_DEBUG +/* -------------------------------------------------------------------------- */ +/* Length of the preallocated buffer for the "answer" from the dns/txt + callback function. */ +#define PDKIM_DNS_TXT_MAX_RECLEN 4096 + /* -------------------------------------------------------------------------- */ /* Function success / error codes */ #define PDKIM_OK 0 @@ -53,6 +79,18 @@ typedef struct sha2_context sha2_context; #define HAVE_SHA1_CONTEXT #define HAVE_SHA2_CONTEXT +/* -------------------------------------------------------------------------- */ +/* Some concessions towards Redmond */ +#ifdef WINDOWS +#define snprintf _snprintf +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#define DLLEXPORT __declspec(dllexport) +#else +#define DLLEXPORT +#endif + + /* -------------------------------------------------------------------------- */ /* Public key as (usually) fetched from DNS */ typedef struct pdkim_pubkey { @@ -111,8 +149,9 @@ typedef struct pdkim_signature { /* (x=) Timestamp of expiry of signature */ unsigned long expires; - /* (l=) Amount of hashed body bytes (after canonicalization) */ - unsigned long bodylength; + /* (l=) Amount of hashed body bytes (after canonicalization). Default + is -1. Note: a value of 0 means that the body is unsigned! */ + long bodylength; /* (h=) Colon-separated list of header names that are included in the signature */ @@ -246,26 +285,39 @@ typedef struct pdkim_ctx { /* -------------------------------------------------------------------------- */ -/* API functions. Please see pdkim-api.txt for documentation / example code. */ +/* API functions. Please see the sample code in sample/test_sign.c and + sample/test_verify.c for documentation. +*/ + +#ifdef __cplusplus +extern "C" { +#endif -pdkim_ctx - *pdkim_init_sign (int, char *, char *, char *); +DLLEXPORT +pdkim_ctx *pdkim_init_sign (int, char *, char *, char *); -pdkim_ctx - *pdkim_init_verify (int, int(*)(char *, char *)); +DLLEXPORT +pdkim_ctx *pdkim_init_verify (int, int(*)(char *, char *)); -int pdkim_set_optional (pdkim_ctx *, - char *, char *, - int, int, - unsigned long, int, +DLLEXPORT +int pdkim_set_optional (pdkim_ctx *, char *, char *,int, int, + long, int, unsigned long, unsigned long); -int pdkim_feed (pdkim_ctx *, char *, int); -int pdkim_feed_finish (pdkim_ctx *, pdkim_signature **); +DLLEXPORT +int ppdkim_feed (pdkim_ctx *, char *, int); +DLLEXPORT +int pdkim_feed_finish (pdkim_ctx *, pdkim_signature **); -void pdkim_free_ctx (pdkim_ctx *); +DLLEXPORT +void pdkim_free_ctx (pdkim_ctx *); #ifdef PDKIM_DEBUG -void pdkim_set_debug_stream (pdkim_ctx *, FILE *); +DLLEXPORT +void pdkim_set_debug_stream(pdkim_ctx *, FILE *); +#endif + +#ifdef __cplusplus +} #endif diff --git a/src/src/pdkim/rsa.c b/src/src/pdkim/rsa.c index 7889894c6..803d9eaed 100644 --- a/src/src/pdkim/rsa.c +++ b/src/src/pdkim/rsa.c @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/rsa.c,v 1.1.2.3 2009/03/17 21:11:56 tom Exp $ */ /* * The RSA public-key cryptosystem * @@ -27,6 +26,8 @@ * http://www.cacr.math.uwaterloo.ca/hac/about/chap8.pdf */ +/* $Cambridge: exim/src/src/pdkim/rsa.c,v 1.1.2.4 2009/04/09 07:49:11 tom Exp $ */ + #include "rsa.h" #include "base64.h" diff --git a/src/src/pdkim/rsa.h b/src/src/pdkim/rsa.h index ca3b63e32..24a6531e2 100644 --- a/src/src/pdkim/rsa.h +++ b/src/src/pdkim/rsa.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/rsa.h,v 1.1.2.3 2009/03/17 21:11:56 tom Exp $ */ /** * \file rsa.h * @@ -20,6 +19,9 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* $Cambridge: exim/src/src/pdkim/rsa.h,v 1.1.2.4 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_RSA_H #define POLARSSL_RSA_H diff --git a/src/src/pdkim/sha1.c b/src/src/pdkim/sha1.c index 532097957..a5d83a3bd 100644 --- a/src/src/pdkim/sha1.c +++ b/src/src/pdkim/sha1.c @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/sha1.c,v 1.1.2.2 2009/02/24 18:43:59 tom Exp $ */ /* * FIPS-180-1 compliant SHA-1 implementation * @@ -26,6 +25,8 @@ * http://www.itl.nist.gov/fipspubs/fip180-1.htm */ +/* $Cambridge: exim/src/src/pdkim/sha1.c,v 1.1.2.3 2009/04/09 07:49:11 tom Exp $ */ + #include "sha1.h" #include diff --git a/src/src/pdkim/sha1.h b/src/src/pdkim/sha1.h index 748093cee..42624be83 100644 --- a/src/src/pdkim/sha1.h +++ b/src/src/pdkim/sha1.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/sha1.h,v 1.1.2.3 2009/03/17 14:56:55 tom Exp $ */ /** * \file sha1.h * @@ -20,6 +19,9 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* $Cambridge: exim/src/src/pdkim/sha1.h,v 1.1.2.4 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_SHA1_H #define POLARSSL_SHA1_H diff --git a/src/src/pdkim/sha2.c b/src/src/pdkim/sha2.c index 2adfb142a..8162df3e9 100644 --- a/src/src/pdkim/sha2.c +++ b/src/src/pdkim/sha2.c @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/sha2.c,v 1.1.2.1 2009/02/24 13:13:47 tom Exp $ */ /* * FIPS-180-2 compliant SHA-256 implementation * @@ -26,6 +25,8 @@ * http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf */ +/* $Cambridge: exim/src/src/pdkim/sha2.c,v 1.1.2.2 2009/04/09 07:49:11 tom Exp $ */ + #include "sha2.h" #include diff --git a/src/src/pdkim/sha2.h b/src/src/pdkim/sha2.h index 0be2d271f..347e41b2e 100644 --- a/src/src/pdkim/sha2.h +++ b/src/src/pdkim/sha2.h @@ -1,4 +1,3 @@ -/* $Cambridge: exim/src/src/pdkim/sha2.h,v 1.1.2.2 2009/03/17 14:56:55 tom Exp $ */ /** * \file sha2.h * @@ -20,6 +19,9 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* $Cambridge: exim/src/src/pdkim/sha2.h,v 1.1.2.3 2009/04/09 07:49:11 tom Exp $ */ + #ifndef POLARSSL_SHA2_H #define POLARSSL_SHA2_H