[svn] GnuPG - r5278 - in trunk: sm tools

svn author wk cvs at cvs.gnupg.org
Mon Mar 8 13:22:18 CET 2010


Author: wk
Date: 2010-03-08 13:22:18 +0100 (Mon, 08 Mar 2010)
New Revision: 5278

Modified:
   trunk/sm/ChangeLog
   trunk/sm/base64.c
   trunk/sm/decrypt.c
   trunk/sm/encrypt.c
   trunk/sm/export.c
   trunk/sm/gpgsm.c
   trunk/sm/gpgsm.h
   trunk/sm/import.c
   trunk/sm/server.c
   trunk/sm/sign.c
   trunk/sm/verify.c
   trunk/tools/ChangeLog
   trunk/tools/no-libgcrypt.c
Log:
Replace use stdio by estream functions.


Modified: trunk/sm/ChangeLog
===================================================================
--- trunk/sm/ChangeLog	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/ChangeLog	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,3 +1,29 @@
+2010-03-08  Werner Koch  <wk at g10code.com>
+
+	* server.c (cmd_encrypt, cmd_decrypt, cmd_verify, cmd_sign): Avoid
+	dup call by using es_fdopen_nc.
+	(do_listkeys): Use es_fdopen_nc instead of dup and es_fdopen.
+	* export.c (popen_protect_tool): Change OUTFILE to an estream_t.
+	(export_p12): Change OUTFP and arg RETFP to an estream_t.
+	(gpgsm_p12_export): Change DATAFP to an estream_t.
+	* import.c (import_one): Change CERTFP and arg FP to an estream_t.
+	(popen_protect_tool): Ditto for OUTFILE.
+	(parse_p12): Change CERTFP to an estream_t.
+	* sign.c (hash_data, hash_and_copy_data): Use estream.
+	(gpgsm_sign): Change arg OUT_FP to an estream_t.
+	* verify.c (gpgsm_verify): Rename FP to IN_FP.  Change FP and arg
+	OUT_FP to an estream_t.
+	(hash_data): Use estream.
+	* base64.c (struct reader_cb_parm_s): Change FP to an estream_t.
+	(gpgsm_create_reader): Ditto.
+	(simple_reader_cb, base64_reader_cb): Adjust accordingly.
+	* decrypt.c (gpgsm_decrypt): Change OUT_FP and IN_FP to an estream_t.
+	* encrypt.c (gpgsm_encrypt): Change OUT_FP to an estream_t.  Ditto
+	for DATA_FD.
+	(encrypt_cb): Use estream.
+	* gpgsm.c (main) <aEncr, aVerify, aSign, aDecrypt>: Use estream
+	functions.
+
 2009-12-14  Werner Koch  <wk at g10code.com>
 
 	* server.c (cmd_passwd): New.
@@ -324,7 +350,7 @@
 	* server.c (cmd_encrypt): Ditto.
 	(cmd_decrypt, cmd_verify, cmd_import, cmd_genkey): Ditto.
 	* call-agent.c (gpgsm_scd_pksign): Ditto.
-	* call-dirmngr.c (release_dirmngr, release_dirmngr2) 
+	* call-dirmngr.c (release_dirmngr, release_dirmngr2)
 	(run_command_cb): Ditto.
 	* certlist.c (gpgsm_add_cert_to_certlist): Ditto.
 	* certchain.c (find_up_dirmngr): Ditto.
@@ -364,7 +390,7 @@
 2008-09-03  Werner Koch  <wk at g10code.com>
 
 	* sign.c (MY_GCRY_MD_SHA224): New, so that we don't need libgcrypt
-	1.2. 
+	1.2.
 
 2008-08-13  Werner Koch  <wk at g10code.com>
 
@@ -468,7 +494,7 @@
 	(gpgsm_walk_cert_chain): Use it here.
 
 	* gpgsm.c: Add option --no-common-certs-import.
-	
+
 	* certchain.c (find_up_dirmngr, find_up, do_validate_chain)
 	(check_cert_policy): Be more silent with --quiet.
 
@@ -481,8 +507,8 @@
 	* server.c (option_handler): Add option allow-pinentry-notify.
 	(gpgsm_proxy_pinentry_notify): New.
 	* call-agent.c (default_inq_cb): New.
-	(gpgsm_agent_pksign, gpgsm_scd_pksign, gpgsm_agent_readkey) 
-	(gpgsm_agent_istrusted, gpgsm_agent_marktrusted) 
+	(gpgsm_agent_pksign, gpgsm_scd_pksign, gpgsm_agent_readkey)
+	(gpgsm_agent_istrusted, gpgsm_agent_marktrusted)
 	(gpgsm_agent_passwd, gpgsm_agent_get_confirmation): Call it.
 	(struct cipher_parm_s, struct genkey_parm_s): Add field CTRL.
 	(inq_ciphertext_cb): Test keyword and fallback to default_inq_cb.
@@ -580,7 +606,7 @@
 
 	* gpgsm.c (get_status_string): Remove.
 	* gpgsm.h: Include status.h instead of errors.h.
-	
+
 2007-10-19  Werner Koch  <wk at g10code.com>
 
 	* qualified.c (gpgsm_qualified_consent): Use i18N-swicth functions.
@@ -594,7 +620,7 @@
 
 2007-08-24  Werner Koch  <wk at g10code.com>
 
-	* Makefile.am (common_libs): Swap libkeybox and jnlib. 
+	* Makefile.am (common_libs): Swap libkeybox and jnlib.
 
 2007-08-23  Werner Koch  <wk at g10code.com>
 
@@ -614,7 +640,7 @@
 
 	* import.c (parse_p12): Use gnupg_tmpfile.
 	* export.c (export_p12): Ditto.
-	
+
 2007-08-20  Werner Koch  <wk at g10code.com>
 
 	* certreqgen.c (read_parameters): Change FP to an estream_t.
@@ -669,7 +695,7 @@
 2007-08-06  Werner Koch  <wk at g10code.com>
 
 	Implementation of the chain model.
-	
+
 	* gpgsm.h (struct rootca_flags_s): Define new members VALID and
 	CHAIN_MODEL.
 	* call-agent.c (gpgsm_agent_istrusted): Mark ROOTCA_FLAGS valid.
@@ -721,7 +747,7 @@
 	when passing an int value.
 	* server.c (cmd_encrypt, cmd_decrypt, cmd_verify, cmd_import)
 	(cmd_export, cmd_message, cmd_genkey): 	Translate file descriptors.
