mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-24 06:25:55 +00:00
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet"
|
|
|
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb"
|
|
)
|
|
|
|
func (s *server) Sign(_ context.Context, request *pb.SignRequest) (*pb.SignResponse, error) {
|
|
s.lock.Lock()
|
|
defer s.lock.Unlock()
|
|
|
|
//TODO: fix SignRequest pashphrase
|
|
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, passphrase 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, []string{passphrase}, unsignedTransaction, s.keysFile.ECDSA)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
signedTransactions[i] = signedTransaction
|
|
}
|
|
return signedTransactions, nil
|
|
}
|