Built from 0f79f4c7c9f39e2fb71042b6f225632d4403ce4a

This commit is contained in:
Robur Team 2024-06-26 14:02:41 +00:00
parent 841bd2b788
commit 394d709d2e
21 changed files with 150 additions and 28 deletions

View file

@ -0,0 +1,68 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
Robur's blog - Testing MirageVPN against OpenVPN™
</title>
<meta name="description" content="Some notes about how we test MirageVPN against OpenVPN™">
<link type="text/css" rel="stylesheet" href="../css/hl.css">
<link type="text/css" rel="stylesheet" href="../css/style.css">
<script src="../js/hl.js"></script>
<link rel="alternate" type="application/rss+xml" href="../feed.xml" title="blog.robur.coop">
</head>
<body>
<header>
<h1>blog.robur.coop</h1>
<blockquote>
The <strong>Robur</strong> cooperative blog.
</blockquote>
</header>
<main><a href="/index.html">Back to index</a>
<article>
<h1>Testing MirageVPN against OpenVPN™</h1>
<ul class="tags-list"><li><a href="/tags/ocaml.html">ocaml</a></li><li><a href="/tags/mirageos.html">mirageos</a></li><li><a href="/tags/cryptography.html">cryptography</a></li><li><a href="/tags/security.html">security</a></li><li><a href="/tags/testing.html">testing</a></li><li><a href="/tags/vpn.html">vpn</a></li></ul><p>As our last milestone for the <a href="https://www.assure.ngi.eu/">EU NGI Assure</a> funded MirageVPN project (for now) we have been working on testing MirageVPN, our OpenVPN™-compatible VPN implementation against the upstream OpenVPN™.
During the development we have conducted many manual tests.
However, this scales poorly and it is easy to forget testing certain cases.
Therefore, we designed and implemented interoperability testing, driving the C implementation on the one side, and our OCaml implementation on the other side. The input for such a test is a configuration file that both implementations can use.
Thus we test establishment of the tunnel as well as the tunnel itself.</p>
<p>While conducting the tests, our instrumented binaries expose code coverage information. We use that to guide ourselves which other configurations are worth testing. Our goal is to achieve a high code coverage rate while using a small amount of different configurations. These interoperability tests are running fast enough, so they are executed on each commit by CI.</p>
<p>A nice property of this test setup is that it runs with an unmodified OpenVPN binary.
This means we can use an off-the-shelf OpenVPN binary from the package repository and does not entail further maintenance of an OpenVPN fork.
Testing against a future version of OpenVPN becomes trivial.
We do not just test a single part of our implementation but achieve an end-to-end test.
The same configuration files are used for both our implementation and the C implementation, and each configuration is used twice, once our implementation acts as the client, once as the server.</p>
<p>We added a flag to our client and our <a href="miragevpn-server.html">recently finished server</a> applications, <code>--test</code>, which make them to exit once a tunnel is established and an ICMP echo request from the client has been replied to by the server.
Our client and server can be run without a tun device which otherwise would require elevated privileges.
Unfortunately, OpenVPN requires privileges to at least configure a tun device.
Our MirageVPN implementation does IP packet parsing in userspace.
We test our protocol implementation, not the entire unikernel - but the unikernel code is a tiny layer on top of the purely functional protocol implementation.</p>
<p>We explored unit testing the packet decoding and decryption with our implementation and the C implementation.
Specifically, we encountered a packet whose message authentication code (MAC) was deemed invalid by the C implementation.
It helped us discover the MAC computation was correct but the packet encoding was truncated - both implementations agreed that the MAC was bad.
The test was very tedious to write and would not easily scale to cover a large portion of the code.
If of interest, take a look into our <a href="https://github.com/reynir/openvpn/tree/badmac-test">modifications to OpenVPN</a> and <a href="https://github.com/robur-coop/miragevpn/tree/badmac-test">modifications to MirageVPN</a>.</p>
<p>The end-to-end testing is in addition to our unit tests and fuzz testing; and to our <a href="miragevpn-performance.html">benchmarking</a> binary.</p>
<p>Our results are that with 4 configurations we achieve above 75% code coverage in MirageVPN.
While investigating the code coverage results, we found various pieces of code that were never executed, and we were able to remove them.
Code that does not exist is bug-free :D
With these tests in place future maintenance is less daunting as they will help us guard us from breaking the code.</p>
<p>At the moment we do not exercise the error paths very well in the code.
This is much less straightforward to test in this manner, and is important future work.
We plan to develop a client and server that injects faults at various stages of the protocol to test these error paths.
OpenVPN built with debugging enabled also comes with a <code>--gremlin</code> mode that injects faults, and would be interesting to investigate.</p>
</article>
</main>
<footer>
<a href="https://github.com/xhtmlboi/yocaml">Powered by <strong>YOCaml</strong></a>
<br />
</footer>
<script>hljs.highlightAll();</script>
</body>
</html>

