mv-experiment #1

Merged
fmodf merged 88 commits from mv-experiment into develop 2024-09-03 15:13:59 +00:00
Showing only changes of commit d950c4c907 - Show all commits

View file

@ -54,31 +54,35 @@ final class ClientMartinOMEMO {
String(format: "%02x", byte) String(format: "%02x", byte)
}.joined() }.joined()
guard !OMEMOIdentity.existsFor(account: credentials.bareJid, name: credentials.bareJid, fingerprint: fingerprint) else { return save(address: address, fingerprint: fingerprint, own: true, data: keyPair.serialized())
return false
}
do {
_ = try Database.shared.dbQueue.write { db in
try OMEMOIdentity(
account: credentials.bareJid,
name: address.name,
deviceId: Int(address.deviceId),
fingerprint: fingerprint,
key: keyPair.serialized(),
own: true,
status: MartinOMEMO.IdentityStatus.trustedActive.rawValue
)
.insert(db)
}
return true
} catch {
logIt(.error, "Error storing identity key: \(error.localizedDescription)")
return false
}
} }
return true return true
} }
private func save(address: SignalAddress, fingerprint: String, own: Bool, data: Data) -> Bool {
guard !OMEMOIdentity.existsFor(account: credentials.bareJid, name: address.name, fingerprint: fingerprint) else {
return false
}
do {
_ = try Database.shared.dbQueue.write { db in
try OMEMOIdentity(
account: credentials.bareJid,
name: address.name,
deviceId: Int(address.deviceId),
fingerprint: fingerprint,
key: data,
own: own,
status: MartinOMEMO.IdentityStatus.trustedActive.rawValue
)
.insert(db)
}
return true
} catch {
logIt(.error, "Error storing identity key: \(error.localizedDescription)")
return false
}
}
} }
// MARK: - Session // MARK: - Session
@ -197,13 +201,25 @@ extension ClientMartinOMEMO: SignalIdentityKeyStoreProtocol {
} }
func save(identity: MartinOMEMO.SignalAddress, key: (any MartinOMEMO.SignalIdentityKeyProtocol)?) -> Bool { func save(identity: MartinOMEMO.SignalAddress, key: (any MartinOMEMO.SignalIdentityKeyProtocol)?) -> Bool {
print(identity, key) guard let key = key as SignalIdentityKeyProtocol?, let publicKey = key.publicKey else {
return false return false
}
let fingerprint = publicKey.map { byte -> String in
String(format: "%02x", byte)
}.joined()
return save(address: identity, fingerprint: fingerprint, own: true, data: key.serialized())
} }
func save(identity: MartinOMEMO.SignalAddress, publicKeyData: Data?) -> Bool { func save(identity: MartinOMEMO.SignalAddress, publicKeyData: Data?) -> Bool {
print(identity, publicKeyData) guard let publicKeyData = publicKeyData else {
return false return false
}
let fingerprint = publicKeyData.map { byte -> String in
String(format: "%02x", byte)
}.joined()
return save(address: identity, fingerprint: fingerprint, own: false, data: publicKeyData)
} }
func isTrusted(identity _: MartinOMEMO.SignalAddress, key _: (any MartinOMEMO.SignalIdentityKeyProtocol)?) -> Bool { func isTrusted(identity _: MartinOMEMO.SignalAddress, key _: (any MartinOMEMO.SignalIdentityKeyProtocol)?) -> Bool {