[UWE] Generate tpk file for upgradable WRTjs 54/237054/10
authorYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 16 Jun 2020 02:28:15 +0000 (19:28 -0700)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Wed, 8 Jul 2020 06:45:09 +0000 (23:45 -0700)
Once updated chromium-efl is selected in launching process,
the corresponding WRTjs should be used to guarantee internal API
compatibility between them.

For that, the WRTjs tpk file needs to be prepared
as per deployed chromium-efl version and target profile like below:

* Public profile
Note that the public profile has only one type of tpk.
+----------------+---------------+-----------------------+
| Preloaded ver. | Deployed ver. | chromium-efl & WRTjs  |
+----------------+---------------+-----------------------+
| M76            | M76 or above  | Use tpk path          |
+----------------+---------------+-----------------------+

* Product TV profile
+----------------+---------------+-----------------------+
| Preloaded ver. | Deployed ver. | chromium-efl & WRTjs  |
+----------------+---------------+-----------------------+
| M76            | M76 (patch)   | Use tpk path          |
+----------------+---------------+-----------------------+
| M76            | Above M76     | Use upgraded tpk path |
+----------------+---------------+-----------------------+

* The WRTjs tpk path and build commands:
{TZ_SYS_RO_APP}/org.tizen.wrtjs
$ ./tizen/build/build_standard_armv7l.sh --use-tpk
$ ./tizen/build/build_tv.sh --use-tpk

* the upgraded WRTjs tpk path and build command, only for tv:
{TZ_SYS_RO_APP}/org.tizen.wrtjs-upgrade
$ ./tizen/build/build_tv.sh --use-tpk-upgrade

* The generated tpk file will be located in below after the build:
/PATH/TO/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/tmp

Change-Id: I8c57cbf101f2a495ea064d34548dc146c4dfe32a
Signed-off-by: Youngsoo Choi <kenshin.choi@samsung.com>
packaging/org.tizen.wrtjs-vd.xml.in [new file with mode: 0644]
packaging/org.tizen.wrtjs.xml.in [new file with mode: 0644]
packaging/wrtjs.spec
tizen/build/build_tpk.sh [new file with mode: 0755]
tizen/build/common.sh
tizen/downloadable/vd_sign/author-signature.xml [new file with mode: 0644]
tizen/downloadable/vd_sign/signature1.xml [new file with mode: 0644]
wrtjs-debugsource.manifest [new file with mode: 0644]

diff --git a/packaging/org.tizen.wrtjs-vd.xml.in b/packaging/org.tizen.wrtjs-vd.xml.in
new file mode 100644 (file)
index 0000000..d465582
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="@TIZEN_VERSION@" package="@PACKAGE_ID@" version="@WRTJS_VERSION@">
+    <label>Tizen Web Runtime</label>
+    <author href="www.samsung.com" email="@samsung.com">SamsungResearch</author>
+    <description>Tizen Web Runtine manages web applications.</description>
+    <tv-info api-version="@TIZEN_VERSION@"><infolink>T-INFOLINK2019-1000</infolink></tv-info>
+    <ui-application appid="@PACKAGE_ID@.wrt-loader" exec="/usr/bin/wrt-loader" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+        <label>Web Runtime Loader</label>
+        <label xml:lang="en-us">Web Runtime Loader</label>
+    </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.wrtjs.xml.in b/packaging/org.tizen.wrtjs.xml.in
new file mode 100644 (file)
index 0000000..6590566
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="@TIZEN_VERSION@" package="@PACKAGE_ID@" version="@WRTJS_VERSION@">
+    <label>Tizen Web Runtime</label>
+    <author href="www.samsung.com" email="@samsung.com">SamsungResearch</author>
+    <description>Tizen Web Runtine manages web applications.</description>
+    <ui-application appid="@PACKAGE_ID@.wrt-loader" exec="/usr/bin/wrt-loader" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+        <label>Web Runtime Loader</label>
+        <label xml:lang="en-us">Web Runtime Loader</label>
+    </ui-application>
+</manifest>
index 7d748d4..0659467 100755 (executable)
@@ -12,19 +12,66 @@ Source:     %{name}-%{version}.tar.gz
 
 BuildRequires: pkgconfig(chromium-efl)
 
-%if "%{?tizen_profile_name}" != "tv"
+%if "%{?profile}" != "tv"
 BuildRequires: ninja
 BuildRequires: pkgconfig(dlog)
 %endif
 
+%if 0%{?_use_tpk}
+%if "%{?profile}" == "tv"
+BuildRequires: app-signer
+%endif
+BuildRequires: hash-signer, zip
+BuildRequires: pkgconfig(libtzplatform-config)
+%endif
+
 %description
 Web Runtime Engine based on Electron
 
