Module Name:    src
Committed By:   agc
Date:           Sat Jun 13 05:25:09 UTC 2009

Modified Files:
        src/crypto/external/bsd/netpgp/dist: TODO
        src/crypto/external/bsd/netpgp/dist/src/lib: create.c crypto.h netpgp.c
            packet-parse.c reader.c version.h writer.c
        src/crypto/external/bsd/netpgp/dist/src/netpgp: Makefile netpgp.c
        src/crypto/external/bsd/netpgp/dist/src/netpgpverify: Makefile
        src/crypto/external/bsd/netpgp/dist/tests: testsuite.at
Added Files:
        src/crypto/external/bsd/netpgp/dist/tests: userid.at

Log Message:
Don't complain if $HOME/.gnupg does not exist (and using --homedir).

Don't require a userid to be set in the gpg.conf file - it can be set
on the command line when it's needed (for signing and encryption, the
other operations in netpgp(1) will take the userid from the
signed/encrypted file).

Add tests for the lack of a default userid in the config file.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/crypto/external/bsd/netpgp/dist/TODO
cvs rdiff -u -r1.18 -r1.19 \
    src/crypto/external/bsd/netpgp/dist/src/lib/create.c
cvs rdiff -u -r1.9 -r1.10 \
    src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h
cvs rdiff -u -r1.25 -r1.26 \
    src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
cvs rdiff -u -r1.21 -r1.22 \
    src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c \
    src/crypto/external/bsd/netpgp/dist/src/lib/reader.c
cvs rdiff -u -r1.19 -r1.20 \
    src/crypto/external/bsd/netpgp/dist/src/lib/version.h
cvs rdiff -u -r1.12 -r1.13 \
    src/crypto/external/bsd/netpgp/dist/src/lib/writer.c
cvs rdiff -u -r1.2 -r1.3 \
    src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile
cvs rdiff -u -r1.3 -r1.4 \
    src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c
cvs rdiff -u -r1.2 -r1.3 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile
cvs rdiff -u -r1.6 -r1.7 \
    src/crypto/external/bsd/netpgp/dist/tests/testsuite.at
cvs rdiff -u -r0 -r1.1 src/crypto/external/bsd/netpgp/dist/tests/userid.at

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/TODO
diff -u src/crypto/external/bsd/netpgp/dist/TODO:1.22 src/crypto/external/bsd/netpgp/dist/TODO:1.23
--- src/crypto/external/bsd/netpgp/dist/TODO:1.22	Fri Jun 12 04:12:25 2009
+++ src/crypto/external/bsd/netpgp/dist/TODO	Sat Jun 13 05:25:08 2009
@@ -1,7 +1,5 @@
 To Do
 =====
-don't complain if no .gnupg dir (even when using --homedir)
-failure to run if no userid in gpg.conf (even if --userid specified)
 make netpgpkeys work - add, import, commit, update, sign, passphrase
 return userids from successful verify, and then print id out if required
 is get_passphrase_cb needed?
@@ -68,3 +66,5 @@
 C++ guards in header file
 modify sets lists for netpgpverify
 don't require passphrase for keys without one
+failure to run if no userid in gpg.conf (even if --userid specified)
+don't complain if no .gnupg dir (even when using --homedir)

