Преглед изворни кода

Allow empty password in PBKDF2 (#602)

Alejandro Isaza пре 7 година
родитељ
комит
e0410a82d1
2 измењених фајлова са 5 додато и 1 уклоњено
  1. 1 1
      Sources/CryptoSwift/PKCS/PBKDF2.swift
  2. 4 0
      Tests/Tests/PBKDF.swift

+ 1 - 1
Sources/CryptoSwift/PKCS/PBKDF2.swift

@@ -49,7 +49,7 @@ public extension PKCS5 {
 
             let prf = HMAC(key: password, variant: variant)
 
-            guard iterations > 0 && !password.isEmpty && !salt.isEmpty else {
+            guard iterations > 0 && !salt.isEmpty else {
                 throw Error.invalidInput
             }
 

+ 4 - 0
Tests/Tests/PBKDF.swift

@@ -49,6 +49,10 @@ class PBKDF: XCTestCase {
         // P = "pass\0word", S = "sa\0lt", c = 4096, dkLen = 16
         XCTAssertEqual([0x56, 0xfa, 0x6a, 0xa7, 0x55, 0x48, 0x09, 0x9d, 0xcc, 0x37, 0xd7, 0xf0, 0x34, 0x25, 0xe0, 0xc3],
                        try PKCS5.PBKDF2(password: [0x70, 0x61, 0x73, 0x73, 0x00, 0x77, 0x6f, 0x72, 0x64], salt: [0x73, 0x61, 0x00, 0x6c, 0x74], iterations: 4096, keyLength: 16, variant: .sha1).calculate())
+
+        // P = "", S = "salt", c = 1, dkLen = 20
+        XCTAssertEqual([0xa3, 0x3d, 0xdd, 0xc3, 0x04, 0x78, 0x18, 0x55, 0x15, 0x31, 0x1f, 0x87, 0x52, 0x89, 0x5d, 0x36, 0xea, 0x43, 0x63, 0xa2],
+                       try PKCS5.PBKDF2(password: [], salt: [0x73, 0x61, 0x6c, 0x74], iterations: 1, keyLength: 20, variant: .sha1).calculate())
     }
 
     func testPBKDF2Length() {