mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-02 04:33:01 +02:00
- Clients now subscribe to peer status changes. - The server manages and maintains these subscriptions. - Replaced raw string peer IDs with a custom peer ID type for better type safety and clarity.
32 lines
681 B
Go
32 lines
681 B
Go
package messages
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"encoding/base64"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
prefixLength = 4
|
|
peerIDSize = prefixLength + sha256.Size
|
|
)
|
|
|
|
var (
|
|
prefix = []byte("sha-") // 4 bytes
|
|
)
|
|
|
|
type PeerID [peerIDSize]byte
|
|
|
|
func (p PeerID) String() string {
|
|
return fmt.Sprintf("%s%s", p[:prefixLength], base64.StdEncoding.EncodeToString(p[prefixLength:]))
|
|
}
|
|
|
|
// HashID generates a sha256 hash from the peerID and returns the hash and the human-readable string
|
|
func HashID(peerID string) PeerID {
|
|
idHash := sha256.Sum256([]byte(peerID))
|
|
var prefixedHash [peerIDSize]byte
|
|
copy(prefixedHash[:prefixLength], prefix)
|
|
copy(prefixedHash[prefixLength:], idHash[:])
|
|
return prefixedHash
|
|
}
|