View file

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Robur's blog</title><link>https://blog.robur.coop</link><atom:link href="https://blog.robur.coop/feed.xml" rel="self" type="application/rss+xml" /><description>The Robur cooperative blog</description><generator>yocaml</generator><webMaster>team@robur.coop</webMaster><item><title>qubes-miragevpn, a MirageVPN client for QubesOS</title><link>https://blog.robur.coop/articles/qubes-miragevpn.html</link><pubDate>Mon, 24 Jun 2024 10:00:00 GMT</pubDate><description>A new OpenVPN client for QubesOS</description><guid isPermaLink="false">https://blog.robur.coop/articles/qubes-miragevpn.html</guid></item><item><title>MirageVPN server</title><link>https://blog.robur.coop/articles/miragevpn-server.html</link><pubDate>Mon, 17 Jun 2024 10:00:00 GMT</pubDate><description>Announcement of our MirageVPN server.</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-server.html</guid></item><item><title>Speeding up MirageVPN and use it in the wild</title><link>https://blog.robur.coop/articles/miragevpn-performance.html</link><pubDate>Tue, 16 Apr 2024 10:00:00 GMT</pubDate><description>Performance engineering of MirageVPN, speeding it up by a factor of 25.</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-performance.html</guid></item><item><title>GPTar</title><link>https://blog.robur.coop/articles/gptar.html</link><pubDate>Wed, 21 Feb 2024 10:00:00 GMT</pubDate><description>Hybrid GUID partition table and tar archive</description><guid isPermaLink="false">https://blog.robur.coop/articles/gptar.html</guid></item><item><title>Speeding elliptic curve cryptography</title><link>https://blog.robur.coop/articles/speeding-ec-string.html</link><pubDate>Tue, 13 Feb 2024 10:00:00 GMT</pubDate><description>How we improved the performance of elliptic curves by only modifying the underlying byte array</description><guid isPermaLink="false">https://blog.robur.coop/articles/speeding-ec-string.html</guid></item><item><title>Cooperation and Lwt.pause</title><link>https://blog.robur.coop/articles/lwt_pause.html</link><pubDate>Sun, 11 Feb 2024 10:00:00 GMT</pubDate><description>A disgression about Lwt and Miou</description><guid isPermaLink="false">https://blog.robur.coop/articles/lwt_pause.html</guid></item><item><title>Python's `str.__repr__()`</title><link>https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</link><pubDate>Sat, 03 Feb 2024 10:00:00 GMT</pubDate><description>Reimplementing Python string escaping in OCaml</description><guid isPermaLink="false">https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</guid></item><item><title>MirageVPN updated (AEAD, NCP)</title><link>https://blog.robur.coop/articles/miragevpn-ncp.html</link><pubDate>Mon, 20 Nov 2023 10:00:00 GMT</pubDate><description>How we resurrected MirageVPN from its bitrot state</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-ncp.html</guid></item><item><title>MirageVPN &amp; tls-crypt-v2</title><link>https://blog.robur.coop/articles/miragevpn.html</link><pubDate>Tue, 14 Nov 2023 10:00:00 GMT</pubDate><description>How we implementated tls-crypt-v2 for miragevpn</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn.html</guid></item></channel></rss> <?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Robur's blog</title><link>https://blog.robur.coop</link><atom:link href="https://blog.robur.coop/feed.xml" rel="self" type="application/rss+xml" /><description>The Robur cooperative blog</description><generator>yocaml</generator><webMaster>team@robur.coop</webMaster><item><title>Testing MirageVPN against OpenVPN™</title><link>https://blog.robur.coop/articles/miragevpn-testing.html</link><pubDate>Wed, 26 Jun 2024 10:00:00 GMT</pubDate><description>Some notes about how we test MirageVPN against OpenVPN™</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-testing.html</guid></item><item><title>qubes-miragevpn, a MirageVPN client for QubesOS</title><link>https://blog.robur.coop/articles/qubes-miragevpn.html</link><pubDate>Mon, 24 Jun 2024 10:00:00 GMT</pubDate><description>A new OpenVPN client for QubesOS</description><guid isPermaLink="false">https://blog.robur.coop/articles/qubes-miragevpn.html</guid></item><item><title>MirageVPN server</title><link>https://blog.robur.coop/articles/miragevpn-server.html</link><pubDate>Mon, 17 Jun 2024 10:00:00 GMT</pubDate><description>Announcement of our MirageVPN server.</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-server.html</guid></item><item><title>Speeding up MirageVPN and use it in the wild</title><link>https://blog.robur.coop/articles/miragevpn-performance.html</link><pubDate>Tue, 16 Apr 2024 10:00:00 GMT</pubDate><description>Performance engineering of MirageVPN, speeding it up by a factor of 25.</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-performance.html</guid></item><item><title>GPTar</title><link>https://blog.robur.coop/articles/gptar.html</link><pubDate>Wed, 21 Feb 2024 10:00:00 GMT</pubDate><description>Hybrid GUID partition table and tar archive</description><guid isPermaLink="false">https://blog.robur.coop/articles/gptar.html</guid></item><item><title>Speeding elliptic curve cryptography</title><link>https://blog.robur.coop/articles/speeding-ec-string.html</link><pubDate>Tue, 13 Feb 2024 10:00:00 GMT</pubDate><description>How we improved the performance of elliptic curves by only modifying the underlying byte array</description><guid isPermaLink="false">https://blog.robur.coop/articles/speeding-ec-string.html</guid></item><item><title>Cooperation and Lwt.pause</title><link>https://blog.robur.coop/articles/lwt_pause.html</link><pubDate>Sun, 11 Feb 2024 10:00:00 GMT</pubDate><description>A disgression about Lwt and Miou</description><guid isPermaLink="false">https://blog.robur.coop/articles/lwt_pause.html</guid></item><item><title>Python's `str.__repr__()`</title><link>https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</link><pubDate>Sat, 03 Feb 2024 10:00:00 GMT</pubDate><description>Reimplementing Python string escaping in OCaml</description><guid isPermaLink="false">https://blog.robur.coop/articles/2024-02-03-python-str-repr.html</guid></item><item><title>MirageVPN updated (AEAD, NCP)</title><link>https://blog.robur.coop/articles/miragevpn-ncp.html</link><pubDate>Mon, 20 Nov 2023 10:00:00 GMT</pubDate><description>How we resurrected MirageVPN from its bitrot state</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn-ncp.html</guid></item><item><title>MirageVPN &amp; tls-crypt-v2</title><link>https://blog.robur.coop/articles/miragevpn.html</link><pubDate>Tue, 14 Nov 2023 10:00:00 GMT</pubDate><description>How we implementated tls-crypt-v2 for miragevpn</description><guid isPermaLink="false">https://blog.robur.coop/articles/miragevpn.html</guid></item></channel></rss>

