update ceofhack to ceof

Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
Nico Schottelius 2012-11-05 21:08:55 +01:00
parent b2c34a2210
commit f41d6fa0ac
12 changed files with 12 additions and 1084 deletions

View file

@ -1,10 +1,19 @@
## Introduction ## Introduction
ceofhack is the first implementation of ***EOF*** (Eris Onion Forwarding), ceof is the implementation and documentation
of ***EOF*** (Eris Onion Forwarding),
the secure, peer-to-peer (p2p), decentralised anonymous chat network. the secure, peer-to-peer (p2p), decentralised anonymous chat network.
* [[user documentationy|user]] You can read the
* [[developer documentationy|developer]] [bachelor thesis](http://git.schottelius.org/?p=ceof;a=blob;f=doc/thesis.pdf),
which describes the motivation and goals or you
can view [the poster that was used on the presentation](http://git.schottelius.org/?p=ceof;a=blob;f=doc/appendix/poster.pdf).
## Get ceof
You can get ceof via git:
git clone git://git.schottelius.org/ceof
## Support ## Support

Binary file not shown.

View file

@ -1,20 +0,0 @@
## Requirements
ceofhack depends on a small number of other packages:
* [gpgme](http://www.gnupg.org/gpgme.html)
* make
* [latex](http://www.latex-project.org/) and [dia](http://live.gnome.org/Dia)
(for documentation)
## Building ceofhack
Simply run the following line:
cd ceofhack && make
Parallel building is also supported, like this:
cd ceofhack && make -j8
[[!tag unix]]

View file

@ -1,24 +0,0 @@
## Introduction
ceofhack and all other EOF subsystems need a common place to find themselves
and to function properly.
## Initial configuration: the easy way
Simply run the following line:
cd ceofhack && ./scripts/init_home.sh
This will
* create a the configuration directory **$HOME/.ceof**,
* create a new pgp key pair,
* add the tcp transport protool
* and enable the tcp transport protocol to listen to **0.0.0.0:4242**.
## Initial configuration: the expert way
Read and understand **./scripts/init_home.sh** and consult
the current EOF standard document.
[[!tag unix]]

View file

@ -1,66 +0,0 @@
[[!toc levels=2]]
To get into EOF through ceofhack, you should make sure you understand
[[how to use|user]] ceofhack in general. Depeding on your skills and
interests, you may either be interested in
* hacking the core (aka ceofhack, rare developers probably)
* creating user interfaces (ui)
* creating transport protocols (tp)
## API documentation
In general, everything you need should be documented in the
EOF standard document. If it's not, it's probably a bug
(in that case, send a patch).
## UI developers
UIs can either live in their own projects or be a part of
ceofhack. The **first** way is recommended, so your development
does not depend on ceofhack.
## Transport protocol developers
TPs can either live in their own projects or be a part of
ceofhack. The **second** way is recommended, so all available
transport protocols are shared with the ceofhack installation.
### Creating a new transport protocol
You can use the following code as a start:
scheme=phpbb
implementation=shell
cd ceofhack/tp
mkdir -p ${scheme}/${implementation}
echo "echo listening implementation" > ${scheme}/${implementation}/listen
echo "echo send implementation" > ${scheme}/${implementation}/send
chmod 0755 ${scheme}/${implementation}/*
Now you've a dummy "working" transport protocol.
### Enabling a new transport protocol
You can use the following code as a start:
scheme=phpbb
implementation=shell
cd ceofhack/tp
# Enable protocol in general
mkdir -p "$HOME/.ceof/tp/available/${scheme}"
cp "${scheme}/${implementation}/listen" "$HOME/.ceof/tp/available/${scheme}"
cp "${scheme}/${implementation}/send" "$HOME/.ceof/tp/available/${scheme}"
# Enable listener for protocol
address="describe-particular-address"
mkdir -p "$HOME/.ceof/tp/listen/${scheme}-${address}"
echo "${scheme}${address}" > "$HOME/.ceof/tp/listen/${scheme}-${address}/url"
### Submitting a transport protocol for inclusion into the mainline
* Create a branch ${scheme}-${implementation} on your side
* Submit a pull request (via ML, IRC, github, whatever)
[[!tag unix]]

View file

@ -1,11 +0,0 @@
[[!meta title="EOF - die erste Vorstellung"]]
[[!meta date="2007-09-05"]]
This speech was made in the Chaos Computer Club Zuerich (CCCZH)
in the rooms of the Dock18 at the 5th of September 2009.
It is the first public presentation about EOF (in German).
* [[View as PDF|eof-die-erste-vorstellung.pdf]]
* [[View LaTeX source|eof-die-erste-vorstellung.tex]]
[[!tag publication]]

View file

@ -1,844 +0,0 @@
% first presentation about cmtp
\documentclass{beamer}
\usepackage{german}
\usepackage{beamerthemesplit}
\setbeamercovered{dynamic}
\usetheme{Malmoe}
\title{EOF}
\subtitle{Die erste Vorstellung}
\author{Nico -telmich- Schottelius}
%\date{\today}
\date{5. September 2007}
\begin{document}
\frame{\titlepage}
%\section[Outline]{}
\frame{\tableofcontents}
% Inhalt:
% - Vorstellung
% telmich
% !eof
% - Motivation
% * !eof befindet ist zur Zeit im IRCNet
% * Etwas unangenehnem
% * abhoerbar an vielen Stellen
% - Alternativen
% irc+ssl:
% alle links?
% - ssl-only kanaele
% - auf den servern abhoerbar
% silc
% jabber
% sympathische software
% tor
%
% EOF
% in mehreren projektphasen
% PGP
% momentaner stand
% Webseite: EOF-1, www.eof.name/projects/eof-1/
% Libraries, client, client zum client
%
%
\section{Einleitung}
\subsection{Vorstellung}
\frame
{
\frametitle{Erste Vorstellung}
\begin{itemize}
\item Erste Pr\"asentation
\pause
\item Hier im CCCZH
\pause
\item Kreative K\"opfe
\pause
\item Kritik bekommen
\pause
\item Anregen zum Mitdenken und -machen
\end{itemize}
}
\frame
{
\frametitle{!eof}
\begin{itemize}
\item Junge Hackergruppe
\pause
\item 2001 gegr\"undet
\pause
\item Fokus auf Freundlichkeit
\pause
\item Deutschland, Niederlande, Schweiz
\pause
\item IRCNet: !eof
\pause
\item https://www.eof.name/
\end{itemize}
}
\frame
{
\frametitle{Nico Schottelius}
\begin{itemize}
\item Entwickelt freie, quelloffene Software (FOSS)
\pause
\item Philosophie: Machen statt meckern
\pause
\item aka telmich
\pause
\item https://nico.schottelius.org/
\end{itemize}
}
\frame
{
\frametitle{EOF}
\begin{itemize}
\item Alternatives Chatsystem
\pause
\item Projekt von !eof
\end{itemize}
}
\subsection{Motivation}
\frame
{
\frametitle{Warum dieser Vortrag?}
\begin{itemize}
\item Idee vorstellen
\pause
\item Kritik bekommen
\pause
\item Werben von
\pause
\begin{itemize}
\item Entwicklern
\pause
\item Testern
\pause
\item (noch) nicht Benutzern
\end{itemize}
\end{itemize}
}
\frame
{
\frametitle{Warum das Rad neu erfinden?}
\begin{itemize}
\item IRC ist grunds\"atzlich unverschl\"usselt
\pause
\item Suchen eine generell nicht abh\"orbare Alternative
\pause
\item Existierende Alternativen erf\"ullen nicht alle Anforderungen
\end{itemize}
}
\frame
{
\frametitle{Anforderungen}
\begin{itemize}
\item Dezentralit\"at
\pause
\begin{itemize}
\item Ohne zentralen Server
\pause
\end{itemize}
\item Nicht abh\"orbar
\pause
\begin{itemize}
\item \textbf{Wer} mit \textbf{wem} \textbf{wann} \textbf{was} redet
\pause
\end{itemize}
\item Verschl\"usselung und Signatur
\end{itemize}
}
\subsection{\"Uber diesen Vortrag}
\frame
{
\frametitle{Versionen dieses Vortrages}
\begin{itemize}
\item Nur Text (\LaTeX{} oder PDF)
\pause
\item Nur Ton (Aufnahme in Ogg)
\pause
\item Text und Ton (Theora-Video)
\end{itemize}
}
\frame
{
\frametitle{Kopieren dieses Vortrages}
\begin{itemize}
\item Ist (hiermit) explizit gestattet
\pause
\item Creative Commons Attribution-Share Alike 2.0 Germany License
\pause
\item http://creativecommons.org/licenses/by-sa/2.0/de/
\end{itemize}
}
\frame
{
\frametitle{Quellen dieses Vortrages}
\begin{itemize}
\item Unter folgenden Adressen zu finden:
\pause
\begin{itemize}
\item https://nico.schottelius.org/projects/eof-1/
\pause
\item https://www.eof.name/projects/eof-1/
\end{itemize}
\end{itemize}
}
\section{Alternativen}
\subsection{IRC+SSL}
\frame
{
\frametitle{\"Ubersicht IRC+SSL}
\begin{itemize}
\item Standard IRC mit SSL
\pause
\item Verschl\"usselung
\begin{itemize}
\item Client zum Server
\pause
\item Server zum Server
\pause
\end{itemize}
\item "`Nur SSL"'-R\"aume
\end{itemize}
}
\frame
{
\frametitle{Vorteile}
\begin{itemize}
\item Erprobtes Protokoll
\pause
\item Stabile Software vorhanden
\pause
\item Verschl\"usselung ist einfach hinzuf\"ugbar
\end{itemize}
}
\frame
{
\frametitle{Nachteile}
\begin{itemize}
\item Innerhalb der Server ungesichert
\pause
\begin{itemize}
\item Kompromitierung durch \"Ubernahme eines Servers m\"oglich
\pause
\end{itemize}
\item Keine Ende-zu-Ende-Verschl\"usselung
\pause
\item Teile der Verbindung k\"onnen unverschl\"usselt sein
\pause
\item Statistische Analyse m\"oglich
\pause
\begin{itemize}
\item Wer sendet wann, wer empf\"angt wann?
\end{itemize}
\end{itemize}
}
\subsection{SILC}
\frame
{
\frametitle{\"Ubersicht SILC}
\begin{itemize}
\item \textbf{S}ecure \textbf{I}nternet \textbf{L}ive \textbf{C}hat
\pause
\item Geplanter Ersatz f\"ur IRC
\pause
\item Verschl\"usselung
\pause
\begin{itemize}
\item Server zum Server
\pause
\item Client zum Server
\pause
\item Client zum Client
\pause
\end{itemize}
\item http://www.silcnet.org/
\end{itemize}
}
\frame
{
\frametitle{Vorteile}
\begin{itemize}
\item Verschl\"usselung von Anfang eingeplant
\pause
\item Integration in einen bekannten Chat-Client (irssi)
\end{itemize}
}
\frame
{
\frametitle{Nachteile}
\begin{itemize}
\item Instabile Software
\pause
\begin{itemize}
\item Client st\"urzt ab
\pause
\item Server verliert Kanal-Parameter (z.B. +r)
\pause
\item Server verliert Kan\"ale
\pause
\end{itemize}
\item Eigenes (unerforschtes) Protokoll
\pause
\item Statistische Analyse m\"oglich
\end{itemize}
}
\subsection{Jabber}
\frame
{
\frametitle{\"Ubersicht Jabber}
\begin{itemize}
\item Instant messaging (IM) Protokoll
\pause
\item Transport via XML
\end{itemize}
}
\frame
{
\frametitle{Vorteile}
\begin{itemize}
\item Viele Clients verf\"ugbar
\end{itemize}
}
\frame
{
\frametitle{Nachteile}
\begin{itemize}
\item Kan\"ale sind eine Erweiterung
\pause
\item Verschl\"usselung optional
\pause
\item Statistische Analyse m\"oglich
\end{itemize}
}
\subsection{Tor}
\frame
{
\frametitle{\"Ubersicht Tor}
\begin{itemize}
\item Anonymisierungsdienst
\pause
\item Kein Chatprotokoll
\pause
\item Zwiebelprinzip
\end{itemize}
}
\frame
{
\frametitle{Vorteile}
\begin{itemize}
\item Stabile Software vorhanden
\end{itemize}
}
\frame
{
\frametitle{Nachteile}
\begin{itemize}
\item Client sendet nur wenn er wirklich sendet
\pause
\begin{itemize}
\item Statistische Analyse m\"oglich
\pause
\end{itemize}
\item Empf\"anger sendet Paket nicht weiter
\pause
\begin{itemize}
\item Endpunkte sind erkennbar
\end{itemize}
\end{itemize}
}
\section{EOF}
\frame
{
\frametitle{EOF}
\begin{itemize}
\item Projektaufbau
\pause
\item Grundideen
\pause
\item Beispiele
\pause
\item Stand
\end{itemize}
}
\subsection{Projektaufbau}
\frame
{
\frametitle{Evolution}
\begin{itemize}
\item Kleine Teile programmieren
\pause
\item Vorschl\"age f\"ur Protokolle entwerfen
\pause
\item Ausprobieren und aus Fehlern lernen
\end{itemize}
}
\frame
{
\frametitle{EOF-1}
\begin{itemize}
\item Erste Phase
\pause
\item Ideen dokumentieren
\pause
\item Ideen diskutieren
\pause
\item Viele Fehler machen
\pause
\item Juli 2007 bis Dezember 2007
\end{itemize}
}
\frame
{
\frametitle{EOF-1 Vorgehen}
\begin{itemize}
\item Spezifikationsentw\"urfe schreiben f\"ur
\pause
\begin{itemize}
\item Protokolle
\pause
\item Software
\pause
\end{itemize}
\item Freie Wahl der Programmiersprache
\pause
\begin{itemize}
\item Kommunikation \"uber klar definierte Schnittstellen
\end{itemize}
\pause
\item Modularer Aufbau
\end{itemize}
}
\frame
{
\frametitle{EOF-2}
\begin{itemize}
\item Fehler aus EOF-1 korrigieren
\pause
\item Dokumentation erstellen
\pause
\item Plan f\"ur finale Version erstellen
\pause
\item Januar 2008 bis Juni 2008
\end{itemize}
}
\frame
{
\frametitle{EOF-3}
\begin{itemize}
\item Spezifikation von EOF-2 implementieren
\pause
\item Unterst\"utzung mehrerer Betriebsysteme
\pause
\item Produktiv nutzbar
\pause
\item Juli 2008 bis Dezember 2008
\end{itemize}
}
\subsection{Grundideen}
\frame
{
\frametitle{Modularit\"at}
\begin{itemize}
\item Viele kleine Teile
\pause
\item Alles ist austauschbar
\pause
\item Klar definierte Schnittstellen
\pause
\item F\"ur anderes wiederverwendbar
\end{itemize}
}
\frame
{
\frametitle{Das Zwiebelprinzip}
\begin{itemize}
\item Mehrfach verschl\"usselt
\pause
\item Nie direkt an den Empf\"anger senden
\pause
\item Auch der Empf\"anger sendet es weiter!
\end{itemize}
}
\frame
{
\frametitle{Indirekte Kommunikation}
\begin{itemize}
\item \"Uber mehrere Stationen
\pause
\item Jede Station ent- und verschl\"usselt
\pause
\item Keine Station sendet direkt an den End-Empf\"anger
\end{itemize}
}
\frame
{
\frametitle{Alles verschl\"usselt}
\begin{itemize}
\item Kein unverschl\"usseltes Paket
\pause
\item Initialer Schl\"usseltausch \"uber sichere Kan\"ale
\pause
\item Schl\"usseltausch sp\"ater \"uber etablierten Kanal
\end{itemize}
}
\frame
{
\frametitle{Nachrichten signiert}
\begin{itemize}
\item Sicherstellen, dass ich mit dem richtigen kommuniziere
\pause
\item Signatur ist nur sichbar f\"ur den Empf\"anger
\end{itemize}
}
\frame
{
\frametitle{Abstraktion vom Transportprotokoll}
\begin{itemize}
\item \"Ubertragung ist \textbf{nicht} Bestandteil von EOF
\pause
\item Das Paketformat wird unabh\"angig vom Transportprotkoll definiert
\pause
\item Beliebige Protokolle m\"oglich
\pause
\item Einfaches Tunneln von Firewalls
\pause
\begin{itemize}
\item z.B. direkte "`HTTP-Verbindung"' oder via Webforen
\end{itemize}
\end{itemize}
}
\frame
{
\frametitle{Rauschen}
\begin{itemize}
\item Jeder Teilnehmer sendet "`immer"' (fixer Intervall)
\pause
\begin{itemize}
\item Fest definierter Sendeintervall
\pause
\item Wenn nichts zu senden ist werden Zufallsdaten gesendet
\pause
\item Zufallsdaten werden genauso wie richtige Pakete behandelt
\pause
\end{itemize}
\item Von ausen nicht zu erkennen, wann er wirklich sendet
\end{itemize}
}
% beispiele
% - chatten mit wem direkt
% - key exchange: nur ueber bekannte peers
% - transport protokolle
% - Vollstaendige Verschluesselung
\subsection{Beispiele}
\frame
{
\frametitle{Beispiele}
\begin{itemize}
\item F\"ur
\pause
\begin{itemize}
\item Ausgew\"ahlte Teile von EOF
\pause
\item \"Ubliche Handlungen beim Chatten
\pause
\end{itemize}
\item Um abstrakte Informationen konkretisieren
\end{itemize}
}
\frame
{
\frametitle{Wie man sich findet}
\begin{itemize}
\item \"Uber Marktschreier
\pause
\item Marktschreier verwalten Metaninformationen
\pause
\begin{itemize}
\item Liste von bekannten Kan\"alen
\pause
\item Liste von bekannten Partner
\pause
\end{itemize}
\item Jeder Client kann Marktschreier sein
\end{itemize}
}
\frame
{
\frametitle{\"Uber die Marktschreier}
\begin{itemize}
\item Besitzen und Verteilen \textbf{nur} \"offentliche Informationen
\pause
\item Verwalten Liste von \"offentlichen Kan\"alen
\pause
\item Vermitteln Partner zum Indirekten Senden
\pause
\item Sind ganz normale EOF-Clients
\pause
\begin{itemize}
\item Erlauben zus\"atzlich Abfragen und Speichern von Metainformationen
\end{itemize}
\end{itemize}
}
\frame
{
\frametitle{Vollstaendige Verschl\"usselung}
\begin{itemize}
\item \"Offentlicher Schl\"ussel wird vorher per
\pause
\begin{itemize}
\item PGP verschl\"usselter E-Mail
\pause
\item Versiegelten Brief
\pause
\item Telefon
\end{itemize}
\item ausgetauscht
\end{itemize}
}
\frame
{
\frametitle{Beitreten eines Kanals}
\begin{itemize}
\item Verbinden zum Marktschreier
\pause
\begin{itemize}
\item "`Was f\"ur Kan\"ale kennst Du?"'
\pause
\item Liste: "`blackhats"' ... "`antim\$"' ... "`EOF-1"' ...
\pause
\item "`Teile bitte den Leuten von Kanal EOF-1 mit, dass ich beitreten m\"ochte."'
\pause
\end{itemize}
\item Marktschreier verbindet sich zu einem Partner, der die anderen kennt
\pause
\item Der wiederrum schickt Pakete an alle anderen (indirekt) weiter
\pause
\item Die Kanalinsassen melden sich dann bei mir
\end{itemize}
}
\frame
{
\frametitle{Woher wissen die, wie sie mich erreichen?}
\begin{itemize}
\item Zum Anfang \"ubermittelt man dem Marktschreier, wo man erreichbar ist
\pause
\item Diese Information leitet er weiter
\end{itemize}
}
\frame
{
\frametitle{Transport-Protokolle}
\begin{itemize}
\item Etwas, mit dem man senden und/oder empfangen kann
\pause
\item Beliebige Protokolle
\pause
\begin{itemize}
\item Empfangen via SMTP HELO
\pause
\item Senden via Webdav
\pause
\item Empfangen via ICQ/Jabber/Skype/...
\end{itemize}
\end{itemize}
}
\frame
{
\frametitle{Indirekte Kommunikation}
\begin{itemize}
\item Wenn ich mit Andre reden will, verschl\"ussele ich die Nachricht f\"ur ihn
\pause
\item Und f\"uge eine Liste von Empf\"angern zur Nachricht hinzu
\pause
\item Jeder der Empf\"anger kann (nur) die n\"achste Empfangsadresse sehen
\pause
\item Andre
\pause
\begin{itemize}
\item entschl\"usselt die Nachricht,
\pause
\item schickt sie weiter, damit niemand weiss, das sie f\"ur ihn war
\end{itemize}
\end{itemize}
}
\subsection{Stand}
\frame
{
\frametitle{Stand}
\begin{itemize}
\item Was wurde bereits erledigt
\pause
\begin{itemize}
\item Spezifikationen
\pause
\item Programme
\pause
\item Dokumentation
\pause
\end{itemize}
\item Was ist zu tun?
\begin{itemize}
\pause
\item Meilensteine
\end{itemize}
\end{itemize}
}
\frame
{
\frametitle{Spezifikationen}
\begin{itemize}
\item Einige Entw\"urfe auf https://www.eof.name/projects/eof-1/eof-1/ zu finden
\pause
\item W\"ochentlich neue
\pause
\item Teilweise schon \"uberarbeitet
\end{itemize}
}
\frame
{
\frametitle{Implementation von EOF-1}
\begin{itemize}
\item Hauptprogramm ceof zu 20\% fertig
\pause
\item Erste Erfahrungen mit GPGME
\pause
\item Bibliotheken zu 80\% fertig
\pause
\begin{itemize}
\item Quelltexts\"auberung steht noch an
\pause
\end{itemize}
\item Erste GUI fertiggestellt
\end{itemize}
}
\frame
{
\frametitle{Von Dir}
\begin{itemize}
\item Verwirrt?
\pause
\item Ist etwas unklar?
\pause
\item Interessiert?
\end{itemize}
}
\frame
{
\frametitle{Diese Vorstellung}
\begin{itemize}
\item ...endet hier
\pause
\item Vielen Dank f\"ur die Aufmerksamkeit
\pause
\item Projektseite: https://www.eof.name/eof-1/
\pause
\item Kontakt via "`telmich (bei) u.eof.name"'
\end{itemize}
}
\end{document}

View file

@ -1,35 +0,0 @@
The current release is [[ceofhack-0.6.tar.xz]],
the current documentation [[EOF-0.6.pdf]].
## Development / unreleased code
The latest development code can be found in git.
You can view latest changes in
[gitweb](http://git.schottelius.org/?p=EOF/ceofhack;a=summary)
or clone the latest sources using
git clone git://git.schottelius.org/EOF/ceofhack
Git mirrors can be found at
* [github](http://github.com/telmich/ceofhack/tree/master)
* [gitorious](http://gitorious.org/ceofhack)
The ***master*** branch should always contain latest "stable" code,
which means it should at least compile.
Other branches may be available to focus on specific features, which
will be merged into the master branch after completion.
To submit changes, simply follow the instructions
on [how to setup a public git repo](http://book.git-scm.com/4_setting_up_a_public_repository.html).
There are also some
[CIA bot statistics](http://cia.vc/stats/project/EOF/ceofhack) available.
## All releases
* [[ceofhack-0.6.tar.xz]] - [[EOF-0.6.pdf]] - Usable UI interface
* [[ceofhack-0.5.tar.lzma]] - the first usable version
[[!tag unix]]

View file

@ -1,81 +0,0 @@
[[!toc levels=2]]
## How to get ceofhack running?
There are three simple steps to get ceofhack running:
* [[Get ceofhack|get]]
* [[Build ceofhack|build]]
* [[Configure ceofhack|configure]]
## How to use ceofhack?
ceofhack is only the main part of an EOF implementation.
ceofhack itself is **not** a user interface (**ui**).
There is, however, a sample command line user interface
included, called **ui_cmd**. Thus, to make real use of
ceofhack, you need to
* start ceofhack
* and start a user interface
The following sections explain the ui_cmd user interface,
but the principles are the same for other user interfaces.
All the following examples assume that ceofhack is already
running.
## How to chat with ceofhack?
As EOF is a p2p chat network, there's no central server. Thus, you need
to specify where your chat partner ("peer" in EOF speak) can be found.
In ui_cmd you do that with **ui_cmd_peer_add**:
./ui_cmd_peer_add telmich tcp:127.0.0.1:4242 A310FB220BA776083559C8276A8817C51B70A5DF
Where
* **telmich** is the nickname I gave that peer
* **tcp:127.0.0.1:4242** is the initial address of that peer
* **A310FB220BA776083559C8276A8817C51B70A5DF** is the pgp fingerprint
### Getting the fingerprints
You can retrieve all fingerprints known to EOF in a copy & past compatible
format, if you run this command:
gpg --homedir $HOME/.ceof/gpg --fingerprint | sed 's/ //g'
### Getting keys
As the current protocol does not define a key exchange, you need
to manually import pgp keys of other peers. You can do that by dowloading
the public key of the peer to **peer.key** and then running
gpg --homedir $HOME/.ceof/gpg --import peer.key
### Exporting your key
To allow others to chat with you, you need to publish your public
key somewhere. You can retrieve it the following way:
gpg --homedir $HOME/.ceof/gpg --export -a <yourkeyid> > mykey.key
### Sending a message
After you successfully added the new peer, you can drop her a message
by issuing
./ui_cmd_peer_send telmich "What's up?"
### Displaying messages
ceofhack will always receive messages, independently of whether
a user interface is connected or not. The user interface must
take care of displaying them. The included ui support a generic
listen command, which will display all incoming ui commands:
./ui_cmd_listen
And in addition, it will also show the messages received.
[[!tag unix]]