From e93af07b61a8397e4e107ace20eae2055be05170 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 3 May 2021 10:29:08 +1000 Subject: [PATCH] Fix ONS --- SessionSnodeKit/Snode.swift | 3 +-- SessionSnodeKit/SnodeAPI.swift | 32 ++++++++++++++++++-------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/SessionSnodeKit/Snode.swift b/SessionSnodeKit/Snode.swift index 1c62215b5..011aa6399 100644 --- a/SessionSnodeKit/Snode.swift +++ b/SessionSnodeKit/Snode.swift @@ -13,9 +13,8 @@ public final class Snode : NSObject, NSCoding { // NSObject/NSCoding conformance public enum Method : String { case getSwarm = "get_snodes_for_pubkey" case getMessages = "retrieve" - case getSessionIDForONSName = "get_lns_mapping" case sendMessage = "store" - case getAllSnodes = "oxend_request" + case oxenDaemonRPCCall = "oxend_request" } public struct KeySet { diff --git a/SessionSnodeKit/SnodeAPI.swift b/SessionSnodeKit/SnodeAPI.swift index 7130a12ee..50f3f7351 100644 --- a/SessionSnodeKit/SnodeAPI.swift +++ b/SessionSnodeKit/SnodeAPI.swift @@ -194,7 +194,7 @@ public final class SnodeAPI : NSObject { ] ] ] - return invoke(.getAllSnodes, on: snode, parameters: parameters).map2 { rawResponse in + return invoke(.oxenDaemonRPCCall, on: snode, parameters: parameters).map2 { rawResponse in guard let json = rawResponse as? JSON, let intermediate = json["result"] as? JSON, let rawSnodes = intermediate["service_node_states"] as? [JSON] else { throw Error.snodePoolUpdatingFailed @@ -285,11 +285,17 @@ public final class SnodeAPI : NSObject { guard let nameHash = sodium.genericHash.hash(message: nameAsData), let base64EncodedNameHash = nameHash.toBase64() else { return Promise(error: Error.hashingFailed) } // Ask 3 different snodes for the Session ID associated with the given name hash - let parameters: [String:Any] = [ "name_hash" : base64EncodedNameHash ] + let parameters: [String:Any] = [ + "endpoint" : "ons_resolve", + "params" : [ + "type" : 0, // type 0 means Session + "name_hash" : base64EncodedNameHash + ] + ] let promises = (0..= (sessionIDByteCount + sodium.aead.xchacha20poly1305ietf.ABytes + nonceSize) else { // Should always be equal in practice + guard ciphertext.count >= (sessionIDByteCount + sodium.aead.xchacha20poly1305ietf.ABytes) else { // Should always be equal in practice return seal.reject(Error.decryptionFailed) } - let nonce = [UInt8](encryptedBlob[(encryptedBlob.endIndex - nonceSize) ..< encryptedBlob.endIndex]) - let ciphertext = [UInt8](encryptedBlob[0 ..< (encryptedBlob.endIndex - nonceSize)]) guard let sessionIDAsData = sodium.aead.xchacha20poly1305ietf.decrypt(authenticatedCipherText: ciphertext, secretKey: key, nonce: nonce) else { return seal.reject(Error.decryptionFailed) }