From 6ae506d7e68635bcf03fa64ba82c4025eaf9f6b8 Mon Sep 17 00:00:00 2001 From: Danny Moesch Date: Fri, 21 Aug 2020 23:47:10 +0200 Subject: [PATCH] Fix #407: Search all scanned segments for the key block footer --- pass/Models/QRKeyScanner.swift | 2 +- passTests/Models/QRKeyScannerTest.swift | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pass/Models/QRKeyScanner.swift b/pass/Models/QRKeyScanner.swift index fbb74b2..18be904 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 segment.starts(with: keyType.footerStart), segment.hasSuffix(keyType.footerEnd) { + if scannedKey.contains(keyType.footerStart), scannedKey.hasSuffix(keyType.footerEnd) { return .completed } previousResult = .scanned(segments.count) diff --git a/passTests/Models/QRKeyScannerTest.swift b/passTests/Models/QRKeyScannerTest.swift index a497799..ba8478e 100644 --- a/passTests/Models/QRKeyScannerTest.swift +++ b/passTests/Models/QRKeyScannerTest.swift @@ -48,4 +48,11 @@ class QRKeyScannerTest: XCTestCase { XCTAssertEqual(scanner.add(segment: body), .lookingForStart) XCTAssertTrue(scanner.scannedKey.isEmpty) } + + func testFooterSplitIntoDifferentSegments() { + XCTAssertEqual(scanner.add(segment: header), .scanned(1)) + XCTAssertEqual(scanner.add(segment: "-----END PGP PUBLIC KEY "), .scanned(2)) + XCTAssertEqual(scanner.add(segment: "BLOCK-----"), .completed) + XCTAssertEqual(scanner.scannedKey, header + footer) + } }