gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r942 - GNUnet-docs/WWW/test


From: durner
Subject: [GNUnet-SVN] r942 - GNUnet-docs/WWW/test
Date: Tue, 14 Jun 2005 13:12:36 -0700 (PDT)

Author: durner
Date: 2005-06-14 13:12:29 -0700 (Tue, 14 Jun 2005)
New Revision: 942

Modified:
   GNUnet-docs/WWW/test/hacking.php3
   GNUnet-docs/WWW/test/hacking_application.php3
   GNUnet-docs/WWW/test/hacking_future.php3
   GNUnet-docs/WWW/test/hacking_organization.php3
   GNUnet-docs/WWW/test/hacking_rpc.php3
   GNUnet-docs/WWW/test/hacking_testcases.php3
   GNUnet-docs/WWW/test/hacking_threading.php3
   GNUnet-docs/WWW/test/hacking_util.php3
   GNUnet-docs/WWW/test/hacking_win32_build.php3
Log:
Reformat

Modified: GNUnet-docs/WWW/test/hacking.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking.php3   2005-06-14 19:50:58 UTC (rev 941)
+++ GNUnet-docs/WWW/test/hacking.php3   2005-06-14 20:12:29 UTC (rev 942)
@@ -8,49 +8,50 @@
 HR();
 ANCHOR("design");H3("System Design");
 
+BP();
 W("This section is intented to be an introduction to programmers that want to 
extend the framework.");
 W("GNUnet has a layered design.");
 W("The basic goal for the layering is this:");
+EP();
 
 img("gnunet-design.png", "GNUnet layering", "CENTER", 401, 421, 0, 10, 10);
-P();
 ?>
-<table border=5>
+<table border="0" cellspacing="0" cellpadding="0">
 <tr>
-<th><?php W("Layer"); ?></th>
-<th><?php W("Example"); ?></th>
-<th><?php W("code in"); ?></th>
+<th class="tbl"><?php W("Layer"); ?></th>
+<th class="tbl"><?php W("Example"); ?></th>
+<th class="tbl"><?php W("code in"); ?></th>
 <tr>
-<th><?php W("User Interface(s)"); ?></th>
-<td><?php W("gnunet-search"); ?></td>
-<td>applications/fs/tools/</td>
+<th class="tbl"><?php W("User Interface(s)"); ?></th>
+<td class="tbl"><?php W("gnunet-search"); ?></td>
+<td class="tbl">applications/fs/tools/</td>
 </tr>
 <tr>
-<th><?php W("Application Logic"); ?></th>
-<td><?php W("file sharing"); echo ", "; W("statistics"); ?></td>
-<td>applications/fs/module/, applications/stats/</td>
+<th class="tbl"><?php W("Application Logic"); ?></th>
+<td class="tbl"><?php W("file sharing"); echo ", "; W("statistics"); ?></td>
+<td class="tbl">applications/fs/module/, applications/stats/</td>
 </tr>
 <tr>
-<th><?php W("Core"); ?></th>
-<td><?php W("gnunetd"); ?></td>
-<td>server/</td>
+<th class="tbl"><?php W("Core"); ?></th>
+<td class="tbl"><?php W("gnunetd"); ?></td>
+<td class="tbl">server/</td>
 </tr>
 <tr>
-<th><?php W("Transport"); ?></th>
-<td><?php W("UDP"); echo " "; W("TCP"); ?></td>
-<td>transports/</td>
+<th class="tbl"><?php W("Transport"); ?></th>
+<td class="tbl"><?php W("UDP"); echo " "; W("TCP"); ?></td>
+<td class="tbl">transports/</td>
 </tr>
 </table>
-<br clear=all>
 <?php
-P();
+BP();
 W("The GNUnet core is structured into a complex set of smaller modules.");
 W("These modules are responsible for specific aspects of the system, like 
sessionkey exchange, peer advertisements, topology management or the 
transports.");
 W("The following picture illustrates the dependencies between these 
fundamental modules in the GNUnet core:");
-P();
+EP();
 img("overview.png", "GNUnet Core Overview", "CENTER", 746, 598, 0, 10, 10);
-P();
+BP();
 W("The responsibilities of the individual modules are split as follows:");
+EP();
 echo "<dl>";
 DT("identity");
 DD("Keeping track of known peers, how much we trust them and what their 
current addresses are");
@@ -71,8 +72,9 @@
 DT("core");
 DD("Loading of modules, registering of handlers, event loops.");
 echo "</dl>";
-P();
+BP();
 W("The following sections describe various aspects of the GNUnet code in more 
detail:");
+EP();
 include("hacking_index.inc");
 
 include("html_footer.php3");

Modified: GNUnet-docs/WWW/test/hacking_application.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_application.php3       2005-06-14 19:50:58 UTC 
(rev 941)
+++ GNUnet-docs/WWW/test/hacking_application.php3       2005-06-14 20:12:29 UTC 
(rev 942)
@@ -5,12 +5,14 @@
 include("html_header.php3");
 
 H4("How do I write a new application service for GNUnet?");
+BP();
 W("The directory %s contains the minimal piece of code that you will need to 
start.",
   
extlink_("doxygen/html/template_8c-source.html","src/applications/template/"));
 W("You may also want to look at %s for a simple working example.",
   extlink_("doxygen/html/chat_8c-source.html","src/applications/chat/"));
-BR();
+P();
 W("Most simple applications will consist of two pieces of code:");
+EP();
 echo "<ol><li>";
 W("The first is a dynamic library that plugs into the GNUnet core.");
 W("This library must provide a single function which is invoked by the core 
when <tt>gnunetd</tt> starts.");
@@ -32,15 +34,17 @@
 W("While any IPC mechanism should theoretically work, the preferred way that 
is used by all existing GNUnet applications is using %s, a simple TCP 
connection that communicates with the %s.",
   ARRAY(extlink_("doxygen/html/tcpio_8c.html","tcpio"),
        extlink_("doxygen/html/tcpserver_8c-source.html","tcpserver")));
-P();
+BR();
 W("The simplest way for a user interface to connect to the GNUnet core via TCP 
is to use the helper methods defined %s as part of the gnunet-util library; the 
library defines methods for %s and getting a client socket that is connected to 
<tt>gnunetd</tt>.",
   ARRAY(extlink_("doxygen/html/port_8c-source.html","port.c"),
        extlink_("doxygen/html/printhelp_8c-source.html","parsing the command 
line options")));
 echo "</li></ol>";
-P();
+
 ANCHOR("portability");H4("Portability");
+BP();
 W("The official GNUnet source maintained by the GNUnet developers supports the 
platforms listed on the downloads page.");
 W("These ports require some guidelines to be obeyed:");
+EP();
 echo "<ul>";
 echo "<li>";
 W("Avoid platform specific code outside src/util/");

Modified: GNUnet-docs/WWW/test/hacking_future.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_future.php3    2005-06-14 19:50:58 UTC (rev 
941)
+++ GNUnet-docs/WWW/test/hacking_future.php3    2005-06-14 20:12:29 UTC (rev 
942)
@@ -5,10 +5,12 @@
 include("html_header.php3");
 
 ANCHOR("future");H3("Future Work");
+BP();
 W("Code contributions (GPL) are generally welcome.");
 W("Before writing a larger patch, you may want to discuss the idea on the 
developer mailinglist first.");
-BR();
+P();
 W("Some ideas (in random order, contacts listed are people that seem to have 
given the idea some thought and/or may even have some code):");
+EP();
 echo "<ul>";
 LI("improve performance (create simulator/testbed, improve heuristics)");
 LI("improve documentation");
@@ -23,7 +25,9 @@
 LI("port to OS X");
 LI("improve HTTP compatibility of HTTP transport service");
 echo "</ul>";
+BP();
 W("And if you want to go totally crazy:");
+EP();
 echo "<ul>";
 LI("distributed computation (sandboxing!?)");
 LI("add steganography to existing transport protocols");

Modified: GNUnet-docs/WWW/test/hacking_organization.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_organization.php3      2005-06-14 19:50:58 UTC 
(rev 941)
+++ GNUnet-docs/WWW/test/hacking_organization.php3      2005-06-14 20:12:29 UTC 
(rev 942)
@@ -6,15 +6,16 @@
 
 ANCHOR("libraries");H3("GNUnet libraries");
 
+BP();
 W("GNUnet is divided into several libraries.");
 W("Some libraries are statically linked (rare), some are shared libraries and 
many are plugins into the GNUnet core.");
-BR();
+P();
 W("Static libraries are used for more internal re-use of code.");
 W("For example, the static gnunet-core library is used by the GNUnet deaemon 
and by various testcases and diagnostic tools.");
-BR();
+P();
 W("Shared libraries are used whenever multiple tools share code.");
 W("The general OS abstraction library, gnunet-util as well as libraries like 
libgnunet-ecrs that are used by multiple user interfaces belong into this 
category.");
-BR();
+P();
 W("Finally, plugins are used for all of the code that is dynamically loaded by 
the gnunet daemon when needed.");
 W("This keeps the code for gnunetd small and modular.");
 W("Modules fall into two subcategories, services and applications.");
@@ -27,11 +28,13 @@
 W("Application modules typically also provide one or more shared libraries to 
make it easier to write user interfaces for these applications.");
 W("By convention, the names of the header files for these convenience 
libraries end in <tt>_lib.h</tt>.");
 W("Note that the application modules themselves do not define a header file 
since they are accessed using a set of client-server messages exchanged using 
code from gnunet-util and the GNUnet core.");
-P();
+EP();
 
 ANCHOR("overview");H3("Important header files and libraries");
 
+BP();
 W("The most important modules in GNUnet are:");
+EP();
 echo "<ul>\n";
 LI(extlink_("#protocols","gnunet_protocols.h"));
 LI(intlink_("hacking_util.php3","gnunet_util.h"));
@@ -41,28 +44,32 @@
 
 
 ANCHOR("protocols");H4("gnunet_protocols.h");
+BP();
 W("The <tt>gnunet_protocols.h</tt> include file also defines all GNUnet 
message ID numbers.");
 W("While these ID numbers belong to individual modules, defining them all in 
one place makes it trivial to avoid conflicting assignments.");
 W("Thus, whenever a new type of message is defined, it should be given a 
globally unique number in <tt>gnunet_protocols.h</tt> as soon as possible.");
 W("The most important sets of constants are the client-server protocol message 
types, the peer-to-peer protocol message types, the transport service 
identifiers and the ECRS block types.");
 
-P();
+EP();
 ANCHOR("transport");H4("gnunet_transport.h");
+BP();
 W("This header primarily defines the functions that any GNUnet transport 
service must implement.");
 W("The semantic of the transport service are essentially those of UDP:");
 W("out-of-order, unreliable, unencrypted delivery of bounded-size messages.");
 W("Each transport type can also define its own addressing scheme.");
-P();
+EP();
 ANCHOR("core");H4("gnunet_core.h");
+BP();
 W("This header defines the API that can be used by GNUnet modules.");
 W("It provides functions to register listeners for certain events (like 
messages from peers and local user interface clients), to load additional 
services, and to send messages to other peers.");
 
-P();
+EP();
 ANCHOR("flow");H3("Global data-flow in GNUnet");
 
+BP();
 W("There are two typical flows for data in GNUnet.");
 W("Note that this text describes the flow of the data, several threads and 
processes are involved in this.");
-BR();
+P();
 W("First, a client such as %s or %s connects (via a secure TCP connection, 
typically
 loopback) to the %s.",
   ARRAY(extlink_("doxygen/html/gnunetsearch_8c.html","gnunet-search"),
@@ -78,13 +85,13 @@
        
extlink_("doxygen/html/gnunet__transport__service_8h.html","transport")));
 W("The peer-to-peer message is then transmitted via a transport service, such 
as the %s transport.",
   extlink_("doxygen/html/udp_8c.html","udp"));
-BR();
+P();
 W("The second path comes into play after gnunetd receives a message on any 
transport mechanism.");
 W("The message is %s according to its message type.",
   extlink_("doxygen/html/handler_8c.html#a14","demultiplexed"));
 W("If it is a query the GAP and FS modules perform a lookup and eventually 
send a reply.");
 W("The reply goes the same path back, eventually reaching the other peer where 
it is then passed to the user interface.");
-P();
+EP();
 
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/hacking_rpc.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_rpc.php3       2005-06-14 19:50:58 UTC (rev 
941)
+++ GNUnet-docs/WWW/test/hacking_rpc.php3       2005-06-14 20:12:29 UTC (rev 
942)
@@ -5,7 +5,7 @@
 include("html_header.php3");
 
 H2("The GNUnet RPC service");
-P();
+BP();
 W("The GNUnet RPC service offers link-to-link reliable remote procedure 
calls.");
 W("The link-to-link restriction means that the peers have to be able to 
connect directly.");
 W("In other words, the GNUnet RPC service does not do any routing.");
@@ -22,9 +22,10 @@
 W("Just like invoking an RPC can be synchronous or asynchronous, the RPC 
functions themselves can be synchronous or asynchronous.");
 W("RPC functions that themselves perform RPC calls must almost always be 
defined as asynchronous to avoid possibly deadlocking the system.");
 W("Note that the size of RPC messages (paramters, return values) is currently 
limited by the MTU (minus headers) of the underlying transport used by 
GNUnet.");
-P();
+EP();
 
 H3("Arguments and return values");
+BP();
 W("GNUnet RPC functions use the opaque RPC_Param datastructure for passing 
arguments and return values.");
 W("RPC_Param allows naming parameters and returning any number of return 
values.");
 W("Naming parameters has the advantage that it is easy to add additional 
arguments in later versions.");
@@ -34,10 +35,13 @@
 W("The %s header file defines various helper functions to access RPC_Param 
datastructures.",
   extlink_("doxygen/html/gnunet__rpc__service_8h.html",
           "gnunet_rpc_service.h"));
+EP();
 
 H3("Using the RPC service");
+BP();
 W("In order to use the RPC service an application module must first request it 
from the GNUnet core.");
 W("The following code illustrates how to do this:");
+EP();
 ?>
 <pre>
 CoreAPIForApplicaton * coreAPI = ...;

Modified: GNUnet-docs/WWW/test/hacking_testcases.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_testcases.php3 2005-06-14 19:50:58 UTC (rev 
941)
+++ GNUnet-docs/WWW/test/hacking_testcases.php3 2005-06-14 20:12:29 UTC (rev 
942)
@@ -5,22 +5,23 @@
 include("html_header.php3");
 
 H2("Writing testcases for GNUnet");
-P();
 H3("Fundamentals");
+BP();
 W("Ideally, any non-trivial GNUnet code should be covered by automated 
testcases.");
 W("Testcases should reside in the same place as the code that is being 
tested.");
 W("The name of source files implementing tests should contain the word 
<tt>test</tt>.");
 W("Typically it is desireable to have testcases both for low-level functions 
and high-level abstractions.");
 W("For example, while the cryptographic functions would be tested as part of 
the session key exchange, they should also still be tested independently.");
-P();
+EP();
 H3("Integration with GNU autotools");
-P();
+BP();
 W("Testcases in GNUnet should be integrated with the autotools build system.");
 W("This way, developers and anyone building binary packages will be able to 
run all testcases simply by running <tt>make check</tt>.");
 W("The final testcases shipped with the distribution should output at most 
some brief progress information and not display debug messages.");
 W("The success or failure of a testcase must be indicated by returning zero 
(success) or non-zero (failure) from the main method of the testcase.");
 W("The integration with the autotools is relatively straightforward and only 
requires modifications to the <tt>Makefile.am</tt> in the directory containing 
the testcase.");
 W("For three testcases testing the code in  <tt>foo.c</tt>, <tt>bar.c</tt> and 
<tt>etc.c</tt>, the <tt>Makefile.am</tt> would contain the following lines:");
+EP();
 PRE("check_PROGRAMS = footest bartest etctest\n" .
     "TESTS = $(check_PROGRAMS)\n" .
     "footest_SOURCES = footest.c\n" .
@@ -29,19 +30,22 @@
     "bartest_LDADD = $(top_builddir)/src/util/libgnunetutil.la\n" .
     "etctest_SOURCES = etctest.c\n" .
     "etctest_LDADD = $(top_builddir)/src/util/libgnunetutil.la\n");
+BP();
 W("Naturally, other libraries used by the testcase may be specified in the 
<tt>LDADD</tt> directive as necessary.");
-BR();
+P();
 W("Often testcases depend on additional input files, such as a configuration 
file.");
 W("These support files have to be listed using the <tt>EXTRA_DIST</tt> 
directive in order to ensure that they are included in the distribution.");
 W("Example:");
+EP();
 PRE("EXTRA_DIST = check.conf\n");
-P();
+BP();
 W("Executing <tt>make check</tt> will run all testcases in the current 
directory and all subdirectories.");
 W("Testcases can be compiled individually by running <tt>make footest</tt> and 
then invoked directly using <tt>./footest</tt>.");
 W("Note that due to the use of plugins in GNUnet, it is typically necessary to 
run <tt>make install</tt> before running any testcases.");
 W("Thus the canonical command <tt>make check install</tt> has to be changed to 
<tt>make install check</tt> for GNUnet.");
-P();
+EP();
 H3("Common problems and solutions");
+BP();
 W("When testing GNUnet, the splitting of the code into a daemon and clients 
often complicates testing.");
 W("The solution to this is to have the testcase <tt>fork</tt> a 
<tt>gnunetd</tt> process and then execute appropriate client actions (to test 
the client APIs or the core module or both).");
 W("If necessary, multiple daemons can be forked using different ports (!) to 
simulate a network.");
@@ -49,6 +53,7 @@
 W("Also note that some client libraries were not written to communicate with 
multiple daemons over multiple trusted TCP connections at the same time, which 
may complicate testing in such situations.");
 W("Note that on exit, the testcase should shutdown <tt>gnunetd</tt> with a 
kill signal.");
 W("The following code illustrates spawning and killing a <tt>gnunetd</tt> 
process from a testcase:");
+EP();
 PRE("pid_t daemon; \n" .
     "daemon = fork();\n" .
     "if (daemon == 0) {\n" .
@@ -73,15 +78,16 @@
     "  if (WEXITSTATUS(status) == 0)\n" .
     "    return -1; /* server had error */\n" .
     "}\n");
-P();
+BP();
 W("An alternative way to just test modules (in particular if there is no 
client API to start with) is to implement a mock-version of the GNUnet core API 
and emulate a <tt>gnunetd</tt> environment for the module.");
 W("An example for this is the %s.",
   extlink_("doxygen/html/fragmentationtest_8c.html", "fragmentationtest.c"));
-BR();
+P();
 W("Another uncommonly used alternative is to have the testcase process itself 
load the modules by initiating the full <tt>gnunetd</tt> startup sequence.");
 W("For that, the testcase must link against <tt>libgnunetcore</tt>.");
 W("For an example see %s.",
   extlink_("doxygen/html/gnunet-transport-check_8c.html", 
"gnunet-transport-check.c"));
+EP();
 
 include("html_footer.php3");
 ?>

Modified: GNUnet-docs/WWW/test/hacking_threading.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_threading.php3 2005-06-14 19:50:58 UTC (rev 
941)
+++ GNUnet-docs/WWW/test/hacking_threading.php3 2005-06-14 20:12:29 UTC (rev 
942)
@@ -5,11 +5,13 @@
 include("html_header.php3");
 
 H4("Threading and Synchronization");
+BP();
 W("GNUnet is inherently multi-threaded.");
 W("Thus writing applications for GNUnet requires taking synchronization issues 
into account.");
 W("GNUnet provides a minimal set of threading abstractions in the %s module, 
including semaphores, mutexes, recursive mutexes and thread creation.",
   extlink_("doxygen/html/semaphore_8c-source.html","semaphore"));
 W("When writing code for GNUnet, the following basic rules must be followed:");
+EP();
 echo "<ol><li><strong>";
 W("The core may call registered callback handlers at any time, and also 
concurrently.");
 W("The application modules are responsible for synchronizing access to their 
internal state properly.");
@@ -21,7 +23,7 @@
 W("The rationale behind this rule is that the core may have a thread A that 
holds an internal lock L and calls a callback on the service.");
 W("If simultaneously another thread B holds a lock S of the service and calls 
back on the core, this may result in a deadlock if that callback blocks trying 
to aquire lock L and thread A blocks trying to aquire lock S.");
 W("If thread A does not hold any internal locks when calling on the core, this 
situation can be safely avoided.");
-P();
+BR();BR();
 W("Programming with this paradigm is not very difficult.");
 W("Still, it often requires a simple trick if the callback to the core 
requires an argument that is typically kept in the shared global state.");
 W("The trick is, to copy the shared global state into a local buffer while 
holding the lock, then releasing the lock and finally doing the callback on the 
core.");
@@ -37,7 +39,7 @@
 W("Encryption operations are also not a problem.");
 W("The only problem in practice are <em>blocking socket operations</em>.");
 W("Blocking socket operations occur pretty much only apply to TCP sockets.");
-P();
+BR();BR();
 W("The TCP transport service avoids blocking operations using <tt>select</tt> 
calls and IO buffers.");
 W("If a message can not be buffered (buffer full) and sending would block, the 
TCP transport layer discards the message (or: why we like unreliable 
operational semantics).");
 W("Client-server TCP connections are more problematic.");
@@ -47,11 +49,11 @@
 W("Similarly, the client blocks when sending messages to gnunetd.");
 W("Since the client-server TCP connection is supposed to use a fast (loopback, 
LAN) connection and since gnunetd uses a thread per client connection, blocking 
on this connection is acceptable.");
 W("The problem with blocking here is that it leaves the possibility of an 
<em>inter-process deadlock</em>.");
-P();
+BR();BR();
 W("The deadlock can occur if the TCP thread that receives and processes 
messages from the client blocks on a write to the client (TCP buffer queue 
full) and thus gnunetd no longer reads from the TCP pipe.");
 W("If the client blocks on a write to gnunetd and thus no longer reads from 
its end of the TCP connection, both processes block forever. This problem is 
typically hard to diagnose since it involves two processes and may only occur 
after the TCP buffers of the operating system are full.");
 W("A typical symptom is that <tt>netstat -tn</tt> shows two local TCP 
connections with very full receive and send buffers that do not change.");
-P();
+BR();BR();
 W("The solution to the problem is that every client (not peer, remember that 
clients are trusted and can thus be expected to follow the protocol correctly) 
must always be in a state where it has a thread that can receive and process 
messages from gnunetd.");
 W("That thread should never block, neither by doing a direct write to gnunetd 
nor by aquireing a lock that could be hold by another thread while that thread 
writes to gnunetd.");
 W("A typical solution to this problem is to use one thread that processes 
replies and another thread that generates requests.");
@@ -59,7 +61,7 @@
 W("The %s code is an example for code that handles this type of problem.",
   extlink_("doxygen/html/requestmanager_8c-source.html", "RequestManager"));
 echo "</li></ol>";
-P();
+
 H5("Notes");
 echo "<ul><li>";
 W("You should never use pthread_detach.");

Modified: GNUnet-docs/WWW/test/hacking_util.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_util.php3      2005-06-14 19:50:58 UTC (rev 
941)
+++ GNUnet-docs/WWW/test/hacking_util.php3      2005-06-14 20:12:29 UTC (rev 
942)
@@ -5,7 +5,7 @@
 include("html_header.php3");
 
 H2("libgnunet_util");
-P();
+BP();
 
 W("<tt>libgnunet_util</tt> is a helper library that is supposed to contain all 
platform dependent code (except for user interfaces).");
 W("It is also supposed to offer basic services that most if not all GNUnet 
binaries require.");
@@ -14,6 +14,7 @@
   extlink_("doxygen/html/gnunet__util_8h.html",
            "gnunet_util.h"));
 W("The functions provided by <tt>libgnunet_util</tt> fall roughly into the 
following categories:");
+EP();
 ?>
 <ul>
  <li><?php extlink("doxygen/html/timer_8c.html",
@@ -50,15 +51,15 @@
 <?php
 
 
-
+BP();
 W("Ideally, porting GNUnet should only require porting the gnunet_util 
library.");
 W("More testcases for the gnunet-util APIs are therefore a great way to make 
porting of GNUnet easier.");
+EP();
 
-
-BR();
 ANCHOR("crypto");
 H3("Cryptography");
 
+BP();
 W("The gnunet-util APIs also provide the cryptographic primitives used in 
GNUnet.");
 W("GNUnet uses 2048 bit RSA keys for the session key exchange and for signing 
messages by peers.");
 W("Most researchers in cryptography consider 2048 bit RSA keys as very secure 
and practically unbreakable for a very long time unless extraordinary advances 
in cryptography are made.");
@@ -68,7 +69,7 @@
 W("Note that GNUnet does not use RSA to encrypt files or ordinary individual 
peer-to-peer messages.");
 W("No sane protocol uses public key cryptography for the bulk of the messages 
since public key encryption is extremely expensive compared to symmetric 
ciphers.");
 W("GNUnet follows the well-established practice to use public key cryptography 
to exchange an initial pair of symmetric keys that is then used for the rest of 
the communication).");
+EP();
 
-
 include("html_footer.php3");
 ?>
\ No newline at end of file

Modified: GNUnet-docs/WWW/test/hacking_win32_build.php3
===================================================================
--- GNUnet-docs/WWW/test/hacking_win32_build.php3       2005-06-14 19:50:58 UTC 
(rev 941)
+++ GNUnet-docs/WWW/test/hacking_win32_build.php3       2005-06-14 20:12:29 UTC 
(rev 942)
@@ -5,16 +5,18 @@
 include("html_header.php3");
 
 H3("Building GNUnet and libextractor on Microsoft Windows 32-bit Platforms");
+BP();
 W("This document is a guide to building GNUnet and libextractor on Windows 
platforms.");
-BR();
+P();
 W("The Windows build uses a UNIX emulator for Windows, %s, to build the 
executable modules.",
   extlink_("http://www.mingw.org/";, "MinGW"));
 W("These modules run natively on Windows and do not require additional 
emulation software besides the usual %s.",
   extlink_("download.php3", "dependencies"));
-BR();
-W("GNUnet development is mostly done under Linux and especially CVS checkouts 
may not build out of the box.");
+P();
+W("GNUnet development is mostly done under Linux and especially SVN checkouts 
may not build out of the box.");
 W("We regret any inconvenience, and if you have problems, please %s or ask the 
%s for assistance.",
   ARRAY(extlink_("faq.php3#bugs", "report them"), extlink_("mailinglist.php3", 
"mailinglist")));
+EP();
 H4("Hardware and OS requirements");
 echo "<ul>";
 LI("Pentium II or equivalent processor, 350 MHz or better");
@@ -193,23 +195,28 @@
   </li>
 </ol>
 <?php H4("Building libextractor and GNUnet");
+BP();
 W("See %s for basic instructions on building libextractor and GNUnet.", 
    extlink_("user_gnunet.php3",
            "Installation"));
-BR();
+P();
 W("By default, all modules that are created in this way contain debug 
information and are quite large.");
 W("To compile release versions (small and fast) set the variable CFLAGS:");
-BR();
+P();
 PRE("# CFLAGS='-O2' ./configure --prefix=\$HOME --with-extractor=\$HOME");
+EP();
 H4("Installer");
+BP();
 W("The GNUnet installer is made with %s.", 
extlink_("http://nsis.sourceforge.net/";,
        "NSIS"));
 W("The installer script is located in contrib\win in the GNUnet source tree.");
-P();
+EP();
 H4("Source");
+BP();
 W("The sources of all dependencies are available %s.", 
    extlink_("download/win/3rd_party_sources.tar",
            "here"));
+EP();
 
 include("html_footer.php3");
 ?>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]