-
Notifications
You must be signed in to change notification settings - Fork 0
/
sign.go
35 lines (31 loc) · 851 Bytes
/
sign.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
package auth
import (
"bytes"
"encoding/base64"
"log"
"github.com/codehakase/mobius-client-go/utils"
"github.com/codehakase/mobius-client-go/utils/custom/transaction"
"github.com/stellar/go/xdr"
)
// Sign the user's challenge transaction
type Sign struct{}
// Sign adds a signature to the given transaction
func (s *Sign) Call(userSecret, xdrs, address string) string {
tx, err := transaction.New(xdrs)
if err != nil {
log.Fatal(err)
}
kp := utils.KPFromSeed(userSecret)
devKeypair := utils.KPFromAddress(address)
if err != nil {
log.Fatalf("failed to parse dev key pair, err: %v", err)
}
_ = utils.ValidateTx(devKeypair, tx)
tx.Sign(kp)
var txBytes bytes.Buffer
_, err = xdr.Marshal(&txBytes, tx.Tx)
if err != nil {
log.Fatalf("marshal xdr failed, %v", err)
}
return base64.StdEncoding.EncodeToString(txBytes.Bytes())
}