View file

@ -26,6 +26,19 @@
<h3>Essays and ramblings</h3> <h3>Essays and ramblings</h3>
<ol reversed class="list-articles"><li> <ol reversed class="list-articles"><li>
<div class="side">
<a href="https://reyn.ir/">
<img src="https://www.gravatar.com/avatar/54a15736b37879bc9708c1618a7cc130">
</a></div>
<div class="content">
<span class="date">2024-06-26</span>
<a href="articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a><br />
<p>Some notes about how we test MirageVPN against OpenVPN™</p>
<div class="bottom">
<ul class="tags-list"><li><a href="/tags/ocaml.html">ocaml</a></li><li><a href="/tags/mirageos.html">mirageos</a></li><li><a href="/tags/cryptography.html">cryptography</a></li><li><a href="/tags/security.html">security</a></li><li><a href="/tags/testing.html">testing</a></li><li><a href="/tags/vpn.html">vpn</a></li></ul>
</div>
</div>
</li><li>
<div class="side"> <div class="side">
<a href="https://blog.osau.re/"> <a href="https://blog.osau.re/">
<img src="https://www.gravatar.com/avatar/e243d18f97471424ca390e85820797ac"> <img src="https://www.gravatar.com/avatar/e243d18f97471424ca390e85820797ac">

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-community"><h3> <div class="tag-box" id="tag-community"><h3>
<span>community</span> <span>community</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-cryptography"><h3> <div class="tag-box" id="tag-cryptography"><h3>
<span>cryptography</span> <span>cryptography</span>
3 entries</h3> 4 entries</h3>
<ul><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li></ul> <ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-git"><h3> <div class="tag-box" id="tag-git"><h3>
<span>git</span> <span>git</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-gpt"><h3> <div class="tag-box" id="tag-gpt"><h3>
<span>gpt</span> <span>gpt</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-mbr"><h3> <div class="tag-box" id="tag-mbr"><h3>
<span>mbr</span> <span>mbr</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-mirageos"><h3> <div class="tag-box" id="tag-mirageos"><h3>
<span>mirageos</span> <span>mirageos</span>
5 entries</h3> 6 entries</h3>
<ul><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-ocaml"><h3> <div class="tag-box" id="tag-ocaml"><h3>
<span>ocaml</span> <span>ocaml</span>
9 entries</h3> 10 entries</h3>
<ul><li><a href="/articles/qubes-miragevpn.html">qubes-miragevpn, a MirageVPN client for QubesOS</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/gptar.html">GPTar</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/lwt_pause.html">Cooperation and Lwt.pause</a></li><li><a href="/articles/2024-02-03-python-str-repr.html">Python&apos;s `str.__repr__()`</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li><li><a href="/articles/qubes-miragevpn.html">qubes-miragevpn, a MirageVPN client for QubesOS</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/gptar.html">GPTar</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/lwt_pause.html">Cooperation and Lwt.pause</a></li><li><a href="/articles/2024-02-03-python-str-repr.html">Python&apos;s `str.__repr__()`</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-performance"><h3> <div class="tag-box" id="tag-performance"><h3>
<span>performance</span> <span>performance</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-persistent storage"><h3> <div class="tag-box" id="tag-persistent storage"><h3>
<span>persistent storage</span> <span>persistent storage</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-python"><h3> <div class="tag-box" id="tag-python"><h3>
<span>python</span> <span>python</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-qubesos"><h3> <div class="tag-box" id="tag-qubesos"><h3>
<span>qubesos</span> <span>qubesos</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-scheduler"><h3> <div class="tag-box" id="tag-scheduler"><h3>
<span>scheduler</span> <span>scheduler</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-security"><h3> <div class="tag-box" id="tag-security"><h3>
<span>security</span> <span>security</span>
5 entries</h3> 6 entries</h3>
<ul><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/speeding-ec-string.html">Speeding elliptic curve cryptography</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-tar"><h3> <div class="tag-box" id="tag-tar"><h3>
<span>tar</span> <span>tar</span>

