c84392236570a6c4376dab3809b9cfc5d447b569
[platform/core/security/cert-svc.git] / tests / vcore / TestCases.cpp
1 /*
2  *
3  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4  *
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
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17 #include <string>
18
19
20 #include <dpl/test/test_runner.h>
21 #include <vcore/CryptoHash.h>
22 #include <vcore/SignatureFinder.h>
23 #include <vcore/SignatureReader.h>
24 #include <vcore/SignatureValidator.h>
25 #include <vcore/WrtSignatureValidator.h>
26 #include "TestEnv.h"
27 #include <vcore/RevocationCheckerBase.h>
28
29 namespace {
30
31 const std::string widget_path =
32     "/usr/apps/widget/tests/vcore_widget_uncompressed/";
33 const std::string widget_negative_hash_path =
34     "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_hash/";
35 const std::string widget_negative_signature_path =
36     "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_signature/";
37 const std::string widget_negative_certificate_path =
38     "/usr/apps/widget/tests/vcore_widget_uncompressed_negative_certificate/";
39 const std::string widget_partner_path =
40     "/usr/apps/widget/tests/vcore_widget_uncompressed_partner/";
41 const std::string widget_partner_operator_path =
42     "/usr/apps/widget/tests/vcore_widget_uncompressed_partner_operator/";
43
44 inline const char* GetSignatureXmlSchema()
45 {
46     return "/usr/share/wrt-engine/schema.xsd";
47 }
48
49
50 const std::string keys_path = "/usr/apps/widget/tests/vcore_keys/";
51 const std::string widget_store_path = "/usr/apps/widget/tests/vcore_widgets/";
52 const std::string cert_store_path = "/usr/apps/widget/tests/vcore_certs/";
53
54 const std::string anka_ec_key_type = "urn:oid:1.2.840.10045.3.1.7";
55 const std::string anka_ec_public_key =
56         "BGi9RmTUjpqCpQjx6SSiKdfmtjQBFNSN7ghm6TuaH9r4x73WddeLxLioH3VEmFLC+QLiR"\
57         "kPxDxL/6YmQdgfGrqk=";
58
59 const std::string rsa_modulus =
60         "ocwjKEFaPxLNcPTz2PtT2Gyu5jzkWaPo4thjZo3rXuNbD4TzjY02UGnTxvflNeORLpSS1"\
61         "PeYr/1E/Nhr7qQAzj9g0DwW7p8zQEdOUi3v76VykeB0pFJH+0Fxp6LVBX9Z+EvZk+dbOy"\
62         "GJ4Njm9B6M09axXlV11Anj9B/HYUDfDX8=";
63 const std::string rsa_exponent = "AQAB";
64
65 const std::string magda_dsa_p =
66         "2BYIQj0ePUVxzrdBT41eCblraa9Dqag7QXFMCRM2PtyS22JPDKuV77tBc/jg0V3htHWdR"\
67         "q9n6/kQDwrP7FIPoLATLIiC3oAYWj46Mr6d9k/tt/JZU6PvULmB2k1wrrmvKUi+U+I5Ro"\
68         "qe8ui8lqR9pp9u2WCh2QmFfCohKNjN5qs=";
69 const std::string magda_dsa_q = "4p4JcDqz+S7CbWyd8txApZw0sik=";
70 const std::string magda_dsa_g =
71         "AQrLND1ZGFvzwBpPPXplmPh1ijPx1O2gQEvPvyjR88guWcGqQc0m7dTb6PEvbI/oZ0o91"\
72         "k7VEkfthURnNR1WtOLT8dmAuKQfwTQLPwCwUM/QiuWSlCyKLTE4Ev8aOG7ZqWudsKm/td"\
73         "n9pUNGtcod1wo1ZtP7PfEJ6rYZGQDOlz8=";
74
75 const std::string tizen_partner =
76 "MIICozCCAgwCCQD9IBoOxzq2hjANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMC"
77 "S1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6"
78 "ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEq"
79 "MCgGA1UEAwwhVGl6ZW4gUGFydG5lciBEaXN0cmlidXRvciBSb290IENBMB4XDTEy"
80 "MTAyNjA4MTIzMVoXDTIyMTAyNDA4MTIzMVowgZUxCzAJBgNVBAYTAktSMQ4wDAYD"
81 "VQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3Qg"
82 "Q0ExIjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKjAoBgNVBAMM"
83 "IVRpemVuIFBhcnRuZXIgRGlzdHJpYnV0b3IgUm9vdCBDQTCBnzANBgkqhkiG9w0B"
84 "AQEFAAOBjQAwgYkCgYEAnIBA2qQEaMzGalP0kzvwUxdCC6ybSC/fb+M9iGvt8QXp"
85 "ic2yARQB+bIhfbEu1XHwE1jCAGxKd6uT91b4FWr04YwnBPoRX4rBGIYlqo/dg+pS"
86 "rGyFjy7vfr0BOdWp2+WPlTe7SOS6bVauncrSoHxX0spiLaU5LU686BKr7YaABV0C"
87 "AwEAATANBgkqhkiG9w0BAQUFAAOBgQAX0Tcfmxcs1TUPBdr1U1dx/W/6Y4PcAF7n"
88 "DnMrR0ZNRPgeSCiVLax1bkHxcvW74WchdKIb24ZtAsFwyrsmUCRV842YHdfddjo6"
89 "xgUu7B8n7hQeV3EADh6ft/lE8nalzAl9tALTxAmLtYvEYA7thvDoKi1k7bN48izL"
90 "gS9G4WEAUg==";
91
92 const std::string tizen_partner_operator =
93 "MIICzDCCAjWgAwIBAgIJAJrv22F9wyp/MA0GCSqGSIb3DQEBBQUAMIGeMQswCQYD"
94 "VQQGEwJLUjEOMAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQK"
95 "DA1UaXplbiBUZXN0IENBMSIwIAYDVQQLDBlUaXplbiBEaXN0cmlidXRvciBUZXN0"
96 "IENBMTMwMQYDVQQDDCpUaXplbiBQYXJ0bmVyLU9wZXJhdG9yIERpc3RyaWJ1dG9y"
97 "IFJvb3QgQ0EwHhcNMTIxMjEzMDUzOTMyWhcNMjIxMjExMDUzOTMyWjCBnjELMAkG"
98 "A1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UE"
99 "CgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVz"
100 "dCBDQTEzMDEGA1UEAwwqVGl6ZW4gUGFydG5lci1PcGVyYXRvciBEaXN0cmlidXRv"
101 "ciBSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9X0Hw0EfAuagg"
102 "De9h6Jtvh8Df4fyVbvLm9VNea/iVP3/qTbG8tNqoQ32lu0SwzAZBnjpvpbxzsWs9"
103 "pSYo7Ys1fymHlu+gf+kmTGTVscBrAHWkr4O0m33x2FYfy/wmu+IImnRDYDud83rN"
104 "tjQmMO6BihN9Lb6kLiEtVIa8ITwdQwIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G"
105 "CSqGSIb3DQEBBQUAA4GBAHS2M2UnfEsZf80/sT84xTcfASXgpFL/1M5HiAVpR+1O"
106 "UwLpLyqHiGQaASuADDeGEfcIqEf8gP1SzvnAZqLx9GchbOrOKRleooVFH7PRxFBS"
107 "VWJ5Fq46dJ1mCgTWSkrL6dN5j9hWCzzGfv0Wco+NAf61n9kVbCv7AScIJwQNltOy";
108
109 const std::string googleCA =
110 "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG"
111 "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz"
112 "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2"
113 "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV"
114 "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt"
115 "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN"
116 "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE"
117 "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is"
118 "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G"
119 "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do"
120 "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc"
121 "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k";
122
123 const std::string google2nd =
124 "MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV"
125 "UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi"
126 "bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw"
127 "MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh"
128 "d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD"
129 "QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx"
130 "PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g"
131 "5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo"
132 "3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG"
133 "A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX"
134 "BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov"
135 "L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG"
136 "AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF"
137 "BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB"
138 "BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc"
139 "q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR"
140 "bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv";
141
142 const std::string google3rd =
143 "MIIDIjCCAougAwIBAgIQK59+5colpiUUIEeCdTqbuTANBgkqhkiG9w0BAQUFADBM"
144 "MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg"
145 "THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x"
146 "MzA5MzAyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh"
147 "MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw"
148 "FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
149 "AoGBAK85FZho5JL+T0/xu/8NLrD+Jaq9aARnJ+psQ0ynbcvIj36B7ocmJRASVDOe"
150 "qj2bj46Ss0sB4/lKKcMP/ay300yXKT9pVc9wgwSvLgRudNYPFwn+niAkJOPHaJys"
151 "Eb2S5LIbCfICMrtVGy0WXzASI+JMSo3C2j/huL/3OrGGvvDFAgMBAAGjgecwgeQw"
152 "DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0"
153 "ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF"
154 "BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0"
155 "cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3"
156 "dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF"
157 "BQADgYEANYARzVI+hCn7wSjhIOUCj19xZVgdYnJXPOZeJWHTy60i+NiBpOf0rnzZ"
158 "wW2qkw1iB5/yZ0eZNDNPPQJ09IHWOAgh6OKh+gVBnJzJ+fPIo+4NpddQVF4vfXm3"
159 "fgp8tuIsqK7+lNfNFjBxBKqeecPStiSnJavwSI4vw6e7UN0Pz7A=";
160
161 const std::string certVerisign =
162 "MIIG+DCCBeCgAwIBAgIQU9K++SSnJF6DygHkbKokdzANBgkqhkiG9w0BAQUFADCB"
163 "vjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL"
164 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug"
165 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE4MDYGA1UEAxMv"
166 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBTR0MgQ0Ew"
167 "HhcNMTAwNTI2MDAwMDAwWhcNMTIwNTI1MjM1OTU5WjCCASkxEzARBgsrBgEEAYI3"
168 "PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxGzAZBgNVBA8TElYx"
169 "LjAsIENsYXVzZSA1LihiKTEQMA4GA1UEBRMHMjQ5Nzg4NjELMAkGA1UEBhMCVVMx"
170 "DjAMBgNVBBEUBTk0MDQzMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHFA1N"
171 "b3VudGFpbiBWaWV3MSIwIAYDVQQJFBk0ODcgRWFzdCBNaWRkbGVmaWVsZCBSb2Fk"
172 "MRcwFQYDVQQKFA5WZXJpU2lnbiwgSW5jLjEmMCQGA1UECxQdIFByb2R1Y3Rpb24g"
173 "U2VjdXJpdHkgU2VydmljZXMxGTAXBgNVBAMUEHd3dy52ZXJpc2lnbi5jb20wggEi"
174 "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCj+PvvK+fZOXwno0yT/OTy2Zm9"
175 "ehnZjTtO/X2IWBEa3jG30C52uHFQI4NmXiQVNvJHkBaAj0ilVjvGdxXmkyyFsugt"
176 "IWOTZ8pSKdX1tmGFIon6Ko9+lBFkVkudA1ogAUbtTB8IcdeOlpK78T4SjdVMhY18"
177 "150YzSw6hRKlw52wBaDxtGZElvOth41K7TUcaDnQVzz5SBPW5MUhi7AWrdoSk17O"
178 "BozOzmB/jkYDVDnwLcbR89SLHEOle/idSYSDQUmab3y0JS8RyQV1+DB70mnFALnD"
179 "fLiL47nMQQCGxXgp5voQ2YmSXhevKmEJ9vvtC6C7yv2W6yomfS/weUEce9pvAgMB"
180 "AAGjggKCMIICfjCBiwYDVR0RBIGDMIGAghB3d3cudmVyaXNpZ24uY29tggx2ZXJp"
181 "c2lnbi5jb22CEHd3dy52ZXJpc2lnbi5uZXSCDHZlcmlzaWduLm5ldIIRd3d3LnZl"
182 "cmlzaWduLm1vYmmCDXZlcmlzaWduLm1vYmmCD3d3dy52ZXJpc2lnbi5ldYILdmVy"
183 "aXNpZ24uZXUwCQYDVR0TBAIwADAdBgNVHQ4EFgQU8oBwK/WBXCZDWi0dbuDgPyTK"
184 "iJIwCwYDVR0PBAQDAgWgMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9FVkludGwt"
185 "Y3JsLnZlcmlzaWduLmNvbS9FVkludGwyMDA2LmNybDBEBgNVHSAEPTA7MDkGC2CG"
186 "SAGG+EUBBxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNv"
187 "bS9ycGEwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUFBwMCBglghkgBhvhCBAEw"
188 "HwYDVR0jBBgwFoAUTkPIHXbvN1N6T/JYb5TzOOLVvd8wdgYIKwYBBQUHAQEEajBo"
189 "MCsGCCsGAQUFBzABhh9odHRwOi8vRVZJbnRsLW9jc3AudmVyaXNpZ24uY29tMDkG"
190 "CCsGAQUFBzAChi1odHRwOi8vRVZJbnRsLWFpYS52ZXJpc2lnbi5jb20vRVZJbnRs"
191 "MjAwNi5jZXIwbgYIKwYBBQUHAQwEYjBgoV6gXDBaMFgwVhYJaW1hZ2UvZ2lmMCEw"
192 "HzAHBgUrDgMCGgQUS2u5KJYGDLvQUjibKaxLB4shBRgwJhYkaHR0cDovL2xvZ28u"
193 "dmVyaXNpZ24uY29tL3ZzbG9nbzEuZ2lmMA0GCSqGSIb3DQEBBQUAA4IBAQB9VZxB"
194 "wDMRGyhFWYkY5rwUVGuDJiGeas2xRJC0G4+riQ7IN7pz2a2BhktmZ5HbxXL4ZEY4"
195 "yMN68DEVErhtKiuL02ng27alhlngadKQzSL8pLdmQ+3jEwm9nva5C/7pbeqy+qGF"
196 "is4IWNYOc4HKNkABxXm5v0ouys8HPNkTLFLep0gLqRXW3gYN2XbKUWMs7z7hJpkY"
197 "GxP8YQSxi513O2dWVCXB8S6erIz9E/bcfdXoCPyQdn42y3IEoJvPvBS3S55fD4+Q"
198 "Q43GPhumSg9a6S3hnyw8DX5OiUGmqgQrtSeDRsNmWqtWizEQbe+fotZpEn/7zYTa"
199 "tk1ni/k5jDH/QeuG";
200
201 const std::string crlExampleCertificate =
202 "MIIFlDCCBHygAwIBAgIBADANBgkqhkiG9w0BAQUFADBDMRIwEAYKCZImiZPyLGQB"
203 "GRYCZXMxGDAWBgoJkiaJk/IsZAEZFghpcmlzZ3JpZDETMBEGA1UEAxMKSVJJU0dy"
204 "aWRDQTAeFw0wNTA2MjgwNTAyMjhaFw0xNTA2MjYwNTAyMjhaMEMxEjAQBgoJkiaJ"
205 "k/IsZAEZFgJlczEYMBYGCgmSJomT8ixkARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJ"
206 "UklTR3JpZENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1CQiWlff"
207 "ajoMSTuismKqLQ+Mt33Tq4bBpCZvCBXhqan1R0ksILPtK1L7C8QWqPk6AZZpuNmY"
208 "cNVtJGc8ksgDWvX0EB3GKwZTZ8RrSRlSEe9Otq+Ur7S9uxM1JMmCr6zZTMFANzBS"
209 "4btnduV78C09IhFYG4OW8IPhNrbfPaeOR+PRPAa/qdSONAwTrM1sZkIvGpAkBWM6"
210 "Pn7TK9BAK6GLvwgii780fWj3Cwgmp8EDCTievBbWj+z8/apMEy9R0vyB2dWNNCnk"
211 "6q8VvrjgMsJt33O3BqOoBuZ8R/SS9OFWLFSU3s7cfrRaUSJk/Mx8OGFizRkcXSzX"
212 "0Nidcg7hX5i78wIDAQABo4ICkTCCAo0wDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E"
213 "FgQUnUJkLlupXvH/bMg8NtPxtkOYrRowawYDVR0jBGQwYoAUnUJkLlupXvH/bMg8"
214 "NtPxtkOYrRqhR6RFMEMxEjAQBgoJkiaJk/IsZAEZFgJlczEYMBYGCgmSJomT8ixk"
215 "ARkWCGlyaXNncmlkMRMwEQYDVQQDEwpJUklTR3JpZENBggEAMA4GA1UdDwEB/wQE"
216 "AwIBxjARBglghkgBhvhCAQEEBAMCAAcwOwYJYIZIAYb4QgENBC4WLElSSVNHcmlk"
217 "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENlcnRpZmljYXRlMIGZBgNVHR8EgZEw"
218 "gY4wLqAsoCqGKGh0dHA6Ly93d3cuaXJpc2dyaWQuZXMvcGtpL2NybC9jYWNybC5w"
219 "ZW0wXKBaoFiGVmxkYXA6Ly9sZGFwLmlyaXNncmlkLmVzOjEzODAvY249SVJJU0dy"
220 "aWRDQSxkYz1pcmlzZ3JpZCxkYz1lcz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0"
221 "MDcGCWCGSAGG+EIBAwQqFihodHRwOi8vd3d3LmlyaXNncmlkLmVzL3BraS9jcmwv"
222 "Y2FjcmwucGVtME4GCWCGSAGG+EIBCARBFj9odHRwOi8vd3d3LmlyaXNncmlkLmVz"
223 "L3BraS9wb2xpY3kvMS4zLjYuMS40LjEuNzU0Ny4yLjIuNC4xLjEuMS8waQYDVR0g"
224 "BGIwYDBeBg0rBgEEAbp7AgIEAQEBME0wSwYIKwYBBQUHAgEWP2h0dHA6Ly93d3cu"
225 "aXJpc2dyaWQuZXMvcGtpL3BvbGljeS8xLjMuNi4xLjQuMS43NTQ3LjIuMi40LjEu"
226 "MS4xLzANBgkqhkiG9w0BAQUFAAOCAQEAaqRfyLER+P2QOZLLdz66m7FGsgtFsAEx"
227 "wiNrIChFWfyHVZG7Ph1fn/GDD5LMsrU23lx3NBN5/feHuut1XNYKNs8vtV07D70r"
228 "DKjUlPbmWV0B+/GDxe1FDGop/tKQfyHSUaBuauXChFU/2INu5lhBerNl7QxNJ1ws"
229 "cWGiT7R+L/2EjgzWgH1V/0zmIOMep6kY7MUs8rlyF0O5MNFs232cA1trl9kvhAGU"
230 "9p58Enf5DWMrh17SPH586yIJeiWZtPez9G54ftY+XIqfn0X0zso0dnoXNJQYS043"
231 "/5vSnoHdRx/EmN8yjeEavZtC48moN0iJ38eB44uKgCD77rZW5s1XqA==";
232
233 //class TestCleanup
234 //{
235 //  public:
236 //    explicit TestCleanup(bool bCheckForFakeVerification = false)
237 //    {
238 //        if (bCheckForFakeVerification) {
239 //            bool bUnsetEnvVar = true;
240 //
241 //            m_strEnvVar = "CHECK_ONLY_DOMAIN_INSTEAD_OF_VALIDATION";
242 //            if (getenv(m_strEnvVar.c_str()) != NULL) {
243 //                bUnsetEnvVar = false;
244 //            } else {
245 //                setenv(m_strEnvVar.c_str(), "1", 0);
246 //            }
247 //        }
248 //    }
249 //
250 //    ~TestCleanup()
251 //    {
252 //        if (!m_strRootCAPath.empty()) {
253 //            removeCertGivenByFilename(m_strRootCAPath.c_str());
254 //        }
255 //
256 //        if (!m_strEnvVar.empty()) {
257 //            unsetenv(m_strEnvVar.c_str());
258 //        }
259 //    }
260 //
261 //    void setRootCAPath(const std::string& strRootCAPath)
262 //    {
263 //        m_strRootCAPath = strRootCAPath;
264 //    }
265 //
266 //  private:
267 //    std::string           m_strRootCAPath;
268 //    std::string           m_strEnvVar;
269 //};
270 //
271 //class PolicyChanger : public VcoreDPL::Event::EventListener<AceUpdateResponseEvent>
272 //{
273 //  public:
274 //    PolicyChanger()
275 //    {
276 //        VcoreDPL::Event::EventDeliverySystem::AddListener<AceUpdateResponseEvent>(this);
277 //    }
278 //
279 //    ~PolicyChanger()
280 //    {
281 //        VcoreDPL::Event::EventDeliverySystem::RemoveListener<AceUpdateResponseEvent>(this);
282 //    }
283 //
284 //    void OnEventReceived(const AceUpdateResponseEvent& event)
285 //    {
286 //        if (0 != event.GetArg0()) {
287 //            LogError("Policy change failed");
288 //        }
289 //        Assert(0 == event.GetArg0() && "Policy change failed");
290 //        LoopControl::finish_wait_for_wrt_init();
291 //    }
292 //
293 //    void updatePolicy(const std::string& path)
294 //    {
295 //        AceUpdateRequestEvent event(path);
296 //        VcoreDPL::Event::EventDeliverySystem::Publish(event);
297 //        LoopControl::wait_for_wrt_init();
298 //    }
299 //};
300
301 } // namespace anonymous
302
303 using namespace ValidationCore;
304
305 //////////////////////////////////////////////////
306 ////////  VALIDATION CORE TEST SUITE  ////////////
307 //////////////////////////////////////////////////
308
309 /*
310  * test: Class SignatureFinder
311  * description: SignatureFinder should search directory passed as
312  * param of constructor.
313  * expected: Signature finder should put information about 3
314  * signture files in SinatureFileInfoSet.
315  */
316 RUNNER_TEST(test01_signature_finder)
317 {
318     SignatureFileInfoSet signatureSet;
319     SignatureFinder signatureFinder(widget_path);
320     RUNNER_ASSERT_MSG(
321         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
322         "SignatureFinder failed");
323     RUNNER_ASSERT_MSG(signatureSet.size() == 3,
324                       "Some signature has not been found");
325
326     SignatureFileInfo first = *(signatureSet.begin());
327     RUNNER_ASSERT_MSG(
328         std::string("author-signature.xml") == first.getFileName(),
329         "Author Signature");
330     RUNNER_ASSERT_MSG(-1 == first.getFileNumber(), "Wrong signature number.");
331     first = *(signatureSet.rbegin());
332     RUNNER_ASSERT_MSG(std::string("signature22.xml") == first.getFileName(),
333                       "Wrong signature fileName.");
334     RUNNER_ASSERT_MSG(22 == first.getFileNumber(), "Wrong signature number.");
335 }
336
337 /*
338  * test: Class SignatureReader
339  * description: SignatureReader should parse widget digigal signaturesignature
340  * without any errors. Path to signature is passed to constructor.
341  * param of destructor.
342  * expected: SignatureReader should not throw any exception.
343  */
344 RUNNER_TEST(test02_signature_reader)
345 {
346     SignatureFileInfoSet signatureSet;
347     SignatureFinder signatureFinder(widget_path);
348     RUNNER_ASSERT_MSG(
349         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
350         "SignatureFinder failed");
351
352     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
353
354     for (; iter != signatureSet.rend(); ++iter) {
355         SignatureData data(widget_path + iter->getFileName(),
356                            iter->getFileNumber());
357         SignatureReader xml;
358         xml.initialize(data, GetSignatureXmlSchema());
359         xml.read(data);
360     }
361 }
362
363 /*
364  * test: Integration test of SignatureFinder, SignatureReader,
365  * SignatureValidator
366  * description: Directory passed to SignatureFinded constructor should be searched
367  * and 3 signature should be find. All signature should be parsed and verified.
368  * expected: Verificator should DISREGARD author signature and VERIFY
369  * distrubutor signature.
370  */
371 RUNNER_TEST(test03t01_wrtsignature_validator)
372 {
373     SignatureFileInfoSet signatureSet;
374     SignatureFinder signatureFinder(widget_path);
375     RUNNER_ASSERT_MSG(
376         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
377         "SignatureFinder failed");
378
379     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
380     for (; iter != signatureSet.rend(); ++iter) {
381         SignatureData data(widget_path + iter->getFileName(),
382                            iter->getFileNumber());
383         SignatureReader xml;
384         xml.initialize(data, GetSignatureXmlSchema());
385         xml.read(data);
386
387         WrtSignatureValidator validator(
388             WrtSignatureValidator::WAC20,
389             false,
390             false,
391             false);
392
393         if (data.isAuthorSignature()) {
394             RUNNER_ASSERT_MSG(
395                 WrtSignatureValidator::SIGNATURE_DISREGARD ==
396                     validator.check(data, widget_path),
397                 "Validation failed");
398         } else {
399             if (data.getSignatureNumber() == 1)
400             {
401                 WrtSignatureValidator::Result temp = validator.check(data, widget_path);
402
403                 RUNNER_ASSERT_MSG(
404                     WrtSignatureValidator::SIGNATURE_DISREGARD ==
405                         temp,
406                         "Validation failed");
407
408             }
409             else
410             {
411                 WrtSignatureValidator::Result temp = validator.check(data, widget_path);
412
413                 RUNNER_ASSERT_MSG(
414                     WrtSignatureValidator::SIGNATURE_VERIFIED ==
415                         temp,
416                         "Validation failed");
417             }
418         }
419     }
420 }
421
422 RUNNER_TEST(test03t02_wrtsignature_validator_negative_hash_input)
423 {
424     SignatureFileInfoSet signatureSet;
425     SignatureFinder signatureFinder(widget_negative_hash_path);
426     RUNNER_ASSERT_MSG(
427         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
428         "SignatureFinder failed");
429
430     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
431     for (; iter != signatureSet.rend(); ++iter) {
432         SignatureData data(widget_negative_hash_path + iter->getFileName(),
433                            iter->getFileNumber());
434         SignatureReader xml;
435         xml.initialize(data, GetSignatureXmlSchema());
436         xml.read(data);
437
438         WrtSignatureValidator validator(
439             WrtSignatureValidator::WAC20,
440             false,
441             false,
442             false);
443
444         int temp = validator.check(data, widget_negative_hash_path);
445         RUNNER_ASSERT_MSG(
446             (WrtSignatureValidator::SIGNATURE_INVALID == temp
447                 || WrtSignatureValidator::SIGNATURE_DISREGARD == temp),
448             "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
449     }
450 }
451
452 RUNNER_TEST(test03t03_wrtsignature_validator_negative_signature_input)
453 {
454     SignatureFileInfoSet signatureSet;
455     SignatureFinder signatureFinder(widget_negative_signature_path);
456     RUNNER_ASSERT_MSG(
457         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
458         "SignatureFinder failed");
459
460     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
461     for (; iter != signatureSet.rend(); ++iter) {
462         SignatureData data(widget_negative_signature_path + iter->getFileName(),
463                            iter->getFileNumber());
464         SignatureReader xml;
465         xml.initialize(data, GetSignatureXmlSchema());
466         xml.read(data);
467
468         WrtSignatureValidator validator(
469             WrtSignatureValidator::WAC20,
470             false,
471             false,
472             false);
473
474         int temp = validator.check(data, widget_negative_signature_path);
475         RUNNER_ASSERT_MSG(
476             (WrtSignatureValidator::SIGNATURE_INVALID == temp
477                 || WrtSignatureValidator::SIGNATURE_DISREGARD == temp),
478             "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
479     }
480 }
481
482 RUNNER_TEST(test03t04_wrtsignature_validator_partner)
483 {
484     SignatureFileInfoSet signatureSet;
485     SignatureFinder signatureFinder(widget_partner_path);
486     RUNNER_ASSERT_MSG(
487         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
488         "SignatureFinder failed");
489
490     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
491     for (; iter != signatureSet.rend(); ++iter) {
492         SignatureData data(widget_partner_path + iter->getFileName(),
493                            iter->getFileNumber());
494         SignatureReader xml;
495         xml.initialize(data, GetSignatureXmlSchema());
496         xml.read(data);
497
498         WrtSignatureValidator validator(
499             WrtSignatureValidator::WAC20,
500             false,
501             false,
502             false);
503
504         int temp = validator.check(data, widget_partner_path);
505         RUNNER_ASSERT_MSG(
506             WrtSignatureValidator::SIGNATURE_VERIFIED == temp,
507             "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
508         if (!data.isAuthorSignature()) {
509             RUNNER_ASSERT_MSG(
510                     data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
511                     "visibility check failed.");
512         }
513     }
514 }
515 /* // no partner_operator certificate in kiran emlulator
516 RUNNER_TEST(test03t05_wrtsignature_validator_partner_operator)
517 {
518     SignatureFileInfoSet signatureSet;
519     SignatureFinder signatureFinder(widget_partner_operator_path);
520     LogError("Size: " << signatureSet.size());
521     RUNNER_ASSERT_MSG(
522         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
523         "SignatureFinder failed");
524
525     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
526     LogError("Size: " << signatureSet.size());
527     for (; iter != signatureSet.rend(); ++iter) {
528         SignatureData data(widget_partner_operator_path + iter->getFileName(),
529                            iter->getFileNumber());
530         SignatureReader xml;
531         xml.initialize(data, GetSignatureXmlSchema());
532         xml.read(data);
533
534         WrtSignatureValidator validator(
535             WrtSignatureValidator::WAC20,
536             false,
537             false,
538             false);
539
540         if (data.isAuthorSignature()) {
541             LogError("Author");
542             RUNNER_ASSERT_MSG(
543                 WrtSignatureValidator::SIGNATURE_VERIFIED ==
544                     validator.check(data, widget_partner_operator_path),
545                 "Wrong input file but success..");
546         } else {
547             LogError("Distributor");
548             RUNNER_ASSERT_MSG(
549                 WrtSignatureValidator::SIGNATURE_VERIFIED ==
550                     validator.check(data, widget_partner_operator_path),
551                 "Wrong input file but success..");
552
553             RUNNER_ASSERT_MSG(
554                     data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
555                     "visibility check failed.");
556         }
557     }
558 }
559 */
560
561 /*
562 RUNNER_TEST(test03t04_wrtsignature_validator_negative_certificate_input)
563 {
564     SignatureFileInfoSet signatureSet;
565     SignatureFinder signatureFinder(widget_negative_certificate_path);
566     LogError("Size: " << signatureSet.size());
567     RUNNER_ASSERT_MSG(
568         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
569         "SignatureFinder failed");
570
571     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
572     LogError("Size: " << signatureSet.size());
573     for (; iter != signatureSet.rend(); ++iter) {
574         SignatureData data(widget_negative_certificate_path + iter->getFileName(),
575                            iter->getFileNumber());
576         SignatureReader xml;
577         xml.initialize(data, GetSignatureXmlSchema());
578         xml.read(data);
579
580         WrtSignatureValidator validator(
581             WrtSignatureValidator::WAC20,
582             false,
583             false,
584             false);
585
586         if (data.isAuthorSignature()) {
587             LogError("Author");
588             RUNNER_ASSERT_MSG(
589                 WrtSignatureValidator::SIGNATURE_INVALID ==
590                     validator.check(data, widget_negative_certificate_path),
591                 "Wrong input file but success..");
592         } else {
593             LogError("Distributor");
594             RUNNER_ASSERT_MSG(
595                 WrtSignatureValidator::SIGNATURE_DISREGARD ==
596                     validator.check(data, widget_negative_certificate_path),
597                 "Wrong input file but success..");
598         }
599     }
600 }
601 */
602
603 /*
604  * test: Integration test of SignatureFinder, SignatureReader,
605  * SignatureValidator
606  * description: Directory passed to SignatureFinded constructor should be searched
607  * and 3 signature should be find. All signature should be parsed and verified.
608  * expected: Verificator should DISREGARD author signature and VERIFY
609  * distrubutor signature.
610  */
611 RUNNER_TEST(test04t01_signature_validator)
612 {
613     SignatureFileInfoSet signatureSet;
614     SignatureFinder signatureFinder(widget_path);
615     RUNNER_ASSERT_MSG(
616         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
617         "SignatureFinder failed");
618
619     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
620     for (; iter != signatureSet.rend(); ++iter) {
621         SignatureData data(widget_path + iter->getFileName(),
622                            iter->getFileNumber());
623         SignatureReader xml;
624         xml.initialize(data, GetSignatureXmlSchema());
625         xml.read(data);
626
627         SignatureValidator validator(
628             SignatureValidator::WAC20,
629             false,
630             false,
631             false);
632
633         if (data.isAuthorSignature()) {
634             RUNNER_ASSERT_MSG(
635                 SignatureValidator::SIGNATURE_DISREGARD ==
636                     validator.check(data, widget_path),
637                 "Validation failed");
638         } else {
639             if (data.getSignatureNumber() == 1)
640             {
641                 SignatureValidator::Result temp = validator.check(data, widget_path);
642
643                 RUNNER_ASSERT_MSG(
644                     SignatureValidator::SIGNATURE_DISREGARD ==
645                         temp,
646                         "Validation failed");
647             }
648             else
649             {
650                 SignatureValidator::Result temp = validator.check(data, widget_path);
651
652                 RUNNER_ASSERT_MSG(
653                     SignatureValidator::SIGNATURE_VERIFIED ==
654                         temp,
655                         "Validation failed");
656             }
657         }
658     }
659 }
660
661 RUNNER_TEST(test04t02_signature_validator_negative_hash_input)
662 {
663     SignatureFileInfoSet signatureSet;
664     SignatureFinder signatureFinder(widget_negative_hash_path);
665     RUNNER_ASSERT_MSG(
666         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
667         "SignatureFinder failed");
668
669     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
670     for (; iter != signatureSet.rend(); ++iter) {
671         SignatureData data(widget_negative_hash_path + iter->getFileName(),
672                            iter->getFileNumber());
673         SignatureReader xml;
674         xml.initialize(data, GetSignatureXmlSchema());
675         xml.read(data);
676
677         SignatureValidator validator(
678             SignatureValidator::WAC20,
679             false,
680             false,
681             false);
682
683         int temp = validator.check(data, widget_negative_hash_path);
684         RUNNER_ASSERT_MSG(
685             (WrtSignatureValidator::SIGNATURE_INVALID == temp
686                 || WrtSignatureValidator::SIGNATURE_DISREGARD == temp),
687                 "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
688     }
689 }
690
691 RUNNER_TEST(test04t03_signature_validator_negative_signature_input)
692 {
693     SignatureFileInfoSet signatureSet;
694     SignatureFinder signatureFinder(widget_negative_signature_path);
695     RUNNER_ASSERT_MSG(
696         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
697         "SignatureFinder failed");
698
699     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
700     for (; iter != signatureSet.rend(); ++iter) {
701         SignatureData data(widget_negative_signature_path + iter->getFileName(),
702                            iter->getFileNumber());
703         SignatureReader xml;
704         xml.initialize(data, GetSignatureXmlSchema());
705         xml.read(data);
706
707         SignatureValidator validator(
708             SignatureValidator::WAC20,
709             false,
710             false,
711             false);
712
713         int temp = validator.check(data, widget_negative_signature_path);
714         RUNNER_ASSERT_MSG(
715             (WrtSignatureValidator::SIGNATURE_INVALID == temp
716                 || WrtSignatureValidator::SIGNATURE_DISREGARD == temp),
717                 "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
718     }
719 }
720
721 RUNNER_TEST(test04t04_signature_validator_partner)
722 {
723     SignatureFileInfoSet signatureSet;
724     SignatureFinder signatureFinder(widget_partner_path);
725     RUNNER_ASSERT_MSG(
726         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
727         "SignatureFinder failed");
728
729     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
730     for (; iter != signatureSet.rend(); ++iter) {
731         SignatureData data(widget_partner_path + iter->getFileName(),
732                            iter->getFileNumber());
733         SignatureReader xml;
734         xml.initialize(data, GetSignatureXmlSchema());
735         xml.read(data);
736
737         SignatureValidator validator(
738             SignatureValidator::TIZEN,
739             false,
740             false,
741             false);
742
743         int temp = validator.check(data, widget_partner_path);
744             RUNNER_ASSERT_MSG(SignatureValidator::SIGNATURE_VERIFIED == temp,
745                 "Wrong input file but success.. Errorcode : " << wrtValidatorErrorToString(temp));
746
747         if (!data.isAuthorSignature()) {
748             RUNNER_ASSERT_MSG(
749                     data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
750                     "visibility check failed.");
751         }
752     }
753 }
754 /* // no partner_operator certificate in kiran emulator
755 RUNNER_TEST(test04t05_signature_validator_partner_operator)
756 {
757     SignatureFileInfoSet signatureSet;
758     SignatureFinder signatureFinder(widget_partner_operator_path);
759     LogError("Size: " << signatureSet.size());
760     RUNNER_ASSERT_MSG(
761         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
762         "SignatureFinder failed");
763
764     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
765     LogError("Size: " << signatureSet.size());
766     for (; iter != signatureSet.rend(); ++iter) {
767         SignatureData data(widget_partner_operator_path + iter->getFileName(),
768                            iter->getFileNumber());
769         SignatureReader xml;
770         xml.initialize(data, GetSignatureXmlSchema());
771         xml.read(data);
772
773         SignatureValidator validator(
774             SignatureValidator::TIZEN,
775             false,
776             false,
777             false);
778
779         if (data.isAuthorSignature()) {
780             LogError("Author");
781             RUNNER_ASSERT_MSG(
782                 SignatureValidator::SIGNATURE_VERIFIED ==
783                     validator.check(data, widget_partner_operator_path),
784                 "Wrong input file but success..");
785         } else {
786             LogError("Distributor");
787             RUNNER_ASSERT_MSG(
788                 SignatureValidator::SIGNATURE_VERIFIED ==
789                     validator.check(data, widget_partner_operator_path),
790                 "Wrong input file but success..");
791
792             RUNNER_ASSERT_MSG(
793                 data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
794                 "visibility check failed.");
795         }
796     }
797 }
798 */
799
800 /*
801 RUNNER_TEST(test04t04_signature_validator_negative_certificate_input)
802 {
803     SignatureFileInfoSet signatureSet;
804     SignatureFinder signatureFinder(widget_negative_certificate_path);
805     LogError("Size: " << signatureSet.size());
806     RUNNER_ASSERT_MSG(
807         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
808         "SignatureFinder failed");
809
810     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
811     LogError("Size: " << signatureSet.size());
812     for (; iter != signatureSet.rend(); ++iter) {
813         SignatureData data(widget_negative_certificate_path + iter->getFileName(),
814                            iter->getFileNumber());
815         SignatureReader xml;
816         xml.initialize(data, GetSignatureXmlSchema());
817         xml.read(data);
818
819         SignatureValidator validator(
820             SignatureValidator::WAC20,
821             false,
822             false,
823             false);
824
825         if (data.isAuthorSignature()) {
826             LogError("Author");
827             RUNNER_ASSERT_MSG(
828                 SignatureValidator::SIGNATURE_DISREGARD ==
829                     validator.check(data, widget_negative_certificate_path),
830                 "Wrong input file but success..");
831         } else {
832             LogError("Distributor");
833             RUNNER_ASSERT_MSG(
834                 SignatureValidator::SIGNATURE_DISREGARD ==
835                     validator.check(data, widget_negative_certificate_path),
836                 "Wrong input file but success..");
837         }
838     }
839 }
840 */
841
842 /*
843  * test: Integration test of SignatureFinder, SignatureReader,
844  * SignatureValidator, ReferenceValidator
845  * description: As above but this test also checks reference from signatures.
846  * expected: All reference checks should return NO_ERROR.
847  */
848 RUNNER_TEST(test05t01_signature_reference)
849 {
850     SignatureFileInfoSet signatureSet;
851     SignatureFinder signatureFinder(widget_path);
852     RUNNER_ASSERT_MSG(
853         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
854         "SignatureFinder failed");
855
856     SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
857
858     for (; iter != signatureSet.rend(); ++iter) {
859         SignatureData data(widget_path + iter->getFileName(),
860                            iter->getFileNumber());
861         SignatureReader xml;
862         xml.initialize(data, GetSignatureXmlSchema());
863         xml.read(data);
864
865         WrtSignatureValidator sval(
866             WrtSignatureValidator::WAC20,
867             false,
868             false,
869             false);
870
871         if (data.isAuthorSignature()) {
872             RUNNER_ASSERT_MSG(
873                 WrtSignatureValidator::SIGNATURE_DISREGARD ==
874                     sval.check(data, widget_path),
875                 "Validation failed");
876         } else {
877             if (data.getSignatureNumber() == 1)
878             {
879                 RUNNER_ASSERT_MSG(
880                     WrtSignatureValidator::SIGNATURE_DISREGARD ==
881                         sval.check(data, widget_path),
882                         "Validation failed");
883             }
884             else
885             {
886                 RUNNER_ASSERT_MSG(
887                     WrtSignatureValidator::SIGNATURE_VERIFIED ==
888                         sval.check(data, widget_path),
889                         "Validation failed");
890             }
891         }
892
893 /*
894         ReferenceValidator val(widget_path);
895         int temp = val.checkReferences(data);
896         RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
897                 "File[" << iter->getFileName()
898                 << "] FileNumber[" << iter->getFileNumber()
899                 << "] Errorcode : " << refValidatorErrorToString(temp));
900 */
901     }
902 }
903
904 /*
905  * test: ReferenceValidator::checkReference
906  * description: Simple test. File "encoding test.empty" exists.
907  * expected: checkReference should return NO_ERROR.
908  */
909 /*
910 RUNNER_TEST(test05t02_signature_reference_encoding_dummy)
911 {
912     ReferenceSet referenceSet;
913     SignatureData data;
914     ReferenceValidator val("/usr/apps/widget/tests/reference");
915     referenceSet.insert("encoding test.empty");
916     data.setReference(referenceSet);
917
918     int temp = val.checkReferences(data);
919     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
920             "Errorcode : " << refValidatorErrorToString(temp));
921 }
922 */
923
924 /*
925  * test: ReferenceValidator::checkReference
926  * description: Negative test. File "encoding test" does not exists.
927  * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND
928  */
929 /*
930 RUNNER_TEST(test05t03_signature_reference_encoding_negative)
931 {
932     ReferenceSet referenceSet;
933     SignatureData data;
934     ReferenceValidator val("/usr/apps/widget/tests/reference");
935     referenceSet.insert("encoding test");
936     data.setReference(referenceSet);
937
938     int temp = val.checkReferences(data);
939     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
940             "Errorcode : " << refValidatorErrorToString(temp));
941 }
942 */
943
944 /*
945  * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
946  * description: File "encoding test.empty" exists. Name set in referenceSet must
947  * be encoded first by decodeProcent function.
948  * expected: checkReference should return NO_ERROR
949  */
950 /*
951 RUNNER_TEST(test05t04_signature_reference_encoding_space)
952 {
953     ReferenceSet referenceSet;
954     SignatureData data;
955     ReferenceValidator val("/usr/apps/widget/tests/reference");
956     referenceSet.insert("encoding%20test.empty");
957     data.setReference(referenceSet);
958
959     int temp = val.checkReferences(data);
960     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
961             "Errorcode : " << refValidatorErrorToString(temp));
962 }
963 */
964
965 /*
966  * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
967  * description: Negative test. File "encoding test" does not exists. Name set in
968  * referenceSet must be encoded first by decodeProcent function.
969  * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND
970  */
971 /*
972 RUNNER_TEST(test05t05_signature_reference_encoding_space_negative)
973 {
974     ReferenceSet referenceSet;
975     SignatureData data;
976     ReferenceValidator val("/usr/apps/widget/tests/reference");
977     referenceSet.insert("encoding%20test");
978     data.setReference(referenceSet);
979
980     int temp = val.checkReferences(data);
981     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
982             "Errorcode : " << refValidatorErrorToString(temp));
983 }
984 */
985
986 /*
987  * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
988  * description: File "encoding test.empty" exists. Name set in
989  * referenceSet must be encoded first by decodeProcent function.
990  * expected: checkReference should return NO_ERROR
991  */
992 /*
993 RUNNER_TEST(test05t06_signature_reference_encoding)
994 {
995     ReferenceSet referenceSet;
996     SignatureData data;
997     ReferenceValidator val("/usr/apps/widget/tests/reference");
998     referenceSet.insert("e%6Ec%6Fding%20te%73%74.e%6d%70ty");
999     data.setReference(referenceSet);
1000
1001     int temp = val.checkReferences(data);
1002     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
1003             "Errorcode : " << refValidatorErrorToString(temp));
1004 }
1005 */
1006
1007 /*
1008  * test: ReferenceValidator::checkReference, ReferenceValidator::decodeProcent
1009  * description: Negative test. "%%" is illegal combination of char. decodeProcent
1010  * should throw exception.
1011  * expected: checkReference should return ERROR_DECODING_URL
1012  */
1013 /*
1014 RUNNER_TEST(test05t07_signature_reference_encoding_negative)
1015 {
1016     ReferenceSet referenceSet;
1017     SignatureData data;
1018     ReferenceValidator val("/usr/apps/widget/tests/reference");
1019     referenceSet.insert("e%6Ec%6Fding%%0test%2ete%73%74");
1020     data.setReference(referenceSet);
1021
1022     int temp = val.checkReferences(data);
1023     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_DECODING_URL == temp,
1024             "Errorcode : " << refValidatorErrorToString(temp));
1025 }
1026 */
1027
1028 /*
1029  * test: class Certificate
1030  * description: Certificate should parse data passed to object constructor.
1031  * expected: Getters should be able to return certificate information.
1032  */
1033 RUNNER_TEST(test08t01_Certificate)
1034 {
1035     Certificate cert(certVerisign, Certificate::FORM_BASE64);
1036     std::string result;
1037
1038     result = cert.getCommonName(Certificate::FIELD_SUBJECT);
1039     RUNNER_ASSERT_MSG(!result.empty(), "No common name");
1040     RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch");
1041
1042     result = cert.getCommonName(Certificate::FIELD_ISSUER);
1043     RUNNER_ASSERT_MSG(!result.empty(), "No common name");
1044     RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"),
1045             "CommonName mismatch");
1046
1047     result = cert.getCountryName();
1048     RUNNER_ASSERT_MSG(!result.empty(), "No country");
1049     RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch");
1050 }
1051
1052 /*
1053  * test: Certificate::getFingerprint
1054  * description: Certificate should parse data passed to object constructor.
1055  * expected: Function fingerprint should return valid fingerprint.
1056  */
1057 RUNNER_TEST(test08t02_Certificate)
1058 {
1059     Certificate cert(certVerisign, Certificate::FORM_BASE64);
1060
1061     Certificate::Fingerprint fin =
1062         cert.getFingerprint(Certificate::FINGERPRINT_SHA1);
1063
1064     unsigned char buff[20] = {
1065         0xb9, 0x72, 0x1e, 0xd5, 0x49,
1066         0xed, 0xbf, 0x31, 0x84, 0xd8,
1067         0x27, 0x0c, 0xfe, 0x03, 0x11,
1068         0x19, 0xdf, 0xc2, 0x2b, 0x0a};
1069     RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint");
1070
1071     for (size_t i = 0; i<20; ++i) {
1072         RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch");
1073     }
1074 }
1075
1076 /*
1077  * test: Certificate::getAlternativeNameDNS
1078  * description: Certificate should parse data passed to object constructor.
1079  * expected: Function getAlternativeNameDNS should return list of
1080  * alternativeNames hardcoded in certificate.
1081  */
1082 RUNNER_TEST(test08t03_Certificate)
1083 {
1084     Certificate cert(certVerisign, Certificate::FORM_BASE64);
1085
1086     Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS();
1087
1088     RUNNER_ASSERT(nameSet.size() == 8);
1089
1090     std::string str("verisign.com");
1091     RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
1092
1093     str = std::string("fake.com");
1094     RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
1095
1096 }
1097
1098 /*
1099  * test: Certificate::isCA
1100  * description: Certificate should parse data passed to object constructor.
1101  * expected: 1st and 2nd certificate should be identified as CA.
1102  */
1103 RUNNER_TEST(test08t04_Certificate_isCA)
1104 {
1105     Certificate cert1(googleCA, Certificate::FORM_BASE64);
1106     RUNNER_ASSERT(cert1.isCA() > 0);
1107
1108     Certificate cert2(google2nd, Certificate::FORM_BASE64);
1109     RUNNER_ASSERT(cert2.isCA() > 0);
1110
1111     Certificate cert3(google3rd, Certificate::FORM_BASE64);
1112     RUNNER_ASSERT(cert3.isCA() == 0);
1113 }
1114
1115 #define CRYPTO_HASH_TEST(text,expected,FUN)                    \
1116     do {                                                       \
1117         ValidationCore::Crypto::Hash::Base *crypto;            \
1118         crypto = new ValidationCore::Crypto::Hash::FUN();      \
1119         std::string input = text;                              \
1120         crypto->Append(text);                                  \
1121         crypto->Finish();                                      \
1122         std::string result = crypto->ToBase64String();         \
1123         RUNNER_ASSERT_MSG(result == expected,                  \
1124             "Hash function failed");                           \
1125     } while(0)
1126
1127 /*
1128  * test: class ValidationCore::Crypto::Hash::MD4
1129  * description: Test implementation of MD4 hash algorithm
1130  * expected: Value counted by algorithm should be eqal to value encoded in test.
1131  */
1132 RUNNER_TEST(test80_crypto_md4)
1133 {
1134     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1135         "Rj5V34qqMQmHh2bn3Cb/vQ==",
1136         MD4);
1137 }
1138
1139 /*
1140  * test: class ValidationCore::Crypto::Hash::MD5
1141  * description: Test implementation of hash algorithm
1142  * expected: Value counted by algorithm should be eqal to value encoded in test.
1143  */
1144 RUNNER_TEST(test81_crypto_md5)
1145 {
1146     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1147         "4y2iI6QtFC7+0xurBOfcsg==",
1148         MD5);
1149 }
1150
1151 /*
1152  * test: class ValidationCore::Crypto::Hash::SHA
1153  * description: Test implementation of hash algorithm
1154  * expected: Value counted by algorithm should be eqal to value encoded in test.
1155  */
1156 RUNNER_TEST(test82_crypto_sha)
1157 {
1158     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1159         "v7w8XNvzQkZPoID+bbdrLwI6zPA=",
1160         SHA);
1161 }
1162
1163 /*
1164  * test: class ValidationCore::Crypto::Hash::SHA1
1165  * description: Test implementation of hash algorithm
1166  * expected: Value counted by algorithm should be eqal to value encoded in test.
1167  */
1168 RUNNER_TEST(test83_crypto_sha1)
1169 {
1170     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1171         "Srydq14dzpuLn+xlkGz7ZyFLe1w=",
1172         SHA1);
1173 }
1174
1175 /*
1176  * test: class ValidationCore::Crypto::Hash::SHA224
1177  * description: Test implementation of hash algorithm
1178  * expected: Value counted by algorithm should be eqal to value encoded in test.
1179  */
1180 RUNNER_TEST(test84_crypto_sha224)
1181 {
1182     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1183         "Ss2MKa2Mxrf0/hrl8bf0fOSz/e5nQv4J/yX6ig==",
1184         SHA224);
1185 }
1186
1187 /*
1188  * test: class ValidationCore::Crypto::Hash::SHA256
1189  * description: Test implementation of hash algorithm
1190  * expected: Value counted by algorithm should be eqal to value encoded in test.
1191  */
1192 RUNNER_TEST(test85_crypto_sha256)
1193 {
1194     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1195         "Bja/IuUJHLPlHYYB2hBcuuOlRWPy1RdF6gzL0VWxeps=",
1196         SHA256);
1197 }
1198
1199 /*
1200  * test: class ValidationCore::Crypto::Hash::SHA384
1201  * description: Test implementation of hash algorithm
1202  * expected: Value counted by algorithm should be eqal to value encoded in test.
1203  */
1204 RUNNER_TEST(test86_crypto_sha384)
1205 {
1206     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1207         "5RjtzCnGAt+P6J8h32Dzrmka+5i5MMvDRVz+s9jA7TW508sUZOnKliliad5nUJrj",
1208         SHA384);
1209 }
1210
1211 /*
1212  * test: class ValidationCore::Crypto::Hash::SHA512
1213  * description: Test implementation of hash algorithm
1214  * expected: Value counted by algorithm should be eqal to value encoded in test.
1215  */
1216 RUNNER_TEST(test87_crypto_sha512)
1217 {
1218     CRYPTO_HASH_TEST("Hi, my name is Bart.",
1219         "LxemzcQNf5erjA4a6PnTXfL+putB3uElitOjc5QCQ9Mg4ZuxTpre8VIBAviwRcTnui2Y0/Yg7cB40OG3XJMfbA==",
1220         SHA512);
1221 }
1222
1223 /*
1224  * test: class ValidationCore::Crypto::Hash::SHA1
1225  * description: This example was implemented to show how to count SHA1 value from certificate.
1226  * expected: Value counted by algorithm should be eqal to value encoded in test.
1227  */
1228 RUNNER_TEST(test88_crypto_sha1_certificate)
1229 {
1230     Certificate cert(certVerisign, Certificate::FORM_BASE64);
1231
1232     ValidationCore::Crypto::Hash::SHA1 sha1;
1233     sha1.Append(cert.getDER());
1234     sha1.Finish();
1235     std::string result = sha1.ToBase64String();
1236
1237     RUNNER_ASSERT_MSG(result == "uXIe1UntvzGE2CcM/gMRGd/CKwo=",
1238         "Certificate hash does not match.");
1239 }
1240
1241 /*
1242  * test: CertificateIdentifier::find(Fingerprint)
1243  * description: Check implementation of fingerprint_list.
1244  * expected: Google CA certificate was added to TIZEN_MEMBER group
1245  * and ORANGE_LEGACY. Both domain should be found.
1246  */
1247 /*
1248 RUNNER_TEST(test90_certificate_identifier_find_fingerprint)
1249 {
1250     CertificateIdentifier certIdent;
1251     CertificateConfigReader reader;
1252     reader.initialize(
1253         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1254         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1255     reader.read(certIdent);
1256
1257     Certificate cert(googleCA, Certificate::FORM_BASE64);
1258
1259     CertStoreId::Set domain =
1260         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
1261
1262     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
1263     RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
1264     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
1265     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
1266     RUNNER_ASSERT(domain.contains(CertStoreId::TIZEN_MEMBER));
1267     RUNNER_ASSERT(domain.contains(CertStoreId::ORANGE_LEGACY));
1268 }
1269 */
1270
1271 /*
1272  * test: CertificateIdentifier::find(CertificatePtr)
1273  * description: Check implementation of fingerprint_list.
1274  * expected: Google CA certificate was added to TIZEN_MEMBER group
1275  * and ORANGE_LEGACY. Both domain should be found.
1276  */
1277 /*
1278 RUNNER_TEST(test91_certificate_identifier_find_cert)
1279 {
1280     CertificateIdentifier certIdent;
1281     CertificateConfigReader reader;
1282     reader.initialize(
1283         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1284         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1285     reader.read(certIdent);
1286
1287     CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
1288
1289     CertStoreId::Set domain = certIdent.find(cert);
1290
1291     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
1292     RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
1293     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
1294     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
1295     RUNNER_ASSERT(domain.contains(CertStoreId::TIZEN_MEMBER));
1296     RUNNER_ASSERT(domain.contains(CertStoreId::ORANGE_LEGACY));
1297 }
1298 */
1299
1300 /*
1301  * test: CertificateIdentifier::find(Fingerprint)
1302  * description: Check implementation of fingerprint_list.
1303  * expected: google2nd certificate was not added to any group so
1304  * no domain should be found.
1305  */
1306 /*
1307 RUNNER_TEST(test92_certificate_identifier_negative)
1308 {
1309     CertificateIdentifier certIdent;
1310     CertificateConfigReader reader;
1311     reader.initialize(
1312         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1313         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1314     reader.read(certIdent);
1315
1316     Certificate cert(google2nd, Certificate::FORM_BASE64);
1317
1318     CertStoreId::Set domain =
1319         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
1320
1321     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
1322     RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
1323     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
1324     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
1325     RUNNER_ASSERT(!domain.contains(CertStoreId::TIZEN_MEMBER));
1326     RUNNER_ASSERT(!domain.contains(CertStoreId::ORANGE_LEGACY));
1327 }
1328 */
1329 /*
1330  * test: CertificateIdentifier::find(Fingerprint)
1331  * description: Check implementation of fingerprint_list.
1332  * expected: Google CA certificate was added to TIZEN_MEMBER group
1333  * and ORANGE_LEGACY. Both domain should be found.
1334  */
1335 /*
1336 RUNNER_TEST(test93_certificate_identifier_find_fingerprint)
1337 {
1338     CertificateIdentifier certIdent;
1339     CertificateConfigReader reader;
1340     reader.initialize(
1341         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1342         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1343     reader.read(certIdent);
1344
1345     Certificate cert(googleCA, Certificate::FORM_BASE64);
1346
1347     CertStoreId::Set visibilityLevel =
1348         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
1349
1350     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_PUBLISHER));
1351     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::DEVELOPER));
1352     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_ROOT));
1353     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_MEMBER));
1354     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::TIZEN_MEMBER));
1355     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::ORANGE_LEGACY));
1356
1357     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::VIS_PUBLIC));
1358     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER));
1359     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_OPERATOR));
1360     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_MANUFACTURER));
1361 }
1362 */
1363
1364 /*
1365  * test: CertificateIdentifier::find(CertificatePtr)
1366  * description: Check implementation of fingerprint_list.
1367  * expected: Google CA certificate was added to TIZEN_MEMBER group
1368  * and ORANGE_LEGACY. Both domain should be found.
1369  */
1370 /*
1371 RUNNER_TEST(test94_certificate_identifier_find_cert)
1372 {
1373     CertificateIdentifier certIdent;
1374     CertificateConfigReader reader;
1375     reader.initialize(
1376         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1377         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1378     reader.read(certIdent);
1379
1380     CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
1381
1382     CertStoreId::Set visibilityLevel = certIdent.find(cert);
1383
1384     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_PUBLISHER));
1385     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::DEVELOPER));
1386     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_ROOT));
1387     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::WAC_MEMBER));
1388     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::TIZEN_MEMBER));
1389     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::ORANGE_LEGACY));
1390
1391     RUNNER_ASSERT(visibilityLevel.contains(CertStoreId::VIS_PUBLIC));
1392     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER));
1393     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_OPERATOR));
1394     RUNNER_ASSERT(!visibilityLevel.contains(CertStoreId::VIS_PARTNER_MANUFACTURER));
1395 }
1396 */
1397
1398 /*
1399  * test: CertificateIdentifier::find(Fingerprint)
1400  * description: Check implementation of fingerprint_list.
1401  * expected: google2nd certificate was not added to any group so
1402  * no domain should be found.
1403  */
1404 /*
1405 RUNNER_TEST(test95_certificate_identifier_negative)
1406 {
1407     CertificateIdentifier certIdent;
1408     CertificateConfigReader reader;
1409     reader.initialize(
1410         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
1411         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
1412     reader.read(certIdent);
1413
1414     Certificate cert(google2nd, Certificate::FORM_BASE64);
1415
1416     CertStoreId::Set domain =
1417         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
1418
1419     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_PUBLISHER));
1420     RUNNER_ASSERT(!domain.contains(CertStoreId::DEVELOPER));
1421     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_ROOT));
1422     RUNNER_ASSERT(!domain.contains(CertStoreId::WAC_MEMBER));
1423     RUNNER_ASSERT(!domain.contains(CertStoreId::TIZEN_MEMBER));
1424     RUNNER_ASSERT(!domain.contains(CertStoreId::ORANGE_LEGACY));
1425     RUNNER_ASSERT(!domain.contains(CertStoreId::VIS_PUBLIC));
1426     RUNNER_ASSERT(!domain.contains(CertStoreId::VIS_PARTNER));
1427     RUNNER_ASSERT(!domain.contains(CertStoreId::VIS_PARTNER_OPERATOR));
1428     RUNNER_ASSERT(!domain.contains(CertStoreId::VIS_PARTNER_MANUFACTURER));
1429 }
1430 */