aergoio/aergo

View on GitHub
account/signer.go

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
package account

import (
    "github.com/aergoio/aergo-actor/actor"
    "github.com/aergoio/aergo/v2/account/key"
    "github.com/aergoio/aergo/v2/types/message"
)

type Signer struct {
    keystore *key.Store
}

func NewSigner(s *key.Store) *Signer {
    return &Signer{keystore: s}
}

// Receive actor message
func (s *Signer) Receive(context actor.Context) {
    switch msg := context.Message().(type) {
    case *message.SignTx:
        err := s.keystore.SignTx(msg.Tx, msg.Requester)
        defer context.Self().Stop()
        if err != nil {
            context.Respond(&message.SignTxRsp{Tx: nil, Err: err})
        } else {
            //context.Tell(context.Sender(), &message.SignTxRsp{Tx: msg, Err: nil})
            context.Respond(&message.SignTxRsp{Tx: msg.Tx, Err: nil})
        }
    }
}