See ChangeLog: Sun Jan 24 18:16:26 CET 1999 Werner Koch
[gnupg.git] / doc / HACKING
index 0f98014..17ac742 100644 (file)
@@ -1,9 +1,96 @@
-                         A Hacker's Guide to GNUPG
-                      ================================
-                      (Some notes on GNUPG internals.)
+                     A Hacker's Guide to GNUPG
+                  ================================
+                  (Some notes on GNUPG internals.)
+
+
+                  ===> Under construction <=======
+
+
+CVS Access
+==========
+Anonymous read-only CVS access is available:
+
+  cvs -z6 -d :pserver:anonymous@ftp.guug.de:/home/koch/cvs login
+
+use the password "anonymous".  To check out the the complete
+archive use:
+
+  cvs -z6 -d :pserver:anonymous@ftp.guug.de:/home/koch/cvs checkout gnupg
+
+This service is provided to help you in hunting bugs and not to deliver
+stable snapshots; it may happen that it even does not compile, so please
+don't complain. CVS may put a high load on a server, so please don't poll
+poll for new updates but wait for an announcement; to receive this you may
+want to subscribe to:
+
+    gnupg-commit-watchers@isil.d.shuttle.de
+
+by sending a mail with "subscribe" in the body to
+
+    gnupg-commit-watchers-request@isil.d.shuttle.de
+
+
+Please run scripts/autogen.sh to create some required files.
+
+
+RFCs
+====
+
+1423  Privacy Enhancement for Internet Electronic Mail:
+      Part III: Algorithms, Modes, and Identifiers.
+
+1489  Registration of a Cyrillic Character Set.
+
+1750  Randomness Recommendations for Security.
+
+1991  PGP Message Exchange Formats.
+
+2015  MIME Security with Pretty Good Privacy (PGP).
+
+2144  The CAST-128 Encryption Algorithm.
+
+2279  UTF-8, a transformation format of ISO 10646.
+
+2440  OpenPGP.
+
+
+
+Debug Flags
+-----------
+Use the option "--debug n" to output debug information. This option
+can be used multiple times, all values are ORed; n maybe prefixed with
+0x to use hex-values.
+
+     value  used for
+     -----  ----------------------------------------------
+      1     packet reading/writing
+      2     MPI details
+      4     ciphers and primes (may reveal sensitive data)
+      8     iobuf filter functions
+      16    iobuf stuff
+      32    memory allocation stuff
+      64    caching
+      128   show memory statistics at exit
+      256   trust verification stuff
+
+
+
+
+Directory Layout
+----------------
+  ./           Readme, configure
+  ./scripts    Scripts needed by configure and others
+  ./doc        Documentation
+  ./util       General purpose utility function
+  ./mpi        Multi precision integer library
+  ./cipher     Cryptographic functions
+  ./g10        GnuPG application
+  ./tools      Some helper and demo programs
+  ./keybox     The keybox library
+  ./gcrypt     Stuff needed to build libgcrypt
+
 
 
-===> Under construction <=======
 
 
 Memory allocation
@@ -34,7 +121,7 @@ Logging
 Option parsing
 ---------------
 GNUPG does not use getopt or GNU getopt but functions of it's own.  See
-util/argparse.c for details.  The advantage of these funtions is that
+util/argparse.c for details.  The advantage of these functions is that
 it is more easy to display and maintain the help texts for the options.
 The same option table is also used to parse resource files.
 
@@ -42,7 +129,7 @@ The same option table is also used to parse resource files.
 
 What is an iobuf
 ----------------
-This is the data structure used for most I/O of gnupg. It is similiar
+This is the data structure used for most I/O of gnupg. It is similar
 to System V Streams but much simpler.  It should be replaced by a cleaner
 and faster implementation.  We are doing to much copying and the semantics
 of "filter" removing are not very clean.  EOF handling is also a problem.
@@ -51,7 +138,7 @@ of "filter" removing are not very clean.  EOF handling is also a problem.
 
 How to use the message digest functions
 ---------------------------------------
-cipher/md.c implements an interface to hash (message diesgt functions).
+cipher/md.c implements an interface to hash (message digest functions).
 
 a) If you have a common part of data and some variable parts
    and you need to hash of the concatenated parts, you can use this: