-
Notifications
You must be signed in to change notification settings - Fork 2
/
keyTpAdapter.go
47 lines (42 loc) · 1.34 KB
/
keyTpAdapter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package adapter
import (
"errors"
ethsecp256k12 "github.com/fibonacci-chain/fbc/app/crypto/ethsecp256k1"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/types"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/ibc-tx/internal/ethsecp256k1"
secp256k1 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/ibc-tx/internal/secp256k1"
LagacyPubKey "github.com/fibonacci-chain/fbc/libs/tendermint/crypto"
secp256k12 "github.com/fibonacci-chain/fbc/libs/tendermint/crypto/secp256k1"
)
func LagacyPubkey2ProtoBuffPubkey(pubKey LagacyPubKey.PubKey) types.PubKey {
var pubKeyPB types.PubKey
switch v := pubKey.(type) {
case ethsecp256k12.PubKey:
ethsecp256k1Pk := ðsecp256k1.PubKey{
Key: v,
}
pubKeyPB = ethsecp256k1Pk
case secp256k12.PubKeySecp256k1:
secp256k1Pk := &secp256k1.PubKey{
Key: v[:],
}
pubKeyPB = secp256k1Pk
default:
panic("not supported key algo")
}
return pubKeyPB
}
func ProtoBufPubkey2LagacyPubkey(pkData types.PubKey) (LagacyPubKey.PubKey, error) {
var pubkey LagacyPubKey.PubKey
switch v := pkData.(type) {
case *ethsecp256k1.PubKey:
pubkey = ethsecp256k12.PubKey(v.Bytes())
case *secp256k1.PubKey:
secpPk := &secp256k12.PubKeySecp256k1{}
copy(secpPk[:], v.Bytes())
pubkey = (LagacyPubKey.PubKey)(secpPk)
default:
return pubkey, errors.New("not support pub key type")
}
return pubkey, nil
}