From 778e00dd7cc2b7970742f061cffc87dd570e6bfa Mon Sep 17 00:00:00 2001 From: Johannes Bosecker Date: Sun, 10 Jan 2021 12:49:40 +0100 Subject: [PATCH] Fixes decoding (#23) --- Sources/ExtrasBase64/Chromium.swift | 2 +- Tests/ExtrasBase64Tests/ChromiumTests.swift | 24 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Sources/ExtrasBase64/Chromium.swift b/Sources/ExtrasBase64/Chromium.swift index e099285..78f7a58 100644 --- a/Sources/ExtrasBase64/Chromium.swift +++ b/Sources/ExtrasBase64/Chromium.swift @@ -341,7 +341,7 @@ extension Base64 { } // inIndex is the first index in the last chunk - let inIndex = fullchunks > 1 ? fullchunks * 4 : 0 + let inIndex = fullchunks * 4 let a0 = inBuffer[inIndex] let a1 = inBuffer[inIndex + 1] var a2: UInt8? diff --git a/Tests/ExtrasBase64Tests/ChromiumTests.swift b/Tests/ExtrasBase64Tests/ChromiumTests.swift index d6bc50b..2367ddc 100644 --- a/Tests/ExtrasBase64Tests/ChromiumTests.swift +++ b/Tests/ExtrasBase64Tests/ChromiumTests.swift @@ -86,6 +86,30 @@ class ChromiumTests: XCTestCase { } } + func testBase64DecodingOneTwoThreeFour() { + let base64 = "AQIDBA==" + let bytes: [UInt8] = [1, 2, 3, 4] + + XCTAssertEqual(Base64.encodeString(bytes: bytes), base64) + XCTAssertEqual(try Base64.decode(string: base64), bytes) + } + + func testBase64DecodingOneTwoThreeFourFive() { + let base64 = "AQIDBAU=" + let bytes: [UInt8] = [1, 2, 3, 4, 5] + + XCTAssertEqual(Base64.encodeString(bytes: bytes), base64) + XCTAssertEqual(try Base64.decode(string: base64), bytes) + } + + func testBase64DecodingOneTwoThreeFourFiveSix() { + let base64 = "AQIDBAUG" + let bytes: [UInt8] = [1, 2, 3, 4, 5, 6] + + XCTAssertEqual(Base64.encodeString(bytes: bytes), base64) + XCTAssertEqual(try Base64.decode(string: base64), bytes) + } + func testBase64DecodingWithInvalidLength() { XCTAssertThrowsError(_ = try Base64.decode(bytes: "AAAAA".utf8)) { error in XCTAssertEqual(error as? DecodingError, .invalidLength)