# GNU Privacy Guard
GNU Privacy Guard (GnuPG or GPG) is a completely free implementation of PGP. It allows users to encrypt and sign data communications and features a versatile key management system.
## Install
1. Install using Homebrew
```bash
brew install gnupg
```
2. Add GPG to `~/.zshrc`
```bash
if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \
else echo -e '\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi
```
## Usage
### Generate a new key
1. Use the `--full-generate-key` flag to generate a new key.
```bash
gpg --full-generate-key
```
2. Follow the prompt to generate a new key.
3. Check the generated key
### List all keys
Public keys
```bash
gpg --list-keys --keyid-format=long
```
Private keys
```bash
gpg --list-secret-keys --keyid-format=long
```
- `--keyid-format=long` -- displays your key's id in long format.
### Import gpg keys
```bash
gpg --import [KEY-FILE]
```
<sup>*Importing public and private key file uses the same command.</sup>
- Replace `[KEY-FILE]` with the path to your key file.
### Export your gpg keys
Public key
```bash
gpg --export --armor [KEY-ID]
```
Private key
```bash
gpg --export-secret-key --armor [KEY-ID]
```
- These will export and print your keys in the terminal.
- You can use the redirector `>` operator to redirect the output to a file.
## What is GPG
GPG keys are broken down into two types: public and private.
- **Public keys** are used to encrypt data and verify signatures.
- **Private keys** are used to decrypt data and sign data.
## Next Steps
- [Pinentry-mac](/xvJej2bKQlqjiD_fAfJ7fw)
## References
- https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
- https://linuxhint.com/export-import-keys-with-gpg/