File: ChangeLog

package info (click to toggle)
libmail-dkim-perl 0.54-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 1,412 kB
  • sloc: perl: 5,855; makefile: 10
file content (1188 lines) | stat: -rw-r--r-- 51,533 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
 -- VERSION 0.54 --

2018-10-12: Marc Bradshaw <marc@marcbradshaw.net>

 * The T tag on arcseal is not required

 -- VERSION 0.53 --

2018-05-27: Marc Bradshaw <marc@marcbradshaw.net>

 * Make tests less dependent on local resolver setup
 * Add thanks to Valimail

 -- VERSION 0.52 --

2018-01-12: Marc Bradshaw <marc@marcbradshaw.net>

 * Internet connection tests were declared in the wrong order

 -- VERSION 0.51 --

2018-01-12: Marc Bradshaw <marc@marcbradshaw.net>

 * Fix for older versions of perl
 * Tests no longer fail with no internet connection

 -- VERSION 0.50 --

2017-12-16: Marc Bradshaw <marc@marcbradshaw.net>

 * Added Strict mode to DKIM verifier
 * Code formatting fixes

2017-12-14: John Levine <john.levine@standcore.com>

* Make ARC code work a lot better

* Add new arcsign.pl and arcverify.pl scripts

 -- VERSION 0.44 --

2017-10-19: Marc Bradshaw <marc@marcbradshaw.net>

* Added experimental support for ARC

 -- VERSION 0.43 --

 2017-09-20: Marc Bradshaw <marc@marcbradshaw.net>

 * Update tests for new DNS setup

 -- VERSION 0.42 --

 2017-07-29: Marc Bradshaw <marc@marcbradshaw.net>

 * Fix failing tests

 -- VERSION 0.41 --

2017-04-14: Marc Bradshaw <marc@marcbradshaw.net>

 * commit aac893fdbaa7f8ccd5d37fa7f20d1785406cda51
   Author: Marc Bradshaw <marc@marcbradshaw.net>
   Date:   Fri Mar 17 14:53:53 2017 +1100
    Avoid use of $_ in read loop
    RT 106485: Mail::DKIM::PrivateKey->load tampering $_ and <FILE>

 * commit 06934f259e392b2a3cf94560e6051d9e522d0bf3
   Author: Marc Bradshaw <marc@marcbradshaw.net>
   Date:   Fri Mar 17 14:44:44 2017 +1100
    Ensure PrivateKey file is closed properly.
    Store PrivateKey file handle in lexical variable and close it
    once we are done.
    RT 120638: Mail::DKIM::PrivateKey does not close FILE

 * commit 9e7c1c4cb78a6cb1cf396ece4379c7ed2c44c974
   Author: Marc Bradshaw <marc@marcbradshaw.net>
   Date:   Fri Feb 27 12:08:11 2015 +1100
    Allow greater control over signed headers

 * commit 8291c034dc7db4394e9df80e70b8cbe8428a38c2
   Author: Marc Bradshaw <marc@marcbradshaw.net>
   Date:   Fri Jan 23 09:54:02 2015 +1100
    Allow greater control over which headers are signed by Signer

2013-02-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (add_signature): call fetch_public_key() iff
   the signature passes a validity check;
   (finish_header): set result to 'invalid' if signature does not have a
   result
 * lib/Mail/DKIM/Signature.pm (check_protocol): now returns a list of
   supported protocols, or an empty list if no supported protocols found.

2013-02-06: Jason Long <jlong@messiah.edu>
 * t/corpus/good_83176.txt: add new email to test suite; this email contains
   a signature with a LIST of query methods, one of which is good, but the
   rest should be quietly ignored. This test currently fails.
 * lib/Mail/DKIM/Signature.pm (check_protocol): support multiple methods being
   specified in signatures q= tag. We look for dns/txt to occur anywhere in
   the field; all other values are ignored.

 -- VERSION 0.40 --

2013-02-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: revert change that enabled EDNS0 by default;
   provide enable_EDNS0() subroutine for enabling EDNS0
 * scripts/dkimverify.pl: sample verification script updated to enable
   EDNS0 before performing the verification

2013-02-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: set udppacketsize to 1240, which is small enough
   that packet fragmentation will not normally occur; use DNS txtdata()
   method on versions of Net::DNS that support it. (This patch contributed
   by Mark Martinec.)

2013-02-04: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: set default udppacketsize to 2048, which seems
   to be the suggested value to use in the Net::DNS documentation.

2013-02-04: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: avoid an 'uninitialized value' warning when
   signature being verified is missing a d= tag; accept a selector name
   of '0' rather than treating it as if the s= tag was missing
 * lib/Mail/DKIM/PublicKey.pm: sanity check selector/domain before
   attempting a DNS query (this fixes another 'uninitialized value' warning)
 * lib/Mail/DKIM/Signature.pm: avoid an 'uninitialized value' warning when
   calling identity() and d= tag is missing

2013-02-04: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: construct a default RESOLVER that sets
   udppacketsize to 1280. This enables EDNS0 (extension mechanism for DNS),
   allowing Mail::DKIM to handle larger keys.

2012-11-28: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: replace use of query() with send(), since it
   is never appropriate to append the default domain, and using send()
   paves the way to using bgsend() in the future for async dns.
   Contributed by Mark Martinec.
 * lib/Mail/DKIM/DNS.pm: add global variable $RESOLVER which the
   user can override if they want to specify options to Net::DNS.

2012-11-28: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/MessageParser.pm: rewrite of line parsing logic to
   avoid unnecessary copying of the internal buffer. This replaces use
   of $self->{buf} with ${$self->{buf_ref}} in many places. Patch
   contributed by Mark Martinec.

2012-11-28: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: throw proper error message if an invalid
   algorithm is requested
 * lib/Mail/DKIM/PublicKey.pm: further refinement to fix Perl warning
   about use of uninitialized value

2011-04-21: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: fix a Perl warning about use of an
   uninitialized value (reported by hsk@fli-leibniz.de)

 -- VERSION 0.39 --

2010-11-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: fix an unusual error message given when
   no Key argument has been specified and it is time to load the
   key

2010-06-11: Jason Long <jlong@messiah.edu>
 * t/signer_dk.t: create regression tests for DomainKeys signature
   generation

