Metadata-Version: 2.1
Name: paper-secret
Version: 0.1.3
Summary: Shamir Secret Sharing on paper using gfshare
Home-page: https://codeberg.org/privacy1st/paper-secret
Author: Daniel Langbein
Author-email: daniel@systemli.org
Project-URL: Bug Tracker, https://codeberg.org/privacy1st/paper-secret/issues
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Classifier: Operating System :: Unix
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE

# Paper-Secret

Shamir Secret Sharing on paper using gfshare.

## Installation

### PyPi

* https://pypi.org/project/paper-secret/

### Dependencies

Required and optional dependencies with example how to install them for Arch Linux.

`gfshare` is required to split (`enpaper`) and merge (`depaper`) the secret.
See `man gfshare` for an explanation of Shamir Secret Sharing in gf(2**8).

```shell
sudo pacman -S --needed libgfshare
```

`qrencode` and `imagemagick` (`convert`) are required to create and merge QR-codes during the split process.
One can pass `-q` to `enpapaer` to skip this step.

```shell
sudo pacman -S --needed qrencode imagemagick
```

`enscript` and `ghostscript` (`ps2pdf`) are required to create a PDF containing the split secret in text form.
One can pass `-t` to `enpaper` to skip this step.

```shell
sudo pacman -S --needed enscript ghostscript
```

## Usage

Create a file with secret content:

```shell
cat > secret.txt
```

Split the secret into 5 lines:

```shell
enpaper secret.txt
```

Manually delete up to 2 of the 5 lines in `secret.txt_txt.txt`.

Then recreate the secret:

```shell
depaper secret.txt.split-text.txt
```

Print the secret:

```shell
cat secret.txt.split-text.txt.merged.txt
```

## Notes

* https://en.wikipedia.org/Shamir's_Secret_Sharing

Manually reconstructing the secret from k strings:

* For each string of the k strings
  * Create a file which name begins with `part` and ends with a dot and the first three characters of the string
    * For example `part.112`
  * Convert the 3rd to last character from base64 to binary and insert it into the file
* Execute `gfcombine part.*`
* The file `part` contains the reconstructed secret