Index: src/crypto/external/bsd/netpgp/dist/src/lib/create.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.18 src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.19
--- src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.18	Thu Jun 11 01:12:42 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/create.c	Sat Jun 13 05:25:08 2009
@@ -57,7 +57,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: create.c,v 1.18 2009/06/11 01:12:42 agc Exp $");
+__RCSID("$NetBSD: create.c,v 1.19 2009/06/13 05:25:08 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -425,7 +425,7 @@
 
 	__ops_crypt_any(&crypted, key->alg);
 	crypted.set_iv(&crypted, key->iv);
-	crypted.set_key(&crypted, sesskey);
+	crypted.set_crypt_key(&crypted, sesskey);
 	__ops_encrypt_init(&crypted);
 
 	if (__ops_get_debug_level(__FILE__)) {

Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.9 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.10
--- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.9	Tue Jun  9 00:51:02 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h	Sat Jun 13 05:25:08 2009
@@ -93,8 +93,8 @@
 	__ops_symm_alg_t		alg;
 	size_t				blocksize;
 	size_t				keysize;
-	__ops_setiv_func_t		*set_iv;/* Call before decrypt init! */
-	__ops_setkey_func_t		*set_key;/* Call this before init! */
+	__ops_setiv_func_t		*set_iv;
+	__ops_setkey_func_t		*set_crypt_key;
 	__ops_crypt_init_t		*base_init;
 	__ops_crypt_resync_t		*decrypt_resync;
 	/* encrypt/decrypt one block  */

Index: src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.25 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.26
--- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.25	Thu Jun 11 04:57:52 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c	Sat Jun 13 05:25:08 2009
@@ -34,7 +34,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: netpgp.c,v 1.25 2009/06/11 04:57:52 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.26 2009/06/13 05:25:08 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -97,7 +97,6 @@
 	__OPS_USED(netpgp);
 	(void) snprintf(buf, sizeof(buf), "%s/gpg.conf", homedir);
 	if ((fp = fopen(buf, "r")) == NULL) {
-		(void) fprintf(stderr, "conffile: can't open '%s'\n", buf);
 		return 0;
 	}
 	(void) memset(&keyre, 0x0, sizeof(keyre));
@@ -270,13 +269,12 @@
 		}
 	}
 	if (userid == NULL) {
-		if (netpgp_getvar(netpgp, "userid checks") == NULL) {
+		if (netpgp_getvar(netpgp, "need userid") != NULL) {
 			(void) fprintf(io->errs, "Cannot find user id\n");
 			return 0;
 		}
-		(void) fprintf(io->errs, "Skipping user id check\n");
 	} else {
-		(void) netpgp_setvar(netpgp, "userid", id);
+		(void) netpgp_setvar(netpgp, "userid", userid);
 	}
 	if ((netpgp->pubring = readkeyring(netpgp, "pubring")) == NULL) {
 		(void) fprintf(io->errs, "Can't read pub keyring\n");

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.21 src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.22
--- src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.21	Thu Jun 11 01:12:42 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c	Sat Jun 13 05:25:08 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.21 2009/06/11 01:12:42 agc Exp $");
+__RCSID("$NetBSD: packet-parse.c,v 1.22 2009/06/13 05:25:08 agc Exp $");
 #endif
 
 #ifdef HAVE_OPENSSL_CAST_H
@@ -2637,7 +2637,7 @@
 			fprintf(stderr, "\n");
 		}
 		decrypt.set_iv(&decrypt, pkt.u.seckey.iv);
-		decrypt.set_key(&decrypt, key);
+		decrypt.set_crypt_key(&decrypt, key);
 
 		/* now read encrypted data */
 
@@ -2911,7 +2911,7 @@
 	__ops_crypt_any(&stream->decrypt, pkt.u.pk_sesskey.symm_alg);
 	iv = calloc(1, stream->decrypt.blocksize);
 	stream->decrypt.set_iv(&stream->decrypt, iv);
-	stream->decrypt.set_key(&stream->decrypt, pkt.u.pk_sesskey.key);
+	stream->decrypt.set_crypt_key(&stream->decrypt, pkt.u.pk_sesskey.key);
 	__ops_encrypt_init(&stream->decrypt);
 	(void) free(iv);
 	return 1;
Index: src/crypto/external/bsd/netpgp/dist/src/lib/reader.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.21 src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.22
--- src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.21	Thu Jun 11 04:57:52 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/reader.c	Sat Jun 13 05:25:09 2009
@@ -54,7 +54,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: reader.c,v 1.21 2009/06/11 04:57:52 agc Exp $");
+__RCSID("$NetBSD: reader.c,v 1.22 2009/06/13 05:25:09 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -147,7 +147,7 @@
 		}
 		(void) snprintf(phrase, size, "%s", p);
 	} else {
-		if (fgets(phrase, size, in) == NULL) {
+		if (fgets(phrase, (int)size, in) == NULL) {
 			return 0;
 		}
 		phrase[strlen(phrase) - 1] = 0x0;
@@ -2089,7 +2089,6 @@
 
 	case OPS_PTAG_CT_LITDATA_HEADER:
 		/* ignore */
-printf("LITDATA_HEADER: filename ,%s,\n", content->litdata_header.filename);
 		break;
 
 	default:
@@ -2202,12 +2201,8 @@
 {
 	const __ops_contents_t	*content = &pkt->u;
 	__ops_io_t		*io;
-	FILE			*passfp;
 
 	io = cbinfo->io;
-	if ((passfp = cbinfo->passfp) != NULL) {
-		/* read from passfp and return */
-	}
 	if (__ops_get_debug_level(__FILE__)) {
 		__ops_print_packet(pkt);
 	}

Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.19 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.20
--- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.19	Thu Jun 11 17:05:18 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h	Sat Jun 13 05:25:09 2009
@@ -58,7 +58,7 @@
 #endif
 
 /* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION	"1.99.12"
+#define NETPGP_BASE_VERSION	"1.99.13"
 
 #define NETPGP_VERSION_CAT(a, b)	"NetPGP portable " a "/[" b "]"
 #define NETPGP_VERSION_STRING \

Index: src/crypto/external/bsd/netpgp/dist/src/lib/writer.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.12 src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.13
--- src/crypto/external/bsd/netpgp/dist/src/lib/writer.c:1.12	Tue Jun  9 00:51:03 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/writer.c	Sat Jun 13 05:25:09 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.12 2009/06/09 00:51:03 agc Exp $");
+__RCSID("$NetBSD: writer.c,v 1.13 2009/06/13 05:25:09 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -1019,7 +1019,7 @@
 	__ops_crypt_any(encrypted, encrypted_pk_sesskey->symm_alg);
 	iv = calloc(1, encrypted->blocksize);
 	encrypted->set_iv(encrypted, iv);
-	encrypted->set_key(encrypted, &encrypted_pk_sesskey->key[0]);
+	encrypted->set_crypt_key(encrypted, &encrypted_pk_sesskey->key[0]);
 	__ops_encrypt_init(encrypted);
 
 	se_ip->crypt = encrypted;
@@ -1389,7 +1389,7 @@
 	__ops_crypt_any(encrypted, encrypted_pk_sesskey->symm_alg);
 	iv = calloc(1, encrypted->blocksize);
 	encrypted->set_iv(encrypted, iv);
-	encrypted->set_key(encrypted, &encrypted_pk_sesskey->key[0]);
+	encrypted->set_crypt_key(encrypted, &encrypted_pk_sesskey->key[0]);
 	__ops_encrypt_init(encrypted);
 
 	se_ip->crypt = encrypted;

Index: src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.2 src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.3
--- src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.2	Wed Jun 10 00:38:09 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile	Sat Jun 13 05:25:09 2009
@@ -117,16 +117,16 @@
 PACKAGE = netpgp
 PACKAGE_BUGREPORT = Alistair Crooks <a...@netbsd.org> c0596823
 PACKAGE_NAME = netpgp
-PACKAGE_STRING = netpgp 20090608
+PACKAGE_STRING = netpgp 20090611
 PACKAGE_TARNAME = netpgp
-PACKAGE_VERSION = 20090608
+PACKAGE_VERSION = 20090611
 PATH_SEPARATOR = :
 RANLIB = ranlib
 SED = /usr/bin/sed
 SET_MAKE = 
 SHELL = /bin/ksh
 STRIP = strip
-VERSION = 20090608
+VERSION = 20090611
 WARNCFLAGS = -Werror -Wall -Wpointer-arith
 abs_builddir = /usr/src/crypto/external/bsd/netpgp-hack/dist/src/netpgp
 abs_srcdir = /usr/src/crypto/external/bsd/netpgp-hack/dist/src/netpgp

Index: src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.3 src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.4
--- src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.3	Wed Jun 10 16:37:41 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c	Sat Jun 13 05:25:09 2009
@@ -216,13 +216,15 @@
 
 /* set the home directory value to "home/subdir" */
 static int
-set_homedir(netpgp_t *netpgp, char *home, const char *subdir)
+set_homedir(netpgp_t *netpgp, char *home, const char *subdir, const int quiet)
 {
 	struct stat	st;
 	char		d[MAXPATHLEN];
 
 	if (home == NULL) {
-		(void) fprintf(stderr, "NULL HOME directory\n");
+		if (!quiet) {
+			(void) fprintf(stderr, "NULL HOME directory\n");
+		}
 		return 0;
 	}
 	(void) snprintf(d, sizeof(d), "%s%s", home, (subdir) ? subdir : "");
@@ -235,7 +237,10 @@
 					d);
 		return 0;
 	}
-	(void) fprintf(stderr, "netpgp: warning homedir \"%s\" not found\n", d);
+	if (!quiet) {
+		(void) fprintf(stderr,
+			"netpgp: warning homedir \"%s\" not found\n", d);
+	}
 	return 1;
 }
 
@@ -260,7 +265,7 @@
 	}
 	/* set some defaults */
 	netpgp_setvar(&netpgp, "hash", DEFAULT_HASH_ALG);
-	set_homedir(&netpgp, getenv("HOME"), "/.gnupg");
+	set_homedir(&netpgp, getenv("HOME"), "/.gnupg", 1);
 	optindex = 0;
 	while ((ch = getopt_long(argc, argv, "", options, &optindex)) != -1) {
 		switch (options[optindex].val) {
@@ -269,9 +274,13 @@
 			p.cmd = options[optindex].val;
 			break;
 		case ENCRYPT:
-		case DECRYPT:
 		case SIGN:
 		case CLEARSIGN:
+			/* for encryption and signing, we need a userid */
+			netpgp_setvar(&netpgp, "need userid", "1");
+			p.cmd = options[optindex].val;
+			break;
+		case DECRYPT:
 		case VERIFY:
 		case VERIFY_CAT:
 		case LIST_PACKETS:
@@ -316,7 +325,7 @@
 				"No home directory argument provided\n");
 				exit(EXIT_ERROR);
 			}
-			set_homedir(&netpgp, optarg, NULL);
+			set_homedir(&netpgp, optarg, NULL, 0);
 			break;
 		case HASH_ALG:
 			if (optarg == NULL) {

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.2 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.3
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.2	Wed Jun 10 00:38:10 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile	Sat Jun 13 05:25:09 2009
@@ -117,16 +117,16 @@
 PACKAGE = netpgp
 PACKAGE_BUGREPORT = Alistair Crooks <a...@netbsd.org> c0596823
 PACKAGE_NAME = netpgp
-PACKAGE_STRING = netpgp 20090608
+PACKAGE_STRING = netpgp 20090611
 PACKAGE_TARNAME = netpgp
-PACKAGE_VERSION = 20090608
+PACKAGE_VERSION = 20090611
 PATH_SEPARATOR = :
 RANLIB = ranlib
 SED = /usr/bin/sed
 SET_MAKE = 
 SHELL = /bin/ksh
 STRIP = strip
-VERSION = 20090608
+VERSION = 20090611
 WARNCFLAGS = -Werror -Wall -Wpointer-arith
 abs_builddir = /usr/src/crypto/external/bsd/netpgp-hack/dist/src/netpgpverify
 abs_srcdir = /usr/src/crypto/external/bsd/netpgp-hack/dist/src/netpgpverify

Index: src/crypto/external/bsd/netpgp/dist/tests/testsuite.at
diff -u src/crypto/external/bsd/netpgp/dist/tests/testsuite.at:1.6 src/crypto/external/bsd/netpgp/dist/tests/testsuite.at:1.7
--- src/crypto/external/bsd/netpgp/dist/tests/testsuite.at:1.6	Thu Jun 11 02:28:50 2009
+++ src/crypto/external/bsd/netpgp/dist/tests/testsuite.at	Sat Jun 13 05:25:09 2009
@@ -1,9 +1,11 @@
-# $NetBSD: testsuite.at,v 1.6 2009/06/11 02:28:50 lukem Exp $
+# $NetBSD: testsuite.at,v 1.7 2009/06/13 05:25:09 agc Exp $
 
 AT_INIT([netpgp])
 
 AT_TESTED([netpgp netpgpverify])
 
+m4_include([userid.at])
+
 m4_include([init.at])
 
 m4_include([cat.at])

Added files:

Index: src/crypto/external/bsd/netpgp/dist/tests/userid.at
diff -u /dev/null src/crypto/external/bsd/netpgp/dist/tests/userid.at:1.1
--- /dev/null	Sat Jun 13 05:25:09 2009
+++ src/crypto/external/bsd/netpgp/dist/tests/userid.at	Sat Jun 13 05:25:09 2009
@@ -0,0 +1,32 @@
+# $NetBSD: userid.at,v 1.1 2009/06/13 05:25:09 agc Exp $
+
+AT_SETUP([tests with no default userid in gpg.conf])
+
+# Remove any previous testsuite run's $testhomedir
+AT_CHECK([rm -rf $testhomedir], [0], [ignore], [ignore])
+
+# Create $testhomedir as fake $HOME/.gnupg
+AT_CHECK([mkdir -m 700 -p $testhomedir], [0], [ignore], [ignore])
+
+# Import private key for tests
+# XXX: Use GPG until NetPGP's key management is overhauled
+AT_CHECK([gpg --batch --homedir $testhomedir --import < $testprivatekey],
+    [0], [ignore], [ignore])
+
+AT_CHECK([cp $abs_top_builddir/libtool file3], [0], [ignore], [ignore])
+
+# sign with an explicit userid, no default in gpg.conf
+AT_CHECK([netpgp --homedir $testhomedir --userid $testuserid --sign file3],
+    [0], [ignore], [ignore])
+
+# test with no userid
+AT_CHECK([netpgp --homedir $testhomedir --cat --output=file3.copy file3.gpg],
+    [0], [ignore], [ignore])
+
+AT_CHECK([diff file3 file3.copy])
+
+# Create a gpg.conf
+#AT_CHECK([echo "default-key $testuserid" > $testhomedir/gpg.conf],
+#    [0], [ignore], [ignore])
+
+AT_CLEANUP

Reply via email to