Module Name:    src
Committed By:   agc
Date:           Sat Aug  7 04:16:41 UTC 2010

Modified Files:
        src/crypto/external/bsd/netpgp/dist/include: Makefile.in netpgp.h
        src/crypto/external/bsd/netpgp/dist/src: Makefile.am Makefile.in
        src/crypto/external/bsd/netpgp/dist/src/lib: Makefile.in config.h.in
            keyring.c keyring.h netpgp.c packet-print.c version.h
        src/crypto/external/bsd/netpgp/dist/src/netpgp: Makefile Makefile.in
        src/crypto/external/bsd/netpgp/dist/src/netpgpkeys: Makefile.in
            netpgpkeys.c
        src/crypto/external/bsd/netpgp/dist/src/netpgpverify: Makefile
            Makefile.in

Log Message:
Catch up the JSON routines being in their own library. Use the JSON routines
to return all the text as a JSON-encoded string for all keys and sigs which
are returned.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
    src/crypto/external/bsd/netpgp/dist/include/Makefile.in
cvs rdiff -u -r1.18 -r1.19 \
    src/crypto/external/bsd/netpgp/dist/include/netpgp.h
cvs rdiff -u -r1.4 -r1.5 src/crypto/external/bsd/netpgp/dist/src/Makefile.am
cvs rdiff -u -r1.3 -r1.4 src/crypto/external/bsd/netpgp/dist/src/Makefile.in
cvs rdiff -u -r1.8 -r1.9 \
    src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in \
    src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in
cvs rdiff -u -r1.39 -r1.40 \
    src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c
cvs rdiff -u -r1.28 -r1.29 \
    src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
cvs rdiff -u -r1.65 -r1.66 \
    src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
cvs rdiff -u -r1.34 -r1.35 \
    src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c
cvs rdiff -u -r1.37 -r1.38 \
    src/crypto/external/bsd/netpgp/dist/src/lib/version.h
cvs rdiff -u -r1.16 -r1.17 \
    src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile
cvs rdiff -u -r1.2 -r1.3 \
    src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in
cvs rdiff -u -r1.1 -r1.2 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in
cvs rdiff -u -r1.14 -r1.15 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c
cvs rdiff -u -r1.15 -r1.16 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile
cvs rdiff -u -r1.3 -r1.4 \
    src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in

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/include/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/include/Makefile.in:1.3 src/crypto/external/bsd/netpgp/dist/include/Makefile.in:1.4
--- src/crypto/external/bsd/netpgp/dist/include/Makefile.in:1.3	Wed Jun 10 00:38:09 2009
+++ src/crypto/external/bsd/netpgp/dist/include/Makefile.in	Sat Aug  7 04:16:40 2010
@@ -36,7 +36,8 @@
 DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -70,37 +71,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -108,6 +115,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -120,8 +128,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -152,6 +159,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@

Index: src/crypto/external/bsd/netpgp/dist/include/netpgp.h
diff -u src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.18 src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.19
--- src/crypto/external/bsd/netpgp/dist/include/netpgp.h:1.18	Tue Mar 16 04:14:29 2010
+++ src/crypto/external/bsd/netpgp/dist/include/netpgp.h	Sat Aug  7 04:16:40 2010
@@ -74,6 +74,7 @@
 
 /* key management */
 int netpgp_list_keys(netpgp_t *, const int);
+int netpgp_list_keys_json(netpgp_t *, char **, const int);
 int netpgp_find_key(netpgp_t *, char *);
 char *netpgp_get_key(netpgp_t *, const char *, const char *);
 char *netpgp_export_key(netpgp_t *, char *);
@@ -93,6 +94,7 @@
 int netpgp_decrypt_memory(netpgp_t *, const void *, const size_t, char *, size_t, const int);
 
 /* match and hkp-related functions */
+int netpgp_match_keys_json(netpgp_t *, char **, char *, const char *, const int);
 int netpgp_match_keys(netpgp_t *, char *, const char *, void *, const int);
 int netpgp_match_pubkeys(netpgp_t *, char *, void *);
 

Index: src/crypto/external/bsd/netpgp/dist/src/Makefile.am
diff -u src/crypto/external/bsd/netpgp/dist/src/Makefile.am:1.4 src/crypto/external/bsd/netpgp/dist/src/Makefile.am:1.5
--- src/crypto/external/bsd/netpgp/dist/src/Makefile.am:1.4	Wed Jun 10 00:38:09 2009
+++ src/crypto/external/bsd/netpgp/dist/src/Makefile.am	Sat Aug  7 04:16:40 2010
@@ -1,3 +1,3 @@
-## $NetBSD: Makefile.am,v 1.4 2009/06/10 00:38:09 agc Exp $
+## $NetBSD: Makefile.am,v 1.5 2010/08/07 04:16:40 agc Exp $
 
