diff --git a/app/src/main/java/com/futo/platformplayer/casting/ChomecastCastingDevice.kt b/app/src/main/java/com/futo/platformplayer/casting/ChomecastCastingDevice.kt index 6102a846..eb254b6d 100644 --- a/app/src/main/java/com/futo/platformplayer/casting/ChomecastCastingDevice.kt +++ b/app/src/main/java/com/futo/platformplayer/casting/ChomecastCastingDevice.kt @@ -5,7 +5,7 @@ import android.util.Log import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.getConnectedSocket import com.futo.platformplayer.models.CastingDeviceInfo -import com.futo.platformplayer.protos.DeviceAuthMessageOuterClass +import com.futo.platformplayer.protos.ChromeCast import com.futo.platformplayer.toHexString import com.futo.platformplayer.toInetAddress import kotlinx.coroutines.* @@ -374,7 +374,7 @@ class ChromecastCastingDevice : CastingDevice { //TODO: In the future perhaps this size-1 will cause issues, why is there a 0 on the end? val messageBytes = buffer.sliceArray(IntRange(0, size - 1)); Log.d(TAG, "Received $size bytes: ${messageBytes.toHexString()}."); - val message = DeviceAuthMessageOuterClass.CastMessage.parseFrom(messageBytes); + val message = ChromeCast.CastMessage.parseFrom(messageBytes); if (message.namespace != "urn:x-cast:com.google.cast.tp.heartbeat") { Logger.i(TAG, "Received message: $message"); } @@ -427,12 +427,12 @@ class ChromecastCastingDevice : CastingDevice { private fun sendChannelMessage(sourceId: String, destinationId: String, namespace: String, json: String) { try { - val castMessage = DeviceAuthMessageOuterClass.CastMessage.newBuilder() - .setProtocolVersion(DeviceAuthMessageOuterClass.CastMessage.ProtocolVersion.CASTV2_1_0) + val castMessage = ChromeCast.CastMessage.newBuilder() + .setProtocolVersion(ChromeCast.CastMessage.ProtocolVersion.CASTV2_1_0) .setSourceId(sourceId) .setDestinationId(destinationId) .setNamespace(namespace) - .setPayloadType(DeviceAuthMessageOuterClass.CastMessage.PayloadType.STRING) + .setPayloadType(ChromeCast.CastMessage.PayloadType.STRING) .setPayloadUtf8(json) .build(); @@ -446,8 +446,8 @@ class ChromecastCastingDevice : CastingDevice { } } - private fun handleMessage(message: DeviceAuthMessageOuterClass.CastMessage) { - if (message.payloadType == DeviceAuthMessageOuterClass.CastMessage.PayloadType.STRING) { + private fun handleMessage(message: ChromeCast.CastMessage) { + if (message.payloadType == ChromeCast.CastMessage.PayloadType.STRING) { val jsonObject = JSONObject(message.payloadUtf8); val type = jsonObject.getString("type"); if (type == "RECEIVER_STATUS") { diff --git a/app/src/main/proto/com/futo/platformplayer/protos/ChromeCast.proto b/app/src/main/proto/com/futo/platformplayer/protos/ChromeCast.proto new file mode 100644 index 00000000..395c4889 --- /dev/null +++ b/app/src/main/proto/com/futo/platformplayer/protos/ChromeCast.proto @@ -0,0 +1,18 @@ +syntax = "proto2"; +option optimize_for = LITE_RUNTIME; +package com.futo.platformplayer.protos; + +message CastMessage { + enum ProtocolVersion { CASTV2_1_0 = 0; } + required ProtocolVersion protocol_version = 1; + required string source_id = 2; + required string destination_id = 3; + required string namespace = 4; + enum PayloadType { + STRING = 0; + BINARY = 1; + } + required PayloadType payload_type = 5; + optional string payload_utf8 = 6; + optional bytes payload_binary = 7; +} \ No newline at end of file diff --git a/app/src/main/proto/com/futo/platformplayer/protos/DeviceAuthMessage.proto b/app/src/main/proto/com/futo/platformplayer/protos/DeviceAuthMessage.proto deleted file mode 100644 index f6b090d9..00000000 --- a/app/src/main/proto/com/futo/platformplayer/protos/DeviceAuthMessage.proto +++ /dev/null @@ -1,82 +0,0 @@ -syntax = "proto2"; -option optimize_for = LITE_RUNTIME; -package com.futo.platformplayer.protos; - -message CastMessage { - // Always pass a version of the protocol for future compatibility - // requirements. - enum ProtocolVersion { CASTV2_1_0 = 0; } - required ProtocolVersion protocol_version = 1; - // source and destination ids identify the origin and destination of the - // message. They are used to route messages between endpoints that share a - // device-to-device channel. - // - // For messages between applications: - // - The sender application id is a unique identifier generated on behalf of - // the sender application. - // - The receiver id is always the the session id for the application. - // - // For messages to or from the sender or receiver platform, the special ids - // 'sender-0' and 'receiver-0' can be used. - // - // For messages intended for all endpoints using a given channel, the - // wildcard destination_id '*' can be used. - required string source_id = 2; - required string destination_id = 3; - // This is the core multiplexing key. All messages are sent on a namespace - // and endpoints sharing a channel listen on one or more namespaces. The - // namespace defines the protocol and semantics of the message. - required string namespace = 4; - // Encoding and payload info follows. - // What type of data do we have in this message. - enum PayloadType { - STRING = 0; - BINARY = 1; - } - required PayloadType payload_type = 5; - // Depending on payload_type, exactly one of the following optional fields - // will always be set. - optional string payload_utf8 = 6; - optional bytes payload_binary = 7; -} -enum SignatureAlgorithm { - UNSPECIFIED = 0; - RSASSA_PKCS1v15 = 1; - RSASSA_PSS = 2; -} -enum HashAlgorithm { - SHA1 = 0; - SHA256 = 1; -} -// Messages for authentication protocol between a sender and a receiver. -message AuthChallenge { - optional SignatureAlgorithm signature_algorithm = 1 - [default = RSASSA_PKCS1v15]; - optional bytes sender_nonce = 2; - optional HashAlgorithm hash_algorithm = 3 [default = SHA1]; -} -message AuthResponse { - required bytes signature = 1; - required bytes client_auth_certificate = 2; - repeated bytes intermediate_certificate = 3; - optional SignatureAlgorithm signature_algorithm = 4 - [default = RSASSA_PKCS1v15]; - optional bytes sender_nonce = 5; - optional HashAlgorithm hash_algorithm = 6 [default = SHA1]; - optional bytes crl = 7; -} -message AuthError { - enum ErrorType { - INTERNAL_ERROR = 0; - NO_TLS = 1; // The underlying connection is not TLS - SIGNATURE_ALGORITHM_UNAVAILABLE = 2; - } - required ErrorType error_type = 1; -} -message DeviceAuthMessage { - // Request fields - optional AuthChallenge challenge = 1; - // Response fields - optional AuthResponse response = 2; - optional AuthError error = 3; -} diff --git a/app/src/stable/assets/sources/odysee b/app/src/stable/assets/sources/odysee index 6ea20460..a05feced 160000 --- a/app/src/stable/assets/sources/odysee +++ b/app/src/stable/assets/sources/odysee @@ -1 +1 @@ -Subproject commit 6ea204605d4a27867702d7b024237506904d53c7 +Subproject commit a05feced804a5b664c75568162a7b3fa5562d8b3 diff --git a/app/src/unstable/assets/sources/odysee b/app/src/unstable/assets/sources/odysee index 6ea20460..a05feced 160000 --- a/app/src/unstable/assets/sources/odysee +++ b/app/src/unstable/assets/sources/odysee @@ -1 +1 @@ -Subproject commit 6ea204605d4a27867702d7b024237506904d53c7 +Subproject commit a05feced804a5b664c75568162a7b3fa5562d8b3