Built from 0f79f4c7c9f39e2fb71042b6f225632d4403ce4a
This commit is contained in:
parent
841bd2b788
commit
394d709d2e
21 changed files with 150 additions and 28 deletions
68
articles/miragevpn-testing.html
Normal file
68
articles/miragevpn-testing.html
Normal 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>
|
2
feed.xml
2
feed.xml
|
@ -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 & 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 & 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>
|
13
index.html
13
index.html
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 & 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 & tls-crypt-v2</a></li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -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'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 & 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'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 & tls-crypt-v2</a></li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 & 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 & tls-crypt-v2</a></li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -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
41
tags/testing.html
Normal 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>
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 & 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 & tls-crypt-v2</a></li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
Loading…
Reference in a new issue