arnaucube
arnaucube/shamirsecretsharingPublic Self-hosted repository
shamirsecretsharing/wasm/shamirsecretsharing-wasm-wrapper.go
wasm/shamirsecretsharing-wasm-wrapper.goRaw
 1package main
 2
 3import (
 4	"math/big"
 5	"syscall/js"
 6
 7	"github.com/arnaucube/shamirsecretsharing"
 8)
 9
10func main() {
11	c := make(chan struct{}, 0)
12
13	println("WASM Go Initialized")
14	// register functions
15	registerCallbacks()
16	<-c
17}
18
19func registerCallbacks() {
20	js.Global().Set("createShares", js.ValueOf(createShares))
21	js.Global().Set("lagrangeInterpolation", js.ValueOf(lagrangeInterpolation))
22}
23
24func createShares(i []js.Value) {
25	nNeededShares, ok := new(big.Int).SetString(i[0].String(), 10)
26	if !ok {
27		println("error parsing parameter in position 0")
28	}
29	nShares, ok := new(big.Int).SetString(i[1].String(), 10)
30	if !ok {
31		println("error parsing parameter in position 1")
32	}
33	p, ok := new(big.Int).SetString(i[2].String(), 10)
34	if !ok {
35		println("error parsing parameter in position 2")
36	}
37	k, ok := new(big.Int).SetString(i[3].String(), 10)
38	if !ok {
39		println("error parsing parameter in position 3")
40	}
41	shares, err := shamirsecretsharing.Create(nNeededShares, nShares, p, k)
42	if err != nil {
43		println("error generating the shares")
44	}
45	println(shares)
46}
47
48func lagrangeInterpolation(i []js.Value) {
49}