383 lines
21 KiB
HTML
383 lines
21 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en">
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
<title>La cryptographie avec PGP et principalement GnuPG</title>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
<meta name="author" content="wxcafé">
|
|||
|
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
|
|||
|
<!-- Le styles -->
|
|||
|
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
|
|||
|
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
|
|||
|
<script type="text/javascript">
|
|||
|
/* <![CDATA[ */
|
|||
|
(function() {
|
|||
|
var s = document.createElement('script');
|
|||
|
var t = document.getElementsByTagName('script')[0];
|
|||
|
|
|||
|
s.type = 'text/javascript';
|
|||
|
s.async = true;
|
|||
|
s.src = '//api.flattr.com/js/0.6/load.js?'+
|
|||
|
'mode=auto&uid=wxcafe&button=compact&popout=0';
|
|||
|
t.parentNode.insertBefore(s, t);
|
|||
|
})();
|
|||
|
/* ]]> */
|
|||
|
</script> <!-- flattr button loader -->
|
|||
|
<style type="text/css">
|
|||
|
body {
|
|||
|
padding-top: 60px;
|
|||
|
padding-bottom: 40px;
|
|||
|
}
|
|||
|
.sidebar-nav {
|
|||
|
padding: 9px 0;
|
|||
|
}
|
|||
|
.tag-1 {
|
|||
|
font-size: 13pt;
|
|||
|
}
|
|||
|
.tag-2 {
|
|||
|
font-size: 10pt;
|
|||
|
}
|
|||
|
.tag-2 {
|
|||
|
font-size: 8pt;
|
|||
|
}
|
|||
|
.tag-4 {
|
|||
|
font-size: 6pt;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
|
|||
|
<!-- Le fav and touch icons -->
|
|||
|
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
|
|||
|
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
|
|||
|
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
|
|||
|
<div class="navbar navbar-fixed-top">
|
|||
|
<div class="navbar-inner">
|
|||
|
<div class="container-fluid">
|
|||
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
</a>
|
|||
|
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
|
|||
|
<div class="nav-collapse">
|
|||
|
<ul class="nav">
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
|
|||
|
<li class="divider-vertical"></li>
|
|||
|
<ul class="nav pull-right">
|
|||
|
</ul>
|
|||
|
</ul>
|
|||
|
</div><!--/.nav-collapse -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="container-fluid">
|
|||
|
<div class="row">
|
|||
|
<div class="span9" id="content">
|
|||
|
<section id="content">
|
|||
|
<article>
|
|||
|
<header>
|
|||
|
<h1>
|
|||
|
<a href=""
|
|||
|
rel="bookmark"
|
|||
|
title="Permalink to La cryptographie avec PGP et principalement GnuPG">La cryptographie avec PGP et principalement GnuPG</a>
|
|||
|
</h1>
|
|||
|
</header>
|
|||
|
<div class="entry-content">
|
|||
|
<div class="well">
|
|||
|
<footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2012-11-19T00:36:00+01:00">
|
|||
|
<i class="icon-calendar"></i> Mon 19 November 2012
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/"><i class="icon-folder-open"></i>Tutoriel</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --> </div>
|
|||
|
<p>PGP (pour <a href="http://fr.wikipedia.org/wiki/Pretty_Good_Privacy">pretty good privacy</a>) est un système de
|
|||
|
chiffrement asymétrique (pour plus d'information sur le chiffrement
|
|||
|
asymétrique, voir <a href="http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">ici</a>) utilisant en général les algorithmes RSA
|
|||
|
et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a
|
|||
|
signer des emails. Le système de signature consiste a s'identifier en
|
|||
|
tant que la personne que l'on est, en certifiant de son identité, et
|
|||
|
repose sur un système dit de <em>Web of Trust</em>. </p>
|
|||
|
<p>Ce concept de Web of Trust est simple: si je valide le code vous
|
|||
|
identifiant (votre clé), en certifiant que vous êtes qui vous êtes et
|
|||
|
que je vous connais, et que d'autres personnes m'ont déjà
|
|||
|
personnellement validé, les autres utilisateurs seront enclins a croire
|
|||
|
que vous êtes en effet la personne que vous prétendez être. Bien
|
|||
|
entendu, les utilisateurs validant trop de clés rapportées comme fausses
|
|||
|
voient la valeur de leurs signatures baissée, et toutes les clés signées
|
|||
|
par ces utilisateurs voient leur crédibilité baisser.<br />
|
|||
|
Inversement, les "bons utilisateurs" voient la valeur de leurs
|
|||
|
signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont
|
|||
|
signées.</p>
|
|||
|
<p>Ceci dit, un email peut être a la fois signé et chiffré, de façon a être
|
|||
|
sûr, non seulement que l’expéditeur de l'email est bien celui qu'il dit
|
|||
|
être, mais aussi que l'email n'a pas été modifié entre l'envoi et
|
|||
|
la réception (en effet, avec un chiffrement de type RSA/DSA, une
|
|||
|
modification du corps de l'email rend ce dernier illisible, la clé
|
|||
|
publique ne correspondant plus a la phrase de passe du message), ce qui
|
|||
|
offre bien évidemment des avantages non négligeables dans un
|
|||
|
environnement ou la protection des échanges est importante (soit a peu
|
|||
|
près partout sur internet, si vous tenez a votre vie privée. Pensez a
|
|||
|
<a href="http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/">quitter Gmail</a> aussi, par exemple).</p>
|
|||
|
<p>Il est cependant a noter que les clés publiques sont généralement
|
|||
|
situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore
|
|||
|
subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des
|
|||
|
serveurs de clés publiques, craignant une compromission de ces serveurs.
|
|||
|
Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de
|
|||
|
secrets classés secret-défense par email), la protection offerte par les
|
|||
|
serveurs de clé publiques est suffisante)</p>
|
|||
|
<p>L'une des implémentations les plus connues et utilisées de PGP est sans
|
|||
|
conteste GPG (<a href="http://fr.wikipedia.org/wiki/GNU_Privacy_Guard">GNU Privacy Guard</a>) , qui comme son nom l'indique fait
|
|||
|
partie du projet GNU, et qui (<code><troll></code> de façon surprenante pour un
|
|||
|
programme GNU<code></troll></code>) est extrêmement efficace et claire.</p>
|
|||
|
<p>Après ces explications techniques, voici venue le
|
|||
|
moment intéressant/utile, a savoir l'application. Le chiffrement et la
|
|||
|
signature de mails doivent cependant attendre un petit peu, étant donné
|
|||
|
qu'il vous faut d'abord créer votre clé et la placer sur un serveur de
|
|||
|
clés publiques, de façon à ce que votre destinataire puisse vous
|
|||
|
identifier lorsqu'il recevra le mail, mais aussi a configurer votre
|
|||
|
client mail pour utiliser gpg (je baserai les explications de cet
|
|||
|
article sur Thunderbird, mais des explications efficaces sont trouvables
|
|||
|
facilement sur les interwebs).</p>
|
|||
|
<p>Tout d'abord, générons une clé GPG :</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">gen</span><span class="o">-</span><span class="n">key</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>GPG va vous demander les méthodes de chiffrement que vous voulez
|
|||
|
utiliser, le plus sur est de laisser la valeur par défaut. La question
|
|||
|
suivante est de savoir quelle taille votre clé doit faire, il est
|
|||
|
préférable de choisir la taille la plus importante possible (4096). GPG
|
|||
|
veut ensuite savoir quand votre clé doit expirer. La méthode simple est
|
|||
|
bien évidemment de ne jamais la faire expirer, il est cependant plus
|
|||
|
intéressant dans une logique de sécurité de régler cette durée a six
|
|||
|
mois/un an. </p>
|
|||
|
<p>Des informations personnelles vous sont ensuite demandées,
|
|||
|
concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte
|
|||
|
d'identité, si vous souhaitez utiliser votre véritable identité), votre
|
|||
|
adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus
|
|||
|
tard), et un mot de passe pour la clé (utilisez un mot de passe
|
|||
|
sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules,
|
|||
|
minuscules, caractères spéciaux et nombres (vous pouvez utiliser la
|
|||
|
commande <code>makepasswd</code>, qui génère automatiquement un mot de
|
|||
|
passe) </p>
|
|||
|
<p>GPG va maintenant prendre un peu de temps pour générer le couple clé
|
|||
|
publique/clé privée, vous devriez profiter de ce temps pour effectuer
|
|||
|
des opérations autres sur votre ordinateur : taper des textes, lancer
|
|||
|
des films, écouter de la musique... De façon à augmenter les chances
|
|||
|
d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base
|
|||
|
sur la RAM pour obtenir des bits au hasard) </p>
|
|||
|
<p>Une fois cela fini, vous obtenez un couple clé publique/clé privée, que
|
|||
|
vous ne pouvez pas visualiser entièrement pour l'instant. Il est
|
|||
|
cependant possible (et recommandé) de les exporter pour les sauvegarder
|
|||
|
via une commande:</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">pubkey</span><span class="p">.</span><span class="n">gpg</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>pour la clé publique, et</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span><span class="o">-</span><span class="n">secret</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">seckey</span><span class="p">.</span><span class="n">gpg</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>pour la clé privée. Il est possible et même souhaitable de copier ces
|
|||
|
clés sur une clé USB, une carte SD, ou un autre support de stockage
|
|||
|
résistant, de façon a avoir une solution de sauvegarde, au cas ou vous
|
|||
|
perdiez ces clés sur ce PC. </p>
|
|||
|
<p>Cela fait, listons les informations sur votre clé publique :</p>
|
|||
|
<div class="highlight"><pre><span class="err">$</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">fingerprint</span>
|
|||
|
<span class="n">pub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">27</span><span class="n">D81AC8</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
|
|||
|
<span class="n">Key</span> <span class="n">fingerprint</span> <span class="o">=</span> <span class="mi">6345</span> <span class="n">A91A</span> <span class="n">FF89</span> <span class="mf">97E0</span> <span class="mi">13</span><span class="n">D0</span> <span class="mi">96</span><span class="n">A9</span> <span class="mf">9E2</span><span class="n">A</span> <span class="mi">1917</span> <span class="mi">27</span><span class="n">D8</span> <span class="mi">1</span><span class="n">AC8</span>
|
|||
|
<span class="n">uid</span> <span class="n">Cl</span><span class="err">é</span><span class="n">ment</span> <span class="n">Hertling</span> <span class="p">(</span><span class="n">Wxcafe</span><span class="p">)</span>
|
|||
|
<span class="n">uid</span> <span class="p">[</span><span class="n">jpeg</span> <span class="n">image</span> <span class="n">of</span> <span class="n">size</span> <span class="mi">14692</span><span class="p">]</span>
|
|||
|
<span class="n">sub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">9</span><span class="n">ED7F77F</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>La partie <code>pub</code> indique que c'est une clé publique, <code>4096R</code> indique que c'est
|
|||
|
une clé RSA sur 4096 bits. La partie <code>27D81AC8</code> est
|
|||
|
l'identifiant de la clé publique, <code>Key fingerprint = 6345 A91A FF89 97E0 13D0
|
|||
|
96A9 9E2A 1917 27D8 1AC8</code> est appelé fingerprint de la clé. Les champs
|
|||
|
<code>uid</code> sont des manières d'identifier la clé et la personne associée a
|
|||
|
celle-ci, et enfin le champ <code>sub</code> est indicateur d'une subkey, système
|
|||
|
uniquement pris en charge par GPG et non inclus dans les premières
|
|||
|
versions de PGP, donc non-implémentées dans nombre de clients pgp.<br />
|
|||
|
Passons maintenant a la mise en place de cette clé publique sur un
|
|||
|
serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">uploader</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser
|
|||
|
pour signer et chiffrer vos emails!<br />
|
|||
|
Installons donc l'extension Enigmail pour Thunderbird, permettant de
|
|||
|
chiffrer/signer vos emails de façon transparente. Il conviendra de
|
|||
|
paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis
|
|||
|
Setup Wizard (l'option entre Help et About OpenPGP). Normalement,
|
|||
|
Enigmail détecte votre installation de gpg automatiquement, si cependant
|
|||
|
ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a
|
|||
|
l'heure (pubkey.gpg) en l'important (import key from file). </p>
|
|||
|
<p>Selon les options que vous avez utilisées, vos emails seront
|
|||
|
automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a
|
|||
|
l'esprit que si tout le monde peut lire les mails signés, il n'en est
|
|||
|
pas de même pour les mails chiffrés, pour lesquels il est nécessaire de
|
|||
|
posséder la clé publique du correspondant en question, et de posséder
|
|||
|
soi même une clé privée, donc d'utiliser OpenPGP aussi.<br />
|
|||
|
Concernant les signatures de clés, elles fonctionnent de manière très
|
|||
|
simple :<br />
|
|||
|
Vous devez télécharger la clé de votre correspondant, via un</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">search</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">de</span> <span class="n">votre</span> <span class="n">correspondant</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>(a noter que cette commande fonctionne aussi en cherchant une adresse
|
|||
|
email ou un nom. Cependant, en cherchant via l'identifiant de la clé,
|
|||
|
vous êtes sur de trouver votre correspondant. Globalement, l'email est
|
|||
|
lui aussi assez sûr en terme de recherche de clés, tandis que le nom
|
|||
|
donne rarement un résultat). L'étape suivante est de vérifier que votre
|
|||
|
correspondant est bien la personne qui est spécifiée sur sa clé. Pour
|
|||
|
cela, il convient d'avoir déjà vu physiquement cette personne et si
|
|||
|
possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une
|
|||
|
confirmation de cette personne que la clé que vous voyez lui appartient
|
|||
|
bien.<br />
|
|||
|
Ceci fait, vous pouvez signer la clé via un</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">sign</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>puis la renvoyer au serveur via</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">key</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Voila, la clé de votre correspondant est signée!</p>
|
|||
|
<p>Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée
|
|||
|
grâce a cette superbe invention qu'est la cryptographie!</p>
|
|||
|
</div><!-- /.entry-content -->
|
|||
|
</article>
|
|||
|
</section>
|
|||
|
</div><!--/span-->
|
|||
|
<div class="span3 well sidebar-nav" id="sidebar">
|
|||
|
<ul class="nav nav-list">
|
|||
|
|
|||
|
|
|||
|
<!-- Categories links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Hacking
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Language
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Notes
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
|
|||
|
<i class="icon-folder-open icon-large"></i>OSes
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Programmation
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Ranting
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Teaching
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Tutorial
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Tutoriel
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Vidya Games
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<hr>
|
|||
|
|
|||
|
<!-- Social links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
|
|||
|
<a class="FlattrButton" style="display:none;"
|
|||
|
title="file:///home/wxcafe/code/blog-source/output"
|
|||
|
style="padding-top: 10px;"
|
|||
|
rel="flattr;
|
|||
|
url:file:///home/wxcafe/code/blog-source/output;
|
|||
|
title:file:///home/wxcafe/code/blog-source/output;
|
|||
|
button:compact;
|
|||
|
popout:0;
|
|||
|
uid:wxcafe;
|
|||
|
category:blog;"
|
|||
|
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
|
|||
|
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
|
|||
|
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
|
|||
|
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
|
|||
|
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
|
|||
|
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
|
|||
|
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
|
|||
|
|
|||
|
<hr>
|
|||
|
|
|||
|
<!-- Links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
|
|||
|
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
|
|||
|
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
|
|||
|
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
|
|||
|
<hr>
|
|||
|
|
|||
|
<!--- RSS feed -->
|
|||
|
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
|
|||
|
|
|||
|
|
|||
|
</ul> </div><!--/.well -->
|
|||
|
</div><!--/row-->
|
|||
|
<hr>
|
|||
|
<footer>
|
|||
|
<address id="about">
|
|||
|
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
|
|||
|
which takes great advantage of <a href="http://python.org">Python</a>.<br />
|
|||
|
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
|
|||
|
</address>
|
|||
|
</footer>
|
|||
|
</div><!--/.fluid-container-->
|
|||
|
</body>
|
|||
|
</html>
|