2010-06-11: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm, Signer.pm, Algorithm/Base.pm
   (finish_header): provide reference to entire list of headers at
   completion of header, so that canonicalizers do not need to store
   their own copy of the header
 * lib/Mail/DKIM/Canonicalization/DkimCommon.pm: do not store header as
   parsed, rather only canonicalize header within finish_header()
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm: do not store header as
   parsed, rather only canonicalize header within finish_header()
 * lib/Mail/DKIM/Canonicalization/Base.pm (finish_header): change API
 * t/simple_canonicalization.t: update for the API change of
   Canonicalization/Base.pm

2010-06-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: prevent abuse- if a message has more than
   50 signatures headers, we start ignoring them (it's unreasonable for
   a message to have more than a very few signature headers).

2010-04-08: Jason Long <jlong@messiah.edu>
 * t/verifier.t: wrote some tests for DomainKey signatures with empty,
   missing, or invalid q= tag values
 * lib/Mail/DKIM/Verifier.pm: move use of check_signature_identity() out
   of finish_header() and into check_and_verify_signature(); this fixes
   an issue with getting wrong error codes when q= tag is broken.

 -- VERSION 0.38 --

2010-03-31: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkSignature.pm, Signature.pm: avoid calling lc() on
   an undefined value (this generates warnings in Perl 5.12.x).
   Patch contributed by Mark Martinec.

2010-03-01: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PrivateKey.pm (load): fix bug where a private key file
   named '0' could not be loaded

2010-03-01: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkSignature.pm (new): accept Key parameter when
   constructing a DomainKey signature object

2010-02-27: Jason Long <jlong@messiah.edu>
 * t/external_signer.t: test use of an alternate object for Key
   during a "sign" operation

2010-02-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: document use of an alternate object for
   PrivateKey objects

2010-02-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: import PrivateKey.pm in this module,
   rather than in the Algorithm modules

2010-02-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PrivateKey.pm: document the sign_digest() method
 * lib/Mail/DKIM/Algorithm/*: use sign_digest() rather than
   sign_sha1_digest()

2010-01-23: Jason Long <jlong@messiah.edu>
 * t/public_key.t: test that DNS failure reason is given, when
   DNS returns no results
 * lib/Mail/DKIM/DNS.pm: bugfix (introduced by async_dns branch):
   preserve $@ in case of no error

2010-01-23: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/{DNS,Signature,PublicKey,Policy}.pm: merged my
   "async dns" branch

--BEGIN "ASYNC DNS" branch
2009-07-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm: new fetch_async method, seems to work

2009-07-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: new fetch_public_key method,
   which starts an asynchronous query for the public key
   referenced by this signature; redesign get_public_key to
   know how to complete the query

2009-07-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: new fetch_async method: starts a
   query and returns a subref that when called will complete the
   query

2009-07-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: new query_async method: starts a query and
   returns a subref that when called will complete the query
--END "ASYNC DNS" branch

2009-12-14: Jason Long <jlong@messiah.edu>
 * MANIFEST: include sample_mime_lite.pl script in tarball

2009-09-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: restart timer after a DNS lookup; based on a
   patch contributed by Mark Martinec

 -- VERSION 0.37 --

2009-09-02: Jason Long <jlong@messiah.edu>
 * t/adsp.t: a test script for checking AuthorDomainPolicy.pm
 * lib/Mail/DKIM/AuthorDomainPolicy.pm: use d= tag not i= tag when
   checking for first-party signatures; fix for testing() method
   not found error; fix for "all" and "discardable" not doing the
   right thing
   
2009-08-14: Jason Long <jlong@messiah.edu>
 * sample_mime_lite.pl: a sample script showing how to use Mail::DKIM
   with MIME::Lite

2009-07-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm: revert ability for subclasses to
   override behavior of no-results DNS query
 * lib/Mail/DKIM/AuthorDomainPolicy.pm: if ADSP record is not found,
   check whether the domain itself exists
 * t/policy.t: add a test for the ADSP record causing a DNS error
   but the domain itself still existing

2009-07-10: Jason Long <jlong@messiah.edu>
 * t/public_key.t: refine the testing for DNS timeouts and SERVFAIL
   errors
 * t/policy.t: add some tests for DNS failures during policy queries
 * lib/Mail/DKIM/AuthorDomainPolicy.pm: more explicit documentation
   describing how DNS errors (and NXDOMAIN results) are handled

2009-07-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm: allow subclasses to override behavior
   when DNS query returns no records
 * lib/Mail/DKIM/AuthorDomainPolicy.pm: when DNS query returns no
   records, check the domain itself and possibly die.

2009-07-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: wasn't using the right API to get
   the ADSP policy

2009-07-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/AuthorDomainPolicy.pm, DkimPolicy.pm: changed the
   format of how methods are documented

2009-07-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/AuthorDomainPolicy.pm, DkimPolicy.pm: add a
   description of the class to the documentation

2009-06-09: Jason Long <jlong@messiah.edu>
 * scripts/dkimsign.pl: fix typo in the debugging output

2009-06-09: Jason Long <jlong@messiah.edu>
 * t/signer.t: test case for bug 2803465: space between header field
   name and colon cause signature to skip that header
 * lib/Mail/DKIM/Common.pm (add_header): fix regexp so that a space
   between the header field name and the colon is not treated as part
   of the header field name (issue #2803465)

2009-06-02: Jason Long <jlong@messiah.edu>
 * t/policy.t: test for the as_string() method

 -- VERSION 0.36 --

2009-06-02: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm (as_string): restore this method which was
   accidentally removed in 0.34.

 -- VERSION 0.35 --

2009-05-22: Jason Long <jlong@messiah.edu>
 * t/signer.t: add a test-case of a message with 10000's of blank
   lines; this seems to DoS the canonicalization routines
 * lib/Mail/DKIM/Canonicalization/{simple,relaxed,dk_simple}.pm:
   fix for bug reported on amavis-user list, patch provided by
   Mark Martinec. Thanks!

 -- VERSION 0.34 --

2009-05-20: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM.pm: rewrite the description section of the Mail::DKIM
   man page
 * lib/Mail/DKIM/Verifier.pm: document fetch_author_domain_policies()
 * Makefile.PL: release 0.34

2009-05-18: Jason Long <jlong@messiah.edu>
 * t/signer.t: add a test-case of a message without a header
 * lib/Mail/DKIM/Common.pm (init): initialize variables used by methods
   in this class; fixes RT.CPAN.ORG bug #46179

2009-04-04: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (fetch_author_domain_policies): new method
   for fetching ADSP records for a particular message

2009-04-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkPolicy.pm: moved the DomainKeys-specific policy
   stuff from Policy.pm to here
 * t/policy.t: change tests to use DkPolicy instead of Policy
 * lib/Mail/DKIM/Verifier.pm (fetch_sender_policy): use DkPolicy
   class instead of Policy class

2009-04-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/AuthorDomainPolicy.pm: first draft of ADSP support

2009-04-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: rename fetch_policies() to policies()
 * scripts/dkimverify.pl: replace use of fetch_policies() with
   policies()

2009-03-30: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: document a "temperror" result, which
   I will soon provide support for

2009-03-30: Jason Long <jlong@messiah.edu>
 * t/verifier.t: add support for testing DNS failures; add tests for
   detail messages of public key errors
 * t/verifier.t: add some tests of DNS failures

2009-03-30: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm (get_public_key): remember errors and
   always report them the same way

2009-03-30: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm, DkPolicy.pm: new method "name" to give a
   short name of the policy
 * scripts/dkimverify.pl: use the new fetch_policies() api to list
   the results of applicable policies

2009-03-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (fetch_policies): new method for fetching
   all applicable policies, and is guaranteed not to "die".

2009-03-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm: use a global variable to specify what Timeout
   to use
 * lib/Mail/DKIM/DNS.pm: detect DNS resolver errors and report them
 * t/public_key.t: test various DNS failures

2009-03-10: Jason Long <jlong@messiah.edu>
 * t/simple_canonicalization.t: fix simple-canonicalization test, which
   broke when I removed support for prestandardized DKIM signatures

2009-03-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/*, lib/Mail/DKIM/Canonicalization/*,
   lib/Mail/DKIM/Signature.pm, t/verifier.t: remove support and tests
   for the prestandardized DKIM signatures (issue #1871948)
 * Makefile.PL: bump version

 -- VERSION 0.33 --

2009-03-10: Jason Long <jlong@messiah.edu>
 * Makefile.PL: release "0.33"

2008-11-19: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm, DkSignature.pm (DEFAULT_PREFIX): new
   method which determines what prefix to use in as_string, prettify,
   etc.
 * lib/Mail/DKIM/KeyValueList.pm (wrap): when splitting the h= field,
   only allow breaks prior to ':' symbols

2008-11-19: Jason Long <jlong@messiah.edu>
 * t/signature.t: further checks for prettify signatures (found a case
   where the new code caused a regression)
 * lib/Mail/DKIM/TextWrap.pm (flush): remember to update cur position
   when flushing text; use a "may_break" internal variable to know
   whether a linebreak is acceptable; other fixes
 * t/textwrap.t: another test case illustrating failure in TextWrap.pm
 * lib/Mail/DKIM/KeyValueList.pm (wrap): call flush() right after the
   ';' character; this is a further fix for #2257046.

2008-11-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/TextWrap.pm (flush): new method to explicitly allow a
   break at the current point in the string
 * lib/Mail/DKIM/KeyValueList.pm (wrap): call flush() whenever changing
   TextWrap parameters (this should complete the fix for #2257046)

2008-11-06: Jason Long <jlong@messiah.edu>
 * t/signature.t: test Mark Martinec's bad-signature-wrapping bug

2008-11-06: Jason Long <jlong@messiah.edu>
 * t/verifier.t: use a "fake" dns implementation, so that this test
   will pass no matter the user's state of dns

2008-11-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DNS.pm (query): changed API so that it now returns
   a list of Net::DNS::RR objects, rather than a Net::DNS::Packet object.
 * lib/Mail/DKIM/Policy.pm: update for the change to the DNS.pm api.
 * lib/Mail/DKIM/PublicKey.pm: update for the change to the DNS.pm api.

2008-11-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm (encode_qp, decode_qp): suppress a warning
   about an uninitialized value
 * lib/Mail/DKIM/Common.pm (message_originator, message_sender): if a
   From/Sender line is present, but blank, still return a valid object
   (issue #2126559)
 * t/public_key.t: new test to check for DNS problems

 -- VERSION 0.32 --

2008-05-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm: when populating a DomainKey
   signature's identity, record where the identity came from
 * lib/Mail/DKIM/DkSignature.pm (identity_source): make the source of
   the identity (i.e. sender header or from header) available as a
   method

2008-05-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm (identity): do quoted-printable encoding/
   decoding for the i= tag (issue #1839015)
 * t/corpus/good_qp_1.txt, good_qp_2.txt, good_qp_3.txt: three test
   files for identities using quoted-printable encoding

2008-04-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: documentation for get_tag()

2008-04-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm (check_granularity): do case-sensitive
   comparison (issue #1938112)

2008-04-14: Jason Long <jlong@messiah.edu>
 * t/corpus/badkey_12.txt: fix g= case-sensitivity test so it won't give
   false positives on dkim-milter
 * t/corpus/badkey_13.txt: test that the verifier checks granularity
   against i= tag, not the From header

2008-04-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm, rsa_sha1.pm: replace use of
   Digest::SHA1 with equivalent Digest::SHA
 * Makefile.PL: remove requirement for Digest::SHA1

2008-04-14: Jason Long <jlong@messiah.edu>
 * Makefile.PL: bump version

 -- VERSION 0.31 --

2008-04-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PrivateKey.pm: allow Cork argument to new() (#1879209)

2008-04-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkimPolicy.pm: fix "use of uninitialized value in string"
   errors
 * lib/Mail/DKIM/Signature.pm: provide public API to public-key object of
   signatures, e.g. so its flags can be accessed (issue #1879215);
   also, if an error occurs fetching the public-key record, the failure
   is cached so it won't get tried again
 * lib/Mail/DKIM/Signer.pm: document how to create a DomainKey-Signature

2008-02-20: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/TextWrap.pm: implement BreakBefore option;
   provided a bunch of documentation for this module
 * t/textwrap.t: tests new functionality of TextWrap
 * lib/Mail/DKIM/KeyValueList.pm: colon-separated lists are now "wrapped"
   with colons appearing at the beginning of the next line instead of
   at the end of the current line (hoping this will fix #1868648)

2008-02-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: conserve space by omitting "c=simple"
   and "q=dns/txt" (#1878518)

2008-02-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm, DkimCommon.pm:
   bugfix for issue #1878954 (undef value used as an ARRAY ref)
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm: some cleanup,
   possible bugfix for verifying message with two+ DomainKey signatures
 * lib/Mail/DKIM/Verifier.pm: allow caller of fetch_author_policy() to
   specify domain (#1879197)
 * lib/Mail/DKIM/PrivateKey.pm: cleanup- indentation style;
   throw error on load() if missing argument

2008-01-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkimPolicy.pm, Policy.pm, PublicKey.pm, Verifier.pm:
   fix parsing regexes used to split email address into localpart and
   domain (issue #1878994)

2008-01-10: Jason Long <jlong@messiah.edu>
 * Makefile.PL: bump version
 * lib/Mail/DKIM/Signature.pm: make sure all public key problems are
   prefixed with "public key:" (most were already, see below for actual
   changes)
 * lib/Mail/DKIM/PublicKey.pm: since Signature.pm is providing the "public
   key:" prefix, it can be omitted in PublicKey.pm error messages
 * lib/Mail/DKIM/Verifier: the following result_detail messages have changed:
     "no public key available" => "public key: not available"
     "key value list syntax error" => "syntax error"
                                   or "public key: syntax error"
 * t/verifier.t: test that "public key" is mentioned

 -- VERSION 0.30.1 --

2008-01-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/*: implement wants_pre_signature_headers()
   for each algorithm
 * lib/Mail/DKIM/Verifier.pm: if the algorithm "wants_pre_signature_headers",
   then feed headers found prior to the signature to the
   signature-specific algorithm doing the verification. This fixes an
   issue where signatures from cisco.com fail to verify (reported by
   Mark Martinec).

 -- VERSION 0.30 --

2007-12-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (is_subdomain): do case-insensitive
   comparison
 * t/corpus/good_dk_7.txt: tests DK signature with domain names that
   differ only in case
 * t/corpus/good_rfc4871_4.txt: tests DKIM signature with i= and d=
   contain domain names differing in case
 * t/corpus/badkey_12.txt: tests public key where i=JLong, g=jl*ng

2007-12-07: Jason Long <jlong@messiah.edu>
 * t/verifier.t: three new DK tests
 * t/corpus/good_dk_6.txt: tests DK signature without h= tag
 * t/corpus/bad_dk_2.txt: tests DK signature w/o h= tag, Sender has
   been added
 * t/corpus/dk_multiple_1.txt: tests two DK signatures (with different
   domains) in a single message... both should pass
 * Makefile.PL: version bump

2007-12-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm, lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm,
   lib/Mail/DKIM/Canonicalization/DkCommon.pm:
   domainkeys: determine identity from algorithm object.  Currently the
   DomainKeys identity is determined by the Verifier.  It is
   theoretically possible for two different DomainKeys signatures on
   the same message to have different identities.  (This happens when
   one DomainKey signature includes a Sender header, and the other one
   does not.) This patch moves the determination of identity to the
   algorithm object.

2007-12-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm, lib/Mail/DKIM/Common.pm: initialize
   signatures early.  This patch makes Mail::DKIM::Verifier initialize
   and check the signature object as soon as it is parsed, and
   subsequent headers are fed into the algorithm as they are read,
   instead of waiting for the end of header.
 * lib/Mail/DKIM/Verifier.pm: fix DK identity.  The previous patch broke
   identity-checking for DomainKeys signatures.  This patch moves some
   things around so that identity checking still works.

2007-12-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (add_signature): changed to take a
   signature object, instead of an unparsed header line

2007-11-21: Jason Long <jlong@messiah.edu>
 * t/corpus/bad_dk_2.txt renamed to dk_headers_2.txt: revert this
   rename from earlier... the message should "pass" after
   all (the Sender header was not part of the signature)

2007-11-21: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: provide documentation for Key parameter
 * lib/Mail/DKIM/PrivateKey.pm: created documentation for this package
 * lib/Mail/DKIM/Signature.pm: implement Key parameter for constructor,
   and key() method to get/set the private key

2007-11-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: for DomainKeys signatures, use the message
   sender as the identity
 * lib/Mail/DKIM/DkSignature.pm: allow verifier to supply the signing
   identity
 * lib/Mail/DKIM/Verifier.pm, PublicKey.pm: hack for allowing
   DomainKeys signatures to use public keys with empty g= tags

2007-11-14: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm, Signer.pm: update documentation for
   message_sender() and message_originator() methods, which are now
   guaranteed to return an object
 * lib/Mail/DKIM/Common.pm (message_sender, message_originator):
   always return a Mail::Address object, even if the relevant headers
   were not found
 * t/corpus/dk_headers_2.txt renamed to bad_dk_2.txt: it turns out this
   message should've been failing all along, since the Sender header
   doesn't match the domain of the signature
 * lib/Mail/DKIM/Verifier.pm: slight change to the "unsupported version"
   detail message (don't want nested parenthesis)

2007-11-14: Jason Long <jlong@messiah.edu>
 * t/corpus/goodkey_4.txt: tests signature with i=a@b, public key implied g=
 * lib/Mail/DKIM/PublicKey.pm (check_granularity): fixed broken
   ends-with check, reported by Mark Martinec
 * t/corpus/good_dk_3.txt, good_dk_4.txt, good_dk_5.txt:
   these files test DomainKeys signatures with g= values in the public keys
 * t/corpus/bad_dk_1.txt: this one should fail, since the signature
   domain does not match the From/Sender header
 * scripts/dkimsign.pl: added option to override signature's d= tag
 * t/corpus/badkey_11.txt: tests a valid, but unmatched h= in public key

2007-11-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Canonicalization/relaxed.pm,
   lib/Mail/DKIM/Canonicalization/nowsp.pm,
   lib/Mail/DKIM/Canonicalization/DkCommon.pm,
   lib/Mail/DKIM/Canonicalization/dk_simple.pm,
   lib/Mail/DKIM/Canonicalization/simple.pm,
   lib/Mail/DKIM/Canonicalization/dk_nofws.pm,
   lib/Mail/DKIM/Canonicalization/DkimCommon.pm,
   lib/Mail/DKIM/MessageParser.pm:
   more speed-up optimizations by Mark Martinec, now multiple lines
   at once can be fed into the canonicalization bits

2007-11-08: Jason Long <jlong@messiah.edu>
 * Makefile.PL, others: version bump to 0.30

2007-11-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: minor doc edit
 * scripts/dkimsign.pl: generate "pretty" signatures;
   die on unrecognized signature type

2007-11-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/Base.pm: cleanup (delete commented-out code)
 * lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm (finish_message): fix bug
   where DomainKeys signatures were not "pretty",
   reported by Byung-Hee HWANG.

2007-11-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: allow Timestamp to be specified to new()
 * lib/Mail/DKIM/Signer.pm: allow Timestamp to be specified to new(),
   requested by Mark Martinec
 * t/signer.t: test timestamp creation

2007-11-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Canonicalization/simple.pm,
   lib/Mail/DKIM/Canonicalization/Base.pm,
   lib/Mail/DKIM/MessageParser.pm: speedup optimizations contributed
   by Mark Martinec.
 * lib/Mail/DKIM/Canonicalization/dk_simple,pm
   lib/Mail/DKIM/Canonicalization/relaxed.pm: more speed up optimizations
   by Mark Martinec.

 -- VERSION 0.29 --

2007-11-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: signatures() is now public

2007-10-30: Jason Long <jlong@messiah.edu>
 * t/corpus/good_rfc4871_3.txt: to test extra tags in signature
 * scripts/dkimsign.pl: allow user to specify arbitrary extra tags for
   putting in the signature
 * lib/Mail/DKIM/MessageParser.pm: make "not implemented" messages
   more helpful
 * t/corpus/badkey_10.txt: to test key with t=s
 * lib/Mail/DKIM/Verifier.pm: allow check_granularity() to return different
   detail messages; describe two additional result_detail possibilities
 * lib/Mail/DKIM/PublicKey.pm (check_granularity): check for empty g= value;
   check for subdomain usage;
   (subdomain_flag): helper method to look for "s" in flags
   (flags): return default value if no t= tag

2007-10-26: Jason Long <jlong@messiah.edu>
 * t/corpus/badkey_9.txt: to test empty g= in selector
 * t/corpus/ignore_8.txt: to test bad i= value in signature
 * lib/Mail/DKIM/Verifier.pm: check signature identity value

2007-10-24: Jason Long <jlong@messiah.edu>
 * t/corpus/badkey_8.txt, ignore_5.txt, ignore_6.txt: fix signature so
   it would verify if not for the flaw in the public key
 * scripts/dkimsign.pl: allow key protocol to be specified on command
   line
 * lib/Mail/DKIM/Verifier.pm: update documentation on possible error
   codes
 * lib/Mail/DKIM/PublicKey.pm: cleanup error code

2007-10-24: Jason Long <jlong@messiah.edu>
 * t/corpus/badkey_*.txt: changed subjects to indicate which test it is
 * t/corpus/badkey_7.txt, badkey_8.txt, goodkey_1.txt, goodkey_2.txt,
   goodkey_3.txt: additional tests of public key features
 * t/corpus/verifier.t: test the new test messages
 * lib/Mail/DKIM/Verifier.pm (check_public_key): check key granularity
   and report the problem if it doesn't match
 * lib/Mail/DKIM/PublicKey.pm (check_granularity): a method for testing
   the granularity
   (granularity): return the default value of '*' if g= not defined
 * scripts/dkimsign.pl: ability to set i= tag from command-line

2007-10-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm (check_signature): do signature version check
   here
   (finish_header): report invalid signature details to the signature
   object
   (signatures): return all parsed signatures, not just "valid" signatures
 * lib/Mail/DKIM/Signature.pm: some misc. cleanup
   (check_version): version check is now a separate method, rather than
   being part of parse()
 * lib/Mail/DKIM/DkSignature.pm (check_version): always true
 * t/corpus/multiple_2.txt: a message testing multiple signatures with
   different results
 * t/verifier.t: verify that each signature's results are available and
   correct

2007-10-24: Jason Long <jlong@messiah.edu>
 * t/corpus/ignore_7.txt: a message with an expired signature
 * lib/Mail/DKIM/Signature.pm: recognize Expiration as a parameter
 * scripts/dkimsign.pl: make it possible to create a signature with an
   x= tag
 * t/verifier.t: test ignore_7.txt message, should "ignore"
 * lib/Mail/DKIM/Verifier.pm: check signature expiration when verifying
 * lib/Mail/DKIM/Signature.pm (check_expiration): new method

2007-10-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: use "Key" property instead of "private" to
   store the private key; new methods key() and key_file(); allow each
   signature to have its own private key
 * t/signer_policy.t: test specifying a key file in a policy

2007-10-04: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/MessageParser.pm: return nonzero for PRINT and CLOSE
 * lib/Mail/DKIM/DkSignature.pm: make expiration() for DomainKey-Signature
   behave more compatibly with expiration() for DKIM-Signature
 * lib/Mail/DKIM/Verifier.pm: remove dependency on Error module
 * README: what I'm interested in if make test fails
 * lib/Mail/DKIM/Signer.pm: fix bug reported by dairiki, who noticed that
   the Signer class ignored the signature-specified algorithm when
   building the algorithm object
 * scripts/dkimsign.pl: update POD a bit
 * scripts/dkimverify.pl: add POD
 * lib/Mail/DKIM/Canonicalization/Base.pm, Algorithm/Base.pm:
   add see also, author, copyright sections to POD
 * lib/Mail/DKIM/Algorithm/rsa_sha1.pm, rsa_sha256.pm: remove useless pod
 * ...and others...: inline documentation (POD) cleanup

2007-10-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm: attempt at making the
   header handling algorithm easier to understand
 * t/signer.t: test case for unreadable private key
 * lib/Mail/DKIM/PrivateKey.pm: die if unable to open private key file
 * lib/Mail/DKIM/Signer.pm: no more need for a separate existance check
   on the private key filename
 * lib/Mail/DKIM/Signature.pm: allow Identity to be specified in new()
 * lib/Mail/DKIM/Signer.pm: allow Identity to be specified in new()
 * t/signer.t: test that specifying Identity works

2007-10-02: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm: there are some varying
   opinions about how to verify DomainKey-signed messages when there is
   an h= tag and the headers are in a different order... this is an
   attempt at making our verifier more compatible with other
   implementations
 * dk_headers.txt: some notes on multiple-occuring headers

2007-09-06: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm (get_lookup_name): new method that determines
   the name of the record to lookup
 * lib/Mail/DKIM/DkimPolicy.pm: no longer need to override fetch(), now
   it just overrides get_lookup_name()

 -- VERSION 0.28 --

2007-07-31: Jason Long <jlong@messiah.edu>
 * Makefile.PL: OpenSSL 0.23 segfaults on certain signatures, so
   the requirement is now Crypt::OpenSSL::RSA 0.24 or better
 * lib/Mail/DKIM/KeyValueList.pm: don't split the header in the middle
   of a tag name

 -- VERSION 0.27 --

2007-07-25: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm (identity_matches): new method to help
   comparing a From/Sender address with the signature identity
 * lib/Mail/DKIM/DkimPolicy.pm, Policy.pm: use identity_matches function

2007-07-18: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: changed fetch_policy() back to
   fetch_author_policy(); added fetch_sender_policy();
   save results for each signature
 * lib/Mail/DKIM/Policy.pm: now implements just Dk policies
 * lib/Mail/DKIM/DkimPolicy.pm: a new module for DKIM signing practices
 * lib/Mail/DKIM/Signature.pm: can now get/set the verification result
   for each signature
 * scripts/dkimsign.pl: handle DOS-formated input
 * scripts/dkimverify.pl: show multiple signatures' results; show
   both policy results

2007-06-11: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: public_key no longer available as a
   verifier property; use eval block instead of try...otherwise;
   experimental signatures() method
 * lib/Mail/DKIM/Verifier.pm: added description section to Perldocs;
   replaced a couple try...otherwise blocks with eval blocks

2007-06-08: Jason Long <jlong@messiah.edu>
 * policies.txt: some thoughts on dealing with two different types of
   policy records
 * lib/Mail/DKIM/Policy.pm: default() is now a private class method
 * lib/Mail/DKIM/PublicKey.pm: moved DNS query to DNS.pm
 * lib/Mail/DKIM/Policy.pm: moved DNS query to DNS.pm
 * lib/Mail/DKIM/DNS.pm: new module that does the common DNS lookups

2007-06-07: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Common.pm: change "parse Mail::Address" to my preferred
   "Mail::Address->parse" style
 * t/policy.t: test policy lookup by email address instead of domain;
   test policy lookups on a few well known domains
 * lib/Mail/DKIM/Verifier.pm: minor doc changes; renamed
   fetch_author_policy() to fetch_policy(); fetch_author_policy still
   works for backward compatibility
 * lib/Mail/DKIM/Policy.pm: allow lookups given sender/from addresses
   (location): new method to determine where the policy came from

2007-06-05: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm: create the default policy only once;
   (is_implied_default_policy): new method to check whether the policy
   was explicit or implied
   (fetch): get policy record at the Yahoo!-DomainKeys-defined location,
   rather than the location in the not-yet-finished DKIM SSP spec.
 * t/policy.t: test is_implied_default_policy method

 -- VERSION 0.26 --

2007-05-24: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: accept and use v=1 tag instead of v=0.5
 * lib/Mail/DKIM/Policy.pm: oops, left a syntax error in here
 * t/signer.t: new expected signature value, since signature now has v=1

2007-05-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: simplify error handling in fetch()
 * lib/Mail/DKIM/Policy.pm: simplify error handling in fetch()

 -- VERSION 0.25 --

2007-05-10: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/KeyValueList.pm: separator should be "\015\012" not "\n";
   allow splitting on whitespace in a colon-separated list value
 * Makefile.PL: it seems version 0.22 or better is required of
   Crypt::OpenSSL::RSA

2007-05-01: Jason Long <jlong@messiah.edu>
 * t/signature.t: test prettify_safe()
 * lib/Mail/DKIM/TextWrap.pm: new wrapping module to help with prettifying
   the signature
 * lib/Mail/DKIM/KeyValueList.pm (wrap): new method to help wrap the
   signature
 * lib/Mail/DKIM/Signature.pm: wrap the signature
 * lib/Mail/DKIM/Algorithm/Base.pm: oops, prettify() should only be called
   when we're _making_ the signature
 * lib/Mail/DKIM/KeyValueList.pm (wrap): only do something if TextWrap
   has been loaded (no longer automatically load it)
 * lib/Mail/DKIM/Signature.pm (prettify): better default value for Start

2007-04-16: Jason Long <jlong@messiah.edu>
 * t/signature.t: test that prettify() doesn't choke
 * lib/Mail/DKIM/Algorithm/Base.pm: call prettify() before hashing the
   signature header
 * lib/Mail/DKIM/Signer.pm: call prettify_safe() after generating the
   signature data
 * lib/Mail/DKIM/Signature.pm: stubs for prettify() and prettify_safe()
 * lib/Mail/DKIM/KeyValueList.pm: parse() can now be called on an existing
   key-value-list to regenerate the tag data from a string

2007-04-15: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: bug fix- if Net::DNS caused an exception,
   there was a race condition for resetting the alarm
 * lib/Mail/DKIM/Signer.pm: limit which headers are signed
 * t/signer.t: test that undesirable headers are not signed

 -- VERSION 0.24 --

2007-03-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm, lib/Mail/DKIM/Signature.pm,
   lib/Mail/DKIM/KeyValueList.pm: fix for linebreaks in public key data;
   provided by Mark Martinec.
 * lib/Mail/DKIM/Signature.pm: fix default value q=dns/txt; this fixes a bug
   for DKIM signatures without q= tags
 * t/verifier.t: added six new tests that test problems with the public key
   (e.g. revoked, syntax, etc.)

 -- VERSION 0.23 --

2007-02-22: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: catch certain OpenSSL errors; tweak
   diagnostics
 * lib/Mail/DKIM/Verifier.pm: changed OpenSSL error catching code to
   match that found in PublicKey; document more possible diagnostic codes
 * lib/Mail/DKIM/Signature.pm: tweaked diagnostics for missing public key
 * Makefile.PL: check for Test::Simple, which is required for `make test'

2007-02-21: Jason Long <jlong@messiah.edu>
 * t/signer_policy.t: signature should still work even if no value is
   returned from signer policy
 * t/signer.t: now uses v=0.5 signature, which changes the signature
 * t/verifier.t: added three tests of empty body messages
 * lib/Mail/DKIM/Signer.pm: fixed bug where if signer policy was a
   sub ref, and didn't return a true value, the message would get skipped
 * lib/Mail/DKIM/Canonicalization/simple.pm: argh, hack for handling
   empty body
 * lib/Mail/DKIM/MessageParser.pm: fixed bug in handling of messages
   without bodies
 * lib/Mail/DKIM/Signature.pm: output v=0.5 signatures now
 * scripts/dkimsign.pl: new --binary option to disable line-ending conversion

2007-02-19: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/DkSignature: provide default value for a= tag
   (thanks to mark.martinec@ijs.si for the patch)
 * t/corpus/good_dk_2.txt: test for missing q= and a= tags on DomainKey
   signature

2007-02-09: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm, DkSignature.pm: better diagnostic messages;
   allow missing q= tag for domainkey signatures
   (thanks to mark.martinec@ijs.si for the patch)

 -- VERSION 0.22 --

2007-01-19: Jason Long <jlong@messiah.edu>
 * t/verifiter.t: relaxed the OpenSSL check a little more
 * DKIM.pm, README, others: updated copyright to include 2007;
   updated abstract to include DomainKeys; updated version number

2007-01-19: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Verifier.pm: in case of unsupported algorithm,
   canonicalization method, or key protocol, list the bad protocol
   in the error message to make diagnosing easier
 * lib/Mail/DKIM/DkSignature.pm: fix a use-of-undefined-scalar bug

2007-01-17: Jason Long <jlong@messiah.edu>
 * t/verifier.t: fixed testing bug that was too strict about what
   error message OpenSSL generates
 * lib/Mail/DKIM/Verifier.pm: handle OpenSSL panic message better

 -- VERSION 0.21 --

2006-11-27: Jason Long <jlong@messiah.edu>
 * t/verifier.t: test domainkey message with trailing blank line
 * lib/Mail/DKIM/Canonicalization/dk_nofws.pm: fixed bug where DomainKey-
   signed message with trailing blank line was not canonicalized correctly,
   reported by Mark Martinec.

2006-11-13: Jason Long <jlong@messiah.edu>
 * t/verifier.t: test invalid signature length
 * lib/Mail/DKIM/Verifier.pm: fixed bug where OpenSSL error was not
   reported by moved "local $@" outside try block, thanks to Mark Martinec
   for finding this; detect OpenSSL error and clean up the error message

 -- VERSION 0.20 --

2006-10-24: Jason Long <jlong@messiah.edu>
 * t/signer_policy.t, t/signer.t: use new() instead of new_object()
 * lib/Mail/DKIM/Algorithm/Base.pm: allow debugging body canonicalization
 * lib/Mail/DKIM/MessageParser.pm: removed problematic check for
   "control characters"
 * scripts/dkimsign.pl: document --type argument; replace signer policy class
   with signer policy subroutine

2006-10-23: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm: bugfix - signatures weren't setup correctly when
   policy built the signature
 * lib/Mail/DKIM/Signature.pm: bugfix - empty headerlist should return empty
   list
 * lib/Mail/DKIM/Canonicalization/Base.pm: moved support for Debug_Canonicalization
   here from Algorithm/*
 * lib/Mail/DKIM/Algorithm/Base.pm: removed Debug_Canonicalization support
 * lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm: removed Debug_Canonicalization support

2006-10-23: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signer.pm, lib/Mail/DKIM/Verifier.pm: use new() instead of
   new_object(); new_object() still supported; documented
   Debug_Canonicalization option

2006-10-20: Jason Long <jlong@messiah.edu>
 * t/signer_policy.t: added test for creating DomainKeys signature;
   added test for creating multiple signatures
 * lib/Mail/DKIM/SigningFilter.pm: removed (obsolete)
 * scripts/test_signing_filter.pl: removed (obsolete)
 * lib/Mail/DKIM/Signer.pm: added signatures method

2006-10-20: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM.pm, lib/Mail/DKIM/Signer.pm, lib/Mail/DKIM/Verifier.pm:
   various documentation fixes
 * lib/Mail/DKIM/Verifier.pm: set signature property when result is determined
 * lib/Mail/DKIM/Signer.pm: support addition of multiple signatures;
   changed default canonicalization method to "relaxed"

2006-10-20: Jason Long <jlong@messiah.edu>
 * t/signer_policy.t: tests different forms of signing policies
 * lib/Mail/DKIM/Signer.pm: support code references as a signing policy;
   removed support for build_signature (I'm gonna do this a different way)

2006-10-20: Jason Long <jlong@messiah.edu>
 * t/verifier: added a message containing multiple signatures, only one of
   which is valid
   - t/corpus/multiple_1.txt: the new message
 * lib/Mail/DKIM/Algorithm/Base.pm: added signature method; changed method
   signature of verify method (no parameters needed any more)
 * lib/Mail/DKIM/Algorithm/rsa_sha1.pm,
   lib/Mail/DKIM/Algorithm/rsa_sha256.pm,
   lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm: updated verify method
 * lib/Mail/DKIM/Verifier.pm: support verification of multiple signatures
 * lib/Mail/DKIM/Signer.pm: documented use of policy _function_ rather than
   policy object; but no implementation yet
 * lib/Mail/DKIM/Common.pm (add_body): support multiple algorithms (needed
   to verify multiple signatures)
 * lib/Mail/DKIM/Signature.pm: renamed signature() to data(); signature still
   available for backwards compatibility

2006-10-19: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/SignerPolicy.pm: document mechanism for users to
   construct the signature themselves
 * lib/Mail/DKIM/Canonicalization/DkCommon.pm,
 * lib/Mail/DKIM/Canonicalization/dk_simple.pm,
   lib/Mail/DKIM/Canonicalization/dk_nofws.pm: implemented DomainKeys'
   canonicalization methods
 * lib/Mail/DKIM/Canonicalization/Base.pm: clarify use of add_body method
 * lib/Mail/DKIM/Algorithm/Base.pm: clarify use of add_body method
 * lib/Mail/DKIM/DkSignature.pm: implements DomainKeys signatures
 * lib/Mail/DKIM/Signer.pm: allow policy to construct the signature, if
   it implements the build_signature method; allow policy access to
   header field names (headers method)
 * lib/Mail/DKIM/Signature.pm: replace use of obsolete method() with
   canonicalization()
 * scripts/dkimsign.pl: allow user to specify signature type

2006-10-12: Jason Long <jlong@messiah.edu>
 * t/verifier: added two new DomainKeys messages to test
   - t/corpus/good_dk_yahoo.txt
   - t/corpus/good_dk_gmail.txt
 * lib/Mail/DKIM/Canonicalization/dk_nofws.pm: added support for the
   DomainKeys "nofws" canonicalization method
 * lib/Mail/DKIM/Verifier.pm: recognize DomainKeys signatures;
   signatures now determine which algorithm class to use
 * lib/Mail/DKIM/Algorithm/Base.pm: refactored a few things to better
   accomodate non-DKIM algorithms
 * lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm: implements the DomainKeys
   rsa-sha1 algorithm
 * lib/Mail/DKIM/DkSignature.pm: handles DomainKeys signatures
 * lib/Mail/DKIM/Signer.pm: signature now determines which algorithm class
   to use
 * lib/Mail/DKIM/PublicKey.pm: change an error message from "headers have
   been alterered" to "message has been altered" (if the headers have been
   altered, we really cannot imply that the body is still intact)
 * lib/Mail/DKIM/Common.pm: removed get_algorithm_class (this is now a
   signature method)
 * lib/Mail/DKIM/Signature.pm: added get_algorithm_class; documented
   get_public_key method

2006-09-28: Jason Long <jlong@messiah.edu>
 * README: include "Error" in the list of dependencies
 * lib/Mail/DKIM/Common.pm (get_algorithm_class): return undef instead of
   throwing an error when an unsupported algorithm is presented
 * lib/Mail/DKIM/Signature.pm (parse): allow v=0.5 tag
   (check_protocol): checks for dns option /txt (i.e. "dns/txt")
   (version): new method for getting/setting v= tag
 * lib/Mail/DKIM/Verifier.pm (check_signature): fixed algorithm check
 * t/verifier: added several additional sample emails to verify, including
   a ietf05 signature, and six cases where the signature should be ignored
   for one reason or another

 -- VERSION 0.19 --

2006-06-15: Jason Long <jlong@messiah.edu>
 * Makefile.PL: change Perl version check to v5.6.1 instead of 5.8
 * t/verifier.t: use binmode function instead of ":raw" layer, for
   Perl 5.6.1 compatibility

 -- VERSION 0.18 --

2006-06-09: Jason Long <jlong@messiah.edu>
 * t/verifier.t: open message in ":raw" mode to avoid CRLF->LF
   conversion (reported by Eugene Pivovarav)

2006-06-08: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/PublicKey.pm: rewrote verify_digest() so that it uses
   the Crypt::OpenSSL::RSA module exclusively, no longer relying on
   Crypt::RSA::Primitives
 * lib/Mail/DKIM/PrivateKey.pm: rewrote sign_digest() so it uses
   Crypt::OpenSSL::RSA exclusively
 * lib/Mail/DKIM/Key.pm: calculate_EM() - remove dependency on
   Crypt::RSA::DataFormat
 * Makefile.PL, README: remove mentions of Crypt::RSA and
   Crypt::OpenSSL::Bignum

 -- VERSION 0.17 --

2006-05-26: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/Base.pm: check_body_hash() - new method
   that verifies the body hash against the bh= tag; format for
   canonicalization debugging output has changed
 * lib/Mail/DKIM/Algorithm/rsa_sha1.pm: call check_body_hash() before
   returning results to verify()
 * lib/Mail/DKIM/Algorithm/rsa_sha256.pm: call check_body_hash() before
   returning results to verify()
 * lib/Mail/DKIM/Canonicalization/DkimCommon.pm: fixed bug where extra
   CRLF was being canonicalized
 * lib/Mail/DKIM/Key.pm: moved calculate_EM function here from PrivateKey
   after realizing that it would be needed when verifying
 * lib/Mail/DKIM/PublicKey.pm: now SHA256 hashes can be verified as well;
   also, the verification can distinguish between wrong hash and a
   bad signature
 * lib/Mail/DKIM/Verifier.pm: provide result details when verification
   fails; added documentation for the result_detail() method
 * t/corpus/: added several sample signed messages for the testing routines

2006-04-17: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Algorithm/Base.pm: common class for DKIM algorithms
 * lib/Mail/DKIM/Algorithm/rsa_sha1.pm: now subclasses Algorithm::Base.
 * lib/Mail/DKIM/Algorithm/rsa_sha256.pm: new class for handling the
   rsa-sha256 DKIM algorithm
 * lib/Mail/DKIM/Common.pm: recognize rsa-sha256 algorithm
 * lib/Mail/DKIM/PrivateKey.pm: implemented signing of a SHA-256 digest
 * lib/Mail/DKIM/PublicKey.pm: implemented verifying of a SHA-256 digest
 * lib/Mail/DKIM/Signature.pm: allows algorithm to be "rsa-sha256";
   body_hash() - new method handling the bh tag;
   hash_algorithm() - new method to determine what hash is being used;
 * lib/Mail/DKIM/Verifier.pm: check_public_key() - new method for checking
   the validity of a fetched public key
 * Makefile.PL: added Digest::SHA as a dependency

2006-03-26: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Common.pm: remove version number from this file
 * lib/Mail/DKIM.pm: bump version to 0.17
 * README: bump version to 0.17

 -- VERSION 0.16 --

2006-03-03: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Policy.pm: new() and testing() are now warning-free
   (thanks to jm@jmason.org for the patch)
 * t/policy.t: tests the Policy package

2006-03-01: Jason Long <jlong@messiah.edu>
 * lib/Mail/DKIM/Signature.pm: correctly handle spaces around = character
 * t/signature.t: test for spaces around = character in signature

2006-02-24: Jason Long <jlong@messiah.edu>
 * t/: wrote some tests and added them to the project
 * README, Makefile.PL: discovered additional dependency:
   Crypt::OpenSSL::Bignum
 * lib/Mail/DKIM/Signature.pm: fixed a warning that could occur if
   the h= tag was left undefined

2006-02-23: Jason Long <jlong@messiah.edu>
 * converted to ExtUtils::MakeMaker package format,
   see the dkimproxy project for revision history prior to 2006-02-23.