-SUBDIRS = lib netpgp netpgpkeys netpgpverify
+SUBDIRS = libmj lib netpgp netpgpkeys netpgpverify

Index: src/crypto/external/bsd/netpgp/dist/src/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/src/Makefile.in:1.3 src/crypto/external/bsd/netpgp/dist/src/Makefile.in:1.4
--- src/crypto/external/bsd/netpgp/dist/src/Makefile.in:1.3	Wed Jun 10 00:38:09 2009
+++ src/crypto/external/bsd/netpgp/dist/src/Makefile.in	Sat Aug  7 04:16:40 2010
@@ -34,7 +34,8 @@
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -69,37 +70,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -107,6 +114,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -119,8 +127,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -151,6 +158,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
@@ -166,7 +174,7 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = lib netpgp netpgpkeys netpgpverify
+SUBDIRS = libmj lib netpgp netpgpkeys netpgpverify
 all: all-recursive
 
 .SUFFIXES:

Index: src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in:1.8 src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in:1.9
--- src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in:1.8	Mon Jul 26 06:39:43 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/Makefile.in	Sat Aug  7 04:16:40 2010
@@ -36,7 +36,8 @@
 DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -56,13 +57,12 @@
 	libnetpgp_la-compress.lo libnetpgp_la-create.lo \
 	libnetpgp_la-crypto.lo libnetpgp_la-fastctype.lo \
 	libnetpgp_la-keyring.lo libnetpgp_la-misc.lo \
-	libnetpgp_la-mj.lo \
-	libnetpgp_la-netpgp.lo libnetpgp_la-openssl_crypto.lo \
-	libnetpgp_la-packet-parse.lo libnetpgp_la-packet-print.lo \
-	libnetpgp_la-packet-show.lo libnetpgp_la-reader.lo \
-	libnetpgp_la-signature.lo libnetpgp_la-ssh2pgp.lo \
-	libnetpgp_la-symmetric.lo libnetpgp_la-validate.lo \
-	libnetpgp_la-writer.lo
+	libnetpgp_la-mj.lo libnetpgp_la-netpgp.lo \
+	libnetpgp_la-openssl_crypto.lo libnetpgp_la-packet-parse.lo \
+	libnetpgp_la-packet-print.lo libnetpgp_la-packet-show.lo \
+	libnetpgp_la-reader.lo libnetpgp_la-signature.lo \
+	libnetpgp_la-ssh2pgp.lo libnetpgp_la-symmetric.lo \
+	libnetpgp_la-validate.lo libnetpgp_la-writer.lo
 libnetpgp_la_OBJECTS = $(am_libnetpgp_la_OBJECTS)
 DEFAULT_INCLUDES = -...@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/buildaux/depcomp
@@ -98,37 +98,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -136,6 +142,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -148,8 +155,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -180,6 +186,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
@@ -315,6 +322,7 @@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-fastctype....@am__quote@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-keyring....@am__quote@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-misc....@am__quote@
+...@amdep_true@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-mj....@am__quote@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-netpgp....@am__quote@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-openssl_crypto....@am__quote@
 @AMDEP_TRUE@@am__include@ @am__qu...@./$(DEPDIR)/libnetpgp_la-packet-parse....@am__quote@
Index: src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in:1.8 src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in:1.9
--- src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in:1.8	Tue May 26 05:03:57 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/config.h.in	Sat Aug  7 04:16:40 2010
@@ -114,6 +114,10 @@
 /* Define to 1 if you have the <zlib.h> header file. */
 #undef HAVE_ZLIB_H
 
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
 /* Name of package */
 #undef PACKAGE
 

Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.39 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.40
--- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.39	Fri Jul  9 05:35:34 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c	Sat Aug  7 04:16:40 2010
@@ -57,7 +57,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: keyring.c,v 1.39 2010/07/09 05:35:34 agc Exp $");
+__RCSID("$NetBSD: keyring.c,v 1.40 2010/08/07 04:16:40 agc Exp $");
 #endif
 
 #ifdef HAVE_FCNTL_H
@@ -995,6 +995,44 @@
 	return 1;
 }
 
