Module Name:    src
Committed By:   agc
Date:           Fri Nov 20 07:17:07 UTC 2009

Modified Files:
        src/crypto/external/bsd/netpgp/dist: tst
        src/crypto/external/bsd/netpgp/dist/src/lib: packet-parse.c signature.c
            validate.c writer.c

Log Message:
Unbreak the creation of ascii-armoured signatures.

Add automatic detection of ascii-armoured signatures.

Add tests for same - with small and large source files.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/crypto/external/bsd/netpgp/dist/tst
cvs rdiff -u -r1.26 -r1.27 \
    src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c
cvs rdiff -u -r1.22 -r1.23 \
    src/crypto/external/bsd/netpgp/dist/src/lib/signature.c \
    src/crypto/external/bsd/netpgp/dist/src/lib/validate.c
cvs rdiff -u -r1.15 -r1.16 \
    src/crypto/external/bsd/netpgp/dist/src/lib/writer.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/netpgp/dist/tst
diff -u src/crypto/external/bsd/netpgp/dist/tst:1.13 src/crypto/external/bsd/netpgp/dist/tst:1.14
--- src/crypto/external/bsd/netpgp/dist/tst:1.13	Thu Nov 19 21:56:00 2009
+++ src/crypto/external/bsd/netpgp/dist/tst	Fri Nov 20 07:17:07 2009
@@ -31,7 +31,7 @@
 	su root -c "make install"'
 
 passed=0
-total=19
+total=23
 echo "======> sign/verify 180938 file"
 cp configure a
 /usr/bin/netpgp --sign a
@@ -94,5 +94,15 @@
 /usr/bin/netpgpverify --version
 echo "======> find specific key information"
 /usr/bin/netpgpkeys --get-key c0596823 a...@netbsd.org && passed=$(expr $passed + 1)
-rm -f a a.gpg b b.gpg c c.gpg d d.gpg e f f.sig a2 a3
+echo "======> ascii armoured signature"
+cp Makefile.am g
+/usr/bin/netpgp --sign --armor g && passed=$(expr $passed + 1)
+echo "======> ascii armoured sig detection and verification"
+/usr/bin/netpgp --verify g.asc && passed=$(expr $passed + 1)
+echo "======> ascii armoured signature of large file"
+cp Makefile.in g
+/usr/bin/netpgp --sign --armor g && passed=$(expr $passed + 1)
+echo "======> ascii armoured sig detection and verification of large file"
+/usr/bin/netpgp --verify g.asc && passed=$(expr $passed + 1)
+rm -f a a.gpg b b.gpg c c.gpg d d.gpg e f f.sig g g.asc a2 a3
 echo "Passed ${passed}/${total} tests"

Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.26 src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.27
--- src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.26	Fri Oct  9 06:02:55 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c	Fri Nov 20 07:17:07 2009
@@ -58,7 +58,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: packet-parse.c,v 1.26 2009/10/09 06:02:55 agc Exp $");
+__RCSID("$NetBSD: packet-parse.c,v 1.27 2009/11/20 07:17:07 agc Exp $");
 #endif
 
 #ifdef HAVE_OPENSSL_CAST_H
@@ -2637,6 +2637,7 @@
 						j - OPS_SALT_SIZE);
 					}
 				}
+				break;
 			default:
 				break;
 			}

Index: src/crypto/external/bsd/netpgp/dist/src/lib/signature.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.22 src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.23
--- src/crypto/external/bsd/netpgp/dist/src/lib/signature.c:1.22	Thu Nov 19 21:56:00 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/signature.c	Fri Nov 20 07:17:07 2009
@@ -57,7 +57,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: signature.c,v 1.22 2009/11/19 21:56:00 agc Exp $");
+__RCSID("$NetBSD: signature.c,v 1.23 2009/11/20 07:17:07 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -1071,15 +1071,17 @@
 		__ops_add_birthtime(sig, time(NULL));
 		/* add key id to signature */
 		__ops_keyid(keyid, OPS_KEY_ID_SIZE, &seckey->pubkey);
-		ret = __ops_add_issuer_keyid(sig, keyid) &&
-			__ops_end_hashed_subpkts(sig) &&
-			__ops_write_sig(output, sig, &seckey->pubkey, seckey);
+		__ops_add_issuer_keyid(sig, keyid);
+		__ops_end_hashed_subpkts(sig);
+		__ops_write_sig(output, sig, &seckey->pubkey, seckey);
 
 		/* tidy up */
 		__ops_teardown_file_write(output, fd_out);
 
 		__ops_create_sig_delete(sig);
 		__ops_memory_free(infile);
+
+		ret = 1;
 	}
 
 	return ret;
Index: src/crypto/external/bsd/netpgp/dist/src/lib/validate.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.22 src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.23
--- src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.22	Thu Nov 19 21:56:01 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c	Fri Nov 20 07:17:07 2009
@@ -54,7 +54,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: validate.c,v 1.22 2009/11/19 21:56:01 agc Exp $");
+__RCSID("$NetBSD: validate.c,v 1.23 2009/11/20 07:17:07 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -695,12 +695,14 @@
 	int64_t		 	 sigsize;
 	char			 origfile[MAXPATHLEN];
 	char			*detachname;
+	int			 realarmour;
 	int			 outfd = 0;
 	int			 infd;
 	int			 cc;
 
 #define SIG_OVERHEAD	284 /* XXX - depends on sig size? */
 
+	realarmour = armoured;
 	if (stat(infile, &st) < 0) {
 		(void) fprintf(io->errs, "can't validate \"%s\"\n", infile);
 		return 0;
@@ -715,6 +717,9 @@
 			detachname = strdup(origfile);
 		}
 	}
+	if (strcmp(&origfile[cc - 4], ".asc") == 0) {
+		realarmour = 1;
+	}
 
 	(void) memset(&validation, 0x0, sizeof(validation));
 
@@ -735,7 +740,7 @@
 	/* is never used. */
 	validation.reader = parse->readinfo.arg;
 
-	if (armoured) {
+	if (realarmour) {
 		__ops_reader_push_dearmour(parse);
 	}
 
@@ -743,7 +748,7 @@
 	__ops_parse(parse, !printerrors);
 
 	/* Tidy up */
-	if (armoured) {
+	if (realarmour) {
 		__ops_reader_pop_dearmour(parse);
 	}
 	__ops_teardown_file_read(parse, infd);

Index: src/crypto/external/bsd/netpgp/dist/src/lib/writer.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.15 src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.16
--- src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.15	Wed Oct  7 16:19:51 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/writer.c	Fri Nov 20 07:17:07 2009
@@ -58,7 +58,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: writer.c,v 1.15 2009/10/07 16:19:51 agc Exp $");
+__RCSID("$NetBSD: writer.c,v 1.16 2009/11/20 07:17:07 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -747,7 +747,7 @@
 		return 0;
 	}
 
-	return __ops_stacked_write(trailer, sizeof(trailer)-1, errors, writer);
+	return __ops_stacked_write(trailer, strlen(trailer), errors, writer);
 }
 
 /**

Reply via email to