Auth module passes all tests
This commit is contained in:
+67
-67
@@ -1,77 +1,77 @@
|
||||
package auth
|
||||
|
||||
// import (
|
||||
// "fmt"
|
||||
// "testing"
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
// crypto "github.com/tendermint/go-crypto"
|
||||
// cmn "github.com/tendermint/tmlibs/common"
|
||||
crypto "github.com/tendermint/go-crypto"
|
||||
cmn "github.com/tendermint/tmlibs/common"
|
||||
|
||||
// sdk "github.com/cosmos/cosmos-sdk"
|
||||
// "github.com/cosmos/cosmos-sdk/state"
|
||||
// "github.com/cosmos/cosmos-sdk/util"
|
||||
// )
|
||||
sdk "github.com/cosmos/cosmos-sdk"
|
||||
"github.com/cosmos/cosmos-sdk/state"
|
||||
"github.com/cosmos/cosmos-sdk/util"
|
||||
)
|
||||
|
||||
// func makeSignTx() sdk.Tx {
|
||||
// key := crypto.GenPrivKeyEd25519().Wrap()
|
||||
// payload := cmn.RandBytes(32)
|
||||
// tx := NewSig(util.RawTx{payload})
|
||||
// Sign(tx, key)
|
||||
// return tx.Wrap()
|
||||
// }
|
||||
func makeSignTx() interface{} {
|
||||
key := crypto.GenPrivKeyEd25519().Wrap()
|
||||
payload := cmn.RandBytes(32)
|
||||
tx := newSingle(payload)
|
||||
Sign(tx, key)
|
||||
return tx
|
||||
}
|
||||
|
||||
// func makeMultiSignTx(cnt int) sdk.Tx {
|
||||
// payload := cmn.RandBytes(32)
|
||||
// tx := NewMulti(util.RawTx{payload})
|
||||
// for i := 0; i < cnt; i++ {
|
||||
// key := crypto.GenPrivKeyEd25519().Wrap()
|
||||
// Sign(tx, key)
|
||||
// }
|
||||
// return tx.Wrap()
|
||||
// }
|
||||
func makeMultiSignTx(cnt int) interface{} {
|
||||
payload := cmn.RandBytes(32)
|
||||
tx := newMulti(payload)
|
||||
for i := 0; i < cnt; i++ {
|
||||
key := crypto.GenPrivKeyEd25519().Wrap()
|
||||
Sign(tx, key)
|
||||
}
|
||||
return tx
|
||||
}
|
||||
|
||||
// func makeHandler() sdk.Handler {
|
||||
// return sdk.ChainDecorators(
|
||||
// Signatures{},
|
||||
// ).WithHandler(
|
||||
// util.OKHandler{},
|
||||
// )
|
||||
// }
|
||||
func makeHandler() sdk.Handler {
|
||||
return sdk.ChainDecorators(
|
||||
Signatures{},
|
||||
).WithHandler(
|
||||
util.OKHandler{},
|
||||
)
|
||||
}
|
||||
|
||||
// func BenchmarkCheckOneSig(b *testing.B) {
|
||||
// tx := makeSignTx()
|
||||
// h := makeHandler()
|
||||
// store := state.NewMemKVStore()
|
||||
// for i := 1; i <= b.N; i++ {
|
||||
// ctx := util.MockContext("foo", 100)
|
||||
// _, err := h.DeliverTx(ctx, store, tx)
|
||||
// // never should error
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
func BenchmarkCheckOneSig(b *testing.B) {
|
||||
tx := makeSignTx()
|
||||
h := makeHandler()
|
||||
store := state.NewMemKVStore()
|
||||
for i := 1; i <= b.N; i++ {
|
||||
ctx := util.MockContext("foo", 100)
|
||||
_, err := h.DeliverTx(ctx, store, tx)
|
||||
// never should error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// func BenchmarkCheckMultiSig(b *testing.B) {
|
||||
// sigs := []int{1, 3, 8, 20}
|
||||
// for _, cnt := range sigs {
|
||||
// label := fmt.Sprintf("%dsigs", cnt)
|
||||
// b.Run(label, func(sub *testing.B) {
|
||||
// benchmarkCheckMultiSig(sub, cnt)
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
func BenchmarkCheckMultiSig(b *testing.B) {
|
||||
sigs := []int{1, 3, 8, 20}
|
||||
for _, cnt := range sigs {
|
||||
label := fmt.Sprintf("%dsigs", cnt)
|
||||
b.Run(label, func(sub *testing.B) {
|
||||
benchmarkCheckMultiSig(sub, cnt)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// func benchmarkCheckMultiSig(b *testing.B, cnt int) {
|
||||
// tx := makeMultiSignTx(cnt)
|
||||
// h := makeHandler()
|
||||
// store := state.NewMemKVStore()
|
||||
// for i := 1; i <= b.N; i++ {
|
||||
// ctx := util.MockContext("foo", 100)
|
||||
// _, err := h.DeliverTx(ctx, store, tx)
|
||||
// // never should error
|
||||
// if err != nil {
|
||||
// panic(err)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
func benchmarkCheckMultiSig(b *testing.B, cnt int) {
|
||||
tx := makeMultiSignTx(cnt)
|
||||
h := makeHandler()
|
||||
store := state.NewMemKVStore()
|
||||
for i := 1; i <= b.N; i++ {
|
||||
ctx := util.MockContext("foo", 100)
|
||||
_, err := h.DeliverTx(ctx, store, tx)
|
||||
// never should error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,14 +67,14 @@ func TestSignatureChecks(t *testing.T) {
|
||||
if tc.useMultiSig {
|
||||
mtx := newMulti(raw)
|
||||
for _, k := range tc.keys {
|
||||
err := Sign(mtx.SignBytes(), k, mtx.NamedSigs)
|
||||
err := Sign(mtx, k)
|
||||
assert.Nil(err, "%d: %+v", i, err)
|
||||
}
|
||||
tx = mtx
|
||||
} else {
|
||||
otx := newSingle(raw)
|
||||
for _, k := range tc.keys {
|
||||
err := Sign(otx.SignBytes(), k, otx.NamedSig)
|
||||
err := Sign(otx, k)
|
||||
assert.Nil(err, "%d: %+v", i, err)
|
||||
}
|
||||
tx = otx
|
||||
|
||||
+4
-2
@@ -15,6 +15,7 @@ package auth
|
||||
|
||||
import (
|
||||
crypto "github.com/tendermint/go-crypto"
|
||||
"github.com/tendermint/go-crypto/keys"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/errors"
|
||||
)
|
||||
@@ -163,8 +164,9 @@ func (s *NamedSigs) Signers(signBytes []byte) (res []crypto.PubKey, err error) {
|
||||
|
||||
// Sign - sign the given data with private key and store
|
||||
// the result in the credentil
|
||||
func Sign(msg []byte, key crypto.PrivKey, cred Credential) error {
|
||||
func Sign(signable keys.Signable, key crypto.PrivKey) error {
|
||||
msg := signable.SignBytes()
|
||||
pubkey := key.PubKey()
|
||||
sig := key.Sign(msg)
|
||||
return cred.Sign(pubkey, sig)
|
||||
return signable.Sign(pubkey, sig)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user