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(&region, 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(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_PUBLIC_KEY:
-	case OPS_PTAG_CT_PUBLIC_SUBKEY:
-		ret = parse_pubkey(pkt.u.ptag.type, &region,
-				pinfo);
-		break;
-
-	case OPS_PTAG_CT_TRUST:
-		ret = parse_trust(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_USER_ID:
-		ret = parse_userid(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_COMPRESSED:
-		ret = parse_compressed(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_ONE_PASS_SIGNATURE:
-		ret = parse_one_pass(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_LITERAL_DATA:
-		ret = parse_litdata(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_USER_ATTRIBUTE:
-		ret = parse_userattr(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_SECRET_KEY:
-		ret = parse_seckey(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_SECRET_SUBKEY:
-		ret = parse_seckey(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_PK_SESSION_KEY:
-		ret = parse_pk_sesskey(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_SE_DATA:
-		ret = parse_se_data(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_SE_IP_DATA:
-		ret = parse_se_ip_data(&region, pinfo);
-		break;
-
-	case OPS_PTAG_CT_MDC:
-		ret = parse_mdc(&region, 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(&region, 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(&region, 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;
 

Reply via email to