summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid Shaw <dshaw@jabberwocky.com>2002-06-29 15:31:13 +0200
committerDavid Shaw <dshaw@jabberwocky.com>2002-06-29 15:31:13 +0200
commit151ee2f47bfdaa1273cdfd4855e937fb8f2e1d06 (patch)
treede5bf8049ec1b28b2948ba85542c0a269084a696 /include
parentRemoved files for CVS reorganization (diff)
downloadgnupg2-151ee2f47bfdaa1273cdfd4855e937fb8f2e1d06.tar.xz
gnupg2-151ee2f47bfdaa1273cdfd4855e937fb8f2e1d06.zip
Update head to match stable 1.0
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog174
-rw-r--r--include/cipher.h194
-rw-r--r--include/distfiles5
-rw-r--r--include/errors.h119
-rw-r--r--include/gpga-prot.h127
-rw-r--r--include/host2net.h8
-rw-r--r--include/http.h13
-rw-r--r--include/i18n.h12
-rw-r--r--include/iobuf.h38
-rw-r--r--include/keyserver.h31
-rw-r--r--include/memory.h95
-rw-r--r--include/mpi.h202
-rw-r--r--include/ttyio.h14
-rw-r--r--include/types.h17
-rw-r--r--include/util.h241
15 files changed, 997 insertions, 293 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 91515d4a1..464e339c7 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,48 +1,171 @@
-Fri Aug 18 14:27:14 CEST 2000 Werner Koch <wk@openit.de>
+2002-06-21 Stefan Bellon <sbellon@sbellon.de>
- * gpga-prot.h: New.
+ * util.h [__riscos__]: Further moving away of RISC OS specific
+ stuff from general code.
-Fri Jul 14 19:38:23 CEST 2000 Werner Koch <wk@>
+2002-06-20 Stefan Bellon <sbellon@sbellon.de>
- * http.h (HTTP_FLAG_TRY_PROXY): new.
+ * util.h [__riscos__]: Added riscos_set_filetype().
- * error.h (G10ERR_NOT_PROCESSED): New.
+2002-06-14 David Shaw <dshaw@jabberwocky.com>
- * iobuf.h (IOBUFCTRL_CANCEL): New.
+ * util.h: Add pop_strlist() from strgutil.c.
- * types.h (HAVE_U64_TYPEDEF): Defined depending on configure test.
+2002-06-07 Stefan Bellon <sbellon@sbellon.de>
-Thu Jan 27 18:00:44 CET 2000 Werner Koch <wk@gnupg.de>
+ * util.h [__riscos__]: RISC OS needs strings.h for strcasecmp()
+ and strncasecmp().
- * Changed all "g10_"/"GPG_" prefixes to "gpg_"/"GPG_".
+2002-05-22 Werner Koch <wk@gnupg.org>
-Mon Jan 24 13:04:28 CET 2000 Werner Koch <wk@gnupg.de>
+ * util.h: Add strncasecmp. Removed stricmp and memicmp.
- * memory.h: Removed.
+2002-05-10 Stefan Bellon <sbellon@sbellon.de>
-Wed Dec 8 21:58:32 CET 1999 Werner Koch <wk@gnupg.de>
+ * mpi.h: New function mpi_debug_alloc_like for M_DEBUG.
- * util.h: Moved argparse stuff to the argparse header. Move some
- of the string stuff to the stringhelp header.
+ * util.h [__riscos__]: Make use of __func__ that later
+ Norcroft compiler provides.
- * mpi.h: Moved to ../gcrypt
- * cipher.h: Moved to ../gcrypt
- * g10lib.h: Moved to ../gcrypt
+ * memory.h: Fixed wrong definition of m_alloc_secure_clear.
-Tue Oct 26 14:10:21 CEST 1999 Werner Koch <wk@gnupg.de>
+2002-04-23 David Shaw <dshaw@jabberwocky.com>
- * g10lib.h: Moved from ../gcrypt to here.
+ * util.h: New function answer_is_yes_no_default() to give a
+ default answer.
+
+2002-04-22 Stefan Bellon <sbellon@sbellon.de>
+
+ * util.h [__riscos__]: Removed riscos_open, riscos_fopen and
+ riscos_fstat as those special versions aren't needed anymore.
+
+2002-02-19 David Shaw <dshaw@jabberwocky.com>
+
+ * keyserver.h: Add KEYSERVER_NOT_SUPPORTED for unsupported actions
+ (say, a keyserver that has no way to search, or a readonly
+ keyserver that has no way to add).
+
+2002-01-02 Stefan Bellon <sbellon@sbellon.de>
+
+ * util.h [__riscos__]: Updated prototype list.
+
+ * types.h [__riscos__]: Changed comment wording.
+
+2001-12-27 David Shaw <dshaw@jabberwocky.com>
+
+ * KEYSERVER_SCHEME_NOT_FOUND should be 127 to match the POSIX
+ system() (via /bin/sh) way of signaling this.
+
+ * Added G10ERR_KEYSERVER
+
+2001-12-27 Werner Koch <wk@gnupg.org>
+
+ * util.h [MINGW32]: Fixed name of include file.
+
+2001-12-22 Timo Schulz <ts@winpt.org>
+
+ * util.h (is_file_compressed): New.
+
+2001-12-19 Werner Koch <wk@gnupg.org>
+
+ * util.h [CYGWIN32]: Allow this as an alias for MINGW32. Include
+ stdarg.h becuase we use the va_list type. By Disastry.
+
+2001-09-28 Werner Koch <wk@gnupg.org>
+
+ * cipher.h (PUBKEY_USAGE_CERT): New.
+
+2001-09-07 Werner Koch <wk@gnupg.org>
+
+ * util.h: Add strsep().
+
+2001-08-30 Werner Koch <wk@gnupg.org>
+
+ * cipher.h (DEK): Added use_mdc.
+
+2001-08-24 Werner Koch <wk@gnupg.org>
+
+ * cipher.h (md_write): Made buf arg const.
+
+2001-08-20 Werner Koch <wk@gnupg.org>
+
+ * cipher.h (DEK): Added algo_info_printed;
+
+ * util.h [__riscos__]: Added prototypes and made sure that we
+ never use __attribute__.
+ * cipher.h, iobuf.h, memory.h, mpi.h [__riscos__]: extern hack.
+ * i18n.h [__riscos__]: Use another include file
+
+2001-05-30 Werner Koch <wk@gnupg.org>
+
+ * ttyio.h (tty_printf): Add missing parenthesis for non gcc.
+ * http.h: Removed trailing comma to make old ccs happy. Both are
+ by Albert Chin.
+
+2001-05-25 Werner Koch <wk@gnupg.org>
+
+ * ttyio.h (tty_printf): Add printf attribute.
+
+2001-04-23 Werner Koch <wk@gnupg.org>
+
+ * http.h: New flag HTTP_FLAG_NO_SHUTDOWN.
+
+2001-04-13 Werner Koch <wk@gnupg.org>
+
+ * iobuf.h: Removed iobuf_fopen.
+
+2001-03-01 Werner Koch <wk@gnupg.org>
+
+ * errors.h (G10ERR_UNU_SECKEY,G10ERR_UNU_PUBKEY): New
+
+2000-11-30 Werner Koch <wk@gnupg.org>
+
+ * iobuf.h (iobuf_translate_file_handle): Add prototype.
+
+2000-11-11 Paul Eggert <eggert@twinsun.com>
+
+ * iobuf.h (iobuf_get_filelength): Now returns off_t, not u32.
+ (struct iobuf_struct, iobuf_set_limit,
+ iobuf_tell, iobuf_seek): Use off_t, not ulong, for file offsets.
+
+2000-10-12 Werner Koch <wk@gnupg.org>
+
+ * mpi.h: Changed the way mpi_limb_t is defined.
+
+Wed Sep 6 17:55:47 CEST 2000 Werner Koch <wk@openit.de>
+
+ * iobuf.c (IOBUF_FILELENGTH_LIMIT): New.
+
+2000-03-14 14:03:43 Werner Koch (wk@habibti.openit.de)
+
+ * types.h (HAVE_U64_TYPEDEF): Defined depending on configure test.
+
+Thu Jan 13 19:31:58 CET 2000 Werner Koch <wk@gnupg.de>
+
+ * types.h (HAVE_U64_TYPEDEF): Add a test for _LONGLONG which fixes
+ this long living SGI bug. Reported by Alec Habig.
+
+Sat Dec 4 12:30:28 CET 1999 Werner Koch <wk@gnupg.de>
+
+ * iobuf.h (IOBUFCTRL_CANCEL): Nww.
+
+Mon Oct 4 21:23:04 CEST 1999 Werner Koch <wk@gnupg.de>
+
+ * errors.h (G10ERR_NOT_PROCESSED): New.
Wed Sep 15 16:22:17 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
+
* i18n.h: Add support for simple-gettext.
Tue Jun 29 21:44:25 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
+
* util.h (stricmp): Use strcasecmp as replacement.
Sat Jun 26 12:15:59 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
+
* cipher.h (MD_HANDLE): Assigned a structure name.
Fri Apr 9 12:26:25 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
@@ -53,6 +176,7 @@ Tue Apr 6 19:58:12 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* cipher.h (DEK): increased max. key length to 32 bytes
+
Sat Feb 20 21:40:49 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
* g10lib.h: Removed file and changed all files that includes this.
@@ -137,3 +261,15 @@ Tue Mar 3 15:11:21 1998 Werner Koch (wk@isil.d.shuttle.de)
* cipher.h (random.h): Add new header and move all relevalt
functions to this header.
+
+ Copyright 1998, 1999, 2000, 2001 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.
+
+ This file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
diff --git a/include/cipher.h b/include/cipher.h
new file mode 100644
index 000000000..634569199
--- /dev/null
+++ b/include/cipher.h
@@ -0,0 +1,194 @@
+/* cipher.h
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ *
+ * This file is part of GNUPG.
+ *
+ * GNUPG is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNUPG is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+#ifndef G10_CIPHER_H
+#define G10_CIPHER_H
+
+#define DBG_CIPHER g10c_debug_mode
+
+#include "mpi.h"
+#include "../cipher/random.h"
+
+
+#define CIPHER_ALGO_NONE 0
+#define CIPHER_ALGO_IDEA 1
+#define CIPHER_ALGO_3DES 2
+#define CIPHER_ALGO_CAST5 3
+#define CIPHER_ALGO_BLOWFISH 4 /* blowfish 128 bit key */
+#define CIPHER_ALGO_SAFER_SK128 5
+#define CIPHER_ALGO_DES_SK 6
+#define CIPHER_ALGO_RIJNDAEL 7
+#define CIPHER_ALGO_RIJNDAEL192 8
+#define CIPHER_ALGO_RIJNDAEL256 9
+#define CIPHER_ALGO_TWOFISH 10 /* twofish 256 bit */
+#define CIPHER_ALGO_SKIPJACK 101 /* experimental: skipjack */
+#define CIPHER_ALGO_TWOFISH_OLD 102 /* experimental: twofish 128 bit */
+#define CIPHER_ALGO_DUMMY 110 /* no encryption at all */
+
+#define PUBKEY_ALGO_RSA 1
+#define PUBKEY_ALGO_RSA_E 2 /* RSA encrypt only */
+#define PUBKEY_ALGO_RSA_S 3 /* RSA sign only */
+#define PUBKEY_ALGO_ELGAMAL_E 16 /* encrypt only ElGamal (but not for v3)*/
+#define PUBKEY_ALGO_DSA 17
+#define PUBKEY_ALGO_ELGAMAL 20 /* sign and encrypt elgamal */
+
+#define PUBKEY_USAGE_SIG 1 /* key is good for signatures */
+#define PUBKEY_USAGE_ENC 2 /* key is good for encryption */
+#define PUBKEY_USAGE_CERT 4 /* key is also good to certify other keys*/
+
+#define DIGEST_ALGO_MD5 1
+#define DIGEST_ALGO_SHA1 2
+#define DIGEST_ALGO_RMD160 3
+#define DIGEST_ALGO_TIGER 6
+
+#define is_RSA(a) ((a)==PUBKEY_ALGO_RSA || (a)==PUBKEY_ALGO_RSA_E \
+ || (a)==PUBKEY_ALGO_RSA_S )
+#define is_ELGAMAL(a) ((a)==PUBKEY_ALGO_ELGAMAL || (a)==PUBKEY_ALGO_ELGAMAL_E)
+
+typedef struct {
+ int algo;
+ int keylen;
+ int algo_info_printed;
+ int use_mdc;
+ byte key[32]; /* this is the largest used keylen (256 bit) */
+} DEK;
+
+struct cipher_handle_s;
+typedef struct cipher_handle_s *CIPHER_HANDLE;
+
+
+#define CIPHER_MODE_ECB 1
+#define CIPHER_MODE_CFB 2
+#define CIPHER_MODE_PHILS_CFB 3
+#define CIPHER_MODE_AUTO_CFB 4
+#define CIPHER_MODE_DUMMY 5 /* used with algo DUMMY for no encryption */
+#define CIPHER_MODE_CBC 6
+
+struct md_digest_list_s;
+
+struct gcry_md_context {
+ int secure;
+ FILE *debug;
+ int finalized;
+ struct md_digest_list_s *list;
+ int bufcount;
+ int bufsize;
+ byte buffer[1];
+};
+
+typedef struct gcry_md_context *MD_HANDLE;
+
+#ifndef EXTERN_UNLESS_MAIN_MODULE
+ #if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
+ #define EXTERN_UNLESS_MAIN_MODULE extern
+ #else
+ #define EXTERN_UNLESS_MAIN_MODULE
+ #endif
+#endif
+EXTERN_UNLESS_MAIN_MODULE int g10c_debug_mode;
+EXTERN_UNLESS_MAIN_MODULE int g10_opt_verbose;
+EXTERN_UNLESS_MAIN_MODULE const char *g10_opt_homedir;
+
+
+/*-- dynload.c --*/
+void register_cipher_extension( const char *mainpgm, const char *fname );
+
+/*-- md.c --*/
+int string_to_digest_algo( const char *string );
+const char * digest_algo_to_string( int algo );
+int check_digest_algo( int algo );
+MD_HANDLE md_open( int algo, int secure );
+void md_enable( MD_HANDLE hd, int algo );
+MD_HANDLE md_copy( MD_HANDLE a );
+void md_reset( MD_HANDLE a );
+void md_close(MD_HANDLE a);
+void md_write( MD_HANDLE a, const byte *inbuf, size_t inlen);
+void md_final(MD_HANDLE a);
+byte *md_read( MD_HANDLE a, int algo );
+int md_digest( MD_HANDLE a, int algo, byte *buffer, int buflen );
+int md_get_algo( MD_HANDLE a );
+int md_digest_length( int algo );
+const byte *md_asn_oid( int algo, size_t *asnlen, size_t *mdlen );
+void md_start_debug( MD_HANDLE a, const char *suffix );
+void md_stop_debug( MD_HANDLE a );
+#define md_is_secure(a) ((a)->secure)
+#define md_putc(h,c) \
+ do { \
+ if( (h)->bufcount == (h)->bufsize ) \
+ md_write( (h), NULL, 0 ); \
+ (h)->buffer[(h)->bufcount++] = (c) & 0xff; \
+ } while(0)
+/*-- rmd160.c --*/
+void rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length );
+
+
+/*-- cipher.c --*/
+int string_to_cipher_algo( const char *string );
+const char * cipher_algo_to_string( int algo );
+void disable_cipher_algo( int algo );
+int check_cipher_algo( int algo );
+unsigned cipher_get_keylen( int algo );
+unsigned cipher_get_blocksize( int algo );
+CIPHER_HANDLE cipher_open( int algo, int mode, int secure );
+void cipher_close( CIPHER_HANDLE c );
+int cipher_setkey( CIPHER_HANDLE c, byte *key, unsigned keylen );
+void cipher_setiv( CIPHER_HANDLE c, const byte *iv, unsigned ivlen );
+void cipher_encrypt( CIPHER_HANDLE c, byte *out, byte *in, unsigned nbytes );
+void cipher_decrypt( CIPHER_HANDLE c, byte *out, byte *in, unsigned nbytes );
+void cipher_sync( CIPHER_HANDLE c );
+
+/*-- pubkey.c --*/
+#define PUBKEY_MAX_NPKEY 4
+#define PUBKEY_MAX_NSKEY 6
+#define PUBKEY_MAX_NSIG 2
+#define PUBKEY_MAX_NENC 2
+
+int string_to_pubkey_algo( const char *string );
+const char * pubkey_algo_to_string( int algo );
+void disable_pubkey_algo( int algo );
+int check_pubkey_algo( int algo );
+int check_pubkey_algo2( int algo, unsigned use );
+int pubkey_get_npkey( int algo );
+int pubkey_get_nskey( int algo );
+int pubkey_get_nsig( int algo );
+int pubkey_get_nenc( int algo );
+unsigned pubkey_nbits( int algo, MPI *pkey );
+int pubkey_generate( int algo, unsigned nbits, MPI *skey, MPI **retfactors );
+int pubkey_check_secret_key( int algo, MPI *skey );
+int pubkey_encrypt( int algo, MPI *resarr, MPI data, MPI *pkey );
+int pubkey_decrypt( int algo, MPI *result, MPI *data, MPI *skey );
+int pubkey_sign( int algo, MPI *resarr, MPI hash, MPI *skey );
+int pubkey_verify( int algo, MPI hash, MPI *data, MPI *pkey,
+ int (*cmp)(void *, MPI), void *opaque );
+
+/*-- smallprime.c --*/
+extern ushort small_prime_numbers[];
+
+/*-- primegen.c --*/
+void register_primegen_progress ( void (*cb)( void *, int), void *cb_data );
+MPI generate_secret_prime( unsigned nbits );
+MPI generate_public_prime( unsigned nbits );
+MPI generate_elg_prime( int mode, unsigned pbits, unsigned qbits,
+ MPI g, MPI **factors );
+
+/*-- elsewhere --*/
+void register_pk_dsa_progress ( void (*cb)( void *, int), void *cb_data );
+void register_pk_elg_progress ( void (*cb)( void *, int), void *cb_data );
+
+#endif /*G10_CIPHER_H*/
diff --git a/include/distfiles b/include/distfiles
index 7e066ad44..fe9c41c7f 100644
--- a/include/distfiles
+++ b/include/distfiles
@@ -1,11 +1,14 @@
+cipher.h
errors.h
iobuf.h
+memory.h
+mpi.h
ttyio.h
types.h
util.h
i18n.h
host2net.h
http.h
-gpga-prot.h
+keyserver.h
ChangeLog
diff --git a/include/errors.h b/include/errors.h
index 9fbf9320e..0dde0f9b5 100644
--- a/include/errors.h
+++ b/include/errors.h
@@ -1,5 +1,5 @@
-/* errors.h - error codes fro GnuPG
- * Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* errors.h - erro code
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -17,67 +17,68 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_ERRORS_H
-#define GPG_ERRORS_H
+#ifndef G10_ERRORS_H
+#define G10_ERRORS_H
+#define G10ERR_GENERAL 1
+#define G10ERR_UNKNOWN_PACKET 2
+#define G10ERR_UNKNOWN_VERSION 3 /* Unknown version (in packet) */
+#define G10ERR_PUBKEY_ALGO 4 /* Unknown pubkey algorithm */
+#define G10ERR_DIGEST_ALGO 5 /* Unknown digest algorithm */
+#define G10ERR_BAD_PUBKEY 6 /* Bad public key */
+#define G10ERR_BAD_SECKEY 7 /* Bad secret key */
+#define G10ERR_BAD_SIGN 8 /* Bad signature */
+#define G10ERR_NO_PUBKEY 9 /* public key not found */
+#define G10ERR_CHECKSUM 10 /* checksum error */
+#define G10ERR_BAD_PASS 11 /* Bad passphrase */
+#define G10ERR_CIPHER_ALGO 12 /* Unknown cipher algorithm */
+#define G10ERR_KEYRING_OPEN 13
+#define G10ERR_INVALID_PACKET 14
+#define G10ERR_INVALID_ARMOR 15
+#define G10ERR_NO_USER_ID 16
+#define G10ERR_NO_SECKEY 17 /* secret key not available */
+#define G10ERR_WRONG_SECKEY 18 /* wrong seckey used */
+#define G10ERR_UNSUPPORTED 19
+#define G10ERR_BAD_KEY 20 /* bad (session) key */
+#define G10ERR_READ_FILE 21
+#define G10ERR_WRITE_FILE 22
+#define G10ERR_COMPR_ALGO 23 /* Unknown compress algorithm */
+#define G10ERR_OPEN_FILE 24
+#define G10ERR_CREATE_FILE 25
+#define G10ERR_PASSPHRASE 26 /* invalid passphrase */
+#define G10ERR_NI_PUBKEY 27
+#define G10ERR_NI_CIPHER 28
+#define G10ERR_SIG_CLASS 29
+#define G10ERR_BAD_MPI 30
+#define G10ERR_RESOURCE_LIMIT 31
+#define G10ERR_INV_KEYRING 32
+#define G10ERR_TRUSTDB 33 /* a problem with the trustdb */
+#define G10ERR_BAD_CERT 34 /* bad certicate */
+#define G10ERR_INV_USER_ID 35
+#define G10ERR_CLOSE_FILE 36
+#define G10ERR_RENAME_FILE 37
+#define G10ERR_DELETE_FILE 38
+#define G10ERR_UNEXPECTED 39
+#define G10ERR_TIME_CONFLICT 40
+#define G10ERR_WR_PUBKEY_ALGO 41 /* unusabe pubkey algo */
+#define G10ERR_FILE_EXISTS 42
+#define G10ERR_WEAK_KEY 43 /* NOTE: hardcoded into the cipher modules */
+#define G10ERR_WRONG_KEYLEN 44 /* NOTE: hardcoded into the cipher modules */
+#define G10ERR_INV_ARG 45
+#define G10ERR_BAD_URI 46 /* syntax error in URI */
+#define G10ERR_INVALID_URI 47 /* e.g. unsupported scheme */
+#define G10ERR_NETWORK 48 /* general network error */
+#define G10ERR_UNKNOWN_HOST 49
+#define G10ERR_SELFTEST_FAILED 50
+#define G10ERR_NOT_ENCRYPTED 51
+#define G10ERR_NOT_PROCESSED 52
+#define G10ERR_UNU_PUBKEY 53
+#define G10ERR_UNU_SECKEY 54
+#define G10ERR_KEYSERVER 55
-/* FIXME: some constants have to be the same as the ones from
- * libgcrypt - include gcrypt.h and use those constants */
-#define GPGERR_GENERAL 101
-#define GPGERR_UNKNOWN_PACKET 102
-#define GPGERR_UNKNOWN_VERSION 103 /* Unknown version (in packet) */
-#define GPGERR_PUBKEY_ALGO 4 /* Unknown pubkey algorithm */
-#define GPGERR_DIGEST_ALGO 5 /* Unknown digest algorithm */
-#define GPGERR_BAD_PUBKEY 6 /* Bad public key */
-#define GPGERR_BAD_SECKEY 7 /* Bad secret key */
-#define GPGERR_BAD_SIGN 8 /* Bad signature */
-#define GPGERR_NO_PUBKEY 109 /* public key not found */
-#define GPGERR_CHECKSUM 110 /* checksum error */
-#define GPGERR_BAD_PASS 111 /* Bad passphrase */
-#define GPGERR_CIPHER_ALGO 12 /* Unknown cipher algorithm */
-#define GPGERR_KEYRING_OPEN 113
-#define GPGERR_INVALID_PACKET 114
-#define GPGERR_INVALID_ARMOR 115
-#define GPGERR_NO_USER_ID 116
-#define GPGERR_NO_SECKEY 117 /* secret key not available */
-#define GPGERR_WRONG_SECKEY 118 /* wrong seckey used */
-#define GPGERR_UNSUPPORTED 119
-#define GPGERR_BAD_KEY 120 /* bad (session) key */
-#define GPGERR_READ_FILE 121
-#define GPGERR_WRITE_FILE 122
-#define GPGERR_COMPR_ALGO 123 /* Unknown compress algorithm */
-#define GPGERR_OPEN_FILE 124
-#define GPGERR_CREATE_FILE 125
-#define GPGERR_PASSPHRASE 126 /* invalid passphrase */
-#define GPGERR_NI_PUBKEY 127
-#define GPGERR_NI_CIPHER 128
-#define GPGERR_SIG_CLASS 129
-#define GPGERR_BAD_MPI 30
-#define GPGERR_RESOURCE_LIMIT 131
-#define GPGERR_INV_KEYRING 132
-#define GPGERR_TRUSTDB 133 /* a problem with the trustdb */
-#define GPGERR_BAD_CERT 134 /* bad certicate */
-#define GPGERR_INV_USER_ID 135
-#define GPGERR_CLOSE_FILE 136
-#define GPGERR_RENAME_FILE 137
-#define GPGERR_DELETE_FILE 138
-#define GPGERR_UNEXPECTED 139
-#define GPGERR_TIME_CONFLICT 140
-#define GPGERR_WR_PUBKEY_ALGO 41 /* unusabe pubkey algo */
-#define GPGERR_FILE_EXISTS 142
-#define GPGERR_WEAK_KEY 43 /* NOTE: hardcoded into the cipher modules */
-#define GPGERR_WRONG_KEYLEN 44 /* NOTE: hardcoded into the cipher modules */
-#define GPGERR_INV_ARG 145
-#define GPGERR_BAD_URI 146 /* syntax error in URI */
-#define GPGERR_INVALID_URI 147 /* e.g. unsupported scheme */
-#define GPGERR_NETWORK 148 /* general network error */
-#define GPGERR_UNKNOWN_HOST 149
-#define GPGERR_SELFTEST_FAILED 50
-#define GPGERR_NOT_ENCRYPTED 151
-#define GPGERR_NOT_PROCESSED 152
#ifndef HAVE_STRERROR
char *strerror( int n );
#endif
-#endif /*GPG_ERRORS_H*/
+#endif /*G10_ERRORS_H*/
diff --git a/include/gpga-prot.h b/include/gpga-prot.h
deleted file mode 100644
index 0e408c4b8..000000000
--- a/include/gpga-prot.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* gpga-prot.h - GnuPG Agent protocol definition
- * Copyright (C) 2000 Free Software Foundation, Inc.
- *
- * This file is part of GnuPG.
- *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GnuPG is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-/*
- * The gpg-agent protocol:
- * The protocol is connection based and runs over a Unix Domain socket.
- * The client requests a service from the server and waits for the result.
- * A connection request starts with a magic string to transfer the
- * version number the followed by the regular traffic. All numbers
- * are transfered in network-byte-order, strings are prefixed with a
- * 32 bit length and NOT 0 terminated.
- * The magic string is:
- * 0x47, 0x50, 0x47, 0x41, 0x00, 0x00, 0x00, 0x01
- * which nicely fits into 2 32 bit words.
- * The server does not respond to this magic string if the protocol
- is supported; otherwise it will return an error packet and close
- the connection.
- Standard request and reply packets are composed like this
- u32 Length of following packet ( 4 <= n < 2048 )
- u32 Request/Reply type or error code
- n-bytes Data specific to the request/reply
-
- Request codes are just the given number,
- Reply codes are all to be ORed with 0x00010000,
- Error codes are all to be ORer with 0x00020000.
-
- Requests:
- =========
- GET_VERSION
-
- GET_PASSPHRASE, expected data:
- 20 Bytes fingerprint of the key
- (use all zeroes to get a passphrase not associated with a key)
- n Bytes with the text to be displayed in case the
- passphrase is not cached or the fingerprint was all zero.
-
- CLEAR_PASSPHRASE, expected data:
- 20 Bytes fingerprint of the key
-
- Returns either OKAY or NO_PASSPHRASE
-
- HAVE_PASSPHRASE, expected data:
- 20 Bytes fingerprint of the key
-
- Returns either OKAY or NO_PASSPHRASE
-
-
- Replies:
- ========
- OKAY (reply code 1)
- Data may be interpreted as the version string
-
- GOT_PASSPHRASE (reply code 2)
- u32 Length of passphrase
- n bytes passphrase
- m bytes padding so that the packets have some standard length
-
-
- Error Replies:
- ==============
- PROTOCOL_ERROR
- no data yes specified
-
- CANCELED
- User canceled the input
-
- NO_PASSPHRASE
- No user intercation possible and passphrase not available.
- Also return as answer on HAVE_PASSPHRASE etc.
-
- BAD_PASSPHRASE
- Returned when the user does not repeat the passphrase correctly
-
- INVALID_DATA
-
- */
-
-
-
-#ifndef GPG_GPGA_PROT_H
-#define GPG_GPGA_PROT_H 1
-
-enum gpga_protocol_codes {
- /* Request codes */
- GPGA_PROT_GET_VERSION = 1,
- GPGA_PROT_GET_PASSPHRASE = 2,
- GPGA_PROT_CLEAR_PASSPHRASE= 3,
- GPGA_PROT_SHUTDOWN = 4,
- GPGA_PROT_FLUSH = 5,
-
- /* Reply codes */
- GPGA_PROT_REPLY_BASE = 0x10000,
- GPGA_PROT_OKAY = 0x10001,
- GPGA_PROT_GOT_PASSPHRASE = 0x10002,
-
- /* Error codes */
- GPGA_PROT_ERROR_BASE = 0x20000,
- GPGA_PROT_PROTOCOL_ERROR = 0x20001,
- GPGA_PROT_INVALID_REQUEST= 0x20002,
- GPGA_PROT_CANCELED = 0x20003,
- GPGA_PROT_NO_PASSPHRASE = 0x20004,
- GPGA_PROT_BAD_PASSPHRASE = 0x20005,
- GPGA_PROT_INVALID_DATA = 0x20006,
- GPGA_PROT_NOT_IMPLEMENTED= 0x20007,
- GPGA_PROT_UI_PROBLEM = 0x20008,
-};
-
-
-
-#endif /*GPG_GPGA_PROT_H*/
diff --git a/include/host2net.h b/include/host2net.h
index 784737a0d..0f12a8e1d 100644
--- a/include/host2net.h
+++ b/include/host2net.h
@@ -1,5 +1,5 @@
/* host2net.h - Some macros
- * Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -18,8 +18,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_HOST2NET_H
-#define GPG_HOST2NET_H
+#ifndef G10_HOST2NET_H
+#define G10_HOST2NET_H
#include "types.h"
@@ -40,4 +40,4 @@
#define u32tobuf( p, a) ulongtobuf( (p), (a) )
-#endif /*GPG_HOST2NET_H*/
+#endif /*G10_HOST2NET_H*/
diff --git a/include/http.h b/include/http.h
index a1d70406f..7e79ed2c1 100644
--- a/include/http.h
+++ b/include/http.h
@@ -1,5 +1,5 @@
/* http.h - HTTP protocol handler
- * Copyright (C) 1999 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -17,8 +17,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_HTTP_H
-#define GPG_HTTP_H 1
+#ifndef G10_HTTP_H
+#define G10_HTTP_H 1
#include "iobuf.h"
@@ -50,7 +50,8 @@ typedef enum {
} HTTP_REQ_TYPE;
enum { /* put flag values into an enum, so that gdb can display them */
- HTTP_FLAG_TRY_PROXY = 1
+ HTTP_FLAG_TRY_PROXY = 1,
+ HTTP_FLAG_NO_SHUTDOWN = 2
};
struct http_context {
@@ -64,7 +65,7 @@ struct http_context {
PARSED_URI uri;
HTTP_REQ_TYPE req_type;
byte *buffer; /* line buffer */
- unsigned int buffer_size;
+ unsigned buffer_size;
unsigned int flags;
};
typedef struct http_context *HTTP_HD;
@@ -77,4 +78,4 @@ void http_close( HTTP_HD hd );
int http_open_document( HTTP_HD hd, const char *document, unsigned int flags );
-#endif /*GPG_HTTP_H*/
+#endif /*G10_HTTP_H*/
diff --git a/include/i18n.h b/include/i18n.h
index db22940a3..0b270687a 100644
--- a/include/i18n.h
+++ b/include/i18n.h
@@ -1,5 +1,5 @@
/* i18n.h
- * Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -18,8 +18,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_I18N_H
-#define GPG_I18N_H
+#ifndef G10_I18N_H
+#define G10_I18N_H
#ifdef USE_SIMPLE_GETTEXT
int set_gettext_file( const char *filename );
@@ -34,7 +34,11 @@
#endif
#ifdef ENABLE_NLS
+#ifndef __riscos__
#include <libintl.h>
+#else
+ #include "libgettext.h"
+#endif /* __riscos__ */
#define _(a) gettext (a)
#ifdef gettext_noop
#define N_(a) gettext_noop (a)
@@ -47,4 +51,4 @@
#endif
#endif /* !USE_SIMPLE_GETTEXT */
-#endif /*GPG_I18N_H*/
+#endif /*G10_I18N_H*/
diff --git a/include/iobuf.h b/include/iobuf.h
index 2f35f9af9..f94cf4d28 100644
--- a/include/iobuf.h
+++ b/include/iobuf.h
@@ -1,5 +1,5 @@
/* iobuf.h - I/O buffer
- * Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -18,8 +18,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_IOBUF_H
-#define GPG_IOBUF_H
+#ifndef G10_IOBUF_H
+#define G10_IOBUF_H
#include "types.h"
@@ -40,9 +40,9 @@ typedef struct iobuf_struct *IOBUF;
/* fixme: we should hide most of this stuff */
struct iobuf_struct {
int use; /* 1 input , 2 output, 3 temp */
- unsigned long nlimit;
- unsigned long nbytes; /* used together with nlimit */
- unsigned long ntotal; /* total bytes read (position of stream) */
+ off_t nlimit;
+ off_t nbytes; /* used together with nlimit */
+ off_t ntotal; /* total bytes read (position of stream) */
int nofast; /* used by the iobuf_get() */
void *directfp;
struct {
@@ -71,17 +71,26 @@ struct iobuf_struct {
} unget;
};
-int iobuf_debug_mode;
+#ifndef EXTERN_UNLESS_MAIN_MODULE
+ #if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
+ #define EXTERN_UNLESS_MAIN_MODULE extern
+ #else
+ #define EXTERN_UNLESS_MAIN_MODULE
+ #endif
+#endif
+EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode;
+void iobuf_enable_special_filenames ( int yes );
IOBUF iobuf_alloc(int use, size_t bufsize);
IOBUF iobuf_temp(void);
IOBUF iobuf_temp_with_content( const char *buffer, size_t length );
IOBUF iobuf_open( const char *fname );
IOBUF iobuf_fdopen( int fd, const char *mode );
-IOBUF iobuf_fopen( const char *fname, const char *mode );
+IOBUF iobuf_sockopen( int fd, const char *mode );
IOBUF iobuf_create( const char *fname );
IOBUF iobuf_append( const char *fname );
IOBUF iobuf_openrw( const char *fname );
+int iobuf_ioctl ( IOBUF a, int cmd, int intval, void *ptrval );
int iobuf_close( IOBUF iobuf );
int iobuf_cancel( IOBUF iobuf );
@@ -96,10 +105,10 @@ void iobuf_clear_eof(IOBUF a);
#define iobuf_set_error(a) do { (a)->error = 1; } while(0)
#define iobuf_error(a) ((a)->error)
-void iobuf_set_limit( IOBUF a, unsigned long nlimit );
+void iobuf_set_limit( IOBUF a, off_t nlimit );
-ulong iobuf_tell( IOBUF a );
-int iobuf_seek( IOBUF a, ulong newpos );
+off_t iobuf_tell( IOBUF a );
+int iobuf_seek( IOBUF a, off_t newpos );
int iobuf_readbyte(IOBUF a);
int iobuf_read(IOBUF a, byte *buf, unsigned buflen );
@@ -115,7 +124,7 @@ int iobuf_write_temp( IOBUF a, IOBUF temp );
size_t iobuf_temp_to_buffer( IOBUF a, byte *buffer, size_t buflen );
void iobuf_unget_and_close_temp( IOBUF a, IOBUF temp );
-u32 iobuf_get_filelength( IOBUF a );
+off_t iobuf_get_filelength( IOBUF a );
#define IOBUF_FILELENGTH_LIMIT 0xffffffff
const char *iobuf_get_real_fname( IOBUF a );
const char *iobuf_get_fname( IOBUF a );
@@ -124,6 +133,9 @@ void iobuf_set_block_mode( IOBUF a, size_t n );
void iobuf_set_partial_block_mode( IOBUF a, size_t len );
int iobuf_in_block_mode( IOBUF a );
+int iobuf_translate_file_handle ( int fd, int for_write );
+
+
/* get a byte form the iobuf; must check for eof prior to this function
* this function returns values in the range 0 .. 255 or -1 to indicate EOF
* iobuf_get_noeof() does not return -1 to indicate EOF, but masks the
@@ -146,4 +158,4 @@ int iobuf_in_block_mode( IOBUF a );
#define iobuf_get_temp_length(a) ( (a)->d.len )
#define iobuf_is_temp(a) ( (a)->use == 3 )
-#endif /*GPG_IOBUF_H*/
+#endif /*G10_IOBUF_H*/
diff --git a/include/keyserver.h b/include/keyserver.h
new file mode 100644
index 000000000..017711a76
--- /dev/null
+++ b/include/keyserver.h
@@ -0,0 +1,31 @@
+/* keyserver.h
+ * Copyright (C) 2001 Free Software Foundation, Inc.
+ *
+ * This file is part of GNUPG.
+ *
+ * GNUPG is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNUPG is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#ifndef _KEYSERVER_H_
+#define _KEYSERVER_H_
+
+/* Return codes */
+#define KEYSERVER_OK 0
+#define KEYSERVER_INTERNAL_ERROR 1
+#define KEYSERVER_NOT_SUPPORTED 2
+#define KEYSERVER_VERSION_ERROR 3
+#define KEYSERVER_SCHEME_NOT_FOUND 127
+
+#endif /* !_KEYSERVER_H_ */
diff --git a/include/memory.h b/include/memory.h
new file mode 100644
index 000000000..6a364795b
--- /dev/null
+++ b/include/memory.h
@@ -0,0 +1,95 @@
+/* memory.h - memory allocation
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ *
+ * This file is part of GNUPG.
+ *
+ * GNUPG is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNUPG is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#ifndef G10_MEMORY_H
+#define G10_MEMORY_H
+
+#ifdef M_DEBUG
+#ifndef STR
+ #define STR(v) #v
+#endif
+#ifndef __riscos__
+ #define M_DBGINFO(a) __FUNCTION__ "["__FILE__ ":" STR(a) "]"
+#else /* __riscos__ */
+ #define M_DBGINFO(a) "["__FILE__ ":" STR(a) "]"
+#endif /* __riscos__ */
+#define m_alloc(n) m_debug_alloc((n), M_DBGINFO( __LINE__ ) )
+#define m_alloc_clear(n) m_debug_alloc_clear((n), M_DBGINFO(__LINE__) )
+#define m_alloc_secure(n) m_debug_alloc((n), M_DBGINFO(__LINE__) )
+#define m_alloc_secure_clear(n) m_debug_alloc_secure_clear((n), M_DBGINFO(__LINE__) )
+#define m_realloc(n,m) m_debug_realloc((n),(m), M_DBGINFO(__LINE__) )
+#define m_free(n) m_debug_free((n), M_DBGINFO(__LINE__) )
+#define m_check(n) m_debug_check((n), M_DBGINFO(__LINE__) )
+/*#define m_copy(a) m_debug_copy((a), M_DBGINFO(__LINE__) )*/
+#define m_strdup(a) m_debug_strdup((a), M_DBGINFO(__LINE__) )
+
+void *m_debug_alloc( size_t n, const char *info );
+void *m_debug_alloc_clear( size_t n, const char *info );
+void *m_debug_alloc_secure( size_t n, const char *info );
+void *m_debug_alloc_secure_clear( size_t n, const char *info );
+void *m_debug_realloc( void *a, size_t n, const char *info );
+void m_debug_free( void *p, const char *info );
+void m_debug_check( const void *a, const char *info );
+/*void *m_debug_copy( const void *a, const char *info );*/
+char *m_debug_strdup( const char *a, const char *info );
+
+#else
+void *m_alloc( size_t n );
+void *m_alloc_clear( size_t n );
+void *m_alloc_secure( size_t n );
+void *m_alloc_secure_clear( size_t n );
+void *m_realloc( void *a, size_t n );
+void m_free( void *p );
+void m_check( const void *a );
+/*void *m_copy( const void *a );*/
+char *m_strdup( const char * a);
+#endif
+
+size_t m_size( const void *a );
+void m_print_stats(const char *prefix);
+
+/*-- secmem.c --*/
+void secmem_init( size_t npool );
+void secmem_term( void );
+void *secmem_malloc( size_t size );
+void *secmem_realloc( void *a, size_t newsize );
+void secmem_free( void *a );
+int m_is_secure( const void *p );
+void secmem_dump_stats(void);
+void secmem_set_flags( unsigned flags );
+unsigned secmem_get_flags(void);
+
+
+
+#define DBG_MEMORY memory_debug_mode
+#define DBG_MEMSTAT memory_stat_debug_mode
+
+#ifndef EXTERN_UNLESS_MAIN_MODULE
+ #if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
+ #define EXTERN_UNLESS_MAIN_MODULE extern
+ #else
+ #define EXTERN_UNLESS_MAIN_MODULE
+ #endif
+#endif
+EXTERN_UNLESS_MAIN_MODULE int memory_debug_mode;
+EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
+
+
+#endif /*G10_MEMORY_H*/
diff --git a/include/mpi.h b/include/mpi.h
new file mode 100644
index 000000000..80d617b1d
--- /dev/null
+++ b/include/mpi.h
@@ -0,0 +1,202 @@
+/* mpi.h - Multi Precision Integers
+ * Copyright (C) 1994, 1996, 1998, 1999,
+ * 2000, 2001 Free Software Foundation, Inc.
+ *
+ * This file is part of GNUPG.
+ *
+ * GNUPG is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNUPG is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * Note: This code is heavily based on the GNU MP Library.
+ * Actually it's the same code with only minor changes in the
+ * way the data is stored; this is to support the abstraction
+ * of an optional secure memory allocation which may be used
+ * to avoid revealing of sensitive data due to paging etc.
+ * The GNU MP Library itself is published under the LGPL;
+ * however I decided to publish this code under the plain GPL.
+ */
+
+#ifndef G10_MPI_H
+#define G10_MPI_H
+
+#include <config.h>
+#include <stdio.h>
+#include "iobuf.h"
+#include "types.h"
+#include "memory.h"
+
+#if BYTES_PER_MPI_LIMB == SIZEOF_UNSIGNED_INT
+ typedef unsigned int mpi_limb_t;
+ typedef signed int mpi_limb_signed_t;
+#elif BYTES_PER_MPI_LIMB == SIZEOF_UNSIGNED_LONG
+ typedef unsigned long int mpi_limb_t;
+ typedef signed long int mpi_limb_signed_t;
+#elif BYTES_PER_MPI_LIMB == SIZEOF_UNSIGNED_LONG_LONG
+ typedef unsigned long long int mpi_limb_t;
+ typedef signed long long int mpi_limb_signed_t;
+#elif BYTES_PER_MPI_LIMB == SIZEOF_UNSIGNED_SHORT
+ typedef unsigned short int mpi_limb_t;
+ typedef signed short int mpi_limb_signed_t;
+#else
+ #error BYTES_PER_MPI_LIMB does not match any C type
+#endif
+#define BITS_PER_MPI_LIMB (8*BYTES_PER_MPI_LIMB)
+
+#ifndef EXTERN_UNLESS_MAIN_MODULE
+ #if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
+ #define EXTERN_UNLESS_MAIN_MODULE extern
+ #else
+ #define EXTERN_UNLESS_MAIN_MODULE
+ #endif
+#endif
+
+#define DBG_MPI mpi_debug_mode
+EXTERN_UNLESS_MAIN_MODULE int mpi_debug_mode;
+
+
+struct gcry_mpi {
+ int alloced; /* array size (# of allocated limbs) */
+ int nlimbs; /* number of valid limbs */
+ int nbits; /* the real number of valid bits (info only) */
+ int sign; /* indicates a negative number */
+ unsigned flags; /* bit 0: array must be allocated in secure memory space */
+ /* bit 1: the mpi is encrypted */
+ /* bit 2: the limb is a pointer to some m_alloced data */
+ mpi_limb_t *d; /* array with the limbs */
+};
+
+typedef struct gcry_mpi *MPI;
+
+#define MPI_NULL NULL
+
+#define mpi_get_nlimbs(a) ((a)->nlimbs)
+#define mpi_get_nbit_info(a) ((a)->nbits)
+#define mpi_set_nbit_info(a,b) ((a)->nbits = (b))
+#define mpi_is_neg(a) ((a)->sign)
+
+/*-- mpiutil.c --*/
+
+#ifdef M_DEBUG
+ #define mpi_alloc(n) mpi_debug_alloc((n), M_DBGINFO( __LINE__ ) )
+ #define mpi_alloc_secure(n) mpi_debug_alloc_secure((n), M_DBGINFO( __LINE__ ) )
+ #define mpi_alloc_like(n) mpi_debug_alloc_like((n), M_DBGINFO( __LINE__ ) )
+ #define mpi_free(a) mpi_debug_free((a), M_DBGINFO(__LINE__) )
+ #define mpi_resize(a,b) mpi_debug_resize((a),(b), M_DBGINFO(__LINE__) )
+ #define mpi_copy(a) mpi_debug_copy((a), M_DBGINFO(__LINE__) )
+ MPI mpi_debug_alloc( unsigned nlimbs, const char *info );
+ MPI mpi_debug_alloc_secure( unsigned nlimbs, const char *info );
+ MPI mpi_debug_alloc_like( MPI a, const char *info );
+ void mpi_debug_free( MPI a, const char *info );
+ void mpi_debug_resize( MPI a, unsigned nlimbs, const char *info );
+ MPI mpi_debug_copy( MPI a, const char *info );
+#else
+ MPI mpi_alloc( unsigned nlimbs );
+ MPI mpi_alloc_secure( unsigned nlimbs );
+ MPI mpi_alloc_like( MPI a );
+ void mpi_free( MPI a );
+ void mpi_resize( MPI a, unsigned nlimbs );
+ MPI mpi_copy( MPI a );
+#endif
+#define mpi_is_opaque(a) ((a) && ((a)->flags&4))
+MPI mpi_set_opaque( MPI a, void *p, int len );
+void *mpi_get_opaque( MPI a, int *len );
+#define mpi_is_protected(a) ((a) && ((a)->flags&2))
+#define mpi_set_protect_flag(a) ((a)->flags |= 2)
+#define mpi_clear_protect_flag(a) ((a)->flags &= ~2)
+#define mpi_is_secure(a) ((a) && ((a)->flags&1))
+void mpi_set_secure( MPI a );
+void mpi_clear( MPI a );
+void mpi_set( MPI w, MPI u);
+void mpi_set_ui( MPI w, ulong u);
+MPI mpi_alloc_set_ui( unsigned long u);
+void mpi_m_check( MPI a );
+void mpi_swap( MPI a, MPI b);
+
+/*-- mpicoder.c --*/
+int mpi_write( IOBUF out, MPI a );
+#ifdef M_DEBUG
+ #define mpi_read(a,b,c) mpi_debug_read((a),(b),(c), M_DBGINFO( __LINE__ ) )
+ MPI mpi_debug_read(IOBUF inp, unsigned *nread, int secure, const char *info);
+#else
+ MPI mpi_read(IOBUF inp, unsigned *nread, int secure);
+#endif
+MPI mpi_read_from_buffer(byte *buffer, unsigned *ret_nread, int secure);
+int mpi_fromstr(MPI val, const char *str);
+int mpi_print( FILE *fp, MPI a, int mode );
+void g10_log_mpidump( const char *text, MPI a );
+u32 mpi_get_keyid( MPI a, u32 *keyid );
+byte *mpi_get_buffer( MPI a, unsigned *nbytes, int *sign );
+byte *mpi_get_secure_buffer( MPI a, unsigned *nbytes, int *sign );
+void mpi_set_buffer( MPI a, const byte *buffer, unsigned nbytes, int sign );
+
+#define log_mpidump g10_log_mpidump
+
+/*-- mpi-add.c --*/
+void mpi_add_ui(MPI w, MPI u, ulong v );
+void mpi_add(MPI w, MPI u, MPI v);
+void mpi_addm(MPI w, MPI u, MPI v, MPI m);
+void mpi_sub_ui(MPI w, MPI u, ulong v );
+void mpi_sub( MPI w, MPI u, MPI v);
+void mpi_subm( MPI w, MPI u, MPI v, MPI m);
+
+/*-- mpi-mul.c --*/
+void mpi_mul_ui(MPI w, MPI u, ulong v );
+void mpi_mul_2exp( MPI w, MPI u, ulong cnt);
+void mpi_mul( MPI w, MPI u, MPI v);
+void mpi_mulm( MPI w, MPI u, MPI v, MPI m);
+
+/*-- mpi-div.c --*/
+ulong mpi_fdiv_r_ui( MPI rem, MPI dividend, ulong divisor );
+void mpi_fdiv_r( MPI rem, MPI dividend, MPI divisor );
+void mpi_fdiv_q( MPI quot, MPI dividend, MPI divisor );
+void mpi_fdiv_qr( MPI quot, MPI rem, MPI dividend, MPI divisor );
+void mpi_tdiv_r( MPI rem, MPI num, MPI den);
+void mpi_tdiv_qr( MPI quot, MPI rem, MPI num, MPI den);
+void mpi_tdiv_q_2exp( MPI w, MPI u, unsigned count );
+int mpi_divisible_ui(MPI dividend, ulong divisor );
+
+/*-- mpi-gcd.c --*/
+int mpi_gcd( MPI g, MPI a, MPI b );
+
+/*-- mpi-pow.c --*/
+void mpi_pow( MPI w, MPI u, MPI v);
+void mpi_powm( MPI res, MPI base, MPI exp, MPI mod);
+
+/*-- mpi-mpow.c --*/
+void mpi_mulpowm( MPI res, MPI *basearray, MPI *exparray, MPI mod);
+
+/*-- mpi-cmp.c --*/
+int mpi_cmp_ui( MPI u, ulong v );
+int mpi_cmp( MPI u, MPI v );
+
+/*-- mpi-scan.c --*/
+int mpi_getbyte( MPI a, unsigned idx );
+void mpi_putbyte( MPI a, unsigned idx, int value );
+unsigned mpi_trailing_zeros( MPI a );
+
+/*-- mpi-bit.c --*/
+void mpi_normalize( MPI a );
+unsigned mpi_get_nbits( MPI a );
+int mpi_test_bit( MPI a, unsigned n );
+void mpi_set_bit( MPI a, unsigned n );
+void mpi_set_highbit( MPI a, unsigned n );
+void mpi_clear_highbit( MPI a, unsigned n );
+void mpi_clear_bit( MPI a, unsigned n );
+void mpi_rshift( MPI x, MPI a, unsigned n );
+
+/*-- mpi-inv.c --*/
+void mpi_invm( MPI x, MPI u, MPI v );
+
+
+#endif /*G10_MPI_H*/
diff --git a/include/ttyio.h b/include/ttyio.h
index e81c659c4..08ca994c9 100644
--- a/include/ttyio.h
+++ b/include/ttyio.h
@@ -1,5 +1,5 @@
/* ttyio.h
- * Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -17,11 +17,15 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_TTYIO_H
-#define GPG_TTYIO_H
+#ifndef G10_TTYIO_H
+#define G10_TTYIO_H
int tty_batchmode( int onoff );
-void tty_printf( const char *fmt, ... );
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
+ void tty_printf (const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
+#else
+ void tty_printf (const char *fmt, ... );
+#endif
void tty_print_string( byte *p, size_t n );
void tty_print_utf8_string( byte *p, size_t n );
void tty_print_utf8_string2( byte *p, size_t n, size_t max_n );
@@ -32,4 +36,4 @@ int tty_get_answer_is_yes( const char *prompt );
int tty_no_terminal(int onoff);
-#endif /*GPG_TTYIO_H*/
+#endif /*G10_TTYIO_H*/
diff --git a/include/types.h b/include/types.h
index baece0bca..b41109ee5 100644
--- a/include/types.h
+++ b/include/types.h
@@ -1,5 +1,5 @@
/* types.h - some common typedefs
- * Copyright (C) 1998 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -18,8 +18,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_TYPES_H
-#define GPG_TYPES_H
+#ifndef G10_TYPES_H
+#define G10_TYPES_H
/* The AC_CHECK_SIZEOF() in configure fails for some machines.
@@ -43,7 +43,14 @@
#ifndef HAVE_BYTE_TYPEDEF
#undef byte /* maybe there is a macro with this name */
- typedef unsigned char byte;
+ #ifndef __riscos__
+ typedef unsigned char byte;
+ #else
+ /* Norcroft treats char = unsigned char as legal assignment
+ but char* = unsigned char* as illegal assignment
+ and the same applies to the signed variants as well */
+ typedef char byte;
+ #endif
#define HAVE_BYTE_TYPEDEF
#endif
@@ -121,4 +128,4 @@ typedef struct string_list {
} *STRLIST;
-#endif /*GPG_TYPES_H*/
+#endif /*G10_TYPES_H*/
diff --git a/include/util.h b/include/util.h
index 375204e78..1d0e4edd5 100644
--- a/include/util.h
+++ b/include/util.h
@@ -1,5 +1,5 @@
/* util.h
- * Copyright (C) 1998,1999 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
*
* This file is part of GNUPG.
*
@@ -17,83 +17,136 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
-#ifndef GPG_UTIL_H
-#define GPG_UTIL_H
+#ifndef G10_UTIL_H
+#define G10_UTIL_H
-#ifdef _GCRYPT_IN_LIBGCRYPT
- #error This header should not be used internally by libgcrypt
+#if defined (__MINGW32__) || defined (__CYGWIN32__)
+# include <stdarg.h>
#endif
-#include <stdio.h>
#include "types.h"
#include "errors.h"
-#include "../jnlib/mischelp.h"
-#include "../jnlib/stringhelp.h"
-#include "../jnlib/argparse.h"
-#include "../jnlib/dotlock.h"
+#include "types.h"
+#include "mpi.h"
+
+typedef struct {
+ int *argc; /* pointer to argc (value subject to change) */
+ char ***argv; /* pointer to argv (value subject to change) */
+ unsigned flags; /* Global flags (DO NOT CHANGE) */
+ int err; /* print error about last option */
+ /* 1 = warning, 2 = abort */
+ int r_opt; /* return option */
+ int r_type; /* type of return value (0 = no argument found)*/
+ union {
+ int ret_int;
+ long ret_long;
+ ulong ret_ulong;
+ char *ret_str;
+ } r; /* Return values */
+ struct {
+ int idx;
+ int inarg;
+ int stopped;
+ const char *last;
+ void *aliases;
+ const void *cur_alias;
+ } internal; /* DO NOT CHANGE */
+} ARGPARSE_ARGS;
+
+typedef struct {
+ int short_opt;
+ const char *long_opt;
+ unsigned flags;
+ const char *description; /* optional option description */
+} ARGPARSE_OPTS;
/*-- logger.c --*/
void log_set_logfile( const char *name, int fd );
FILE *log_stream(void);
-void gpg_log_print_prefix(const char *text);
+void g10_log_print_prefix(const char *text);
void log_set_name( const char *name );
const char *log_get_name(void);
void log_set_pid( int pid );
-void log_inc_errorcount(void);
int log_get_errorcount( int clear );
-void gpg_log_hexdump( const char *text, const char *buf, size_t len );
+void log_inc_errorcount(void);
+void g10_log_hexdump( const char *text, const char *buf, size_t len );
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
- void gpg_log_bug( const char *fmt, ... )
+#if defined (__riscos__) \
+ || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 ))
+ void g10_log_bug( const char *fmt, ... )
__attribute__ ((noreturn, format (printf,1,2)));
- void gpg_log_bug0( const char *, int, const char * ) __attribute__ ((noreturn));
- void gpg_log_fatal( const char *fmt, ... )
+ void g10_log_bug0( const char *, int, const char * ) __attribute__ ((noreturn));
+ void g10_log_fatal( const char *fmt, ... )
__attribute__ ((noreturn, format (printf,1,2)));
- void gpg_log_error( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
- void gpg_log_info( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
- void gpg_log_debug( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
- void gpg_log_fatal_f( const char *fname, const char *fmt, ... )
+ void g10_log_error( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
+ void g10_log_info( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
+ void g10_log_debug( const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
+ void g10_log_fatal_f( const char *fname, const char *fmt, ... )
__attribute__ ((noreturn, format (printf,2,3)));
- void gpg_log_error_f( const char *fname, const char *fmt, ... )
+ void g10_log_error_f( const char *fname, const char *fmt, ... )
__attribute__ ((format (printf,2,3)));
- void gpg_log_info_f( const char *fname, const char *fmt, ... )
+ void g10_log_info_f( const char *fname, const char *fmt, ... )
__attribute__ ((format (printf,2,3)));
- void gpg_log_debug_f( const char *fname, const char *fmt, ... )
+ void g10_log_debug_f( const char *fname, const char *fmt, ... )
__attribute__ ((format (printf,2,3)));
- #define BUG() gpg_log_bug0( __FILE__ , __LINE__, __FUNCTION__ )
+#ifndef __riscos__
+ #define BUG() g10_log_bug0( __FILE__ , __LINE__, __FUNCTION__ )
+#else
+ #define BUG() g10_log_bug0( __FILE__ , __LINE__, __func__ )
+#endif
#else
- void gpg_log_bug( const char *fmt, ... );
- void gpg_log_bug0( const char *, int );
- void gpg_log_fatal( const char *fmt, ... );
- void gpg_log_error( const char *fmt, ... );
- void gpg_log_info( const char *fmt, ... );
- void gpg_log_debug( const char *fmt, ... );
- void gpg_log_fatal_f( const char *fname, const char *fmt, ... );
- void gpg_log_error_f( const char *fname, const char *fmt, ... );
- void gpg_log_info_f( const char *fname, const char *fmt, ... );
- void gpg_log_debug_f( const char *fname, const char *fmt, ... );
- #define BUG() gpg_log_bug0( __FILE__ , __LINE__ )
+ void g10_log_bug( const char *fmt, ... );
+ void g10_log_bug0( const char *, int );
+ void g10_log_fatal( const char *fmt, ... );
+ void g10_log_error( const char *fmt, ... );
+ void g10_log_info( const char *fmt, ... );
+ void g10_log_debug( const char *fmt, ... );
+ void g10_log_fatal_f( const char *fname, const char *fmt, ... );
+ void g10_log_error_f( const char *fname, const char *fmt, ... );
+ void g10_log_info_f( const char *fname, const char *fmt, ... );
+ void g10_log_debug_f( const char *fname, const char *fmt, ... );
+ #define BUG() g10_log_bug0( __FILE__ , __LINE__ )
#endif
-#define log_hexdump gpg_log_hexdump
-#define log_bug gpg_log_bug
-#define log_bug0 gpg_log_bug0
-#define log_fatal gpg_log_fatal
-#define log_error gpg_log_error
-#define log_info gpg_log_info
-#define log_debug gpg_log_debug
-#define log_fatal_f gpg_log_fatal_f
-#define log_error_f gpg_log_error_f
-#define log_info_f gpg_log_info_f
-#define log_debug_f gpg_log_debug_f
+#define log_hexdump g10_log_hexdump
+#define log_bug g10_log_bug
+#define log_bug0 g10_log_bug0
+#define log_fatal g10_log_fatal
+#define log_error g10_log_error
+#define log_info g10_log_info
+#define log_debug g10_log_debug
+#define log_fatal_f g10_log_fatal_f
+#define log_error_f g10_log_error_f
+#define log_info_f g10_log_info_f
+#define log_debug_f g10_log_debug_f
/*-- errors.c --*/
-const char * gpg_errstr( int no );
+const char * g10_errstr( int no );
+/*-- argparse.c --*/
+int arg_parse( ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts);
+int optfile_parse( FILE *fp, const char *filename, unsigned *lineno,
+ ARGPARSE_ARGS *arg, ARGPARSE_OPTS *opts);
+void usage( int level );
+const char *default_strusage( int level );
+/*-- (main program) --*/
+const char *strusage( int level );
+
+
+/*-- dotlock.c --*/
+struct dotlock_handle;
+typedef struct dotlock_handle *DOTLOCK;
+
+void disable_dotlock(void);
+DOTLOCK create_dotlock( const char *file_to_lock );
+int make_dotlock( DOTLOCK h, long timeout );
+int release_dotlock( DOTLOCK h );
+void remove_lockfiles (void);
+
/*-- fileutil.c --*/
char * make_basename(const char *filepath);
char * make_dirname(const char *filepath);
@@ -101,6 +154,7 @@ char *make_filename( const char *first_part, ... );
int compare_filenames( const char *a, const char *b );
const char *print_fname_stdin( const char *s );
const char *print_fname_stdout( const char *s );
+int is_file_compressed(const char *s, int *r_status);
/*-- miscutil.c --*/
@@ -112,7 +166,9 @@ const char *strtimestamp( u32 stamp ); /* GMT */
const char *asctimestamp( u32 stamp ); /* localized */
void print_string( FILE *fp, const byte *p, size_t n, int delim );
void print_utf8_string( FILE *fp, const byte *p, size_t n );
+void print_utf8_string2( FILE *fp, const byte *p, size_t n, int delim);
char *make_printable_string( const byte *p, size_t n, int delim );
+int answer_is_yes_no_default( const char *s, int def_answer );
int answer_is_yes( const char *s );
int answer_is_yes_no_quit( const char *s );
@@ -125,13 +181,63 @@ STRLIST append_to_strlist( STRLIST *list, const char *string );
STRLIST append_to_strlist2( STRLIST *list, const char *string, int is_utf8 );
STRLIST strlist_prev( STRLIST head, STRLIST node );
STRLIST strlist_last( STRLIST node );
+char *pop_strlist( STRLIST *list );
+const char *memistr( const char *buf, size_t buflen, const char *sub );
+const char *ascii_memistr( const char *buf, size_t buflen, const char *sub );
+char *mem2str( char *, const void *, size_t);
+char *trim_spaces( char *string );
+unsigned int trim_trailing_chars( byte *line, unsigned int len,
+ const char *trimchars);
+unsigned int trim_trailing_ws( byte *line, unsigned len );
+unsigned int check_trailing_chars( const byte *line, unsigned int len,
+ const char *trimchars );
+unsigned int check_trailing_ws( const byte *line, unsigned int len );
int string_count_chr( const char *string, int c );
int set_native_charset( const char *newset );
const char* get_native_charset(void);
char *native_to_utf8( const char *string );
-char *utf8_to_native( const char *string, size_t length );
+char *utf8_to_native( const char *string, size_t length, int delim);
int check_utf8_string( const char *string );
+int ascii_isupper (int c);
+int ascii_islower (int c);
+int ascii_toupper (int c);
+int ascii_tolower (int c);
+int ascii_strcasecmp( const char *a, const char *b );
+int ascii_memcasecmp( const char *a, const char *b, size_t n );
+
+#ifndef HAVE_STPCPY
+char *stpcpy(char *a,const char *b);
+#endif
+#ifndef HAVE_STRLWR
+char *strlwr(char *a);
+#endif
+#ifndef HAVE_STRSEP
+char *strsep (char **stringp, const char *delim);
+#endif
+#ifndef HAVE_STRCASECMP
+int strcasecmp( const char *, const char *b);
+#endif
+#ifndef HAVE_STRNCASECMP
+int strncasecmp (const char *, const char *b, size_t n);
+#endif
+#ifndef HAVE_STRTOUL
+ #define strtoul(a,b,c) ((unsigned long)strtol((a),(b),(c)))
+#endif
+#ifndef HAVE_MEMMOVE
+ #define memmove(d, s, n) bcopy((s), (d), (n))
+#endif
+
+#if defined (__MINGW32__) || defined (__CYGWIN32__)
+/*-- w32reg.c --*/
+char *read_w32_registry_string( const char *root,
+ const char *dir, const char *name );
+int write_w32_registry_string(const char *root, const char *dir,
+ const char *name, const char *value);
+
+/*-- strgutil.c --*/
+int vasprintf ( char **result, const char *format, va_list args);
+#endif
/**** other missing stuff ****/
#ifndef HAVE_ATEXIT /* For SunOS */
@@ -143,7 +249,42 @@ int check_utf8_string( const char *string );
#endif
/******** some macros ************/
+#ifndef STR
+ #define STR(v) #v
+#endif
+#define STR2(v) STR(v)
#define DIM(v) (sizeof(v)/sizeof((v)[0]))
#define DIMof(type,member) DIM(((type *)0)->member)
-#endif /*GPG_UTIL_H*/
+/******* RISC OS stuff ***********/
+#ifdef __riscos__
+/* needed for strcasecmp() */
+#include <strings.h>
+/* needed for filename munging */
+#include <unixlib/local.h>
+/* needed for image file system feature */
+#include <unixlib/features.h>
+void riscos_global_defaults();
+#define RISCOS_GLOBAL_STATICS(a) const char *__dynamic_da_name = (a);
+void riscos_set_filetype(const char *filename, const char *mimetype);
+pid_t riscos_getpid(void);
+int riscos_kill(pid_t pid, int sig);
+int riscos_access(const char *path, int amode);
+int fdopenfile(const char *filename, const int allow_write);
+void close_fds(void);
+int renamefile(const char *old, const char *new);
+char *gstrans(const char *old);
+void not_implemented(const char *feature);
+#ifdef DEBUG
+void dump_fdlist(void);
+void list_openfiles(void);
+#endif
+#ifndef __RISCOS__C__
+ #define getpid riscos_getpid
+ #define kill(a,b) riscos_kill((a),(b))
+ #define access(a,b) riscos_access((a),(b))
+#endif /* !__RISCOS__C__ */
+#endif /* __riscos__ */
+
+#endif /*G10_UTIL_H*/
+