+%define _tizen_version %{tizen_version_major}%{tizen_version_minor}
+%define _pkgid org.tizen.%{name}
+%if 0%{?_use_tpk}
+  # The tv profile has a different tpk generation policy.
+  # 2 types(update, upgrade) of tpk can be generated and used simultaneously.
+  # If tpktype is not defined and tizen version is less than 6.0, upgrade type
+  # is generated by default.
+  %if "%{?profile}" == "tv"
+    %if "%{?tpktype}" == "upgrade" || (0%{!?tpktype:1} && %{_tizen_version} < 60)
+      %define _tpkid %{_pkgid}-upgrade
+    %endif
+  %endif
+  %if 0%{!?_tpkid:1}
+  %define _tpkid %{_pkgid}
+  %endif
+
+  # WRTjs TPK install directory
+  %global WRTJS_TPK_DIR /tmp
+  # Directory for WRTjs tizen application package
+  %global WRTJS_APP_DIR  %{TZ_SYS_RO_APP}/%{_tpkid}
+%endif
+
 %prep
 %setup -q
 
 %build
-%if "%{?tizen_profile_name}" != "tv"
+# The "_repository" flag was changed to "_vd_cfg_target_repository"
+# since tizen 4.0 product tv.
+%if "%{?profile}" == "tv"
+  %define _manifestname %{_pkgid}-vd
+  # The onemain branch haven't defined _vd_cfg_target_repository.
+  # So, this hijack code is added to set the repo_name to "MuseM".
+  # Remove this code when _vd_cfg_target_repository is defined in onemain.
+  %if "%{?_vd_cfg_target_repository}"
+    %define repo_name %{_vd_cfg_target_repository}
+  %else
+    %define repo_name MuseM
+  %endif
+%else
+  %define _manifestname %{_pkgid}
+  %define repo_name %{_repository}
+%endif
+
+%if "%{?profile}" != "tv"
   %define _outdir $PWD/out
   ./build/tools/gn gen %{_outdir}
   ninja -C %{_outdir} wrt-loader
@@ -34,31 +81,82 @@ Web Runtime Engine based on Electron
 absolute_appdir=$PWD/%{app_dir}
 (cd wrt_app/ && find . -type f ! -name '*.ts' -exec cp --parents {} ${absolute_appdir} \;)
 
+%if 0%{?_use_tpk}
+  %if "%{_vd_cfg_chip_vendor}" != "EMUL" && "%{?profile}" == "tv"
+    %define __package_signing 1
+  %else
+    %define __package_signing 0
+  %endif
+  sed -e 's#@TIZEN_VERSION@#%{tizen_version_major}.%{tizen_version_minor}#g' \
+      -e 's#@WRTJS_VERSION@#%{version}#g' \
+      -e 's#@PACKAGE_ID@#%{_tpkid}#g' \
+      packaging/%{_manifestname}.xml.in \
+      > packaging/tizen-manifest-tpk.xml
+%endif
+
 %install
+%ifarch armv7l
+  %define ARCHITECTURE armv7l
+%endif
+%ifarch aarch64
+  %define ARCHITECTURE aarch64
+%endif
+%ifarch i586 i686
+  %define ARCHITECTURE ix86
+%endif
+%ifarch x86_64
+  %define ARCHITECTURE x86_64
+%endif
 %define _resourcedir /usr/share/wrt/app
 install -d %{buildroot}%{_bindir}
 install -d %{buildroot}%{_datadir}/aul
 install -d %{buildroot}%{_resourcedir}
+install -d %{buildroot}%{WRTJS_APP_DIR}
 
-%if "%{?tizen_profile_name}" != "tv"
-  install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
-  install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
+%if 0%{?__package_signing}
+  install -m 0644 tizen/downloadable/vd_sign/author-signature.xml %{buildroot}%{WRTJS_APP_DIR}
+  install -m 0644 tizen/downloadable/vd_sign/signature1.xml %{buildroot}%{WRTJS_APP_DIR}
 %else
-  ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader
-%if "%{_vd_cfg_product_type}" != "LFD"
-%if "%{_vd_cfg_platform_type}" == "FULL_SMART"
-  install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader
-%endif
-%if "%{_vd_cfg_platform_type}" == "ENTRY_SMART"
-  install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader
-%endif
+  %define tizen_sign 1
+  %define tizen_sign_base %{WRTJS_APP_DIR}
+  %define tizen_sign_level platform
+  %define tizen_author_sign 1
+  %define tizen_dist_sign 1
 %endif
