Explorar o código

Added HMAC256.

Damian Kołakowski %!s(int64=9) %!d(string=hai) anos
pai
achega
50f3f7d0d5
Modificáronse 2 ficheiros con 17 adicións e 0 borrados
  1. 10 0
      Sources/TLS/HMAC.swift
  2. 7 0
      XCode/SwifterTestsCommon/SwifterTestsHMAC.swift

+ 10 - 0
Sources/TLS/HMAC.swift

@@ -27,6 +27,16 @@ public struct HMAC {
         return sha1(key, message).hex()
     }
     
+    public static func sha256(_ key: [UInt8], _ message: [UInt8]) -> [UInt8] {
+        return generate(key, message, (blockSize: 64, { block in
+            return SHA256.hash(block)
+        }))
+    }
+    
+    public static func sha256(_ key: [UInt8], _ message: [UInt8]) -> String {
+        return sha256(key, message).hex()
+    }
+    
     public static func md5(_ key: [UInt8], _ message: [UInt8]) -> [UInt8] {
         return generate(key, message, (blockSize: 64, { block in
             return MD5.hash(block)

+ 7 - 0
XCode/SwifterTestsCommon/SwifterTestsHMAC.swift

@@ -17,6 +17,13 @@ class SwifterTestsHMAC: XCTestCase {
                        "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9")
     }
     
+    func testSHA256() {
+        
+        XCTAssertEqual(HMAC.sha256([UInt8]("".utf8), [UInt8]("".utf8)), "b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad")
+
+        XCTAssertEqual(HMAC.sha256([UInt8]("key".utf8), [UInt8]("The quick brown fox jumps over the lazy dog".utf8)), "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8")
+    }
+    
     func testMD5() {
         
         XCTAssertEqual(HMAC.md5([UInt8]("".utf8), [UInt8]("".utf8)), "74e6f7298a9c2d168935f58c001bad88")