-	
+
 2007-07-05  Werner Koch  <wk at g10code.com>
 
 	* Makefile.am (common_libs): Changed order of libs.
@@ -746,7 +772,7 @@
 2007-06-24  Werner Koch  <wk at g10code.com>
 
 	* gpgsm.c (open_es_fwrite): Avoid the dup by using the new
-	es_fdopen_nc().  
+	es_fdopen_nc().
 
 2007-06-21  Werner Koch  <wk at g10code.com>
 
@@ -849,14 +875,14 @@
 	the certificate is not available.
 
 	* gpgsm.c: Add option --p12-charset.
-	* gpgsm.h (struct opt): Add p12_charset. 
+	* gpgsm.h (struct opt): Add p12_charset.
 	* export.c (popen_protect_tool): Use new option.
 
 2007-03-19  Werner Koch  <wk at g10code.com>
 
         Changes to let export and key listing use estream to help systems
 	without funopen.
-	
+
 	* keylist.c: Use estream in place of stdio functions.
 	* gpgsm.c (open_es_fwrite): New.
 	(main): Use it for the list commands.
@@ -872,7 +898,7 @@
 	(print_dn_parts): Ditto.
 	* certchain.c (gpgsm_validate_chain): Changed FP to type
 	estream_t.
-	(do_list, unknown_criticals, allowed_ca, check_cert_policy) 
+	(do_list, unknown_criticals, allowed_ca, check_cert_policy)
 	(is_cert_still_valid): Ditto.
 
 	* export.c (gpgsm_export): New arg STREAM.
@@ -974,7 +1000,7 @@
 
 2006-10-17  Werner Koch  <wk at g10code.com>
 
-	* gpgsm.c: No need for pth.h.  
+	* gpgsm.c: No need for pth.h.
 	(main): or to init it. It used to be hack for W32.
 
 	* sign.c (gpgsm_get_default_cert): Changed to return only
@@ -982,7 +1008,7 @@
 
 2006-10-16  Werner Koch  <wk at g10code.com>
 
-	* certchain.c (already_asked_marktrusted) 
+	* certchain.c (already_asked_marktrusted)
 	(set_already_asked_marktrusted): New.
 	(gpgsm_validate_chain) <not trusted>: Keep track of certificates
 	we already asked for.
@@ -1014,7 +1040,7 @@
 
 	* certchain.c (gpgsm_validate_chain): More changes for the relax
 	feature.  Use certificate reference counting instead of the old
-	explicit tests. Added a missing free. 
+	explicit tests. Added a missing free.
 
 2006-09-25  Werner Koch  <wk at g10code.com>
 
@@ -1065,9 +1091,9 @@
 
 	Replaced all Assuan error codes by libgpg-error codes.  Removed
 	all map_to_assuan_status and map_assuan_err.
-	
+
 	* gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
-	switch to gpg-error codes.  
+	switch to gpg-error codes.
 	* server.c (set_error): Adjusted.
 
 2006-08-29  Werner Koch  <wk at g10code.com>
@@ -1111,7 +1137,7 @@
 	* keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
 	* delete.c (delete_one): Add new argument to invocation of
 	keydb_delete.
-	
+
 2006-05-15  Werner Koch  <wk at g10code.com>
 
 	* keylist.c (print_names_raw): Sanitize URI.
@@ -1330,7 +1356,7 @@
 	(run_command_status_cb): Return cancel status if gpgsm_status
 	returned an error.
 
-	* server.c (gpgsm_status, gpgsm_status2) 
+	* server.c (gpgsm_status, gpgsm_status2)
 	(gpgsm_status_with_err_code): Return an error code.
 	(gpgsm_status2): Always call va_end().
 
@@ -1420,7 +1446,7 @@
 	* Makefile.am: Adjusted for gettext 0.14.
 
 	* keylist.c (list_cert_colon): Make sure that the expired flag has
-	a higher precedence than the invalid flag. 
+	a higher precedence than the invalid flag.
 
 2004-09-29  Werner Koch  <wk at g10code.com>
 
@@ -1455,7 +1481,7 @@
 
 	* certchain.c (gpgsm_basic_cert_check): Print more detailed error
 	messages.
-	
+
 	* certcheck.c (do_encode_md): Partly support DSA.  Add new arg
 	PKALGO. Changed all callers to pass it.
 	(pk_algo_from_sexp): New.
@@ -1492,7 +1518,7 @@
 2004-06-06  Werner Koch  <wk at gnupg.org>
 
 	* certreqgen.c (get_parameter_uint, create_request): Create
-	an extension for key usage when requested. 
+	an extension for key usage when requested.
 
 2004-05-12  Werner Koch  <wk at gnupg.org>
 
@@ -1548,9 +1574,9 @@
 	* gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
 	filename.
 
