|
@@ -51,24 +51,28 @@ extension NCEndToEndMetadata {
|
|
|
var decryptedMetadataKey: Data?
|
|
|
var keyChecksums: [String] = []
|
|
|
|
|
|
- if let user = NCManageDatabase.shared.getE2EUsersV2(account: account, ocIdServerUrl: ocIdServerUrl, userId: userId) {
|
|
|
- encryptedMetadataKey = user.encryptedMetadataKey
|
|
|
- metadataKey = user.metadataKey
|
|
|
- } else {
|
|
|
- guard let keyGenerated = NCEndToEndEncryption.sharedManager()?.generateKey() as? Data else { return (nil, nil) }
|
|
|
- decryptedMetadataKey = keyGenerated
|
|
|
- metadataKey = keyGenerated.base64EncodedString()
|
|
|
- guard let metadataKeyEncrypted = NCEndToEndEncryption.sharedManager().encryptAsymmetricData(keyGenerated, privateKey: privateKey) else { return (nil, nil) }
|
|
|
- encryptedMetadataKey = metadataKeyEncrypted.base64EncodedString()
|
|
|
-
|
|
|
- NCManageDatabase.shared.addE2EUsersV2(account: account, serverUrl: serverUrl, ocIdServerUrl: ocIdServerUrl, userId: userId, certificate: certificate, encryptedFiledropKey: nil, encryptedMetadataKey: encryptedMetadataKey, decryptedFiledropKey: nil, decryptedMetadataKey: decryptedMetadataKey, filedropKey: nil, metadataKey: metadataKey)
|
|
|
+ if isDirectoryTop {
|
|
|
+
|
|
|
+ if let user = NCManageDatabase.shared.getE2EUsersV2(account: account, ocIdServerUrl: ocIdServerUrl, userId: userId) {
|
|
|
+ encryptedMetadataKey = user.encryptedMetadataKey
|
|
|
+ metadataKey = user.metadataKey
|
|
|
+ } else {
|
|
|
+ guard let keyGenerated = NCEndToEndEncryption.sharedManager()?.generateKey() as? Data else { return (nil, nil) }
|
|
|
+ decryptedMetadataKey = keyGenerated
|
|
|
+ metadataKey = keyGenerated.base64EncodedString()
|
|
|
+ guard let metadataKeyEncrypted = NCEndToEndEncryption.sharedManager().encryptAsymmetricData(keyGenerated, privateKey: privateKey) else { return (nil, nil) }
|
|
|
+ encryptedMetadataKey = metadataKeyEncrypted.base64EncodedString()
|
|
|
+
|
|
|
+ NCManageDatabase.shared.addE2EUsersV2(account: account, serverUrl: serverUrl, ocIdServerUrl: ocIdServerUrl, userId: userId, certificate: certificate, encryptedFiledropKey: nil, encryptedMetadataKey: encryptedMetadataKey, decryptedFiledropKey: nil, decryptedMetadataKey: decryptedMetadataKey, filedropKey: nil, metadataKey: metadataKey)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Create E2eeV20.Users
|
|
|
- if let e2eUsers = NCManageDatabase.shared.getE2EUsersV2(account: account, ocIdServerUrl: ocIdServerUrl) {
|
|
|
+ if let e2eUsers = NCManageDatabase.shared.getE2EUsersV2(account: account, ocIdServerUrl: directoryTop.ocId) {
|
|
|
for user in e2eUsers {
|
|
|
- usersCodable.append(E2eeV20.Users(userId: user.userId, certificate: user.certificate, encryptedMetadataKey: user.encryptedMetadataKey, encryptedFiledropKey: user.encryptedFiledropKey))
|
|
|
-
|
|
|
+ if isDirectoryTop {
|
|
|
+ usersCodable.append(E2eeV20.Users(userId: user.userId, certificate: user.certificate, encryptedMetadataKey: user.encryptedMetadataKey, encryptedFiledropKey: user.encryptedFiledropKey))
|
|
|
+ }
|
|
|
if let hash = NCEndToEndEncryption.sharedManager().createSHA256(user.decryptedMetadataKey) {
|
|
|
keyChecksums.append(hash)
|
|
|
}
|