Skip to content

Commit 35e8a69

Browse files
committed
Made cryptor scheme configurable during cryptor init
1 parent 5c5b99d commit 35e8a69

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,16 @@ try MasterkeyFile.changePassphrase(masterkeyFileData: masterkeyFileData, oldPass
121121

122122
#### Constructor
123123

124-
Create a cryptor by providing a masterkey.
124+
Create a cryptor by providing a masterkey and a scheme (e.g., `.sivGcm`).
125125

126126
```swift
127127
let masterkey = ...
128-
let cryptor = Cryptor(masterkey: masterkey)
128+
let scheme = ...
129+
let cryptor = Cryptor(masterkey: masterkey, scheme: scheme)
129130
```
130131

132+
Make sure that the data you're working with is compatible with the provided scheme.
133+
131134
#### Path Encryption and Decryption
132135

133136
Encrypt the directory ID in order to determine the encrypted directory URL.

Sources/CryptomatorCryptoLib/Cryptor.swift

+13-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public extension InputStream {
4949
}
5050
}
5151

52+
public enum CryptorScheme {
53+
case sivCtrMac
54+
case sivGcm
55+
}
56+
5257
public enum FileNameEncoding: String {
5358
case base64url
5459
case base32
@@ -81,9 +86,15 @@ public class Cryptor {
8186
self.contentCryptor = contentCryptor
8287
}
8388

84-
public convenience init(masterkey: Masterkey) {
89+
public convenience init(masterkey: Masterkey, scheme: CryptorScheme) {
8590
let cryptoSupport = CryptoSupport()
86-
let contentCryptor = CtrThenHmacContentCryptor(macKey: masterkey.macMasterKey, cryptoSupport: cryptoSupport)
91+
let contentCryptor: ContentCryptor
92+
switch scheme {
93+
case .sivCtrMac:
94+
contentCryptor = CtrThenHmacContentCryptor(macKey: masterkey.macMasterKey, cryptoSupport: cryptoSupport)
95+
case .sivGcm:
96+
contentCryptor = GcmContentCryptor()
97+
}
8798
self.init(masterkey: masterkey, cryptoSupport: cryptoSupport, contentCryptor: contentCryptor)
8899
}
89100

0 commit comments

Comments
 (0)