-	* call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
-	(gpgsm_agent_genkey, gpgsm_agent_istrusted) 
-	(gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
+	* call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt)
+	(gpgsm_agent_genkey, gpgsm_agent_istrusted)
+	(gpgsm_agent_marktrusted, gpgsm_agent_havekey)
 	(gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
 	(start_agent): New arg CTRL.  Send progress item when starting a
 	new agent.
@@ -1582,7 +1608,7 @@
 
 2004-04-08  Werner Koch  <wk at gnupg.org>
 
-	* decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
+	* decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a
 	encrypted message.
 
 2004-04-07  Werner Koch  <wk at gnupg.org>
@@ -1686,12 +1712,12 @@
 
 	* export.c (export_p12, popen_protect_tool)
 	(gpgsm_p12_export): New.
-	* gpgsm.c (main): New command --export-secret-key-p12. 
+	* gpgsm.c (main): New command --export-secret-key-p12.
 
 2004-02-18  Werner Koch  <wk at gnupg.org>
 
 	* gpgsm.c (set_debug): Set the new --debug-level flags.
-	(main): New option --gpgconf-list.  
+	(main): New option --gpgconf-list.
 	(main): Do not setup -u and -r keys when not required.
 	(main): Setup the used character set.
 
@@ -1713,7 +1739,7 @@
 	WITH_VALIDATION. Changed callers to set it.
 	(list_external_cb, list_external_keys): Pass CTRL to the callback.
 	(list_cert_colon): Add arg CTRL.  Check validation if requested.
-	* certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
+	* certchain.c (unknown_criticals, allowed_ca, check_cert_policy)
 	(gpgsm_validate_chain): New args LISTMODE and FP.
 	(do_list): New helper for info output.
 	(find_up): New arg FIND_NEXT.
@@ -1730,7 +1756,7 @@
 	* certcheck.c (gpgsm_create_cms_signature): Format a description
 	for use by the pinentry.
 	* decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
-	* certdump.c (format_name_cookie, format_name_writer) 
+	* certdump.c (format_name_cookie, format_name_writer)
 	(gpgsm_format_name): New.
 	(gpgsm_format_serial): New.
 	(gpgsm_format_keydesc): New.
@@ -1804,7 +1830,7 @@
 	(print_dn_part): Do not delimit multiple RDN by " + ".  Handle
 	multi-valued RDNs in a special way, i.e. in the order specified by
 	the certificate.
-	(print_dn_parts): Simplified. 
+	(print_dn_parts): Simplified.
 
 2004-01-16  Werner Koch  <wk at gnupg.org>
 
@@ -1892,7 +1918,7 @@
 2003-08-14  Timo Schulz  <twoaday at freakmail.de>
 
 	* encrypt.c (encode_session_key): Use new Libgcrypt interface.
-	
+
 2003-07-31  Werner Koch  <wk at gnupg.org>
 
 	* Makefile.am (gpgsm_LDADD): Added INTLLIBS.
@@ -1915,7 +1941,7 @@
 	* verify.c (strtimestamp): Renamed to strtimestamp_r
 
 	Adjusted for changes in the libgcrypt API. Some more fixes for the
-	libgpg-error stuff.  
+	libgpg-error stuff.
 
 2003-06-04  Werner Koch  <wk at gnupg.org>
 
@@ -1944,7 +1970,7 @@
 
 2002-11-25  Werner Koch  <wk at gnupg.org>
 
-	* verify.c (gpgsm_verify): Handle content-type attribute. 
+	* verify.c (gpgsm_verify): Handle content-type attribute.
 
 2002-11-13  Werner Koch  <wk at gnupg.org>
 
@@ -1954,7 +1980,7 @@
 
 2002-11-12  Werner Koch  <wk at gnupg.org>
 
-	* gpgsm.c: New command --call-dirmngr. 
+	* gpgsm.c: New command --call-dirmngr.
 	* call-dirmngr.c (gpgsm_dirmngr_run_command)
 	(run_command_inq_cb,run_command_cb)
 	(run_command_status_cb): New.
@@ -1972,7 +1998,7 @@
 
 	* certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
 
-	* certchain.c (find_up): Print info when the cert was not found 
+	* certchain.c (find_up): Print info when the cert was not found
 	by the autorithyKeyIdentifier.
 
 2002-09-03  Werner Koch  <wk at gnupg.org>
@@ -2046,10 +2072,10 @@
 	* sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
 	multiple signers.
 	* gpgsm.c (main): Support more than one -u.
-	
+
 	* server.c (cmd_recipient): Return reason code 1 for No_Public_Key
 	which is actually what gets returned from add_to_certlist.
-	
+
 2002-07-26  Werner Koch  <wk at gnupg.org>
 
 	* certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
@@ -2151,7 +2177,7 @@
 2002-06-24  Werner Koch  <wk at gnupg.org>
 
 	* gpgsm.c: Removed duped help entry for --list-keys.
-	
+
 	* gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
 
 	* certpath.c (gpgsm_validate_path): Use it here instead of the
@@ -2194,7 +2220,7 @@
 	* export.c (gpgsm_export): Kludge to export epehmeral certificates.
 
 	* gpgsm.c (main): New command --list-external-keys.
-	
+
 2002-06-17  Werner Koch  <wk at gnupg.org>
 
 	* certreqgen.c (read_parameters): Improved error handling.
@@ -2216,7 +2242,7 @@
 	* sign.c (hash_and_copy_data): New.
 	(gpgsm_sign): Implemented normal (non-detached) signatures.
 	* gpgsm.c (main): Ditto.
-	
+
 	* certpath.c (gpgsm_validate_path): Special error handling for
 	no policy match.
 
@@ -2224,7 +2250,7 @@
 
 	* server.c (get_status_string): Add STATUS_ERROR.
 
-	* certpath.c (gpgsm_validate_path): Tweaked the error checking to 
+	* certpath.c (gpgsm_validate_path): Tweaked the error checking to
 	return error codes in a more sensitive way.
 	* verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
 	CA certificate and when the certificate has been revoked.  Issue
@@ -2346,7 +2372,7 @@
 	* export.c: New.
 	* gpgsm.c: Add command --export.
 	* server.c (cmd_export): New.
-	
+
 2002-03-13  Werner Koch  <wk at gnupg.org>
 
 	* decrypt.c (gpgsm_decrypt): Allow multiple recipients.
@@ -2588,10 +2614,10 @@
 	print the first item.
 	* keylist.c (list_cert_colon): Ditto.
 	* keydb.c (keydb_search_issuer_sn): Ditto.
-	* decrypt.c (print_integer_sexp): Removed and made callers 
+	* decrypt.c (print_integer_sexp): Removed and made callers
 	use gpgsm_dump_serial.
 	* verify.c (print_time): Removed, made callers use gpgsm_dump_time.
-	
+
 2001-12-19  Marcus Brinkmann  <marcus at g10code.de>
 
 	* call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
@@ -2647,7 +2673,7 @@
 	* base64.c (base64_reader_cb): Reset the linelen when we need to
 	skip the line and adjusted test; I somehow forgot about DeMorgan.
 
-	* server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
+	* server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify)
 	(cmd_import): Close the FDs on success.
 	(close_message_fd): New.
 	(input_notify): Setting autodetect_encoding to 0 after initializing
@@ -2671,7 +2697,7 @@
 
 2001-12-12  Werner Koch  <wk at gnupg.org>
 
-	* gpgsm.c (main): New options --assume-{armor,base64,binary}. 
+	* gpgsm.c (main): New options --assume-{armor,base64,binary}.
 	* base64.c (base64_reader_cb): Fixed non-autodetection mode.
 
 2001-12-04  Werner Koch  <wk at gnupg.org>
@@ -2699,10 +2725,10 @@
 
 	* server.c (rc_to_assuan_status): New.  Use it for all commands.
 
-	
- Copyright 2001, 2002, 2003, 2004, 2005, 2006,
-	   2007, 2008, 2009 Free Software Foundation, Inc.
 
+ Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+	   2010 Free Software Foundation, Inc.
+
  This file is free software; as a special exception the author gives
  unlimited permission to copy and/or distribute it, with or without
  modifications, as long as this notice is preserved.

