Sfoglia il codice sorgente

Blowfish minimum key size is 5. Fixes #496

Marcin Krzyżanowski 7 anni fa
parent
commit
637c8377c9

+ 1 - 1
Sources/CryptoSwift/AES.Cryptors.swift

@@ -87,7 +87,7 @@ extension AES {
                 self.worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.decrypt)
             }
 
-            self.paddingRequired = try aes.blockMode.options.contains(.paddingRequired)
+            self.paddingRequired = aes.blockMode.options.contains(.paddingRequired)
         }
 
         public mutating func update(withBytes bytes: ArraySlice<UInt8>, isLast: Bool = false) throws -> Array<UInt8> {

+ 1 - 1
Sources/CryptoSwift/Blowfish.swift

@@ -313,7 +313,7 @@ public final class Blowfish {
     ]
 
     public init(key: Array<UInt8>, iv: Array<UInt8>? = nil, blockMode: BlockMode = .CBC(iv: Array<UInt8>(repeating: 0, count: Blowfish.blockSize)), padding: Padding) throws {
-        precondition(key.count >= 8 && key.count <= 56)
+        precondition(key.count >= 5 && key.count <= 56)
 
         self.blockMode = blockMode
         self.padding = padding

+ 7 - 5
Tests/CryptoSwiftTests/BlowfishTests.swift

@@ -167,9 +167,9 @@ class BlowfishTests: XCTestCase {
     }
 
     func testCBCZeroPadding() {
-        let key = Array<UInt8>.init(hex: "0123456789ABCDEFF0E1D2C3B4A59687")
-        let iv = Array<UInt8>.init(hex: "FEDCBA9876543210")
-        let input = Array<UInt8>.init(hex: "37363534333231204E6F77206973207468652074696D6520666F722000")
+        let key = Array<UInt8>(hex: "0123456789ABCDEFF0E1D2C3B4A59687")
+        let iv = Array<UInt8>(hex: "FEDCBA9876543210")
+        let input = Array<UInt8>(hex: "37363534333231204E6F77206973207468652074696D6520666F722000")
         XCTAssertEqual(try Blowfish(key: key, blockMode: .CBC(iv: iv), padding: .zeroPadding).encrypt(input), Array<UInt8>(hex: "6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC"))
     }
 
@@ -192,8 +192,10 @@ class BlowfishTests: XCTestCase {
     func testDecryptCFB415() {
         do {
             let plaintext = Array("secret12".utf8)
-            let encrypted = try Blowfish(key: Array("passwordpassword".utf8), blockMode: .CFB(iv: Array("12345678".utf8)), padding: .noPadding).encrypt(plaintext)
-            let decrypted = try Blowfish(key: Array("passwordpassword".utf8), blockMode: .CFB(iv: Array("12345678".utf8)), padding: .noPadding).decrypt(encrypted)
+            let key = Array("passwordpassword".utf8)
+            let iv = Array("12345678".utf8)
+            let encrypted = try Blowfish(key: key, blockMode: .CFB(iv: iv), padding: .noPadding).encrypt(plaintext)
+            let decrypted = try Blowfish(key: key, blockMode: .CFB(iv: iv), padding: .noPadding).decrypt(encrypted)
             XCTAssertEqual(plaintext, decrypted)
         } catch {
             XCTFail(error.localizedDescription)