2022-01-16 18:20:39 +00:00
---
title: "gpg"
tags: [ "Documentation", "data" ]
---
2020-02-07 23:06:49 +00:00
# Making keys
2020-01-02 00:04:35 +00:00
Generate keys:
2023-06-17 19:28:20 +00:00
```bash
gpg --gen-key
```
2020-01-02 00:04:35 +00:00
Follow the guide.
# Encrypting a file
2023-06-17 19:28:20 +00:00
```bash
gpg -r malinfreeborn@posteo.net -e file
```
2020-01-02 00:04:35 +00:00
`-r` specifies the recipient.
Check you have an encrypted version of your file.
# Changing Expiration Dates
gpg --list-keys
... and then use the second part of 'pub', which is the ID. But that's not appearing here so... on with gpg2?
# Making encrypted files with a local password
Make a password with a password (cypher encryption).
2023-06-17 19:28:20 +00:00
```bash
gpg -c --output passwords.txt
```
2020-01-02 00:04:35 +00:00
or
2023-06-17 19:28:20 +00:00
```bash
gpg -c > passwords.txt
```
2020-01-02 00:04:35 +00:00
Put in a password.
Write message then stop with Ctrl+d.
Get the message back out the file with:
2023-06-17 19:28:20 +00:00
```bash
gpg -d passwords.txt
```
2020-01-02 00:04:35 +00:00
2021-10-21 19:46:03 +00:00
# Circles of Trust
Search for a key at any key store:
2023-06-17 19:28:20 +00:00
```bash
gpg --search-keys nestorv
```
2021-10-21 19:46:03 +00:00
Once you've made a decision about someone:
2023-06-17 19:28:20 +00:00
```bash
gpg --list-keys
```
2021-10-21 19:46:03 +00:00
You get something like this:
```
pub rsa3072 2021-08-15 [SC] [expires: 2023-08-15]
CD30421FD825696BD95F1FF644C62C57B790D3CF
uid [ultimate] Malin Freeborn < malinfreeborn @ posteo . net >
sub rsa3072 2021-08-15 [E] [expires: 2023-08-15]
```
Notice the long, ugly, string - CD30421FD825696BD95F1FF644C62C57B790D3CF - and how horribly ugly it is.
This is a fingerprint.
You can now decide the trust level (this stays on your computer).
2023-06-17 19:28:20 +00:00
```bash
2023-10-18 21:14:09 +00:00
gpg --edit-key CD30421FD825696BD95F1FF644C62C57B790D3CF
2023-06-17 19:28:20 +00:00
```
2021-10-21 19:46:03 +00:00
2021-10-21 19:48:22 +00:00
Once you're in the interface, type `trust` .
2021-10-21 19:46:03 +00:00
2023-06-17 19:28:20 +00:00
```bash
gpg --sign-key alice@posteo.net
```
2021-10-21 19:46:03 +00:00
2023-10-18 21:25:54 +00:00
# Swapping Keys
This system relies on a ring of people swapping key information.
## Sending
Send those trusted keys up to a server, so people can see you have verified them:
2021-11-09 01:36:24 +00:00
2023-06-17 19:28:20 +00:00
```bash
2023-10-18 21:14:09 +00:00
gpg --send-keys 024C6B1C84449BD1CB4DF7A152295D2377F4D70F
2023-06-17 19:28:20 +00:00
```
2021-11-09 01:36:24 +00:00
2023-10-18 21:25:54 +00:00
## Upload Your Keys
## Add More Key Servers
Key servers often swap keys, but it's best to just send to multiple places immediately.
You can add key servers by adding this to `~/.gnupg/gpg.conf` .
```
keyserver hkps://keys.openpgp.org
keyserver hkps://mail-api.proton.me
keyserver hkps://keys.mailvelope.com
```
2021-10-21 19:46:03 +00:00
# Refresh Keys
2023-10-18 21:25:54 +00:00
Refreshing keys will tell you if some key you have contains a signature from someone you already trust, or if someone has published a revocation certificate (meaning their key should not be trusted any more).
2023-06-17 19:28:20 +00:00
```bash
gpg --refresh-keys
```
2021-10-21 19:46:03 +00:00
2023-10-18 21:25:54 +00:00
You can use the [crontab ](../basics/cron.md ) to refresh keys.
2022-05-01 18:53:16 +00:00
# Export
2023-04-04 15:35:17 +00:00
Your public key:
2023-06-17 19:28:20 +00:00
```bash
2023-10-18 21:14:09 +00:00
gpg --output me.gpg --armor --export
2023-06-17 19:28:20 +00:00
```
2022-05-01 18:53:16 +00:00
2023-04-04 15:35:17 +00:00
or
2023-06-17 19:28:20 +00:00
```bash
2023-10-18 21:14:09 +00:00
gpg --export -a person@email.tld > my_key.pub
2023-06-17 19:28:20 +00:00
```
2023-04-04 15:35:17 +00:00