Эх сурвалжийг харах

Replace NSData with [UInt8] for ChaCha20

Marcin Krzyżanowski 10 жил өмнө
parent
commit
6608bca201

+ 2 - 6
CryptoSwift/ChaCha20.swift

@@ -24,7 +24,7 @@ public class ChaCha20 {
         }
     }
     
-    init?(key:NSData, iv:NSData) {
+    init?(key:[UInt8], iv:[UInt8]) {
         if let c = contextSetup(iv: iv, key: key) {
             context = c
         } else {
@@ -73,11 +73,7 @@ public class ChaCha20 {
 
         return output;
     }
-    
-    private func contextSetup(# iv:NSData, key:NSData) -> Context? {
-        return contextSetup(iv: iv.bytes(), key: key.bytes())
-    }
-    
+        
     private func contextSetup(# iv:[UInt8], key:[UInt8]) -> Context? {
         var ctx = Context()
         let kbits = key.count * 8

+ 3 - 14
CryptoSwift/Cipher.swift

@@ -17,7 +17,7 @@ public enum Cipher {
     
     :returns: Value of Cipher
     */
-    case ChaCha20(key: NSData, iv: NSData)
+    case ChaCha20(key: [UInt8], iv: [UInt8])
     /**
     AES
     
@@ -65,22 +65,11 @@ public enum Cipher {
         }
     }
 
-    static public func randomIV(key: NSData) -> [UInt8] {
+    static public func randomIV(blockSize:Int) -> [UInt8] {
         var randomIV:[UInt8] = [UInt8]();
-        for (var i = 0; i < key.length; i++) {
+        for (var i = 0; i < blockSize; i++) {
             randomIV.append(UInt8(truncatingBitPattern: arc4random_uniform(256)));
         }
         return randomIV
     }
-    
-    /**
-    Convenience function to generate Initialization Vector (IV) for given key. Use this function to generate IV for you key.
-    
-    :param: key Given key
-    
-    :returns: Random IV
-    */
-    static public func randomIV(key: NSData) -> NSData {
-        return NSData.withBytes(randomIV(key))
-    }
 }

+ 1 - 4
CryptoSwiftTests/ChaCha20Tests.swift

@@ -46,14 +46,11 @@ class ChaCha20Tests: XCTestCase {
         ]
         
         for (var idx = 0; idx < keys.count; idx++) {
-            let keyData = NSData(bytes: keys[idx], length: keys[idx].count)
-            let ivData = NSData(bytes: ivs[idx], length: ivs[idx].count)
             
             let expectedHex = expectedHexes[idx]
-            //println(countElements(expectedHex) / 2);
             let message = [UInt8](count: (count(expectedHex) / 2), repeatedValue: 0)
             
-            let setup = (key: keyData, iv: ivData)
+            let setup = (key: keys[idx], iv: ivs[idx])
             var encrypted = Cipher.ChaCha20(setup).encrypt(message)
             XCTAssert(encrypted != nil, "missing")
             if let encrypted = encrypted {