|
|
@ -27,7 +27,7 @@ internal extension OnionRequestAPI {
|
|
|
|
let plaintext = try encode(ciphertext: payloadAsData, json: [ "headers" : "" ])
|
|
|
|
let plaintext = try encode(ciphertext: payloadAsData, json: [ "headers" : "" ])
|
|
|
|
let result = try AESGCM.encrypt(plaintext, for: snodeX25519PublicKey)
|
|
|
|
let result = try AESGCM.encrypt(plaintext, for: snodeX25519PublicKey)
|
|
|
|
seal.fulfill(result)
|
|
|
|
seal.fulfill(result)
|
|
|
|
case .server(_, _, let serverX25519PublicKey):
|
|
|
|
case .server(_, _, let serverX25519PublicKey, _, _):
|
|
|
|
let plaintext = try JSONSerialization.data(withJSONObject: payload, options: [ .fragmentsAllowed ])
|
|
|
|
let plaintext = try JSONSerialization.data(withJSONObject: payload, options: [ .fragmentsAllowed ])
|
|
|
|
let result = try AESGCM.encrypt(plaintext, for: serverX25519PublicKey)
|
|
|
|
let result = try AESGCM.encrypt(plaintext, for: serverX25519PublicKey)
|
|
|
|
seal.fulfill(result)
|
|
|
|
seal.fulfill(result)
|
|
|
@ -48,9 +48,9 @@ internal extension OnionRequestAPI {
|
|
|
|
case .snode(let snode):
|
|
|
|
case .snode(let snode):
|
|
|
|
let snodeED25519PublicKey = snode.publicKeySet.ed25519Key
|
|
|
|
let snodeED25519PublicKey = snode.publicKeySet.ed25519Key
|
|
|
|
parameters = [ "destination" : snodeED25519PublicKey ]
|
|
|
|
parameters = [ "destination" : snodeED25519PublicKey ]
|
|
|
|
case .server(let host, let target, _):
|
|
|
|
case .server(let host, let target, _, let scheme, let port):
|
|
|
|
// FIXME: protocol and port shouldn't be hardcoded
|
|
|
|
parameters = [ "host" : host, "target" : target, "method" : "POST", "protocol" : scheme ?? "https" ]
|
|
|
|
parameters = [ "host" : host, "target" : target, "method" : "POST", "protocol" : "http", "port" : 80 ]
|
|
|
|
if let port = port { parameters["port"] = port }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
parameters["ephemeral_key"] = previousEncryptionResult.ephemeralPublicKey.toHexString()
|
|
|
|
parameters["ephemeral_key"] = previousEncryptionResult.ephemeralPublicKey.toHexString()
|
|
|
|
let x25519PublicKey: String
|
|
|
|
let x25519PublicKey: String
|
|
|
@ -58,7 +58,7 @@ internal extension OnionRequestAPI {
|
|
|
|
case .snode(let snode):
|
|
|
|
case .snode(let snode):
|
|
|
|
let snodeX25519PublicKey = snode.publicKeySet.x25519Key
|
|
|
|
let snodeX25519PublicKey = snode.publicKeySet.x25519Key
|
|
|
|
x25519PublicKey = snodeX25519PublicKey
|
|
|
|
x25519PublicKey = snodeX25519PublicKey
|
|
|
|
case .server(_, _, let serverX25519PublicKey):
|
|
|
|
case .server(_, _, let serverX25519PublicKey, _, _):
|
|
|
|
x25519PublicKey = serverX25519PublicKey
|
|
|
|
x25519PublicKey = serverX25519PublicKey
|
|
|
|
}
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|