/
sign.go
36 lines (30 loc) · 1.02 KB
/
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
36
package server
import (
"context"
"github.com/BTCGhostdag/BTCD/cmd/BTCDwallet/libkaspawallet"
"github.com/BTCGhostdag/BTCD/cmd/BTCDwallet/daemon/pb"
)
func (s *server) Sign(_ context.Context, request *pb.SignRequest) (*pb.SignResponse, error) {
s.lock.Lock()
defer s.lock.Unlock()
signedTransactions, err := s.signTransactions(request.UnsignedTransactions, request.Password)
if err != nil {
return nil, err
}
return &pb.SignResponse{SignedTransactions: signedTransactions}, nil
}
func (s *server) signTransactions(unsignedTransactions [][]byte, password string) ([][]byte, error) {
mnemonics, err := s.keysFile.DecryptMnemonics(password)
if err != nil {
return nil, err
}
signedTransactions := make([][]byte, len(unsignedTransactions))
for i, unsignedTransaction := range unsignedTransactions {
signedTransaction, err := libkaspawallet.Sign(s.params, mnemonics, unsignedTransaction, s.keysFile.ECDSA)
if err != nil {
return nil, err
}
signedTransactions[i] = signedTransaction
}
return signedTransactions, nil
}