mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-22 06:46:46 +00:00

* Add send and sign commands to protobuf * Added Send and Sign stubs in kaspawalletd server * Implement Sign * Implemented Send * Allow Broadcast command to supply multiple transactions * No longer prompt for password in DecryptMnemonics * Rename TransactionIDs -> TxIDs to keep consistency with Broadcast * Add some comments and formatting Co-authored-by: Ori Newman <orinewman1@gmail.com>
37 lines
1.0 KiB
Go
37 lines
1.0 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()
|
|
|
|
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
|
|
}
|