Skip to content

Commit

Permalink
add support for certhash
Browse files Browse the repository at this point in the history
  • Loading branch information
marten-seemann committed Apr 6, 2022
1 parent 78bec7a commit a07348a
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ go 1.17

require (
github.com/ipfs/go-cid v0.0.7
github.com/multiformats/go-multibase v0.0.3
github.com/multiformats/go-multihash v0.0.14
github.com/multiformats/go-varint v0.0.6
github.com/stretchr/testify v1.7.0
Expand All @@ -16,7 +17,6 @@ require (
github.com/mr-tron/base58 v1.1.3 // indirect
github.com/multiformats/go-base32 v0.0.3 // indirect
github.com/multiformats/go-base36 v0.1.0 // indirect
github.com/multiformats/go-multibase v0.0.3 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 // indirect
Expand Down
2 changes: 2 additions & 0 deletions multiaddr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ func TestConstructFails(t *testing.T) {
"/ip4/127.0.0.1/tcp/jfodsajfidosajfoidsa",
"/ip4/127.0.0.1/tcp",
"/ip4/127.0.0.1/quic/1234",
"/ip4/127.0.0.1/udp/1234/quic/webtransport/certhash",
"/ip4/127.0.0.1/ipfs",
"/ip4/127.0.0.1/ipfs/tcp",
"/ip4/127.0.0.1/p2p",
Expand Down Expand Up @@ -154,6 +155,7 @@ func TestConstructSucceeds(t *testing.T) {
"/ip4/127.0.0.1/tcp/1234/",
"/ip4/127.0.0.1/udp/1234/quic",
"/ip4/127.0.0.1/udp/1234/quic/webtransport",
"/ip4/127.0.0.1/udp/1234/quic/webtransport/certhash/zt1Zv2yaZ",
"/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC",
"/ip4/127.0.0.1/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC/tcp/1234",
"/ip4/127.0.0.1/ipfs/k2k4r8oqamigqdo6o7hsbfwd45y70oyynp98usk7zmyfrzpqxh1pohl7",
Expand Down
9 changes: 9 additions & 0 deletions protocols.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const (
P_IP6ZONE = 0x002A
P_QUIC = 0x01CC
P_WEBTRANSPORT = 0x01D1
P_CERTHASH = 0x01D2
P_SCTP = 0x0084
P_CIRCUIT = 0x0122
P_UDT = 0x012D
Expand Down Expand Up @@ -176,6 +177,13 @@ var (
Code: P_WEBTRANSPORT,
VCode: CodeToVarint(P_WEBTRANSPORT),
}
protoCERTHASH = Protocol{
Name: "certhash",
Code: P_CERTHASH,
VCode: CodeToVarint(P_CERTHASH),
Size: LengthPrefixedVarSize,
Transcoder: TranscoderCertHash,
}
protoHTTP = Protocol{
Name: "http",
Code: P_HTTP,
Expand Down Expand Up @@ -255,6 +263,7 @@ func init() {
protoUDT,
protoQUIC,
protoWEBTRANSPORT,
protoCERTHASH,
protoHTTP,
protoHTTPS,
protoP2P,
Expand Down
12 changes: 12 additions & 0 deletions transcoders.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"strings"

"github.com/ipfs/go-cid"
"github.com/multiformats/go-multibase"
mh "github.com/multiformats/go-multihash"
)

Expand Down Expand Up @@ -357,3 +358,14 @@ func dnsStB(s string) ([]byte, error) {
func dnsBtS(b []byte) (string, error) {
return string(b), nil
}

var TranscoderCertHash = NewTranscoderFromFunctions(certHashStB, certHashBtS, nil)

func certHashStB(s string) ([]byte, error) {
_, data, err := multibase.Decode(s)
return data, err
}

func certHashBtS(b []byte) (string, error) {
return multibase.Encode(multibase.Base58BTC, b)
}

0 comments on commit a07348a

Please sign in to comment.