+
+%if "%{?profile}" == "tv"
+  ln -s %{_bindir}/wrt %{buildroot}%{_bindir}/wrt-loader
+  %if "%{_vd_cfg_product_type}" != "LFD"
+    %if "%{_vd_cfg_platform_type}" == "FULL_SMART"
+      install -m 0644 packaging/wrt_tv.loader %{buildroot}%{_datadir}/aul/wrt.loader
+    %endif
+    %if "%{_vd_cfg_platform_type}" == "ENTRY_SMART"
+      install -m 0644 packaging/wrt_tv_lite.loader %{buildroot}%{_datadir}/aul/wrt.loader
+    %endif
+  %endif
+%else
+  install -m 0755 %{_outdir}/wrt-loader %{buildroot}%{_bindir}
+  install -m 0644 packaging/wrt.loader %{buildroot}%{_datadir}/aul/
 %endif
 
 mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
 cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service}
 cp -r %{app_dir}/* %{buildroot}%{_resourcedir}/
 
+%if 0%{?_use_tpk}
+  # The debugsources.list is needed by __spec_install_post to generate tpk file
+  # but it's missing in the build process. So, the temporary file is touched.
+  touch debugsources.list
+  %define _tpk_file_name %{_tpkid}-%{version}-v%{tizen_version_major}.%{tizen_version_minor}.%{repo_name}.%{ARCHITECTURE}
+  %define __tpk_install_post \
+      tizen/build/build_tpk.sh %{buildroot}%{WRTJS_APP_DIR} %{WRTJS_TPK_DIR} %{_tpk_file_name} %{_tpkid} %{?profile}
+  %define __spec_install_post \
+      %{?__tpk_install_post} \
+      %{nil}
+%else
+  echo "No TPK generation"
+%endif
+
 %post
 
 %postun
@@ -79,3 +177,7 @@ rm -fr %{buildroot}
 %endif
 %{_libdir}/%{crosswalk_extensions_service}/plugins.json
 %{_resourcedir}/*
+%if 0%{?__package_signing}
+  %{WRTJS_APP_DIR}/author-signature.xml
+  %{WRTJS_APP_DIR}/signature1.xml
+%endif
diff --git a/tizen/build/build_tpk.sh b/tizen/build/build_tpk.sh
new file mode 100755 (executable)
index 0000000..e38318e
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+ro_app_root=$1
+output_dir=$2
+tpk_root=${output_dir}/tpk_root
+tpk_fname=${3}.tpk
+tpk_id=$4
+profile=$5
+
+echo "Start $0..."
+echo "ARGS=$@"
+echo "PWD=$PWD"
+echo "ro_app_root=$ro_app_root"
+echo "tpk_root=$tpk_root"
+echo "tpk_fname=$tpk_fname"
+echo "tpk_id=$tpk_id"
+echo "profile=$profile"
+echo "output_dir=$output_dir"
+
+ls ${output_dir}
+rm -rf ${tpk_root}
+install -d ${tpk_root}/shared/res/wrt
+install -d ${tpk_root}/license
+install -m 0644 packaging/tizen-manifest-tpk.xml ${tpk_root}/tizen-manifest.xml
+install -m 0644 LICENSE ${tpk_root}/license
+cp -rf out/gen/app ${tpk_root}/shared/res/wrt/app
+
+# Test signing
+/usr/bin/hash-signer.sh -a -d -p platform -b ${output_dir} tpk_root
+
+echo "* ls"
+ls -alR ${tpk_root}
+pushd ${tpk_root}
+echo "* zip"
+zip -yr $tpk_fname *
+mv $tpk_fname ../
+popd
+
+# tpkresigning from app-signer package
+if [ "${profile}" == "tv" ]; then
+  tpkresigner -a -d -p platform -n %{4}  ${output_dir}/${tpk_fname}
+fi
+
+echo "Finished $0"
index aa48b4e..a92886b 100755 (executable)
@@ -48,6 +48,13 @@ function setupAndExecuteTargetBuild() {
     ;;
     --tizen*)
     ;;
+    --use-tpk)
+      USE_TPK=1
+    ;;
+    --use-tpk-upgrade)
+      USE_TPK=1
+      USE_TPK_UPGRADE=1
+    ;;
     *)
       ARGS+=("$1")
     ;;
@@ -58,6 +65,12 @@ function setupAndExecuteTargetBuild() {
   if [ "$LOCAL_BUILD" == "1" ]; then
     ARGS+=(--define "_local_build 1")
   fi
+  if [ "$USE_TPK" == "1" ]; then
+    ARGS+=(--define "_use_tpk 1")
+    if [ "$USE_TPK_UPGRADE" == "1" ] && [ $platform == "tv" ]; then
+      ARGS+=(--define "tpktype upgrade")
+    fi
+  fi
 
   if [ "$PROFILE" == "" ]; then
     if [[ $platform == "tv" ]]; then
diff --git a/tizen/downloadable/vd_sign/author-signature.xml b/tizen/downloadable/vd_sign/author-signature.xml
new file mode 100644 (file)
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/tizen/downloadable/vd_sign/signature1.xml b/tizen/downloadable/vd_sign/signature1.xml
new file mode 100644 (file)
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>
diff --git a/wrtjs-debugsource.manifest b/wrtjs-debugsource.manifest
new file mode 100644 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>