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