ソースを参照

calculateHash is non-failing operation. Fixes #664

Marcin Krzyzanowski 6 年 前
コミット
b3614c3307
2 ファイル変更8 行追加13 行削除
  1. 5 8
      Sources/CryptoSwift/HMAC.swift
  2. 3 5
      Sources/CryptoSwift/PKCS/PBKDF1.swift

+ 5 - 8
Sources/CryptoSwift/HMAC.swift

@@ -37,7 +37,7 @@ public final class HMAC: Authenticator {
             }
         }
 
-        func calculateHash(_ bytes: Array<UInt8>) -> Array<UInt8>? {
+        func calculateHash(_ bytes: Array<UInt8>) -> Array<UInt8> {
             switch self {
             case .sha1:
                 return Digest.sha1(bytes)
@@ -72,9 +72,8 @@ public final class HMAC: Authenticator {
         self.key = key
 
         if key.count > variant.blockSize() {
-            if let hash = variant.calculateHash(key) {
-                self.key = hash
-            }
+            let hash = variant.calculateHash(key)
+            self.key = hash
         }
 
         if key.count < variant.blockSize() {
@@ -94,10 +93,8 @@ public final class HMAC: Authenticator {
             ipad[idx] = key[idx] ^ ipad[idx]
         }
 
-        guard let ipadAndMessageHash = variant.calculateHash(ipad + bytes),
-            let result = variant.calculateHash(opad + ipadAndMessageHash) else {
-            throw Error.authenticateError
-        }
+        let ipadAndMessageHash = variant.calculateHash(ipad + bytes)
+        let result = variant.calculateHash(opad + ipadAndMessageHash)
 
         // return Array(result[0..<10]) // 80 bits
         return result

+ 3 - 5
Sources/CryptoSwift/PKCS/PBKDF1.swift

@@ -37,7 +37,7 @@ public extension PKCS5 {
                 }
             }
 
-            fileprivate func calculateHash(_ bytes: Array<UInt8>) -> Array<UInt8>? {
+            fileprivate func calculateHash(_ bytes: Array<UInt8>) -> Array<UInt8> {
                 switch self {
                 case .sha1:
                     return Digest.sha1(bytes)
@@ -67,9 +67,7 @@ public extension PKCS5 {
                 throw Error.derivedKeyTooLong
             }
 
-            guard let t1 = variant.calculateHash(password + salt) else {
-                throw Error.invalidInput
-            }
+            let t1 = variant.calculateHash(password + salt)
 
             self.iterations = iterations
             self.variant = variant
@@ -81,7 +79,7 @@ public extension PKCS5 {
         public func calculate() -> Array<UInt8> {
             var t = t1
             for _ in 2...iterations {
-                t = variant.calculateHash(t)!
+                t = variant.calculateHash(t)
             }
             return Array(t[0..<self.keyLength])
         }