pull down to refresh

Nice job 💪

minor note about keygen: a random number is generally used only to generate the secret key; the public key is then algorithmically derived from the secret (the pairing part of keypair). This may be an important distinction because you don't have to back up the public key - only the secret or the seed used to derive the secret, as that is generally the only non-deterministic part. Some of the PQ schemes have additional headaches to track though.

About your note 2: Symmetric cryptography is often paired with asymmetric cryptography, for example: when you pgp-encrypt a message to a recipient, the message is encrypted with a symmetric key, and that symmetric key in turn is encrypted against a recipient-bound asymmetric keypair. TLS (what you use for https), Signal, and newer standards like HPKE/COSE provide that mechanism too.