From fa399150ea0130986781e79d90f058289f96a1f0 Mon Sep 17 00:00:00 2001 From: Kyungwook Tak Date: Tue, 24 Nov 2015 17:05:25 +0900 Subject: [PATCH] Fix & Refactor internal unit tests Change-Id: Ib273d952c21042b9fafb900cc6d3d36e6af69e8a Signed-off-by: Kyungwook Tak --- CMakeLists.txt | 2 +- packaging/cert-svc.spec | 5 +- tests/capi/CMakeLists.txt | 4 +- tests/capi/common-res.cpp | 1 + tests/capi/common-res.h | 2 + tests/capi/data/root_ca_cert.pem | 19 - tests/capi/data/second_ca_cert.pem | 17 - tests/capi/test-certificate.cpp | 2 +- tests/pkcs12/CMakeLists.txt | 32 +- tests/pkcs12/new_test_cases.cpp | 36 +- tests/pkcs12/test-common.cpp | 32 ++ tests/pkcs12/test-common.h | 34 ++ tests/vcore/CMakeLists.txt | 91 +--- .../author-signature.xml | 88 ++++ .../attacked-tpk-with-userdata/bin/preference | Bin 0 -> 65078 bytes .../attacked-tpk-with-userdata/data/userdata1 | 1 + .../attacked-tpk-with-userdata/data/userdata2 | 1 + .../resource/attacked-tpk-with-userdata/malfile | 1 + .../res/edje/pref_buttons_panel.edj | Bin 0 -> 6340 bytes .../res/edje/pref_edit_panel.edj | Bin 0 -> 8416 bytes .../res/edje/preference.edj | Bin 0 -> 6727 bytes .../res/images/icon_delete.png | Bin 0 -> 240 bytes .../attacked-tpk-with-userdata/res/res.xml | 2 + .../shared/res/preference.png | Bin 0 -> 57662 bytes .../attacked-tpk-with-userdata/signature1.xml | 88 ++++ .../attacked-tpk-with-userdata/tizen-manifest.xml | 10 + .../resource/attacked-tpk/author-signature.xml | 88 ++++ tests/vcore/resource/attacked-tpk/bin/preference | Bin 0 -> 65078 bytes tests/vcore/resource/attacked-tpk/malfile | 1 + .../attacked-tpk/res/edje/pref_buttons_panel.edj | Bin 0 -> 6340 bytes .../attacked-tpk/res/edje/pref_edit_panel.edj | Bin 0 -> 8416 bytes .../resource/attacked-tpk/res/edje/preference.edj | Bin 0 -> 6727 bytes .../attacked-tpk/res/images/icon_delete.png | Bin 0 -> 240 bytes tests/vcore/resource/attacked-tpk/res/res.xml | 2 + .../attacked-tpk/shared/res/preference.png | Bin 0 -> 57662 bytes tests/vcore/resource/attacked-tpk/signature1.xml | 88 ++++ .../vcore/resource/attacked-tpk/tizen-manifest.xml | 8 + tests/vcore/resource/normal-tpk.tpk | Bin 0 -> 65245 bytes .../{test-cases => resource}/root_cacert0.pem | 0 .../tpk-with-userdata/author-signature.xml | 88 ++++ .../resource/tpk-with-userdata/bin/preference | Bin 0 -> 65078 bytes .../resource/tpk-with-userdata/data/userdata1 | 1 + .../resource/tpk-with-userdata/data/userdata2 | 1 + .../res/edje/pref_buttons_panel.edj | Bin 0 -> 6340 bytes .../tpk-with-userdata/res/edje/pref_edit_panel.edj | Bin 0 -> 8416 bytes .../tpk-with-userdata/res/edje/preference.edj | Bin 0 -> 6727 bytes .../tpk-with-userdata/res/images/icon_delete.png | Bin 0 -> 240 bytes tests/vcore/resource/tpk-with-userdata/res/res.xml | 2 + .../tpk-with-userdata/shared/res/preference.png | Bin 0 -> 57662 bytes .../resource/tpk-with-userdata/signature1.xml | 88 ++++ .../resource/tpk-with-userdata/tizen-manifest.xml | 8 + tests/vcore/resource/tpk/author-signature.xml | 88 ++++ tests/vcore/resource/tpk/bin/preference | Bin 0 -> 65078 bytes .../resource/tpk/res/edje/pref_buttons_panel.edj | Bin 0 -> 6340 bytes .../resource/tpk/res/edje/pref_edit_panel.edj | Bin 0 -> 8416 bytes tests/vcore/resource/tpk/res/edje/preference.edj | Bin 0 -> 6727 bytes .../vcore/resource/tpk/res/images/icon_delete.png | Bin 0 -> 240 bytes tests/vcore/resource/tpk/res/res.xml | 2 + tests/vcore/resource/tpk/shared/res/preference.png | Bin 0 -> 57662 bytes tests/vcore/resource/tpk/signature1.xml | 88 ++++ tests/vcore/resource/tpk/tizen-manifest.xml | 8 + .../widget => resource/wgt}/author-signature.xml | 0 .../wgt}/config.xml | 0 .../wgt}/index.html | 0 .../wgt}/signature1.xml | 0 .../wgt}/signature22.xml | 0 .../wgt_negative_certificate}/author-signature.xml | 0 .../wgt_negative_certificate}/config.xml | 0 .../wgt_negative_certificate}/index.html | 0 .../wgt_negative_certificate}/signature1.xml | 0 .../wgt_negative_hash}/author-signature.xml | 0 .../wgt_negative_hash}/config.xml | 0 .../wgt_negative_hash}/index.html | 0 .../wgt_negative_hash}/signature1.xml | 0 .../wgt_negative_hash}/signature22.xml | 0 .../wgt_negative_signature}/author-signature.xml | 0 .../wgt_negative_signature}/config.xml | 0 .../wgt_negative_signature}/index.html | 0 .../wgt_negative_signature}/signature1.xml | 0 .../wgt_negative_signature}/signature22.xml | 0 .../wgt_partner}/author-signature.xml | 0 .../wgt_partner}/config.xml | 0 .../wgt_partner}/index.html | 0 .../wgt_partner}/signature1.xml | 0 .../wgt_partner_operator}/author-signature.xml | 0 .../wgt_partner_operator}/config.xml | 0 .../wgt_partner_operator}/index.html | 0 .../wgt_partner_operator}/signature1.xml | 0 .../vcore/test-cases/reference/encoding test.empty | 0 tests/vcore/test-certificate.cpp | 112 +++++ tests/vcore/test-common.cpp | 17 +- tests/vcore/test-common.h | 5 + tests/vcore/test-signature-validator.cpp | 519 ++++++++------------- 93 files changed, 1206 insertions(+), 476 deletions(-) delete mode 100644 tests/capi/data/root_ca_cert.pem delete mode 100644 tests/capi/data/second_ca_cert.pem create mode 100644 tests/pkcs12/test-common.cpp create mode 100644 tests/pkcs12/test-common.h create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/author-signature.xml create mode 100755 tests/vcore/resource/attacked-tpk-with-userdata/bin/preference create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/data/userdata1 create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/data/userdata2 create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/malfile create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/res/edje/pref_buttons_panel.edj create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/res/edje/pref_edit_panel.edj create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/res/edje/preference.edj create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/res/images/icon_delete.png create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/res/res.xml create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/shared/res/preference.png create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/signature1.xml create mode 100644 tests/vcore/resource/attacked-tpk-with-userdata/tizen-manifest.xml create mode 100644 tests/vcore/resource/attacked-tpk/author-signature.xml create mode 100755 tests/vcore/resource/attacked-tpk/bin/preference create mode 100644 tests/vcore/resource/attacked-tpk/malfile create mode 100644 tests/vcore/resource/attacked-tpk/res/edje/pref_buttons_panel.edj create mode 100644 tests/vcore/resource/attacked-tpk/res/edje/pref_edit_panel.edj create mode 100644 tests/vcore/resource/attacked-tpk/res/edje/preference.edj create mode 100644 tests/vcore/resource/attacked-tpk/res/images/icon_delete.png create mode 100644 tests/vcore/resource/attacked-tpk/res/res.xml create mode 100644 tests/vcore/resource/attacked-tpk/shared/res/preference.png create mode 100644 tests/vcore/resource/attacked-tpk/signature1.xml create mode 100644 tests/vcore/resource/attacked-tpk/tizen-manifest.xml create mode 100644 tests/vcore/resource/normal-tpk.tpk rename tests/vcore/{test-cases => resource}/root_cacert0.pem (100%) create mode 100644 tests/vcore/resource/tpk-with-userdata/author-signature.xml create mode 100755 tests/vcore/resource/tpk-with-userdata/bin/preference create mode 100644 tests/vcore/resource/tpk-with-userdata/data/userdata1 create mode 100644 tests/vcore/resource/tpk-with-userdata/data/userdata2 create mode 100644 tests/vcore/resource/tpk-with-userdata/res/edje/pref_buttons_panel.edj create mode 100644 tests/vcore/resource/tpk-with-userdata/res/edje/pref_edit_panel.edj create mode 100644 tests/vcore/resource/tpk-with-userdata/res/edje/preference.edj create mode 100644 tests/vcore/resource/tpk-with-userdata/res/images/icon_delete.png create mode 100644 tests/vcore/resource/tpk-with-userdata/res/res.xml create mode 100644 tests/vcore/resource/tpk-with-userdata/shared/res/preference.png create mode 100644 tests/vcore/resource/tpk-with-userdata/signature1.xml create mode 100644 tests/vcore/resource/tpk-with-userdata/tizen-manifest.xml create mode 100644 tests/vcore/resource/tpk/author-signature.xml create mode 100755 tests/vcore/resource/tpk/bin/preference create mode 100644 tests/vcore/resource/tpk/res/edje/pref_buttons_panel.edj create mode 100644 tests/vcore/resource/tpk/res/edje/pref_edit_panel.edj create mode 100644 tests/vcore/resource/tpk/res/edje/preference.edj create mode 100644 tests/vcore/resource/tpk/res/images/icon_delete.png create mode 100644 tests/vcore/resource/tpk/res/res.xml create mode 100644 tests/vcore/resource/tpk/shared/res/preference.png create mode 100644 tests/vcore/resource/tpk/signature1.xml create mode 100644 tests/vcore/resource/tpk/tizen-manifest.xml rename tests/vcore/{test-cases/widget => resource/wgt}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget_partner_operator => resource/wgt}/config.xml (100%) rename tests/vcore/{test-cases/widget_partner_operator => resource/wgt}/index.html (100%) rename tests/vcore/{test-cases/widget_negative_signature => resource/wgt}/signature1.xml (100%) rename tests/vcore/{test-cases/widget_negative_signature => resource/wgt}/signature22.xml (100%) rename tests/vcore/{test-cases/widget_partner_operator => resource/wgt_negative_certificate}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget_partner => resource/wgt_negative_certificate}/config.xml (100%) rename tests/vcore/{test-cases/widget_partner => resource/wgt_negative_certificate}/index.html (100%) rename tests/vcore/{test-cases/widget_negative_certificate => resource/wgt_negative_certificate}/signature1.xml (100%) rename tests/vcore/{test-cases/widget_negative_hash => resource/wgt_negative_hash}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget_negative_signature => resource/wgt_negative_hash}/config.xml (100%) rename tests/vcore/{test-cases/widget_negative_signature => resource/wgt_negative_hash}/index.html (100%) rename tests/vcore/{test-cases/widget_negative_hash => resource/wgt_negative_hash}/signature1.xml (100%) rename tests/vcore/{test-cases/widget_negative_hash => resource/wgt_negative_hash}/signature22.xml (100%) rename tests/vcore/{test-cases/widget_negative_signature => resource/wgt_negative_signature}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget_negative_hash => resource/wgt_negative_signature}/config.xml (100%) rename tests/vcore/{test-cases/widget_negative_hash => resource/wgt_negative_signature}/index.html (100%) rename tests/vcore/{test-cases/widget => resource/wgt_negative_signature}/signature1.xml (100%) rename tests/vcore/{test-cases/widget => resource/wgt_negative_signature}/signature22.xml (100%) rename tests/vcore/{test-cases/widget_partner => resource/wgt_partner}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget_negative_certificate => resource/wgt_partner}/config.xml (100%) rename tests/vcore/{test-cases/widget_negative_certificate => resource/wgt_partner}/index.html (100%) rename tests/vcore/{test-cases/widget_partner => resource/wgt_partner}/signature1.xml (100%) rename tests/vcore/{test-cases/widget_negative_certificate => resource/wgt_partner_operator}/author-signature.xml (100%) rename tests/vcore/{test-cases/widget => resource/wgt_partner_operator}/config.xml (100%) rename tests/vcore/{test-cases/widget => resource/wgt_partner_operator}/index.html (100%) rename tests/vcore/{test-cases/widget_partner_operator => resource/wgt_partner_operator}/signature1.xml (100%) delete mode 100644 tests/vcore/test-cases/reference/encoding test.empty create mode 100644 tests/vcore/test-certificate.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ca7fc9..d1f2705 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,6 @@ ADD_SUBDIRECTORY(systemd) ADD_SUBDIRECTORY(etc) IF (DEFINED CERTSVC_TEST_BUILD) -ADD_DEFINITIONS("-DTESTAPP_RES_DIR=\"${TZ_SYS_RO_APP}/widget/tests/\"") +ADD_DEFINITIONS("-DTESTAPP_RES_DIR=\"${TZ_SYS_RO_APP}/cert-svc-tests/\"") ADD_SUBDIRECTORY(tests) ENDIF (DEFINED CERTSVC_TEST_BUILD) diff --git a/packaging/cert-svc.spec b/packaging/cert-svc.spec index 6b03281..b4a1cc2 100644 --- a/packaging/cert-svc.spec +++ b/packaging/cert-svc.spec @@ -43,7 +43,6 @@ Summary: Certification service (tests) Group: Security/Testing Requires: ca-certificates-tizen Requires: %{name} = %{version}-%{release} -Conflicts: %name %description test Certification service (tests) @@ -136,9 +135,7 @@ fi %if 0%{?certsvc_test_build} %files test %TZ_SYS_BIN/cert-svc-test* -%TZ_SYS_RO_APP/widget/tests -%TZ_SYS_SHARE/cert-svc/cert-type -%TZ_SYS_SHARE/cert-svc/tests +%TZ_SYS_RO_APP/cert-svc-tests %TZ_SYS_SHARE/ca-certificates/tizen/root_cacert0.pem %_libdir/libcert-svc-validator-plugin.so %endif diff --git a/tests/capi/CMakeLists.txt b/tests/capi/CMakeLists.txt index 42c50dd..d9c5afe 100644 --- a/tests/capi/CMakeLists.txt +++ b/tests/capi/CMakeLists.txt @@ -55,9 +55,7 @@ INSTALL(TARGETS ${TARGET_CAPI_TEST} INSTALL(FILES ${CERT_SVC_CAPI_TESTS_DIR}/data/root_cacert0.pem - ${CERT_SVC_CAPI_TESTS_DIR}/data/root_ca_cert.pem - ${CERT_SVC_CAPI_TESTS_DIR}/data/second_ca_cert.pem - DESTINATION ${TZ_SYS_SHARE}/cert-svc/cert-type/ + DESTINATION ${TZ_SYS_RO_APP}/cert-svc-tests/certs PERMISSIONS OWNER_READ GROUP_READ WORLD_READ diff --git a/tests/capi/common-res.cpp b/tests/capi/common-res.cpp index 2552a33..11a20ad 100644 --- a/tests/capi/common-res.cpp +++ b/tests/capi/common-res.cpp @@ -22,6 +22,7 @@ #include "common-res.h" +const std::string TestData::SelfSignedCAPath = std::string(TESTAPP_RES_DIR) + "certs/root_cacert0.pem"; const std::string TestData::subjectGoogleCA = "/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority"; const std::string TestData::googleCA = diff --git a/tests/capi/common-res.h b/tests/capi/common-res.h index c447bfd..0249445 100644 --- a/tests/capi/common-res.h +++ b/tests/capi/common-res.h @@ -43,6 +43,8 @@ public: std::string signature; }; +extern const std::string SelfSignedCAPath; + extern const std::string subjectGoogleCA; /* * Not Before: Jan 29 00:00:00 1996 GMT diff --git a/tests/capi/data/root_ca_cert.pem b/tests/capi/data/root_ca_cert.pem deleted file mode 100644 index 366ed15..0000000 --- a/tests/capi/data/root_ca_cert.pem +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC/jCCAmegAwIBAgIJAOifQRE/qMjWMA0GCSqGSIb3DQEBCwUAMIGXMQswCQYD -VQQGEwJLTzETMBEGA1UECAwKS3llb25na2lkbzEOMAwGA1UEBwwFU3V3b24xEDAO -BgNVBAoMB1NhbXN1bmcxFzAVBgNVBAsMDlNvZnR3YXJlQ2VudGVyMRYwFAYDVQQD -DA1UaXplblNlY3VyaXR5MSAwHgYJKoZIhvcNAQkBFhFrLnRha0BzYW1zdW5nLmNv -bTAeFw0xNTA4MTkwNDMyMzhaFw0yNTA4MTYwNDMyMzhaMIGXMQswCQYDVQQGEwJL -TzETMBEGA1UECAwKS3llb25na2lkbzEOMAwGA1UEBwwFU3V3b24xEDAOBgNVBAoM -B1NhbXN1bmcxFzAVBgNVBAsMDlNvZnR3YXJlQ2VudGVyMRYwFAYDVQQDDA1UaXpl -blNlY3VyaXR5MSAwHgYJKoZIhvcNAQkBFhFrLnRha0BzYW1zdW5nLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsxwuULOSxFe7LvjS3QtqG3qklShJ9Tfq -CB74hNV8EXUwE/TXynOYOUQwxP7rkNj3ZesakbXXhJy20PUYdJQpUCGblRbOGZUH -vDepFGNzUJg5KnWy4sULss4JYk6lnbtcNfuB5Xyf0na80S0aMplqJGbkJnZ7WMpz -dJsCmENZtBkCAwEAAaNQME4wHQYDVR0OBBYEFGaOiJzaeAr5sI5BCo3iAmk8TbHE -MB8GA1UdIwQYMBaAFGaOiJzaeAr5sI5BCo3iAmk8TbHEMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQELBQADgYEAEU/D14Kr6DDogpvBXYsi4MBEUGuLanzIZx3oCthh -UgvTTOz1xIovpYpycUIo1fHbNKoBxEBEEGR/wWRPXQoCW7uRsYyNNxcHDdU8EJig -U8RjCGk3U8086LqTHQRPCTBEVrxrOLTx1Z4AsjyabyZ8uz9te9GQDcQMjLNytyT/ -/I0= ------END CERTIFICATE----- diff --git a/tests/capi/data/second_ca_cert.pem b/tests/capi/data/second_ca_cert.pem deleted file mode 100644 index 28c1144..0000000 --- a/tests/capi/data/second_ca_cert.pem +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICvzCCAigCCQCpduCB5TcrmDANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UEBhMC -S08xEzARBgNVBAgMCkt5ZW9uZ2tpZG8xDjAMBgNVBAcMBVN1d29uMRAwDgYDVQQK -DAdTYW1zdW5nMRcwFQYDVQQLDA5Tb2Z0d2FyZUNlbnRlcjEWMBQGA1UEAwwNVGl6 -ZW5TZWN1cml0eTEgMB4GCSqGSIb3DQEJARYRay50YWtAc2Ftc3VuZy5jb20wHhcN -MTUwODE5MDQzNTQxWhcNMjAwODE3MDQzNTQxWjCBrzELMAkGA1UEBhMCUE8xEzAR -BgNVBAgMClNlb3VsU3RhdGUxDjAMBgNVBAcMBVNlb3VsMRYwFAYDVQQKDA1TYW1z -dW5nU2Vjb25kMR0wGwYDVQQLDBRTb2Z0d2FyZUNlbnRlclNlY29uZDEcMBoGA1UE -AwwTVGl6ZW5TZWN1cml0eVNlY29uZDEmMCQGCSqGSIb3DQEJARYXa3l1bmd3b29r -LnRha0BnbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANgIo6MF -++LfNs3jSC87WRfO4zK/n+/xfPsn+Xwyi4jtsMxk2v/ye/SGESAACdCFFBL/EZ9j -Adu/6kzuKDJ5SpphW++XoUM2YdNxHzf6+z8JK9IPVmhy3b/hQlVbtBiFAMuLOn1D -C0gfTEnYRgZBs3v5Z/N35ZO1FoCz8y9wHmAXAgMBAAEwDQYJKoZIhvcNAQELBQAD -gYEAb3/k6KLLGysGEMFk2rVVvroqGqzeKHfk+t/pbrdGHEr0EIIXIYBk7YCGhMVF -Flw7g6Cpxyo1FQEFQhcdiv4/Iio2/RemtTYRILOnoaHSh9j9Fl1LT69MZq20hjId -8WNW2Ah9APv29fpZQFXo8dMsy1cnh4hJhWVWWttSLUBd1uE= ------END CERTIFICATE----- diff --git a/tests/capi/test-certificate.cpp b/tests/capi/test-certificate.cpp index 7223d05..438f33f 100644 --- a/tests/capi/test-certificate.cpp +++ b/tests/capi/test-certificate.cpp @@ -62,7 +62,7 @@ RUNNER_TEST(T0101_certificate_new_from_file) CertSvcCertificate cert; int result = certsvc_certificate_new_from_file( vinstance, - "/usr/share/cert-svc/cert-type/root_cacert0.pem", + TestData::SelfSignedCAPath.c_str(), &cert); RUNNER_ASSERT_MSG(CERTSVC_TRUE == result, "Error reading certificate"); diff --git a/tests/pkcs12/CMakeLists.txt b/tests/pkcs12/CMakeLists.txt index 8b54a3f..b0d21cf 100644 --- a/tests/pkcs12/CMakeLists.txt +++ b/tests/pkcs12/CMakeLists.txt @@ -19,13 +19,14 @@ # SET(PKCS12_TEST_SOURCES - ${PROJECT_SOURCE_DIR}/tests/pkcs12/pkcs12_test.cpp - ${PROJECT_SOURCE_DIR}/tests/pkcs12/new_test_cases.cpp + pkcs12_test.cpp + new_test_cases.cpp + test-common.cpp ) INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/vcore/src - ${PROJECT_SOURCE_DIR}/tests/pkcs12 + . ) ADD_EXECUTABLE(${TARGET_PKCS12_TEST} ${PKCS12_TEST_SOURCES} ${DPL_TEST_SOURCES}) @@ -46,19 +47,14 @@ INSTALL(TARGETS ${TARGET_PKCS12_TEST} WORLD_EXECUTE ) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/pkcs12/without_pass.p12 - DESTINATION ${TZ_SYS_RO_APP}/widget/tests/pkcs12/ -) - -INSTALL(FILES - ${PROJECT_SOURCE_DIR}/tests/pkcs12/without_pass.p12 - ${PROJECT_SOURCE_DIR}/tests/pkcs12/Invalidcrt.crt - ${PROJECT_SOURCE_DIR}/tests/pkcs12/Testing.crt - ${PROJECT_SOURCE_DIR}/tests/pkcs12/test.pfx - ${PROJECT_SOURCE_DIR}/tests/pkcs12/wifi-server.pem - ${PROJECT_SOURCE_DIR}/tests/pkcs12/wifiserver.pfx - ${PROJECT_SOURCE_DIR}/tests/pkcs12/wifiuser.p12 - DESTINATION ${TZ_SYS_SHARE}/cert-svc/tests/ +INSTALL( + FILES + without_pass.p12 + Invalidcrt.crt + Testing.crt + test.pfx + wifi-server.pem + wifiserver.pfx + wifiuser.p12 + DESTINATION ${TZ_SYS_RO_APP}/cert-svc-tests/p12 ) diff --git a/tests/pkcs12/new_test_cases.cpp b/tests/pkcs12/new_test_cases.cpp index 28a346b..7f2887e 100644 --- a/tests/pkcs12/new_test_cases.cpp +++ b/tests/pkcs12/new_test_cases.cpp @@ -39,6 +39,8 @@ #include +#include "test-common.h" + static CertSvcInstance instance; static CertSvcString wrapper_certsvc_string_new(const char *cStr) @@ -123,7 +125,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1003_add_pem_file_in_individual_store) CREATE_INSTANCE - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifi-server.pem"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); CertSvcString Alias = wrapper_certsvc_string_new("PEM-wifi-server-1"); @@ -182,7 +184,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1004_add_pem_file_in_all_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PEM-wifi-server-all-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifi-server.pem"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias); @@ -209,7 +211,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1005_add_crt_file_in_individual_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("CRT-TestingCRT1"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/Testing.crt"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::CertCrtPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias); @@ -260,7 +262,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1006_add_crt_file_in_all_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("CRT-TestingCRT1-all-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/Testing.crt"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::CertCrtPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias); @@ -321,8 +323,8 @@ RUNNER_TEST(CERTSVC_PKCS12_1008_install_p12_file_to_all_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("P12-WifiUser-all-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifiuser.p12"); - CertSvcString Pass = wrapper_certsvc_string_new("wifi"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::UserP12WithPassPath.c_str()); + CertSvcString Pass = wrapper_certsvc_string_new(TestData::UserP12Pass.c_str()); result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias); RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing p12 file to WIFI store failed."); @@ -349,8 +351,8 @@ RUNNER_TEST(CERTSVC_PKCS12_1009_install_pfx_file_to_individual_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifiserver.pfx"); - CertSvcString Pass = wrapper_certsvc_string_new("wifi"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str()); + CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str()); result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias); RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed."); @@ -383,8 +385,8 @@ RUNNER_TEST(CERTSVC_PKCS12_1010_install_pfx_file_to_all_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-all-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifiserver.pfx"); - CertSvcString Pass = wrapper_certsvc_string_new("wifi"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str()); + CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str()); result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias); RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed."); @@ -475,8 +477,8 @@ RUNNER_TEST(CERTSVC_PKCS12_1013_install_pfx_file_to_one_store_and_get_list_from_ CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-one-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifiserver.pfx"); - CertSvcString Pass = wrapper_certsvc_string_new("wifi"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str()); + CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str()); int isUnique = 0; result = certsvc_pkcs12_check_alias_exists_in_store(instance, allStoreType, Alias, &isUnique); @@ -514,7 +516,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1014_installing_pfx_without_password_to_individual_st CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-without-password"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/without_pass.p12"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithoutPassPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(""); int isUnique = 0; @@ -774,7 +776,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1021_add_pem_file_to_invalid_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-one-store"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/wifi-server.pem"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); result = certsvc_pkcs12_import_from_file_to_store(instance, (CertStoreType)-1, Path, Pass, Alias); @@ -841,7 +843,7 @@ RUNNER_TEST(CERTSVC_PKCS12_1024_certsvc_set_and_get_for_invalid_store) CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("TestingCRT1"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/Invalidcrt.crt"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::InvalidCertCrtPath.c_str()); CertSvcString Pass = wrapper_certsvc_string_new(NULL); result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias); @@ -869,8 +871,8 @@ RUNNER_TEST(CERTSVC_PKCS12_1025_install_invalid_pfx_file_to_individual_and_all_s CREATE_INSTANCE CertSvcString Alias = wrapper_certsvc_string_new("WifiServer-123"); - CertSvcString Path = wrapper_certsvc_string_new("/usr/share/cert-svc/tests/test.pfx"); - CertSvcString Pass = wrapper_certsvc_string_new("wifi"); + CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPass2Path.c_str()); + CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfx2Pass.c_str()); result = certsvc_pkcs12_import_from_file_to_store(instance, SYSTEM_STORE, Path, Pass, Alias); RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed."); diff --git a/tests/pkcs12/test-common.cpp b/tests/pkcs12/test-common.cpp new file mode 100644 index 0000000..09a7a7e --- /dev/null +++ b/tests/pkcs12/test-common.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "test-common.h" + +namespace TestData { + +const std::string ServerPfxWithPassPath = std::string(TESTAPP_RES_DIR) + "p12/wifiserver.pfx"; +const std::string ServerPfxWithPass2Path = std::string(TESTAPP_RES_DIR) + "p12/test.pfx"; +const std::string ServerPfxWithoutPassPath = std::string(TESTAPP_RES_DIR) + "p12/without_pass.p12"; +const std::string UserP12WithPassPath = std::string(TESTAPP_RES_DIR) + "p12/wifiuser.p12"; +const std::string ServerCertPemPath = std::string(TESTAPP_RES_DIR) + "p12/wifi-server.pem"; +const std::string CertCrtPath = std::string(TESTAPP_RES_DIR) + "p12/Testing.crt"; +const std::string InvalidCertCrtPath = std::string(TESTAPP_RES_DIR) + "p12/InvalidCrt.crt"; +const std::string ServerPfxPass = "wifi"; +const std::string ServerPfx2Pass = "wifi"; +const std::string UserP12Pass = "wifi"; + +} diff --git a/tests/pkcs12/test-common.h b/tests/pkcs12/test-common.h new file mode 100644 index 0000000..1805891 --- /dev/null +++ b/tests/pkcs12/test-common.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include + +namespace TestData { + +extern const std::string ServerPfxWithPassPath; +extern const std::string ServerPfxWithPass2Path; +extern const std::string ServerPfxWithoutPassPath; +extern const std::string UserP12WithPassPath; +extern const std::string ServerCertPemPath; +extern const std::string CertCrtPath; +extern const std::string InvalidCertCrtPath; + +extern const std::string ServerPfxPass; +extern const std::string ServerPfx2Pass; +extern const std::string UserP12Pass; + +} diff --git a/tests/vcore/CMakeLists.txt b/tests/vcore/CMakeLists.txt index 1d96ca2..29311d6 100644 --- a/tests/vcore/CMakeLists.txt +++ b/tests/vcore/CMakeLists.txt @@ -20,18 +20,17 @@ # @version 1.0 # @brief # -SET(CERT_SVC_VCORE_TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) - SET(VCORE_TESTS_SOURCES - ${CERT_SVC_VCORE_TESTS_DIR}/main.cpp - ${CERT_SVC_VCORE_TESTS_DIR}/test-common.cpp - ${CERT_SVC_VCORE_TESTS_DIR}/test-signature-validator.cpp - ${CERT_SVC_VCORE_TESTS_DIR}/test-ocsp-check.cpp - ${CERT_SVC_VCORE_TESTS_DIR}/test-time-conversion.cpp + main.cpp + test-common.cpp + test-signature-validator.cpp + test-certificate.cpp + test-ocsp-check.cpp + test-time-conversion.cpp ) INCLUDE_DIRECTORIES( - ${CERT_SVC_VCORE_TESTS_DIR} + . ) ADD_EXECUTABLE(${TARGET_VCORE_TEST} @@ -55,70 +54,24 @@ INSTALL(TARGETS ${TARGET_VCORE_TEST} ) INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget/signature22.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget/index.html - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed - ) - -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_hash/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_hash/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_hash/signature22.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_hash/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_hash/index.html - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed_negative_hash - ) - -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_signature/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_signature/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_signature/signature22.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_signature/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_signature/index.html + resource/root_cacert0.pem DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed_negative_signature - ) - -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_certificate/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_certificate/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_certificate/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_negative_certificate/index.html - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed_negative_certificate - ) - -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner/index.html - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed_partner - ) - -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner_operator/author-signature.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner_operator/signature1.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner_operator/config.xml - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/widget_partner_operator/index.html - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/vcore_widget_uncompressed_partner_operator + ${TZ_SYS_SHARE}/ca-certificates/tizen ) -INSTALL(FILES - "${CERT_SVC_VCORE_TESTS_DIR}/test-cases/reference/encoding test.empty" - DESTINATION - ${TZ_SYS_RO_APP}/widget/tests/reference - ) +INSTALL( + DIRECTORY + resource/wgt + resource/wgt_negative_hash + resource/wgt_negative_signature + resource/wgt_negative_certificate + resource/wgt_partner + resource/wgt_partner_operator + resource/tpk + resource/attacked-tpk + resource/tpk-with-userdata + resource/attacked-tpk-with-userdata -INSTALL(FILES - ${CERT_SVC_VCORE_TESTS_DIR}/test-cases/root_cacert0.pem DESTINATION - ${TZ_SYS_SHARE}/ca-certificates/tizen + ${TZ_SYS_RO_APP}/cert-svc-tests/apps ) diff --git a/tests/vcore/resource/attacked-tpk-with-userdata/author-signature.xml b/tests/vcore/resource/attacked-tpk-with-userdata/author-signature.xml new file mode 100644 index 0000000..acda94a --- /dev/null +++ b/tests/vcore/resource/attacked-tpk-with-userdata/author-signature.xml @@ -0,0 +1,88 @@ + + + + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +GJVkTe68bLdCB89jGKUovM3mk6oYen6MdWm66XRRERl3xdshPr4DpQ3ZA8ivaQArpTi435R4iy5W +EAjiABBLdXwmsE8lBS5rEskwg0f74CgMxf1ePjwrZJORFMLvsSTKZxlSffDki4nju9liJTlx/ygv +QJMe++8wdpWVArUkU1k= + + + + +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 + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/attacked-tpk-with-userdata/bin/preference b/tests/vcore/resource/attacked-tpk-with-userdata/bin/preference new file mode 100755 index 0000000000000000000000000000000000000000..bf206040ae3e94cca2f7868de2eb3473a3e59972 GIT binary patch literal 65078 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 B&u#z! literal 0 HcmV?d00001 diff --git a/tests/vcore/resource/attacked-tpk-with-userdata/res/edje/preference.edj b/tests/vcore/resource/attacked-tpk-with-userdata/res/edje/preference.edj new file mode 100644 index 0000000000000000000000000000000000000000..6778eb702dcefb914806985a5ec14aeba8eb0531 GIT binary patch literal 6727 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 + diff --git a/tests/vcore/resource/attacked-tpk-with-userdata/shared/res/preference.png b/tests/vcore/resource/attacked-tpk-with-userdata/shared/res/preference.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + + + +kY0SZLvGVjky2n9CVdX04y8PDpOsO39mMaHxfgbSoJM= + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +DCb5J8PcmLarosBP+ARWh55qTTvpHgcJENT9IlvOyTFDk3d0oWd8gphCcRh2T5VivYlGPyxX4EDn +CuWCeYU2yeO+Pa2a3TO/ILxO7cBWvi5aCsXcyvzEIX8tyZKAmn+hjil2V90/Gie+2oP/8ko0HjdO +s2sMco+a/8+0+on5liI= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/attacked-tpk-with-userdata/tizen-manifest.xml b/tests/vcore/resource/attacked-tpk-with-userdata/tizen-manifest.xml new file mode 100644 index 0000000..ee34400 --- /dev/null +++ b/tests/vcore/resource/attacked-tpk-with-userdata/tizen-manifest.xml @@ -0,0 +1,10 @@ + + + + + + preference.png + + + + diff --git a/tests/vcore/resource/attacked-tpk/author-signature.xml b/tests/vcore/resource/attacked-tpk/author-signature.xml new file mode 100644 index 0000000..acda94a --- /dev/null +++ b/tests/vcore/resource/attacked-tpk/author-signature.xml @@ -0,0 +1,88 @@ + + + + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +GJVkTe68bLdCB89jGKUovM3mk6oYen6MdWm66XRRERl3xdshPr4DpQ3ZA8ivaQArpTi435R4iy5W +EAjiABBLdXwmsE8lBS5rEskwg0f74CgMxf1ePjwrZJORFMLvsSTKZxlSffDki4nju9liJTlx/ygv +QJMe++8wdpWVArUkU1k= + + + + +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 + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/attacked-tpk/bin/preference b/tests/vcore/resource/attacked-tpk/bin/preference new file mode 100755 index 0000000000000000000000000000000000000000..bf206040ae3e94cca2f7868de2eb3473a3e59972 GIT binary patch literal 65078 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 B&u#z! literal 0 HcmV?d00001 diff --git a/tests/vcore/resource/attacked-tpk/res/edje/preference.edj b/tests/vcore/resource/attacked-tpk/res/edje/preference.edj new file mode 100644 index 0000000000000000000000000000000000000000..6778eb702dcefb914806985a5ec14aeba8eb0531 GIT binary patch literal 6727 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 + diff --git a/tests/vcore/resource/attacked-tpk/shared/res/preference.png b/tests/vcore/resource/attacked-tpk/shared/res/preference.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + + + +kY0SZLvGVjky2n9CVdX04y8PDpOsO39mMaHxfgbSoJM= + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +DCb5J8PcmLarosBP+ARWh55qTTvpHgcJENT9IlvOyTFDk3d0oWd8gphCcRh2T5VivYlGPyxX4EDn +CuWCeYU2yeO+Pa2a3TO/ILxO7cBWvi5aCsXcyvzEIX8tyZKAmn+hjil2V90/Gie+2oP/8ko0HjdO +s2sMco+a/8+0+on5liI= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/attacked-tpk/tizen-manifest.xml b/tests/vcore/resource/attacked-tpk/tizen-manifest.xml new file mode 100644 index 0000000..94f0327 --- /dev/null +++ b/tests/vcore/resource/attacked-tpk/tizen-manifest.xml @@ -0,0 +1,8 @@ + + + + + + preference.png + + diff --git a/tests/vcore/resource/normal-tpk.tpk b/tests/vcore/resource/normal-tpk.tpk new file mode 100644 index 0000000000000000000000000000000000000000..c2a9dd61074fd433e94d00c5c238df65fe0c459a GIT binary patch literal 65245 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%0D`D?pYszbNl{Le~ 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 + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +GJVkTe68bLdCB89jGKUovM3mk6oYen6MdWm66XRRERl3xdshPr4DpQ3ZA8ivaQArpTi435R4iy5W +EAjiABBLdXwmsE8lBS5rEskwg0f74CgMxf1ePjwrZJORFMLvsSTKZxlSffDki4nju9liJTlx/ygv +QJMe++8wdpWVArUkU1k= + + + + +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 + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/tpk-with-userdata/bin/preference b/tests/vcore/resource/tpk-with-userdata/bin/preference new file mode 100755 index 0000000000000000000000000000000000000000..bf206040ae3e94cca2f7868de2eb3473a3e59972 GIT binary patch literal 65078 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 B&u#z! literal 0 HcmV?d00001 diff --git a/tests/vcore/resource/tpk-with-userdata/res/edje/preference.edj b/tests/vcore/resource/tpk-with-userdata/res/edje/preference.edj new file mode 100644 index 0000000000000000000000000000000000000000..6778eb702dcefb914806985a5ec14aeba8eb0531 GIT binary patch literal 6727 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 + diff --git a/tests/vcore/resource/tpk-with-userdata/shared/res/preference.png b/tests/vcore/resource/tpk-with-userdata/shared/res/preference.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + + + +kY0SZLvGVjky2n9CVdX04y8PDpOsO39mMaHxfgbSoJM= + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +DCb5J8PcmLarosBP+ARWh55qTTvpHgcJENT9IlvOyTFDk3d0oWd8gphCcRh2T5VivYlGPyxX4EDn +CuWCeYU2yeO+Pa2a3TO/ILxO7cBWvi5aCsXcyvzEIX8tyZKAmn+hjil2V90/Gie+2oP/8ko0HjdO +s2sMco+a/8+0+on5liI= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/tpk-with-userdata/tizen-manifest.xml b/tests/vcore/resource/tpk-with-userdata/tizen-manifest.xml new file mode 100644 index 0000000..94f0327 --- /dev/null +++ b/tests/vcore/resource/tpk-with-userdata/tizen-manifest.xml @@ -0,0 +1,8 @@ + + + + + + preference.png + + diff --git a/tests/vcore/resource/tpk/author-signature.xml b/tests/vcore/resource/tpk/author-signature.xml new file mode 100644 index 0000000..acda94a --- /dev/null +++ b/tests/vcore/resource/tpk/author-signature.xml @@ -0,0 +1,88 @@ + + + + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +GJVkTe68bLdCB89jGKUovM3mk6oYen6MdWm66XRRERl3xdshPr4DpQ3ZA8ivaQArpTi435R4iy5W +EAjiABBLdXwmsE8lBS5rEskwg0f74CgMxf1ePjwrZJORFMLvsSTKZxlSffDki4nju9liJTlx/ygv +QJMe++8wdpWVArUkU1k= + + + + +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 + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/tpk/bin/preference b/tests/vcore/resource/tpk/bin/preference new file mode 100755 index 0000000000000000000000000000000000000000..bf206040ae3e94cca2f7868de2eb3473a3e59972 GIT binary patch literal 65078 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 B&u#z! literal 0 HcmV?d00001 diff --git a/tests/vcore/resource/tpk/res/edje/preference.edj b/tests/vcore/resource/tpk/res/edje/preference.edj new file mode 100644 index 0000000000000000000000000000000000000000..6778eb702dcefb914806985a5ec14aeba8eb0531 GIT binary patch literal 6727 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 + diff --git a/tests/vcore/resource/tpk/shared/res/preference.png b/tests/vcore/resource/tpk/shared/res/preference.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + + + +kY0SZLvGVjky2n9CVdX04y8PDpOsO39mMaHxfgbSoJM= + + + +R+wCQjviLt63vWd7HajbrPSbJbbOZC93+RPHowIK1Rw= + + + +KNopf8O7zUvszi2oqj8P0SvEIJKTC1rP2xP6akdSKXI= + + + +6jJJe4p6k14qWfbsmuOE+hBiI8SFKo82oHe73dBShdo= + + + +D1HJvj7+ZWJjqwg1kgncS2GmkcP86uScijC2PKhGeRU= + + + +SxJRm0cUVzrc/slDekjneWdmKHmwbQGd+x9oamqPvP8= + + + +2ZbyqC64RllT1GCNW5IIyp4vn8GswcvepAJJ/rY2HVk= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +/efF+N62cTq47hYqkQl5oCSNBBgzqfc30KbK97ikq48= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +DCb5J8PcmLarosBP+ARWh55qTTvpHgcJENT9IlvOyTFDk3d0oWd8gphCcRh2T5VivYlGPyxX4EDn +CuWCeYU2yeO+Pa2a3TO/ILxO7cBWvi5aCsXcyvzEIX8tyZKAmn+hjil2V90/Gie+2oP/8ko0HjdO +s2sMco+a/8+0+on5liI= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/tests/vcore/resource/tpk/tizen-manifest.xml b/tests/vcore/resource/tpk/tizen-manifest.xml new file mode 100644 index 0000000..94f0327 --- /dev/null +++ b/tests/vcore/resource/tpk/tizen-manifest.xml @@ -0,0 +1,8 @@ + + + + + + preference.png + + diff --git a/tests/vcore/test-cases/widget/author-signature.xml b/tests/vcore/resource/wgt/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget/author-signature.xml rename to tests/vcore/resource/wgt/author-signature.xml diff --git a/tests/vcore/test-cases/widget_partner_operator/config.xml b/tests/vcore/resource/wgt/config.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner_operator/config.xml rename to tests/vcore/resource/wgt/config.xml diff --git a/tests/vcore/test-cases/widget_partner_operator/index.html b/tests/vcore/resource/wgt/index.html similarity index 100% rename from tests/vcore/test-cases/widget_partner_operator/index.html rename to tests/vcore/resource/wgt/index.html diff --git a/tests/vcore/test-cases/widget_negative_signature/signature1.xml b/tests/vcore/resource/wgt/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_signature/signature1.xml rename to tests/vcore/resource/wgt/signature1.xml diff --git a/tests/vcore/test-cases/widget_negative_signature/signature22.xml b/tests/vcore/resource/wgt/signature22.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_signature/signature22.xml rename to tests/vcore/resource/wgt/signature22.xml diff --git a/tests/vcore/test-cases/widget_partner_operator/author-signature.xml b/tests/vcore/resource/wgt_negative_certificate/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner_operator/author-signature.xml rename to tests/vcore/resource/wgt_negative_certificate/author-signature.xml diff --git a/tests/vcore/test-cases/widget_partner/config.xml b/tests/vcore/resource/wgt_negative_certificate/config.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner/config.xml rename to tests/vcore/resource/wgt_negative_certificate/config.xml diff --git a/tests/vcore/test-cases/widget_partner/index.html b/tests/vcore/resource/wgt_negative_certificate/index.html similarity index 100% rename from tests/vcore/test-cases/widget_partner/index.html rename to tests/vcore/resource/wgt_negative_certificate/index.html diff --git a/tests/vcore/test-cases/widget_negative_certificate/signature1.xml b/tests/vcore/resource/wgt_negative_certificate/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_certificate/signature1.xml rename to tests/vcore/resource/wgt_negative_certificate/signature1.xml diff --git a/tests/vcore/test-cases/widget_negative_hash/author-signature.xml b/tests/vcore/resource/wgt_negative_hash/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_hash/author-signature.xml rename to tests/vcore/resource/wgt_negative_hash/author-signature.xml diff --git a/tests/vcore/test-cases/widget_negative_signature/config.xml b/tests/vcore/resource/wgt_negative_hash/config.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_signature/config.xml rename to tests/vcore/resource/wgt_negative_hash/config.xml diff --git a/tests/vcore/test-cases/widget_negative_signature/index.html b/tests/vcore/resource/wgt_negative_hash/index.html similarity index 100% rename from tests/vcore/test-cases/widget_negative_signature/index.html rename to tests/vcore/resource/wgt_negative_hash/index.html diff --git a/tests/vcore/test-cases/widget_negative_hash/signature1.xml b/tests/vcore/resource/wgt_negative_hash/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_hash/signature1.xml rename to tests/vcore/resource/wgt_negative_hash/signature1.xml diff --git a/tests/vcore/test-cases/widget_negative_hash/signature22.xml b/tests/vcore/resource/wgt_negative_hash/signature22.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_hash/signature22.xml rename to tests/vcore/resource/wgt_negative_hash/signature22.xml diff --git a/tests/vcore/test-cases/widget_negative_signature/author-signature.xml b/tests/vcore/resource/wgt_negative_signature/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_signature/author-signature.xml rename to tests/vcore/resource/wgt_negative_signature/author-signature.xml diff --git a/tests/vcore/test-cases/widget_negative_hash/config.xml b/tests/vcore/resource/wgt_negative_signature/config.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_hash/config.xml rename to tests/vcore/resource/wgt_negative_signature/config.xml diff --git a/tests/vcore/test-cases/widget_negative_hash/index.html b/tests/vcore/resource/wgt_negative_signature/index.html similarity index 100% rename from tests/vcore/test-cases/widget_negative_hash/index.html rename to tests/vcore/resource/wgt_negative_signature/index.html diff --git a/tests/vcore/test-cases/widget/signature1.xml b/tests/vcore/resource/wgt_negative_signature/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget/signature1.xml rename to tests/vcore/resource/wgt_negative_signature/signature1.xml diff --git a/tests/vcore/test-cases/widget/signature22.xml b/tests/vcore/resource/wgt_negative_signature/signature22.xml similarity index 100% rename from tests/vcore/test-cases/widget/signature22.xml rename to tests/vcore/resource/wgt_negative_signature/signature22.xml diff --git a/tests/vcore/test-cases/widget_partner/author-signature.xml b/tests/vcore/resource/wgt_partner/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner/author-signature.xml rename to tests/vcore/resource/wgt_partner/author-signature.xml diff --git a/tests/vcore/test-cases/widget_negative_certificate/config.xml b/tests/vcore/resource/wgt_partner/config.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_certificate/config.xml rename to tests/vcore/resource/wgt_partner/config.xml diff --git a/tests/vcore/test-cases/widget_negative_certificate/index.html b/tests/vcore/resource/wgt_partner/index.html similarity index 100% rename from tests/vcore/test-cases/widget_negative_certificate/index.html rename to tests/vcore/resource/wgt_partner/index.html diff --git a/tests/vcore/test-cases/widget_partner/signature1.xml b/tests/vcore/resource/wgt_partner/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner/signature1.xml rename to tests/vcore/resource/wgt_partner/signature1.xml diff --git a/tests/vcore/test-cases/widget_negative_certificate/author-signature.xml b/tests/vcore/resource/wgt_partner_operator/author-signature.xml similarity index 100% rename from tests/vcore/test-cases/widget_negative_certificate/author-signature.xml rename to tests/vcore/resource/wgt_partner_operator/author-signature.xml diff --git a/tests/vcore/test-cases/widget/config.xml b/tests/vcore/resource/wgt_partner_operator/config.xml similarity index 100% rename from tests/vcore/test-cases/widget/config.xml rename to tests/vcore/resource/wgt_partner_operator/config.xml diff --git a/tests/vcore/test-cases/widget/index.html b/tests/vcore/resource/wgt_partner_operator/index.html similarity index 100% rename from tests/vcore/test-cases/widget/index.html rename to tests/vcore/resource/wgt_partner_operator/index.html diff --git a/tests/vcore/test-cases/widget_partner_operator/signature1.xml b/tests/vcore/resource/wgt_partner_operator/signature1.xml similarity index 100% rename from tests/vcore/test-cases/widget_partner_operator/signature1.xml rename to tests/vcore/resource/wgt_partner_operator/signature1.xml diff --git a/tests/vcore/test-cases/reference/encoding test.empty b/tests/vcore/test-cases/reference/encoding test.empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/vcore/test-certificate.cpp b/tests/vcore/test-certificate.cpp new file mode 100644 index 0000000..216c2f7 --- /dev/null +++ b/tests/vcore/test-certificate.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "test-common.h" + +using namespace ValidationCore; + +RUNNER_TEST_GROUP_INIT(T0030_Certificate) + +/* + * test: class Certificate + * description: Certificate should parse data passed to object constructor. + * expected: Getters should be able to return certificate information. + */ +RUNNER_TEST(T0031_Certificate) +{ + Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); + std::string result; + + result = cert.getCommonName(Certificate::FIELD_SUBJECT); + RUNNER_ASSERT_MSG(!result.empty(), "No common name"); + RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch"); + + result = cert.getCommonName(Certificate::FIELD_ISSUER); + RUNNER_ASSERT_MSG(!result.empty(), "No common name"); + RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"), + "CommonName mismatch"); + + result = cert.getCountryName(); + RUNNER_ASSERT_MSG(!result.empty(), "No country"); + RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch"); +} + +/* + * test: Certificate::getFingerprint + * description: Certificate should parse data passed to object constructor. + * expected: Function fingerprint should return valid fingerprint. + */ +RUNNER_TEST(T0032_Certificate) +{ + Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); + + Certificate::Fingerprint fin = + cert.getFingerprint(Certificate::FINGERPRINT_SHA1); + + unsigned char buff[20] = { + 0xb9, 0x72, 0x1e, 0xd5, 0x49, + 0xed, 0xbf, 0x31, 0x84, 0xd8, + 0x27, 0x0c, 0xfe, 0x03, 0x11, + 0x19, 0xdf, 0xc2, 0x2b, 0x0a}; + RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint"); + + for (size_t i = 0; i<20; ++i) { + RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch"); + } +} + +/* + * test: Certificate::getAlternativeNameDNS + * description: Certificate should parse data passed to object constructor. + * expected: Function getAlternativeNameDNS should return list of + * alternativeNames hardcoded in certificate. + */ +RUNNER_TEST(T0033_Certificate) +{ + Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); + + Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS(); + + RUNNER_ASSERT(nameSet.size() == 8); + + std::string str("verisign.com"); + RUNNER_ASSERT(nameSet.find(str) != nameSet.end()); + + str = std::string("fake.com"); + RUNNER_ASSERT(nameSet.find(str) == nameSet.end()); + +} + +/* + * test: Certificate::isCA + * description: Certificate should parse data passed to object constructor. + * expected: 1st and 2nd certificate should be identified as CA. + */ +RUNNER_TEST(T0034_Certificate_isCA) +{ + Certificate cert1(TestData::googleCA, Certificate::FORM_BASE64); + RUNNER_ASSERT(cert1.isCA() > 0); + + Certificate cert2(TestData::google2nd, Certificate::FORM_BASE64); + RUNNER_ASSERT(cert2.isCA() > 0); + + Certificate cert3(TestData::google3rd, Certificate::FORM_BASE64); + RUNNER_ASSERT(cert3.isCA() == 0); +} diff --git a/tests/vcore/test-common.cpp b/tests/vcore/test-common.cpp index 3ef596b..e3efb8f 100644 --- a/tests/vcore/test-common.cpp +++ b/tests/vcore/test-common.cpp @@ -16,12 +16,17 @@ #include "test-common.h" -const std::string TestData::widget_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed/"; -const std::string TestData::widget_negative_hash_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed_negative_hash/"; -const std::string TestData::widget_negative_signature_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed_negative_signature/"; -const std::string TestData::widget_negative_certificate_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed_negative_certificate/"; -const std::string TestData::widget_partner_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed_partner/"; -const std::string TestData::widget_partner_operator_path = std::string(TESTAPP_RES_DIR) + "vcore_widget_uncompressed_partner_operator/"; +const std::string TestData::widget_path = std::string(TESTAPP_RES_DIR) + "apps/wgt"; +const std::string TestData::widget_negative_hash_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_hash"; +const std::string TestData::widget_negative_signature_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_signature"; +const std::string TestData::widget_negative_certificate_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_certificate"; +const std::string TestData::widget_partner_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_partner"; +const std::string TestData::widget_partner_operator_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_partner_operator"; + +const std::string TestData::tpk_path = std::string(TESTAPP_RES_DIR) + "apps/tpk"; +const std::string TestData::attacked_tpk_path = std::string(TESTAPP_RES_DIR) + "apps/attacked-tpk"; +const std::string TestData::tpk_with_userdata_path = std::string(TESTAPP_RES_DIR) + "apps/tpk-with-userdata"; +const std::string TestData::attacked_tpk_with_userdata_path = std::string(TESTAPP_RES_DIR) + "apps/attacked-tpk-with-userdata"; const std::string TestData::certEE = "MIIGXDCCBUSgAwIBAgIQKJK70TuBw91HAA0BqZSPETANBgkqhkiG9w0BAQsFADB3\n" diff --git a/tests/vcore/test-common.h b/tests/vcore/test-common.h index 4081830..01cc4fa 100644 --- a/tests/vcore/test-common.h +++ b/tests/vcore/test-common.h @@ -26,6 +26,11 @@ extern const std::string widget_negative_certificate_path; extern const std::string widget_partner_path; extern const std::string widget_partner_operator_path; +extern const std::string tpk_path; +extern const std::string attacked_tpk_path; +extern const std::string tpk_with_userdata_path; +extern const std::string attacked_tpk_with_userdata_path; + extern const std::string certEE; /* MBANK, signed by SYMANTEC, expires 04 Feb 2016 */ extern const std::string certIM; /* SYMANTEC, signed by VERISIGN, expires 30 Oct 2023 */ extern const std::string certRoot; /* VERISIGN, signed by self, expires 30 Oct 2023 */ diff --git a/tests/vcore/test-signature-validator.cpp b/tests/vcore/test-signature-validator.cpp index 7762695..9ab9228 100644 --- a/tests/vcore/test-signature-validator.cpp +++ b/tests/vcore/test-signature-validator.cpp @@ -27,14 +27,7 @@ using namespace ValidationCore; RUNNER_TEST_GROUP_INIT(T0010_SIGNATURE_VALIDATOR) -/* - * test: Class SignatureFinder - * description: SignatureFinder should search directory passed as - * param of constructor. - * expected: Signature finder should put information about 3 - * signture files in SinatureFileInfoSet. - */ -RUNNER_TEST(T0011_signature_finder) +RUNNER_TEST(T00101_finder) { SignatureFileInfoSet signatureSet; SignatureFinder signatureFinder(TestData::widget_path); @@ -76,15 +69,7 @@ RUNNER_TEST(T0011_signature_finder) RUNNER_ASSERT_MSG(count == 3, "Wrong signature file count."); } -/* - * test: Integration test of SignatureFinder, SignatureReader, - * SignatureValidator - * description: Directory passed to SignatureFinded constructor should be searched - * and 3 signature should be find. All signature should be parsed and verified. - * expected: Verificator should DISREGARD author signature and VERIFY - * distrubutor signature. - */ -RUNNER_TEST(T0012_signature_validator) +RUNNER_TEST(T00102_positive_public_check_ref) { SignatureFileInfoSet signatureSet; SignatureFinder signatureFinder(TestData::widget_path); @@ -97,27 +82,30 @@ RUNNER_TEST(T0012_signature_validator) SignatureData data; VCerr result = validator.check( TestData::widget_path, - false, + true, true, data); if (data.isAuthorSignature()) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); + "author sig validation should be disregarded: " + << validator.errorToString(result)); else if (data.getSignatureNumber() == 1) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); + "dist1 sig validation should be disregarded: " + << validator.errorToString(result)); else RUNNER_ASSERT_MSG(result == E_SIG_NONE, - "Validation failed"); + "dist22 sig validation should be success: " + << validator.errorToString(result)); } } -RUNNER_TEST(T00121_signature_validator_negative_hash_input) +RUNNER_TEST(T00103_positive_partner_check_ref) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_negative_hash_path); + SignatureFinder signatureFinder(TestData::widget_partner_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); @@ -126,46 +114,57 @@ RUNNER_TEST(T00121_signature_validator_negative_hash_input) SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_negative_hash_path, - false, + TestData::widget_partner_path, + true, true, data); - if (!data.isAuthorSignature()) - RUNNER_ASSERT_MSG(result == E_SIG_INVALID_FORMAT, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - else - RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); + + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "sig validation should be success: " + << validator.errorToString(result)); + + if (!data.isAuthorSignature()) { + RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER, + "visibility check failed."); + } } } -RUNNER_TEST(T00122_signature_validator_negative_signature_input) +RUNNER_TEST(T00104_positive_public_uncheck_ref) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_negative_signature_path); + SignatureFinder signatureFinder(TestData::widget_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); + for (auto &sig : signatureSet) { SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_negative_signature_path, - false, + TestData::widget_path, true, + false, data); - if (!data.isAuthorSignature()) - RUNNER_ASSERT_MSG(result == E_SIG_INVALID_FORMAT, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - else + if (data.isAuthorSignature()) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); + "author sig validation should be disregraded: " + << validator.errorToString(result)); + else + if (data.getSignatureNumber() == 1) + RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, + "disg1 sig validation should be disregarded: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "dist22 sig validation should be success: " + << validator.errorToString(result)); } } -RUNNER_TEST(T00123_signature_validator_partner) +RUNNER_TEST(T00105_positive_partner_uncheck_ref) { SignatureFileInfoSet signatureSet; SignatureFinder signatureFinder(TestData::widget_partner_path); @@ -178,59 +177,87 @@ RUNNER_TEST(T00123_signature_validator_partner) SignatureData data; VCerr result = validator.check( TestData::widget_partner_path, - false, true, + false, data); RUNNER_ASSERT_MSG(result == E_SIG_NONE, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - if (!data.isAuthorSignature()) { - RUNNER_ASSERT_MSG( - data.getVisibilityLevel() == CertStoreId::VIS_PARTNER, - "visibility check failed."); - } + "sig validation should be success: " + << validator.errorToString(result)); + + if (!data.isAuthorSignature()) + RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER, + "visibility check failed."); } } -/* - * test: Integration test of SignatureFinder, SignatureReader, - * SignatureValidator - * description: Directory passed to SignatureFinded constructor should be searched - * and 3 signature should be find. All signature should be parsed and verified. - * expected: Verificator should DISREGARD author signature and VERIFY - * distrubutor signature. - */ -RUNNER_TEST(T0013_signature_validator) + +RUNNER_TEST(T00106_positive_tpk) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_path); + SignatureFinder signatureFinder(TestData::tpk_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); - for (auto &sig : signatureSet) { SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_path, - false, - false, + TestData::tpk_path, + true, + true, data); if (data.isAuthorSignature()) - RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "author sig validation should be success: " + << validator.errorToString(result)); else - if (data.getSignatureNumber() == 1) - RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); - else - RUNNER_ASSERT_MSG(result == E_SIG_NONE, - "Validation failed"); + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "dist sig validation should be success: " + << validator.errorToString(result)); } } -RUNNER_TEST(T00131_signature_validator_negative_hash_input) +RUNNER_TEST(T00107_positive_tpk_with_userdata) +{ + SignatureFileInfoSet signatureSet; + SignatureFinder signatureFinder(TestData::tpk_with_userdata_path); + RUNNER_ASSERT_MSG( + SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), + "SignatureFinder failed"); + + UriList uriList; + uriList.emplace_back("author-siganture.xml"); + uriList.emplace_back("bin/preference"); + uriList.emplace_back("res/edje/pref_buttons_panel.edj"); + uriList.emplace_back("res/edje/pref_edit_panel.edj"); + uriList.emplace_back("res/edje/preference.edj"); + uriList.emplace_back("res/images/icon_delete.png"); + uriList.emplace_back("res/res.xml"); + uriList.emplace_back("shared/res/preference.png"); + uriList.emplace_back("tizen-manifest.xml"); + + for (auto &sig : signatureSet) { + SignatureValidator validator(sig); + SignatureData data; + VCerr result = validator.checkList( + true, + uriList, + data); + + if (data.isAuthorSignature()) + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "author sig validation should be success: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "dist sig validation should be success: " + << validator.errorToString(result)); + } +} + +RUNNER_TEST(T00151_negative_hash_check_ref) { SignatureFileInfoSet signatureSet; SignatureFinder signatureFinder(TestData::widget_negative_hash_path); @@ -243,23 +270,24 @@ RUNNER_TEST(T00131_signature_validator_negative_hash_input) SignatureData data; VCerr result = validator.check( TestData::widget_negative_hash_path, - false, - false, + true, + true, data); - - if (!data.isAuthorSignature()) - RUNNER_ASSERT_MSG(result == E_SIG_INVALID_FORMAT, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - else + if (data.isAuthorSignature()) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); + "author sig shouldn't be failed because it only checks cert chain: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "dist sig shouldn't be success: " + << validator.errorToString(result)); } } -RUNNER_TEST(T00132_signature_validator_negative_signature_input) +RUNNER_TEST(T00152_negative_hash_uncheck_ref) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_negative_signature_path); + SignatureFinder signatureFinder(TestData::widget_negative_hash_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); @@ -268,24 +296,26 @@ RUNNER_TEST(T00132_signature_validator_negative_signature_input) SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_negative_signature_path, - false, + TestData::widget_negative_hash_path, + true, false, data); - if (!data.isAuthorSignature()) - RUNNER_ASSERT_MSG(result == E_SIG_INVALID_FORMAT, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - else + if (data.isAuthorSignature()) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); + "author sig shouldn't be failed because it only checks cert chain: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "dist sig shouldn't be success: " + << validator.errorToString(result)); } } -RUNNER_TEST(T00133_signature_validator_partner) +RUNNER_TEST(T00153_negative_signature_check_ref) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_partner_path); + SignatureFinder signatureFinder(TestData::widget_negative_signature_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); @@ -294,181 +324,117 @@ RUNNER_TEST(T00133_signature_validator_partner) SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_partner_path, - false, - false, + TestData::widget_negative_signature_path, + true, + true, data); - RUNNER_ASSERT_MSG(result == E_SIG_NONE, - "Wrong input file but success.. Errorcode : " << validator.errorToString(result)); - - if (!data.isAuthorSignature()) - RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER, - "visibility check failed."); + if (data.isAuthorSignature()) + RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, + "author sig validation should be disregarded: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "dist sig validation should be failed: " + << validator.errorToString(result)); } } -/* - * test: Integration test of SignatureFinder, SignatureReader, - * SignatureValidator, ReferenceValidator - * description: As above but this test also checks reference from signatures. - * expected: All reference checks should return NO_ERROR. - */ -RUNNER_TEST(T0014_signature_reference) +RUNNER_TEST(T00154_negative_signature_uncheck_ref) { SignatureFileInfoSet signatureSet; - SignatureFinder signatureFinder(TestData::widget_path); + SignatureFinder signatureFinder(TestData::widget_negative_signature_path); RUNNER_ASSERT_MSG( SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), "SignatureFinder failed"); - for (auto &sig : signatureSet) { SignatureValidator validator(sig); SignatureData data; VCerr result = validator.check( - TestData::widget_path, - false, + TestData::widget_negative_signature_path, + true, false, data); if (data.isAuthorSignature()) RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); + "author sig validation should be disregarded: " + << validator.errorToString(result)); else - if (data.getSignatureNumber() == 1) - RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED, - "Validation failed"); - else - RUNNER_ASSERT_MSG(result == E_SIG_NONE, - "Validation failed"); + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "dist sig should be failed: " + << validator.errorToString(result)); } } -/* - * test: ReferenceValidator::checkReference - * description: Simple test. File "encoding test.empty" exists. - * expected: checkReference should return NO_ERROR. - */ -/* -RUNNER_TEST(T00141_signature_reference_encoding_dummy) +RUNNER_TEST(T00155_negative_tpk_with_added_malfile) { - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("encoding test.empty"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp, - "Errorcode : " << refValidatorErrorToString(temp)); -} -*/ + SignatureFileInfoSet signatureSet; + SignatureFinder signatureFinder(TestData::attacked_tpk_path); + RUNNER_ASSERT_MSG( + SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), + "SignatureFinder failed"); -/* - * test: ReferenceValidator::checkReference - * description: Negative test. File "encoding test" does not exists. - * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND - */ -/* -RUNNER_TEST(T00142_signature_reference_encoding_negative) -{ - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("encoding test"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp, - "Errorcode : " << refValidatorErrorToString(temp)); -} -*/ + for (auto &sig : signatureSet) { + SignatureValidator validator(sig); + SignatureData data; + VCerr result = validator.check( + TestData::attacked_tpk_path, + true, + true, + data); -/* - * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent - * description: File "encoding test.empty" exists. Name set in referenceSet must - * be encoded first by decodeProcent function. - * expected: checkReference should return NO_ERROR - */ -/* -RUNNER_TEST(T00143_signature_reference_encoding_space) -{ - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("encoding%20test.empty"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp, - "Errorcode : " << refValidatorErrorToString(temp)); + if (data.isAuthorSignature()) + RUNNER_ASSERT_MSG(result == E_SIG_NONE, + "author sig validation should be success: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_REF, + "dist sig validation should be failed: " + << validator.errorToString(result)); + } } -*/ -/* - * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent - * description: Negative test. File "encoding test" does not exists. Name set in - * referenceSet must be encoded first by decodeProcent function. - * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND - */ -/* -RUNNER_TEST(T00144_signature_reference_encoding_space_negative) +RUNNER_TEST(T00156_negative_tpk_with_userdata_file_changed_in_list) { - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("encoding%20test"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp, - "Errorcode : " << refValidatorErrorToString(temp)); -} -*/ + SignatureFileInfoSet signatureSet; + SignatureFinder signatureFinder(TestData::attacked_tpk_with_userdata_path); + RUNNER_ASSERT_MSG( + SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet), + "SignatureFinder failed"); -/* - * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent - * description: File "encoding test.empty" exists. Name set in - * referenceSet must be encoded first by decodeProcent function. - * expected: checkReference should return NO_ERROR - */ -/* -RUNNER_TEST(T00145_signature_reference_encoding) -{ - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("e%6Ec%6Fding%20te%73%74.e%6d%70ty"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp, - "Errorcode : " << refValidatorErrorToString(temp)); -} -*/ + UriList uriList; + uriList.emplace_back("author-siganture.xml"); + uriList.emplace_back("bin/preference"); + uriList.emplace_back("res/edje/pref_buttons_panel.edj"); + uriList.emplace_back("res/edje/pref_edit_panel.edj"); + uriList.emplace_back("res/edje/preference.edj"); + uriList.emplace_back("res/images/icon_delete.png"); + uriList.emplace_back("res/res.xml"); + uriList.emplace_back("shared/res/preference.png"); -/* - * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent - * description: Negative test. "%%" is illegal combination of char. decodeProcent - * should throw exception. - * expected: checkReference should return ERROR_DECODING_URL - */ -/* -RUNNER_TEST(T00146_signature_reference_encoding_negative) -{ - ReferenceSet referenceSet; - SignatureData data; - ReferenceValidator val("/usr/apps/widget/tests/reference"); - referenceSet.insert("e%6Ec%6Fding%%0test%2ete%73%74"); - data.setReference(referenceSet); - - int temp = val.checkReferences(data); - RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_DECODING_URL == temp, - "Errorcode : " << refValidatorErrorToString(temp)); -} -*/ + /* this file is modified after signing app */ + uriList.emplace_back("tizen-manifest.xml"); + for (auto &sig : signatureSet) { + SignatureValidator validator(sig); + SignatureData data; + VCerr result = validator.checkList( + true, + uriList, + data); + + if (data.isAuthorSignature()) + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "author sig validation should be failed: " + << validator.errorToString(result)); + else + RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG, + "dist sig validation should be failed: " + << validator.errorToString(result)); + } +} RUNNER_TEST_GROUP_INIT(T0020_SigVal_errorstring) @@ -489,92 +455,3 @@ RUNNER_TEST(T0021) << validator.errorToString(code) << std::endl; } } - -RUNNER_TEST_GROUP_INIT(T0030_Certificate) - -/* - * test: class Certificate - * description: Certificate should parse data passed to object constructor. - * expected: Getters should be able to return certificate information. - */ -RUNNER_TEST(T0031_Certificate) -{ - Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); - std::string result; - - result = cert.getCommonName(Certificate::FIELD_SUBJECT); - RUNNER_ASSERT_MSG(!result.empty(), "No common name"); - RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch"); - - result = cert.getCommonName(Certificate::FIELD_ISSUER); - RUNNER_ASSERT_MSG(!result.empty(), "No common name"); - RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"), - "CommonName mismatch"); - - result = cert.getCountryName(); - RUNNER_ASSERT_MSG(!result.empty(), "No country"); - RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch"); -} - -/* - * test: Certificate::getFingerprint - * description: Certificate should parse data passed to object constructor. - * expected: Function fingerprint should return valid fingerprint. - */ -RUNNER_TEST(T0032_Certificate) -{ - Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); - - Certificate::Fingerprint fin = - cert.getFingerprint(Certificate::FINGERPRINT_SHA1); - - unsigned char buff[20] = { - 0xb9, 0x72, 0x1e, 0xd5, 0x49, - 0xed, 0xbf, 0x31, 0x84, 0xd8, - 0x27, 0x0c, 0xfe, 0x03, 0x11, - 0x19, 0xdf, 0xc2, 0x2b, 0x0a}; - RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint"); - - for (size_t i = 0; i<20; ++i) { - RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch"); - } -} - -/* - * test: Certificate::getAlternativeNameDNS - * description: Certificate should parse data passed to object constructor. - * expected: Function getAlternativeNameDNS should return list of - * alternativeNames hardcoded in certificate. - */ -RUNNER_TEST(T0033_Certificate) -{ - Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64); - - Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS(); - - RUNNER_ASSERT(nameSet.size() == 8); - - std::string str("verisign.com"); - RUNNER_ASSERT(nameSet.find(str) != nameSet.end()); - - str = std::string("fake.com"); - RUNNER_ASSERT(nameSet.find(str) == nameSet.end()); - -} - -/* - * test: Certificate::isCA - * description: Certificate should parse data passed to object constructor. - * expected: 1st and 2nd certificate should be identified as CA. - */ -RUNNER_TEST(T0034_Certificate_isCA) -{ - Certificate cert1(TestData::googleCA, Certificate::FORM_BASE64); - RUNNER_ASSERT(cert1.isCA() > 0); - - Certificate cert2(TestData::google2nd, Certificate::FORM_BASE64); - RUNNER_ASSERT(cert2.isCA() > 0); - - Certificate cert3(TestData::google3rd, Certificate::FORM_BASE64); - RUNNER_ASSERT(cert3.isCA() == 0); -} -- 2.7.4