From 3389a94f0e0c55d398c4cc682678ea90f67680f3 Mon Sep 17 00:00:00 2001 From: Joe Heck Date: Mon, 25 Mar 2024 13:07:18 -0700 Subject: [PATCH] fix bs58 to not use checksum version for encode/decode --- .../automerge-repo/Sources/AutomergeRepo/DocumentId.swift | 4 ++-- .../Sources/AutomergeRepo/extensions/UUID+bs58String.swift | 2 +- .../Tests/AutomergeRepoTests/DocumentIdTests.swift | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Packages/automerge-repo/Sources/AutomergeRepo/DocumentId.swift b/Packages/automerge-repo/Sources/AutomergeRepo/DocumentId.swift index 9a262b97..4b5627f4 100644 --- a/Packages/automerge-repo/Sources/AutomergeRepo/DocumentId.swift +++ b/Packages/automerge-repo/Sources/AutomergeRepo/DocumentId.swift @@ -26,7 +26,7 @@ public struct DocumentId: Sendable, Hashable, Comparable, Identifiable { guard let id else { return nil } - guard let uint_array = Base58.base58CheckDecode(id) else { + guard let uint_array = Base58.base58Decode(id) else { return nil } if uint_array.count != 16 { @@ -38,7 +38,7 @@ public struct DocumentId: Sendable, Hashable, Comparable, Identifiable { /// Creates a document identifier from a string. /// - Parameter id: The string to use as a document identifier. public init?(_ id: String) { - guard let uint_array = Base58.base58CheckDecode(id) else { + guard let uint_array = Base58.base58Decode(id) else { return nil } if uint_array.count != 16 { diff --git a/Packages/automerge-repo/Sources/AutomergeRepo/extensions/UUID+bs58String.swift b/Packages/automerge-repo/Sources/AutomergeRepo/extensions/UUID+bs58String.swift index 0d63db2e..fcf0dda0 100644 --- a/Packages/automerge-repo/Sources/AutomergeRepo/extensions/UUID+bs58String.swift +++ b/Packages/automerge-repo/Sources/AutomergeRepo/extensions/UUID+bs58String.swift @@ -27,6 +27,6 @@ public extension UUID { /// The contents of UUID as a BS58 encoded string. var bs58String: String { - Base58.base58CheckEncode(self.data.bytes) + Base58.base58Encode(self.data.bytes) } } diff --git a/Packages/automerge-repo/Tests/AutomergeRepoTests/DocumentIdTests.swift b/Packages/automerge-repo/Tests/AutomergeRepoTests/DocumentIdTests.swift index 676487ef..7d1a0360 100644 --- a/Packages/automerge-repo/Tests/AutomergeRepoTests/DocumentIdTests.swift +++ b/Packages/automerge-repo/Tests/AutomergeRepoTests/DocumentIdTests.swift @@ -19,13 +19,19 @@ final class DocumentIdTests: XCTestCase { let id = DocumentId(bs58String) XCTAssertEqual(id?.description, bs58String) + let invalidOptionalString: String? = "SomeRandomNonBS58String" + XCTAssertNil(DocumentId(invalidOptionalString)) + let optionalString: String? = bs58String XCTAssertEqual(DocumentId(optionalString)?.description, bs58String) + + XCTAssertNil(DocumentId(nil)) } func testInvalidTooMuchDataDocumentId() async throws { let tooBig = [UInt8](UUID().data + UUID().data) let bs58StringFromData = Base58.base58Encode(tooBig) + let x = Base58.base58Decode(bs58StringFromData) XCTAssertNil(DocumentId(bs58StringFromData)) let optionalString: String? = bs58StringFromData