-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient_passport.go
91 lines (77 loc) · 2.1 KB
/
client_passport.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package client
import (
"errors"
"github.com/Lunkov/lib-wallets"
"github.com/Lunkov/go-ecos-client/objects"
"github.com/Lunkov/go-ecos-client/messages"
)
func (c *ClientECOS) PassportStatus(w wallets.IWallet, IdTx []byte) (*messages.MsgTransactionStatus, error) {
msg := messages.NewMsgTransactionStatus(IdTx)
errs := msg.DoSign(w)
if errs != nil {
return nil, errs
}
answer, err := c.httpRequest("POST", "/passport/status", string(msg.Serialize()))
if err != nil {
return nil, err
}
err = msg.Deserialize(answer)
if err != nil {
return nil, err
}
return msg, nil
}
func (c *ClientECOS) PassportNew(w wallets.IWallet, coin uint32) (*objects.Transaction, error) {
msg := messages.NewMsgTransaction()
msg.InitNFT(messages.StatusTxNewNFT, w, coin)
errs := msg.DoSign(w)
if errs != nil {
return nil, errs
}
answer, err := c.httpRequest("POST", "/passport/new", string(msg.Serialize()))
if err != nil {
return nil, err
}
msgAnswer := objects.NewTX()
err = msgAnswer.Deserialize(answer)
if err != nil {
return nil, err
}
return msgAnswer, nil
}
func (c *ClientECOS) PassportCommit(w wallets.IWallet, coin uint32, passport *messages.PassportInfo) (*objects.Transaction, error) {
if passport == nil {
return nil, errors.New("Passport is empty")
}
errs := passport.Passport.DoSign(w)
if errs != nil {
return nil, errs
}
output, errs2 := passport.Serialize()
if errs2 != nil {
return nil, errs2
}
answerBuf, err := c.httpRequest("POST", "/passport/commit", string(output))
if err != nil {
return nil, err
}
answer := objects.NewTX()
err = answer.Deserialize(answerBuf)
if err != nil {
return nil, err
}
return answer, nil
}
func (c *ClientECOS) PassportGet(cid string, password string) (*objects.Passport, error) {
answerBuf, err := c.httpRequest("POST", "/object", string(cid))
if err != nil {
return nil, err
}
// DECRYPT
passport := objects.NewPassport()
err = passport.DeserializeDecrypt(password, answerBuf)
if err != nil {
return nil, err
}
return passport, nil
}