s4

package module
v0.0.0-...-5abc9c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2024 License: MIT Imports: 4 Imported by: 0

README

Simple Shamir's Secret Sharing (s4)

With Simple Shamir's Secret Sharing (s4) I want to provide you an easy to use interface for this beautiful little piece of math.

Please note that s4 is provided as it is and I do not take responsibility for any bugs. s4 is a tiny layer around hashicorp vault shamir and golang's AES encryption.

📚 Usage as library

You can use s4 as normal go library in your go projects by importing it via import "github.com/simonfrey/s4" and en-/decrypt bytes to byte shares and vice versa

🏠 Building the WASM for the frontend

I assume you have a go build environment setup in your machine.

In order to build & pack the web assembly file for the frontend please use the following command in the top level directory:

./build.sh

This will build you the required file. You now can copy to build folder to your web server (or use it locally) and it should run s4 as intended.

Building the frontend in Docker (in case you don't have a go build environment setup in your machine.)
docker run --rm -v .:/app docker.io/golang:1.14 env --chdir=/app -S ./build.sh

docker can also be replaced with podman in the above command, if you prefer to use it.

Find the frontend in the build/ directory, containing all resources in-line.

💸 Report Bugs & Tip

Please use Github Issues in order to report bugs

💸 If you want to tip me for my work on this project feel free to do so 💸

🗣 Discussions

s4 was broadly discussed on HackerNews, and was mentioned in golang weekly in June 2020.

📃 License

MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DistributeBytes

func DistributeBytes(in []byte, n, k uint64) ([][]byte, error)

DistributeBytes takes the given in bytes and distributes them to n shares. At least k shares are required to restore the initial data. For better performance and security use DistributeBytesAES

func DistributeBytesAES

func DistributeBytesAES(in []byte, n, k uint64) ([][]byte, error)

DistributeBytesAES takes the given in bytes and distributes them to n shares. At least k shares are required to restore the initial data In comparison to DistributeBytes this function uses AES on the payload and only distributes the key. This is a lot fast, as AES is highly optimized and backed by hardware support in most modern systems. The downside is a massive increase in share size, as every share now also has to contain the full AES payload.

func RecoverBytes

func RecoverBytes(in [][]byte) ([]byte, error)

RecoverBytes recovers the given shares generate by DistributeBytes to their original payload.

func RecoverBytesAES

func RecoverBytesAES(in [][]byte) ([]byte, error)

RecoverBytesAES recovers the given shares generate by DistributeBytesAES to their original payload.

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL