diff --git a/go.mod b/go.mod index fc8b510daa1059837a956080596388c850329d84..b445aeeb24388c315b705026c59193b2af5836be 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,8 @@ require ( github.com/hack-pad/go-indexeddb v0.2.0 github.com/pkg/errors v0.9.1 github.com/spf13/jwalterweatherman v1.1.0 - gitlab.com/elixxir/client v1.5.1-0.20221013003505-494df928ddd1 - gitlab.com/elixxir/crypto v0.0.7-0.20221003185354-b091598d2322 + gitlab.com/elixxir/client v1.5.1-0.20221014161854-3e3de2653aa4 + gitlab.com/elixxir/crypto v0.0.7-0.20221014161526-ce04e14b9f80 gitlab.com/elixxir/primitives v0.0.3-0.20220901220638-1acc75fabdc6 gitlab.com/xx_network/crypto v0.0.5-0.20220913213008-98764f5b3287 gitlab.com/xx_network/primitives v0.0.4-0.20221010192422-3479f09b7769 diff --git a/go.sum b/go.sum index a3f5baa4d7581adfb20048a3def83250891d7465..00493640e74acdbcc4a4b0530b8420b89ccb5df8 100644 --- a/go.sum +++ b/go.sum @@ -614,15 +614,15 @@ github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= gitlab.com/elixxir/bloomfilter v0.0.0-20211222005329-7d931ceead6f h1:yXGvNBqzZwAhDYlSnxPRbgor6JWoOt1Z7s3z1O9JR40= gitlab.com/elixxir/bloomfilter v0.0.0-20211222005329-7d931ceead6f/go.mod h1:H6jztdm0k+wEV2QGK/KYA+MY9nj9Zzatux/qIvDDv3k= -gitlab.com/elixxir/client v1.5.1-0.20221013003505-494df928ddd1 h1:a9+ffQQhSP1aO74gonTfCeoSp1J1ufhSN3QYEYkCFKY= -gitlab.com/elixxir/client v1.5.1-0.20221013003505-494df928ddd1/go.mod h1:S9sX17C6Gcw9oKFpTjPjcAW4eVFNxQhOURPxgqGz78M= +gitlab.com/elixxir/client v1.5.1-0.20221014161854-3e3de2653aa4 h1:zXEWsMHQ3aQr/8LnPytIeQ8cMkpKm4kNpBXgKFj06I0= +gitlab.com/elixxir/client v1.5.1-0.20221014161854-3e3de2653aa4/go.mod h1:oSbLC/5yibV2zZk9iI6Cm8F44+I80fQfP6qw9QaGaeI= gitlab.com/elixxir/comms v0.0.4-0.20221011183106-8c4450ba3cfb h1:aw7Ao1oqho+97gO35HkzBmv2e25qluRXEiNXw/oD8MM= gitlab.com/elixxir/comms v0.0.4-0.20221011183106-8c4450ba3cfb/go.mod h1:oRteMH+R5t1j/FZ+KJJnZUcqJO2sLXnWksN5HPkZUIo= gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4/go.mod h1:ucm9SFKJo+K0N2GwRRpaNr+tKXMIOVWzmyUD0SbOu2c= gitlab.com/elixxir/crypto v0.0.3/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA= gitlab.com/elixxir/crypto v0.0.7-0.20220913220142-ab0771bad0af/go.mod h1:QF8SzsrYh9Elip9EUYUDAhPjqO9DGrrrQxYHvn+VXok= -gitlab.com/elixxir/crypto v0.0.7-0.20221003185354-b091598d2322 h1:8unQE70BDNRXTWUbjOO9d4kWyh19LySlTZo0Jqx0gPE= -gitlab.com/elixxir/crypto v0.0.7-0.20221003185354-b091598d2322/go.mod h1:QF8SzsrYh9Elip9EUYUDAhPjqO9DGrrrQxYHvn+VXok= +gitlab.com/elixxir/crypto v0.0.7-0.20221014161526-ce04e14b9f80 h1:M9imzr2ZrD0GXsR+nfrzLnJ8Y9axj2Pvq8CTDE+IQb4= +gitlab.com/elixxir/crypto v0.0.7-0.20221014161526-ce04e14b9f80/go.mod h1:QF8SzsrYh9Elip9EUYUDAhPjqO9DGrrrQxYHvn+VXok= gitlab.com/elixxir/ekv v0.2.1 h1:dtwbt6KmAXG2Tik5d60iDz2fLhoFBgWwST03p7T+9Is= gitlab.com/elixxir/ekv v0.2.1/go.mod h1:USLD7xeDnuZEavygdrgzNEwZXeLQJK/w1a+htpN+JEU= gitlab.com/elixxir/primitives v0.0.0-20200731184040-494269b53b4d/go.mod h1:OQgUZq7SjnE0b+8+iIAT2eqQF+2IFHn73tOo+aV11mg= diff --git a/wasm/channels.go b/wasm/channels.go index b8e58b14c22c2195fe2875edd26aa835ad498791..401bec7ad72c767715758216c63d325b59ea1edf 100644 --- a/wasm/channels.go +++ b/wasm/channels.go @@ -41,16 +41,17 @@ func newChannelsManagerJS(api *bindings.ChannelsManager) map[string]interface{} "ReplayChannel": js.FuncOf(cm.ReplayChannel), // Channel Sending Methods and Reports - "SendGeneric": js.FuncOf(cm.SendGeneric), - "SendAdminGeneric": js.FuncOf(cm.SendAdminGeneric), - "SendMessage": js.FuncOf(cm.SendMessage), - "SendReply": js.FuncOf(cm.SendReply), - "SendReaction": js.FuncOf(cm.SendReaction), - "GetIdentity": js.FuncOf(cm.GetIdentity), - "GetStorageTag": js.FuncOf(cm.GetStorageTag), - "SetNickname": js.FuncOf(cm.SetNickname), - "DeleteNickname": js.FuncOf(cm.DeleteNickname), - "GetNickname": js.FuncOf(cm.GetNickname), + "SendGeneric": js.FuncOf(cm.SendGeneric), + "SendAdminGeneric": js.FuncOf(cm.SendAdminGeneric), + "SendMessage": js.FuncOf(cm.SendMessage), + "SendReply": js.FuncOf(cm.SendReply), + "SendReaction": js.FuncOf(cm.SendReaction), + "GetIdentity": js.FuncOf(cm.GetIdentity), + "ExportPrivateIdentity": js.FuncOf(cm.ExportPrivateIdentity), + "GetStorageTag": js.FuncOf(cm.GetStorageTag), + "SetNickname": js.FuncOf(cm.SetNickname), + "DeleteNickname": js.FuncOf(cm.DeleteNickname), + "GetNickname": js.FuncOf(cm.GetNickname), // Channel Receiving Logic and Callback Registration "RegisterReceiveHandler": js.FuncOf(cm.RegisterReceiveHandler), @@ -686,6 +687,25 @@ func (ch *ChannelsManager) GetIdentity(js.Value, []js.Value) interface{} { return utils.CopyBytesToJS(i) } +// ExportPrivateIdentity encrypts and exports the private identity to a portable +// string. +// +// Parameters: +// - args[0] - Password to encrypt the identity with (string). +// +// Returns: +// - JSON of the encrypted private identity (Uint8Array). +// - Throws TypeError if exporting the identity fails. +func (ch *ChannelsManager) ExportPrivateIdentity(_ js.Value, args []js.Value) interface{} { + i, err := ch.api.ExportPrivateIdentity(args[0].String()) + if err != nil { + utils.Throw(utils.TypeError, err) + return nil + } + + return utils.CopyBytesToJS(i) +} + // GetStorageTag returns the storage tag needed to reload the manager. // // Returns: