log "github.com/sirupsen/logrus"
+ "github.com/vapor/blockchain/pseudohsm"
"github.com/vapor/blockchain/txbuilder"
+ "github.com/vapor/common"
+ "github.com/vapor/consensus"
+ "github.com/vapor/crypto"
"github.com/vapor/crypto/ed25519/chainkd"
)
return NewSuccessResponse(&signTemplateResp{Tx: &x.Txs, SignComplete: txbuilder.SignProgress(&x.Txs)})
}
+func (a *API) signWithPriKey(ins struct {
+ Xprv string `json:"xprv"`
+ Tx txbuilder.Template `json:"transaction"`
+}) Response {
+ xprv := &chainkd.XPrv{}
+ if err := xprv.UnmarshalText([]byte(ins.Xprv)); err != nil {
+ return NewErrorResponse(err)
+ }
+ if err := pseudohsm.SignWithKey(&ins.Tx, *xprv); err != nil {
+ return NewErrorResponse(err)
+ }
+ log.Info("Sign Transaction complete.")
+ return NewSuccessResponse(&signTemplateResp{Tx: &ins.Tx, SignComplete: txbuilder.SignProgress(&ins.Tx)})
+}
+
type signTemplatesResp struct {
Tx []*txbuilder.Template `json:"transaction"`
SignComplete bool `json:"sign_complete"`
}
type keyPair struct {
- Xpub chainkd.XPub `json:"xpub"`
- Xprv chainkd.XPrv `json:"xprv"`
+ Xpub chainkd.XPub `json:"xpub"`
+ Xprv chainkd.XPrv `json:"xprv"`
+ Address string `json:"address,omitempty"`
}
func (a *API) createXKeys(ctx context.Context) Response {
if err != nil {
return NewErrorResponse(err)
}
- return NewSuccessResponse(&keyPair{Xprv: xprv, Xpub: xpub})
+
+ pubHash := crypto.Ripemd160(xpub.PublicKey())
+
+ address, err := common.NewAddressWitnessPubKeyHash(pubHash, &consensus.ActiveNetParams)
+ if err != nil {
+ return NewErrorResponse(err)
+ }
+
+ return NewSuccessResponse(&keyPair{Xprv: xprv, Xpub: xpub, Address: address.EncodeAddress()})
}