Skip to content
Snippets Groups Projects
ndf.go 1.54 KiB
Newer Older
Jono Wenger's avatar
Jono Wenger committed
////////////////////////////////////////////////////////////////////////////////
// Copyright © 2022 xx foundation                                             //
Jono Wenger's avatar
Jono Wenger committed
//                                                                            //
// Use of this source code is governed by a license that can be found in the  //
// LICENSE file.                                                              //
Jono Wenger's avatar
Jono Wenger committed
////////////////////////////////////////////////////////////////////////////////

//go:build js && wasm

Jono Wenger's avatar
Jono Wenger committed
package wasm
Jono Wenger's avatar
Jono Wenger committed

import (
Jono Wenger's avatar
Jono Wenger committed
	"gitlab.com/elixxir/xxdk-wasm/utils"
Jono Wenger's avatar
Jono Wenger committed
	"syscall/js"
)

// DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
// The NDF is processed into a protobuf containing a signature that is verified
// using the cert string passed in. The NDF is returned as marshaled byte data
// that may be used to start a client.
//
// Parameters:
//   - args[0] - The URL to download from (string).
//   - args[1] - The NDF certificate (string).
Jono Wenger's avatar
Jono Wenger committed
//
// Returns a promise:
//   - Resolves to the JSON of the NDF ([ndf.NetworkDefinition]) (Uint8Array).
//   - Rejected with an error if downloading fails.
func DownloadAndVerifySignedNdfWithUrl(_ js.Value, args []js.Value) any {
Jono Wenger's avatar
Jono Wenger committed
	url := args[0].String()
	cert := args[1].String()

	promiseFn := func(resolve, reject func(args ...any) js.Value) {
Jono Wenger's avatar
Jono Wenger committed
		ndf, err := bindings.DownloadAndVerifySignedNdfWithUrl(url, cert)
Jono Wenger's avatar
Jono Wenger committed
		if err != nil {
			reject(utils.JsTrace(err))
		} else {
			resolve(utils.CopyBytesToJS(ndf))
		}
Jono Wenger's avatar
Jono Wenger committed
	}

Jono Wenger's avatar
Jono Wenger committed
	return utils.CreatePromise(promiseFn)
Jono Wenger's avatar
Jono Wenger committed
}