Module Name:    src
Committed By:   agc
Date:           Tue Mar 16 04:14:30 UTC 2010

Modified Files:
        src/crypto/external/bsd/netpgp/dist: TODO configure configure.ac
        src/crypto/external/bsd/netpgp/dist/include: netpgp.h
        src/crypto/external/bsd/netpgp/dist/src/hkpclient: tst
        src/crypto/external/bsd/netpgp/dist/src/hkpd: hkpd.c
        src/crypto/external/bsd/netpgp/dist/src/lib: keyring.h netpgp.c
            packet-print.c version.h
        src/crypto/external/bsd/netpgp/dist/src/netpgpverify: verify.c

Log Message:
Changes to 2.99.2/20100315

+ make subkey sigs available by hkp as well as on the command line
+ use the sketchily-defined vindex option to the hkp protocol to
  return the subkey signature information
+ add a netpgp_unsetvar() function as a corollary to netpgp_setvar()
+ use a variable name of ''subkey sigs'' to denote that subkey
  signatures should be returned with the pubkey uids


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/crypto/external/bsd/netpgp/dist/TODO
cvs rdiff -u -r1.27 -r1.28 src/crypto/external/bsd/netpgp/dist/configure
cvs rdiff -u -r1.28 -r1.29 src/crypto/external/bsd/netpgp/dist/configure.ac
cvs rdiff -u -r1.17 -r1.18 \
    src/crypto/external/bsd/netpgp/dist/include/netpgp.h
cvs rdiff -u -r1.1 -r1.2 \
    src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst
cvs rdiff -u -r1.3 -r1.4 src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c
cvs rdiff -u -r1.23 -r1.24 \
    src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
cvs rdiff -u -r1.43 -r1.44 \
    src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
cvs rdiff -u -r1.29 -r1.30 \
    src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c
cvs rdiff -u -r1.30 -r1.31 \
    src/crypto/external/bsd/netpgp/dist/src/lib/version.h
cvs rdiff -u -r1.7 -r1.8 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.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/TODO
diff -u src/crypto/external/bsd/netpgp/dist/TODO:1.35 src/crypto/external/bsd/netpgp/dist/TODO:1.36
--- src/crypto/external/bsd/netpgp/dist/TODO:1.35	Sat Mar 13 23:30:40 2010
+++ src/crypto/external/bsd/netpgp/dist/TODO	Tue Mar 16 04:14:29 2010
@@ -93,3 +93,4 @@
 trust subpackets
 add revocation information to public key display
 --list-sigs - these come out in __ops_check_subkey_sig()
+hkp to include sigs too

Index: src/crypto/external/bsd/netpgp/dist/configure
diff -u src/crypto/external/bsd/netpgp/dist/configure:1.27 src/crypto/external/bsd/netpgp/dist/configure:1.28
--- src/crypto/external/bsd/netpgp/dist/configure:1.27	Sat Mar 13 23:30:40 2010
+++ src/crypto/external/bsd/netpgp/dist/configure	Tue Mar 16 04:14:29 2010
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.ac Revision: 1.27 .
+# From configure.ac Revision: 1.28 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for netpgp 20100313.
+# Generated by GNU Autoconf 2.63 for netpgp 20100315.
 #
 # Report bugs to <Alistair Crooks <a...@netbsd.org> c0596823>.
 #
@@ -751,8 +751,8 @@
 # Identity of this package.
 PACKAGE_NAME='netpgp'
 PACKAGE_TARNAME='netpgp'
-PACKAGE_VERSION='20100313'
-PACKAGE_STRING='netpgp 20100313'
+PACKAGE_VERSION='20100315'
+PACKAGE_STRING='netpgp 20100315'
 PACKAGE_BUGREPORT='Alistair Crooks <a...@netbsd.org> c0596823'
 
 ac_unique_file="src/netpgp/netpgp.c"
