mv-experiment #1
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue