Skip to content
This repository has been archived by the owner on Dec 7, 2019. It is now read-only.

Commit

Permalink
Merge pull request #42 from libp2p/fix/re-enable-inlining
Browse files Browse the repository at this point in the history
fix: re-enable peer ID inlining but make it configurable
  • Loading branch information
Stebalien committed Feb 7, 2019
2 parents f5c52ce + 876cefc commit e96065a
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,25 @@ import (
var (
// ErrEmptyPeerID is an error for empty peer ID.
ErrEmptyPeerID = errors.New("empty peer ID")
// ErrNoPublickKey is an error for peer IDs that don't embed public keys
// ErrNoPublicKey is an error for peer IDs that don't embed public keys
ErrNoPublicKey = errors.New("public key is not embedded in peer ID")
)

// AdvancedEnableInlining enables automatically inlining keys shorter than
// 42 bytes into the peer ID (using the "identity" multihash function).
//
// WARNING: This flag will likely be set to false in the future and eventually
// be removed in favor of using a hash function specified by the key itself.
// See: https://github.com/libp2p/specs/issues/138
//
// DO NOT change this flag unless you know what you're doing.
//
// This currently defaults to true for backwards compatibility but will likely
// be set to false by default when an upgrade path is determined.
var AdvancedEnableInlining = true

const maxInlineKeyLength = 42

// ID is a libp2p peer identity.
type ID string

Expand Down Expand Up @@ -141,7 +156,11 @@ func IDFromPublicKey(pk ic.PubKey) (ID, error) {
if err != nil {
return "", err
}
hash, _ := mh.Sum(b, mh.SHA2_256, -1)
var alg uint64 = mh.SHA2_256
if AdvancedEnableInlining && len(b) <= maxInlineKeyLength {
alg = mh.ID
}
hash, _ := mh.Sum(b, alg, -1)
return ID(hash), nil
}

Expand Down

0 comments on commit e96065a

Please sign in to comment.