@@ -1483,7 +1483,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netpgp 20100313 to adapt to many kinds of systems.
+\`configure' configures netpgp 20100315 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1553,7 +1553,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netpgp 20100313:";;
+     short | recursive ) echo "Configuration of netpgp 20100315:";;
    esac
   cat <<\_ACEOF
 
@@ -1660,7 +1660,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netpgp configure 20100313
+netpgp configure 20100315
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1674,7 +1674,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netpgp $as_me 20100313, which was
+It was created by netpgp $as_me 20100315, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2561,7 +2561,7 @@
 
 # Define the identity of the package.
  PACKAGE='netpgp'
- VERSION='20100313'
+ VERSION='20100315'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -22306,7 +22306,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netpgp $as_me 20100313, which was
+This file was extended by netpgp $as_me 20100315, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22369,7 +22369,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-netpgp config.status 20100313
+netpgp config.status 20100315
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 

Index: src/crypto/external/bsd/netpgp/dist/configure.ac
diff -u src/crypto/external/bsd/netpgp/dist/configure.ac:1.28 src/crypto/external/bsd/netpgp/dist/configure.ac:1.29
--- src/crypto/external/bsd/netpgp/dist/configure.ac:1.28	Sat Mar 13 23:30:40 2010
+++ src/crypto/external/bsd/netpgp/dist/configure.ac	Tue Mar 16 04:14:29 2010
@@ -1,10 +1,10 @@
-# $NetBSD: configure.ac,v 1.28 2010/03/13 23:30:40 agc Exp $
+# $NetBSD: configure.ac,v 1.29 2010/03/16 04:14:29 agc Exp $
 #
 # Process this file with autoconf to produce a configure script.
 
-AC_INIT([netpgp],[20100313],[Alistair Crooks <a...@netbsd.org> c0596823])
+AC_INIT([netpgp],[20100315],[Alistair Crooks <a...@netbsd.org> c0596823])
 AC_PREREQ(2.63)
-AC_REVISION([$Revision: 1.28 $])
+AC_REVISION([$Revision: 1.29 $])
 
 AS_SHELL_SANITIZE
 

Index: src/crypto/external/bsd/netpgp/dist/include/netpgp.h
diff -u src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.17 src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.18
--- src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.17	Sat Mar 13 23:30:40 2010
+++ src/crypto/external/bsd/netpgp/dist/include/netpgp.h	Tue Mar 16 04:14:29 2010
@@ -67,6 +67,7 @@
 int netpgp_setvar(netpgp_t *, const char *, const char *);
 char *netpgp_getvar(netpgp_t *, const char *);
 int netpgp_incvar(netpgp_t *, const char *, const int);
+int netpgp_unsetvar(netpgp_t *, const char *);
 
 /* set home directory information */
 int netpgp_set_homedir(netpgp_t *, char *, const char *, const int);

Index: src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst
diff -u src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst:1.1 src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst:1.2
--- src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst:1.1	Mon Mar  1 07:52:21 2010
+++ src/crypto/external/bsd/netpgp/dist/src/hkpclient/tst	Tue Mar 16 04:14:29 2010
@@ -16,6 +16,10 @@
 done
 
 ./hkpclient.lua -s ${host} a...@netbsd.org
+./hkpclient.lua -s ${host} --mr 0xc0596823
+./hkpclient.lua -s ${host} 0xc0596823
 ./hkpclient.lua --op index -s ${host} 0xc0596823
 ./hkpclient.lua -o index -s ${host} --mr 0xc0596823
+./hkpclient.lua -o index -s ${host} --mr 0xc0596823
+./hkpclient.lua -o vindex -s ${host} --mr agc@
 ./hkpclient.lua -o index -s ${host} dhklsbcldshjkcdlsjhcvdsljhvcdsljhcvdjlshvcdsc

Index: src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c
diff -u src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c:1.3 src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c:1.4
--- src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c:1.3	Tue Mar 16 00:24:49 2010
+++ src/crypto/external/bsd/netpgp/dist/src/hkpd/hkpd.c	Tue Mar 16 04:14:29 2010
@@ -98,8 +98,10 @@
 static int
 response(int sock, const int code, const char *search, const int get, char *buf, int cc, int mr)
 {
-	char	outbuf[BUFSIZ * 8];
+	char	outbuf[1024 * 512];
 	char	item[BUFSIZ];
+	int	tot;
+	int	wc;
 	int	n;
 
 	if (buf == NULL) {
@@ -116,8 +118,7 @@
 			mr,
 			buf);
 	}
-	if (write(sock, outbuf, n) != n) {
-		(void) fprintf(stderr, "Short write\n");
+	for (tot = 0 ; (wc = write(sock, &outbuf[tot], n - tot)) > 0 && tot < n ; tot += wc) {
 	}
 	return 1;
 }
@@ -282,9 +283,18 @@
 			sizeof(search));
 		code = HKP_NOT_FOUND;
 		cc = 0;
-		if (strncmp(&buf[opmatches[1].rm_so], "vindex", 6) == 0 ||
-		    strncmp(&buf[opmatches[1].rm_so], "index", 5) == 0) {
+		if (strncmp(&buf[opmatches[1].rm_so], "vindex", 6) == 0) {
 			cc = 0;
+			netpgp_setvar(netpgp, "subkey sigs", "yes");
+			if ((cp = netpgp_get_key(netpgp, search, (mr) ? "mr" : "")) != NULL) {
+				cc = strlen(cp);
+				code = HKP_SUCCESS;
+			}
+			response(newsock, code, search, 0, cp, cc, mr);
+			netpgp_unsetvar(netpgp, "subkey sigs");
+		} else if (strncmp(&buf[opmatches[1].rm_so], "index", 5) == 0) {
+			cc = 0;
+			netpgp_unsetvar(netpgp, "subkey sigs");
 			if ((cp = netpgp_get_key(netpgp, search, (mr) ? "mr" : "")) != NULL) {
 				cc = strlen(cp);
 				code = HKP_SUCCESS;

Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.23 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.24
--- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.23	Sat Mar 13 23:30:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h	Tue Mar 16 04:14:29 2010
@@ -119,8 +119,9 @@
 int __ops_sprint_keydata(__ops_io_t *, const __ops_keyring_t *,
 			const __ops_key_t *, char **, const char *,
 			const __ops_pubkey_t *, const int);
-int __ops_hkp_sprint_keydata(const __ops_key_t *, char **,
-			const __ops_pubkey_t *);
+int __ops_hkp_sprint_keydata(__ops_io_t *, const __ops_keyring_t *,
+			const __ops_key_t *, char **,
+			const __ops_pubkey_t *, const int);
 void __ops_print_keydata(__ops_io_t *, const __ops_keyring_t *, const __ops_key_t *,
 			const char *, const __ops_pubkey_t *, const int);
 void __ops_print_sig(__ops_io_t *, const __ops_key_t *, const char *,

Index: src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.43 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.44
--- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.43	Sat Mar 13 23:30:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c	Tue Mar 16 04:14:29 2010
@@ -34,7 +34,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: netpgp.c,v 1.43 2010/03/13 23:30:41 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.44 2010/03/16 04:14:29 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -566,9 +566,9 @@
 			ALLOC(char *, pubs.v, pubs.size, pubs.c, 10, 10,
 					"netpgp_match_keys", return 0);
 			if (strcmp(fmt, "mr") == 0) {
-				__ops_hkp_sprint_keydata(
+				__ops_hkp_sprint_keydata(netpgp->io, netpgp->pubring,
 						key, &pubs.v[pubs.c],
-						&key->key.pubkey);
+						&key->key.pubkey, psigs);
 			} else {
 				__ops_sprint_keydata(netpgp->io, netpgp->pubring,
 						key, &pubs.v[pubs.c],
@@ -659,12 +659,15 @@
 		return NULL;
 	}
 	if (strcmp(fmt, "mr") == 0) {
-		return (__ops_hkp_sprint_keydata(key, &newkey,
-				&key->key.pubkey) > 0) ? newkey : NULL;
+		return (__ops_hkp_sprint_keydata(netpgp->io, netpgp->pubring,
+				key, &newkey,
+				&key->key.pubkey,
+				netpgp_getvar(netpgp, "subkey sigs") != NULL) > 0) ? newkey : NULL;
 	}
 	return (__ops_sprint_keydata(netpgp->io, netpgp->pubring,
 				key, &newkey, "pub",
-				&key->key.pubkey, 0) > 0) ? newkey : NULL;
+				&key->key.pubkey,
+				netpgp_getvar(netpgp, "subkey sigs") != NULL) > 0) ? newkey : NULL;
 }
 
 /* export a given key */
@@ -1250,6 +1253,23 @@
 	return 1;
 }
 
+/* unset a variable */
+int
+netpgp_unsetvar(netpgp_t *netpgp, const char *name)
+{
+	int	i;
+
+	if ((i = findvar(netpgp, name)) >= 0) {
+		if (netpgp->value[i]) {
+			free(netpgp->value[i]);
+			netpgp->value[i] = NULL;
+		}
+		netpgp->value[i] = NULL;
+		return 1;
+	}
+	return 0;
+}
+
 /* get a variable's value (NULL if not set) */
 char *
 netpgp_getvar(netpgp_t *netpgp, const char *name)

Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.29 src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.30
--- src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.29	Sat Mar 13 23:30:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c	Tue Mar 16 04:14:29 2010
@@ -58,7 +58,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: packet-print.c,v 1.29 2010/03/13 23:30:41 agc Exp $");
+__RCSID("$NetBSD: packet-print.c,v 1.30 2010/03/16 04:14:29 agc Exp $");
 #endif
 
 #include <string.h>
@@ -496,20 +496,58 @@
 }
 
 int
-__ops_hkp_sprint_keydata(const __ops_key_t *key, char **buf,
-		const __ops_pubkey_t *pubkey)
+__ops_hkp_sprint_keydata(__ops_io_t *io, const __ops_keyring_t *keyring,
+		const __ops_key_t *key, char **buf,
+		const __ops_pubkey_t *pubkey, const int psigs)
 {
-	unsigned	 i;
-	char		 uidbuf[KB(128)];
-	char		 fp[(OPS_FINGERPRINT_SIZE * 3) + 1];
-	int		 n;
+	const __ops_key_t	*trustkey;
+	unsigned	 	 from;
+	unsigned	 	 i;
+	unsigned	 	 j;
+	char			 keyid[OPS_KEY_ID_SIZE * 3];
+	char		 	 uidbuf[KB(128)];
+	char		 	 fp[(OPS_FINGERPRINT_SIZE * 3) + 1];
+	int		 	 n;
 
+	if (key->revoked) {
+		return -1;
+	}
 	for (i = 0, n = 0; i < key->uidc; i++) {
 		n += snprintf(&uidbuf[n], sizeof(uidbuf) - n,
-			"uid:%s:%lld:%lld:\n",
-			key->uids[i].userid,
+			"uid:%lld:%lld:%s\n",
 			(long long)pubkey->birthtime,
-			(long long)pubkey->duration);
+			(long long)pubkey->duration,
+			key->uids[i].userid);
+		for (j = 0 ; j < key->subsigc ; j++) {
+			if (psigs) {
+				if (key->subsigs[j].uid != i) {
+					continue;
+				}
+			} else {
+				if (!(key->subsigs[j].sig.info.version == 4 &&
+					key->subsigs[j].sig.info.type == OPS_SIG_SUBKEY &&
+					i == key->uidc - 1)) {
+						continue;
+				}
+			}
+			from = 0;
+			trustkey = __ops_getkeybyid(io, keyring, key->subsigs[j].sig.info.signer_id, &from);
+			if (key->subsigs[j].sig.info.version == 4 &&
+					key->subsigs[j].sig.info.type == OPS_SIG_SUBKEY) {
+				n += snprintf(&uidbuf[n], sizeof(uidbuf) - n, "sub:%d:%d:%s:%lld:%lld\n",
+					numkeybits(pubkey),
+					key->subsigs[j].sig.info.key_alg,
+					strhexdump(keyid, key->subsigs[j].sig.info.signer_id, OPS_KEY_ID_SIZE, ""),
+					(long long)(key->subsigs[j].sig.info.birthtime),
+					(long long)pubkey->duration);
+			} else {
+				n += snprintf(&uidbuf[n], sizeof(uidbuf) - n,
+					"sig:%s:%lld:%s\n",
+					strhexdump(keyid, key->subsigs[j].sig.info.signer_id, OPS_KEY_ID_SIZE, ""),
+					(long long)key->subsigs[j].sig.info.birthtime,
+					(trustkey) ? (char *)trustkey->uids[trustkey->uid0].userid : "");
+			}
+		}
 	}
 	return __ops_asprintf(buf, "pub:%s:%d:%d:%lld:%lld\n%s",
 		strhexdump(fp, key->fingerprint.fingerprint, OPS_FINGERPRINT_SIZE, ""),

Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.30 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.31
--- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.30	Sat Mar 13 23:30:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h	Tue Mar 16 04:14:29 2010
@@ -58,7 +58,7 @@
 #endif
 
 /* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION	"2.99.1"
+#define NETPGP_BASE_VERSION	"2.99.2"
 
 #define NETPGP_VERSION_CAT(a, b)	"NetPGP portable " a "/[" b "]"
 #define NETPGP_VERSION_STRING \

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.7 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.8
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.7	Sat Mar 13 23:30:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c	Tue Mar 16 04:14:30 2010
@@ -55,7 +55,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: verify.c,v 1.7 2010/03/13 23:30:41 agc Exp $");
+__RCSID("$NetBSD: verify.c,v 1.8 2010/03/16 04:14:30 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -161,7 +161,7 @@
 #undef USE_SHA384
 
 /* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION	"2.99.1"
+#define NETPGP_BASE_VERSION	"2.99.2"
 
 #define NETPGP_VERSION_CAT(a, b)	"NetPGP portable " a "/[" b "]"
 #define NETPGP_VERSION_STRING \

Reply via email to