From c68c5f441f17bc7d7116d53b988078ba1c41aa94 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 24 May 2023 09:27:13 +0200 Subject: [PATCH] refactor: use peer.Decode for now to validate IPNS component --- gateway/handler.go | 4 ++-- ipns/name.go | 37 ------------------------------------- ipns/name_test.go | 28 ---------------------------- 3 files changed, 2 insertions(+), 67 deletions(-) delete mode 100644 ipns/name.go delete mode 100644 ipns/name_test.go diff --git a/gateway/handler.go b/gateway/handler.go index f1e4db352..f996f5648 100644 --- a/gateway/handler.go +++ b/gateway/handler.go @@ -17,7 +17,6 @@ import ( "time" ipath "github.com/ipfs/boxo/coreiface/path" - "github.com/ipfs/boxo/ipns" cid "github.com/ipfs/go-cid" logging "github.com/ipfs/go-log" "github.com/libp2p/go-libp2p/core/peer" @@ -380,7 +379,8 @@ func (i *handler) isTrustlessRequest(contentPath ipath.Path, responseFormat stri } // Only valid, cryptographically verifiable IPNS record names (no DNSLink on trustless gateways) - if _, err := ipns.Decode(pathComponents[1]); err != nil { + // TODO: replace with ipns.Name as part of https://github.com/ipfs/specs/issues/376 + if _, err := peer.Decode(pathComponents[1]); err != nil { return false } diff --git a/ipns/name.go b/ipns/name.go deleted file mode 100644 index 425692cb7..000000000 --- a/ipns/name.go +++ /dev/null @@ -1,37 +0,0 @@ -package ipns - -import ( - "strings" - - "github.com/libp2p/go-libp2p/core/peer" - "github.com/multiformats/go-multibase" -) - -// Name is an IPNS name -type Name string - -func (n Name) String() string { - return string(n) -} - -func Decode(str string) (Name, error) { - // Trim prefix and remove possible trailing slash before validating. - str = strings.TrimPrefix(str, "/ipns/") - str = strings.TrimSuffix(str, "/") - - id, err := peer.Decode(str) - if err != nil { - return "", err - } - - // Converts peer ID to a CIDv1. - cid := peer.ToCid(id) - - // Convert to base36 case-insensitive representation. - name, err := cid.StringOfBase(multibase.Base36) - if err != nil { - return "", err - } - - return Name("/ipns/" + name), nil -} diff --git a/ipns/name_test.go b/ipns/name_test.go deleted file mode 100644 index 6be1f1087..000000000 --- a/ipns/name_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package ipns - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDecode(t *testing.T) { - for _, test := range []struct { - input string - output string - }{ - {"12D3KooWRBy97UB99e3J6hiPesre1MZeuNQvfan4gBziswrRJsNK", "/ipns/k51qzi5uqu5dlvj2baxnqndepeb86cbk3ng7n3i46uzyxzyqj2xjonzllnv0v8"}, - {"12D3KooWRBy97UB99e3J6hiPesre1MZeuNQvfan4gBziswrRJsNK/", "/ipns/k51qzi5uqu5dlvj2baxnqndepeb86cbk3ng7n3i46uzyxzyqj2xjonzllnv0v8"}, - {"/ipns/12D3KooWRBy97UB99e3J6hiPesre1MZeuNQvfan4gBziswrRJsNK", "/ipns/k51qzi5uqu5dlvj2baxnqndepeb86cbk3ng7n3i46uzyxzyqj2xjonzllnv0v8"}, - {"/ipns/12D3KooWRBy97UB99e3J6hiPesre1MZeuNQvfan4gBziswrRJsNK/", "/ipns/k51qzi5uqu5dlvj2baxnqndepeb86cbk3ng7n3i46uzyxzyqj2xjonzllnv0v8"}, - {"/ipns/QmcJM7PRfkSbcM5cf1QugM5R37TLRKyJGgBEhXjLTB8uA2", "/ipns/k2k4r8ol4m8kkcqz509c1rcjwunebj02gcnm5excpx842u736nja8ger"}, - {"/ipns/k2k4r8ol4m8kkcqz509c1rcjwunebj02gcnm5excpx842u736nja8ger", "/ipns/k2k4r8ol4m8kkcqz509c1rcjwunebj02gcnm5excpx842u736nja8ger"}, - } { - n, err := Decode(test.input) - assert.Nil(t, err) - assert.Equal(t, n.String(), test.output) - } - - _, err := Decode("invalid") - assert.NotNil(t, err) -}