Browse Source

Cryptor type

Marcin Krzyzanowski 7 years ago
parent
commit
2e29a0ca25

+ 3 - 2
Sources/CryptoSwift/AES.Cryptors.swift

@@ -28,7 +28,7 @@ extension AES: Cryptors {
 // MARK: Encryptor
 
 extension AES {
-    public struct Encryptor: Updatable {
+    public struct Encryptor: Cryptor, Updatable {
         private var worker: BlockModeWorker
         private let padding: Padding
         // Accumulated bytes. Not all processed bytes.
@@ -40,6 +40,7 @@ extension AES {
             worker = try aes.blockMode.worker(blockSize: AES.blockSize, cipherOperation: aes.encrypt)
         }
 
+        // MARK: Updatable
         public mutating func update(withBytes bytes: ArraySlice<UInt8>, isLast: Bool = false) throws -> Array<UInt8> {
             accumulated += bytes
 
@@ -70,7 +71,7 @@ extension AES {
 // MARK: Decryptor
 
 extension AES {
-    public struct Decryptor: RandomAccessCryptor {
+    public struct Decryptor: RandomAccessCryptor, Updatable {
         private var worker: BlockModeWorker
         private let padding: Padding
         private var accumulated = Array<UInt8>()

+ 2 - 2
Sources/CryptoSwift/ChaCha20.swift

@@ -254,7 +254,7 @@ extension ChaCha20: Cipher {
 // MARK: Encryptor
 
 extension ChaCha20 {
-    public struct Encryptor: Updatable {
+    public struct Encryptor: Cryptor, Updatable {
         private var accumulated = Array<UInt8>()
         private let chacha: ChaCha20
 
@@ -281,7 +281,7 @@ extension ChaCha20 {
 // MARK: Decryptor
 
 extension ChaCha20 {
-    public struct Decryptor: Updatable {
+    public struct Decryptor: Cryptor, Updatable {
         private var accumulated = Array<UInt8>()
 
         private var offset: Int = 0

+ 4 - 4
Sources/CryptoSwift/Cryptors.swift

@@ -21,14 +21,14 @@ import Glibc
 
 /// Worker cryptor/decryptor of `Updatable` types
 public protocol Cryptors: class {
-    associatedtype EncryptorType: Updatable
-    associatedtype DecryptorType: Updatable
+    associatedtype Encryptor: Cryptor
+    associatedtype Decryptor: Cryptor
 
     /// Cryptor suitable for encryption
-    func makeEncryptor() throws -> EncryptorType
+    func makeEncryptor() throws -> Encryptor
 
     /// Cryptor suitable for decryption
-    func makeDecryptor() throws -> DecryptorType
+    func makeDecryptor() throws -> Decryptor
 
     /// Generate array of random bytes. Helper function.
     static func randomIV(_ blockSize: Int) -> Array<UInt8>

+ 3 - 1
Sources/CryptoSwift/RandomAccessCryptor.swift

@@ -14,7 +14,9 @@
 //
 
 /// Random access cryptor
-public protocol RandomAccessCryptor: Updatable {
+public protocol Cryptor { }
+
+public protocol RandomAccessCryptor: Cryptor {
     /// Seek to position in file, if block mode allows random access.
     ///
     /// - parameter to: new value of counter