+int
+__ops_keyring_json(__ops_io_t *io, const __ops_keyring_t *keyring, mj_t *obj, const int psigs)
+{
+	__ops_key_t		*key;
+	unsigned		 n;
+
+	(void) memset(obj, 0x0, sizeof(*obj));
+	mj_create(obj, "array");
+	obj->size = keyring->keyvsize;
+	if (__ops_get_debug_level(__FILE__)) {
+		(void) fprintf(io->errs, "__ops_keyring_json: vsize %u\n", obj->size);
+	}
+	if ((obj->value.v = calloc(sizeof(*obj->value.v), obj->size)) == NULL) {
+		(void) fprintf(io->errs, "calloc failure\n");
+		return 0;
+	}
+	for (n = 0, key = keyring->keys; n < keyring->keyc; ++n, ++key) {
+		if (__ops_is_key_secret(key)) {
+			__ops_sprint_mj(io, keyring, key, &obj->value.v[obj->c],
+				"sec", &key->key.seckey.pubkey, psigs);
+		} else {
+			__ops_sprint_mj(io, keyring, key, &obj->value.v[obj->c],
+				"pub", &key->key.pubkey, psigs);
+		}
+		if (obj->value.v[obj->c].type != 0) {
+			obj->c += 1;
+		}
+	}
+	if (__ops_get_debug_level(__FILE__)) {
+		char	*s;
+
+		mj_asprint(&s, obj);
+		(void) fprintf(stderr, "__ops_keyring_json: '%s'\n", s);
+		free(s);
+	}
+	return 1;
+}
+
 
 /* this interface isn't right - hook into callback for getting passphrase */
 char *

Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.28 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.29
--- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.28	Mon Jul 26 06:37:35 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h	Sat Aug  7 04:16:40 2010
@@ -96,6 +96,7 @@
 					const char *);
 
 int __ops_keyring_list(__ops_io_t *, const __ops_keyring_t *, const int);
+int __ops_keyring_json(__ops_io_t *, const __ops_keyring_t *, mj_t *, const int);
 
 void __ops_set_seckey(__ops_contents_t *, const __ops_key_t *);
 void __ops_forget(void *, unsigned);
@@ -120,7 +121,7 @@
 			const __ops_key_t *, char **, const char *,
 			const __ops_pubkey_t *, const int);
 int __ops_sprint_mj(__ops_io_t *, const __ops_keyring_t *,
-			const __ops_key_t *, char **, const char *,
+			const __ops_key_t *, mj_t *, const char *,
 			const __ops_pubkey_t *, const int);
 int __ops_hkp_sprint_keydata(__ops_io_t *, const __ops_keyring_t *,
 			const __ops_key_t *, 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.65 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.66
--- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.65	Fri Jul  9 14:45:43 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c	Sat Aug  7 04:16:40 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.65 2010/07/09 14:45:43 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.66 2010/08/07 04:16:40 agc Exp $");
 #endif
 
 #include <sys/types.h>
@@ -631,6 +631,27 @@
 	return __ops_keyring_list(netpgp->io, netpgp->pubring, psigs);
 }
 
+/* list the keys in a keyring, returning a JSON string */
+int
+netpgp_list_keys_json(netpgp_t *netpgp, char **json, const int psigs)
+{
+	mj_t	obj;
+	int	ret;
+
+	if (netpgp->pubring == NULL) {
+		(void) fprintf(stderr, "No keyring\n");
+		return 0;
+	}
+	(void) memset(&obj, 0x0, sizeof(obj));
+	if (!__ops_keyring_json(netpgp->io, netpgp->pubring, &obj, psigs)) {
+		(void) fprintf(stderr, "No keys in keyring\n");
+		return 0;
+	}
+	ret = mj_asprint(json, &obj);
+	mj_delete(&obj);
+	return ret;
+}
+
 DEFINE_ARRAY(strings_t, char *);
 
 #ifndef HKP_VERSION
@@ -687,6 +708,48 @@
 	return pubs.c;
 }
 
