diff --git a/pass/Models/QRKeyScanner.swift b/pass/Models/QRKeyScanner.swift index 18be904..950204c 100644 --- a/pass/Models/QRKeyScanner.swift +++ b/pass/Models/QRKeyScanner.swift @@ -64,7 +64,7 @@ struct QRKeyScanner { // Update the list of scanned segments and return. segments.append(segment) - if scannedKey.contains(keyType.footerStart), scannedKey.hasSuffix(keyType.footerEnd) { + if scannedKey.contains(keyType.footerStart), scannedKey.trimmed.hasSuffix(keyType.footerEnd) { return .completed } previousResult = .scanned(segments.count) diff --git a/passTests/Models/QRKeyScannerTest.swift b/passTests/Models/QRKeyScannerTest.swift index 867e304..21153c7 100644 --- a/passTests/Models/QRKeyScannerTest.swift +++ b/passTests/Models/QRKeyScannerTest.swift @@ -14,6 +14,7 @@ class QRKeyScannerTest: XCTestCase { private let header = "-----BEGIN PGP PUBLIC KEY BLOCK-----" private let body = "key body" private let footer = "-----END PGP PUBLIC KEY BLOCK-----" + private let footerWithNewline = "-----END PGP PUBLIC KEY BLOCK-----\n" private let privateHeader = "-----BEGIN PGP PRIVATE KEY BLOCK-----" private var scanner = QRKeyScanner(keyType: .pgpPublic) @@ -55,4 +56,10 @@ class QRKeyScannerTest: XCTestCase { XCTAssertEqual(scanner.add(segment: "BLOCK-----"), .completed) XCTAssertEqual(scanner.scannedKey, header + footer) } + + func testFooterWithNewlien() { + XCTAssertEqual(scanner.add(segment: header), .scanned(1)) + XCTAssertEqual(scanner.add(segment: footerWithNewline), .completed) + XCTAssertEqual(scanner.scannedKey, header + footerWithNewline) + } }