You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.6 KiB
117 lines
3.6 KiB
# --- 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<allman|ietf|both>] [-c<r|s|t|u>] [-d<domain>] [-l] [-h] [-i<you@yourdomain.com>] [-q] [-s] [-t] [-v] [-x<expire time>] [-z<hash>] <msgfile> <privkeyfile> <outfile>\n"); |
|
+ printf( "-b<standard> allman , ietf or both\n"); |
|
+ printf( "-c<canonicalization> r for relaxed [DEFAULT], s - simple, t relaxed/simple, u - simple/relaxed\n"); |
|
+ printf( "-d<domain> 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<identity> 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<expire_time> the expire time in seconds since epoch ( DEFAULT = current time + 604800)\n\t if set to - then it will not be included"); |
|
+ printf( "-z<hash> 1 for sha1, 2 for sha256, 3 for both\n"); |
|
+ printf( "-y<selector> 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] );
|
|
|