Adam Warrington [ UPnP ]
Adriano Peluso [ Documentation export to Texinfo ]
Alex Harper [ OS X CPU load ]
+Amirouche Boubekki <amirouche@hypermove.net>
Andrew McDonald <andrew@mcdonald.org.uk> [ SHA-512]
Andy Green <andy@warmcat.com>
Antti Salonen
@c ** FIXME: Link to files in source, not online.
@c ** FIXME: Where is the Java tutorial?
@itemize @bullet
+@c broken link
@item @uref{https://gnunet.org/git/gnunet.git/plain/doc/gnunet-c-tutorial.pdf, GNUnet C tutorial}
@item GNUnet Java tutorial
@end itemize
functions for each block type.
@item @file{statistics/} --- statistics service
The statistics service enables associating
-values (of type uint64_t) with a componenet name and a string. The main
+values (of type uint64_t) with a component name and a string. The main
uses is debugging (counting events), performance tracking and user
entertainment (what did my peer do today?).
@item @file{arm/} --- Automatic Restart Manager (ARM)
Note that, here the functions @code{htonl}, @code{htons} and
@code{GNUNET_TIME_absolute_hton} are applied to convert little endian
-into big endian, about the usage of the big/small edian order and the
+into big endian, about the usage of the big/small endian order and the
corresponding conversion function please refer to Introduction of
Big Endian and Little Endian.
@c %**end of header
+@c inconsistent use of ``must'' above it's written ``MUST''
In contrast to GET operations, developers @strong{must} manually re-run
PUT operations periodically (if they intend the content to continue to be
available). Content stored in the DHT expires or might be lost due to
requests, possibly limiting themselves to requests for a particular block
type.
-The monitoring API is not only usefu only for diagnostics, it can also be
+The monitoring API is not only useful for diagnostics, it can also be
used to trigger application operations based on PUT operations.
For example, an application may use PUTs to distribute work requests to
other peers.
several of these messages. Naturally, the client should transmit these
messages as quickly as possible after the original GET request such that
the DHT can filter those results in the network early on. Naturally, as
-these messages are send after the original request, it is conceivalbe
+these messages are sent after the original request, it is conceivalbe
that the DHT service may return blocks that match those already known
to the client anyway.
@code{GNUNET_MESSAGE_TYPE_DHT_P2P_GET} to other peers. In addition to the
usual information about the request (type, routing options, desired
replication level for the request, the key and the extended query), a GET
-request also again contains a hop counter, a Bloom filter over the peers
+request also contains a hop counter, a Bloom filter over the peers
that have processed the request already and depending on the routing
options the full path traversed by the GET.
Finally, a GET request includes a variable-size second Bloom filter and a
@item GNUnet must only disclose the minimal amount of information
necessary.
@c TODO: Explain 'fully' in the terminology section.
-@item GNUnet must be fully distributed and survive Byzantine failures
+@item GNUnet must be fully distributed and survive
+@uref{https://en.wikipedia.org/wiki/Byzantine_fault_tolerance, Byzantine failures}
+@footnote{@uref{https://en.wikipedia.org/wiki/Byzantine_fault_tolerance, https://en.wikipedia.org/wiki/Byzantine_fault_tolerance}}
at any position in the network.
@item GNUnet must make it explicit to the user which entities are
considered to be trustworthy when establishing secured communications.
cryptography. The ephemeral ECC (Eliptic Curve Cryptography) keys are
signed using ECDSA (@uref{http://en.wikipedia.org/wiki/ECDSA, ECDSA}).
The shared secret from ECDHE is used to create a pair of session keys
-@c FIXME: LOng word for HKDF
+@c FIXME: LOng word for HKDF. More FIXMEs: Explain MITM etc.
(using HKDF) which are then used to encrypt the communication between the
two peers using both 256-bit AES (Advanced Encryption Standard)
and 256-bit Twofish (with independently derived secret keys).
(Secure Hash Algorithm) hash codes to verify the integrity of messages.
In GNUnet, the identity of a host is its public key. For that reason,
-@c FIXME: is it clear to the average reader what a man-in-the-middle
-@c attack is?
man-in-the-middle attacks will not break the authentication or accounting
goals. Essentially, for GNUnet, the IP of the host has nothing to do with
the identity of the host. As the public key is the only thing that truly
@node Egos
@subsection Egos
+@c what is the difference between peer identity and egos? It seems
+@c like both are linked to public-private key pair.
Egos are your "identities" in GNUnet. Any user can assume multiple
identities, for example to separate their activities online. Egos can
correspond to pseudonyms or real-world identities. Technically, an
ego is first of all a public-private key pair.
-
Search results are printed by gnunet-search like this:
+@c it will be better the avoid the ellipsis altogether because I don't
+@c understand the explanation below that
@example
$ gnunet-download -o "COPYING" --- gnunet://fs/chk/N8...C92.17992
=> The GNU Public License <= (mimetype: text/plain)
The first line is the command you would have to enter to download
the file. The argument passed to @code{-o} is the suggested
filename (you may change it to whatever you like).
+@c except it's triple dash in the above example ---
The @code{--} is followed by key for decrypting the file,
the query for searching the file, a checksum (in hexadecimal)
finally the size of the file in bytes.
existing file was not downloaded from GNUnet in the first place.
You may want to use the @command{-V} switch (must be added before
+@c Same as above it's triple dash
the @command{--}) to turn on verbose reporting. In this case,
@command{gnunet-download} will print the current number of
bytes downloaded whenever new data was received.
@c %**end of header
Each namespace is associated with meta-data that describes
-the namespace. This meta data is provided by the user at
+the namespace. This meta-data is provided by the user at
the time that the namespace is advertised. Advertisements
are published under keywords so that they can be found using
normal keyword-searches. This way, users can learn about new