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

Commit

Permalink
fix: re-enable peer ID inlining but make it configurable
Browse files Browse the repository at this point in the history
This should:

1. Unblock OpenBazaar. They were relying on the non-inlining behavior but run a
   forked network so they can set `EnableDeprecatedKeyInlining` to `false`.
2. Unblock Textile. They rely on this feature being *enabled*. Re-enabling it by
   default will give us some time to transition away from it.
  • Loading branch information
Stebalien committed Jan 23, 2019
1 parent f5c52ce commit b46ec42
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,22 @@ 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")
)

// EnableDeprecatedKeyInlining enables automatically inlining keys shorter than
// 42 bytes into the peer ID (using the "identity" multihash function).
//
// DEPRECATED: This feature will eventually be removed in favor of using the
// hash function specified by the key itself.
//
// This currently defaults to true for backwards compatibility but will be set
// to false by default when an upgrade path is determined.
var EnableDeprecatedKeyInlining = true

const maxInlineKeyLength = 42

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

Expand Down Expand Up @@ -141,7 +153,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 EnableDeprecatedKeyInlining && len(b) <= maxInlineKeyLength {
alg = mh.ID
}
hash, _ := mh.Sum(b, alg, -1)
return ID(hash), nil
}

Expand Down

0 comments on commit b46ec42

Please sign in to comment.