<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" 
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on lewoof.xyz</title>
    <link>https://lewoof.xyz</link>
    <description>Blog posts from Vithushan</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 20 Apr 2026 05:00:00 GMT</lastBuildDate>
    <atom:link href="https://lewoof.xyz/posts/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Woof OS Update</title>
      <link>https://os.lewoof.xyz/archtovoid</link>
      <description><![CDATA[The notice is on the Woof OS website instead of the posts on www.lewoof.xyz. 
Below is the notice:
<p>
I no longer use Arch Linux. I have switched to Void. Woof OS
therefore will follow suit and will eventually be a respin of Void
Linux instead. I am very busy however so this will not happen for at
least a year. Woof OS installs will work and update just fine since
they are just respins of Arch Linux, but the ISOs will not be
updated. When Woof OS does get updated, there will be a post on my
blog (<a href="https://lewoof.xyz">lewoof.xyz</a>). Add the RSS
feed, <a href="https://lewoof.xyz/posts/feed.xml">https://lewoof.xyz/posts/feed.xml</a>
to your reader to be notified when there is a new post. I'm too lazy
to make a separate RSS feed for this (temporarily) dead project.
</p>
]]>
      </description>
      <guid isPermaLink="false">lewoof-posts-woof-os-migrating-to-void</guid>
      <pubDate>Mon, 20 Apr 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>A little update for my RSS users</title>
      <link>https://lewoof.xyz/notes/feed.xml</link>
      <description><![CDATA[
<p>I now have an RSS feed for personal summaries I've written of courses I
take. They were originally meant as something for me to be able to share
with friends who are on the same course as me, and for me to revisit
concepts that I often forget. However, I have realised that the reason I
had to write them myself was that I could not find any concise
notes online of these courses, and the ones that did exist were
outdated, not concise, not accurate, or do not properly cover
the syllabus in its entirety. I hope that these notes are useful
for anyone taking these courses, or are interested in
the topics and would like something that they can have printed
out to look at everyday in order to recall ideas from said
topics.</p>
<p>You can add the notes feed with this feed URL:
https://lewoof.xyz/notes/feed.xml</p>
<p>It could also be added by sharing my site's homepage to your RSS reader
which might (depending on its features) detect the blog post feed and
the notes feed.</p>
<p>This post will not be posted on the site as a page. This is also not a
proper blog post. Rather it is similar to a broadcast text
message. It is an exclusive for you (not very exclusive
considering all it takes is an RSS reader to see this, but one
is not to expect such unicorns in the slopocalypse that is
2026), the few people who follow the feed. Other posts however
will be on the site as HTML pages as well as RSS feed items.</p>
]]>
      </description>
      <guid isPermaLink="false">lewoof-posts-rss-feed-info</guid>
      <pubDate>Tue, 14 Apr 2026 09:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Using PGP</title>
      <link>https://lewoof.xyz/posts/pgp.html</link>
      <description>Arguing that you don’t care about the right to privacy because you