Modified: trunk/tools/ChangeLog
===================================================================
--- trunk/tools/ChangeLog	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/tools/ChangeLog	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,3 +1,7 @@
+2010-03-08  Werner Koch  <wk at g10code.com>
+
+	* no-libgcrypt.c (gcry_create_nonce): New.
+
 2010-02-26  Werner Koch  <wk at g10code.com>
 
 	* gpg-connect-agent.c (main): New option --tcp-socket.

Modified: trunk/sm/base64.c
===================================================================
--- trunk/sm/base64.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/base64.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,5 @@
 /* base64.c 
- *	Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2003, 2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -39,9 +39,10 @@
   #define LF "\n"
 #endif
 
-/* data used by the reader callbacks */
-struct reader_cb_parm_s {
-  FILE *fp;
+/* Data used by the reader callbacks.  */
+struct reader_cb_parm_s 
+{
+  estream_t fp;
   
   unsigned char line[1024];
   int linelen;
@@ -69,7 +70,8 @@
   } base64;
 };
 
-/* data used by the writer callbacks */
+
+/* Data used by the writer callbacks.  */
 struct writer_cb_parm_s {
   FILE *fp;            /* FP is only used if STREAM is NULL.  */
   estream_t stream;    /* Alternative output if not NULL.  */
@@ -179,11 +181,11 @@
       parm->have_lf = 0;
       for (n=0; n < DIM(parm->line);)
         {
-          c = getc (parm->fp);
+          c = es_getc (parm->fp);
           if (c == EOF)
             {
               parm->eof_seen = 1;
-              if (ferror (parm->fp))
+              if (es_ferror (parm->fp))
                 return -1;
               break; 
             }
@@ -382,14 +384,14 @@
 
   for (n=0; n < count; n++)
     {
-      c = getc (parm->fp);
+      c = es_getc (parm->fp);
       if (c == EOF)
         {
           parm->eof_seen = 1;
-          if ( ferror (parm->fp) )
+          if (es_ferror (parm->fp))
             return -1;
           if (n)
-            break; /* return what we have before an EOF */
+            break; /* Return what we have before an EOF.  */
           return -1;
         }
       *(byte *)buffer++ = c;
@@ -579,7 +581,7 @@
    until no more objects were found. */
 int
 gpgsm_create_reader (Base64Context *ctx,
-                     ctrl_t ctrl, FILE *fp, int allow_multi_pem,
+                     ctrl_t ctrl, estream_t fp, int allow_multi_pem,
                      ksba_reader_t *r_reader)
 {
   int rc;

Modified: trunk/sm/decrypt.c
===================================================================
--- trunk/sm/decrypt.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/decrypt.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,5 @@
 /* decrypt.c - Decrypt a message
- *	Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2003, 2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -33,7 +33,8 @@
 #include "keydb.h"
 #include "i18n.h"
 
-struct decrypt_filter_parm_s {
+struct decrypt_filter_parm_s 
+{
   int algo;
   int mode;
   int blklen;
@@ -237,7 +238,7 @@
 
 /* Perform a decrypt operation.  */
 int
-gpgsm_decrypt (ctrl_t ctrl, int in_fd, FILE *out_fp)
+gpgsm_decrypt (ctrl_t ctrl, int in_fd, estream_t out_fp)
 {
   int rc;
   Base64Context b64reader = NULL;
@@ -248,7 +249,7 @@
   ksba_stop_reason_t stopreason;
   KEYDB_HANDLE kh;
   int recp;
-  FILE *in_fp = NULL;
+  estream_t in_fp = NULL;
   struct decrypt_filter_parm_s dfparm;
 
   memset (&dfparm, 0, sizeof dfparm);
@@ -263,11 +264,10 @@
       goto leave;
     }
 
-
-  in_fp = fdopen ( dup (in_fd), "rb");
+  in_fp = es_fdopen_nc (in_fd, "rb");
   if (!in_fp)
     {
-      rc = gpg_error (gpg_err_code_from_errno (errno));
+      rc = gpg_error_from_syserror ();
       log_error ("fdopen() failed: %s\n", strerror (errno));
       goto leave;
     }
@@ -279,7 +279,7 @@
       goto leave;
     }
 
-  rc = gpgsm_create_writer (&b64writer, ctrl, out_fp, NULL, &writer);
+  rc = gpgsm_create_writer (&b64writer, ctrl, NULL, out_fp, &writer);
   if (rc)
     {
       log_error ("can't create writer: %s\n", gpg_strerror (rc));
@@ -576,8 +576,7 @@
   gpgsm_destroy_reader (b64reader);
   gpgsm_destroy_writer (b64writer);
   keydb_release (kh); 
-  if (in_fp)
-    fclose (in_fp);
+  es_fclose (in_fp);
   if (dfparm.hd)
     gcry_cipher_close (dfparm.hd); 
   return rc;

Modified: trunk/sm/encrypt.c
===================================================================
--- trunk/sm/encrypt.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/encrypt.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,6 @@
 /* encrypt.c - Encrypt a message
- * Copyright (C) 2001, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2003, 2004, 2007, 2008,
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -45,8 +46,11 @@
 };
 typedef struct dek_s *DEK;
 
-struct encrypt_cb_parm_s {
-  FILE *fp;
+
+/* Callback parameters for the encryption.  */
+struct encrypt_cb_parm_s 
+{
+  estream_t fp;
   DEK dek;
   int eof_seen;
   int ready;
@@ -239,10 +243,10 @@
       p = parm->buffer;
       for (n=parm->buflen; n < parm->bufsize; n++)
         {
-          int c = getc (parm->fp);
+          int c = es_getc (parm->fp);
           if (c == EOF)
             {
-              if (ferror (parm->fp))
+              if (es_ferror (parm->fp))
                 {
                   parm->readerror = errno;
                   return -1;
@@ -289,7 +293,7 @@
    recipients are take from the certificate given in recplist; if this
    is NULL it will be encrypted for a default recipient */
 int
-gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, FILE *out_fp)
+gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int data_fd, estream_t out_fp)
 {
   int rc = 0;
   Base64Context b64writer = NULL;
@@ -302,7 +306,7 @@
   struct encrypt_cb_parm_s encparm;
   DEK dek = NULL;
   int recpno;
-  FILE *data_fp = NULL;
+  estream_t data_fp = NULL;
   certlist_t cl;
   int count;
 
@@ -337,10 +341,11 @@
       goto leave;
     }
 
-  data_fp = fdopen ( dup (data_fd), "rb");
+  /* Fixme:  We should use the unlocked version of the es functions.  */
+  data_fp = es_fdopen_nc (data_fd, "rb");
   if (!data_fp)
     {
-      rc = gpg_error (gpg_err_code_from_errno (errno));
+      rc = gpg_error_from_syserror ();
       log_error ("fdopen() failed: %s\n", strerror (errno));
       goto leave;
     }
@@ -356,7 +361,7 @@
   encparm.fp = data_fp;
 
   ctrl->pem_name = "ENCRYPTED MESSAGE";
-  rc = gpgsm_create_writer (&b64writer, ctrl, out_fp, NULL, &writer);
+  rc = gpgsm_create_writer (&b64writer, ctrl, NULL, out_fp, &writer);
   if (rc)
     {
       log_error ("can't create writer: %s\n", gpg_strerror (rc));
@@ -506,8 +511,7 @@
   ksba_reader_release (reader);
   keydb_release (kh); 
   xfree (dek);
-  if (data_fp)
-    fclose (data_fp);
+  es_fclose (data_fp);
   xfree (encparm.buffer);
   return rc;
 }

Modified: trunk/sm/export.c
===================================================================
--- trunk/sm/export.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/export.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,6 @@
 /* export.c - Export certificates and private keys.
- * Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2003, 2004, 2007, 2009,
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -60,7 +61,7 @@
 static gpg_error_t export_p12 (ctrl_t ctrl,
                                const unsigned char *certimg, size_t certimglen,
                                const char *prompt, const char *keygrip,
-                               FILE **retfp);
+                               estream_t *retfp);
 
 
 /* Create a table used to indetify duplicated certificates. */
@@ -341,7 +342,7 @@
   char *prompt;
   char buffer[1024];
   int  nread;
-  FILE *datafp = NULL;
+  estream_t datafp = NULL;
 
 
   hd = keydb_new (0);
@@ -447,16 +448,16 @@
   xfree (prompt);
   if (rc)
     goto leave;
-  rewind (datafp);
-  while ( (nread = fread (buffer, 1, sizeof buffer, datafp)) > 0 )
+  es_rewind (datafp);
+  while ( (nread = es_fread (buffer, 1, sizeof buffer, datafp)) > 0 )
     if ((rc = ksba_writer_write (writer, buffer, nread)))
       {
         log_error ("write failed: %s\n", gpg_strerror (rc));
         goto leave;
       }
-  if (ferror (datafp))
+  if (es_ferror (datafp))
     {
-      rc = gpg_error_from_errno (rc);
+      rc = gpg_error_from_syserror ();
       log_error ("error reading temporary file: %s\n", gpg_strerror (rc));
       goto leave;
     }
@@ -478,8 +479,7 @@
   cert = NULL;
 
  leave:
-  if (datafp)
-    fclose (datafp);
+  es_fclose (datafp);
   gpgsm_destroy_writer (b64writer);
   ksba_cert_release (cert);
   xfree (desc);
@@ -570,7 +570,7 @@
 
 static gpg_error_t
 popen_protect_tool (ctrl_t ctrl, const char *pgmname,
-                    FILE *infile, FILE *outfile, FILE **statusfile, 
+                    FILE *infile, estream_t outfile, FILE **statusfile, 
                     const char *prompt, const char *keygrip,
                     pid_t *pid)
 {
@@ -614,14 +614,14 @@
 
 static gpg_error_t
 export_p12 (ctrl_t ctrl, const unsigned char *certimg, size_t certimglen,
-            const char *prompt, const char *keygrip,
-            FILE **retfp)
+            const char *prompt, const char *keygrip, estream_t *retfp)
 {
   const char *pgmname;
   gpg_error_t err = 0, child_err = 0;
   int c, cont_line;
   unsigned int pos;
-  FILE *infp = NULL, *outfp = NULL, *fp = NULL;
+  FILE *infp = NULL, *fp = NULL;
+  estream_t outfp = NULL;
   char buffer[1024];
   pid_t pid = -1;
   int bad_pass = 0;
@@ -647,7 +647,7 @@
       goto cleanup;
     }
 
-  outfp = gnupg_tmpfile ();
+  outfp = es_tmpfile ();
   if (!outfp)
     {
       err = gpg_error_from_syserror ();
@@ -731,8 +731,7 @@
     err = child_err;
   if (err)
     {
-      if (outfp)
-        fclose (outfp);
+      es_fclose (outfp);
     }
   else
     *retfp = outfp;

Modified: trunk/sm/gpgsm.c
===================================================================
--- trunk/sm/gpgsm.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/gpgsm.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,6 +1,6 @@
 /* gpgsm.c - GnuPG for S/MIME 
- * Copyright (C) 2001, 2002, 2003, 2004, 2005,
- *               2006, 2007, 2008  Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ *               2010  Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -1702,7 +1702,7 @@
 
     case aEncr: /* Encrypt the given file. */
       {
-        FILE *fp = open_fwrite (opt.outfile?opt.outfile:"-");
+        estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-");
 
         set_binary (stdin);
 
@@ -1713,14 +1713,13 @@
         else
           wrong_args ("--encrypt [datafile]");
 
-        if (fp != stdout)
-          fclose (fp);
+        es_fclose (fp);
       }
       break;
 
     case aSign: /* Sign the given file. */
       {
-        FILE *fp = open_fwrite (opt.outfile?opt.outfile:"-");
+        estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-");
 
         /* Fixme: We should also allow to concatenate multiple files for
            signing because that is what gpg does.*/
@@ -1733,8 +1732,7 @@
         else
           wrong_args ("--sign [datafile]");
 
-        if (fp != stdout)
-          fclose (fp);
+        es_fclose (fp);
       }
       break;
         
@@ -1748,13 +1746,13 @@
 
     case aVerify:
       {
-        FILE *fp = NULL;
+        estream_t fp = NULL;
 
         set_binary (stdin);
         if (argc == 2 && opt.outfile)
           log_info ("option --output ignored for a detached signature\n");
         else if (opt.outfile)
-          fp = open_fwrite (opt.outfile);
+          fp = open_es_fwrite (opt.outfile);
 
         if (!argc)
           gpgsm_verify (&ctrl, 0, -1, fp); /* normal signature from stdin */
@@ -1765,14 +1763,13 @@
         else
           wrong_args ("--verify [signature [detached_data]]");
 
-        if (fp && fp != stdout)
-          fclose (fp);
+        es_fclose (fp);
       }
       break;
 
     case aDecrypt:
       {
-        FILE *fp = open_fwrite (opt.outfile?opt.outfile:"-");
+        estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-");
 
         set_binary (stdin);
         if (!argc)
@@ -1781,8 +1778,8 @@
           gpgsm_decrypt (&ctrl, open_read (*argv), fp); /* from file */
         else
           wrong_args ("--decrypt [filename]");
-        if (fp != stdout)
-          fclose (fp);
+
+        es_fclose (fp);
       }
       break;
 
@@ -2034,9 +2031,9 @@
 
 
 
-/* Open the FILENAME for read and return the filedescriptor.  Stop
+/* Open the FILENAME for read and return the file descriptor.  Stop
    with an error message in case of problems.  "-" denotes stdin and
-   if special filenames are allowed the given fd is opened instead. */
+   if special filenames are allowed the given fd is opened instead.  */
 static int 
 open_read (const char *filename)
 {

Modified: trunk/sm/gpgsm.h
===================================================================
--- trunk/sm/gpgsm.h	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/gpgsm.h	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,6 @@
 /* gpgsm.h - Global definitions for GpgSM
- * Copyright (C) 2001, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2003, 2004, 2007, 2009,
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -255,7 +256,7 @@
 
 /*-- base64.c --*/
 int  gpgsm_create_reader (Base64Context *ctx,
-                          ctrl_t ctrl, FILE *fp, int allow_multi_pem,
+                          ctrl_t ctrl, estream_t fp, int allow_multi_pem,
                           ksba_reader_t *r_reader);
 int gpgsm_reader_eof_seen (Base64Context ctx);
 void gpgsm_destroy_reader (Base64Context ctx);
@@ -350,18 +351,19 @@
 int gpgsm_delete (ctrl_t ctrl, strlist_t names);
 
 /*-- verify.c --*/
-int gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, FILE *out_fp);
+int gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, estream_t out_fp);
 
 /*-- sign.c --*/
 int gpgsm_get_default_cert (ctrl_t ctrl, ksba_cert_t *r_cert);
 int gpgsm_sign (ctrl_t ctrl, certlist_t signerlist,
-                int data_fd, int detached, FILE *out_fp);
+                int data_fd, int detached, estream_t out_fp);
 
 /*-- encrypt.c --*/
-int gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist, int in_fd, FILE *out_fp);
+int gpgsm_encrypt (ctrl_t ctrl, certlist_t recplist,
+                   int in_fd, estream_t out_fp);
 
 /*-- decrypt.c --*/
-int gpgsm_decrypt (ctrl_t ctrl, int in_fd, FILE *out_fp);
+int gpgsm_decrypt (ctrl_t ctrl, int in_fd, estream_t out_fp);
 
 /*-- certreqgen.c --*/
 int gpgsm_genkey (ctrl_t ctrl, estream_t in_stream, FILE *out_fp);

Modified: trunk/sm/import.c
===================================================================
--- trunk/sm/import.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/import.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -48,8 +48,8 @@
  };
 
 
-static gpg_error_t parse_p12 (ctrl_t ctrl, ksba_reader_t reader, FILE **retfp,
-                              struct stats_s *stats);
+static gpg_error_t parse_p12 (ctrl_t ctrl, ksba_reader_t reader,
+                              estream_t *retfp, struct stats_s *stats);
 
 
 
@@ -254,14 +254,14 @@
   ksba_reader_t reader;
   ksba_cert_t cert = NULL;
   ksba_cms_t cms = NULL;
-  FILE *fp = NULL;
+  estream_t fp = NULL;
   ksba_content_type_t ct;
   int any = 0;
 
-  fp = fdopen ( dup (in_fd), "rb");
+  fp = es_fdopen_nc (in_fd, "rb");
   if (!fp)
     {
-      rc = gpg_error (gpg_err_code_from_errno (errno));
+      rc = gpg_error_from_syserror ();
       log_error ("fdopen() failed: %s\n", strerror (errno));
       goto leave;
     }
@@ -331,7 +331,7 @@
              certificate we included in the p12 file; then we continue
              to look for other pkcs12 files (works only if they are in
              PEM format. */
-          FILE *certfp;
+          estream_t certfp;
           Base64Context b64p12rdr;
           ksba_reader_t p12rdr;
           
@@ -340,12 +340,12 @@
             {
               any = 1;
               
-              rewind (certfp);
+              es_rewind (certfp);
               rc = gpgsm_create_reader (&b64p12rdr, ctrl, certfp, 1, &p12rdr);
               if (rc)
                 {
                   log_error ("can't create reader: %s\n", gpg_strerror (rc));
-                  fclose (certfp);
+                  es_fclose (certfp);
                   goto leave;
                 }
 
@@ -366,7 +366,7 @@
               if (gpg_err_code (rc) == GPG_ERR_EOF)
                 rc = 0;
               gpgsm_destroy_reader (b64p12rdr);
-              fclose (certfp);
+              es_fclose (certfp);
               if (rc)
                 goto leave;
             }
@@ -401,8 +401,7 @@
   ksba_cms_release (cms);
   ksba_cert_release (cert);
   gpgsm_destroy_reader (b64reader);
-  if (fp)
-    fclose (fp);
+  es_fclose (fp);
   return rc;
 }
 
@@ -585,7 +584,8 @@
    success or an error code. */
 static gpg_error_t
 popen_protect_tool (ctrl_t ctrl, const char *pgmname,
-                    FILE *infile, FILE *outfile, FILE **statusfile, pid_t *pid)
+                    FILE *infile, estream_t outfile, 
+                    FILE **statusfile, pid_t *pid)
 {
   const char *argv[22];
   int i=0;
@@ -627,17 +627,18 @@
    certificates from that stupid format.  We will also store secret
    keys.  All of the pkcs#12 parsing and key storing is handled by the
    gpg-protect-tool, we merely have to take care of receiving the
-   certificates. On success RETFP returns a temporary file with
-   certificates. */
+   certificates.  On success RETFP returns a stream to a temporary
+   file with certificates.  */
 static gpg_error_t
 parse_p12 (ctrl_t ctrl, ksba_reader_t reader,
-           FILE **retfp, struct stats_s *stats)
+           estream_t *retfp, struct stats_s *stats)
 {
   const char *pgmname;
   gpg_error_t err = 0, child_err = 0;
   int c, cont_line;
   unsigned int pos;
-  FILE *tmpfp, *certfp = NULL, *fp = NULL;
+  FILE *tmpfp, *fp = NULL;
+  estream_t certfp = NULL;
   char buffer[1024];
   size_t nread;
   pid_t pid = -1;
@@ -679,7 +680,7 @@
       goto cleanup;
     }
 
-  certfp = gnupg_tmpfile ();
+  certfp = es_tmpfile ();
   if (!certfp)
     {
       err = gpg_error_from_syserror ();
@@ -780,8 +781,7 @@
     err = child_err;
   if (err)
     {
-      if (certfp)
-        fclose (certfp);
+      es_fclose (certfp);
     }
   else
     *retfp = certfp;

Modified: trunk/sm/server.c
===================================================================
--- trunk/sm/server.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/server.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,6 +1,6 @@
 /* server.c - Server mode and main entry point 
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006,
- *               2007, 2008, 2009 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -451,7 +451,7 @@
   ctrl_t ctrl = assuan_get_pointer (ctx);
   certlist_t cl;
   int inp_fd, out_fd;
-  FILE *out_fp;
+  estream_t out_fp;
   int rc;
 
   (void)line;
@@ -463,9 +463,9 @@
   if (out_fd == -1)
     return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
 
-  out_fp = fdopen (dup (out_fd), "w");
+  out_fp = es_fdopen_nc (out_fd, "w");
   if (!out_fp)
-    return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
+    return set_error (gpg_err_code_from_syserror (), "fdopen() failed");
   
   /* Now add all encrypt-to marked recipients from the default
      list. */
@@ -483,7 +483,7 @@
     rc = gpgsm_encrypt (assuan_get_pointer (ctx),
                         ctrl->server_local->recplist,
                         inp_fd, out_fp);
-  fclose (out_fp);
+  es_fclose (out_fp);
 
   gpgsm_release_certlist (ctrl->server_local->recplist);
   ctrl->server_local->recplist = NULL;
@@ -508,7 +508,7 @@
 {
   ctrl_t ctrl = assuan_get_pointer (ctx);
   int inp_fd, out_fd;
-  FILE *out_fp;
+  estream_t out_fp;
   int rc;
 
   (void)line;
@@ -520,16 +520,16 @@
   if (out_fd == -1)
     return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
 
-  out_fp = fdopen (dup(out_fd), "w");
+  out_fp = es_fdopen_nc (out_fd, "w");
   if (!out_fp)
-    return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
+    return set_error (gpg_err_code_from_syserror (), "fdopen() failed");
 
   rc = start_audit_session (ctrl);
   if (!rc)
     rc = gpgsm_decrypt (ctrl, inp_fd, out_fp); 
-  fclose (out_fp);
+  es_fclose (out_fp);
 
-  /* close and reset the fd */
+  /* Close and reset the fds. */
   close_message_fd (ctrl);
   assuan_close_input_fd (ctx);
   assuan_close_output_fd (ctx);
@@ -554,7 +554,7 @@
   ctrl_t ctrl = assuan_get_pointer (ctx);
   int fd = translate_sys2libc_fd (assuan_get_input_fd (ctx), 0);
   int out_fd = translate_sys2libc_fd (assuan_get_output_fd (ctx), 1);
-  FILE *out_fp = NULL;
+  estream_t out_fp = NULL;
 
   (void)line;
 
@@ -563,19 +563,18 @@
 
   if (out_fd != -1)
     {
-      out_fp = fdopen ( dup(out_fd), "w");
+      out_fp = es_fdopen_nc (out_fd, "w");
       if (!out_fp)
-        return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
+        return set_error (gpg_err_code_from_syserror (), "fdopen() failed");
     }
 
   rc = start_audit_session (ctrl);
   if (!rc)
     rc = gpgsm_verify (assuan_get_pointer (ctx), fd,
                        ctrl->server_local->message_fd, out_fp);
-  if (out_fp)
-    fclose (out_fp);
+  es_fclose (out_fp);
 
-  /* close and reset the fd */
+  /* Close and reset the fd.  */
   close_message_fd (ctrl);
   assuan_close_input_fd (ctx);
   assuan_close_output_fd (ctx);
@@ -595,7 +594,7 @@
 {
   ctrl_t ctrl = assuan_get_pointer (ctx);
   int inp_fd, out_fd;
-  FILE *out_fp;
+  estream_t out_fp;
   int detached;
   int rc;
 
@@ -608,7 +607,7 @@
 
   detached = has_option (line, "--detached"); 
 
-  out_fp = fdopen ( dup(out_fd), "w");
+  out_fp = es_fdopen_nc (out_fd, "w");
   if (!out_fp)
     return set_error (GPG_ERR_ASS_GENERAL, "fdopen() failed");
 
@@ -616,7 +615,7 @@
   if (!rc)
     rc = gpgsm_sign (assuan_get_pointer (ctx), ctrl->server_local->signerlist,
                      inp_fd, detached, out_fp);
-  fclose (out_fp);
+  es_fclose (out_fp);
 
   /* close and reset the fd */
   close_message_fd (ctrl);
@@ -916,9 +915,9 @@
 
       if ( outfd == -1 )
         return set_error (GPG_ERR_ASS_NO_OUTPUT, NULL);
-      fp = es_fdopen ( dup (outfd), "w");
+      fp = es_fdopen_nc (outfd, "w");
       if (!fp)
-        return set_error (GPG_ERR_ASS_GENERAL, "es_fdopen() failed");
+        return set_error (gpg_err_code_from_syserror (), "es_fdopen() failed");
     }
   else
     {

Modified: trunk/sm/sign.c
===================================================================
--- trunk/sm/sign.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/sign.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,6 @@
 /* sign.c - Sign a message
- *	Copyright (C) 2001, 2002, 2003, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2008,
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -38,12 +39,12 @@
 static int
 hash_data (int fd, gcry_md_hd_t md)
 {
-  FILE *fp;
+  estream_t fp;
   char buffer[4096];
   int nread;
   int rc = 0;
 
-  fp = fdopen ( dup (fd), "rb");
+  fp = es_fdopen_nc (fd, "rb");
   if (!fp)
     {
       log_error ("fdopen(%d) failed: %s\n", fd, strerror (errno));
@@ -52,40 +53,41 @@
 
   do 
     {
-      nread = fread (buffer, 1, DIM(buffer), fp);
+      nread = es_fread (buffer, 1, DIM(buffer), fp);
       gcry_md_write (md, buffer, nread);
     }
   while (nread);
-  if (ferror (fp))
+  if (es_ferror (fp))
     {
       log_error ("read error on fd %d: %s\n", fd, strerror (errno));
       rc = -1;
     }
-  fclose (fp);
+  es_fclose (fp);
   return rc;
 }
 
+
 static int
 hash_and_copy_data (int fd, gcry_md_hd_t md, ksba_writer_t writer)
 {
   gpg_error_t err;
-  FILE *fp;
+  estream_t fp;
   char buffer[4096];
   int nread;
   int rc = 0;
   int any = 0;
 
-  fp = fdopen ( dup (fd), "rb");
+  fp = es_fdopen_nc (fd, "rb");
   if (!fp)
     {
-      gpg_error_t tmperr = gpg_error (gpg_err_code_from_errno (errno));
+      gpg_error_t tmperr = gpg_error_from_syserror ();
       log_error ("fdopen(%d) failed: %s\n", fd, strerror (errno));
       return tmperr;
     }
 
   do 
     {
-      nread = fread (buffer, 1, DIM(buffer), fp);
+      nread = es_fread (buffer, 1, DIM(buffer), fp);
       if (nread)
         {
           any = 1;
@@ -99,18 +101,18 @@
         }
     }
   while (nread && !rc);
-  if (ferror (fp))
+  if (es_ferror (fp))
     {
-      rc = gpg_error (gpg_err_code_from_errno (errno));
+      rc = gpg_error_from_syserror ();
       log_error ("read error on fd %d: %s\n", fd, strerror (errno));
     }
-  fclose (fp);
+  es_fclose (fp);
   if (!any)
     {
       /* We can't allow to sign an empty message because it does not
-         make much sense and more seriously, ksba-cms_build has
+         make much sense and more seriously, ksba_cms_build has
          already written the tag for data and now expects an octet
-         string but an octet string of zeize 0 is illegal. */
+         string and an octet string of size 0 is illegal.  */
       log_error ("cannot sign an empty message\n");
       rc = gpg_error (GPG_ERR_NO_DATA);
     }
@@ -310,7 +312,7 @@
    be used if the value of this argument is NULL. */
 int
 gpgsm_sign (ctrl_t ctrl, certlist_t signerlist,
-            int data_fd, int detached, FILE *out_fp)
+            int data_fd, int detached, estream_t out_fp)
 {
   int i, rc;
   gpg_error_t err;
@@ -338,7 +340,7 @@
     }
 
   ctrl->pem_name = "SIGNED MESSAGE";
-  rc = gpgsm_create_writer (&b64writer, ctrl, out_fp, NULL, &writer);
+  rc = gpgsm_create_writer (&b64writer, ctrl, NULL, out_fp, &writer);
   if (rc)
     {
       log_error ("can't create writer: %s\n", gpg_strerror (rc));

Modified: trunk/sm/verify.c
===================================================================
--- trunk/sm/verify.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/sm/verify.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -1,5 +1,6 @@
 /* verify.c - Verify a messages signature
- * Copyright (C) 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2007, 
+ *               2010 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -52,11 +53,11 @@
 hash_data (int fd, gcry_md_hd_t md)
 {
   gpg_error_t err = 0;
-  FILE *fp;
+  estream_t fp;
   char buffer[4096];
   int nread;
 
-  fp = fdopen ( dup (fd), "rb");
+  fp = es_fdopen_nc (fd, "rb");
   if (!fp)
     {
       err = gpg_error_from_syserror ();
@@ -66,27 +67,27 @@
 
   do 
     {
-      nread = fread (buffer, 1, DIM(buffer), fp);
+      nread = es_fread (buffer, 1, DIM(buffer), fp);
       gcry_md_write (md, buffer, nread);
     }
   while (nread);
-  if (ferror (fp))
+  if (es_ferror (fp))
     {
       err = gpg_error_from_syserror ();
       log_error ("read error on fd %d: %s\n", fd, gpg_strerror (err));
     }
-  fclose (fp);
+  es_fclose (fp);
   return err;
 }
 
 
 
 
-/* Perform a verify operation.  To verify detached signatures, data_fd
+/* Perform a verify operation.  To verify detached signatures, DATA_FD
    must be different than -1.  With OUT_FP given and a non-detached
-   signature, the signed material is written to that stream. */
+   signature, the signed material is written to that stream.  */
 int
-gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, FILE *out_fp)
+gpgsm_verify (ctrl_t ctrl, int in_fd, int data_fd, estream_t out_fp)
 {
   int i, rc;
   Base64Context b64reader = NULL;
@@ -102,7 +103,7 @@
   const char *algoid;
   int algo;
   int is_detached;
-  FILE *fp = NULL;
+  estream_t in_fp = NULL;
   char *p;
 
   audit_set_type (ctrl->audit, AUDIT_TYPE_VERIFY);
@@ -116,15 +117,15 @@
     }
 
 
-  fp = fdopen ( dup (in_fd), "rb");
-  if (!fp)
+  in_fp = es_fdopen_nc (in_fd, "rb");
+  if (!in_fp)
     {
-      rc = gpg_error (gpg_err_code_from_errno (errno));
+      rc = gpg_error_from_syserror ();
       log_error ("fdopen() failed: %s\n", strerror (errno));
       goto leave;
     }
 
-  rc = gpgsm_create_reader (&b64reader, ctrl, fp, 0, &reader);
+  rc = gpgsm_create_reader (&b64reader, ctrl, in_fp, 0, &reader);
   if (rc)
     {
       log_error ("can't create reader: %s\n", gpg_strerror (rc));
@@ -133,7 +134,7 @@
 
   if (out_fp)
     {
-      rc = gpgsm_create_writer (&b64writer, ctrl, out_fp, NULL, &writer);
+      rc = gpgsm_create_writer (&b64writer, ctrl, NULL, out_fp, &writer);
       if (rc)
         {
           log_error ("can't create writer: %s\n", gpg_strerror (rc));
@@ -644,8 +645,7 @@
   gpgsm_destroy_writer (b64writer);
   keydb_release (kh); 
   gcry_md_close (data_md);
-  if (fp)
-    fclose (fp);
+  es_fclose (in_fp);
 
   if (rc)
     {

Modified: trunk/tools/no-libgcrypt.c
===================================================================
--- trunk/tools/no-libgcrypt.c	2010-03-08 12:18:19 UTC (rev 5277)
+++ trunk/tools/no-libgcrypt.c	2010-03-08 12:22:18 UTC (rev 5278)
@@ -142,3 +142,13 @@
   (void)f;
   (void)opaque;
 }
+
+
+void
+gcry_create_nonce (void *buffer, size_t length)
+{
+  (void)buffer;
+  (void)length;
+  
+  log_fatal ("unexpected call to gcry_create_nonce\n");
+}




More information about the Gnupg-commits mailing list