41
tags/testing.html Normal file
View file

@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
Robur's blog
</title>
<meta name="description" content="blog.robur.coop">
<link type="text/css" rel="stylesheet" href="../css/hl.css">
<link type="text/css" rel="stylesheet" href="../css/style.css">
<script src="../js/hl.js"></script>
<link rel="alternate" type="application/rss+xml" href="../feed.xml" title="blog.robur.coop">
</head>
<body>
<header>
<h1>blog.robur.coop</h1>
<blockquote>
The <strong>Robur</strong> cooperative blog.
</blockquote>
</header>
<main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-testing"><h3>
<span>testing</span>
1 entry</h3>
<ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li></ul>
</div>
</main>
<footer>
<a href="https://github.com/xhtmlboi/yocaml">Powered by <strong>YOCaml</strong></a>
<br />
</footer>
<script>hljs.highlightAll();</script>
</body>
</html>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-unicode"><h3> <div class="tag-box" id="tag-unicode"><h3>
<span>unicode</span> <span>unicode</span>

View file

@ -23,7 +23,7 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-unikernel"><h3> <div class="tag-box" id="tag-unikernel"><h3>
<span>unikernel</span> <span>unikernel</span>

View file

@ -23,12 +23,12 @@
</header> </header>
<main><a href="/index.html">Back to index</a> <main><a href="/index.html">Back to index</a>
<ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (9)</a></li><li><a href="/tags/mirageos.html">mirageos (5)</a></li><li><a href="/tags/security.html">security (5)</a></li><li><a href="/tags/vpn.html">vpn (5)</a></li><li><a href="/tags/cryptography.html">cryptography (3)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul> <ul class="tags-list aeration"><li><a href="/tags/ocaml.html">ocaml (10)</a></li><li><a href="/tags/mirageos.html">mirageos (6)</a></li><li><a href="/tags/security.html">security (6)</a></li><li><a href="/tags/vpn.html">vpn (6)</a></li><li><a href="/tags/cryptography.html">cryptography (4)</a></li><li><a href="/tags/unikernel.html">unikernel (2)</a></li><li><a href="/tags/community.html">community (1)</a></li><li><a href="/tags/git.html">git (1)</a></li><li><a href="/tags/gpt.html">gpt (1)</a></li><li><a href="/tags/mbr.html">mbr (1)</a></li><li><a href="/tags/performance.html">performance (1)</a></li><li><a href="/tags/persistent storage.html">persistent storage (1)</a></li><li><a href="/tags/python.html">python (1)</a></li><li><a href="/tags/qubesos.html">qubesos (1)</a></li><li><a href="/tags/scheduler.html">scheduler (1)</a></li><li><a href="/tags/tar.html">tar (1)</a></li><li><a href="/tags/testing.html">testing (1)</a></li><li><a href="/tags/unicode.html">unicode (1)</a></li></ul>
<div class="tag-box" id="tag-vpn"><h3> <div class="tag-box" id="tag-vpn"><h3>
<span>vpn</span> <span>vpn</span>
5 entries</h3> 6 entries</h3>
<ul><li><a href="/articles/qubes-miragevpn.html">qubes-miragevpn, a MirageVPN client for QubesOS</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul> <ul><li><a href="/articles/miragevpn-testing.html">Testing MirageVPN against OpenVPN™</a></li><li><a href="/articles/qubes-miragevpn.html">qubes-miragevpn, a MirageVPN client for QubesOS</a></li><li><a href="/articles/miragevpn-server.html">MirageVPN server</a></li><li><a href="/articles/miragevpn-performance.html">Speeding up MirageVPN and use it in the wild</a></li><li><a href="/articles/miragevpn-ncp.html">MirageVPN updated (AEAD, NCP)</a></li><li><a href="/articles/miragevpn.html">MirageVPN &amp; tls-crypt-v2</a></li></ul>
</div> </div>
</main> </main>