RedMadRobot / DAO

MIT License
74 stars 25 forks source link

Добавил ключ шифрования в настройки #5

Closed ntimonin closed 6 years ago

vani2 commented 6 years ago

Так-с, а где вы ключ потом используете?

ntimonin commented 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)")
}
ntimonin commented 6 years ago

А ключ мы создадим, передадим в config и положим в keychain.

jeorge-taflanidi commented 6 years ago

Думаю, Ваня имеет в виду, что ключ в структуре с конфигурацией просто хранится, нигде библиотекой не используется, никуда не передаётся.

ntimonin commented 6 years ago

На сколько я понимаю Configuration у самого Realm - это просто структура. Внутри RealmDAO мы записываем созданный RealmConfiguration как дефолтную конфигурацию

Realm.Configuration.defaultConfiguration = configuration

Соответсвенно если название ключа (encryptionKey) в структурах совпадает - у нас включается шифрование.

vani2 commented 6 years ago

Немного не так: есть наш тип DAO.RealmConfiguration. Есть тип Realm.Configuration. Сейчас в RealmDAO мы берем стандартную конфигурацию и перезаписываем некоторые поля из конфигурации DAO. Короче говоря, нужно ключ шифрования явно установить аналогично другим свойствам из конфигурации.

ntimonin commented 6 years ago

Поправил