Refactor SignatureValidator and reduce interface headers
[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 #include <dpl/test/test_runner.h>
20 #include <vcore/SignatureFinder.h>
21 #include <vcore/SignatureValidator.h>
22 #include "TestEnv.h"
23
24 namespace {
25
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/";
38
39
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/";
43
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=";
48
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";
54
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=";
64
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"
80 "gS9G4WEAUg==";
81
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";
98
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";
112
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";
131
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=";
150
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"
189 "tk1ni/k5jDH/QeuG";
190
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==";
222
223 } // namespace anonymous
224
225 using namespace ValidationCore;
226
227 /*
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.
233  */
234 RUNNER_TEST(test01_signature_finder)
235 {
236     SignatureFileInfoSet signatureSet;
237     SignatureFinder signatureFinder(widget_path);
238     RUNNER_ASSERT_MSG(
239         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
240         "SignatureFinder failed");
241     RUNNER_ASSERT_MSG(signatureSet.size() == 3, "Some signature has not been found");
242
243     int count = 0;
244
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))
252         count++;
253     RUNNER_ASSERT_MSG(iter != signatureSet.end(), "There should be more items");
254
255     fileInfo = *iter++;
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))
261         count++;
262     RUNNER_ASSERT_MSG(iter != signatureSet.end(), "There should be more items");
263
264     fileInfo = *iter++;
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))
270         count++;
271     RUNNER_ASSERT_MSG(iter == signatureSet.end(), "It should be last item");
272
273     RUNNER_ASSERT_MSG(count == 3, "Wrong signature file count.");
274 }
275
276 /*
277  * test: Integration test of SignatureFinder, SignatureReader,
278  * SignatureValidator
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.
283  */
284 RUNNER_TEST(test03t01_signature_validator)
285 {
286     SignatureFileInfoSet signatureSet;
287     SignatureFinder signatureFinder(widget_path);
288     RUNNER_ASSERT_MSG(
289         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
290         "SignatureFinder failed");
291
292     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
293         iter != signatureSet.rend();
294         ++iter) {
295         SignatureData data;
296         SignatureValidator::Result valResult = SignatureValidator::check(
297                 *iter,
298                 widget_path,
299                 false,
300                 true,
301                 data);
302
303         if (data.isAuthorSignature())
304             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
305                 "Validation failed");
306         else
307             if (data.getSignatureNumber() == 1)
308                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
309                     "Validation failed");
310             else
311                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
312                     "Validation failed");
313     }
314 }
315
316 RUNNER_TEST(test03t02_signature_validator_negative_hash_input)
317 {
318     SignatureFileInfoSet signatureSet;
319     SignatureFinder signatureFinder(widget_negative_hash_path);
320     RUNNER_ASSERT_MSG(
321         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
322         "SignatureFinder failed");
323
324     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
325         iter != signatureSet.rend();
326         ++iter) {
327         SignatureData data;
328         SignatureValidator::Result valResult = SignatureValidator::check(
329                 *iter,
330                 widget_negative_hash_path,
331                 false,
332                 true,
333                 data);
334         if (!data.isAuthorSignature())
335             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
336                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
337         else
338             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
339                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
340     }
341 }
342
343 RUNNER_TEST(test03t03_signature_validator_negative_signature_input)
344 {
345     SignatureFileInfoSet signatureSet;
346     SignatureFinder signatureFinder(widget_negative_signature_path);
347     RUNNER_ASSERT_MSG(
348         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
349         "SignatureFinder failed");
350
351     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
352         iter != signatureSet.rend();
353         ++iter) {
354         SignatureData data;
355         SignatureValidator::Result valResult = SignatureValidator::check(
356                 *iter,
357                 widget_negative_signature_path,
358                 false,
359                 true,
360                 data);
361
362         if (!data.isAuthorSignature())
363             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
364                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
365         else
366             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
367                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
368     }
369 }
370
371 RUNNER_TEST(test03t04_signature_validator_partner)
372 {
373     SignatureFileInfoSet signatureSet;
374     SignatureFinder signatureFinder(widget_partner_path);
375     RUNNER_ASSERT_MSG(
376         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
377         "SignatureFinder failed");
378
379     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
380         iter != signatureSet.rend();
381         ++iter) {
382         SignatureData data;
383         SignatureValidator::Result valResult = SignatureValidator::check(
384                 *iter,
385                 widget_partner_path,
386                 false,
387                 true,
388                 data);
389
390         RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
391             "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
392         if (!data.isAuthorSignature()) {
393             RUNNER_ASSERT_MSG(
394                     data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
395                     "visibility check failed.");
396         }
397     }
398 }
399 /*
400  * test: Integration test of SignatureFinder, SignatureReader,
401  * SignatureValidator
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.
406  */
407 RUNNER_TEST(test04t01_signature_validator)
408 {
409     SignatureFileInfoSet signatureSet;
410     SignatureFinder signatureFinder(widget_path);
411     RUNNER_ASSERT_MSG(
412         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
413         "SignatureFinder failed");
414
415     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
416         iter != signatureSet.rend();
417         ++iter) {
418         SignatureData data;
419         SignatureValidator::Result valResult = SignatureValidator::check(
420                 *iter,
421                 widget_path,
422                 false,
423                 false,
424                 data);
425
426         if (data.isAuthorSignature())
427             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
428                 "Validation failed");
429         else
430             if (data.getSignatureNumber() == 1)
431                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
432                         "Validation failed");
433             else
434                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
435                         "Validation failed");
436     }
437 }
438
439 RUNNER_TEST(test04t02_signature_validator_negative_hash_input)
440 {
441     SignatureFileInfoSet signatureSet;
442     SignatureFinder signatureFinder(widget_negative_hash_path);
443     RUNNER_ASSERT_MSG(
444         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
445         "SignatureFinder failed");
446
447     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
448         iter != signatureSet.rend();
449         ++iter) {
450         SignatureData data;
451         SignatureValidator::Result valResult = SignatureValidator::check(
452                 *iter,
453                 widget_negative_hash_path,
454                 false,
455                 false,
456                 data);
457
458         if (!data.isAuthorSignature())
459             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
460                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
461         else
462             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
463                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
464     }
465 }
466
467 RUNNER_TEST(test04t03_signature_validator_negative_signature_input)
468 {
469     SignatureFileInfoSet signatureSet;
470     SignatureFinder signatureFinder(widget_negative_signature_path);
471     RUNNER_ASSERT_MSG(
472         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
473         "SignatureFinder failed");
474
475     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
476         iter != signatureSet.rend();
477         ++iter) {
478         SignatureData data;
479         SignatureValidator::Result valResult = SignatureValidator::check(
480                 *iter,
481                 widget_negative_signature_path,
482                 false,
483                 false,
484                 data);
485
486         if (!data.isAuthorSignature())
487             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_INVALID,
488                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
489         else
490             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
491                 "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
492     }
493 }
494
495 RUNNER_TEST(test04t04_signature_validator_partner)
496 {
497     SignatureFileInfoSet signatureSet;
498     SignatureFinder signatureFinder(widget_partner_path);
499     RUNNER_ASSERT_MSG(
500         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
501         "SignatureFinder failed");
502
503     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
504         iter != signatureSet.rend();
505         ++iter) {
506         SignatureData data;
507         SignatureValidator::Result valResult = SignatureValidator::check(
508                 *iter,
509                 widget_partner_path,
510                 false,
511                 false,
512                 data);
513
514         RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
515             "Wrong input file but success.. Errorcode : " << validatorErrorToString(valResult));
516
517         if (!data.isAuthorSignature())
518             RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
519                 "visibility check failed.");
520     }
521 }
522
523 /*
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.
528  */
529 RUNNER_TEST(test05t01_signature_reference)
530 {
531     SignatureFileInfoSet signatureSet;
532     SignatureFinder signatureFinder(widget_path);
533     RUNNER_ASSERT_MSG(
534         SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
535         "SignatureFinder failed");
536
537     for (SignatureFileInfoSet::reverse_iterator iter = signatureSet.rbegin();
538         iter != signatureSet.rend();
539         ++iter) {
540         SignatureData data;
541         SignatureValidator::Result valResult = SignatureValidator::check(
542                 *iter,
543                 widget_path,
544                 false,
545                 false,
546                 data);
547
548         if (data.isAuthorSignature())
549             RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
550                 "Validation failed");
551         else
552             if (data.getSignatureNumber() == 1)
553                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_DISREGARD,
554                     "Validation failed");
555             else
556                 RUNNER_ASSERT_MSG(valResult == SignatureValidator::SIGNATURE_VERIFIED,
557                     "Validation failed");
558
559 /*
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));
566 */
567     }
568 }
569
570 /*
571  * test: ReferenceValidator::checkReference
572  * description: Simple test. File "encoding test.empty" exists.
573  * expected: checkReference should return NO_ERROR.
574  */
575 /*
576 RUNNER_TEST(test05t02_signature_reference_encoding_dummy)
577 {
578     ReferenceSet referenceSet;
579     SignatureData data;
580     ReferenceValidator val("/usr/apps/widget/tests/reference");
581     referenceSet.insert("encoding test.empty");
582     data.setReference(referenceSet);
583
584     int temp = val.checkReferences(data);
585     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
586             "Errorcode : " << refValidatorErrorToString(temp));
587 }
588 */
589
590 /*
591  * test: ReferenceValidator::checkReference
592  * description: Negative test. File "encoding test" does not exists.
593  * expected: checkReference should return ERROR_REFERENCE_NOT_FOUND
594  */
595 /*
596 RUNNER_TEST(test05t03_signature_reference_encoding_negative)
597 {
598     ReferenceSet referenceSet;
599     SignatureData data;
600     ReferenceValidator val("/usr/apps/widget/tests/reference");
601     referenceSet.insert("encoding test");
602     data.setReference(referenceSet);
603
604     int temp = val.checkReferences(data);
605     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
606             "Errorcode : " << refValidatorErrorToString(temp));
607 }
608 */
609
610 /*
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
615  */
616 /*
617 RUNNER_TEST(test05t04_signature_reference_encoding_space)
618 {
619     ReferenceSet referenceSet;
620     SignatureData data;
621     ReferenceValidator val("/usr/apps/widget/tests/reference");
622     referenceSet.insert("encoding%20test.empty");
623     data.setReference(referenceSet);
624
625     int temp = val.checkReferences(data);
626     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
627             "Errorcode : " << refValidatorErrorToString(temp));
628 }
629 */
630
631 /*
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
636  */
637 /*
638 RUNNER_TEST(test05t05_signature_reference_encoding_space_negative)
639 {
640     ReferenceSet referenceSet;
641     SignatureData data;
642     ReferenceValidator val("/usr/apps/widget/tests/reference");
643     referenceSet.insert("encoding%20test");
644     data.setReference(referenceSet);
645
646     int temp = val.checkReferences(data);
647     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_REFERENCE_NOT_FOUND == temp,
648             "Errorcode : " << refValidatorErrorToString(temp));
649 }
650 */
651
652 /*
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
657  */
658 /*
659 RUNNER_TEST(test05t06_signature_reference_encoding)
660 {
661     ReferenceSet referenceSet;
662     SignatureData data;
663     ReferenceValidator val("/usr/apps/widget/tests/reference");
664     referenceSet.insert("e%6Ec%6Fding%20te%73%74.e%6d%70ty");
665     data.setReference(referenceSet);
666
667     int temp = val.checkReferences(data);
668     RUNNER_ASSERT_MSG(ReferenceValidator::NO_ERROR == temp,
669             "Errorcode : " << refValidatorErrorToString(temp));
670 }
671 */
672
673 /*
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
678  */
679 /*
680 RUNNER_TEST(test05t07_signature_reference_encoding_negative)
681 {
682     ReferenceSet referenceSet;
683     SignatureData data;
684     ReferenceValidator val("/usr/apps/widget/tests/reference");
685     referenceSet.insert("e%6Ec%6Fding%%0test%2ete%73%74");
686     data.setReference(referenceSet);
687
688     int temp = val.checkReferences(data);
689     RUNNER_ASSERT_MSG(ReferenceValidator::ERROR_DECODING_URL == temp,
690             "Errorcode : " << refValidatorErrorToString(temp));
691 }
692 */
693
694 /*
695  * test: class Certificate
696  * description: Certificate should parse data passed to object constructor.
697  * expected: Getters should be able to return certificate information.
698  */
699 RUNNER_TEST(test08t01_Certificate)
700 {
701     Certificate cert(certVerisign, Certificate::FORM_BASE64);
702     std::string result;
703
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");
707
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");
712
713     result = cert.getCountryName();
714     RUNNER_ASSERT_MSG(!result.empty(), "No country");
715     RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch");
716 }
717
718 /*
719  * test: Certificate::getFingerprint
720  * description: Certificate should parse data passed to object constructor.
721  * expected: Function fingerprint should return valid fingerprint.
722  */
723 RUNNER_TEST(test08t02_Certificate)
724 {
725     Certificate cert(certVerisign, Certificate::FORM_BASE64);
726
727     Certificate::Fingerprint fin =
728         cert.getFingerprint(Certificate::FINGERPRINT_SHA1);
729
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");
736
737     for (size_t i = 0; i<20; ++i) {
738         RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch");
739     }
740 }
741
742 /*
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.
747  */
748 RUNNER_TEST(test08t03_Certificate)
749 {
750     Certificate cert(certVerisign, Certificate::FORM_BASE64);
751
752     Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS();
753
754     RUNNER_ASSERT(nameSet.size() == 8);
755
756     std::string str("verisign.com");
757     RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
758
759     str = std::string("fake.com");
760     RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
761
762 }
763
764 /*
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.
768  */
769 RUNNER_TEST(test08t04_Certificate_isCA)
770 {
771     Certificate cert1(googleCA, Certificate::FORM_BASE64);
772     RUNNER_ASSERT(cert1.isCA() > 0);
773
774     Certificate cert2(google2nd, Certificate::FORM_BASE64);
775     RUNNER_ASSERT(cert2.isCA() > 0);
776
777     Certificate cert3(google3rd, Certificate::FORM_BASE64);
778     RUNNER_ASSERT(cert3.isCA() == 0);
779 }
780
781 /*
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.
786  */
787 /*
788 RUNNER_TEST(test90_certificate_identifier_find_fingerprint)
789 {
790     CertificateIdentifier certIdent;
791     CertificateConfigReader reader;
792     reader.initialize(
793         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
794         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
795     reader.read(certIdent);
796
797     Certificate cert(googleCA, Certificate::FORM_BASE64);
798
799     CertStoreId::Set domain =
800         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
801
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));
808 }
809 */
810
811 /*
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.
816  */
817 /*
818 RUNNER_TEST(test91_certificate_identifier_find_cert)
819 {
820     CertificateIdentifier certIdent;
821     CertificateConfigReader reader;
822     reader.initialize(
823         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
824         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
825     reader.read(certIdent);
826
827     CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
828
829     CertStoreId::Set domain = certIdent.find(cert);
830
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));
837 }
838 */
839
840 /*
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.
845  */
846 /*
847 RUNNER_TEST(test92_certificate_identifier_negative)
848 {
849     CertificateIdentifier certIdent;
850     CertificateConfigReader reader;
851     reader.initialize(
852         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
853         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
854     reader.read(certIdent);
855
856     Certificate cert(google2nd, Certificate::FORM_BASE64);
857
858     CertStoreId::Set domain =
859         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
860
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));
867 }
868 */
869 /*
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.
874  */
875 /*
876 RUNNER_TEST(test93_certificate_identifier_find_fingerprint)
877 {
878     CertificateIdentifier certIdent;
879     CertificateConfigReader reader;
880     reader.initialize(
881         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
882         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
883     reader.read(certIdent);
884
885     Certificate cert(googleCA, Certificate::FORM_BASE64);
886
887     CertStoreId::Set visibilityLevel =
888         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
889
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));
896
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));
901 }
902 */
903
904 /*
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.
909  */
910 /*
911 RUNNER_TEST(test94_certificate_identifier_find_cert)
912 {
913     CertificateIdentifier certIdent;
914     CertificateConfigReader reader;
915     reader.initialize(
916         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
917         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
918     reader.read(certIdent);
919
920     CertificatePtr cert(new Certificate(googleCA, Certificate::FORM_BASE64));
921
922     CertStoreId::Set visibilityLevel = certIdent.find(cert);
923
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));
930
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));
935 }
936 */
937
938 /*
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.
943  */
944 /*
945 RUNNER_TEST(test95_certificate_identifier_negative)
946 {
947     CertificateIdentifier certIdent;
948     CertificateConfigReader reader;
949     reader.initialize(
950         "/usr/apps/widget/tests/vcore_config/fin_list.xml",
951         "/usr/apps/widget/tests/vcore_config/fin_list.xsd");
952     reader.read(certIdent);
953
954     Certificate cert(google2nd, Certificate::FORM_BASE64);
955
956     CertStoreId::Set domain =
957         certIdent.find(cert.getFingerprint(Certificate::FINGERPRINT_SHA1));
958
959     RUNNER_ASSERT_MSG(domain.getTypeString().empty(), "Domain should be empty.");
960 }
961 */