Module Name: src Committed By: agc Date: Mon May 18 03:55:42 UTC 2009
Modified Files: src/crypto/external/bsd/netpgp/dist: configure configure.ac tst src/crypto/external/bsd/netpgp/dist/src/lib: config.h crypto.c crypto.h keyring.h packet-parse.c packet-parse.h packet-print.c validate.c validate.h version.h Log Message: + some more name changes + we've had the ability to sign files with a detached signature for a while now. We can now verify the files using the detached signature file. + in honour of this, update version numbers - 1.0.0/20090517 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/crypto/external/bsd/netpgp/dist/configure \ src/crypto/external/bsd/netpgp/dist/configure.ac cvs rdiff -u -r1.2 -r1.3 src/crypto/external/bsd/netpgp/dist/tst cvs rdiff -u -r1.6 -r1.7 src/crypto/external/bsd/netpgp/dist/src/lib/config.h \ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h \ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h \ src/crypto/external/bsd/netpgp/dist/src/lib/version.h cvs rdiff -u -r1.9 -r1.10 \ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c \ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c cvs rdiff -u -r1.5 -r1.6 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h cvs rdiff -u -r1.11 -r1.12 \ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c cvs rdiff -u -r1.10 -r1.11 \ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c cvs rdiff -u -r1.7 -r1.8 \ src/crypto/external/bsd/netpgp/dist/src/lib/validate.h 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/configure diff -u src/crypto/external/bsd/netpgp/dist/configure:1.6 src/crypto/external/bsd/netpgp/dist/configure:1.7 --- src/crypto/external/bsd/netpgp/dist/configure:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/configure Mon May 18 03:55:42 2009 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.63 for netpgp 20090515. +# Generated by GNU Autoconf 2.63 for netpgp 20090517. # # Report bugs to <Alistair Crooks <a...@netbsd.org> c0596823>. # @@ -596,8 +596,8 @@ # Identity of this package. PACKAGE_NAME='netpgp' PACKAGE_TARNAME='netpgp' -PACKAGE_VERSION='20090515' -PACKAGE_STRING='netpgp 20090515' +PACKAGE_VERSION='20090517' +PACKAGE_STRING='netpgp 20090517' PACKAGE_BUGREPORT='Alistair Crooks <a...@netbsd.org> c0596823' ac_unique_file="src/bin/netpgp.c" @@ -1268,7 +1268,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 20090515 to adapt to many kinds of systems. +\`configure' configures netpgp 20090517 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1338,7 +1338,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of netpgp 20090515:";; + short | recursive ) echo "Configuration of netpgp 20090517:";; esac cat <<\_ACEOF @@ -1418,7 +1418,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -netpgp configure 20090515 +netpgp configure 20090517 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1432,7 +1432,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 20090515, which was +It was created by netpgp $as_me 20090517, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -6161,7 +6161,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 20090515, which was +This file was extended by netpgp $as_me 20090517, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6220,7 +6220,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -netpgp config.status 20090515 +netpgp config.status 20090517 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.6 src/crypto/external/bsd/netpgp/dist/configure.ac:1.7 --- src/crypto/external/bsd/netpgp/dist/configure.ac:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/configure.ac Mon May 18 03:55:42 2009 @@ -1,7 +1,7 @@ -dnl $Id: configure.ac,v 1.6 2009/05/16 06:30:38 agc Exp $ +dnl $Id: configure.ac,v 1.7 2009/05/18 03:55:42 agc Exp $ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) -AC_INIT([netpgp],[20090515],[Alistair Crooks <a...@netbsd.org> c0596823]) +AC_INIT([netpgp],[20090517],[Alistair Crooks <a...@netbsd.org> c0596823]) AC_CONFIG_SRCDIR([src/bin/netpgp.c]) AC_CONFIG_HEADER(src/lib/config.h) AC_ARG_PROGRAM Index: src/crypto/external/bsd/netpgp/dist/tst diff -u src/crypto/external/bsd/netpgp/dist/tst:1.2 src/crypto/external/bsd/netpgp/dist/tst:1.3 --- src/crypto/external/bsd/netpgp/dist/tst:1.2 Tue May 5 01:28:15 2009 +++ src/crypto/external/bsd/netpgp/dist/tst Mon May 18 03:55:42 2009 @@ -31,6 +31,11 @@ /usr/bin/netpgp --encrypt d /usr/bin/netpgp --decrypt d.gpg diff e d && echo "No differences found" +echo "======> sign/verify detached signature file" +cat configure configure configure configure configure configure > f +/usr/bin/netpgp --sign --detached f +ls -l f f.sig +/usr/bin/netpgp --verify f.sig echo "======> version information" /usr/bin/netpgp --version -rm -f a a.gpg b b.gpg c c.gpg d d.gpg e +rm -f a a.gpg b b.gpg c c.gpg d d.gpg e f f.sig Index: src/crypto/external/bsd/netpgp/dist/src/lib/config.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/config.h:1.6 src/crypto/external/bsd/netpgp/dist/src/lib/config.h:1.7 --- src/crypto/external/bsd/netpgp/dist/src/lib/config.h:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/config.h Mon May 18 03:55:42 2009 @@ -122,13 +122,13 @@ #define PACKAGE_NAME "netpgp" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "netpgp 20090515" +#define PACKAGE_STRING "netpgp 20090517" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "netpgp" /* Define to the version of this package. */ -#define PACKAGE_VERSION "20090515" +#define PACKAGE_VERSION "20090517" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.6 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.7 --- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h Mon May 18 03:55:42 2009 @@ -120,7 +120,7 @@ void __ops_print_seckeydata(const __ops_keydata_t *); void __ops_list_packets(char *, unsigned, __ops_keyring_t *, - __ops_parse_cb_t *); + __ops_cbfunc_t *); int __ops_export_key(const __ops_keydata_t *, unsigned char *); Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h:1.6 src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h:1.7 --- src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.h Mon May 18 03:55:42 2009 @@ -76,9 +76,9 @@ OPS_FINISHED } __ops_parse_cb_return_t; -typedef struct __ops_parse_cb_info_t __ops_callback_data_t; +typedef struct __ops_callback_data_t __ops_callback_data_t; -typedef __ops_parse_cb_return_t __ops_parse_cb_t(const __ops_packet_t *, +typedef __ops_parse_cb_return_t __ops_cbfunc_t(const __ops_packet_t *, __ops_callback_data_t *); __ops_parse_cb_return_t @@ -117,8 +117,8 @@ __ops_error_t *__ops_parseinfo_get_errors(__ops_parseinfo_t *); __ops_crypt_t *__ops_parse_get_decrypt(__ops_parseinfo_t *); -void __ops_set_callback(__ops_parseinfo_t *, __ops_parse_cb_t *, void *); -void __ops_parse_cb_push(__ops_parseinfo_t *, __ops_parse_cb_t *, void *); +void __ops_set_callback(__ops_parseinfo_t *, __ops_cbfunc_t *, void *); +void __ops_parse_cb_push(__ops_parseinfo_t *, __ops_cbfunc_t *, void *); void *__ops_parse_cb_get_arg(__ops_callback_data_t *); void *__ops_parse_cb_get_errors(__ops_callback_data_t *); void __ops_reader_set(__ops_parseinfo_t *, __ops_reader_func_t *, Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.6 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.7 --- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.6 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h Mon May 18 03:55:42 2009 @@ -58,7 +58,7 @@ #endif /* development versions have .99 suffix */ -#define NETPGP_BASE_VERSION "0.99.4" +#define NETPGP_BASE_VERSION "1.0.0" #define NETPGP_VERSION_CAT(a, b) "NetPGP portable " a "/[" b "]" #define NETPGP_VERSION_STRING \ Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.9 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.10 --- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.9 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c Mon May 18 03:55:42 2009 @@ -54,7 +54,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: crypto.c,v 1.9 2009/05/16 06:30:38 agc Exp $"); +__RCSID("$NetBSD: crypto.c,v 1.10 2009/05/18 03:55:42 agc Exp $"); #endif #include <sys/types.h> @@ -311,7 +311,7 @@ __ops_keyring_t *keyring, const unsigned use_armour, const unsigned allow_overwrite, - __ops_parse_cb_t *cb_get_passphrase) + __ops_cbfunc_t *cb_get_passphrase) { __ops_parseinfo_t *parse = NULL; char *filename = NULL; @@ -369,7 +369,7 @@ /* setup keyring and passphrase callback */ parse->cbinfo.cryptinfo.keyring = keyring; - parse->cbinfo.cryptinfo.cb_get_passphrase = cb_get_passphrase; + parse->cbinfo.cryptinfo.getpassphrase = cb_get_passphrase; /* Set up armour/passphrase options */ if (use_armour) { @@ -425,7 +425,7 @@ return get_seckey_cb(pkt, cbinfo); case OPS_PARSER_CMD_GET_SK_PASSPHRASE: - return cbinfo->cryptinfo.cb_get_passphrase(pkt, cbinfo); + return cbinfo->cryptinfo.getpassphrase(pkt, cbinfo); case OPS_PTAG_CT_LITERAL_DATA_BODY: return litdata_cb(pkt, cbinfo); 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.9 src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.10 --- src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.9 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c Mon May 18 03:55:42 2009 @@ -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.9 2009/05/16 06:30:38 agc Exp $"); +__RCSID("$NetBSD: packet-print.c,v 1.10 2009/05/18 03:55:42 agc Exp $"); #endif #include <string.h> @@ -1216,7 +1216,7 @@ __ops_list_packets(char *filename, unsigned armour, __ops_keyring_t *keyring, - __ops_parse_cb_t *cb_get_passphrase) + __ops_cbfunc_t *cb_get_passphrase) { __ops_parseinfo_t *pinfo = NULL; const unsigned accumulate = 1; @@ -1226,7 +1226,7 @@ accumulate); __ops_parse_options(pinfo, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED); pinfo->cryptinfo.keyring = keyring; - pinfo->cryptinfo.cb_get_passphrase = cb_get_passphrase; + pinfo->cryptinfo.getpassphrase = cb_get_passphrase; if (armour) { __ops_reader_push_dearmour(pinfo); } Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.5 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.6 --- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.5 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h Mon May 18 03:55:42 2009 @@ -183,7 +183,7 @@ const __ops_keydata_t *, const unsigned, const unsigned); unsigned __ops_decrypt_file(const char *, const char *, __ops_keyring_t *, - const unsigned, const unsigned, __ops_parse_cb_t *); + const unsigned, const unsigned, __ops_cbfunc_t *); /* Keys */ __ops_keydata_t *__ops_rsa_new_selfsign_keypair(const int, @@ -216,16 +216,16 @@ char *passphrase; __ops_keyring_t *keyring; const __ops_keydata_t *keydata; - __ops_parse_cb_t *cb_get_passphrase; + __ops_cbfunc_t *getpassphrase; }; -/** __ops_parse_cb_info */ -struct __ops_parse_cb_info_t { - __ops_parse_cb_t *cb; /* callback function */ +/** __ops_callback_data_t */ +struct __ops_callback_data_t { + __ops_cbfunc_t *cbfunc; /* callback function */ void *arg; /* args to pass to callback func */ __ops_error_t **errors; /* address of error stack */ __ops_callback_data_t *next; - __ops_output_t *output; /* used if writing out parsed info */ + __ops_output_t *output;/* used if writing out parsed info */ __ops_cryptinfo_t cryptinfo; /* used when decrypting */ }; Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.11 src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.12 --- src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c:1.11 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-parse.c Mon May 18 03:55:42 2009 @@ -58,7 +58,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: packet-parse.c,v 1.11 2009/05/16 06:30:38 agc Exp $"); +__RCSID("$NetBSD: packet-parse.c,v 1.12 2009/05/18 03:55:42 agc Exp $"); #endif #ifdef HAVE_OPENSSL_CAST_H @@ -3060,182 +3060,6 @@ return r; } -#if 0 -static int -parse_detached(__ops_parseinfo_t *pinfo, unsigned long *pktlen) -{ - __ops_packet_t pkt; - __ops_region_t region; - unsigned char ptag[1]; - struct stat st; - unsigned indeterminate = 0; - int ret; - - (void) memset(&pkt, 0x0, sizeof(pkt)); - pkt.u.ptag.position = pinfo->readinfo.position; - if (__ops_get_debug_level(__FILE__)) { - (void) fprintf(stderr, - "__ops_parse_packet: base_read returned %d\n", - ret); - } - ptag = (OPS_PTAG_ALWAYS_SET | OPS_PTAG_NEW_FORMAT); - *pktlen = 0; - if (!(*ptag & OPS_PTAG_ALWAYS_SET)) { - pkt.u.error.error = "Format error (ptag bit not set)"; - CALLBACK(&pinfo->cbinfo, OPS_PARSER_ERROR, &pkt); - return 0; - } - pkt.u.ptag.new_format = !!(*ptag & OPS_PTAG_NEW_FORMAT); - if (pkt.u.ptag.new_format) { - pkt.u.ptag.type = - *ptag & OPS_PTAG_NF_CONTENT_TAG_MASK; - pkt.u.ptag.length_type = 0; - if (!read_new_length(&pkt.u.ptag.length, pinfo)) { - return 0; - } - } else { - unsigned rb; - - rb = 0; - pkt.u.ptag.type = ((unsigned)*ptag & - OPS_PTAG_OF_CONTENT_TAG_MASK) - >> OPS_PTAG_OF_CONTENT_TAG_SHIFT; - pkt.u.ptag.length_type = - *ptag & OPS_PTAG_OF_LENGTH_TYPE_MASK; - switch (pkt.u.ptag.length_type) { - case OPS_PTAG_OLD_LEN_1: - rb = _read_scalar(&pkt.u.ptag.length, 1, pinfo); - break; - - case OPS_PTAG_OLD_LEN_2: - rb = _read_scalar(&pkt.u.ptag.length, 2, pinfo); - break; - - case OPS_PTAG_OLD_LEN_4: - rb = _read_scalar(&pkt.u.ptag.length, 4, pinfo); - break; - - case OPS_PTAG_OLD_LEN_INDETERMINATE: - pkt.u.ptag.length = 0; - indeterminate = 1; - rb = 1; - break; - } - if (!rb) { - return 0; - } - } - - CALLBACK(&pinfo->cbinfo, OPS_PARSER_PTAG, &pkt); - - __ops_init_subregion(®ion, NULL); - region.length = pkt.u.ptag.length; - region.indeterminate = indeterminate; - if (__ops_get_debug_level(__FILE__)) { - (void) fprintf(stderr, "__ops_parse_packet: type %d\n", - pkt.u.ptag.type); - } - switch (pkt.u.ptag.type) { - case OPS_PTAG_CT_SIGNATURE: - ret = parse_sig(®ion, pinfo); - break; - - case OPS_PTAG_CT_PUBLIC_KEY: - case OPS_PTAG_CT_PUBLIC_SUBKEY: - ret = parse_pubkey(pkt.u.ptag.type, ®ion, - pinfo); - break; - - case OPS_PTAG_CT_TRUST: - ret = parse_trust(®ion, pinfo); - break; - - case OPS_PTAG_CT_USER_ID: - ret = parse_userid(®ion, pinfo); - break; - - case OPS_PTAG_CT_COMPRESSED: - ret = parse_compressed(®ion, pinfo); - break; - - case OPS_PTAG_CT_ONE_PASS_SIGNATURE: - ret = parse_one_pass(®ion, pinfo); - break; - - case OPS_PTAG_CT_LITERAL_DATA: - ret = parse_litdata(®ion, pinfo); - break; - - case OPS_PTAG_CT_USER_ATTRIBUTE: - ret = parse_userattr(®ion, pinfo); - break; - - case OPS_PTAG_CT_SECRET_KEY: - ret = parse_seckey(®ion, pinfo); - break; - - case OPS_PTAG_CT_SECRET_SUBKEY: - ret = parse_seckey(®ion, pinfo); - break; - - case OPS_PTAG_CT_PK_SESSION_KEY: - ret = parse_pk_sesskey(®ion, pinfo); - break; - - case OPS_PTAG_CT_SE_DATA: - ret = parse_se_data(®ion, pinfo); - break; - - case OPS_PTAG_CT_SE_IP_DATA: - ret = parse_se_ip_data(®ion, pinfo); - break; - - case OPS_PTAG_CT_MDC: - ret = parse_mdc(®ion, pinfo); - break; - - default: - OPS_ERROR_1(&pinfo->errors, OPS_E_P_UNKNOWN_TAG, - "Unknown content tag 0x%x", - pkt.u.ptag.type); - ret = 0; - } - - /* Ensure that the entire packet has been consumed */ - - if (region.length != region.readc && !region.indeterminate) { - if (!consume_packet(®ion, pinfo, 0)) { - ret = -1; - } - } - - /* also consume it if there's been an error? */ - /* \todo decide what to do about an error on an */ - /* indeterminate packet */ - if (ret == 0) { - if (!consume_packet(®ion, pinfo, 0)) { - ret = -1; - } - } - /* set pktlen */ - - *pktlen = pinfo->readinfo.alength; - - /* do callback on entire packet, if desired and there was no error */ - - if (ret > 0 && pinfo->readinfo.accumulate) { - pkt.u.packet.length = pinfo->readinfo.alength; - pkt.u.packet.raw = pinfo->readinfo.accumulated; - pinfo->readinfo.accumulated = NULL; - pinfo->readinfo.asize = 0; - CALLBACK(&pinfo->cbinfo, OPS_PARSER_PACKET_END, &pkt); - } - pinfo->readinfo.alength = 0; - - return (ret < 0) ? -1 : (ret) ? 1 : 0; -} -#endif - /** \ingroup Core_ReadPackets \brief Read a Symmetrically Encrypted packet @@ -3646,9 +3470,9 @@ */ void -__ops_set_callback(__ops_parseinfo_t *pinfo, __ops_parse_cb_t *cb, void *arg) +__ops_set_callback(__ops_parseinfo_t *pinfo, __ops_cbfunc_t *cb, void *arg) { - pinfo->cbinfo.cb = cb; + pinfo->cbinfo.cbfunc = cb; pinfo->cbinfo.arg = arg; pinfo->cbinfo.errors = &pinfo->errors; } @@ -3659,7 +3483,7 @@ \sa __ops_set_callback() */ void -__ops_parse_cb_push(__ops_parseinfo_t *pinfo, __ops_parse_cb_t *cb, void *arg) +__ops_parse_cb_push(__ops_parseinfo_t *pinfo, __ops_cbfunc_t *cb, void *arg) { __ops_callback_data_t *cbinfo = calloc(1, sizeof(*cbinfo)); @@ -3694,10 +3518,9 @@ \return Return value from callback, if present; else OPS_FINISHED */ __ops_parse_cb_return_t -__ops_parse_cb(const __ops_packet_t *pkt, - __ops_callback_data_t *cbinfo) +__ops_parse_cb(const __ops_packet_t *pkt, __ops_callback_data_t *cbinfo) { - return (cbinfo->cb) ? cbinfo->cb(pkt, cbinfo) : OPS_FINISHED; + return (cbinfo->cbfunc) ? cbinfo->cbfunc(pkt, cbinfo) : OPS_FINISHED; } /** Index: src/crypto/external/bsd/netpgp/dist/src/lib/validate.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.10 src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.11 --- src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.10 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c Mon May 18 03:55:42 2009 @@ -54,7 +54,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: validate.c,v 1.10 2009/05/16 06:30:38 agc Exp $"); +__RCSID("$NetBSD: validate.c,v 1.11 2009/05/18 03:55:42 agc Exp $"); #endif #include <sys/types.h> @@ -348,8 +348,8 @@ break; case OPS_PARSER_CMD_GET_SK_PASSPHRASE: - if (key->cb_get_passphrase) { - return key->cb_get_passphrase(pkt, cbinfo); + if (key->getpassphrase) { + return key->getpassphrase(pkt, cbinfo); } break; @@ -360,6 +360,32 @@ return OPS_RELEASE_MEMORY; } +static unsigned char * +readfile(const char *f, size_t *len) +{ + unsigned char *buf; + struct stat st; + FILE *fp; + int cc; + int n; + + if ((fp = fopen(f, "r")) == NULL) { + (void) fprintf(stderr, + "readfile: can't open \"%s\" for reading\n", f); + return NULL; + } + (void) fstat(fileno(fp), &st); + *len = (size_t)st.st_size; + if ((buf = calloc(1, *len)) != NULL) { + for (n = 0 ; + (cc = read(fileno(fp), &buf[n], *len - n)) > 0 ; + n += cc) { + } + } + (void) fclose(fp); + return buf; +} + __ops_parse_cb_return_t validate_data_cb(const __ops_packet_t *pkt, __ops_callback_data_t *cbinfo) { @@ -437,8 +463,26 @@ switch (content->sig.info.type) { case OPS_SIG_BINARY: case OPS_SIG_TEXT: - valid = check_binary_sig( - __ops_mem_len(data->mem), + if (__ops_mem_len(data->mem) == 0 && + data->detachname) { + /* check we have seen some data */ + /* if not, need to read from detached name */ + unsigned char *detached; + size_t len = 0; + + printf( + "netpgp: assuming signed data in \"%s\"\n", + data->detachname); + detached = readfile(data->detachname, &len); + if (detached != NULL) { + data->mem = __ops_memory_new(); + __ops_memory_init(data->mem, len); + __ops_memory_add(data->mem, detached, + len); + (void) free(detached); + } + } + valid = check_binary_sig(__ops_mem_len(data->mem), __ops_mem_data(data->mem), &content->sig, __ops_get_pubkey(signer)); @@ -476,26 +520,6 @@ break; case OPS_PARSER_PACKET_END: -#if 0 - /* check we have seen some data */ - /* if not, need to read from synthetic literal data */ - if (data->detachname) { - unsigned char *detached; - size_t len = 0; - - printf("Reading detached sig from %s\n", - data->detachname); - data->data.litdata_body = content->litdata_body; - data->use = LITERAL_DATA; - detached = readfile(data->detachname, &len); - if (detached != NULL) { - __ops_memory_add(data->mem, detached, len); - (void) free(detached); - pkt->tag = OPS_PTAG_CT_LITERAL_DATA_BODY; - return OPS_KEEP_MEMORY; - } - } -#endif break; default: @@ -559,7 +583,7 @@ (void) memset(&keysigs, 0x0, sizeof(keysigs)); keysigs.result = result; - keysigs.cb_get_passphrase = cb_get_passphrase; + keysigs.getpassphrase = cb_get_passphrase; pinfo = __ops_parseinfo_new(); /* __ops_parse_options(&opt,OPS_PTAG_CT_SIGNATURE,OPS_PARSE_PARSED); */ @@ -679,10 +703,9 @@ cc = snprintf(origfile, sizeof(origfile), "%s", infile); if (strcmp(&origfile[cc - 4], ".sig") == 0) { origfile[cc - 4] = 0x0; - if (stat(origfile, &st) == 0) { - if (st.st_size > sigsize - SIG_OVERHEAD) { - detachname = strdup(origfile); - } + if (stat(origfile, &st) == 0 && + st.st_size > sigsize - SIG_OVERHEAD) { + detachname = strdup(origfile); } } @@ -694,9 +717,7 @@ return 0; } - if (detachname) { - validation.detachname = strdup(detachname); - } + validation.detachname = detachname; /* setup output filename */ filename = NULL; Index: src/crypto/external/bsd/netpgp/dist/src/lib/validate.h diff -u src/crypto/external/bsd/netpgp/dist/src/lib/validate.h:1.7 src/crypto/external/bsd/netpgp/dist/src/lib/validate.h:1.8 --- src/crypto/external/bsd/netpgp/dist/src/lib/validate.h:1.7 Sat May 16 06:30:38 2009 +++ src/crypto/external/bsd/netpgp/dist/src/lib/validate.h Mon May 18 03:55:42 2009 @@ -70,7 +70,7 @@ const __ops_keyring_t *keyring; validate_reader_t *reader; __ops_validation_t *result; - __ops_parse_cb_return_t(*cb_get_passphrase) (const __ops_packet_t *, + __ops_parse_cb_return_t(*getpassphrase) (const __ops_packet_t *, __ops_callback_data_t *); } validate_key_cb_t;