s4

package module
v0.0.0-...-e5ef188 Latest Latest
Warning

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

Go to latest
Published: Sep 12, 2021 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.

💸 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