3 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 #include <dpl/test/test_runner.h>
20 #include <vcore/SignatureFinder.h>
21 #include <vcore/SignatureValidator.h>
26 const std::string widget_path =
27 "/usr/apps/widget/tests/vcore_widget_uncompressed/";
28 const std::string widget_negative_hash_path =
29 "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_hash/";
30 const std::string widget_negative_signature_path =
31 "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_signature/";
32 const std::string widget_negative_certificate_path =
33 "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_certificate/";
34 const std::string widget_partner_path =
35 "/usr/apps/widget/tests/vcore_widget_uncompressed_partner/";
36 const std::string widget_partner_operator_path =
37 "/usr/apps/widget/tests/vcore_widget_uncompressed_partner_operator/";
40 const std::string keys_path = "/usr/apps/widget/tests/vcore_keys/";
41 const std::string widget_store_path = "/usr/apps/widget/tests/vcore_widgets/";
42 const std::string cert_store_path = "/usr/apps/widget/tests/vcore_certs/";
44 const std::string anka_ec_key_type = "urn:oid:1.2.840.10045.3.1.7";
45 const std::string anka_ec_public_key =
46 "BGi9RmTUjpqCpQjx6SSiKdfmtjQBFNSN7ghm6TuaH9r4x73WddeLxLioH3VEmFLC+QLiR"\
47 "kPxDxL/6YmQdgfGrqk=";
49 const std::string rsa_modulus =
50 "ocwjKEFaPxLNcPTz2PtT2Gyu5jzkWaPo4thjZo3rXuNbD4TzjY02UGnTxvflNeORLpSS1"\
51 "PeYr/1E/Nhr7qQAzj9g0DwW7p8zQEdOUi3v76VykeB0pFJH+0Fxp6LVBX9Z+EvZk+dbOy"\
52 "GJ4Njm9B6M09axXlV11Anj9B/HYUDfDX8=";
53 const std::string rsa_exponent = "AQAB";
55 const std::string magda_dsa_p =
56 "2BYIQj0ePUVxzrdBT41eCblraa9Dqag7QXFMCRM2PtyS22JPDKuV77tBc/jg0V3htHWdR"\
57 "q9n6/kQDwrP7FIPoLATLIiC3oAYWj46Mr6d9k/tt/JZU6PvULmB2k1wrrmvKUi+U+I5Ro"\
58 "qe8ui8lqR9pp9u2WCh2QmFfCohKNjN5qs=";
59 const std::string magda_dsa_q = "4p4JcDqz+S7CbWyd8txApZw0sik=";
60 const std::string magda_dsa_g =
61 "AQrLND1ZGFvzwBpPPXplmPh1ijPx1O2gQEvPvyjR88guWcGqQc0m7dTb6PEvbI/oZ0o91"\
62 "k7VEkfthURnNR1WtOLT8dmAuKQfwTQLPwCwUM/QiuWSlCyKLTE4Ev8aOG7ZqWudsKm/td"\
63 "n9pUNGtcod1wo1ZtP7PfEJ6rYZGQDOlz8=";
65 const std::string tizen_partner =
66 "MIICozCCAgwCCQD9IBoOxzq2hjANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMC"
67 "S1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6"
68 "ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEq"
69 "MCgGA1UEAwwhVGl6ZW4gUGFydG5lciBEaXN0cmlidXRvciBSb290IENBMB4XDTEy"
70 "MTAyNjA4MTIzMVoXDTIyMTAyNDA4MTIzMVowgZUxCzAJBgNVBAYTAktSMQ4wDAYD"
71 "VQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3Qg"
72 "Q0ExIjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKjAoBgNVBAMM"
73 "IVRpemVuIFBhcnRuZXIgRGlzdHJpYnV0b3IgUm9vdCBDQTCBnzANBgkqhkiG9w0B"
74 "AQEFAAOBjQAwgYkCgYEAnIBA2qQEaMzGalP0kzvwUxdCC6ybSC/fb+M9iGvt8QXp"
75 "ic2yARQB+bIhfbEu1XHwE1jCAGxKd6uT91b4FWr04YwnBPoRX4rBGIYlqo/dg+pS"
76 "rGyFjy7vfr0BOdWp2+WPlTe7SOS6bVauncrSoHxX0spiLaU5LU686BKr7YaABV0C"
77 "AwEAATANBgkqhkiG9w0BAQUFAAOBgQAX0Tcfmxcs1TUPBdr1U1dx/W/6Y4PcAF7n"
78 "DnMrR0ZNRPgeSCiVLax1bkHxcvW74WchdKIb24ZtAsFwyrsmUCRV842YHdfddjo6"
79 "xgUu7B8n7hQeV3EADh6ft/lE8nalzAl9tALTxAmLtYvEYA7thvDoKi1k7bN48izL"
82 const std::string tizen_partner_operator =
83 "MIICzDCCAjWgAwIBAgIJAJrv22F9wyp/MA0GCSqGSIb3DQEBBQUAMIGeMQswCQYD"
84 "VQQGEwJLUjEOMAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQK"
85 "DA1UaXplbiBUZXN0IENBMSIwIAYDVQQLDBlUaXplbiBEaXN0cmlidXRvciBUZXN0"
86 "IENBMTMwMQYDVQQDDCpUaXplbiBQYXJ0bmVyLU9wZXJhdG9yIERpc3RyaWJ1dG9y"
87 "IFJvb3QgQ0EwHhcNMTIxMjEzMDUzOTMyWhcNMjIxMjExMDUzOTMyWjCBnjELMAkG"
88 "A1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UE"
89 "CgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVz"
90 "dCBDQTEzMDEGA1UEAwwqVGl6ZW4gUGFydG5lci1PcGVyYXRvciBEaXN0cmlidXRv"
91 "ciBSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9X0Hw0EfAuagg"
92 "De9h6Jtvh8Df4fyVbvLm9VNea/iVP3/qTbG8tNqoQ32lu0SwzAZBnjpvpbxzsWs9"
93 "pSYo7Ys1fymHlu+gf+kmTGTVscBrAHWkr4O0m33x2FYfy/wmu+IImnRDYDud83rN"
94 "tjQmMO6BihN9Lb6kLiEtVIa8ITwdQwIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G"
95 "CSqGSIb3DQEBBQUAA4GBAHS2M2UnfEsZf80/sT84xTcfASXgpFL/1M5HiAVpR+1O"
96 "UwLpLyqHiGQaASuADDeGEfcIqEf8gP1SzvnAZqLx9GchbOrOKRleooVFH7PRxFBS"
97 "VWJ5Fq46dJ1mCgTWSkrL6dN5j9hWCzzGfv0Wco+NAf61n9kVbCv7AScIJwQNltOy";
99 const std::string googleCA =
100 "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG"
101 "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz"
102 "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2"
103 "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV"
104 "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt"
105 "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN"
106 "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE"
107 "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is"
108 "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G"
109 "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do"
110 "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc"
111 "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k";
113 const std::string google2nd =
114 "MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV"
115 "UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi"
116 "bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw"
117 "MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh"
118 "d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD"
119 "QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx"
120 "PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g"
121 "5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo"
122 "3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG"
123 "A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX"
124 "BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov"
125 "L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG"
126 "AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF"
127 "BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB"
128 "BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc"
129 "q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR"
130 "bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv";
132 const std::string google3rd =
133 "MIIDIjCCAougAwIBAgIQK59+5colpiUUIEeCdTqbuTANBgkqhkiG9w0BAQUFADBM"
134 "MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg"
135 "THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x"
136 "MzA5MzAyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh"
137 "MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw"
138 "FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
139 "AoGBAK85FZho5JL+T0/xu/8NLrD+Jaq9aARnJ+psQ0ynbcvIj36B7ocmJRASVDOe"
140 "qj2bj46Ss0sB4/lKKcMP/ay300yXKT9pVc9wgwSvLgRudNYPFwn+niAkJOPHaJys"
141 "Eb2S5LIbCfICMrtVGy0WXzASI+JMSo3C2j/huL/3OrGGvvDFAgMBAAGjgecwgeQw"
142 "DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0"
143 "ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF"
144 "BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0"
145 "cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3"
146 "dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF"
147 "BQADgYEANYARzVI+hCn7wSjhIOUCj19xZVgdYnJXPOZeJWHTy60i+NiBpOf0rnzZ"
148 "wW2qkw1iB5/yZ0eZNDNPPQJ09IHWOAgh6OKh+gVBnJzJ+fPIo+4NpddQVF4vfXm3"
149 "fgp8tuIsqK7+lNfNFjBxBKqeecPStiSnJavwSI4vw6e7UN0Pz7A=";
151 const std::string certVerisign =
152 "MIIG+DCCBeCgAwIBAgIQU9K++SSnJF6DygHkbKokdzANBgkqhkiG9w0BAQUFADCB"
153 "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL"
154 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug"
155 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv"
156 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew"
157 "HhcNMTAwNTI2MDAwMDAwWhcNMTIwNTI1MjM1OTU5WjCCASkxEzARBgsrBgEEAYI3"
158 "PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxGzAZBgNVBA8TElYx"
159 "LjAsIENsYXVzZSA1LihiKTEQMA4GA1UEBRMHMjQ5Nzg4NjELMAkGA1UEBhMCVVMx"
160 "DjAMBgNVBBEUBTk0MDQzMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHFA1N"
161 "b3VudGFpbiBWaWV3MSIwIAYDVQQJFBk0ODcgRWFzdCBNaWRkbGVmaWVsZCBSb2Fk"
162 "MRcwFQYDVQQKFA5WZXJpU2lnbiwgSW5jLjEmMCQGA1UECxQdIFByb2R1Y3Rpb24g"
163 "U2VjdXJpdHkgU2VydmljZXMxGTAXBgNVBAMUEHd3dy52ZXJpc2lnbi5jb20wggEi"
164 "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCj+PvvK+fZOXwno0yT/OTy2Zm9"
165 "ehnZjTtO/X2IWBEa3jG30C52uHFQI4NmXiQVNvJHkBaAj0ilVjvGdxXmkyyFsugt"
166 "IWOTZ8pSKdX1tmGFIon6Ko9+lBFkVkudA1ogAUbtTB8IcdeOlpK78T4SjdVMhY18"
167 "150YzSw6hRKlw52wBaDxtGZElvOth41K7TUcaDnQVzz5SBPW5MUhi7AWrdoSk17O"
168 "BozOzmB/jkYDVDnwLcbR89SLHEOle/idSYSDQUmab3y0JS8RyQV1+DB70mnFALnD"
169 "fLiL47nMQQCGxXgp5voQ2YmSXhevKmEJ9vvtC6C7yv2W6yomfS/weUEce9pvAgMB"
170 "AAGjggKCMIICfjCBiwYDVR0RBIGDMIGAghB3d3cudmVyaXNpZ24uY29tggx2ZXJp"
171 "c2lnbi5jb22CEHd3dy52ZXJpc2lnbi5uZXSCDHZlcmlzaWduLm5ldIIRd3d3LnZl"
172 "cmlzaWduLm1vYmmCDXZlcmlzaWduLm1vYmmCD3d3dy52ZXJpc2lnbi5ldYILdmVy"
173 "aXNpZ24uZXUwCQYDVR0TBAIwADAdBgNVHQ4EFgQU8oBwK/WBXCZDWi0dbuDgPyTK"
174 "iJIwCwYDVR0PBAQDAgWgMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9FVkludGwt"
175 "Y3JsLnZlcmlzaWduLmNvbS9FVkludGwyMDA2LmNybDBEBgNVHSAEPTA7MDkGC2CG"
176 "SAGG+EUBBxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv"
177 "bS9ycGEwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMCBglghkgBhvhCBAEw"
178 "HwYDVR0jBBgwFoAUTkPIHXbvN1N6T/JYb5TzOOLVvd8wdgYIKwYBBQUHAQEEajBo"
179 "MCsGCCsGAQUFBzABhh9odHRwOi8vRVZJbnRsLW9jc3AudmVyaXNpZ24uY29tMDkG"
180 "CCsGAQUFBzAChi1odHRwOi8vRVZJbnRsLWFpYS52ZXJpc2lnbi5jb20vRVZJbnRs"
181 "MjAwNi5jZXIwbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEw"
182 "HzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28u"
183 "dmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQB9VZxB"
184 "wDMRGyhFWYkY5rwUVGuDJiGeas2xRJC0G4+riQ7IN7pz2a2BhktmZ5HbxXL4ZEY4"
185 "yMN68DEVErhtKiuL02ng27alhlngadKQzSL8pLdmQ+3jEwm9nva5C/7pbeqy+qGF"
186 "is4IWNYOc4HKNkABxXm5v0ouys8HPNkTLFLep0gLqRXW3gYN2XbKUWMs7z7hJpkY"
187 "GxP8YQSxi513O2dWVCXB8S6erIz9E/bcfdXoCPyQdn42y3IEoJvPvBS3S55fD4+Q"
188 "Q43GPhumSg9a6S3hnyw8DX5OiUGmqgQrtSeDRsNmWqtWizEQbe+fotZpEn/7zYTa"
191 const std::string crlExampleCertificate =
192 "MIIFlDCCBHygAwIBAgIBADANBgkqhkiG9w0BAQUFADBDMRIwEAYKCZImiZPyLGQB"
193 "GRYCZXMxGDAWBgoJkiaJk/IsZAEZFghpcmlzZ3JpZDETMBEGA1UEAxMKSVJJU0dy"
194 "aWRDQTAeFw0wNTA2MjgwNTAyMjhaFw0xNTA2MjYwNTAyMjhaMEMxEjAQBgoJkiaJ"
195 "k/IsZAEZFgJlczEYMBYGCgmSJomT8ixkARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJ"
196 "UklTR3JpZENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1CQiWlff"
197 "ajoMSTuismKqLQ+Mt33Tq4bBpCZvCBXhqan1R0ksILPtK1L7C8QWqPk6AZZpuNmY"
198 "cNVtJGc8ksgDWvX0EB3GKwZTZ8RrSRlSEe9Otq+Ur7S9uxM1JMmCr6zZTMFANzBS"
199 "4btnduV78C09IhFYG4OW8IPhNrbfPaeOR+PRPAa/qdSONAwTrM1sZkIvGpAkBWM6"
200 "Pn7TK9BAK6GLvwgii780fWj3Cwgmp8EDCTievBbWj+z8/apMEy9R0vyB2dWNNCnk"
201 "6q8VvrjgMsJt33O3BqOoBuZ8R/SS9OFWLFSU3s7cfrRaUSJk/Mx8OGFizRkcXSzX"
202 "0Nidcg7hX5i78wIDAQABo4ICkTCCAo0wDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E"
203 "FgQUnUJkLlupXvH/bMg8NtPxtkOYrRowawYDVR0jBGQwYoAUnUJkLlupXvH/bMg8"
204 "NtPxtkOYrRqhR6RFMEMxEjAQBgoJkiaJk/IsZAEZFgJlczEYMBYGCgmSJomT8ixk"
205 "ARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJUklTR3JpZENBggEAMA4GA1UdDwEB/wQE"
206 "AwIBxjARBglghkgBhvhCAQEEBAMCAAcwOwYJYIZIAYb4QgENBC4WLElSSVNHcmlk"
207 "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENlcnRpZmljYXRlMIGZBgNVHR8EgZEw"
208 "gY4wLqAsoCqGKGh0dHA6Ly93d3cuaXJpc2dyaWQuZXMvcGtpL2NybC9jYWNybC5w"
209 "ZW0wXKBaoFiGVmxkYXA6Ly9sZGFwLmlyaXNncmlkLmVzOjEzODAvY249SVJJU0dy"
210 "aWRDQSxkYz1pcmlzZ3JpZCxkYz1lcz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0"
211 "MDcGCWCGSAGG+EIBAwQqFihodHRwOi8vd3d3LmlyaXNncmlkLmVzL3BraS9jcmwv"
212 "Y2FjcmwucGVtME4GCWCGSAGG+EIBCARBFj9odHRwOi8vd3d3LmlyaXNncmlkLmVz"
213 "L3BraS9wb2xpY3kvMS4zLjYuMS40LjEuNzU0Ny4yLjIuNC4xLjEuMS8waQYDVR0g"
214 "BGIwYDBeBg0rBgEEAbp7AgIEAQEBME0wSwYIKwYBBQUHAgEWP2h0dHA6Ly93d3cu"
215 "aXJpc2dyaWQuZXMvcGtpL3BvbGljeS8xLjMuNi4xLjQuMS43NTQ3LjIuMi40LjEu"
216 "MS4xLzANBgkqhkiG9w0BAQUFAAOCAQEAaqRfyLER+P2QOZLLdz66m7FGsgtFsAEx"
217 "wiNrIChFWfyHVZG7Ph1fn/GDD5LMsrU23lx3NBN5/feHuut1XNYKNs8vtV07D70r"
218 "DKjUlPbmWV0B+/GDxe1FDGop/tKQfyHSUaBuauXChFU/2INu5lhBerNl7QxNJ1ws"
219 "cWGiT7R+L/2EjgzWgH1V/0zmIOMep6kY7MUs8rlyF0O5MNFs232cA1trl9kvhAGU"
220 "9p58Enf5DWMrh17SPH586yIJeiWZtPez9G54ftY+XIqfn0X0zso0dnoXNJQYS043"
221 "/5vSnoHdRx/EmN8yjeEavZtC48moN0iJ38eB44uKgCD77rZW5s1XqA==";
223 } // namespace anonymous
225 using namespace ValidationCore;
228 * test: Class SignatureFinder
229 * description: SignatureFinder should search directory passed as
230 * param of constructor.
231 * expected: Signature finder should put information about 3
232 * signture files in SinatureFileInfoSet.
234 RUNNER_TEST(test01_signature_finder)
236 SignatureFileInfoSet signatureSet;
237 SignatureFinder signatureFinder(widget_path);
239 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
240 "SignatureFinder failed");
241 RUNNER_ASSERT_MSG(signatureSet.size() == 3, "Some signature has not been found");
245 auto iter = signatureSet.begin();
246 SignatureFileInfo fileInfo = *iter++;
247 std::string fileName = fileInfo.getFileName();
248 int fileNum = fileInfo.getFileNumber();
249 if ((fileName.find("author-signature.xml") != std::string::npos && fileNum == -1)
250 || (fileName.find("signature1.xml") != std::string::npos && fileNum == 1)
251 || (fileName.find("signature22.xml") != std::string::npos && fileNum == 22))
253 RUNNER_ASSERT_MSG(iter != signatureSet.end(), "There should be more items");
256 fileName = fileInfo.getFileName();
257 fileNum = fileInfo.getFileNumber();
258 if ((fileName.find("author-signature.xml") != std::string::npos && fileNum == -1)
259 || (fileName.find("signature1.xml") != std::string::npos && fileNum == 1)
260 || (fileName.find("signature22.xml") != std::string::npos && fileNum == 22))
262 RUNNER_ASSERT_MSG(iter != signatureSet.end(), "There should be more items");
265 fileName = fileInfo.getFileName();
266 fileNum = fileInfo.getFileNumber();
267 if ((fileName.find("author-signature.xml") != std::string::npos && fileNum == -1)
268 || (fileName.find("signature1.xml") != std::string::npos && fileNum == 1)
269 || (fileName.find("signature22.xml") != std::string::npos && fileNum == 22))
271 RUNNER_ASSERT_MSG(iter == signatureSet.end(), "It should be last item");
273 RUNNER_ASSERT_MSG(count == 3, "Wrong signature file count.");
277 * test: Integration test of SignatureFinder, SignatureReader,
279 * description: Directory passed to SignatureFinded constructor should be searched
280 * and 3 signature should be find. All signature should be parsed and verified.
281 * expected: Verificator should DISREGARD author signature and VERIFY
282 * distrubutor signature.
284 RUNNER_TEST(test03t01_signature_validator)
286 SignatureFileInfoSet signatureSet;
287 SignatureFinder signatureFinder(widget_path);
289 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
290 "SignatureFinder failed");
292 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
293 iter != signatureSet.rend();
296 SignatureValidator::Result valResult = SignatureValidator::check(
303 if (data.isAuthorSignature())
304 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
305 "Validation failed");
307 if (data.getSignatureNumber() == 1)
308 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
309 "Validation failed");
311 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
312 "Validation failed");
316 RUNNER_TEST(test03t02_signature_validator_negative_hash_input)
318 SignatureFileInfoSet signatureSet;
319 SignatureFinder signatureFinder(widget_negative_hash_path);
321 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
322 "SignatureFinder failed");
324 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
325 iter != signatureSet.rend();
328 SignatureValidator::Result valResult = SignatureValidator::check(
330 widget_negative_hash_path,
334 if (!data.isAuthorSignature())
335 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
336 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
338 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
339 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
343 RUNNER_TEST(test03t03_signature_validator_negative_signature_input)
345 SignatureFileInfoSet signatureSet;
346 SignatureFinder signatureFinder(widget_negative_signature_path);
348 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
349 "SignatureFinder failed");
351 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
352 iter != signatureSet.rend();
355 SignatureValidator::Result valResult = SignatureValidator::check(
357 widget_negative_signature_path,
362 if (!data.isAuthorSignature())
363 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
364 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
366 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
367 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
371 RUNNER_TEST(test03t04_signature_validator_partner)
373 SignatureFileInfoSet signatureSet;
374 SignatureFinder signatureFinder(widget_partner_path);
376 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
377 "SignatureFinder failed");
379 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
380 iter != signatureSet.rend();
383 SignatureValidator::Result valResult = SignatureValidator::check(
390 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
391 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
392 if (!data.isAuthorSignature()) {
394 data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
395 "visibility check failed.");
400 * test: Integration test of SignatureFinder, SignatureReader,
402 * description: Directory passed to SignatureFinded constructor should be searched
403 * and 3 signature should be find. All signature should be parsed and verified.
404 * expected: Verificator should DISREGARD author signature and VERIFY
405 * distrubutor signature.
407 RUNNER_TEST(test04t01_signature_validator)
409 SignatureFileInfoSet signatureSet;
410 SignatureFinder signatureFinder(widget_path);
412 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
413 "SignatureFinder failed");
415 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
416 iter != signatureSet.rend();
419 SignatureValidator::Result valResult = SignatureValidator::check(
426 if (data.isAuthorSignature())
427 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
428 "Validation failed");
430 if (data.getSignatureNumber() == 1)
431 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
432 "Validation failed");
434 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
435 "Validation failed");
439 RUNNER_TEST(test04t02_signature_validator_negative_hash_input)
441 SignatureFileInfoSet signatureSet;
442 SignatureFinder signatureFinder(widget_negative_hash_path);
444 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
445 "SignatureFinder failed");
447 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
448 iter != signatureSet.rend();
451 SignatureValidator::Result valResult = SignatureValidator::check(
453 widget_negative_hash_path,
458 if (!data.isAuthorSignature())
459 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
460 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
462 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
463 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
467 RUNNER_TEST(test04t03_signature_validator_negative_signature_input)
469 SignatureFileInfoSet signatureSet;
470 SignatureFinder signatureFinder(widget_negative_signature_path);
472 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
473 "SignatureFinder failed");
475 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
476 iter != signatureSet.rend();
479 SignatureValidator::Result valResult = SignatureValidator::check(
481 widget_negative_signature_path,
486 if (!data.isAuthorSignature())
487 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
488 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
490 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
491 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
495 RUNNER_TEST(test04t04_signature_validator_partner)
497 SignatureFileInfoSet signatureSet;
498 SignatureFinder signatureFinder(widget_partner_path);
500 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
501 "SignatureFinder failed");
503 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
504 iter != signatureSet.rend();
507 SignatureValidator::Result valResult = SignatureValidator::check(
514 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
515 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
517 if (!data.isAuthorSignature())
518 RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
519 "visibility check failed.");
524 * test: Integration test of SignatureFinder, SignatureReader,
525 * SignatureValidator, ReferenceValidator
526 * description: As above but this test also checks reference from signatures.
527 * expected: All reference checks should return NO_ERROR.
529 RUNNER_TEST(test05t01_signature_reference)
531 SignatureFileInfoSet signatureSet;
532 SignatureFinder signatureFinder(widget_path);
534 SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
535 "SignatureFinder failed");
537 for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
538 iter != signatureSet.rend();
541 SignatureValidator::Result valResult = SignatureValidator::check(
548 if (data.isAuthorSignature())
549 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
550 "Validation failed");
552 if (data.getSignatureNumber() == 1)
553 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
554 "Validation failed");
556 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
557 "Validation failed");
560 ReferenceValidator val(widget_path);
561 int temp = val.checkReferences(data);
562 RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
563 "File[" << iter->getFileName()
564 << "] FileNumber[" << iter->getFileNumber()
565 << "] Errorcode : " << refValidatorErrorToString(temp));
571 * test: ReferenceValidator::checkReference
572 * description: Simple test. File "encoding test.empty" exists.
573 * expected: checkReference should return NO_ERROR.
576 RUNNER_TEST(test05t02_signature_reference_encoding_dummy)
578 ReferenceSet referenceSet;
580 ReferenceValidator val("/usr/apps/widget/tests/reference");
581 referenceSet.insert("encoding test.empty");
582 data.setReference(referenceSet);
584 int temp = val.checkReferences(data);
585 RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
586 "Errorcode : " << refValidatorErrorToString(temp));
591 * test: ReferenceValidator::checkReference
592 * description: Negative test. File "encoding test" does not exists.
593 * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND
596 RUNNER_TEST(test05t03_signature_reference_encoding_negative)
598 ReferenceSet referenceSet;
600 ReferenceValidator val("/usr/apps/widget/tests/reference");
601 referenceSet.insert("encoding test");
602 data.setReference(referenceSet);
604 int temp = val.checkReferences(data);
605 RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
606 "Errorcode : " << refValidatorErrorToString(temp));
611 * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
612 * description: File "encoding test.empty" exists. Name set in referenceSet must
613 * be encoded first by decodeProcent function.
614 * expected: checkReference should return NO_ERROR
617 RUNNER_TEST(test05t04_signature_reference_encoding_space)
619 ReferenceSet referenceSet;
621 ReferenceValidator val("/usr/apps/widget/tests/reference");
622 referenceSet.insert("encoding%20test.empty");
623 data.setReference(referenceSet);
625 int temp = val.checkReferences(data);
626 RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
627 "Errorcode : " << refValidatorErrorToString(temp));
632 * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
633 * description: Negative test. File "encoding test" does not exists. Name set in
634 * referenceSet must be encoded first by decodeProcent function.
635 * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND
638 RUNNER_TEST(test05t05_signature_reference_encoding_space_negative)
640 ReferenceSet referenceSet;
642 ReferenceValidator val("/usr/apps/widget/tests/reference");
643 referenceSet.insert("encoding%20test");
644 data.setReference(referenceSet);
646 int temp = val.checkReferences(data);
647 RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
648 "Errorcode : " << refValidatorErrorToString(temp));
653 * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
654 * description: File "encoding test.empty" exists. Name set in
655 * referenceSet must be encoded first by decodeProcent function.
656 * expected: checkReference should return NO_ERROR
659 RUNNER_TEST(test05t06_signature_reference_encoding)
661 ReferenceSet referenceSet;
663 ReferenceValidator val("/usr/apps/widget/tests/reference");
664 referenceSet.insert("e%6Ec%6Fding%20te%73%74.e%6d%70ty");
665 data.setReference(referenceSet);
667 int temp = val.checkReferences(data);
668 RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
669 "Errorcode : " << refValidatorErrorToString(temp));
674 * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
675 * description: Negative test. "%%" is illegal combination of char. decodeProcent
676 * should throw exception.
677 * expected: checkReference should return ERROR_DECODING_URL
680 RUNNER_TEST(test05t07_signature_reference_encoding_negative)
682 ReferenceSet referenceSet;
684 ReferenceValidator val("/usr/apps/widget/tests/reference");
685 referenceSet.insert("e%6Ec%6Fding%%0test%2ete%73%74");
686 data.setReference(referenceSet);
688 int temp = val.checkReferences(data);
689 RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_DECODING_URL == temp,
690 "Errorcode : " << refValidatorErrorToString(temp));
695 * test: class Certificate
696 * description: Certificate should parse data passed to object constructor.
697 * expected: Getters should be able to return certificate information.
699 RUNNER_TEST(test08t01_Certificate)
701 Certificate cert(certVerisign, Certificate::FORM_BASE64);
704 result = cert.getCommonName(Certificate::FIELD_SUBJECT);
705 RUNNER_ASSERT_MSG(!result.empty(), "No common name");
706 RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch");
708 result = cert.getCommonName(Certificate::FIELD_ISSUER);
709 RUNNER_ASSERT_MSG(!result.empty(), "No common name");
710 RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"),
711 "CommonName mismatch");
713 result = cert.getCountryName();
714 RUNNER_ASSERT_MSG(!result.empty(), "No country");
715 RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch");
719 * test: Certificate::getFingerprint
720 * description: Certificate should parse data passed to object constructor.
721 * expected: Function fingerprint should return valid fingerprint.
723 RUNNER_TEST(test08t02_Certificate)
725 Certificate cert(certVerisign, Certificate::FORM_BASE64);
727 Certificate::Fingerprint fin =
728 cert.getFingerprint(Certificate::FINGERPRINT_SHA1);
730 unsigned char buff[20] = {
731 0xb9, 0x72, 0x1e, 0xd5, 0x49,
732 0xed, 0xbf, 0x31, 0x84, 0xd8,
733 0x27, 0x0c, 0xfe, 0x03, 0x11,
734 0x19, 0xdf, 0xc2, 0x2b, 0x0a};
735 RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint");
737 for (size_t i = 0; i<20; ++i) {
738 RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch");
743 * test: Certificate::getAlternativeNameDNS
744 * description: Certificate should parse data passed to object constructor.
745 * expected: Function getAlternativeNameDNS should return list of
746 * alternativeNames hardcoded in certificate.
748 RUNNER_TEST(test08t03_Certificate)
750 Certificate cert(certVerisign, Certificate::FORM_BASE64);
752 Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS();
754 RUNNER_ASSERT(nameSet.size() == 8);
756 std::string str("verisign.com");
757 RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
759 str = std::string("fake.com");
760 RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
765 * test: Certificate::isCA
766 * description: Certificate should parse data passed to object constructor.
767 * expected: 1st and 2nd certificate should be identified as CA.
769 RUNNER_TEST(test08t04_Certificate_isCA)
771 Certificate cert1(googleCA, Certificate::FORM_BASE64);
772 RUNNER_ASSERT(cert1.isCA() > 0);
774 Certificate cert2(google2nd, Certificate::FORM_BASE64);
775 RUNNER_ASSERT(cert2.isCA() > 0);
777 Certificate cert3(google3rd, Certificate::FORM_BASE64);
778 RUNNER_ASSERT(cert3.isCA() == 0);
782 * test: CertificateIdentifier::find(Fingerprint)
783 * description: Check implementation of fingerprint_list.
784 * expected: Google CA certificate was added to TIZEN_MEMBER group
785 * and ORANGE_LEGACY. Both domain should be found.
788 RUNNER_TEST(test90_certificate_identifier_find_fingerprint)
790 CertificateIdentifier certIdent;
791 CertificateConfigReader reader;
793 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
794 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
795 reader.read(certIdent);
797 Certificate cert(googleCA, Certificate::FORM_BASE64);
799 CertStoreId::Set domain =
800 certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
802 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
803 RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
804 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
805 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
806 RUNNER_ASSERT(domain.contains(CertStoreId::TIZEN_MEMBER));
807 RUNNER_ASSERT(domain.contains(CertStoreId::ORANGE_LEGACY));
812 * test: CertificateIdentifier::find(CertificatePtr)
813 * description: Check implementation of fingerprint_list.
814 * expected: Google CA certificate was added to TIZEN_MEMBER group
815 * and ORANGE_LEGACY. Both domain should be found.
818 RUNNER_TEST(test91_certificate_identifier_find_cert)
820 CertificateIdentifier certIdent;
821 CertificateConfigReader reader;
823 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
824 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
825 reader.read(certIdent);
827 CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
829 CertStoreId::Set domain = certIdent.find(cert);
831 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
832 RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
833 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
834 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
835 RUNNER_ASSERT(domain.contains(CertStoreId::TIZEN_MEMBER));
836 RUNNER_ASSERT(domain.contains(CertStoreId::ORANGE_LEGACY));
841 * test: CertificateIdentifier::find(Fingerprint)
842 * description: Check implementation of fingerprint_list.
843 * expected: google2nd certificate was not added to any group so
844 * no domain should be found.
847 RUNNER_TEST(test92_certificate_identifier_negative)
849 CertificateIdentifier certIdent;
850 CertificateConfigReader reader;
852 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
853 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
854 reader.read(certIdent);
856 Certificate cert(google2nd, Certificate::FORM_BASE64);
858 CertStoreId::Set domain =
859 certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
861 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
862 RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
863 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
864 RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
865 RUNNER_ASSERT(!domain.contains(CertStoreId::TIZEN_MEMBER));
866 RUNNER_ASSERT(!domain.contains(CertStoreId::ORANGE_LEGACY));
870 * test: CertificateIdentifier::find(Fingerprint)
871 * description: Check implementation of fingerprint_list.
872 * expected: Google CA certificate was added to TIZEN_MEMBER group
873 * and ORANGE_LEGACY. Both domain should be found.
876 RUNNER_TEST(test93_certificate_identifier_find_fingerprint)
878 CertificateIdentifier certIdent;
879 CertificateConfigReader reader;
881 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
882 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
883 reader.read(certIdent);
885 Certificate cert(googleCA, Certificate::FORM_BASE64);
887 CertStoreId::Set visibilityLevel =
888 certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
890 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_PUBLISHER));
891 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::DEVELOPER));
892 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_ROOT));
893 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_MEMBER));
894 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::TIZEN_MEMBER));
895 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::ORANGE_LEGACY));
897 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::VIS_PUBLIC));
898 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER));
899 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_OPERATOR));
900 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_MANUFACTURER));
905 * test: CertificateIdentifier::find(CertificatePtr)
906 * description: Check implementation of fingerprint_list.
907 * expected: Google CA certificate was added to TIZEN_MEMBER group
908 * and ORANGE_LEGACY. Both domain should be found.
911 RUNNER_TEST(test94_certificate_identifier_find_cert)
913 CertificateIdentifier certIdent;
914 CertificateConfigReader reader;
916 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
917 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
918 reader.read(certIdent);
920 CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
922 CertStoreId::Set visibilityLevel = certIdent.find(cert);
924 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_PUBLISHER));
925 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::DEVELOPER));
926 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_ROOT));
927 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_MEMBER));
928 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::TIZEN_MEMBER));
929 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::ORANGE_LEGACY));
931 RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::VIS_PUBLIC));
932 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER));
933 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_OPERATOR));
934 RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_MANUFACTURER));
939 * test: CertificateIdentifier::find(Fingerprint)
940 * description: Check implementation of fingerprint_list.
941 * expected: google2nd certificate was not added to any group so
942 * no domain should be found.
945 RUNNER_TEST(test95_certificate_identifier_negative)
947 CertificateIdentifier certIdent;
948 CertificateConfigReader reader;
950 "/usr/apps/widget/tests/vcore_config/fin_list.xml",
951 "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
952 reader.read(certIdent);
954 Certificate cert(google2nd, Certificate::FORM_BASE64);
956 CertStoreId::Set domain =
957 certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
959 RUNNER_ASSERT_MSG(domain.getTypeString().empty(), "Domain should be empty.");