Skip to content

Commit

Permalink
better checking of dht keys
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Jeromy <why@ipfs.io>
  • Loading branch information
whyrusleeping committed Jul 5, 2016
1 parent 3e54fb4 commit f67f39a
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion routing/record/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ package record
import (
"bytes"
"errors"
"fmt"

key "github.com/ipfs/go-ipfs/blocks/key"
path "github.com/ipfs/go-ipfs/path"
pb "github.com/ipfs/go-ipfs/routing/dht/pb"
mh "github.com/jbenet/go-multihash"
ci "gx/ipfs/QmUWER4r4qMvaCnX5zREcfyiWN7cXN9g3a7fkRqNz8qWPP/go-libp2p-crypto"
u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
)
Expand Down Expand Up @@ -73,7 +75,7 @@ func (v Validator) IsSigned(k key.Key) (bool, error) {
// verifies that the passed in record value is the PublicKey
// that matches the passed in key.
func ValidatePublicKeyRecord(k key.Key, val []byte) error {
if len(k) != 38 {
if len(k) < 5 {
return errors.New("invalid public key record key")
}

Expand All @@ -83,6 +85,9 @@ func ValidatePublicKeyRecord(k key.Key, val []byte) error {
}

keyhash := []byte(k[4:])
if _, err := mh.Cast(keyhash); err != nil {
return fmt.Errorf("key did not contain valid multihash: %s", err)
}

pkh := u.Hash(val)
if !bytes.Equal(keyhash, pkh) {
Expand Down

0 comments on commit f67f39a

Please sign in to comment.