+/* find and list some keys in a keyring - return JSON string */
+int
+netpgp_match_keys_json(netpgp_t *netpgp, char **json, char *name, const char *fmt, const int psigs)
+{
+	const __ops_key_t	*key;
+	unsigned		 k;
+	mj_t			 id_array;
+	int			 ret;
+
+	if (name[0] == '0' && name[1] == 'x') {
+		name += 2;
+	}
+	(void) memset(&id_array, 0x0, sizeof(id_array));
+	k = 0;
+	*json = NULL;
+	mj_create(&id_array, "array");
+	do {
+		key = __ops_getnextkeybyname(netpgp->io, netpgp->pubring,
+						name, &k);
+		if (key != NULL) {
+			if (strcmp(fmt, "mr") == 0) {
+#if 0
+				__ops_hkp_sprint_keydata(netpgp->io, netpgp->pubring,
+						key, &pubs.v[pubs.c],
+						&key->key.pubkey, psigs);
+#endif
+			} else {
+				ALLOC(mj_t, id_array.value.v, id_array.size,
+					id_array.c, 10, 10, "netpgp_match_keys_json", return 0);
+				__ops_sprint_mj(netpgp->io, netpgp->pubring,
+						key, &id_array.value.v[id_array.c++],
+						"pub",
+						&key->key.pubkey, psigs);
+			}
+			k += 1;
+		}
+	} while (key != NULL);
+	ret = mj_asprint(json, &id_array);
+	mj_delete(&id_array);
+	return ret;
+}
+
 /* find and list some public keys in a keyring */
 int
 netpgp_match_pubkeys(netpgp_t *netpgp, char *name, void *vp)

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.34 src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.35
--- src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.34	Mon Jul 26 06:37:35 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c	Sat Aug  7 04:16:40 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.34 2010/07/26 06:37:35 agc Exp $");
+__RCSID("$NetBSD: packet-print.c,v 1.35 2010/08/07 04:16:40 agc Exp $");
 #endif
 
 #include <string.h>
@@ -473,22 +473,17 @@
 		uidbuf);
 }
 
