# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../libdkim/extra-options.patch # Copyright (C) 2009 The OpenSDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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. # --- SDE-COPYRIGHT-NOTE-END --- This patch was taken from http://patchlog.com/security/qmail-and-dkim/ It adds usage text and a few extra options to the libdkimtest program that comes with Alt-N's libdkim library. Installation instructions: % wget http://downloads.sourceforge.net/libdkim/libdkim-1.0.19.zip % wget http://www.bltweb.net/qmail/libdkim-1.0.19-extra-options.patch % unzip libdkim-1.0.19 % cd libdkim/src % patch -p2 < ../../libdkim-1.0.19-extra-options.patch diff -Naur libdkim.orig/src/libdkimtest.cpp libdkim/src/libdkimtest.cpp --- ./libdkimtest.cpp 2009-03-13 16:17:45.000000000 -0500 +++ ./libdkimtest.cpp 2009-03-13 16:26:02.000000000 -0500 @@ -55,8 +55,23 @@ return 0; } +void usage() +{ - + printf( "usage: libdkimtest [-b] [-c] [-d] [-l] [-h] [-i] [-q] [-s] [-t] [-v] [-x] [-z] \n"); + printf( "-b allman , ietf or both\n"); + printf( "-c r for relaxed [DEFAULT], s - simple, t relaxed/simple, u - simple/relaxed\n"); + printf( "-d the domain tag, if not provided it will be determined from the sender/from header\n"); + printf( "-l include body length tag\n"); + printf( "-h this help\n"); + printf( "-i the identity, if not provided it will not be included\n"); + printf( "-s sign the message\n"); + printf( "-t include a timestamp tag\n"); + printf( "-v verify the message\n"); + printf( "-x the expire time in seconds since epoch ( DEFAULT = current time + 604800)\n\t if set to - then it will not be included"); + printf( "-z 1 for sha1, 2 for sha256, 3 for both\n"); + printf( "-y the selector tag DEFAULT=MDaemon\n"); +} int main(int argc, char* argv[]) { int n; @@ -77,7 +92,7 @@ time(&t); opts.nCanon = DKIM_SIGN_RELAXED; - opts.nIncludeBodyLengthTag = 1; + opts.nIncludeBodyLengthTag = 0; opts.nIncludeQueryMethod = 0; opts.nIncludeTimeStamp = 0; opts.expireTime = t + 604800; // expires in 1 week @@ -92,6 +107,11 @@ int nArgParseState = 0; bool bSign = true; + if(argc<2){ + usage(); + exit(1); + } + for( n = 1; n < argc; n++ ) { if( argv[n][0] == '-' && strlen(argv[n]) > 1 ) @@ -121,14 +141,16 @@ } break; - + case 'd': + strncpy(opts.szDomain,(const char*)(argv[n]+2),sizeof(opts.szDomain)-1); + break; case 'l': // body length tag opts.nIncludeBodyLengthTag = 1; break; case 'h': - printf( "usage: \n" ); + usage(); return 0; case 'i': // identity @@ -138,7 +160,7 @@ } else { - strcpy( opts.szIdentity, argv[n] + 2 ); + strncpy( opts.szIdentity, argv[n] + 2,sizeof(opts.szIdentity)-1 ); } break; @@ -169,6 +191,9 @@ } break; + case 'y': + strncpy( opts.szSelector, argv[n]+2, sizeof(opts.szSelector)-1); + break; case 'z': // sign w/ sha1, sha256 or both opts.nHash = atoi( &argv[n][2] );