From 0106afa298caf7bf1c69b79ff8ca884b8a27b12d Mon Sep 17 00:00:00 2001 From: Cassandra Heart Date: Mon, 4 Nov 2024 20:16:11 -0600 Subject: [PATCH] also here --- .../intrinsics/token/token_execution_engine.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/node/execution/intrinsics/token/token_execution_engine.go b/node/execution/intrinsics/token/token_execution_engine.go index c4c9486..d0ad925 100644 --- a/node/execution/intrinsics/token/token_execution_engine.go +++ b/node/execution/intrinsics/token/token_execution_engine.go @@ -13,6 +13,7 @@ import ( "github.com/iden3/go-iden3-crypto/poseidon" pcrypto "github.com/libp2p/go-libp2p/core/crypto" + "github.com/libp2p/go-libp2p/core/peer" "github.com/pkg/errors" "go.uber.org/zap" "google.golang.org/protobuf/proto" @@ -807,10 +808,23 @@ func (e *TokenExecutionEngine) getAddressFromSignature( if sig.PublicKey == nil || sig.PublicKey.KeyValue == nil { return nil, errors.New("invalid data") } - addrBI, err := poseidon.HashBytes(sig.PublicKey.KeyValue) + + pk, err := pcrypto.UnmarshalEd448PublicKey( + sig.PublicKey.KeyValue, + ) if err != nil { return nil, errors.Wrap(err, "get address from signature") } - return addrBI.FillBytes(make([]byte, 32)), nil + peerId, err := peer.IDFromPublicKey(pk) + if err != nil { + return nil, errors.Wrap(err, "get address from signature") + } + + altAddr, err := poseidon.HashBytes([]byte(peerId)) + if err != nil { + return nil, errors.Wrap(err, "get address from signature") + } + + return altAddr.FillBytes(make([]byte, 32)), nil }