code: func (m *SignedMessage) Sign(signer Signer) error {
  	if signer == nil {
  		return errors.New("nil signer")
  	}
  
  	m.Sig = nil
  	bytes, err := json.Marshal(m)
  	if err != nil {
  		return errors.Wrap(err, "sign error: json.Marshal returned")
  	}
  	sig, err := signer.Sign(bytes)
  	if err != nil {
  		return errors.WithMessage(err, "sign error: signer.Sign returned")
  	}
  	m.Sig = sig
  
  	return nil
  }
docs: // Sign signs the SignedMessage and stores the signature in the Sig field