mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-08 23:08:27 +00:00
lib/protocol: Serialize the all zeroes device ID to the empty string
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3734
This commit is contained in:
parent
562d2f67a6
commit
95c738ea28
@ -21,7 +21,10 @@ const DeviceIDLength = 32
|
|||||||
type DeviceID [DeviceIDLength]byte
|
type DeviceID [DeviceIDLength]byte
|
||||||
type ShortID uint64
|
type ShortID uint64
|
||||||
|
|
||||||
var LocalDeviceID = DeviceID{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
|
var (
|
||||||
|
LocalDeviceID = DeviceID{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
|
||||||
|
EmptyDeviceID = DeviceID{ /* all zeroes */ }
|
||||||
|
)
|
||||||
|
|
||||||
// NewDeviceID generates a new device ID from the raw bytes of a certificate
|
// NewDeviceID generates a new device ID from the raw bytes of a certificate
|
||||||
func NewDeviceID(rawCert []byte) DeviceID {
|
func NewDeviceID(rawCert []byte) DeviceID {
|
||||||
@ -49,6 +52,9 @@ func DeviceIDFromBytes(bs []byte) DeviceID {
|
|||||||
|
|
||||||
// String returns the canonical string representation of the device ID
|
// String returns the canonical string representation of the device ID
|
||||||
func (n DeviceID) String() string {
|
func (n DeviceID) String() string {
|
||||||
|
if n == EmptyDeviceID {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
id := base32.StdEncoding.EncodeToString(n[:])
|
id := base32.StdEncoding.EncodeToString(n[:])
|
||||||
id = strings.Trim(id, "=")
|
id = strings.Trim(id, "=")
|
||||||
id, err := luhnify(id)
|
id, err := luhnify(id)
|
||||||
@ -96,6 +102,9 @@ func (n *DeviceID) UnmarshalText(bs []byte) error {
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
switch len(id) {
|
switch len(id) {
|
||||||
|
case 0:
|
||||||
|
*n = EmptyDeviceID
|
||||||
|
return nil
|
||||||
case 56:
|
case 56:
|
||||||
// New style, with check digits
|
// New style, with check digits
|
||||||
id, err = unluhnify(id)
|
id, err = unluhnify(id)
|
||||||
|
@ -37,7 +37,8 @@ var validateCases = []struct {
|
|||||||
s string
|
s string
|
||||||
ok bool
|
ok bool
|
||||||
}{
|
}{
|
||||||
{"", false},
|
{"", true}, // Empty device ID, all zeroes
|
||||||
|
{"a", false},
|
||||||
{"P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2", true},
|
{"P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2", true},
|
||||||
{"P56IOI7-MZJNU2-IQGDREY-DM2MGT-MGL3BXN-PQ6W5B-TBBZ4TJ-XZWICQ", true},
|
{"P56IOI7-MZJNU2-IQGDREY-DM2MGT-MGL3BXN-PQ6W5B-TBBZ4TJ-XZWICQ", true},
|
||||||
{"P56IOI7 MZJNU2I QGDREYD M2MGTMGL 3BXNPQ6W 5BTB BZ4T JXZWICQ", true},
|
{"P56IOI7 MZJNU2I QGDREYD M2MGTMGL 3BXNPQ6W 5BTB BZ4T JXZWICQ", true},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user