have nothing to hide is no different from saying you don’t care about
free speech because you have nothing to say. – Edward Snowden</description>
      <guid isPermaLink="false">lewoof-posts-pgp</guid>
      <pubDate>Fri, 20 Mar 2026 09:00:00 GMT</pubDate>
      <content:encoded><![CDATA[
	    <main>
      <h1 id="encrypting-messages-and-files-with-pgp">
        Encrypting messages and files with PGP
      </h1>
      <div>
        <blockquote>
          Arguing that you don’t care about the right to privacy because you
          have nothing to hide is no different from saying you don’t care about
          free speech because you have nothing to say.
        </blockquote>
        – Edward Snowden
      </div>
      <p>
        <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy">PGP</a>
        encrypts a message by first creating a session key, encrypting the
        message with the session key, and finally encrypting the session key
        with the receiver’s public key.
      </p>
      <p>
        The encrypted session key can now only be decrypted using the receiver’s
        private key, and the message can only be decrypted by the session key.
      </p>
      <p>
        The message can also be signed, where the sender uses his private key to
        create the ciphertext that can be decrypted using his public key. We can
        then know for certain that the person sending the message is who he
        claims to be.
      </p>
      <p>
        We can use this very nice and simple system to make communications over
        unencrypted channels (almost every social media platform, email,
        discord, etc.) a little less scary.
      </p>
      <p>
        This post is not meant to be a proper explanation on the workings of PGP
        or any sort of encryption algorithm. All I’m doing is telling you how
        you can encrypt and decrypt messages to prevent your messages from being
        read by anyone other than the intended recipient.
      </p>
      <h2 id="gpg">GPG</h2>
      <p>
        I will be using GPG (GNU Privacy Guard) throughout this post. If you are
        on Linux, you probably have it already installed. If not, look it up on
        your package manager. If you are on Windows or MacOS (you really
        shouldn’t be), you can use GPG4Win on Windows or
        <code>gnupg</code> through Homebrew.
      </p>
      <p>
        If you want a GUI, take a look at
        <a href="https://www.gnupg.org/software/frontends.html"
          >https://www.gnupg.org/software/frontends.html</a
        >. We will be using the CLI.
      </p>
      <h2 id="generating-a-key-pair">Generating a key pair</h2>
      <p>
        A key pair simply contains the public key and the private key. You can
        generate a key pair interactively by running
      </p>
      <div id="cb1">
        <pre
        ><code ><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span >gpg</span> <span >--gen-key</span></span></code></pre>
      </div>
      <p>
        This will ask you a few questions (name and email are for what you want
        others to see you as when they import your key; it doesn’t have to match
        reality), and generate a private key.
      </p>
      <figure>
        <img
          src="/assets/images/posts/gpg/keygen.png"
          alt="Generating a key pair"
        >
        <figcaption aria-hidden="true">Generating a key pair</figcaption>
      </figure>
      <p>
        Once generated, you can export the public key by running, in the case of
        the example:
      </p>
      <div id="cb2">
        <pre
        ><code ><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span >gpg</span> <span >--armor</span> <span >--export</span> example@example.com <span >&gt;</span> public.key</span></code></pre>
      </div>
      <p>
        <code>--export</code> is self explanatory, and <code>--armor</code> is
        to convert the key to ASCII, which is commonly the format in which PGP
        keys are shared. Remember to create a new key after the shown expiry and
        to share it to everybody. Keys that don’t expire can be created through
        the full generation dialog (<code>gpg --full-generate-key</code>) but is
        not recommended.
      </p>
      <h2 id="importing-a-key">Importing a key</h2>
      <p>
        You have now generated a key pair. Let’s say that your friend has also
        generated a keypair. You can download his key, and import it with
        <code>gpg --import /path/to/key</code>. For example, say I want to
        import the example key I generated:
      </p>
      <figure>
        <img src="/assets/images/posts/gpg/import.png" alt="Importing a key" >
        <figcaption aria-hidden="true">Importing a key</figcaption>
      </figure>
      <p>
        Your friend will have to do the same with your key on his machine if he
        wants to send you encrypted messages.
      </p>
      <h2 id="encrypting-a-message-or-a-file-and-signing">
        Encrypting a message or a file (and signing)
      </h2>
      <p>To encrypt a file (of any kind, including plain text), run</p>
      <div id="cb3">
        <pre
        ><code ><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span >gpg</span> <span >--encrypt</span> <span >--recipient</span> example@example.com <span >--output</span> /path/where/i/want/output.gpg /path/of/original/file</span></code></pre>
      </div>
      <p>
        This will work perfectly fine for plain text as well, and can be
        decrypted just the same. However, you might prefer sending an ASCII
        version of the ciphertext when messaging instead of having to upload
        each message as a file. For an ASCII output, you simply add
        <code>--armor</code> and change the output file path to something more
        sensible like <code>.txt</code> (the file extension really is irrelevant
        to GPG).
      </p>
      <p>
        You might however not want to create a new file. In this case, you can
        pipe the output of echo into GPG and have it encrypt any string you
        want. For example, the following will print out the ASCII ciphertext:
      </p>
      <div id="cb4">
        <pre
        ><code ><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span >echo</span> <span >&quot;give me money&quot;</span> <span >|</span> <span >gpg</span> <span >--encrypt</span> <span >--armor</span> <span >--recipient</span> example@example.com</span></code></pre>
      </div>
      <figure>
        <img
          src="/assets/images/posts/gpg/plaintext.png"
          alt="Encrypting plain text"
        >
        <figcaption aria-hidden="true">Encrypting plain text</figcaption>
      </figure>
      <p>
        When encrypting, you would also want to add <code>--sign</code> to sign
        the message, proving that the message is from your key pair.
      </p>
      <h2 id="decrypting-a-message-or-a-file">
        Decrypting a message or a file
      </h2>
      <p>To decrypt a file, run</p>
      <div  id="cb5">
        <pre
        ><code ><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span >gpg</span> <span >--decrypt</span> <span >--output</span> /path/where/i/want/original /path/of/encrypted/file.gpg</span></code></pre>
      </div>
      <p>
        This will decrypt the file and save it to the specified output file.
      </p>
      <p>
        Like for encryption, you can also pipe the output of echo to decrypt a
        PGP message:
      </p>
      <div id="cb6">
        <pre ><code ><span id="cb6-1"><span >echo</span> <span >&quot;</span></span>
<span id="cb6-2"><span >-----BEGIN PGP MESSAGE-----</span></span>
<span id="cb6-3"><span ></span></span>
<span id="cb6-4"><span >hF4DSH1j+9Saq+sSAQdAGJWd63M09ISORNb165HP7FX7ixsIOsOd4M57ZVU+2wUw</span></span>
<span id="cb6-5"><span >D3SEn06aw9gyMp6cjgWvEEEsFFp2SsPsjhSpGdnQwO1NnECmLEQqLf54BHX79rLg</span></span>
<span id="cb6-6"><span >0kcBr51rAgFF1TvRck1gilSpxnqATRBiQ91Axs++tzl+8BT+XdISMUrHpPMVfUBa</span></span>
<span id="cb6-7"><span >xivJxbyi2sCL1P42jLX/lrZVcIsgmkOdrQ==</span></span>
<span id="cb6-8"><span >=PywC</span></span>
<span id="cb6-9"><span >-----END PGP MESSAGE-----</span></span>
<span id="cb6-10"><span >&quot;</span> | <span >gpg</span> <span >--decrypt</span></span>
</code></pre>
      </div>
      <p>
        If you want the message to be written to a file instead of printed, you
        use <code>--output</code>
      </p>
      <p>
        If the message is signed, GPG will show you information about the
        signer, which you can use to identify and/or confirm the sender.
      </p>
      <figure>
        <img
          src="/assets/images/posts/gpg/decrypt.png"
          alt="Decrypting plain text"
        >
        <figcaption aria-hidden="true">Decrypting plain text</figcaption>
      </figure>
      <h2 id="bye-bye">bye bye</h2>
      <p>
        That should cover enough to get you started. You should read the
        <a href="https://www.gnupg.org/documentation/">docs for GPG</a>.
      </p>
</main>

    <footer>
        <h1>Addresses, links, and contact</h1>
	<ul>
          <li>Email: <a target="_blank" href="mailto:contact@lewoof.xyz">contact@lewoof.xyz</a> </li>
    	  <li>Matrix: woof@matrix.lewoof.xyz </li> 
    	  <li>XMPP: lewoof@anonlounge.xyz </li> 
	  <li>Github: <a target="_blank" href="https://github.com/acutewoof">acutewoof</a> </li>
          <li>Solana: JDkK2kpBmPm6YyYnLYNHpw8FhKyZ9AQ2CQTqj6BQxFKY </li>
          <li>Monero: 47DAoKGaa2UF1nL7M5wvdnhqapAuSnLKACTbhYGEbAYicjdDra1HnnKNUy4bzrL4voRrwP44y3MYX7vmdY4X8HJv3oB6erS </li>
          <li>Bitcoin (native segwit): bc1qh5m8v9xyd8l4yc7d3qfs5a83rqk3eukcjlw6sh </li>
          <li>BuyMeACoffee: <a target="_blank" href="https://www.buymeacoffee.com/acutewoof">acutewoof</a> </li>
        </ul>
    </footer>
	    ]]></content:encoded>
    </item>
  </channel>
</rss>