+/* return the key info as a JSON encoded string */
 int
 __ops_sprint_mj(__ops_io_t *io, const __ops_keyring_t *keyring,
-		const __ops_key_t *key, char **buf, const char *header,
+		const __ops_key_t *key, mj_t *keyjson, const char *header,
 		const __ops_pubkey_t *pubkey, const int psigs)
 {
 	const __ops_key_t	*trustkey;
 	unsigned	 	 from;
 	unsigned		 i;
 	unsigned		 j;
-	time_t			 now;
-	mj_t			 expired_obj;
-	mj_t			 uids_array;
-	mj_t			 sig_array;
-	mj_t			 sig_obj;
-	mj_t			 key_obj;
-	char			 uidbuf[KB(64)];
+	mj_t			 sub_obj;
 	char			 keyid[OPS_KEY_ID_SIZE * 3];
 	char			 fp[(OPS_FINGERPRINT_SIZE * 3) + 1];
 	int			 r;
@@ -496,40 +491,28 @@
 	if (key == NULL || key->revoked) {
 		return -1;
 	}
-	(void) memset(uidbuf, 0x0, sizeof(uidbuf));
-	(void) memset(&key_obj, 0x0, sizeof(key_obj));
-	mj_create(&key_obj, "object");
-	mj_append_field(&key_obj, "header", "string", header);
-	mj_append_field(&key_obj, "key bits", "integer", (int64_t) numkeybits(pubkey));
-	mj_append_field(&key_obj, "pka", "string", __ops_show_pka(pubkey->alg));
-	mj_append_field(&key_obj, "key id", "string", strhexdump(keyid, key->key_id, OPS_KEY_ID_SIZE, ""));
-	mj_append(&key_obj, "fingerprint", "string",
+	(void) memset(keyjson, 0x0, sizeof(*keyjson));
+	mj_create(keyjson, "object");
+	mj_append_field(keyjson, "header", "string", header);
+	mj_append_field(keyjson, "key bits", "integer", (int64_t) numkeybits(pubkey));
+	mj_append_field(keyjson, "pka", "string", __ops_show_pka(pubkey->alg));
+	mj_append_field(keyjson, "key id", "string", strhexdump(keyid, key->key_id, OPS_KEY_ID_SIZE, ""));
+	mj_append_field(keyjson, "fingerprint", "string",
 		strhexdump(fp, key->fingerprint.fingerprint, key->fingerprint.length, " "));
-	now = time(NULL);
-	mj_append_field(&key_obj, "birthtime", "integer", pubkey->birthtime);
-	mj_append_field(&key_obj, "duration", "integer", pubkey->duration);
-	if (pubkey->duration > 0) {
-		(void) memset(&expired_obj, 0x0, sizeof(expired_obj));
-		mj_append_field(&expired_obj, "expiry status", "string",
-			(pubkey->birthtime + pubkey->duration < now) ? "[EXPIRED]" : "[EXPIRES]");
-		mj_append_field(&expired_obj, "expiry", "integer",
-			(int64_t)(pubkey->birthtime + pubkey->duration));
-		mj_append_field(&key_obj, "expiration", "object", &expired_obj);
-	}
-	(void) memset(&uids_array, 0x0, sizeof(uids_array));
-	mj_create(&uids_array, "array");
+	mj_append_field(keyjson, "birthtime", "integer", pubkey->birthtime);
+	mj_append_field(keyjson, "duration", "integer", pubkey->duration);
 	for (i = 0; i < key->uidc; i++) {
 		if ((r = isrevoked(key, i)) >= 0 &&
 		    key->revokes[r].code == OPS_REVOCATION_COMPROMISED) {
 			continue;
 		}
-		mj_append(&uids_array, "string", key->uids[i]);
-		mj_append(&uids_array, "integer", r);
-		(void) memset(&sig_array, 0x0, sizeof(sig_array));
-		mj_create(&sig_array, "array");
+		(void) memset(&sub_obj, 0x0, sizeof(sub_obj));
+		mj_create(&sub_obj, "array");
+		mj_append(&sub_obj, "string", key->uids[i]);
+		mj_append(&sub_obj, "string", (r >= 0) ? "[REVOKED]" : "");
+		mj_append_field(keyjson, "uid", "array", &sub_obj);
+		mj_delete(&sub_obj);
 		for (j = 0 ; j < key->subsigc ; j++) {
-			(void) memset(&sig_obj, 0x0, sizeof(sig_obj));
-			mj_create(&sig_obj, "object");
 			if (psigs) {
 				if (key->subsigs[j].uid != i) {
 					continue;
@@ -541,39 +524,39 @@
 						continue;
 				}
 			}
-			mj_append_field(&sig_obj, "pgp version", "integer", (int64_t)key->subsigs[j].sig.info.version);
+			(void) memset(&sub_obj, 0x0, sizeof(sub_obj));
+			mj_create(&sub_obj, "array");
 			if (key->subsigs[j].sig.info.version == 4 &&
 					key->subsigs[j].sig.info.type == OPS_SIG_SUBKEY) {
-				mj_append_field(&sig_obj, "header", "string", "sub");
-				mj_append_field(&sig_obj, "key size", "integer", (int64_t)numkeybits(pubkey));
-				mj_append_field(&sig_obj, "pka", "string",
+				mj_append(&sub_obj, "integer", (int64_t)numkeybits(pubkey));
+				mj_append(&sub_obj, "string",
 					(const char *)__ops_show_pka(key->subsigs[j].sig.info.key_alg));
-				mj_append_field(&sig_obj, "signer", "string",
+				mj_append(&sub_obj, "string",
 					strhexdump(keyid, key->subsigs[j].sig.info.signer_id, OPS_KEY_ID_SIZE, ""));
-				mj_append_field(&sig_obj, "signtime", "integer",
-					(int64_t)key->subsigs[j].sig.info.birthtime);
+				mj_append(&sub_obj, "integer", (int64_t)key->subsigs[j].sig.info.birthtime);
+				mj_append_field(keyjson, "sub", "array", &sub_obj);
+				mj_delete(&sub_obj);
 			} else {
-				mj_append_field(&sig_obj, "signer", "string",
+				mj_append(&sub_obj, "string",
 					strhexdump(keyid, key->subsigs[j].sig.info.signer_id, OPS_KEY_ID_SIZE, ""));
-				mj_append_field(&sig_obj, "signtime", "integer",
+				mj_append(&sub_obj, "integer",
 					(int64_t)(key->subsigs[j].sig.info.birthtime));
 				from = 0;
 				trustkey = __ops_getkeybyid(io, keyring, key->subsigs[j].sig.info.signer_id, &from);
-				mj_append_field(&sig_obj, "trustkey", "string",
+				mj_append(&sub_obj, "string",
 					(trustkey) ? (char *)trustkey->uids[trustkey->uid0] : "[unknown]");
+				mj_append_field(keyjson, "sig", "array", &sub_obj);
+				mj_delete(&sub_obj);
 			}
-			mj_append(&sig_array, "object", &sig_obj);
-			mj_delete(&sig_obj);
-		}
-		if (mj_arraycount(&sig_array) > 0) {
-			mj_append(&uids_array, "array", &sig_array);
 		}
-		mj_delete(&sig_array);
 	}
-	mj_append_field(&key_obj, "uids", "array", &uids_array);
-	mj_delete(&uids_array);
-	mj_asprint(buf, &key_obj);
-	mj_delete(&key_obj);
+	if (__ops_get_debug_level(__FILE__)) {
+		char	*buf;
+
+		mj_asprint(&buf, keyjson);
+		(void) fprintf(stderr, "__ops_sprint_mj: '%s'\n", buf);
+		free(buf);
+	}
 	return 1;
 }
 

Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.37 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.38
--- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.37	Fri Jul  9 05:35:35 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h	Sat Aug  7 04:16:40 2010
@@ -58,7 +58,7 @@
 #endif
 
 /* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION	"3.99.7"
+#define NETPGP_BASE_VERSION	"3.99.8"
 
 #define NETPGP_VERSION_CAT(a, b)	"NetPGP portable " a "/[" b "]"
 #define NETPGP_VERSION_STRING \

Index: src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.16 src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.17
--- src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile:1.16	Fri Jul  9 05:36:28 2010
+++ src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile	Sat Aug  7 04:16:40 2010
@@ -117,16 +117,16 @@
 PACKAGE = netpgp
 PACKAGE_BUGREPORT = Alistair Crooks <a...@netbsd.org> c0596823
 PACKAGE_NAME = netpgp
-PACKAGE_STRING = netpgp 20100707
+PACKAGE_STRING = netpgp 20100708
 PACKAGE_TARNAME = netpgp
-PACKAGE_VERSION = 20100707
+PACKAGE_VERSION = 20100708
 PATH_SEPARATOR = :
 RANLIB = ranlib
 SED = /usr/bin/sed
 SET_MAKE = 
 SHELL = /bin/ksh
 STRIP = strip
-VERSION = 20100707
+VERSION = 20100708
 WARNCFLAGS = -Werror -Wall -Wpointer-arith
 abs_builddir = /usr/src/crypto/external/bsd/netpgp/dist/src/netpgp
 abs_srcdir = /usr/src/crypto/external/bsd/netpgp/dist/src/netpgp

Index: src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in:1.2 src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in:1.3
--- src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in:1.2	Wed Jun 10 00:38:09 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgp/Makefile.in	Sat Aug  7 04:16:40 2010
@@ -37,7 +37,8 @@
 DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -83,37 +84,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -121,6 +128,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -133,8 +141,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -165,6 +172,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in:1.1 src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in:1.2
--- src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in:1.1	Wed Jun 10 00:38:10 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/Makefile.in	Sat Aug  7 04:16:41 2010
@@ -37,7 +37,8 @@
 DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -83,37 +84,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -121,6 +128,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -133,8 +141,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -165,6 +172,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c:1.14 src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c:1.15
--- src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c:1.14	Thu Jul  1 04:27:21 2010
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpkeys/netpgpkeys.c	Sat Aug  7 04:16:41 2010
@@ -33,11 +33,13 @@
 #include <sys/stat.h>
 
 #include <getopt.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
+#include <mj.h>
 #include <netpgp.h>
 
 /*
@@ -156,6 +158,190 @@
 		progname, progname, usagemsg);
 }
 
+/* vararg print function */
+static void
+p(FILE *fp, char *s, ...)
+{
+	va_list	args;
+
+	va_start(args, s);
+	while (s != NULL) {
+		(void) fprintf(fp, "%s", s);
+		s = va_arg(args, char *);
+	}
+	va_end(args);
+}
+
+/* print a JSON object to the FILE stream */
+static void
+pobj(FILE *fp, mj_t *obj, int depth)
+{
+	int	i;
+
+	for (i = 0 ; i < depth ; i++) {
+		p(fp, " ", NULL);
+	}
+	switch(obj->type) {
+	case MJ_NULL:
+	case MJ_FALSE:
+	case MJ_TRUE:
+		p(fp, (obj->type == MJ_NULL) ? "null" : (obj->type == MJ_FALSE) ? "false" : "true", NULL);
+		break;
+	case MJ_NUMBER:
+		p(fp, obj->value.s, NULL);
+		break;
+	case MJ_STRING:
+		(void) fprintf(fp, "%.*s", (int)(obj->c), obj->value.s);
+		break;
+	case MJ_ARRAY:
+		for (i = 0 ; i < obj->c ; i++) {
+			pobj(fp, &obj->value.v[i], depth + 1);
+			if (i < obj->c - 1) {
+				(void) fprintf(fp, ", "); 
+			}
+		}
+		(void) fprintf(fp, "\n"); 
+		break;
+	case MJ_OBJECT:
+		for (i = 0 ; i < obj->c ; i += 2) {
+			pobj(fp, &obj->value.v[i], depth + 1);
+			p(fp, ": ", NULL); 
+			pobj(fp, &obj->value.v[i + 1], 0);
+			if (i < obj->c - 1) {
+				p(fp, ", ", NULL); 
+			}
+		}
+		p(fp, "\n", NULL); 
+		break;
+	default:
+		break;
+	}
+}
+
+/* return the time as a string */
+static char * 
+ptimestr(char *dest, size_t size, time_t t)
+{
+	struct tm      *tm;
+
+	tm = gmtime(&t);
+	(void) snprintf(dest, size, "%04d-%02d-%02d",
+		tm->tm_year + 1900,
+		tm->tm_mon + 1,
+		tm->tm_mday);
+	return dest;
+}
+
+/* format a JSON object */
+static void
+formatobj(FILE *fp, mj_t *obj, const int psigs)
+{
+	int64_t	 birthtime;
+	int64_t	 duration;
+	time_t	 now;
+	char	 tbuf[32];
+	char	*s;
+	mj_t	*sub;
+	int	 r;
+	int	 i;
+
+	if (__ops_get_debug_level(__FILE__)) {
+		mj_asprint(&s, obj);
+		(void) fprintf(stderr, "formatobj: json is '%s'\n", s);
+		free(s);
+	}
+	pobj(fp, &obj->value.v[mj_object_find(obj, "header", 0, 2) + 1], 0);
+	p(fp, " ", NULL);
+	pobj(fp, &obj->value.v[mj_object_find(obj, "key bits", 0, 2) + 1], 0);
+	p(fp, "/", NULL);
+	pobj(fp, &obj->value.v[mj_object_find(obj, "pka", 0, 2) + 1], 0);
+	p(fp, " ", NULL);
+	pobj(fp, &obj->value.v[mj_object_find(obj, "key id", 0, 2) + 1], 0);
+	birthtime = strtoll(obj->value.v[mj_object_find(obj, "birthtime", 0, 2) + 1].value.s, NULL, 10);
+	p(fp, " ", ptimestr(tbuf, sizeof(tbuf), birthtime), NULL);
+	duration = strtoll(obj->value.v[mj_object_find(obj, "duration", 0, 2) + 1].value.s, NULL, 10);
+	if (duration > 0) {
+		now = time(NULL);
+		p(fp, " ", (birthtime + duration < now) ? "[EXPIRED " : "[EXPIRES ",
+			ptimestr(tbuf, sizeof(tbuf), birthtime + duration), "]", NULL);
+	}
+	p(fp, "\n", "Key fingerprint: ", NULL);
+	pobj(fp, &obj->value.v[mj_object_find(obj, "fingerprint", 0, 2) + 1], 0);
+	p(fp, "\n", NULL);
+	/* go to field after \"duration\" */
+	for (i = mj_object_find(obj, "duration", 0, 2) + 2; i < mj_arraycount(obj) ; i += 2) {
+		if (strcmp(obj->value.v[i].value.s, "uid") == 0) {
+			sub = &obj->value.v[i + 1];
+			p(fp, "uid", NULL);
+			pobj(fp, &sub->value.v[0], (psigs) ? 4 : 14); /* human name */
+			pobj(fp, &sub->value.v[1], 1); /* any revocation */
+			p(fp, "\n", NULL);
+		} else if (strcmp(obj->value.v[i].value.s, "sub") == 0) {
+			sub = &obj->value.v[i + 1];
+			p(fp, "sub", NULL);
+			pobj(fp, &sub->value.v[0], 1);	/* size */
+			p(fp, "/", NULL);
+			pobj(fp, &sub->value.v[1], 0); /* alg */
+			p(fp, " ", NULL);
+			pobj(fp, &sub->value.v[2], 0); /* id */
+			p(fp, " ", ptimestr(tbuf, sizeof(tbuf), strtoll(sub->value.v[3].value.s, NULL, 10)),
+				"\n", NULL);
+		} else if (strcmp(obj->value.v[i].value.s, "sig") == 0) {
+			sub = &obj->value.v[i + 1];
+			p(fp, "sig", NULL);
+			pobj(fp, &sub->value.v[0], 8);	/* size */
+			p(fp, "  ", ptimestr(tbuf, sizeof(tbuf), strtoll(sub->value.v[1].value.s, NULL, 10)),
+				" ", NULL); /* time */
+			pobj(fp, &sub->value.v[2], 0); /* human name */
+			p(fp, "\n", NULL);
+		} else {
+			fprintf(stderr, "weird '%s'\n", obj->value.v[i].value.s);
+			pobj(fp, &obj->value.v[i], 0); /* human name */
+		}
+	}
+	p(fp, "\n", NULL);
+}
+
+/* match keys, decoding from json if we do find any */
+static int
+match_keys(netpgp_t *netpgp, FILE *fp, char *f, const int psigs)
+{
+	char	*json;
+	mj_t	 ids;
+	int	 from;
+	int	 idc;
+	int	 tok;
+	int	 to;
+	int	 i;
+
+	if (f == NULL) {
+		if (!netpgp_list_keys_json(netpgp, &json, psigs)) {
+			return 0;
+		}
+	} else {
+		if (netpgp_match_keys_json(netpgp, &json, f, "human", psigs) == 0) {
+			return 0;
+		}
+	}
+	if (__ops_get_debug_level(__FILE__)) {
+		(void) fprintf(stderr, "match_keys: json is '%s'\n", json);
+	}
+	/* ids is an array of strings, each containing 1 entry */
+	(void) memset(&ids, 0x0, sizeof(ids));
+	from = to = tok = 0;
+	/* convert from string into an mj structure */
+	(void) mj_parse(&ids, json, &from, &to, &tok);
+	idc = mj_arraycount(&ids);
+	(void) fprintf(fp, "%d key%s found\n", idc, (idc == 1) ? "" : "s");
+	for (i = 0 ; i < idc ; i++) {
+		formatobj(fp, &ids.value.v[i], psigs);
+	}
+	/* clean up */
+	free(json);
+	mj_delete(&ids);
+	return idc;
+}
+
 /* do a command once for a specified file 'f' */
 static int
 netpgp_cmd(netpgp_t *netpgp, prog_t *p, char *f)
@@ -164,9 +350,8 @@
 
 	switch (p->cmd) {
 	case LIST_KEYS:
-		return (f == NULL) ? netpgp_list_keys(netpgp, 0) : netpgp_match_keys(netpgp, f, "human", stdout, 0);
 	case LIST_SIGS:
-		return (f == NULL) ? netpgp_list_keys(netpgp, 1) : netpgp_match_keys(netpgp, f, "human", stdout, 1);
+		return match_keys(netpgp, stdout, f, (p->cmd == LIST_SIGS));
 	case FIND_KEY:
 		return netpgp_find_key(netpgp, netpgp_getvar(netpgp, "userid"));
 	case EXPORT_KEY:

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.15 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.16
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile:1.15	Fri Jul  9 05:36:29 2010
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile	Sat Aug  7 04:16:41 2010
@@ -118,16 +118,16 @@
 PACKAGE = netpgp
 PACKAGE_BUGREPORT = Alistair Crooks <a...@netbsd.org> c0596823
 PACKAGE_NAME = netpgp
-PACKAGE_STRING = netpgp 20100707
+PACKAGE_STRING = netpgp 20100708
 PACKAGE_TARNAME = netpgp
-PACKAGE_VERSION = 20100707
+PACKAGE_VERSION = 20100708
 PATH_SEPARATOR = :
 RANLIB = ranlib
 SED = /usr/bin/sed
 SET_MAKE = 
 SHELL = /bin/ksh
 STRIP = strip
-VERSION = 20100707
+VERSION = 20100708
 WARNCFLAGS = -Werror -Wall -Wpointer-arith
 abs_builddir = /usr/src/crypto/external/bsd/netpgp/dist/src/netpgpverify
 abs_srcdir = /usr/src/crypto/external/bsd/netpgp/dist/src/netpgpverify

Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in:1.3 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in:1.4
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in:1.3	Mon May 31 06:09:41 2010
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/Makefile.in	Sat Aug  7 04:16:41 2010
@@ -37,7 +37,8 @@
 DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/ax_check_openssl.m4 \
+	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -49,7 +50,6 @@
 am_netpgpverify_OBJECTS = netpgpverify-verify.$(OBJEXT)
 netpgpverify_OBJECTS = $(am_netpgpverify_OBJECTS)
 netpgpverify_DEPENDENCIES = ../lib/libnetpgp.la
-netpgpverify_LDADD = ../lib/libnetpgp.la
 DEFAULT_INCLUDES = -...@am__isrc@ -I$(top_builddir)/src/lib
 depcomp = $(SHELL) $(top_srcdir)/buildaux/depcomp
 am__depfiles_maybe = depfiles
@@ -84,37 +84,43 @@
 CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
 GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENSSL_INCLUDES = @OPENSSL_INCLUDES@
+OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
@@ -122,6 +128,7 @@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -134,8 +141,7 @@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -166,6 +172,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
@@ -184,6 +191,7 @@
 AM_CFLAGS = $(WARNCFLAGS)
 netpgpverify_SOURCES = verify.c
 netpgpverify_CPPFLAGS = -I$(top_srcdir)/include
+netpgpverify_LDADD = ../lib/libnetpgp.la
 man1_MANS = netpgpverify.1
 dist_man_MANS = netpgpverify.1
 all: all-am

Reply via email to