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<[email protected]>] [-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] );
 | |
| 
 |