PeerID 2/n: Count and hex conversion done with bare (#705)

This commit is contained in:
Islam
2025-10-01 13:33:39 +02:00
committed by GitHub
parent ea72212f66
commit 8d938e8518
2 changed files with 19 additions and 3 deletions
+3 -3
View File
@@ -153,7 +153,7 @@ extension PeerID {
/// Short routing IDs (exact 16-hex)
var isShort: Bool {
id.count == Constants.hexIDLength && Data(hexString: id) != nil
bare.count == Constants.hexIDLength && Data(hexString: bare) != nil
}
/// Full Noise key hex (exact 64-hex)
@@ -163,8 +163,8 @@ extension PeerID {
/// Full Noise key (exact 64-hex) as Data
var noiseKey: Data? {
guard id.count == Constants.maxIDLength else { return nil }
return Data(hexString: id)
guard bare.count == Constants.maxIDLength else { return nil }
return Data(hexString: bare)
}
}
+16
View File
@@ -206,6 +206,18 @@ final class PeerIDTests: XCTestCase {
XCTAssertEqual(short.prefix, .empty)
}
func test_toShort_whenNoiseKeyExists_withNoisePrefix() {
let peerID = PeerID(str: "noise:" + hex64)
let short = peerID.toShort()
// `toShort()` should derive 16-hex peerID
let expected = Data(hexString: hex64)!.sha256Fingerprint().prefix(16)
XCTAssertEqual(short.bare, String(expected))
XCTAssertEqual(short.prefix, .empty)
XCTAssertEqual(peerID.prefix, .noise)
}
func test_toShort_whenNoNoiseKey() {
let peerID = PeerID(str: "some_random_key")
let short = peerID.toShort()
@@ -340,6 +352,10 @@ final class PeerIDTests: XCTestCase {
XCTAssertTrue(peerID.isNoiseKeyHex)
XCTAssertNotNil(peerID.noiseKey)
let prefixedPeerID = PeerID(str: "noise:" + hex64)
XCTAssertTrue(prefixedPeerID.isNoiseKeyHex)
XCTAssertNotNil(prefixedPeerID.noiseKey)
let bad = String(repeating: "z", count: 64) // invalid hex
let badPeerID = PeerID(str: bad)
XCTAssertFalse(badPeerID.isNoiseKeyHex)