Use trusted message port for secure audio transmission 27/250827/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Thu, 24 Dec 2020 10:43:17 +0000 (19:43 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Tue, 5 Jan 2021 04:31:52 +0000 (13:31 +0900)
Change-Id: I48971865acb4750f52c83bebbb46797d859901f2

CMakeLists.txt
packaging/org.tizen.multi-assistant-service.spec
signatures/tv/author-signature.xml [new file with mode: 0755]
signatures/tv/signature1.xml [new file with mode: 0755]
src/service_ipc_dbus.cpp

index bc07553..3d2eee2 100644 (file)
@@ -51,6 +51,9 @@ IF(NOT "${TEST_TYPE}" STREQUAL "none")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_TYPE=${TEST_TYPE}")
 ENDIF()
 
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_TRUSTED_MESSAGE_PORT=${USE_TRUSTED_MESSAGE_PORT}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_TRUSTED_MESSAGE_PORT=${USE_TRUSTED_MESSAGE_PORT}")
+
 # OPTION DEBUG -----------------------------------------------------------------------------------
 IF("${_SDEBUG}" MATCHES "debug")
   MESSAGE("Building in debug mode.")
index d3dee79..d9aa878 100644 (file)
@@ -67,6 +67,11 @@ export LDFLAGS
 %else
        -DTEST_TYPE="none" \
 %endif
+%if "%{?profile}" == "tv"
+       -DUSE_TRUSTED_MESSAGE_PORT="1" \
+%else
+       -DUSE_TRUSTED_MESSAGE_PORT="0" \
+%endif
 
 make %{?jobs:-j%jobs}
 
@@ -74,6 +79,10 @@ make %{?jobs:-j%jobs}
 rm -rf %{buildroot}
 
 %make_install
+%if "%{?profile}" == "tv"
+install -m 0644 signatures/tv/author-signature.xml "%{buildroot}"/%{TZ_SYS_RO_APP}/%{name}
+install -m 0644 signatures/tv/signature1.xml "%{buildroot}"%{TZ_SYS_RO_APP}/%{name}
+%endif
 
 %check
 %if "%{_ctest_enable}" == "true"
@@ -99,6 +108,7 @@ exit 0
 /usr/share/packages/org.tizen.multi-assistant-service.xml
 %{TZ_SYS_RO_SHARE}/multiassistant/libma-wakeup-manager.so
 %{TZ_SYS_RO_SHARE}/multiassistant/libma-dependency-default.so
+%{TZ_SYS_RO_APP}/%{name}/*
 #%{_appdir}/lib/*
 %{_appdir}/bin/*
 #%defattr(-,app,app,-)
diff --git a/signatures/tv/author-signature.xml b/signatures/tv/author-signature.xml
new file mode 100755 (executable)
index 0000000..eaabe07
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="AuthorSignature">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+    <Reference URI="#prop">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+      <DigestValue>e2rGZ9lURQWep1IIbrRk2NYMw5EXlejQt2B0bMLUyoc=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>none</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+MIIDszCCApugAwIBAgIBAjANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJLUjEU
+MBIGA1UECAwLU291dGggS29yZWExDjAMBgNVBAcMBVN1d29uMSYwJAYDVQQKDB1T
+YW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLjELMAkGA1UECwwCVkQxFTATBgNV
+BAMMDFZEIEF1dGhvciBDQTAeFw0xNjAxMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTla
+MIGJMQswCQYDVQQGEwJLUjEOMAwGA1UECBMFU3V3b24xDjAMBgNVBAcTBVN1d29u
+MRwwGgYDVQQKExNTYW1zdW5nIEVsZWN0cm9uaWNzMQswCQYDVQQLEwJWRDEvMC0G
+A1UEAxMmU2Ftc3VuZyBFbGVjdHJvbmljcyBJbi1Ib3VzZSBEZXZlbG9wZXIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4/rIDyVO2TwqRqJKW6M/wJx05
+wag57eFNoSfOd+LQEIz5Py1JTlqi+J6RS8DP98OiTPEqQardeTgq29abrdst5V4d
+k/kHTwNe+5zOlPZICzvIhqXZOImFRbZ3HX+gcJ6x+mvzUom4JaUrJ4fZ6B2Ql8vn
+x833Z3LUytfeKbmwFQu9L31T7ByVAshJu1CsRpaCbp65rq8Fnr1k8mE6r6fLL+se
+sehWt3SDfMeD186hjzYoR73CjaLCkVhRqMzPgkdv07CTDzcEEuv3ALi7R6rpf+Om
+mu/hfTzp6Gkw5oWMDD9SoMKql4gIds/zsW+hJGEQMJfei4T4LP4EAvgA8I/nAgMB
+AAGjLzAtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
+BwMDMA0GCSqGSIb3DQEBCwUAA4IBAQCAoZXvWK6/3l/PvrfAEduEtkmMOkBDIoyb
+G7/3w36/c+MTiVyKrWP81/Q5N2PSh6xBkNKaiFJ0/ww2HC4PZgrplXDgHLLbD1hf
+Y/u/zkXqHuMTMRVzzeMjDm2jdVqWG/4PDf8pYyPK0hO4aA878cs7ZB+zVxls5af0
+auD4fAPu3bQPY5oHUioh8/IqL+oni1Ld6ENIznULLeOnTaq+/scIiqDRQFM8qPDu
+U3yDC8tjLlrnLxl+MU/Whg8DiCtlslOgFrH2ry8bN2/SyyzuDrUx+kP8qs5Nbs7W
+qHA6zqgtiWjCu+6QMKXAwZsfBtnJaVIIN56WWloj8/QEBaiCtmp3</X509Certificate>
+      <X509Certificate>
+MIIDjzCCAnegAwIBAgIBATANBgkqhkiG9w0BAQsFADCBhDELMAkGA1UEBhMCS1Ix
+FDASBgNVBAgMC1NvdXRoIEtvcmVhMQ4wDAYDVQQHDAVTdXdvbjEmMCQGA1UECgwd
+U2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4xCzAJBgNVBAsMAlZEMRowGAYD
+VQQDDBFWRCBBdXRob3IgUm9vdCBDQTAeFw0xNTAxMTMwNTQ5MjBaFw0zMDAxMDkw
+NTQ5MjBaMH8xCzAJBgNVBAYTAktSMRQwEgYDVQQIDAtTb3V0aCBLb3JlYTEOMAwG
+A1UEBwwFU3V3b24xJjAkBgNVBAoMHVNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBM
+dGQuMQswCQYDVQQLDAJWRDEVMBMGA1UEAwwMVkQgQXV0aG9yIENBMIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1SaxfDNXQMUVE/7tqv/XcaAcgQGXMI/o
+o2PF1PH18IBZLnazaA8UOCAooBQO4WJpnj3KouTBmr07bKG6fyJJunzEKsdMNjkS
+6orh2KJUtBteD59YB8rh9nLqwsTGANIEKZd4C9BiB0DQnYk6dw1qtdcCcGuEvNk9
+jtxTuvFQo9r0DRPC16mN+sDd1rsxYq9ixZ8axPIxdECawOEOHzBrmyG/Mo7KTjf0
+sUUfanQXhVuajRBX3i28F4BBXt6ruXpm7MNWgKz6mZryJ5MQLetW1YvXS2PXQXty
+U8vwxqAChfQiAW0yGunP8o/YNAYcu1bIXKc25RP2ReVZi2+53QwdmQIDAQABoxAw
+DjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBB7za36fUCusE6q1Ta
+U+0WPz+dkumosXV03HxzcqqcajP/5OumrikQx7LHbRlvLkIPlPOH8yMMS454XCgs
+wnSoOxgeorzBchDJll9z+rTaQro7rmCN7TS/N9l2rIEaa/RVEQPUeEeE4yDeMf61
+aDhPEhnNdylV0kyS3YLkJd2KBPedsSKkCWUCi2F9g2bHrnuggkEQtOoP2kTBFKvq
+gNAJEzm5q6EdV0Ya0JFescY5oUmtu8ayTc1cBS6OvadXoN/Po62Ir6BOc1JI0tnU
+AUlOmJ+Ku5ZRJCrL80ozpbcvz6JU+Xefs4e/uHpmxHSolvHnzTGm866k6JZhj0ug
+deAD</X509Certificate>
+    </X509Data>
+  </KeyInfo>
+  <Object Id="prop">
+    <SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties">
+      <SignatureProperty Id="profile" Target="#AuthorSignature">
+        <dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"/>
+      </SignatureProperty>
+      <SignatureProperty Id="role" Target="#AuthorSignature">
+        <dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-author"/>
+      </SignatureProperty>
+      <SignatureProperty Id="identifier" Target="#AuthorSignature">
+        <dsp:Identifier/>
+      </SignatureProperty>
+    </SignatureProperties>
+  </Object>
+</Signature>
diff --git a/signatures/tv/signature1.xml b/signatures/tv/signature1.xml
new file mode 100755 (executable)
index 0000000..5ce25ec
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="DistributorSignature">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+    <Reference URI="#prop">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+      <DigestValue>abSCdQC03ZcPoEN8T0eWSILDIhDi2uNziivgdw1gmmQ=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>none</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+MIIDrjCCApagAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMCS1Ix
+FDASBgNVBAgMC1NvdXRoIEtvcmVhMQ4wDAYDVQQHDAVTdXdvbjEmMCQGA1UECgwd
+U2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4xCzAJBgNVBAsMAlZEMSkwJwYD
+VQQDDCBWRCBEaXN0cmlidXRvciBQbGF0Zm9ybSBDQSBDbGFzczAeFw0xNDEyMzAx
+MjA2MzhaFw0xNjEyMjkxMjA2MzhaMIGRMQswCQYDVQQGEwJLUjEUMBIGA1UECAwL
+U291dGggS29yZWExDjAMBgNVBAcMBVN1d29uMSYwJAYDVQQKDB1TYW1zdW5nIEVs
+ZWN0cm9uaWNzIENvLiwgTHRkLjELMAkGA1UECwwCVkQxJzAlBgNVBAMMHlZEIERp
+c3RyaWJ1dG9yIFBsYXRmb3JtIFNpZ25lcjCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAOirdOSugpYCM5xcgLQKmvKw3Tjqy1E47gSIqSVf4LLr4YwAXetz
+Ggm/vLYlg/FJQHuzlp+3yHNZmWv47Q9t64tdqxylauIAjs96Bvvk1NLjWqOC6bys
+0pmuDuob+wpPNsUOFNzkI5ij+yY/ZF1eDSP9biaogcEr7HTfzOhQdPc58nQzhxzW
+FokzRDy2T8hGw/OhF1HyRiEpGXLQLflGD/4V0lbSxEou8KxSKOZDhmkTju5kIOec
+aTYxZYGhIG/XnPlKzWRF9UT0U1jZlZNHsY7Qy1zb7j9dnQmXTLoaSd0nkrtgt7ip
+F/eoCya/FaNiSvWBP85bGSJs+F/mSEg0wrsCAwEAAaMNMAswCQYDVR0TBAIwADAN
+BgkqhkiG9w0BAQsFAAOCAQEAI8K0vI8vhP4h+YZe9IZDdtGglo+grLZR8WgAVBMJ
+Mn34QFEtzfpY9GG/uVFRZEN8eArI6ZT0NRjZmrzgxvx+as1D2ioTL2/EtxldVvEb
+bber2ArmxPkf2SuE3Yp5ntGfTyrM1aDRB+QUNi53Loz1YSHpHnL8hlWfVYsRQuWY
+e8L4pAnR2+80N51Uyq1OpJdVTlxtz6qhnXD2KSnYj2zqlRxL9kdsesn66zpNIJWy
+o2r2XkZLm1RdvD1QWD8DhYfKHJkTYOUTmJbZ4dX48SuZdoe1ouPdJGI2S9lqopyF
+F1/bw3RAk4GKgSp2Mk102x5KHVEEs2NX5jh5hVat/EwsYA==</X509Certificate>
+      <X509Certificate>
+MIIDtTCCAp2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBlTELMAkGA1UEBhMCS1Ix
+FDASBgNVBAgMC1NvdXRoIEtvcmVhMQ4wDAYDVQQHDAVTdXdvbjEmMCQGA1UECgwd
+U2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4xCzAJBgNVBAsMAlZEMSswKQYD
+VQQDDCJWRCBEaXN0cmlidXRvciBQbGF0Zm9ybSBSb290IENsYXNzMB4XDTE0MTIz
+MDEyMDM0MloXDTI5MTIyNjEyMDM0MlowgZMxCzAJBgNVBAYTAktSMRQwEgYDVQQI
+DAtTb3V0aCBLb3JlYTEOMAwGA1UEBwwFU3V3b24xJjAkBgNVBAoMHVNhbXN1bmcg
+RWxlY3Ryb25pY3MgQ28uLCBMdGQuMQswCQYDVQQLDAJWRDEpMCcGA1UEAwwgVkQg
+RGlzdHJpYnV0b3IgUGxhdGZvcm0gQ0EgQ2xhc3MwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQCqxXYIny2AsbWjP0GBDzievxzJC/7WvpRIrGBauh3+GoU5
+b1EuQr0wjqrIwyvU+++mAD4eX+9alLqIMj8WrMcHHZC0IAxZutJWhm0LpTI4JVlF
+F+CspYbfpC/V3vv3Xoan8YULqPBjb0KsdhlHId87caTDefmdTvY2M9m6n5DYZIGg
+iezcbbfOncGaiBudYypHO9CzM67n0p1+ZPL/3pCVoEcETMc/5wXQswHFY3Ded69w
+mMKFLUfSZ3bwPnMIv2r5EpaUGS1CcI/HHJbTBGKxX+DmhTCStJAj8WpukHp2opvI
+k+iyibNp1PUiQMbMf7AzRzXFHb9+QzTl75QBWh1dAgMBAAGjEDAOMAwGA1UdEwQF
+MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAAwiXbmi+g7f+id4kUhwAEQZCKV2csLi
+mRbcNSQ4OId+RS3Rqy0LrOi1mA8CZlPJbGRXhWol8AX9Y/4a1Ics4yJZGs27CFZh
+qksrEfiQcmS+LjrmadC1a/07+DMujmVyexYX9++4BlXxbBGnTQWQtQwiB9B7XD0D
+Gi2lce/ikQNOMAnCuhVa7+009RCa78EL1CtbieJuBg7mPN9Lo9nlNWoRIlx/xL2e
+/dToQE0FGpAVorpDyGiLs5fvv7QDGm2UggC3/VlSHxoAglZ3LUwELQhAYA6BThv3
+CTH9rvmnUijqNNo45m7AgdaxdLE7lyMcNOy3yb6ErleUXCIPXbibFjY=</X509Certificate>
+    </X509Data>
+  </KeyInfo>
+  <Object Id="prop">
+    <SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties">
+      <SignatureProperty Id="profile" Target="#DistributorSignature">
+        <dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"/>
+      </SignatureProperty>
+      <SignatureProperty Id="role" Target="#DistributorSignature">
+        <dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-distributor"/>
+      </SignatureProperty>
+      <SignatureProperty Id="identifier" Target="#DistributorSignature">
+        <dsp:Identifier/>
+      </SignatureProperty>
+    </SignatureProperties>
+  </Object>
+</Signature>
index f8027cd..a816966 100644 (file)
@@ -246,7 +246,11 @@ int CServiceIpcDbus::send_streaming_audio_data(pid_t pid, int event, void* data,
                        bundle_add_byte(b, "content", pending_buffer, pending_buffer_size);
                        boost::optional<std::string> appid = mApplicationManager->get_appid_by_pid(pid);
                        if (appid) {
+#if USE_TRUSTED_MESSAGE_PORT
+                               int ret = message_port_send_trusted_message((*appid).c_str(), message_port, b);
+#else
                                int ret = message_port_send_message((*appid).c_str(), message_port, b);
+#endif
                                if (MESSAGE_PORT_ERROR_NONE != ret)
                                        masc_message_port_error(ret);
                        } else {
@@ -271,7 +275,11 @@ int CServiceIpcDbus::send_streaming_audio_data(pid_t pid, int event, void* data,
                        bundle_add_byte(b, "content", buffer, total_size);
                        boost::optional<std::string> appid = mApplicationManager->get_appid_by_pid(pid);
                        if (appid) {
+#if USE_TRUSTED_MESSAGE_PORT
+                               int ret = message_port_send_trusted_message((*appid).c_str(), message_port, b);
+#else
                                int ret = message_port_send_message((*appid).c_str(), message_port, b);
+#endif
                                if (MESSAGE_PORT_ERROR_NONE != ret)
                                        masc_message_port_error(ret);
                        } else {
@@ -428,8 +436,13 @@ int CServiceIpcDbus::send_streaming_section_changed(pid_t pid, int section)
        total_size += sizeof(streaming_section_header);
 
        bundle_add_byte(b, "content", buffer, total_size);
+#if USE_TRUSTED_MESSAGE_PORT
+       int ret = message_port_send_trusted_message(
+               mClientManager->find_client_appid_by_pid(pid).c_str(), message_port, b);
+#else
        int ret = message_port_send_message(
                mClientManager->find_client_appid_by_pid(pid).c_str(), message_port, b);
+#endif
        if (MESSAGE_PORT_ERROR_NONE != ret)
                masc_message_port_error(ret);