Closed ntimonin closed 6 years ago
Он используется чтобы создавать шифрованные инстансы рилма. Как у них в примере:
// Generate 64 bytes of random data to serve as the encryption key
let key = NSMutableData(length: 64)!
SecRandomCopyBytes(kSecRandomDefault, key.length, UnsafeMutablePointer<UInt8>(key.mutableBytes))
// Set up a new Realm Configuration object with the key
let encryptionConfig = Realm.Configuration(encryptionKey: key)
// Attempt to open the encrypted Realm
do {
let realm = try Realm(configuration: encryptionConfig)
// At this point, the key was accepted and we can use the Realm as normal
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")
}
catch let error as NSError {
// If the encryption key was not accepted, the error will state that the database was invalid
fatalError("Error opening Realm: \(error)")
}
А ключ мы создадим, передадим в config и положим в keychain.
Думаю, Ваня имеет в виду, что ключ в структуре с конфигурацией просто хранится, нигде библиотекой не используется, никуда не передаётся.
На сколько я понимаю Configuration у самого Realm - это просто структура. Внутри RealmDAO мы записываем созданный RealmConfiguration как дефолтную конфигурацию
Realm.Configuration.defaultConfiguration = configuration
Соответсвенно если название ключа (encryptionKey) в структурах совпадает - у нас включается шифрование.
Немного не так: есть наш тип DAO.RealmConfiguration
. Есть тип Realm.Configuration
. Сейчас в RealmDAO
мы берем стандартную конфигурацию и перезаписываем некоторые поля из конфигурации DAO
. Короче говоря, нужно ключ шифрования явно установить аналогично другим свойствам из конфигурации.
Поправил
Так-с, а где вы ключ потом используете?