Apply tizen coding rule 60/71960/2
authorsangwan.kwon <sangwan.kwon@samsung.com>
Mon, 30 May 2016 02:20:51 +0000 (11:20 +0900)
committersangwan.kwon <sangwan.kwon@samsung.com>
Mon, 30 May 2016 05:11:00 +0000 (14:11 +0900)
* It depends on cpp rule checker(version 160520)

Change-Id: I3f9502df2d02c4bb38a7535f250066977105c624

120 files changed:
tests/capi/common-res.cpp
tests/capi/common-res.h
tests/capi/main.cpp
tests/capi/test-certificate.cpp
tests/capi/test-primitive.cpp
tests/dpl/include/dpl/abstract_input.h
tests/dpl/include/dpl/abstract_input_output.h
tests/dpl/include/dpl/abstract_output.h
tests/dpl/include/dpl/assert.h
tests/dpl/include/dpl/binary_queue.h
tests/dpl/include/dpl/colors.h
tests/dpl/include/dpl/exception.h
tests/dpl/include/dpl/foreach.h
tests/dpl/include/dpl/free_deleter.h
tests/dpl/include/dpl/lexical_cast.h
tests/dpl/include/dpl/noncopyable.h
tests/dpl/include/dpl/scoped_fclose.h
tests/dpl/include/dpl/scoped_free.h
tests/dpl/include/dpl/scoped_resource.h
tests/dpl/include/dpl/singleton.h
tests/dpl/include/dpl/singleton_impl.h
tests/dpl/include/dpl/test/abstract_input_parser.h
tests/dpl/include/dpl/test/abstract_input_reader.h
tests/dpl/include/dpl/test/abstract_input_tokenizer.h
tests/dpl/include/dpl/test/test_results_collector.h
tests/dpl/include/dpl/test/test_runner.h
tests/dpl/include/dpl/test/test_runner_child.h
tests/dpl/include/dpl/test/test_runner_multiprocess.h
tests/dpl/include/dpl/test/value_separated_parser.h
tests/dpl/include/dpl/test/value_separated_policies.h
tests/dpl/include/dpl/test/value_separated_reader.h
tests/dpl/include/dpl/test/value_separated_tokenizer.h
tests/dpl/include/dpl/test/value_separated_tokens.h
tests/dpl/src/assert.cpp
tests/dpl/src/binary_queue.cpp
tests/dpl/src/colors.cpp
tests/dpl/src/errno_string.cpp
tests/dpl/src/exception.cpp
tests/dpl/src/test_results_collector.cpp
tests/dpl/src/test_runner.cpp
tests/dpl/src/test_runner_child.cpp
tests/dpl/src/test_runner_multiprocess.cpp
tests/dpl/src/value_separated_policies.cpp
tests/dpl/src/value_separated_tokens.cpp
tests/pkcs12/new_test_cases.cpp
tests/pkcs12/pkcs12_test.cpp
tests/plugin/plugin-sample.cpp
tests/vcore/main.cpp
tests/vcore/test-certificate.cpp
tests/vcore/test-common.cpp
tests/vcore/test-ocsp-check.cpp
tests/vcore/test-signature-validator.cpp
tests/vcore/test-time-conversion.cpp
vcore/cert-svc/ccert.h
vcore/cert-svc/cinstance.h
vcore/cert-svc/cpkcs12.h
vcore/cert-svc/cprimitives.h
vcore/cert-svc/cstring.h
vcore/dpl/core/include/dpl/assert.h
vcore/dpl/core/include/dpl/colors.h
vcore/dpl/core/include/dpl/exception.h
vcore/dpl/core/include/dpl/noncopyable.h
vcore/dpl/core/include/dpl/singleton.h
vcore/dpl/core/include/dpl/singleton_impl.h
vcore/dpl/core/src/assert.cpp
vcore/dpl/core/src/colors.cpp
vcore/dpl/core/src/exception.cpp
vcore/dpl/log/include/dpl/log/abstract_log_provider.h
vcore/dpl/log/include/dpl/log/dlog_log_provider.h
vcore/dpl/log/include/dpl/log/journal_log_provider.h
vcore/dpl/log/include/dpl/log/log.h
vcore/dpl/log/include/dpl/log/old_style_log_provider.h
vcore/dpl/log/src/abstract_log_provider.cpp
vcore/dpl/log/src/dlog_log_provider.cpp
vcore/dpl/log/src/journal_log_provider.cpp
vcore/dpl/log/src/log.cpp
vcore/dpl/log/src/old_style_log_provider.cpp
vcore/server/include/cert-server-debug.h
vcore/server/include/cert-server-logic.h
vcore/vcore/Base64.cpp
vcore/vcore/Base64.h
vcore/vcore/CertStoreType.cpp
vcore/vcore/CertStoreType.h
vcore/vcore/Certificate.cpp
vcore/vcore/Certificate.h
vcore/vcore/CertificateCollection.cpp
vcore/vcore/CertificateCollection.h
vcore/vcore/CertificateConfigReader.cpp
vcore/vcore/CertificateConfigReader.h
vcore/vcore/CertificateIdentifier.h
vcore/vcore/CertificateLoader.cpp
vcore/vcore/CertificateLoader.h
vcore/vcore/Client.cpp
vcore/vcore/Client.h
vcore/vcore/CryptoInit.h
vcore/vcore/Ocsp.cpp
vcore/vcore/ParserSchema.h
vcore/vcore/PluginHandler.cpp
vcore/vcore/ReferenceValidator.cpp
vcore/vcore/ReferenceValidator.h
vcore/vcore/SaxReader.cpp
vcore/vcore/SaxReader.h
vcore/vcore/SignatureData.cpp
vcore/vcore/SignatureData.h
vcore/vcore/SignatureFinder.cpp
vcore/vcore/SignatureFinder.h
vcore/vcore/SignatureReader.cpp
vcore/vcore/SignatureReader.h
vcore/vcore/SignatureValidator.cpp
vcore/vcore/SignatureValidator.h
vcore/vcore/TimeConversion.cpp
vcore/vcore/ValidatorFactories.cpp
vcore/vcore/ValidatorFactories.h
vcore/vcore/XmlsecAdapter.cpp
vcore/vcore/XmlsecAdapter.h
vcore/vcore/api.cpp
vcore/vcore/exception.cpp
vcore/vcore/exception.h
vcore/vcore/pkcs12.cpp
vcore/vcore/pkcs12.h

index 11a20ad..7e6fef8 100644 (file)
 
 #include "common-res.h"
 
-const std::string TestData::SelfSignedCAPath = std::string(TESTAPP_RES_DIR) + "certs/root_cacert0.pem";
-const std::string TestData::subjectGoogleCA = "/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority";
+const std::string TestData::SelfSignedCAPath = std::string(TESTAPP_RES_DIR) +
+               "certs/root_cacert0.pem";
+const std::string TestData::subjectGoogleCA =
+       "/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority";
 
 const std::string TestData::googleCA =
-    "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG"
-    "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz"
-    "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2"
-    "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV"
-    "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt"
-    "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN"
-    "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE"
-    "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is"
-    "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G"
-    "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do"
-    "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc"
-    "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k";
+       "MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG"
+       "A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz"
+       "cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2"
+       "MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV"
+       "BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt"
+       "YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN"
+       "ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE"
+       "BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is"
+       "I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G"
+       "CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do"
+       "lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc"
+       "AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k";
 
 const std::string TestData::google2nd =
-    "MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV"
-    "UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi"
-    "bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw"
-    "MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh"
-    "d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD"
-    "QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx"
-    "PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g"
-    "5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo"
-    "3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG"
-    "A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX"
-    "BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov"
-    "L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG"
-    "AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF"
-    "BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB"
-    "BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc"
-    "q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR"
-    "bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv";
+       "MIIDIzCCAoygAwIBAgIEMAAAAjANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJV"
+       "UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDMgUHVi"
+       "bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNTEzMDAw"
+       "MDAwWhcNMTQwNTEyMjM1OTU5WjBMMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh"
+       "d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBD"
+       "QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1NNn0I0Vf67NMf59HZGhPwtx"
+       "PKzMyGT7Y/wySweUvW+Aui/hBJPAM/wJMyPpC3QrccQDxtLN4i/1CWPN/0ilAL/g"
+       "5/OIty0y3pg25gqtAHvEZEo7hHUD8nCSfQ5i9SGraTaEMXWQ+L/HbIgbBpV8yeWo"
+       "3nWhLHpo39XKHIdYYBkCAwEAAaOB/jCB+zASBgNVHRMBAf8ECDAGAQH/AgEAMAsG"
+       "A1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwKAYDVR0RBCEwH6QdMBsxGTAX"
+       "BgNVBAMTEFByaXZhdGVMYWJlbDMtMTUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDov"
+       "L2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwMgYIKwYBBQUHAQEEJjAkMCIGCCsG"
+       "AQUFBzABhhZodHRwOi8vb2NzcC50aGF3dGUuY29tMDQGA1UdJQQtMCsGCCsGAQUF"
+       "BwMBBggrBgEFBQcDAgYJYIZIAYb4QgQBBgpghkgBhvhFAQgBMA0GCSqGSIb3DQEB"
+       "BQUAA4GBAFWsY+reod3SkF+fC852vhNRj5PZBSvIG3dLrWlQoe7e3P3bB+noOZTc"
+       "q3J5Lwa/q4FwxKjt6lM07e8eU9kGx1Yr0Vz00YqOtCuxN5BICEIlxT6Ky3/rbwTR"
+       "bcV0oveifHtgPHfNDs5IAn8BL7abN+AqKjbc1YXWrOU/VG+WHgWv";
 
 const std::string TestData::certEE =
-    "MIIDIjCCAougAwIBAgIQK59+5colpiUUIEeCdTqbuTANBgkqhkiG9w0BAQUFADBM"
-    "MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg"
-    "THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x"
-    "MzA5MzAyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh"
-    "MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw"
-    "FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
-    "AoGBAK85FZho5JL+T0/xu/8NLrD+Jaq9aARnJ+psQ0ynbcvIj36B7ocmJRASVDOe"
-    "qj2bj46Ss0sB4/lKKcMP/ay300yXKT9pVc9wgwSvLgRudNYPFwn+niAkJOPHaJys"
-    "Eb2S5LIbCfICMrtVGy0WXzASI+JMSo3C2j/huL/3OrGGvvDFAgMBAAGjgecwgeQw"
-    "DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0"
-    "ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF"
-    "BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0"
-    "cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3"
-    "dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF"
-    "BQADgYEANYARzVI+hCn7wSjhIOUCj19xZVgdYnJXPOZeJWHTy60i+NiBpOf0rnzZ"
-    "wW2qkw1iB5/yZ0eZNDNPPQJ09IHWOAgh6OKh+gVBnJzJ+fPIo+4NpddQVF4vfXm3"
-    "fgp8tuIsqK7+lNfNFjBxBKqeecPStiSnJavwSI4vw6e7UN0Pz7A=";
+       "MIIDIjCCAougAwIBAgIQK59+5colpiUUIEeCdTqbuTANBgkqhkiG9w0BAQUFADBM"
+       "MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg"
+       "THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x"
+       "MzA5MzAyMzU5NTlaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh"
+       "MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRgw"
+       "FgYDVQQDFA9tYWlsLmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
+       "AoGBAK85FZho5JL+T0/xu/8NLrD+Jaq9aARnJ+psQ0ynbcvIj36B7ocmJRASVDOe"
+       "qj2bj46Ss0sB4/lKKcMP/ay300yXKT9pVc9wgwSvLgRudNYPFwn+niAkJOPHaJys"
+       "Eb2S5LIbCfICMrtVGy0WXzASI+JMSo3C2j/huL/3OrGGvvDFAgMBAAGjgecwgeQw"
+       "DAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLnRoYXd0"
+       "ZS5jb20vVGhhd3RlU0dDQ0EuY3JsMCgGA1UdJQQhMB8GCCsGAQUFBwMBBggrBgEF"
+       "BQcDAgYJYIZIAYb4QgQBMHIGCCsGAQUFBwEBBGYwZDAiBggrBgEFBQcwAYYWaHR0"
+       "cDovL29jc3AudGhhd3RlLmNvbTA+BggrBgEFBQcwAoYyaHR0cDovL3d3dy50aGF3"
+       "dGUuY29tL3JlcG9zaXRvcnkvVGhhd3RlX1NHQ19DQS5jcnQwDQYJKoZIhvcNAQEF"
+       "BQADgYEANYARzVI+hCn7wSjhIOUCj19xZVgdYnJXPOZeJWHTy60i+NiBpOf0rnzZ"
+       "wW2qkw1iB5/yZ0eZNDNPPQJ09IHWOAgh6OKh+gVBnJzJ+fPIo+4NpddQVF4vfXm3"
+       "fgp8tuIsqK7+lNfNFjBxBKqeecPStiSnJavwSI4vw6e7UN0Pz7A=";
 
 const std::string TestData::certFullField =
-    "MIICvzCCAigCCQCpduCB5TcrmDANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UEBhMC"
-    "S08xEzARBgNVBAgMCkt5ZW9uZ2tpZG8xDjAMBgNVBAcMBVN1d29uMRAwDgYDVQQK"
-    "DAdTYW1zdW5nMRcwFQYDVQQLDA5Tb2Z0d2FyZUNlbnRlcjEWMBQGA1UEAwwNVGl6"
-    "ZW5TZWN1cml0eTEgMB4GCSqGSIb3DQEJARYRay50YWtAc2Ftc3VuZy5jb20wHhcN"
-    "MTUwODE5MDQzNTQxWhcNMjAwODE3MDQzNTQxWjCBrzELMAkGA1UEBhMCUE8xEzAR"
-    "BgNVBAgMClNlb3VsU3RhdGUxDjAMBgNVBAcMBVNlb3VsMRYwFAYDVQQKDA1TYW1z"
-    "dW5nU2Vjb25kMR0wGwYDVQQLDBRTb2Z0d2FyZUNlbnRlclNlY29uZDEcMBoGA1UE"
-    "AwwTVGl6ZW5TZWN1cml0eVNlY29uZDEmMCQGCSqGSIb3DQEJARYXa3l1bmd3b29r"
-    "LnRha0BnbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANgIo6MF"
-    "++LfNs3jSC87WRfO4zK/n+/xfPsn+Xwyi4jtsMxk2v/ye/SGESAACdCFFBL/EZ9j"
-    "Adu/6kzuKDJ5SpphW++XoUM2YdNxHzf6+z8JK9IPVmhy3b/hQlVbtBiFAMuLOn1D"
-    "C0gfTEnYRgZBs3v5Z/N35ZO1FoCz8y9wHmAXAgMBAAEwDQYJKoZIhvcNAQELBQAD"
-    "gYEAb3/k6KLLGysGEMFk2rVVvroqGqzeKHfk+t/pbrdGHEr0EIIXIYBk7YCGhMVF"
-    "Flw7g6Cpxyo1FQEFQhcdiv4/Iio2/RemtTYRILOnoaHSh9j9Fl1LT69MZq20hjId"
-    "8WNW2Ah9APv29fpZQFXo8dMsy1cnh4hJhWVWWttSLUBd1uE=";
+       "MIICvzCCAigCCQCpduCB5TcrmDANBgkqhkiG9w0BAQsFADCBlzELMAkGA1UEBhMC"
+       "S08xEzARBgNVBAgMCkt5ZW9uZ2tpZG8xDjAMBgNVBAcMBVN1d29uMRAwDgYDVQQK"
+       "DAdTYW1zdW5nMRcwFQYDVQQLDA5Tb2Z0d2FyZUNlbnRlcjEWMBQGA1UEAwwNVGl6"
+       "ZW5TZWN1cml0eTEgMB4GCSqGSIb3DQEJARYRay50YWtAc2Ftc3VuZy5jb20wHhcN"
+       "MTUwODE5MDQzNTQxWhcNMjAwODE3MDQzNTQxWjCBrzELMAkGA1UEBhMCUE8xEzAR"
+       "BgNVBAgMClNlb3VsU3RhdGUxDjAMBgNVBAcMBVNlb3VsMRYwFAYDVQQKDA1TYW1z"
+       "dW5nU2Vjb25kMR0wGwYDVQQLDBRTb2Z0d2FyZUNlbnRlclNlY29uZDEcMBoGA1UE"
+       "AwwTVGl6ZW5TZWN1cml0eVNlY29uZDEmMCQGCSqGSIb3DQEJARYXa3l1bmd3b29r"
+       "LnRha0BnbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANgIo6MF"
+       "++LfNs3jSC87WRfO4zK/n+/xfPsn+Xwyi4jtsMxk2v/ye/SGESAACdCFFBL/EZ9j"
+       "Adu/6kzuKDJ5SpphW++XoUM2YdNxHzf6+z8JK9IPVmhy3b/hQlVbtBiFAMuLOn1D"
+       "C0gfTEnYRgZBs3v5Z/N35ZO1FoCz8y9wHmAXAgMBAAEwDQYJKoZIhvcNAQELBQAD"
+       "gYEAb3/k6KLLGysGEMFk2rVVvroqGqzeKHfk+t/pbrdGHEr0EIIXIYBk7YCGhMVF"
+       "Flw7g6Cpxyo1FQEFQhcdiv4/Iio2/RemtTYRILOnoaHSh9j9Fl1LT69MZq20hjId"
+       "8WNW2Ah9APv29fpZQFXo8dMsy1cnh4hJhWVWWttSLUBd1uE=";
 
 std::string magdaCert =
-    "MIIEDzCCA3igAwIBAgIJAMdKgvadG/Z/MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV"
-    "BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT"
-    "BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA"
-    "c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIxMTMzWhcNMjExMDAyMTIxMTMzWjCBijEL"
-    "MAkGA1UEBhMCUEwxFDASBgNVBAgTC01hem93aWVja2llMRIwEAYDVQQHEwlsZWdp"
-    "b25vd28xEDAOBgNVBAoTB3NhbXN1bmcxDTALBgNVBAsTBHNwcmMxDjAMBgNVBAMT"
-    "BW1hZ2RhMSAwHgYJKoZIhvcNAQkBFhFtYWdkYUBzYW1zdW5nLmNvbTCCAbcwggEr"
-    "BgcqhkjOOAQBMIIBHgKBgQC1PCOasFhlfMc1yjdcp7zkzXGiW+MpVuFlsdYwkAa9"
-    "sIvNrQLi2ulxcnNBeCHKDbk7U+J3/QwO2XanapQMUqvfjfjL1QQ5Vf7ENUWPNP7c"
-    "Evx82Nb5jWdHyRfV//TciBZN8GLNEbfhtWlhI6CbDW1AaY0nPZ879rSIk7/aNKZ3"
-    "FQIVALcr8uQAmnV+3DLIA5nTo0Bg0bjLAoGAJG7meUtQbMulRMdjzeCoya2FXdm+"
-    "4acvInE9/+MybXTB3bFANMyw6WTvk4K9RK8tm52N95cykTjpAbxqTMaXwkdWbOFd"
-    "VKAKnyxi/UKtY9Q6NmwJB2hbA1GUzhPko8rEda66CGl0VbyM1lKMJjA+wp9pG110"
-    "L0ov19Q9fvqKp5UDgYUAAoGBAKxAQg7MqCgkC0MJftYjNaKM5n1iZv4j1li49zKf"
-    "Y5nTLP+vYAvg0owLNYvJ5ncKfY1DACPU4/+tC7TTua95wgj5rwvAXnzgSyOGuSr0"
-    "fK9DyrH6E0LfXT+WuIQHahm2iSbxqPrChlnp5/EXDTBaO6Qfdpq0BP48ClZebxcA"
-    "+TYFo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy"
-    "YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUmSpShswvWtEABd+l3WxccRcCydUw"
-    "HwYDVR0jBBgwFoAUggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQAD"
-    "gYEAgfnAu/gMJRC/BFwkgvrHL0TV4ffPVAf7RSnZS6ib4IHGgrvXJvL+Qh7vHykv"
-    "ZIqD2L96nY2EaSNr0yXrT81YROndOQUJNx4Y/W8m6asu4hzANNZqWCbApPDIMK6V"
-    "cPA1wrKgZqbWp218WBqI2v9pXV0O+jpzxq1+GeQV2UsbRwc=";
+       "MIIEDzCCA3igAwIBAgIJAMdKgvadG/Z/MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV"
+       "BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT"
+       "BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA"
+       "c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIxMTMzWhcNMjExMDAyMTIxMTMzWjCBijEL"
+       "MAkGA1UEBhMCUEwxFDASBgNVBAgTC01hem93aWVja2llMRIwEAYDVQQHEwlsZWdp"
+       "b25vd28xEDAOBgNVBAoTB3NhbXN1bmcxDTALBgNVBAsTBHNwcmMxDjAMBgNVBAMT"
+       "BW1hZ2RhMSAwHgYJKoZIhvcNAQkBFhFtYWdkYUBzYW1zdW5nLmNvbTCCAbcwggEr"
+       "BgcqhkjOOAQBMIIBHgKBgQC1PCOasFhlfMc1yjdcp7zkzXGiW+MpVuFlsdYwkAa9"
+       "sIvNrQLi2ulxcnNBeCHKDbk7U+J3/QwO2XanapQMUqvfjfjL1QQ5Vf7ENUWPNP7c"
+       "Evx82Nb5jWdHyRfV//TciBZN8GLNEbfhtWlhI6CbDW1AaY0nPZ879rSIk7/aNKZ3"
+       "FQIVALcr8uQAmnV+3DLIA5nTo0Bg0bjLAoGAJG7meUtQbMulRMdjzeCoya2FXdm+"
+       "4acvInE9/+MybXTB3bFANMyw6WTvk4K9RK8tm52N95cykTjpAbxqTMaXwkdWbOFd"
+       "VKAKnyxi/UKtY9Q6NmwJB2hbA1GUzhPko8rEda66CGl0VbyM1lKMJjA+wp9pG110"
+       "L0ov19Q9fvqKp5UDgYUAAoGBAKxAQg7MqCgkC0MJftYjNaKM5n1iZv4j1li49zKf"
+       "Y5nTLP+vYAvg0owLNYvJ5ncKfY1DACPU4/+tC7TTua95wgj5rwvAXnzgSyOGuSr0"
+       "fK9DyrH6E0LfXT+WuIQHahm2iSbxqPrChlnp5/EXDTBaO6Qfdpq0BP48ClZebxcA"
+       "+TYFo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy"
+       "YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUmSpShswvWtEABd+l3WxccRcCydUw"
+       "HwYDVR0jBBgwFoAUggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQAD"
+       "gYEAgfnAu/gMJRC/BFwkgvrHL0TV4ffPVAf7RSnZS6ib4IHGgrvXJvL+Qh7vHykv"
+       "ZIqD2L96nY2EaSNr0yXrT81YROndOQUJNx4Y/W8m6asu4hzANNZqWCbApPDIMK6V"
+       "cPA1wrKgZqbWp218WBqI2v9pXV0O+jpzxq1+GeQV2UsbRwc=";
 
 std::string magdaMes = "c2lnbmVkIGRhdGEK";
 
@@ -125,126 +127,129 @@ std::string magdaSig = "MC0CFQCL2pDA4S/zsHkDUCWOq7K6ebG14gIUHHoLsbeUd+BEqBXB6Xjm
 const TestData::SigComponents TestData::magda(magdaCert, magdaMes, magdaSig);
 
 std::string filipCert =
-    "MIIC4zCCAkygAwIBAgIJAMdKgvadG/Z+MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV"
-    "BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT"
-    "BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA"
-    "c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIwMDUxWhcNMjExMDAyMTIwMDUxWjB4MQsw"
-    "CQYDVQQGEwJQTDEMMAoGA1UECBMDTUFaMQwwCgYDVQQHEwNMZWcxDDAKBgNVBAoT"
-    "A1NhbTENMAsGA1UECxMEU1BSQzEOMAwGA1UEAxMFRmlsaXAxIDAeBgkqhkiG9w0B"
-    "CQEWEWZpbGlwQHNhbXN1bmcuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB"
-    "gQDS/sS0wXSCb34ojN8bWFd4Pl9eTLHh18UNGsPpLpp4itdfuc/OgyqaSoDwBzVh"
-    "EWAVLCTxexUa4Ncva+41NbkW4RCsFzeGs0ktpu1+8Q+v0QEOGqVF2rQkgilzDF/o"
-    "O56Fxw9vG1OA+qdQd3yOAV2EqLNBPrEYB9K5GFyffrakSQIDAQABo3sweTAJBgNV"
-    "HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp"
-    "Y2F0ZTAdBgNVHQ4EFgQUeyy3iV75KtOkpPFd6mnR9dFGZMwwHwYDVR0jBBgwFoAU"
-    "ggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQADgYEADtv0CBrQ1QCM"
-    "H9jKFjpSpq7zFKMXQeVtb/Zie823//woicg8kxnP5sS4dJWNXNb1iMLdhgV80g1y"
-    "t3gTWPxTtFzprQyNiJHTmrbNWXLX1roRVGUE/I8Q4xexqpbNlJIW2Jjm/kqoKfnK"
-    "xORG6HNPXZV29NY2fDRPPOIYoFQzrXI=";
+       "MIIC4zCCAkygAwIBAgIJAMdKgvadG/Z+MA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV"
+       "BAYTAlBMMQwwCgYDVQQIEwNNYXoxEDAOBgNVBAoTB1NhbXN1bmcxDTALBgNVBAsT"
+       "BFNQUkMxEDAOBgNVBAMTB1NhbXN1bmcxIjAgBgkqhkiG9w0BCQEWE3NhbXN1bmdA"
+       "c2Ftc3VuZy5jb20wHhcNMTExMDA1MTIwMDUxWhcNMjExMDAyMTIwMDUxWjB4MQsw"
+       "CQYDVQQGEwJQTDEMMAoGA1UECBMDTUFaMQwwCgYDVQQHEwNMZWcxDDAKBgNVBAoT"
+       "A1NhbTENMAsGA1UECxMEU1BSQzEOMAwGA1UEAxMFRmlsaXAxIDAeBgkqhkiG9w0B"
+       "CQEWEWZpbGlwQHNhbXN1bmcuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB"
+       "gQDS/sS0wXSCb34ojN8bWFd4Pl9eTLHh18UNGsPpLpp4itdfuc/OgyqaSoDwBzVh"
+       "EWAVLCTxexUa4Ncva+41NbkW4RCsFzeGs0ktpu1+8Q+v0QEOGqVF2rQkgilzDF/o"
+       "O56Fxw9vG1OA+qdQd3yOAV2EqLNBPrEYB9K5GFyffrakSQIDAQABo3sweTAJBgNV"
+       "HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp"
+       "Y2F0ZTAdBgNVHQ4EFgQUeyy3iV75KtOkpPFd6mnR9dFGZMwwHwYDVR0jBBgwFoAU"
+       "ggh/2wAChuhTKqX6WK5nfxQ4yGAwDQYJKoZIhvcNAQEFBQADgYEADtv0CBrQ1QCM"
+       "H9jKFjpSpq7zFKMXQeVtb/Zie823//woicg8kxnP5sS4dJWNXNb1iMLdhgV80g1y"
+       "t3gTWPxTtFzprQyNiJHTmrbNWXLX1roRVGUE/I8Q4xexqpbNlJIW2Jjm/kqoKfnK"
+       "xORG6HNPXZV29NY2fDRPPOIYoFQzrXI=";
 
 std::string filipMes = "Q3plZ28gdHUgc3p1a2Fzej8K";
 
 std::string filipSigSHA1 =
-    "xEIpVjEIUoDkYGtX2ih6Gbya0/gr7OMdvbBKmjqzfNh9GHqwrgjglByeC5sspUzPBUF4Vmg/hZqL"
-    "gSsxXw9bKEa8c6mTQoNX51IC0ELPsoUMIJF1gGdFu0SzKptvU0+ksiiOM+70+s5t8s3z0G5PeA7O"
-    "99oq8UlrX7GDlxaoTU4=";
+       "xEIpVjEIUoDkYGtX2ih6Gbya0/gr7OMdvbBKmjqzfNh9GHqwrgjglByeC5sspUzPBUF4Vmg/hZqL"
+       "gSsxXw9bKEa8c6mTQoNX51IC0ELPsoUMIJF1gGdFu0SzKptvU0+ksiiOM+70+s5t8s3z0G5PeA7O"
+       "99oq8UlrX7GDlxaoTU4=";
 
 std::string filipSigSHA256 =
-    "a5nGT6wnbQ8MLwLkG965E4e1Rv983E+v3nolLvvjuAKnfgWYb+70Da+T9ggYDTjngq+EBgC30w1p"
-    "EScrwye8ELefvRxDWy1+tWR4QRW/Nd4oN2U/pvozoabDSpe9Cvt0ECEOWKDqIYYnoWFjOiXg9VwD"
-    "HVVkQXvsSYu6thX/Xsk=";
+       "a5nGT6wnbQ8MLwLkG965E4e1Rv983E+v3nolLvvjuAKnfgWYb+70Da+T9ggYDTjngq+EBgC30w1p"
+       "EScrwye8ELefvRxDWy1+tWR4QRW/Nd4oN2U/pvozoabDSpe9Cvt0ECEOWKDqIYYnoWFjOiXg9VwD"
+       "HVVkQXvsSYu6thX/Xsk=";
 
 const TestData::SigComponents TestData::filipSHA1(filipCert, filipMes, filipSigSHA1);
 const TestData::SigComponents TestData::filipSHA256(filipCert, filipMes, filipSigSHA256);
 
 std::string certChainArr[3] = {
-    "MIIDXTCCAsagAwIBAgIBAjANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJLUjEO"
-    "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
-    "IFRlc3QxFzAVBgNVBAMMDlRlc3QgU2Vjb25kIENBMRswGQYJKoZIhvcNAQkBFgx0"
-    "dEBnbWFpbC5jb20wHhcNMTQwNjE4MDgxMTA0WhcNMTUwNjE4MDgxMTA0WjB7MQsw"
-    "CQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxFzAV"
-    "BgNVBAsMDlRpemVuIFRlc3QgQUlBMRQwEgYDVQQDDAtUZXN0IFNpZ25lcjEbMBkG"
-    "CSqGSIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB"
-    "iQKBgQCwgKw+/71jWXnx4bLLZrTPmE+NrDfHSfZx8yTGYeewMzP6ZlXM8WduxNiq"
-    "pqm7G2XN182GEXsdoxwa09HtMVGqSGA/BCamD1Z6liHOEb4UTB3ROJ1lZDDkyJ9a"
-    "gZOfoZst/Aj8+bwV3x3ie+p4a2w/8eSsalrfef2gX6khaSsJOwIDAQABo4HxMIHu"
-    "MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENl"
-    "cnRpZmljYXRlMB0GA1UdDgQWBBRL0nKiNUjzh1/LPvZoqLvnVfOZqjAfBgNVHSME"
-    "GDAWgBSpSfNbE0V2NHn/V5f660v2cWwYgDBzBggrBgEFBQcBAQRnMGUwIQYIKwYB"
-    "BQUHMAGGFWh0dHA6Ly8xMjcuMC4wLjE6ODg4ODBABggrBgEFBQcwAoY0aHR0cDov"
-    "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN"
-    "BgkqhkiG9w0BAQUFAAOBgQABP+yru9/2auZ4ekjV03WRg5Vq/rqmOHDruMNVbZ4H"
-    "4PBLRLSpC//OGahgEgUKe89BcB10lUi55D5YME3Do89I+hFugv0BPGaA201iLOhL"
-    "/0u0aVm1yJxNt1YjW2fMKqnCHgjoHzh0wQC1pIb5vxJrYCn3Pbhml7W6JPDDJHfm"
-    "XQ==",
-
-    "MIIDLzCCApigAwIBAgIBATANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJLUjEO"
-    "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
-    "IFRlc3QxFTATBgNVBAMMDFRlc3QgUm9vdCBDQTEbMBkGCSqGSIb3DQEJARYMdHRA"
-    "Z21haWwuY29tMB4XDTE0MDYxODA4MTA1OVoXDTE1MDYxODA4MTA1OVowejELMAkG"
-    "A1UEBhMCS1IxDjAMBgNVBAgMBVNlb3VsMRAwDgYDVQQKDAdTYW1zdW5nMRMwEQYD"
-    "VQQLDApUaXplbiBUZXN0MRcwFQYDVQQDDA5UZXN0IFNlY29uZCBDQTEbMBkGCSqG"
-    "SIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB"
-    "gQDLJrMAF/JzxIIrQzQ/3FGt7cGAUEYaEFSo+hcDKYRXaZC33/kkVANYFh+log9e"
-    "MJUUlt0TBOg79tOnS/5MBwWaVLEOLalv0Uj2FfjEMpGd/xEF6Vv34mSTcWadMHyD"
-    "wYwDZVwdFkrvOkA6WwgwS8XSrpbH/nkKUkKpk+YYljKEzQIDAQABo4HGMIHDMB0G"
-    "A1UdDgQWBBSpSfNbE0V2NHn/V5f660v2cWwYgDAfBgNVHSMEGDAWgBRkHk9Lnhgv"
-    "vOIwxHOma54FGt8SCDAMBgNVHRMEBTADAQH/MHMGCCsGAQUFBwEBBGcwZTAhBggr"
-    "BgEFBQcwAYYVaHR0cDovLzEyNy4wLjAuMTo4ODg4MEAGCCsGAQUFBzAChjRodHRw"
-    "Oi8vU1ZSU2VjdXJlLUczLWFpYS52ZXJpc2lnbi5jb20vU1ZSU2VjdXJlRzMuY2Vy"
-    "MA0GCSqGSIb3DQEBBQUAA4GBAFonDQzs/Ts1sEDW3f5EmuKVZlpH9sLstSLJxZK8"
-    "+v88Jbz451/Lf8hxvnMv3MwExXr9qPKPlvKRfj+bbLB5KTEcZ5zhDpJ7SDYesdUd"
-    "RKOMSN0JIRL3JOCdYHOnJk6o+45vZ/TNv0lsiK90vxH2jo2EXnNG+jeyBGwp+3H6"
-    "RWHw",
-
-    "MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJLUjEO"
-    "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
-    "IFRlc3QxFTATBgNVBAMMDFRlc3QgUm9vdCBDQTEbMBkGCSqGSIb3DQEJARYMdHRA"
-    "Z21haWwuY29tMB4XDTE0MDYxODA4MTA1MVoXDTE1MDYxODA4MTA1MVoweDELMAkG"
-    "A1UEBhMCS1IxDjAMBgNVBAgMBVNlb3VsMRAwDgYDVQQKDAdTYW1zdW5nMRMwEQYD"
-    "VQQLDApUaXplbiBUZXN0MRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0ExGzAZBgkqhkiG"
-    "9w0BCQEWDHR0QGdtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA"
-    "o6ZegsQ9hScM1yD7ejv44xUTJDjTlcGweHh76Im22x6yAljM2+dKdj3EIVGt0BA3"
-    "6qdZFl8WOxzQGcAzQY7GFOXQVog4UjqHMxmWwAx5jQyBzIieAj4HZ2lquPBiyiIe"
-    "HAo6sCSWsxnh7PqvWaAypPZVEqOJ3ga5rXyDCcjzQ8ECAwEAAaOBxjCBwzAdBgNV"
-    "HQ4EFgQUZB5PS54YL7ziMMRzpmueBRrfEggwHwYDVR0jBBgwFoAUZB5PS54YL7zi"
-    "MMRzpmueBRrfEggwDAYDVR0TBAUwAwEB/zBzBggrBgEFBQcBAQRnMGUwIQYIKwYB"
-    "BQUHMAGGFWh0dHA6Ly8xMjcuMC4wLjE6ODg4ODBABggrBgEFBQcwAoY0aHR0cDov"
-    "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN"
-    "BgkqhkiG9w0BAQUFAAOBgQAyRJXTZcwRCkRNGZQCO8txHvrmgv8vQwnZZF6SwyY/"
-    "Bry0fmlehtN52NLjjPEG6u9YFYfzSkjQlVR0qfQ2mNs3d6AKFlOdZOT6cuEIZuKe"
-    "pDb2Tx5JJbIN6N3fE/lVSW88K9aSCF2n15gYTSVmD0juHuLAoWnIicaa+Sbe2Tsj"
-    "AQ=="};
+       "MIIDXTCCAsagAwIBAgIBAjANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJLUjEO"
+       "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
+       "IFRlc3QxFzAVBgNVBAMMDlRlc3QgU2Vjb25kIENBMRswGQYJKoZIhvcNAQkBFgx0"
+       "dEBnbWFpbC5jb20wHhcNMTQwNjE4MDgxMTA0WhcNMTUwNjE4MDgxMTA0WjB7MQsw"
+       "CQYDVQQGEwJLUjEOMAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxFzAV"
+       "BgNVBAsMDlRpemVuIFRlc3QgQUlBMRQwEgYDVQQDDAtUZXN0IFNpZ25lcjEbMBkG"
+       "CSqGSIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB"
+       "iQKBgQCwgKw+/71jWXnx4bLLZrTPmE+NrDfHSfZx8yTGYeewMzP6ZlXM8WduxNiq"
+       "pqm7G2XN182GEXsdoxwa09HtMVGqSGA/BCamD1Z6liHOEb4UTB3ROJ1lZDDkyJ9a"
+       "gZOfoZst/Aj8+bwV3x3ie+p4a2w/8eSsalrfef2gX6khaSsJOwIDAQABo4HxMIHu"
+       "MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENl"
+       "cnRpZmljYXRlMB0GA1UdDgQWBBRL0nKiNUjzh1/LPvZoqLvnVfOZqjAfBgNVHSME"
+       "GDAWgBSpSfNbE0V2NHn/V5f660v2cWwYgDBzBggrBgEFBQcBAQRnMGUwIQYIKwYB"
+       "BQUHMAGGFWh0dHA6Ly8xMjcuMC4wLjE6ODg4ODBABggrBgEFBQcwAoY0aHR0cDov"
+       "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN"
+       "BgkqhkiG9w0BAQUFAAOBgQABP+yru9/2auZ4ekjV03WRg5Vq/rqmOHDruMNVbZ4H"
+       "4PBLRLSpC//OGahgEgUKe89BcB10lUi55D5YME3Do89I+hFugv0BPGaA201iLOhL"
+       "/0u0aVm1yJxNt1YjW2fMKqnCHgjoHzh0wQC1pIb5vxJrYCn3Pbhml7W6JPDDJHfm"
+       "XQ==",
+
+       "MIIDLzCCApigAwIBAgIBATANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJLUjEO"
+       "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
+       "IFRlc3QxFTATBgNVBAMMDFRlc3QgUm9vdCBDQTEbMBkGCSqGSIb3DQEJARYMdHRA"
+       "Z21haWwuY29tMB4XDTE0MDYxODA4MTA1OVoXDTE1MDYxODA4MTA1OVowejELMAkG"
+       "A1UEBhMCS1IxDjAMBgNVBAgMBVNlb3VsMRAwDgYDVQQKDAdTYW1zdW5nMRMwEQYD"
+       "VQQLDApUaXplbiBUZXN0MRcwFQYDVQQDDA5UZXN0IFNlY29uZCBDQTEbMBkGCSqG"
+       "SIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB"
+       "gQDLJrMAF/JzxIIrQzQ/3FGt7cGAUEYaEFSo+hcDKYRXaZC33/kkVANYFh+log9e"
+       "MJUUlt0TBOg79tOnS/5MBwWaVLEOLalv0Uj2FfjEMpGd/xEF6Vv34mSTcWadMHyD"
+       "wYwDZVwdFkrvOkA6WwgwS8XSrpbH/nkKUkKpk+YYljKEzQIDAQABo4HGMIHDMB0G"
+       "A1UdDgQWBBSpSfNbE0V2NHn/V5f660v2cWwYgDAfBgNVHSMEGDAWgBRkHk9Lnhgv"
+       "vOIwxHOma54FGt8SCDAMBgNVHRMEBTADAQH/MHMGCCsGAQUFBwEBBGcwZTAhBggr"
+       "BgEFBQcwAYYVaHR0cDovLzEyNy4wLjAuMTo4ODg4MEAGCCsGAQUFBzAChjRodHRw"
+       "Oi8vU1ZSU2VjdXJlLUczLWFpYS52ZXJpc2lnbi5jb20vU1ZSU2VjdXJlRzMuY2Vy"
+       "MA0GCSqGSIb3DQEBBQUAA4GBAFonDQzs/Ts1sEDW3f5EmuKVZlpH9sLstSLJxZK8"
+       "+v88Jbz451/Lf8hxvnMv3MwExXr9qPKPlvKRfj+bbLB5KTEcZ5zhDpJ7SDYesdUd"
+       "RKOMSN0JIRL3JOCdYHOnJk6o+45vZ/TNv0lsiK90vxH2jo2EXnNG+jeyBGwp+3H6"
+       "RWHw",
+
+       "MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJLUjEO"
+       "MAwGA1UECAwFU2VvdWwxEDAOBgNVBAoMB1NhbXN1bmcxEzARBgNVBAsMClRpemVu"
+       "IFRlc3QxFTATBgNVBAMMDFRlc3QgUm9vdCBDQTEbMBkGCSqGSIb3DQEJARYMdHRA"
+       "Z21haWwuY29tMB4XDTE0MDYxODA4MTA1MVoXDTE1MDYxODA4MTA1MVoweDELMAkG"
+       "A1UEBhMCS1IxDjAMBgNVBAgMBVNlb3VsMRAwDgYDVQQKDAdTYW1zdW5nMRMwEQYD"
+       "VQQLDApUaXplbiBUZXN0MRUwEwYDVQQDDAxUZXN0IFJvb3QgQ0ExGzAZBgkqhkiG"
+       "9w0BCQEWDHR0QGdtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA"
+       "o6ZegsQ9hScM1yD7ejv44xUTJDjTlcGweHh76Im22x6yAljM2+dKdj3EIVGt0BA3"
+       "6qdZFl8WOxzQGcAzQY7GFOXQVog4UjqHMxmWwAx5jQyBzIieAj4HZ2lquPBiyiIe"
+       "HAo6sCSWsxnh7PqvWaAypPZVEqOJ3ga5rXyDCcjzQ8ECAwEAAaOBxjCBwzAdBgNV"
+       "HQ4EFgQUZB5PS54YL7ziMMRzpmueBRrfEggwHwYDVR0jBBgwFoAUZB5PS54YL7zi"
+       "MMRzpmueBRrfEggwDAYDVR0TBAUwAwEB/zBzBggrBgEFBQcBAQRnMGUwIQYIKwYB"
+       "BQUHMAGGFWh0dHA6Ly8xMjcuMC4wLjE6ODg4ODBABggrBgEFBQcwAoY0aHR0cDov"
+       "L1NWUlNlY3VyZS1HMy1haWEudmVyaXNpZ24uY29tL1NWUlNlY3VyZUczLmNlcjAN"
+       "BgkqhkiG9w0BAQUFAAOBgQAyRJXTZcwRCkRNGZQCO8txHvrmgv8vQwnZZF6SwyY/"
+       "Bry0fmlehtN52NLjjPEG6u9YFYfzSkjQlVR0qfQ2mNs3d6AKFlOdZOT6cuEIZuKe"
+       "pDb2Tx5JJbIN6N3fE/lVSW88K9aSCF2n15gYTSVmD0juHuLAoWnIicaa+Sbe2Tsj"
+       "AQ=="
+};
 std::vector<std::string> TestData::certChain(certChainArr, certChainArr + 3);
 
 std::string certChainSelfSignedArr[2] = {
-    "MIICdzCCAeACAQcwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAktSMQ4wDAYD"
-    "VQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3VuZzETMBEGA1UECwwKVGl6ZW4gVGVz"
-    "dDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZlcnNpb24gMTEbMBkGCSqGSIb3DQEJ"
-    "ARYMdHRAZ21haWwuY29tMB4XDTE0MDYxNDA4MTI1MFoXDTE1MDYxNDA4MTI1MFow"
-    "gYQxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3Vu"
-    "ZzETMBEGA1UECwwKVGl6ZW4gVGVzdDEhMB8GA1UEAwwYVGVzdCBTZWNvbmQgQ0Eg"
-    "VmVyc2lvbiAxMRswGQYJKoZIhvcNAQkBFgx0dEBnbWFpbC5jb20wgZ8wDQYJKoZI"
-    "hvcNAQEBBQADgY0AMIGJAoGBAKOqFNxvO2jYcq5kqVehHH5k1D1dYwhBnH/SReWE"
-    "OTSbH+3lbaKhJQHPHjsndENUxPInF6r0prO3TqoMB6774Pmc+znoVfLsHvWorhyr"
-    "8iQNyaSgVWt0+8L0FU8iReqr5BR6YcZpnVRCV9dAIcf6FIVGUGZhTs/NvZDzIc4T"
-    "9RrLAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAGDDvWhdMFg4GtDdytrK/GJ9TxX5F"
-    "9iA/8qCl0+JU1U7jUVIcX77AxeZGBtq02X+DtjEWqnepS1iYO2TUHZBKRRCB2+wF"
-    "ZsQ5XWngLSco+UvqUzMpWIQqslDXixWSR+Bef2S7iND3u8HJLjTncMcuJNpoXsFK"
-    "bUiLqMVGQCkGZMo=",
-
-    "MIICdTCCAd4CAQYwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAktSMQ4wDAYD"
-    "VQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3VuZzETMBEGA1UECwwKVGl6ZW4gVGVz"
-    "dDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZlcnNpb24gMTEbMBkGCSqGSIb3DQEJ"
-    "ARYMdHRAZ21haWwuY29tMB4XDTE0MDYxNDA4MTIzNVoXDTE1MDYxNDA4MTIzNVow"
-    "gYIxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3Vu"
-    "ZzETMBEGA1UECwwKVGl6ZW4gVGVzdDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZl"
-    "cnNpb24gMTEbMBkGCSqGSIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3"
-    "DQEBAQUAA4GNADCBiQKBgQDtxGjhpaUK6xa4+sjMQfkKRAtjFkjZasVIt7uKUy/g"
-    "GcC5i5aoorfyX/NBQLAVoIHMogHLgitehKL5l13tLR7DSETrG9V3Yx9bkWRcjyqH"
-    "1TkD+NDOmhTtVuqIh4hrGKITlZK35hOh0IUEfYNNL8uq/11fVPpR3Yx97PT/j4w1"
-    "uwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAOHjfa7nbPKhqR0mGfsscPQZZAZzKq9y"
-    "ttdjTaNbnybzcJzcN3uwOdYKMf26Dn968nAPkukWe8j6GyMJ1C9LMAWqMn5hl0rI"
-    "x6mUBfKZrl33BKH4KTYOrt0vnHdrCM2TwMkwMZ5ja5bBnbNrfF4e0HIAMor4rnVP"
-    "WDSlESMMmtTm"};
-std::vector<std::string> TestData::certChainSelfSigned(certChainSelfSignedArr, certChainSelfSignedArr + 2);
+       "MIICdzCCAeACAQcwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAktSMQ4wDAYD"
+       "VQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3VuZzETMBEGA1UECwwKVGl6ZW4gVGVz"
+       "dDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZlcnNpb24gMTEbMBkGCSqGSIb3DQEJ"
+       "ARYMdHRAZ21haWwuY29tMB4XDTE0MDYxNDA4MTI1MFoXDTE1MDYxNDA4MTI1MFow"
+       "gYQxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3Vu"
+       "ZzETMBEGA1UECwwKVGl6ZW4gVGVzdDEhMB8GA1UEAwwYVGVzdCBTZWNvbmQgQ0Eg"
+       "VmVyc2lvbiAxMRswGQYJKoZIhvcNAQkBFgx0dEBnbWFpbC5jb20wgZ8wDQYJKoZI"
+       "hvcNAQEBBQADgY0AMIGJAoGBAKOqFNxvO2jYcq5kqVehHH5k1D1dYwhBnH/SReWE"
+       "OTSbH+3lbaKhJQHPHjsndENUxPInF6r0prO3TqoMB6774Pmc+znoVfLsHvWorhyr"
+       "8iQNyaSgVWt0+8L0FU8iReqr5BR6YcZpnVRCV9dAIcf6FIVGUGZhTs/NvZDzIc4T"
+       "9RrLAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAGDDvWhdMFg4GtDdytrK/GJ9TxX5F"
+       "9iA/8qCl0+JU1U7jUVIcX77AxeZGBtq02X+DtjEWqnepS1iYO2TUHZBKRRCB2+wF"
+       "ZsQ5XWngLSco+UvqUzMpWIQqslDXixWSR+Bef2S7iND3u8HJLjTncMcuJNpoXsFK"
+       "bUiLqMVGQCkGZMo=",
+
+       "MIICdTCCAd4CAQYwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAktSMQ4wDAYD"
+       "VQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3VuZzETMBEGA1UECwwKVGl6ZW4gVGVz"
+       "dDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZlcnNpb24gMTEbMBkGCSqGSIb3DQEJ"
+       "ARYMdHRAZ21haWwuY29tMB4XDTE0MDYxNDA4MTIzNVoXDTE1MDYxNDA4MTIzNVow"
+       "gYIxCzAJBgNVBAYTAktSMQ4wDAYDVQQIDAVTZW91bDEQMA4GA1UECgwHU2Ftc3Vu"
+       "ZzETMBEGA1UECwwKVGl6ZW4gVGVzdDEfMB0GA1UEAwwWVGVzdCBSb290IENBIFZl"
+       "cnNpb24gMTEbMBkGCSqGSIb3DQEJARYMdHRAZ21haWwuY29tMIGfMA0GCSqGSIb3"
+       "DQEBAQUAA4GNADCBiQKBgQDtxGjhpaUK6xa4+sjMQfkKRAtjFkjZasVIt7uKUy/g"
+       "GcC5i5aoorfyX/NBQLAVoIHMogHLgitehKL5l13tLR7DSETrG9V3Yx9bkWRcjyqH"
+       "1TkD+NDOmhTtVuqIh4hrGKITlZK35hOh0IUEfYNNL8uq/11fVPpR3Yx97PT/j4w1"
+       "uwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAOHjfa7nbPKhqR0mGfsscPQZZAZzKq9y"
+       "ttdjTaNbnybzcJzcN3uwOdYKMf26Dn968nAPkukWe8j6GyMJ1C9LMAWqMn5hl0rI"
+       "x6mUBfKZrl33BKH4KTYOrt0vnHdrCM2TwMkwMZ5ja5bBnbNrfF4e0HIAMor4rnVP"
+       "WDSlESMMmtTm"
+};
+std::vector<std::string> TestData::certChainSelfSigned(certChainSelfSignedArr,
+               certChainSelfSignedArr + 2);
index 0249445..8c60d64 100644 (file)
@@ -34,9 +34,9 @@ namespace TestData {
 class SigComponents {
 public:
        SigComponents(std::string &cert, std::string &mes, std::string &sig)
-         : certificate(cert)
-         , message(mes)
-         , signature(sig) {}
+               : certificate(cert)
+               , message(mes)
+               , signature(sig) {}
 
        std::string certificate;
        std::string message;
index b508135..11c5538 100644 (file)
 
 CertSvcInstance vinstance;
 
-int main (int argc, char *argv[])
+int main(int argc, char *argv[])
 {
-    certsvc_instance_new(&vinstance);
-    int status = VcoreDPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
-    certsvc_instance_free(vinstance);
-    return status;
+       certsvc_instance_new(&vinstance);
+       int status = VcoreDPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
+       certsvc_instance_free(vinstance);
+       return status;
 }
 
index e77034f..2c41131 100644 (file)
@@ -34,22 +34,20 @@ void _get_string_field_and_check(
 {
        CertSvcString fieldStr;
        int result = certsvc_certificate_get_string_field(
-                       cert,
-                       field,
-                       &fieldStr);
+                                        cert,
+                                        field,
+                                        &fieldStr);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result,
-               "Error in certsvc_certificate_get_string_field. "
-               "field : " << field << " expected : " << expected);
-
+                                         "Error in certsvc_certificate_get_string_field. "
+                                         "field : " << field << " expected : " << expected);
        size_t size;
        const char *ptr;
-
        certsvc_string_to_cstring(fieldStr, &ptr, &size);
 
        if (ptr != NULL) {
                std::cout << "filed[" << field << "] str[" << ptr << "]" << std::endl;
                RUNNER_ASSERT_MSG(strncmp(ptr, expected, size) == 0,
-                       "extracted field isn't match to expected value");
+                                                 "extracted field isn't match to expected value");
        } else {
                std::cout << "field[" << field << "] is empty." << std::endl;
        }
@@ -61,56 +59,43 @@ RUNNER_TEST(T0101_certificate_new_from_file)
 {
        CertSvcCertificate cert;
        int result = certsvc_certificate_new_from_file(
-                       vinstance,
-                       TestData::SelfSignedCAPath.c_str(),
-                       &cert);
+                                        vinstance,
+                                        TestData::SelfSignedCAPath.c_str(),
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_TRUE == result, "Error reading certificate");
-
        CertSvcString string;
-
        certsvc_certificate_get_string_field(
                cert,
                CERTSVC_SUBJECT_COMMON_NAME,
                &string);
-
        const char *ptr = "Samsung";
-
        const char *buffer;
        size_t len;
-
        certsvc_string_to_cstring(string, &buffer, &len);
-
        result = strncmp(buffer, ptr, strlen(ptr));
-
        RUNNER_ASSERT_MSG(0 == result, "Error reading common name");
-
        certsvc_certificate_free(cert);
 }
 
 RUNNER_TEST(T0103_is_signed_by)
 {
        CertSvcCertificate cert1, cert2;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
-                       TestData::googleCA.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert1);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
+                                        TestData::googleCA.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert1);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error reading certificate");
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
-                       TestData::google2nd.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert2);
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
+                                TestData::google2nd.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert2);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error reading certificate");
-
        int status;
        result = certsvc_certificate_is_signed_by(cert2, cert1, &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Chain verification failed");
        RUNNER_ASSERT_MSG(CERTSVC_TRUE == status, "Chain verification failed");
 }
@@ -118,24 +103,18 @@ RUNNER_TEST(T0103_is_signed_by)
 RUNNER_TEST(T0104_not_before_not_after)
 {
        CertSvcCertificate cert;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
-                       TestData::google2nd.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
+                                        TestData::google2nd.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error reading certificate");
-
        time_t before, after;
        result = certsvc_certificate_get_not_before(cert, &before);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error extracting NOT_BEFORE");
        RUNNER_ASSERT_MSG(before == 1084406400, "TODO");
-
        result = certsvc_certificate_get_not_after(cert, &after);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error extracting NOT_AFTER");
        //extracted: date --date="May 12 23:59:59 2014 GMT" +%s
        RUNNER_ASSERT_MSG(after == 1399939199, "TODO");
@@ -144,51 +123,41 @@ RUNNER_TEST(T0104_not_before_not_after)
 RUNNER_TEST(T01051_cert_get_field_subject)
 {
        CertSvcCertificate cert;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
-                       TestData::certFullField.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
+                                        TestData::certFullField.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT,
                "/C=PO/ST=SeoulState/L=Seoul/O=SamsungSecond/OU=SoftwareCenterSecond/CN=TizenSecuritySecond/emailAddress=kyungwook.tak@gmail.com");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_COMMON_NAME,
                "TizenSecuritySecond");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_COUNTRY_NAME,
                "PO");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_STATE_NAME,
                "SeoulState");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_LOCALITY_NAME,
                "Seoul");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_ORGANIZATION_NAME,
                "SamsungSecond");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_ORGANIZATION_UNIT_NAME,
                "SoftwareCenterSecond");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SUBJECT_EMAIL_ADDRESS,
@@ -198,51 +167,41 @@ RUNNER_TEST(T01051_cert_get_field_subject)
 RUNNER_TEST(T01052_cert_get_field_issuer)
 {
        CertSvcCertificate cert;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
-                       TestData::certFullField.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
+                                        TestData::certFullField.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER,
                "/C=KO/ST=Kyeongkido/L=Suwon/O=Samsung/OU=SoftwareCenter/CN=TizenSecurity/emailAddress=k.tak@samsung.com");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_COMMON_NAME,
                "TizenSecurity");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_COUNTRY_NAME,
                "KO");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_STATE_NAME,
                "Kyeongkido");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_LOCALITY_NAME,
                "Suwon");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_ORGANIZATION_NAME,
                "Samsung");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_ORGANIZATION_UNIT_NAME,
                "SoftwareCenter");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_ISSUER_EMAIL_ADDRESS,
@@ -252,36 +211,29 @@ RUNNER_TEST(T01052_cert_get_field_issuer)
 RUNNER_TEST(T01053_cert_get_field_other)
 {
        CertSvcCertificate cert;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
-                       TestData::certFullField.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::certFullField.c_str()),
+                                        TestData::certFullField.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_VERSION,
                "1");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SERIAL_NUMBER,
                "a9:76:e0:81:e5:37:2b:98");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_KEY_ALGO,
                "rsaEncryption");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_SIGNATURE_ALGORITHM,
                "sha256WithRSAEncryption");
-
        _get_string_field_and_check(
                cert,
                CERTSVC_KEY,
@@ -302,50 +254,42 @@ RUNNER_TEST(T01053_cert_get_field_other)
 RUNNER_TEST(T0106_chain_sort)
 {
        CertSvcCertificate cert1, cert2, cert3;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::certEE.c_str()),
-                       TestData::certEE.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert1);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::certEE.c_str()),
+                                        TestData::certEE.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert1);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
-                       TestData::google2nd.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert2);
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::google2nd.c_str()),
+                                TestData::google2nd.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert2);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
-                       TestData::googleCA.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert3);
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
+                                TestData::googleCA.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert3);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        CertSvcCertificate collection[3];
        collection[0] = cert1;
        collection[1] = cert3;
        collection[2] = cert2;
-
-       RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == certsvc_certificate_chain_sort(collection, 3), "FAIL TO SORT CERTIFICATE");
-
+       RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == certsvc_certificate_chain_sort(collection, 3),
+                                         "FAIL TO SORT CERTIFICATE");
        RUNNER_ASSERT_MSG(
                (memcmp(&collection[2], &cert3, sizeof(CertSvcCertificate)) == 0
-                       && memcmp(&collection[1], &cert2, sizeof(CertSvcCertificate)) == 0
-                       && memcmp(&collection[0], &cert1, sizeof(CertSvcCertificate)) == 0),
+                && memcmp(&collection[1], &cert2, sizeof(CertSvcCertificate)) == 0
+                && memcmp(&collection[0], &cert1, sizeof(CertSvcCertificate)) == 0),
                "certsvc_certificate_chain_sort success but it's not sorted really.");
-
        collection[0] = cert1;
        collection[1] = cert3;
-
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == certsvc_certificate_chain_sort(collection, 2),
-               "certsvc_certificate_chain_sort must be failed");
+                                         "certsvc_certificate_chain_sort must be failed");
 }
 
 RUNNER_TEST_GROUP_INIT(T0200_CAPI_CERTIFICATE_VERIFY)
@@ -353,39 +297,31 @@ RUNNER_TEST_GROUP_INIT(T0200_CAPI_CERTIFICATE_VERIFY)
 RUNNER_TEST(T0201_message_verify_dsa_sha1)
 {
        CertSvcString msgb64, sigb64, msg, sig;
-
        int result = certsvc_string_new(
-                       vinstance,
-                       TestData::magda.message.c_str(),
-                       TestData::magda.message.size(),
-                       &msgb64);
+                                        vinstance,
+                                        TestData::magda.message.c_str(),
+                                        TestData::magda.message.size(),
+                                        &msgb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading messsage.");
-
        result = certsvc_string_new(vinstance,
-                       TestData::magda.signature.c_str(),
-                       TestData::magda.signature.size(),
-                       &sigb64);
+                                                               TestData::magda.signature.c_str(),
+                                                               TestData::magda.signature.size(),
+                                                               &sigb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading signature.");
-
        CertSvcCertificate cert;
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::magda.certificate.c_str()),
-                       TestData::magda.certificate.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::magda.certificate.c_str()),
+                                TestData::magda.certificate.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        result = certsvc_base64_decode(msgb64, &msg);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
        result = certsvc_base64_decode(sigb64, &sig);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        int status;
        result = certsvc_message_verify(cert, msg, sig, "sha1", &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in verify message.");
        RUNNER_ASSERT_MSG(status == CERTSVC_TRUE, "Error in verify message.");
 }
@@ -393,58 +329,44 @@ RUNNER_TEST(T0201_message_verify_dsa_sha1)
 RUNNER_TEST(T0202_message_verify_rsa_sha1)
 {
        CertSvcString msgb64, sigb64, msg, sig;
-
        int result = certsvc_string_new(
-                       vinstance,
-                       TestData::filipSHA1.message.c_str(),
-                       TestData::filipSHA1.message.size(),
-                       &msgb64);
+                                        vinstance,
+                                        TestData::filipSHA1.message.c_str(),
+                                        TestData::filipSHA1.message.size(),
+                                        &msgb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading messsage.");
-
        result = certsvc_string_new(
-                       vinstance,
-                       TestData::filipSHA1.signature.c_str(),
-                       TestData::filipSHA1.signature.size(),
-                       &sigb64);
+                                vinstance,
+                                TestData::filipSHA1.signature.c_str(),
+                                TestData::filipSHA1.signature.size(),
+                                &sigb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading signature.");
-
        CertSvcCertificate cert;
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::filipSHA1.certificate.c_str()),
-                       TestData::filipSHA1.certificate.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::filipSHA1.certificate.c_str()),
+                                TestData::filipSHA1.certificate.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        result = certsvc_base64_decode(msgb64, &msg);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        result = certsvc_base64_decode(sigb64, &sig);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        int status;
        result = certsvc_message_verify(cert, msg, sig, "sha1", &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in verify message.");
        RUNNER_ASSERT_MSG(status == CERTSVC_SUCCESS, "Error in verify message.");
-
        std::string invalidMessage("q3plZ28gdHUgc3p1a2Fzej8K");
-
        result = certsvc_string_new(
-                       vinstance,
-                       invalidMessage.c_str(),
-                       invalidMessage.size(),
-                       &msgb64);
+                                vinstance,
+                                invalidMessage.c_str(),
+                                invalidMessage.size(),
+                                &msgb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading messsage.");
-
        result = certsvc_base64_decode(msgb64, &msg);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        result = certsvc_message_verify(cert, msg, sig, "sha1", &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in verify message.");
        RUNNER_ASSERT_MSG(status == CERTSVC_INVALID_SIGNATURE, "Error in verify message.");
 }
@@ -452,58 +374,44 @@ RUNNER_TEST(T0202_message_verify_rsa_sha1)
 RUNNER_TEST(T0203_message_verify_rsa_sha256)
 {
        CertSvcString msgb64, sigb64, msg, sig;
-
        int result = certsvc_string_new(
-                       vinstance,
-                       TestData::filipSHA256.message.c_str(),
-                       TestData::filipSHA256.message.size(),
-                       &msgb64);
+                                        vinstance,
+                                        TestData::filipSHA256.message.c_str(),
+                                        TestData::filipSHA256.message.size(),
+                                        &msgb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading messsage.");
-
        result = certsvc_string_new(
-                       vinstance,
-                       TestData::filipSHA256.signature.c_str(),
-                       TestData::filipSHA256.signature.size(),
-                       &sigb64);
+                                vinstance,
+                                TestData::filipSHA256.signature.c_str(),
+                                TestData::filipSHA256.signature.size(),
+                                &sigb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading signature.");
-
        CertSvcCertificate cert;
-
        result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::filipSHA256.certificate.c_str()),
-                       TestData::filipSHA256.certificate.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                vinstance,
+                                reinterpret_cast<const unsigned char *>(TestData::filipSHA256.certificate.c_str()),
+                                TestData::filipSHA256.certificate.size(),
+                                CERTSVC_FORM_DER_BASE64,
+                                &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        result = certsvc_base64_decode(msgb64, &msg);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        result = certsvc_base64_decode(sigb64, &sig);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        int status;
        result = certsvc_message_verify(cert, msg, sig, "sha256", &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in verify message.");
        RUNNER_ASSERT_MSG(status == CERTSVC_SUCCESS, "Error in verify message.");
-
        std::string invalidMessage("q3plZ28gdHUgc3p1a2Fzej8K");
-
        result = certsvc_string_new(
-                       vinstance,
-                       invalidMessage.c_str(),
-                       invalidMessage.size(),
-                       &msgb64);
+                                vinstance,
+                                invalidMessage.c_str(),
+                                invalidMessage.size(),
+                                &msgb64);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading messsage.");
-
        result = certsvc_base64_decode(msgb64, &msg);
        RUNNER_ASSERT_MSG(result == CERTSVC_TRUE, "Error in decoding base64.");
-
        result = certsvc_message_verify(cert, msg, sig, "sha256", &status);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in verify message.");
        RUNNER_ASSERT_MSG(status == CERTSVC_INVALID_SIGNATURE, "Error in verify message.");
 }
@@ -512,50 +420,48 @@ RUNNER_TEST(T0204_certificate_verify)
 {
        const int MAXC = 3;
        CertSvcCertificate certificate[MAXC];
-
        size_t certCount = 0;
+
        for (auto &cert : TestData::certChain)
                RUNNER_ASSERT_MSG(
                        CERTSVC_SUCCESS ==
-                               certsvc_certificate_new_from_memory(
-                                       vinstance,
-                                       reinterpret_cast<const unsigned char *>(cert.c_str()),
-                                       cert.size(),
-                                       CERTSVC_FORM_DER_BASE64,
-                                       &certificate[certCount++]),
+                       certsvc_certificate_new_from_memory(
+                               vinstance,
+                               reinterpret_cast<const unsigned char *>(cert.c_str()),
+                               cert.size(),
+                               CERTSVC_FORM_DER_BASE64,
+                               &certificate[certCount++]),
                        "Error reading certificate");
 
        int status;
-       int result = certsvc_certificate_verify(certificate[0], &certificate[1], MAXC-1, NULL, 0, &status);
+       int result = certsvc_certificate_verify(certificate[0], &certificate[1], MAXC - 1, NULL, 0,
+                                                                                       &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == status, "Error in certificate verification process.");
-
-       result = certsvc_certificate_verify(certificate[0], certificate, MAXC-1, NULL, 0, &status);
+       result = certsvc_certificate_verify(certificate[0], certificate, MAXC - 1, NULL, 0, &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == status, "Error in certificate verification process.");
-
        result = certsvc_certificate_verify(certificate[0], certificate, 1, certificate, MAXC, &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == status, "Error in certificate verification process.");
-
        result = certsvc_certificate_verify(certificate[0], &certificate[2], 1, certificate, MAXC, &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == status, "Error in certificate verification process.");
-
        // certsvc_certificate_verify_with_caflag
-       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC, NULL, 0, &status);
+       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC, NULL, 0,
+                        &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == status, "Error in certificate verification process.");
-
-       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC-1, NULL, 0, &status);
+       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC - 1, NULL, 0,
+                        &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == status, "Error in certificate verification process.");
-
-       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, 1, certificate, MAXC, &status);
+       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, 1, certificate, MAXC,
+                        &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == status, "Error in certificate verification process.");
-
-       result = certsvc_certificate_verify_with_caflag(certificate[0], &certificate[2], 1, certificate, MAXC, &status);
+       result = certsvc_certificate_verify_with_caflag(certificate[0], &certificate[2], 1, certificate,
+                        MAXC, &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == status, "Error in certificate verification process.");
 }
@@ -564,25 +470,25 @@ RUNNER_TEST(T0205_certificate_verify_with_caflag_selfsign_root)
 {
        const int MAXC = 2;
        CertSvcCertificate certificate[MAXC];
-
        size_t certCount = 0;
+
        for (auto &cert : TestData::certChainSelfSigned)
                RUNNER_ASSERT_MSG(
                        CERTSVC_SUCCESS ==
-                               certsvc_certificate_new_from_memory(
-                                       vinstance,
-                                       reinterpret_cast<const unsigned char *>(cert.c_str()),
-                                       cert.size(),
-                                       CERTSVC_FORM_DER_BASE64,
-                                       &certificate[certCount++]),
+                       certsvc_certificate_new_from_memory(
+                               vinstance,
+                               reinterpret_cast<const unsigned char *>(cert.c_str()),
+                               cert.size(),
+                               CERTSVC_FORM_DER_BASE64,
+                               &certificate[certCount++]),
                        "Error reading certificate");
 
        int status;
        int result = certsvc_certificate_verify(certificate[0], certificate, MAXC, NULL, 0, &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == status, "Error in certificate verification process.");
-
-       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC, NULL, 0, &status);
+       result = certsvc_certificate_verify_with_caflag(certificate[0], certificate, MAXC, NULL, 0,
+                        &status);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certificate verification function.");
        RUNNER_ASSERT_MSG(CERTSVC_FAIL == status, "Error in certificate verification process.");
 }
@@ -609,33 +515,27 @@ RUNNER_TEST(T0206_certificate_get_visibility)
                "DnMrR0ZNRPgeSCiVLax1bkHxcvW74WchdKIb24ZtAsFwyrsmUCRV842YHdfddjo6\n"
                "xgUu7B8n7hQeV3EADh6ft/lE8nalzAl9tALTxAmLtYvEYA7thvDoKi1k7bN48izL\n"
                "gS9G4WEAUg==";
-
        CertSvcInstance instance;
        CertSvcCertificate certificate;
        int retval;
-
        RUNNER_ASSERT_MSG(
                (retval = certsvc_instance_new(&instance)) == CERTSVC_SUCCESS,
                "Failed to certsvc_instance_new. retval:" << retval);
-
        RUNNER_ASSERT_MSG(
                (retval = certsvc_certificate_new_from_memory(
-                       instance,
-                       (const unsigned char *)tizen_distributor_root_ca_partner_der_base64,
-                       strlen(tizen_distributor_root_ca_partner_der_base64),
-                       CERTSVC_FORM_DER_BASE64,
-                       &certificate) == CERTSVC_SUCCESS),
+                                         instance,
+                                         (const unsigned char *)tizen_distributor_root_ca_partner_der_base64,
+                                         strlen(tizen_distributor_root_ca_partner_der_base64),
+                                         CERTSVC_FORM_DER_BASE64,
+                                         &certificate) == CERTSVC_SUCCESS),
                "Failed to certsvc_certificate_new_from_memory. retval: " << retval);
-
        CertSvcVisibility visibility;
        RUNNER_ASSERT_MSG(
                (retval == certsvc_certificate_get_visibility(certificate, &visibility)) == CERTSVC_SUCCESS,
                "Failed to certsvc_certificate_get_visibility. retval: " << retval);
-
        RUNNER_ASSERT_MSG(
                visibility == CERTSVC_VISIBILITY_PARTNER,
                "returned visibility should be partner(" << CERTSVC_VISIBILITY_PARTNER
-                       << ") but returned(" << visibility << ")");
-
+               << ") but returned(" << visibility << ")");
        certsvc_instance_free(instance);
 }
index 3644470..2df4ebc 100644 (file)
@@ -29,52 +29,40 @@ RUNNER_TEST_GROUP_INIT(T0300_CAPI_PRIMITIVES)
 RUNNER_TEST(T0301_dup_x509)
 {
        const int MAXB = 1024;
-
        CertSvcCertificate certificate;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
-                       TestData::googleCA.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &certificate);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
+                                        TestData::googleCA.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &certificate);
        X509 *x509 = NULL;
        result = certsvc_certificate_dup_x509(certificate, &x509);
-
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in certsvc_certificate_dup_x509.");
        RUNNER_ASSERT_MSG(x509 != NULL, "Error in certsvc_certificate_dup_x509.");
-
        X509_NAME *name = X509_get_subject_name(x509);
        char buffer[MAXB];
        X509_NAME_oneline(name, buffer, MAXB);
-
        RUNNER_ASSERT_MSG(buffer == TestData::subjectGoogleCA, "Content does not match");
-
        certsvc_certificate_free_x509(x509);
 }
 
 RUNNER_TEST(T0302_dup_pubkey_der)
 {
        CertSvcCertificate cert;
-
        int result = certsvc_certificate_new_from_memory(
-                       vinstance,
-                       reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
-                       TestData::googleCA.size(),
-                       CERTSVC_FORM_DER_BASE64,
-                       &cert);
-
+                                        vinstance,
+                                        reinterpret_cast<const unsigned char *>(TestData::googleCA.c_str()),
+                                        TestData::googleCA.size(),
+                                        CERTSVC_FORM_DER_BASE64,
+                                        &cert);
        RUNNER_ASSERT_MSG(CERTSVC_SUCCESS == result, "Error in reading certificate.");
-
        unsigned char *pubkey = NULL;
        size_t len = 0;
        result = certsvc_certificate_dup_pubkey_der(cert, &pubkey, &len);
-
        RUNNER_ASSERT_MSG(
                CERTSVC_SUCCESS == result,
                "Error in certsvc_certificate_dup_pubkey_der. result : " << result);
-
        RUNNER_ASSERT_MSG(
                d2i_PUBKEY(NULL, const_cast<const unsigned char **>(&pubkey), static_cast<long>(len)) != NULL,
                "Error in converting returned der pubkey to internal.");
index 08a2733..57ee350 100644 (file)
@@ -29,29 +29,27 @@ namespace VcoreDPL {
 class BinaryQueue;
 typedef std::auto_ptr<BinaryQueue> BinaryQueueAutoPtr;
 
-class AbstractInput
-{
-  public:
-    class Exception
-    {
-      public:
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, ReadFailed)
-    };
+class AbstractInput {
+public:
+       class Exception {
+       public:
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, ReadFailed)
+       };
 
-  public:
-    virtual ~AbstractInput() {}
+public:
+       virtual ~AbstractInput() {}
 
-    /**
-     * Read binary data from input
-     * If no data is available method returns NULL buffer.
-     * In case connection was successfuly close, method returns empty buffer
-     *
-     * @param[in] size Maximum number of bytes to read from input
-     * @return Buffer containing read bytes
-     * @throw  ReadFailed
-     */
-    virtual BinaryQueueAutoPtr Read(size_t size) = 0;
+       /**
+        * Read binary data from input
+        * If no data is available method returns NULL buffer.
+        * In case connection was successfuly close, method returns empty buffer
+        *
+        * @param[in] size Maximum number of bytes to read from input
+        * @return Buffer containing read bytes
+        * @throw  ReadFailed
+        */
+       virtual BinaryQueueAutoPtr Read(size_t size) = 0;
 };
 } // namespace VcoreDPL
 
index 9d1f17c..ab18c45 100644 (file)
 
 namespace VcoreDPL {
 class AbstractInputOutput :
-    public AbstractInput,
-    public AbstractOutput
-{
-  public:
-    virtual ~AbstractInputOutput() {}
+       public AbstractInput,
+       public AbstractOutput {
+public:
+       virtual ~AbstractInputOutput() {}
 };
 } // namespace VcoreDPL
 
index 6b414eb..3c4f0f8 100644 (file)
@@ -29,31 +29,29 @@ namespace VcoreDPL {
 class BinaryQueue;
 typedef std::auto_ptr<BinaryQueue> BinaryQueueAutoPtr;
 
-class AbstractOutput
-{
-  public:
-    class Exception
-    {
-      public:
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, WriteFailed)
-    };
+class AbstractOutput {
+public:
+       class Exception {
+       public:
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, WriteFailed)
+       };
 
-  public:
-    virtual ~AbstractOutput() {}
+public:
+       virtual ~AbstractOutput() {}
 
-    /**
-     * Write binary data to output
-     * If output is blocked, Write returns zero, if instance is a type of
-     * WaitableAbstractOutput one can wait for writability then
-     *
-     * @param[in] buffer Input buffer with data to be written
-     * @param[in] bufferSize Maximum number of bytes to write from buffer
-     * @return Number of bytes success successfuly written or zero if output is
-     * blocked
-     * @throw WriteFailed
-     */
-    virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize) = 0;
+       /**
+        * Write binary data to output
+        * If output is blocked, Write returns zero, if instance is a type of
+        * WaitableAbstractOutput one can wait for writability then
+        *
+        * @param[in] buffer Input buffer with data to be written
+        * @param[in] bufferSize Maximum number of bytes to write from buffer
+        * @return Number of bytes success successfuly written or zero if output is
+        * blocked
+        * @throw WriteFailed
+        */
+       virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize) = 0;
 };
 } // namespace VcoreDPL
 
index b2cb426..14ef0b7 100644 (file)
@@ -27,25 +27,25 @@ namespace VcoreDPL {
 // Do not call directly
 // Always use Assert macro
 void AssertProc(const char *condition,
-                const char *file,
-                int line,
-                const char *function) __attribute__ ((__noreturn__));
+                               const char *file,
+                               int line,
+                               const char *function) __attribute__((__noreturn__));
 } // namespace VcoreDPL
 
 #define Assert(Condition)                                               \
-do {                                                                    \
-    if (!(Condition)) {                                                 \
-        VcoreDPL::AssertProc(#Condition, __FILE__, __LINE__, __FUNCTION__);  \
-    }                                                                   \
-} while (0)
+       do {                                                                    \
+               if (!(Condition)) {                                                 \
+                       VcoreDPL::AssertProc(#Condition, __FILE__, __LINE__, __FUNCTION__);  \
+               }                                                                   \
+       } while (0)
 
 #define AssertMsg(Condition, Msg)                                         \
-    do {                                                                  \
-        if (!(Condition)) {                                               \
-            VcoreDPL::AssertProc(                                              \
-                (std::string(std::string(#Condition)+" ") + Msg).c_str(), \
-                __FILE__, __LINE__, __FUNCTION__);                        \
-        }                                                                 \
-    } while (0)
+       do {                                                                  \
+               if (!(Condition)) {                                               \
+                       VcoreDPL::AssertProc(                                              \
+                                       (std::string(std::string(#Condition)+" ") + Msg).c_str(), \
+                                       __FILE__, __LINE__, __FUNCTION__);                        \
+               }                                                                 \
+       } while (0)
 
 #endif // DPL_ASSERT_H
index 92d4e3f..66501b8 100644 (file)
@@ -35,256 +35,251 @@ namespace VcoreDPL {
  * @todo Add optimized implementation for FlattenConsume
  */
 class BinaryQueue :
-    public AbstractInputOutput
-{
-  public:
-    class Exception
-    {
-      public:
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, OutOfData)
-    };
-
-    typedef void (*BufferDeleter)(const void *buffer, size_t bufferSize,
-                                  void *userParam);
-    static void BufferDeleterFree(const void *buffer,
-                                  size_t bufferSize,
-                                  void *userParam);
-
-    class BucketVisitor
-    {
-      public:
-        /**
-         * Destructor
-         */
-        virtual ~BucketVisitor();
-
-        /**
-         * Visit bucket
-         *
-         * @return none
-         * @param[in] buffer Constant pointer to bucket data buffer
-         * @param[in] bufferSize Number of bytes in bucket
-         */
-        virtual void OnVisitBucket(const void *buffer, size_t bufferSize) = 0;
-    };
-
-  private:
-    struct Bucket :
-        private Noncopyable
-    {
-        const void *buffer;
-        const void *ptr;
-        size_t size;
-        size_t left;
-
-        BufferDeleter deleter;
-        void *param;
-
-        Bucket(const void *buffer,
-               size_t bufferSize,
-               BufferDeleter deleter,
-               void *userParam);
-        virtual ~Bucket();
-    };
-
-    typedef std::list<Bucket *> BucketList;
-    BucketList m_buckets;
-    size_t m_size;
-
-    static void DeleteBucket(Bucket *bucket);
-
-    class BucketVisitorCall
-    {
-      private:
-        BucketVisitor *m_visitor;
-
-      public:
-        BucketVisitorCall(BucketVisitor *visitor);
-        virtual ~BucketVisitorCall();
-
-        void operator()(Bucket *bucket) const;
-    };
-
-  public:
-    /**
-     * Construct empty binary queue
-     */
-    BinaryQueue();
-
-    /**
-     * Construct binary queue via bare copy of other binary queue
-     *
-     * @param[in] other Other binary queue to copy from
-     * @warning One cannot assume that bucket structure is preserved during copy
-     */
-    BinaryQueue(const BinaryQueue &other);
-
-    /**
-     * Destructor
-     */
-    virtual ~BinaryQueue();
-
-    /**
-     * Construct binary queue via bare copy of other binary queue
-     *
-     * @param[in] other Other binary queue to copy from
-     * @warning One cannot assume that bucket structure is preserved during copy
-     */
-    BinaryQueue &operator=(const BinaryQueue &other);
-
-    /**
-     * Append copy of @a bufferSize bytes from memory pointed by @a buffer
-     * to the end of binary queue. Uses default deleter based on free.
-     *
-     * @return none
-     * @param[in] buffer Pointer to buffer to copy data from
-     * @param[in] bufferSize Number of bytes to copy
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     * @see BinaryQueue::BufferDeleterFree
-     */
-    void AppendCopy(const void *buffer, size_t bufferSize);
-
-    /**
-     * Append @a bufferSize bytes from memory pointed by @a buffer
-     * to the end of binary queue. Uses custom provided deleter.
-     * Responsibility for deleting provided buffer is transfered to BinaryQueue.
-     *
-     * @return none
-     * @param[in] buffer Pointer to data buffer
-     * @param[in] bufferSize Number of bytes available in buffer
-     * @param[in] deleter Pointer to deleter procedure used to free provided
-     * buffer
-     * @param[in] userParam User parameter passed to deleter routine
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     */
-    void AppendUnmanaged(
-        const void *buffer,
-        size_t bufferSize,
-        BufferDeleter deleter =
-            &BinaryQueue::BufferDeleterFree,
-        void *userParam = NULL);
-
-    /**
-     * Append copy of other binary queue to the end of this binary queue
-     *
-     * @return none
-     * @param[in] other Constant reference to other binary queue to copy data
-     * from
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     * @warning One cannot assume that bucket structure is preserved during copy
-     */
-    void AppendCopyFrom(const BinaryQueue &other);
-
-    /**
-     * Move bytes from other binary queue to the end of this binary queue.
-     * This also removes all bytes from other binary queue.
-     * This method is designed to be as fast as possible (only pointer swaps)
-     * and is suggested over making copies of binary queues.
-     * Bucket structure is preserved after operation.
-     *
-     * @return none
-     * @param[in] other Reference to other binary queue to move data from
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     */
-    void AppendMoveFrom(BinaryQueue &other);
-
-    /**
-     * Append copy of binary queue to the end of other binary queue
-     *
-     * @return none
-     * @param[in] other Constant reference to other binary queue to copy data to
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     * @warning One cannot assume that bucket structure is preserved during copy
-     */
-    void AppendCopyTo(BinaryQueue &other) const;
-
-    /**
-     * Move bytes from binary queue to the end of other binary queue.
-     * This also removes all bytes from binary queue.
-     * This method is designed to be as fast as possible (only pointer swaps)
-     * and is suggested over making copies of binary queues.
-     * Bucket structure is preserved after operation.
-     *
-     * @return none
-     * @param[in] other Reference to other binary queue to move data to
-     * @exception std::bad_alloc Cannot allocate memory to hold additional data
-     */
-    void AppendMoveTo(BinaryQueue &other);
-
-    /**
-     * Retrieve total size of all data contained in binary queue
-     *
-     * @return Number of bytes in binary queue
-     */
-    size_t Size() const;
-
-    /**
-     * Remove all data from binary queue
-     *
-     * @return none
-     */
-    void Clear();
-
-    /**
-     * Check if binary queue is empty
-     *
-     * @return true if binary queue is empty, false otherwise
-     */
-    bool Empty() const;
-
-    /**
-     * Remove @a size bytes from beginning of binary queue
-     *
-     * @return none
-     * @param[in] size Number of bytes to remove
-     * @exception BinaryQueue::Exception::OutOfData Number of bytes is larger
-     *            than available bytes in binary queue
-     */
-    void Consume(size_t size);
-
-    /**
-     * Retrieve @a bufferSize bytes from beginning of binary queue and copy them
-     * to user supplied buffer
-     *
-     * @return none
-     * @param[in] buffer Pointer to user buffer to receive bytes
-     * @param[in] bufferSize Size of user buffer pointed by @a buffer
-     * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten
-     *            is larger than available bytes in binary queue
-     */
-    void Flatten(void *buffer, size_t bufferSize) const;
-
-    /**
-     * Retrieve @a bufferSize bytes from beginning of binary queue, copy them
-     * to user supplied buffer, and remove from binary queue
-     *
-     * @return none
-     * @param[in] buffer Pointer to user buffer to receive bytes
-     * @param[in] bufferSize Size of user buffer pointed by @a buffer
-     * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten
-     *            is larger than available bytes in binary queue
-     */
-    void FlattenConsume(void *buffer, size_t bufferSize);
-
-    /**
-     * Visit each buffer with data using visitor object
-     *
-     * @return none
-     * @param[in] visitor Pointer to bucket visitor
-     * @see BinaryQueue::BucketVisitor
-     */
-    void VisitBuckets(BucketVisitor *visitor) const;
-
-    /**
-     * IAbstractInput interface
-     */
-    virtual BinaryQueueAutoPtr Read(size_t size);
-
-    /**
-     * IAbstractOutput interface
-     */
-    virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize);
+       public AbstractInputOutput {
+public:
+       class Exception {
+       public:
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, OutOfData)
+       };
+
+       typedef void (*BufferDeleter)(const void *buffer, size_t bufferSize,
+                                                                 void *userParam);
+       static void BufferDeleterFree(const void *buffer,
+                                                                 size_t bufferSize,
+                                                                 void *userParam);
+
+       class BucketVisitor {
+       public:
+               /**
+                * Destructor
+                */
+               virtual ~BucketVisitor();
+
+               /**
+                * Visit bucket
+                *
+                * @return none
+                * @param[in] buffer Constant pointer to bucket data buffer
+                * @param[in] bufferSize Number of bytes in bucket
+                */
+               virtual void OnVisitBucket(const void *buffer, size_t bufferSize) = 0;
+       };
+
+private:
+       struct Bucket :
+               private Noncopyable {
+               const void *buffer;
+               const void *ptr;
+               size_t size;
+               size_t left;
+
+               BufferDeleter deleter;
+               void *param;
+
+               Bucket(const void *buffer,
+                          size_t bufferSize,
+                          BufferDeleter deleter,
+                          void *userParam);
+               virtual ~Bucket();
+       };
+
+       typedef std::list<Bucket *> BucketList;
+       BucketList m_buckets;
+       size_t m_size;
+
+       static void DeleteBucket(Bucket *bucket);
+
+       class BucketVisitorCall {
+       private:
+               BucketVisitor *m_visitor;
+
+       public:
+               BucketVisitorCall(BucketVisitor *visitor);
+               virtual ~BucketVisitorCall();
+
+               void operator()(Bucket *bucket) const;
+       };
+
+public:
+       /**
+        * Construct empty binary queue
+        */
+       BinaryQueue();
+
+       /**
+        * Construct binary queue via bare copy of other binary queue
+        *
+        * @param[in] other Other binary queue to copy from
+        * @warning One cannot assume that bucket structure is preserved during copy
+        */
+       BinaryQueue(const BinaryQueue &other);
+
+       /**
+        * Destructor
+        */
+       virtual ~BinaryQueue();
+
+       /**
+        * Construct binary queue via bare copy of other binary queue
+        *
+        * @param[in] other Other binary queue to copy from
+        * @warning One cannot assume that bucket structure is preserved during copy
+        */
+       BinaryQueue &operator=(const BinaryQueue &other);
+
+       /**
+        * Append copy of @a bufferSize bytes from memory pointed by @a buffer
+        * to the end of binary queue. Uses default deleter based on free.
+        *
+        * @return none
+        * @param[in] buffer Pointer to buffer to copy data from
+        * @param[in] bufferSize Number of bytes to copy
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        * @see BinaryQueue::BufferDeleterFree
+        */
+       void AppendCopy(const void *buffer, size_t bufferSize);
+
+       /**
+        * Append @a bufferSize bytes from memory pointed by @a buffer
+        * to the end of binary queue. Uses custom provided deleter.
+        * Responsibility for deleting provided buffer is transfered to BinaryQueue.
+        *
+        * @return none
+        * @param[in] buffer Pointer to data buffer
+        * @param[in] bufferSize Number of bytes available in buffer
+        * @param[in] deleter Pointer to deleter procedure used to free provided
+        * buffer
+        * @param[in] userParam User parameter passed to deleter routine
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        */
+       void AppendUnmanaged(
+               const void *buffer,
+               size_t bufferSize,
+               BufferDeleter deleter =
+                       &BinaryQueue::BufferDeleterFree,
+               void *userParam = NULL);
+
+       /**
+        * Append copy of other binary queue to the end of this binary queue
+        *
+        * @return none
+        * @param[in] other Constant reference to other binary queue to copy data
+        * from
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        * @warning One cannot assume that bucket structure is preserved during copy
+        */
+       void AppendCopyFrom(const BinaryQueue &other);
+
+       /**
+        * Move bytes from other binary queue to the end of this binary queue.
+        * This also removes all bytes from other binary queue.
+        * This method is designed to be as fast as possible (only pointer swaps)
+        * and is suggested over making copies of binary queues.
+        * Bucket structure is preserved after operation.
+        *
+        * @return none
+        * @param[in] other Reference to other binary queue to move data from
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        */
+       void AppendMoveFrom(BinaryQueue &other);
+
+       /**
+        * Append copy of binary queue to the end of other binary queue
+        *
+        * @return none
+        * @param[in] other Constant reference to other binary queue to copy data to
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        * @warning One cannot assume that bucket structure is preserved during copy
+        */
+       void AppendCopyTo(BinaryQueue &other) const;
+
+       /**
+        * Move bytes from binary queue to the end of other binary queue.
+        * This also removes all bytes from binary queue.
+        * This method is designed to be as fast as possible (only pointer swaps)
+        * and is suggested over making copies of binary queues.
+        * Bucket structure is preserved after operation.
+        *
+        * @return none
+        * @param[in] other Reference to other binary queue to move data to
+        * @exception std::bad_alloc Cannot allocate memory to hold additional data
+        */
+       void AppendMoveTo(BinaryQueue &other);
+
+       /**
+        * Retrieve total size of all data contained in binary queue
+        *
+        * @return Number of bytes in binary queue
+        */
+       size_t Size() const;
+
+       /**
+        * Remove all data from binary queue
+        *
+        * @return none
+        */
+       void Clear();
+
+       /**
+        * Check if binary queue is empty
+        *
+        * @return true if binary queue is empty, false otherwise
+        */
+       bool Empty() const;
+
+       /**
+        * Remove @a size bytes from beginning of binary queue
+        *
+        * @return none
+        * @param[in] size Number of bytes to remove
+        * @exception BinaryQueue::Exception::OutOfData Number of bytes is larger
+        *            than available bytes in binary queue
+        */
+       void Consume(size_t size);
+
+       /**
+        * Retrieve @a bufferSize bytes from beginning of binary queue and copy them
+        * to user supplied buffer
+        *
+        * @return none
+        * @param[in] buffer Pointer to user buffer to receive bytes
+        * @param[in] bufferSize Size of user buffer pointed by @a buffer
+        * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten
+        *            is larger than available bytes in binary queue
+        */
+       void Flatten(void *buffer, size_t bufferSize) const;
+
+       /**
+        * Retrieve @a bufferSize bytes from beginning of binary queue, copy them
+        * to user supplied buffer, and remove from binary queue
+        *
+        * @return none
+        * @param[in] buffer Pointer to user buffer to receive bytes
+        * @param[in] bufferSize Size of user buffer pointed by @a buffer
+        * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten
+        *            is larger than available bytes in binary queue
+        */
+       void FlattenConsume(void *buffer, size_t bufferSize);
+
+       /**
+        * Visit each buffer with data using visitor object
+        *
+        * @return none
+        * @param[in] visitor Pointer to bucket visitor
+        * @see BinaryQueue::BucketVisitor
+        */
+       void VisitBuckets(BucketVisitor *visitor) const;
+
+       /**
+        * IAbstractInput interface
+        */
+       virtual BinaryQueueAutoPtr Read(size_t size);
+
+       /**
+        * IAbstractOutput interface
+        */
+       virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize);
 };
 
 /**
index 4c22139..5d8e91c 100644 (file)
 namespace VcoreDPL {
 namespace Colors {
 namespace Text {
-extern const charBOLD_GREEN_BEGIN;
-extern const charBOLD_GREEN_END;
-extern const charPURPLE_BEGIN;
-extern const charPURPLE_END;
-extern const charRED_BEGIN;
-extern const charRED_END;
-extern const charGREEN_BEGIN;
-extern const charGREEN_END;
-extern const charCYAN_BEGIN;
-extern const charCYAN_END;
-extern const charBOLD_RED_BEGIN;
-extern const charBOLD_RED_END;
-extern const charBOLD_YELLOW_BEGIN;
-extern const charBOLD_YELLOW_END;
-extern const charBOLD_GOLD_BEGIN;
-extern const charBOLD_GOLD_END;
-extern const charBOLD_WHITE_BEGIN;
-extern const charBOLD_WHITE_END;
+extern const char *BOLD_GREEN_BEGIN;
+extern const char *BOLD_GREEN_END;
+extern const char *PURPLE_BEGIN;
+extern const char *PURPLE_END;
+extern const char *RED_BEGIN;
+extern const char *RED_END;
+extern const char *GREEN_BEGIN;
+extern const char *GREEN_END;
+extern const char *CYAN_BEGIN;
+extern const char *CYAN_END;
+extern const char *BOLD_RED_BEGIN;
+extern const char *BOLD_RED_END;
+extern const char *BOLD_YELLOW_BEGIN;
+extern const char *BOLD_YELLOW_END;
+extern const char *BOLD_GOLD_BEGIN;
+extern const char *BOLD_GOLD_END;
+extern const char *BOLD_WHITE_BEGIN;
+extern const char *BOLD_WHITE_END;
 } //namespace Text
 
 namespace Html {
-extern const charBOLD_GREEN_BEGIN;
-extern const charBOLD_GREEN_END;
-extern const charPURPLE_BEGIN;
-extern const charPURPLE_END;
-extern const charRED_BEGIN;
-extern const charRED_END;
-extern const charGREEN_BEGIN;
-extern const charGREEN_END;
-extern const charCYAN_BEGIN;
-extern const charCYAN_END;
-extern const charBOLD_RED_BEGIN;
-extern const charBOLD_RED_END;
-extern const charBOLD_YELLOW_BEGIN;
-extern const charBOLD_YELLOW_END;
-extern const charBOLD_GOLD_BEGIN;
-extern const charBOLD_GOLD_END;
-extern const charBOLD_WHITE_BEGIN;
-extern const charBOLD_WHITE_END;
+extern const char *BOLD_GREEN_BEGIN;
+extern const char *BOLD_GREEN_END;
+extern const char *PURPLE_BEGIN;
+extern const char *PURPLE_END;
+extern const char *RED_BEGIN;
+extern const char *RED_END;
+extern const char *GREEN_BEGIN;
+extern const char *GREEN_END;
+extern const char *CYAN_BEGIN;
+extern const char *CYAN_END;
+extern const char *BOLD_RED_BEGIN;
+extern const char *BOLD_RED_END;
+extern const char *BOLD_YELLOW_BEGIN;
+extern const char *BOLD_YELLOW_END;
+extern const char *BOLD_GOLD_BEGIN;
+extern const char *BOLD_GOLD_END;
+extern const char *BOLD_WHITE_BEGIN;
+extern const char *BOLD_WHITE_END;
 } //namespace Html
 } //namespace Colors
 } //namespace VcoreDPL
index 95ea4ac..fba822a 100644 (file)
 namespace VcoreDPL {
 void LogUnhandledException(const std::string &str);
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function);
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function);
 }
 
 namespace VcoreDPL {
 class Exception {
 private:
-    static unsigned int m_exceptionCount;
-    static Exception* m_lastException;
-    static void (*m_terminateHandler)();
-
-    static void AddRef(Exception* exception)
-    {
-        if (!m_exceptionCount) {
-            m_terminateHandler = std::set_terminate(&TerminateHandler);
-        }
-
-        ++m_exceptionCount;
-        m_lastException = exception;
-    }
-
-    static void UnRef(Exception* e)
-    {
-        if (m_lastException == e) {
-            m_lastException = NULL;
-        }
-
-        --m_exceptionCount;
-
-        if (!m_exceptionCount) {
-            std::set_terminate(m_terminateHandler);
-            m_terminateHandler = NULL;
-        }
-    }
-
-    static void TerminateHandler()
-    {
-        if (m_lastException != NULL) {
-            DisplayKnownException(*m_lastException);
-            abort();
-        } else {
-            DisplayUnknownException();
-            abort();
-        }
-    }
-
-    Exception *m_reason;
-    std::string m_path;
-    std::string m_function;
-    int m_line;
+       static unsigned int m_exceptionCount;
+       static Exception *m_lastException;
+       static void (*m_terminateHandler)();
+
+       static void AddRef(Exception *exception)
+       {
+               if (!m_exceptionCount) {
+                       m_terminateHandler = std::set_terminate(&TerminateHandler);
+               }
+
+               ++m_exceptionCount;
+               m_lastException = exception;
+       }
+
+       static void UnRef(Exception *e)
+       {
+               if (m_lastException == e) {
+                       m_lastException = NULL;
+               }
+
+               --m_exceptionCount;
+
+               if (!m_exceptionCount) {
+                       std::set_terminate(m_terminateHandler);
+                       m_terminateHandler = NULL;
+               }
+       }
+
+       static void TerminateHandler()
+       {
+               if (m_lastException != NULL) {
+                       DisplayKnownException(*m_lastException);
+                       abort();
+               } else {
+                       DisplayUnknownException();
+                       abort();
+               }
+       }
+
+       Exception *m_reason;
+       std::string m_path;
+       std::string m_function;
+       int m_line;
 
 protected:
-    std::string m_message;
-    std::string m_className;
+       std::string m_message;
+       std::string m_className;
 
 public:
-    static std::string KnownExceptionToString(const Exception &e)
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;33mException trace:\033[m\n\n";
-        message << e.DumpToString();
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static std::string UnknownExceptionToString()
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static void DisplayKnownException(const Exception& e)
-    {
-        LogUnhandledException(KnownExceptionToString(e).c_str());
-    }
-
-    static void DisplayUnknownException()
-    {
-        LogUnhandledException(UnknownExceptionToString().c_str());
-    }
-
-    Exception(const Exception &other)
-    {
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-    }
-
-    const Exception &operator =(const Exception &other)
-    {
-        if (this == &other) {
-            return *this;
-        }
-
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-
-        return *this;
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const std::string &message) :
-        m_reason(NULL),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const Exception &reason,
-              const std::string &message) :
-        m_reason(new Exception(reason)),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    virtual ~Exception() throw()
-    {
-        if (m_reason != NULL) {
-            delete m_reason;
-            m_reason = NULL;
-        }
-
-        UnRef(this);
-    }
-
-    void Dump() const
-    {
-        // Show reason first
-        if (m_reason != NULL) {
-            m_reason->Dump();
-        }
-
-        // Afterward, dump exception
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-               file, m_line,
-               m_function.c_str(),
-               m_className.c_str(),
-               m_message.empty() ? "<EMPTY>" : m_message.c_str());
-    }
-
-    std::string DumpToString() const
-    {
-        std::string ret;
-        if (m_reason != NULL) {
-            ret = m_reason->DumpToString();
-        }
-
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        char buf[1024];
-        snprintf(buf,
-                 sizeof(buf),
-                 "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-                 file,
-                 m_line,
-                 m_function.c_str(),
-                 m_className.c_str(),
-                 m_message.empty() ? "<EMPTY>" : m_message.c_str());
-
-        buf[sizeof(buf) - 1] = '\n';
-        ret += buf;
-
-        return ret;
-    }
-
-    Exception *GetReason() const
-    {
-        return m_reason;
-    }
-
-    std::string GetPath() const
-    {
-        return m_path;
-    }
-
-    std::string GetFunction() const
-    {
-        return m_function;
-    }
-
-    int GetLine() const
-    {
-        return m_line;
-    }
-
-    std::string GetMessage() const
-    {
-        return m_message;
-    }
-
-    std::string GetClassName() const
-    {
-        return m_className;
-    }
+       static std::string KnownExceptionToString(const Exception &e)
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;33mException trace:\033[m\n\n";
+               message << e.DumpToString();
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static std::string UnknownExceptionToString()
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static void DisplayKnownException(const Exception &e)
+       {
+               LogUnhandledException(KnownExceptionToString(e).c_str());
+       }
+
+       static void DisplayUnknownException()
+       {
+               LogUnhandledException(UnknownExceptionToString().c_str());
+       }
+
+       Exception(const Exception &other)
+       {
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+       }
+
+       const Exception &operator =(const Exception &other)
+       {
+               if (this == &other) {
+                       return *this;
+               }
+
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+               return *this;
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const std::string &message) :
+               m_reason(NULL),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const Exception &reason,
+                         const std::string &message) :
+               m_reason(new Exception(reason)),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       virtual ~Exception() throw()
+       {
+               if (m_reason != NULL) {
+                       delete m_reason;
+                       m_reason = NULL;
+               }
+
+               UnRef(this);
+       }
+
+       void Dump() const
+       {
+               // Show reason first
+               if (m_reason != NULL) {
+                       m_reason->Dump();
+               }
+
+               // Afterward, dump exception
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                          file, m_line,
+                          m_function.c_str(),
+                          m_className.c_str(),
+                          m_message.empty() ? "<EMPTY>" : m_message.c_str());
+       }
+
+       std::string DumpToString() const
+       {
+               std::string ret;
+
+               if (m_reason != NULL) {
+                       ret = m_reason->DumpToString();
+               }
+
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               char buf[1024];
+               snprintf(buf,
+                                sizeof(buf),
+                                "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                                file,
+                                m_line,
+                                m_function.c_str(),
+                                m_className.c_str(),
+                                m_message.empty() ? "<EMPTY>" : m_message.c_str());
+               buf[sizeof(buf) - 1] = '\n';
+               ret += buf;
+               return ret;
+       }
+
+       Exception *GetReason() const
+       {
+               return m_reason;
+       }
+
+       std::string GetPath() const
+       {
+               return m_path;
+       }
+
+       std::string GetFunction() const
+       {
+               return m_function;
+       }
+
+       int GetLine() const
+       {
+               return m_line;
+       }
+
+       std::string GetMessage() const
+       {
+               return m_message;
+       }
+
+       std::string GetClassName() const
+       {
+               return m_className;
+       }
 };
 } // namespace VcoreDPL
 
 #define Try try
 
 #define Throw(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__)
 
 #define ThrowMsg(ClassName, Message)                                                 \
-    do                                                                               \
-    {                                                                                \
-        std::ostringstream dplLoggingStream;                                         \
-        dplLoggingStream << Message;                                                 \
-        throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
-    } while (0)
+       do                                                                               \
+       {                                                                                \
+               std::ostringstream dplLoggingStream;                                         \
+               dplLoggingStream << Message;                                                 \
+               throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
+       } while (0)
 
 #define ReThrow(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
 
 #define ReThrowMsg(ClassName, Message)                                               \
-    throw ClassName(__FILE__,                                                        \
-                    __FUNCTION__,                                                    \
-                    __LINE__,                                                        \
-                    _rethrown_exception,                                             \
-                    Message)
+       throw ClassName(__FILE__,                                                        \
+                                       __FUNCTION__,                                                    \
+                                       __LINE__,                                                        \
+                                       _rethrown_exception,                                             \
+                                       Message)
 
 #define Catch(ClassName)                                                             \
-    catch (const ClassName &_rethrown_exception)
+       catch (const ClassName &_rethrown_exception)
 
 #define DECLARE_EXCEPTION_TYPE(BaseClass, Class)                                     \
-    class Class : public BaseClass {                                                 \
-    public:                                                                          \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, message) {                               \
-                                                                                     \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-                                                                                     \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const VcoreDPL::Exception & reason,                                    \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, reason, message) {                       \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-    };
+       class Class : public BaseClass {                                                 \
+       public:                                                                          \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, message) {                               \
+                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+               \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const VcoreDPL::Exception & reason,                                    \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, reason, message) {                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+       };
 
 #define UNHANDLED_EXCEPTION_HANDLER_BEGIN try
 
 #define UNHANDLED_EXCEPTION_HANDLER_END                                              \
-    catch (const VcoreDPL::Exception &exception)                                     \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << VcoreDPL::Exception::KnownExceptionToString(exception);               \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                       __FUNCTION__);                                \
-        abort();                                                                     \
-    }                                                                                \
-    catch (std::exception& e)                                                        \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << e.what();                                                             \
-        msg << "\n";                                                                 \
-        msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }                                                                                \
-    catch (...)                                                                      \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }
+       catch (const VcoreDPL::Exception &exception)                                     \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << VcoreDPL::Exception::KnownExceptionToString(exception);               \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                                \
+               abort();                                                                     \
+       }                                                                                \
+       catch (std::exception& e)                                                        \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << e.what();                                                             \
+               msg << "\n";                                                                 \
+               msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                               \
+               abort();                                                                     \
+       }                                                                                \
+       catch (...)                                                                      \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                               \
+               abort();                                                                     \
+       }
 
 namespace VcoreDPL {
 namespace CommonException {
@@ -382,8 +374,8 @@ namespace CommonException {
  * important messages.
  */
 DECLARE_EXCEPTION_TYPE(Exception, InternalError) ///< Unexpected error from
-                                                // underlying libraries or
-                                                // kernel
+// underlying libraries or
+// kernel
 }
 }
 
index 0a4485d..b427aad 100644 (file)
@@ -32,30 +32,30 @@ namespace Private {
  * Used to detect type of valid reference to value object.
  */
 template <typename T>
-T& ValueReference(T& t)
+T &ValueReference(T &t)
 {
-    return(t);
+       return (t);
 }
 
 template <typename T>
-const T& ValueReference(const T& t)
+const T &ValueReference(const T &t)
 {
-    return(t);
+       return (t);
 }
 } //Private
 } //DPL
 
 #define DPL_FOREACH_IMPL(temporaryName, iterator, container)            \
-    __typeof__ (VcoreDPL::Private::ValueReference((container))) &            \
-    temporaryName = (container);                                        \
-    for (__typeof__ (temporaryName.begin())iterator =                  \
-             temporaryName.begin();                                     \
-         (iterator) != temporaryName.end(); ++iterator)
+       __typeof__(VcoreDPL::Private::ValueReference((container))) &            \
+       temporaryName = (container);                                        \
+       for (__typeof__(temporaryName.begin())iterator =                  \
+                       temporaryName.begin();                                     \
+                       (iterator) != temporaryName.end(); ++iterator)
 
 #define FOREACH(iterator, container)                                    \
-    DPL_FOREACH_IMPL(                                                   \
-        DPL_MACRO_CONCAT(foreachContainerReference, __COUNTER__),       \
-        iterator,                                      \
-        container)
+       DPL_FOREACH_IMPL(                                                   \
+                       DPL_MACRO_CONCAT(foreachContainerReference, __COUNTER__),       \
+                       iterator,                                      \
+                       container)
 
 #endif // DPL_FOREACH_H
index f3494f2..04dc828 100644 (file)
 #define FREE_DELETER_H
 
 #include <cstdlib>
-namespace VcoreDPL
-{
-struct free_deleter
-{
-    void operator()(void *p) { std::free(p); }
+namespace VcoreDPL {
+struct free_deleter {
+       void operator()(void *p)
+       {
+               std::free(p);
+       }
 };
 }// DPL
 #endif // FREE_DELETER_H
index b08f513..9354a4e 100644 (file)
@@ -28,15 +28,12 @@ namespace VcoreDPL {
 template<typename TargetType, typename SourceType>
 TargetType lexical_cast(const SourceType &data)
 {
-    TargetType result;
-
-    std::ostringstream out;
-    out << data;
-
-    std::istringstream in(out.str());
-    in >> result;
-
-    return result;
+       TargetType result;
+       std::ostringstream out;
+       out << data;
+       std::istringstream in(out.str());
+       in >> result;
+       return result;
 }
 } // namespace VcoreDPL
 
index 89372d0..7f951dd 100644 (file)
 #define DPL_NONCOPYABLE_H
 
 namespace VcoreDPL {
-class Noncopyable
-{
-  private:
-    Noncopyable(const Noncopyable &);
-    const Noncopyable &operator=(const Noncopyable &);
+class Noncopyable {
+private:
+       Noncopyable(const Noncopyable &);
+       const Noncopyable &operator=(const Noncopyable &);
 
-  public:
-    Noncopyable();
-    virtual ~Noncopyable();
+public:
+       Noncopyable();
+       virtual ~Noncopyable();
 };
 } // namespace VcoreDPL
 
index b69fcbd..017fa86 100644 (file)
 #include <dpl/scoped_resource.h>
 
 namespace VcoreDPL {
-struct ScopedFClosePolicy
-{
-    typedef FILE* Type;
-    static Type NullValue()
-    {
-        return NULL;
-    }
-    static void Destroy(Type file)
-    {
-        if (file != NULL) {
-            // Try to flush first
-            if (TEMP_FAILURE_RETRY(fflush(file)) != 0)
-                return;
+struct ScopedFClosePolicy {
+       typedef FILE *Type;
+       static Type NullValue()
+       {
+               return NULL;
+       }
+       static void Destroy(Type file)
+       {
+               if (file != NULL) {
+                       // Try to flush first
+                       if (TEMP_FAILURE_RETRY(fflush(file)) != 0)
+                               return;
 
-            // fclose cannot be retried, try to close once
-            if (fclose(file) != 0)
-                return;
-        }
-    }
+                       // fclose cannot be retried, try to close once
+                       if (fclose(file) != 0)
+                               return;
+               }
+       }
 };
 
-class ScopedFClose : public ScopedResource<ScopedFClosePolicy>
-{
-    typedef ScopedFClosePolicy Policy;
-    typedef ScopedResource<Policy> BaseType;
+class ScopedFClose : public ScopedResource<ScopedFClosePolicy> {
+       typedef ScopedFClosePolicy Policy;
+       typedef ScopedResource<Policy> BaseType;
 
-  public:
-    explicit ScopedFClose(FILE* argFileStream = Policy::NullValue()) :
-        BaseType(argFileStream)
-    {}
+public:
+       explicit ScopedFClose(FILE *argFileStream = Policy::NullValue()) :
+               BaseType(argFileStream)
+       {}
 };
 } // namespace VcoreDPL
 
index 7f9685b..479cbb9 100644 (file)
 
 namespace VcoreDPL {
 template<typename Class>
-struct ScopedFreePolicy
-{
-    typedef Class* Type;
-    static Type NullValue()
-    {
-        return NULL;
-    }
-    static void Destroy(Type ptr)
-    {
-        free(ptr);
-    }
+struct ScopedFreePolicy {
+       typedef Class *Type;
+       static Type NullValue()
+       {
+               return NULL;
+       }
+       static void Destroy(Type ptr)
+       {
+               free(ptr);
+       }
 };
 
 template<typename Memory>
-class ScopedFree : public ScopedResource<ScopedFreePolicy<Memory> >
-{
-    typedef ScopedFreePolicy<Memory> Policy;
-    typedef ScopedResource<Policy> BaseType;
+class ScopedFree : public ScopedResource<ScopedFreePolicy<Memory>> {
+       typedef ScopedFreePolicy<Memory> Policy;
+       typedef ScopedResource<Policy> BaseType;
 
-  public:
-    explicit ScopedFree(Memory *ptr = Policy::NullValue()) : BaseType(ptr) { }
+public:
+       explicit ScopedFree(Memory *ptr = Policy::NullValue()) : BaseType(ptr) { }
 };
 } // namespace VcoreDPL
 
index ed034dd..22172f3 100644 (file)
 namespace VcoreDPL {
 template<typename ClassPolicy>
 class ScopedResource :
-    private Noncopyable
-{
-  public:
-    typedef typename ClassPolicy::Type ValueType;
-    typedef ScopedResource<ClassPolicy> ThisType;
+       private Noncopyable {
+public:
+       typedef typename ClassPolicy::Type ValueType;
+       typedef ScopedResource<ClassPolicy> ThisType;
 
-  protected:
-    ValueType m_value;
+protected:
+       ValueType m_value;
 
-  public:
-    explicit ScopedResource(ValueType value) : m_value(value) { }
+public:
+       explicit ScopedResource(ValueType value) : m_value(value) { }
 
-    ~ScopedResource()
-    {
-        ClassPolicy::Destroy(m_value);
-    }
+       ~ScopedResource()
+       {
+               ClassPolicy::Destroy(m_value);
+       }
 
-    ValueType Get() const
-    {
-        return m_value;
-    }
+       ValueType Get() const
+       {
+               return m_value;
+       }
 
-    void Reset(ValueType value = ClassPolicy::NullValue())
-    {
-        ClassPolicy::Destroy(m_value);
-        m_value = value;
-    }
+       void Reset(ValueType value = ClassPolicy::NullValue())
+       {
+               ClassPolicy::Destroy(m_value);
+               m_value = value;
+       }
 
-    ValueType Release()
-    {
-        ValueType value = m_value;
-        m_value = ClassPolicy::NullValue();
-        return value;
-    }
-    typedef ValueType ThisType::*UnknownBoolType;
+       ValueType Release()
+       {
+               ValueType value = m_value;
+               m_value = ClassPolicy::NullValue();
+               return value;
+       }
+       typedef ValueType ThisType::*UnknownBoolType;
 
-    operator UnknownBoolType() const
-    {
-        return m_value == ClassPolicy::NullValue() ?
-               0 : //0 is valid here because it converts to false
-               &ThisType::m_value; //it converts to true
-    }
+       operator UnknownBoolType() const
+       {
+               return m_value == ClassPolicy::NullValue() ?
+                          0 : //0 is valid here because it converts to false
+                          &ThisType::m_value; //it converts to true
+       }
 
-    bool operator !() const
-    {
-        return m_value == ClassPolicy::NullValue();
-    }
+       bool operator !() const
+       {
+               return m_value == ClassPolicy::NullValue();
+       }
 };
 } // namespace VcoreDPL
 
index 57bbe33..bec534a 100644 (file)
 namespace VcoreDPL {
 template<typename Class>
 class Singleton :
-    private Class
-{
-    //
-    // Note:
-    //
-    // To remove posibility of instantiating directly Class,
-    // make Class' default constructor protected
-    //
+       private Class {
+       //
+       // Note:
+       //
+       // To remove posibility of instantiating directly Class,
+       // make Class' default constructor protected
+       //
 
-  private:
-    Singleton()
-    {}
+private:
+       Singleton()
+       {}
 
-    static Singleton &InternalInstance();
+       static Singleton &InternalInstance();
 
-  public:
-    virtual ~Singleton()
-    {}
+public:
+       virtual ~Singleton()
+       {}
 
-    static Class &Instance();
+       static Class &Instance();
 };
 } // namespace VcoreDPL
 
index f8f9fd9..502d926 100644 (file)
 
 namespace VcoreDPL {
 template<typename Class>
-Singleton<Class>Singleton<Class>::InternalInstance()
+Singleton<Class> &Singleton<Class>::InternalInstance()
 {
-    static Singleton<Class> instance;
-    return instance;
+       static Singleton<Class> instance;
+       return instance;
 }
 
 template<typename Class>
 Class &Singleton<Class>::Instance()
 {
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();
-    return instance;
+       Singleton<Class> &instance = Singleton<Class>::InternalInstance();
+       return instance;
 }
 } // namespace VcoreDPL
 
 #define IMPLEMENT_SINGLETON(Type)                                                     \
-    template VcoreDPL::Singleton<Type>&VcoreDPL::Singleton<Type>::InternalInstance(); \
-    template Type & VcoreDPL::Singleton<Type>::Instance();                            \
+       template VcoreDPL::Singleton<Type>&VcoreDPL::Singleton<Type>::InternalInstance(); \
+       template Type & VcoreDPL::Singleton<Type>::Instance();                            \
 
 #endif // DPL_SINGLETON_IMPL_H
index a7043ea..6998136 100644 (file)
@@ -32,24 +32,22 @@ namespace VcoreDPL {
  * Abstract class of parser that produces some higher level abstraction
  * basing on incoming tokens
  */
-template<class Result, class Token> class AbstractInputParser
-{
+template<class Result, class Token> class AbstractInputParser {
 public:
-    class Exception
-    {
-    public:
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, ParserError)
-    };
+       class Exception {
+       public:
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, ParserError)
+       };
 
-    typedef Result ResultType;
-    typedef Token TokenType;
+       typedef Result ResultType;
+       typedef Token TokenType;
 
-    virtual ~AbstractInputParser() {}
+       virtual ~AbstractInputParser() {}
 
-    virtual void ConsumeToken(std::unique_ptr<Token> && token) = 0;
-    virtual bool IsStateValid() = 0;
-    virtual Result GetResult() const = 0;
+       virtual void ConsumeToken(std::unique_ptr<Token> &&token) = 0;
+       virtual bool IsStateValid() = 0;
+       virtual Result GetResult() const = 0;
 };
 
 }
index cf7bd7b..5410e78 100644 (file)
@@ -49,59 +49,56 @@ namespace VcoreDPL {
  * There a waste in form of virtuality for parser and tokenizer
  * -> this for forcing same tokenT type in both components
  */
-template<class ResultT, class TokenT> class AbstractInputReader
-{
+template<class ResultT, class TokenT> class AbstractInputReader {
 public:
-    typedef ResultT TokenType;
-    typedef TokenT ResultType;
-    typedef AbstractInputParser<ResultT, TokenT> ParserBase;
-    typedef AbstractInputTokenizer<TokenT> TokenizerBase;
-
-    class Exception
-    {
-    public:
-        typedef typename TokenizerBase::Exception::TokenizerError TokenizerError;
-        typedef typename ParserBase::Exception::ParserError ParserError;
-    };
-
-    AbstractInputReader(std::shared_ptr<AbstractInput> ia,
-                        std::unique_ptr<ParserBase> && parser,
-                        std::unique_ptr<TokenizerBase> && tokenizer)
-        : m_parser(std::move(parser)), m_tokenizer(std::move(tokenizer))
-    {
-        m_tokenizer->Reset(ia);
-    }
-
-    virtual ~AbstractInputReader() {}
-
-    ResultT ReadInput()
-    {
-        typedef typename Exception::TokenizerError TokenizerError;
-        typedef typename Exception::ParserError ParserError;
-
-        while(true)
-        {
-            std::unique_ptr<TokenT> token = m_tokenizer->GetNextToken();
-            if(!token)
-            {
-                if(!m_tokenizer->IsStateValid())
-                {
-                    ThrowMsg(TokenizerError, "Tokenizer error");
-                }
-                if(!m_parser->IsStateValid())
-                {
-                    ThrowMsg(ParserError, "Parser error");
-                }
-
-                return m_parser->GetResult();
-            }
-            m_parser->ConsumeToken(std::move(token));
-        }
-    }
+       typedef ResultT TokenType;
+       typedef TokenT ResultType;
+       typedef AbstractInputParser<ResultT, TokenT> ParserBase;
+       typedef AbstractInputTokenizer<TokenT> TokenizerBase;
+
+       class Exception {
+       public:
+               typedef typename TokenizerBase::Exception::TokenizerError TokenizerError;
+               typedef typename ParserBase::Exception::ParserError ParserError;
+       };
+
+       AbstractInputReader(std::shared_ptr<AbstractInput> ia,
+                                               std::unique_ptr<ParserBase> &&parser,
+                                               std::unique_ptr<TokenizerBase> &&tokenizer)
+               : m_parser(std::move(parser)), m_tokenizer(std::move(tokenizer))
+       {
+               m_tokenizer->Reset(ia);
+       }
+
+       virtual ~AbstractInputReader() {}
+
+       ResultT ReadInput()
+       {
+               typedef typename Exception::TokenizerError TokenizerError;
+               typedef typename Exception::ParserError ParserError;
+
+               while (true) {
+                       std::unique_ptr<TokenT> token = m_tokenizer->GetNextToken();
+
+                       if (!token) {
+                               if (!m_tokenizer->IsStateValid()) {
+                                       ThrowMsg(TokenizerError, "Tokenizer error");
+                               }
+
+                               if (!m_parser->IsStateValid()) {
+                                       ThrowMsg(ParserError, "Parser error");
+                               }
+
+                               return m_parser->GetResult();
+                       }
+
+                       m_parser->ConsumeToken(std::move(token));
+               }
+       }
 
 protected:
-    std::unique_ptr<ParserBase> m_parser;
-    std::unique_ptr<TokenizerBase> m_tokenizer;
+       std::unique_ptr<ParserBase> m_parser;
+       std::unique_ptr<TokenizerBase> m_tokenizer;
 };
 
 }
index 03e00a9..46d1564 100644 (file)
@@ -37,47 +37,45 @@ namespace VcoreDPL {
  * and produce tokens until end of source. If parsing ends in invalid state
  * then IsStateValid() should return false
  */
-template<class Token> class AbstractInputTokenizer
-{
+template<class Token> class AbstractInputTokenizer {
 public:
-    class Exception
-    {
-    public:
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, TokenizerError)
-    };
+       class Exception {
+       public:
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, TokenizerError)
+       };
 
-    typedef Token TokenType;
+       typedef Token TokenType;
 
-    AbstractInputTokenizer() {}
-    virtual ~AbstractInputTokenizer() {}
+       AbstractInputTokenizer() {}
+       virtual ~AbstractInputTokenizer() {}
 
-    /**
-     * @brief Reset resets data source
-     * @param wia AbstractWaitableInputAdapter instance
-     */
-    virtual void Reset(std::shared_ptr<AbstractInput> wia)
-    {
-        m_input = wia;
-    }
+       /**
+        * @brief Reset resets data source
+        * @param wia AbstractWaitableInputAdapter instance
+        */
+       virtual void Reset(std::shared_ptr<AbstractInput> wia)
+       {
+               m_input = wia;
+       }
 
-    /**
-     * @brief GetNextToken
-     *
-     * Parses next token.
-     * Returns pointer to token
-     * @throw TokenizerError in condition of input source error
-     * If returned empty pointer IsStateValid() == true -> end of input
-     *                           IsStateValid() == false -> error
-     *
-     * @param token token to be set
-     * @return
-     */
-    virtual std::unique_ptr<Token> GetNextToken() = 0;
-    virtual bool IsStateValid() = 0;
+       /**
+        * @brief GetNextToken
+        *
+        * Parses next token.
+        * Returns pointer to token
+        * @throw TokenizerError in condition of input source error
+        * If returned empty pointer IsStateValid() == true -> end of input
+        *                           IsStateValid() == false -> error
+        *
+        * @param token token to be set
+        * @return
+        */
+       virtual std::unique_ptr<Token> GetNextToken() = 0;
+       virtual bool IsStateValid() = 0;
 
 protected:
-    std::shared_ptr<AbstractInput> m_input;
+       std::shared_ptr<AbstractInput> m_input;
 };
 
 }
index 5d86ef6..0140a1e 100644 (file)
@@ -38,57 +38,57 @@ typedef std::shared_ptr<TestResultsCollectorBase>
 TestResultsCollectorBasePtr;
 
 class TestResultsCollectorBase :
-    private VcoreDPL::Noncopyable
-{
-  public:
-    typedef TestResultsCollectorBase* (*CollectorConstructorFunc)();
-    typedef std::list<std::string> TestCaseIdList;
-    struct FailStatus
-    {
-        enum Type
-        {
-            NONE,
-            FAILED,
-            IGNORED,
-            INTERNAL
-        };
-    };
+       private VcoreDPL::Noncopyable {
+public:
+       typedef TestResultsCollectorBase *(*CollectorConstructorFunc)();
+       typedef std::list<std::string> TestCaseIdList;
+       struct FailStatus {
+               enum Type {
+                       NONE,
+                       FAILED,
+                       IGNORED,
+                       INTERNAL
+               };
+       };
 
-    virtual ~TestResultsCollectorBase() {}
+       virtual ~TestResultsCollectorBase() {}
 
-    virtual bool Configure()
-    {
-        return true;
-    }
-    virtual void Start(int count) { DPL_UNUSED_PARAM(count); }
-    virtual void Finish() { }
-    virtual void CollectCurrentTestGroupName(const std::string& /*groupName*/)
-    {}
+       virtual bool Configure()
+       {
+               return true;
+       }
+       virtual void Start(int count)
+       {
+               DPL_UNUSED_PARAM(count);
+       }
+       virtual void Finish() { }
+       virtual void CollectCurrentTestGroupName(const std::string & /*groupName*/)
+       {}
 
-    virtual void CollectTestsCasesList(const TestCaseIdList& /*list*/) {}
-    virtual void CollectResult(const std::string& id,
-                               const std::string& description,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "") = 0;
-    virtual std::string CollectorSpecificHelp() const
-    {
-        return "";
-    }
-    virtual bool ParseCollectorSpecificArg (const std::string& /*arg*/)
-    {
-        return false;
-    }
+       virtual void CollectTestsCasesList(const TestCaseIdList & /*list*/) {}
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string &description,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "") = 0;
+       virtual std::string CollectorSpecificHelp() const
+       {
+               return "";
+       }
+       virtual bool ParseCollectorSpecificArg(const std::string & /*arg*/)
+       {
+               return false;
+       }
 
-    static TestResultsCollectorBase* Create(const std::string& name);
-    static void RegisterCollectorConstructor(
-        const std::string& name,
-        CollectorConstructorFunc
-        constructor);
-    static std::vector<std::string> GetCollectorsNames();
+       static TestResultsCollectorBase *Create(const std::string &name);
+       static void RegisterCollectorConstructor(
+               const std::string &name,
+               CollectorConstructorFunc
+               constructor);
+       static std::vector<std::string> GetCollectorsNames();
 
-  private:
-    typedef std::map<std::string, CollectorConstructorFunc> ConstructorsMap;
-    static ConstructorsMap m_constructorsMap;
+private:
+       typedef std::map<std::string, CollectorConstructorFunc> ConstructorsMap;
+       static ConstructorsMap m_constructorsMap;
 };
 }
 }
index 3b980e1..6235c1d 100644 (file)
 
 namespace VcoreDPL {
 namespace Test {
-class TestRunner
-{
-    typedef std::map<std::string, TestResultsCollectorBasePtr>
-    TestResultsCollectors;
-    TestResultsCollectors m_collectors;
-
-    std::string m_startTestId;
-    bool m_runIgnored;
-
-  public:
-    TestRunner()
-        : m_runIgnored(false)
-        , m_allowChildLogs(false)
-        , m_terminate(false)
-        , m_totalAssertions(0)
-    {}
-
-    typedef void (*TestCase)();
-
-  private:
-    struct TestCaseStruct
-    {
-        std::string name;
-        TestCase proc;
-
-        bool operator <(const TestCaseStruct &other) const
-        {
-            return name < other.name;
-        }
-
-        bool operator ==(const TestCaseStruct &other) const
-        {
-            return name == other.name;
-        }
-
-        TestCaseStruct(const std::string &n, TestCase p) :
-            name(n),
-            proc(p)
-        {}
-    };
-
-    typedef std::list<TestCaseStruct> TestCaseStructList;
-    typedef std::map<std::string, TestCaseStructList> TestCaseGroupMap;
-    TestCaseGroupMap m_testGroups;
-
-    typedef std::set<std::string> SelectedTestNameSet;
-    SelectedTestNameSet m_selectedTestNamesSet;
-    typedef std::set<std::string> SelectedTestGroupSet;
-    SelectedTestGroupSet m_selectedTestGroupSet;
-    std::string m_currentGroup;
-
-    // Terminate without any logs.
-    // Some test requires to call fork function.
-    // Child process must not produce any logs and should die quietly.
-    bool m_allowChildLogs;
-    bool m_terminate;
-
-    std::atomic<int> m_totalAssertions;
-
-    void Banner();
-    void InvalidArgs(const std::string& message = "Invalid arguments!");
-    void Usage();
-
-    bool filterGroupsByXmls(const std::vector<std::string> & files);
-    bool filterByXML(std::map<std::string, bool> & casesMap);
-    void normalizeXMLTag(std::string& str, const std::string& testcase);
-
-    enum Status { FAILED, IGNORED, PASS };
-
-    Status RunTestCase(const TestCaseStruct& testCase);
-
-    void RunTests();
-
-    void CollectResult(const std::string& id,
-                       const std::string& description,
-                       const TestResultsCollectorBase::FailStatus::Type status
-                           = TestResultsCollectorBase::FailStatus::NONE,
-                       const std::string& reason = std::string());
-
-  public:
-    class TestFailed
-    {
-      private:
-        std::string m_message;
-
-      public:
-        TestFailed()
-        {}
-
-        //! \brief Failed test message creator
-        //!
-        //! \param[in] aTest string for tested expression
-        //! \param[in] aFile source file name
-        //! \param[in] aLine source file line
-        //! \param[in] aMessage error message
-        TestFailed(const char* aTest,
-                   const char* aFile,
-                   int aLine,
-                   const std::string &aMessage);
-
-        TestFailed(const std::string &message);
-
-        std::string GetMessage() const
-        {
-            return m_message;
-        }
-    };
-
-    class Ignored
-    {
-      private:
-        std::string m_message;
-
-      public:
-        Ignored()
-        {}
-
-        Ignored(const std::string &message) :
-            m_message(message)
-        {}
-
-        std::string GetMessage() const
-        {
-            return m_message;
-        }
-    };
-
-    void MarkAssertion();
-
-    void RegisterTest(const char *testName, TestCase proc);
-    void InitGroup(const char* name);
-
-    int ExecTestRunner(int argc, char *argv[]);
-    typedef std::vector<std::string> ArgsList;
-    int ExecTestRunner(const ArgsList& args);
-    bool getRunIgnored() const;
-    // The runner will terminate as soon as possible (after current test).
-    void Terminate();
-    bool GetAllowChildLogs();
+class TestRunner {
+       typedef std::map<std::string, TestResultsCollectorBasePtr>
+       TestResultsCollectors;
+       TestResultsCollectors m_collectors;
+
+       std::string m_startTestId;
+       bool m_runIgnored;
+
+public:
+       TestRunner()
+               : m_runIgnored(false)
+               , m_allowChildLogs(false)
+               , m_terminate(false)
+               , m_totalAssertions(0)
+       {}
+
+       typedef void (*TestCase)();
+
+private:
+       struct TestCaseStruct {
+               std::string name;
+               TestCase proc;
+
+               bool operator <(const TestCaseStruct &other) const
+               {
+                       return name < other.name;
+               }
+
+               bool operator ==(const TestCaseStruct &other) const
+               {
+                       return name == other.name;
+               }
+
+               TestCaseStruct(const std::string &n, TestCase p) :
+                       name(n),
+                       proc(p)
+               {}
+       };
+
+       typedef std::list<TestCaseStruct> TestCaseStructList;
+       typedef std::map<std::string, TestCaseStructList> TestCaseGroupMap;
+       TestCaseGroupMap m_testGroups;
+
+       typedef std::set<std::string> SelectedTestNameSet;
+       SelectedTestNameSet m_selectedTestNamesSet;
+       typedef std::set<std::string> SelectedTestGroupSet;
+       SelectedTestGroupSet m_selectedTestGroupSet;
+       std::string m_currentGroup;
+
+       // Terminate without any logs.
+       // Some test requires to call fork function.
+       // Child process must not produce any logs and should die quietly.
+       bool m_allowChildLogs;
+       bool m_terminate;
+
+       std::atomic<int> m_totalAssertions;
+
+       void Banner();
+       void InvalidArgs(const std::string &message = "Invalid arguments!");
+       void Usage();
+
+       bool filterGroupsByXmls(const std::vector<std::string> &files);
+       bool filterByXML(std::map<std::string, bool> &casesMap);
+       void normalizeXMLTag(std::string &str, const std::string &testcase);
+
+       enum Status { FAILED, IGNORED, PASS };
+
+       Status RunTestCase(const TestCaseStruct &testCase);
+
+       void RunTests();
+
+       void CollectResult(const std::string &id,
+                                          const std::string &description,
+                                          const TestResultsCollectorBase::FailStatus::Type status
+                                          = TestResultsCollectorBase::FailStatus::NONE,
+                                          const std::string &reason = std::string());
+
+public:
+       class TestFailed {
+       private:
+               std::string m_message;
+
+       public:
+               TestFailed()
+               {}
+
+               //! \brief Failed test message creator
+               //!
+               //! \param[in] aTest string for tested expression
+               //! \param[in] aFile source file name
+               //! \param[in] aLine source file line
+               //! \param[in] aMessage error message
+               TestFailed(const char *aTest,
+                                  const char *aFile,
+                                  int aLine,
+                                  const std::string &aMessage);
+
+               TestFailed(const std::string &message);
+
+               std::string GetMessage() const
+               {
+                       return m_message;
+               }
+       };
+
+       class Ignored {
+       private:
+               std::string m_message;
+
+       public:
+               Ignored()
+               {}
+
+               Ignored(const std::string &message) :
+                       m_message(message)
+               {}
+
+               std::string GetMessage() const
+               {
+                       return m_message;
+               }
+       };
+
+       void MarkAssertion();
+
+       void RegisterTest(const char *testName, TestCase proc);
+       void InitGroup(const char *name);
+
+       int ExecTestRunner(int argc, char *argv[]);
+       typedef std::vector<std::string> ArgsList;
+       int ExecTestRunner(const ArgsList &args);
+       bool getRunIgnored() const;
+       // The runner will terminate as soon as possible (after current test).
+       void Terminate();
+       bool GetAllowChildLogs();
 };
 
 typedef VcoreDPL::Singleton<TestRunner> TestRunnerSingleton;
@@ -183,49 +179,49 @@ typedef VcoreDPL::Singleton<TestRunner> TestRunnerSingleton;
 } // namespace VcoreDPL
 
 #define RUNNER_TEST_GROUP_INIT(GroupName)                                     \
-    static int Static##GroupName##Init()                                      \
-    {                                                                         \
-        VcoreDPL::Test::TestRunnerSingleton::Instance().InitGroup(#GroupName);     \
-        return 0;                                                             \
-    }                                                                         \
-    const int DPL_UNUSED Static##GroupName##InitVar =                         \
-        Static##GroupName##Init();
+       static int Static##GroupName##Init()                                      \
+       {                                                                         \
+               VcoreDPL::Test::TestRunnerSingleton::Instance().InitGroup(#GroupName);     \
+               return 0;                                                             \
+       }                                                                         \
+       const int DPL_UNUSED Static##GroupName##InitVar =                         \
+                       Static##GroupName##Init();
 
 #define RUNNER_TEST(Proc)                                                     \
-    void Proc();                                                              \
-    static int Static##Proc##Init()                                           \
-    {                                                                         \
-        VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);\
-        return 0;                                                             \
-    }                                                                         \
-    const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();        \
-    void Proc()
+       void Proc();                                                              \
+       static int Static##Proc##Init()                                           \
+       {                                                                         \
+               VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);\
+               return 0;                                                             \
+       }                                                                         \
+       const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();        \
+       void Proc()
 
 #define RUNNER_ASSERT_MSG(test, message)                                      \
-    do                                                                        \
-    {                                                                         \
-        VcoreDPL::Test::TestRunnerSingleton::Instance().MarkAssertion();           \
-                                                                              \
-        if (!(test))                                                          \
-        {                                                                     \
-            std::ostringstream assertMsg;                                     \
-            assertMsg << message;                                             \
-            throw VcoreDPL::Test::TestRunner::TestFailed(#test,                    \
-                                                    __FILE__,                 \
-                                                    __LINE__,                 \
-                                                    assertMsg.str());         \
-        }                                                                     \
-    } while (0)
+       do                                                                        \
+       {                                                                         \
+               VcoreDPL::Test::TestRunnerSingleton::Instance().MarkAssertion();           \
+               \
+               if (!(test))                                                          \
+               {                                                                     \
+                       std::ostringstream assertMsg;                                     \
+                       assertMsg << message;                                             \
+                       throw VcoreDPL::Test::TestRunner::TestFailed(#test,                    \
+                                       __FILE__,                 \
+                                       __LINE__,                 \
+                                       assertMsg.str());         \
+               }                                                                     \
+       } while (0)
 
 #define RUNNER_ASSERT(test) RUNNER_ASSERT_MSG(test, "")
 
 #define RUNNER_FAIL RUNNER_ASSERT(false)
 
 #define RUNNER_IGNORED_MSG(message)                                           \
-    do {                                                                      \
-        std::ostringstream assertMsg;                                         \
-        assertMsg << message;                                                 \
-        throw VcoreDPL::Test::TestRunner::Ignored( assertMsg.str() );              \
-    } while (0)
+       do {                                                                      \
+               std::ostringstream assertMsg;                                         \
+               assertMsg << message;                                                 \
+               throw VcoreDPL::Test::TestRunner::Ignored(assertMsg.str());              \
+       } while (0)
 
 #endif // DPL_TEST_RUNNER_H
index 86bf17e..ab360f2 100644 (file)
 namespace VcoreDPL {
 namespace Test {
 
-class PipeWrapper : VcoreDPL::Noncopyable
-{
-  public:
-    enum Usage {
-        READONLY,
-        WRITEONLY
-    };
+class PipeWrapper : VcoreDPL::Noncopyable {
+public:
+       enum Usage {
+               READONLY,
+               WRITEONLY
+       };
 
-    enum Status {
-        SUCCESS,
-        TIMEOUT,
-        ERROR
-    };
+       enum Status {
+               SUCCESS,
+               TIMEOUT,
+               ERROR
+       };
 
-    PipeWrapper();
+       PipeWrapper();
 
-    bool isReady();
+       bool isReady();
 
-    void setUsage(Usage usage);
+       void setUsage(Usage usage);
 
-    virtual ~PipeWrapper();
+       virtual ~PipeWrapper();
 
-    Status send(int code, std::string &message);
+       Status send(int code, std::string &message);
 
-    Status receive(int &code, std::string &data, time_t deadline);
+       Status receive(int &code, std::string &data, time_t deadline);
 
-    void closeAll();
+       void closeAll();
 
-  protected:
+protected:
 
-    std::string toBinaryString(int data);
+       std::string toBinaryString(int data);
 
-    void closeHelp(int desc);
+       void closeHelp(int desc);
 
-    Status writeHelp(const void *buffer, int size);
+       Status writeHelp(const void *buffer, int size);
 
-    Status readHelp(void *buf, int size, time_t deadline);
+       Status readHelp(void *buf, int size, time_t deadline);
 
-    static const int PIPE_CLOSED = -1;
+       static const int PIPE_CLOSED = -1;
 
-    int m_pipefd[2];
+       int m_pipefd[2];
 };
 
 void RunChildProc(TestRunner::TestCase procChild);
@@ -75,17 +74,17 @@ void RunChildProc(TestRunner::TestCase procChild);
 } // namespace VcoreDPL
 
 #define RUNNER_CHILD_TEST(Proc)                                                      \
-    void Proc();                                                                     \
-    void Proc##Child();                                                              \
-    static int Static##Proc##Init()                                                  \
-    {                                                                                \
-        VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);       \
-        return 0;                                                                    \
-    }                                                                                \
-    const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();               \
-    void Proc(){                                                                     \
-        VcoreDPL::Test::RunChildProc(&Proc##Child);                                       \
-    }                                                                                \
-    void Proc##Child()
+       void Proc();                                                                     \
+       void Proc##Child();                                                              \
+       static int Static##Proc##Init()                                                  \
+       {                                                                                \
+               VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);       \
+               return 0;                                                                    \
+       }                                                                                \
+       const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();               \
+       void Proc(){                                                                     \
+               VcoreDPL::Test::RunChildProc(&Proc##Child);                                       \
+       }                                                                                \
+       void Proc##Child()
 
 #endif // DPL_TEST_RUNNER_CHILD_H
index 3fbf6f7..af31bbb 100644 (file)
@@ -28,15 +28,14 @@ namespace VcoreDPL {
 namespace Test {
 
 class SimplePipeWrapper :
-        public PipeWrapper
-{
-  public:
-    SimplePipeWrapper();
+       public PipeWrapper {
+public:
+       SimplePipeWrapper();
 
-    virtual ~SimplePipeWrapper();
+       virtual ~SimplePipeWrapper();
 
-    Status send(std::string &message);
-    Status receive(std::string &data, bool &empty, time_t deadline);
+       Status send(std::string &message);
+       Status receive(std::string &data, bool &empty, time_t deadline);
 };
 
 void RunMultiProc(TestRunner::TestCase procMulti);
@@ -44,17 +43,17 @@ void RunMultiProc(TestRunner::TestCase procMulti);
 } // namespace VcoreDPL
 
 #define RUNNER_MULTIPROCESS_TEST(Proc)                                               \
-    void Proc();                                                                     \
-    void Proc##Multi();                                                              \
-    static int Static##Proc##Init()                                                  \
-    {                                                                                \
-        VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);       \
-        return 0;                                                                    \
-    }                                                                                \
-    const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();               \
-    void Proc(){                                                                     \
-        VcoreDPL::Test::RunMultiProc(&Proc##Multi);                                       \
-    }                                                                                \
-    void Proc##Multi()
+       void Proc();                                                                     \
+       void Proc##Multi();                                                              \
+       static int Static##Proc##Init()                                                  \
+       {                                                                                \
+               VcoreDPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc);       \
+               return 0;                                                                    \
+       }                                                                                \
+       const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init();               \
+       void Proc(){                                                                     \
+               VcoreDPL::Test::RunMultiProc(&Proc##Multi);                                       \
+       }                                                                                \
+       void Proc##Multi()
 
 #endif // DPL_TEST_RUNNER_MULTIPROCESS_H
index d679610..63c483b 100644 (file)
@@ -48,45 +48,41 @@ typedef std::shared_ptr<VSResult> VSResultPtr;
  * };
  */
 template<class ParserPolicy>
-class VSParser : public AbstractInputParser<VSResultPtr, VSToken>
-{
+class VSParser : public AbstractInputParser<VSResultPtr, VSToken> {
 public:
-    VSParser() : m_switchLine(true), m_result(new VSResult()) {}
+       VSParser() : m_switchLine(true), m_result(new VSResult()) {}
 
-    void ConsumeToken(std::unique_ptr<VSToken> && token)
-    {
-        if(m_switchLine)
-        {
-            m_result->push_back(VSLine());
-            m_switchLine = false;
-        }
-        if(token->isNewLine())
-        {
-            if(ParserPolicy::SkipLine(*m_result->rbegin()))
-            {
-                m_result->pop_back();
-            }
-            m_switchLine = true;
-        }
-        else
-        {
-            m_result->rbegin()->push_back(token->cell());
-        }
-    }
+       void ConsumeToken(std::unique_ptr<VSToken> &&token)
+       {
+               if (m_switchLine) {
+                       m_result->push_back(VSLine());
+                       m_switchLine = false;
+               }
 
-    bool IsStateValid()
-    {
-        return ParserPolicy::Validate(m_result);
-    }
+               if (token->isNewLine()) {
+                       if (ParserPolicy::SkipLine(*m_result->rbegin())) {
+                               m_result->pop_back();
+                       }
 
-    VSResultPtr GetResult() const
-    {
-        return m_result;
-    }
+                       m_switchLine = true;
+               } else {
+                       m_result->rbegin()->push_back(token->cell());
+               }
+       }
+
+       bool IsStateValid()
+       {
+               return ParserPolicy::Validate(m_result);
+       }
+
+       VSResultPtr GetResult() const
+       {
+               return m_result;
+       }
 
 private:
-    bool m_switchLine;
-    VSResultPtr m_result;
+       bool m_switchLine;
+       VSResultPtr m_result;
 };
 
 }
index 7c758a0..35e31a6 100644 (file)
 
 namespace VcoreDPL {
 
-struct CSVTokenizerPolicy
-{
-    static std::string GetSeperators();      //cells in line are separated by given characters
-    static bool SkipEmpty();                 //if cell is empty, shoudl I skip?
-    static void PrepareValue(std::string &); //transform each value
-    static bool TryAgainAtEnd(int);          //read is nonblocking so dat may not be yet available, should I retry?
+struct CSVTokenizerPolicy {
+       static std::string GetSeperators();      //cells in line are separated by given characters
+       static bool SkipEmpty();                 //if cell is empty, shoudl I skip?
+       static void PrepareValue(std::string &); //transform each value
+       static bool TryAgainAtEnd(
+               int);          //read is nonblocking so dat may not be yet available, should I retry?
 };
 
-struct CSVParserPolicy
-{
-    static bool SkipLine(const std::vector<std::string> & );                                  //should I skip whole readline?
-    static bool Validate(std::shared_ptr<std::vector<std::vector<std::string> > > & result);  //validate and adjust output data
+struct CSVParserPolicy {
+       static bool SkipLine(const std::vector<std::string>
+                                                &);                                   //should I skip whole readline?
+       static bool Validate(std::shared_ptr<std::vector<std::vector<std::string>>>
+                                                &result);   //validate and adjust output data
 };
 
 }
index a85eb1e..36e255f 100644 (file)
@@ -46,14 +46,13 @@ namespace VcoreDPL {
  *
  */
 template<class ParserPolicy, class TokenizerPolicy>
-class VSReader : public AbstractInputReader<VSResultPtr, VSToken>
-{
+class VSReader : public AbstractInputReader<VSResultPtr, VSToken> {
 public:
-    VSReader(std::shared_ptr<AbstractInput> wia)
-        : AbstractInputReader<VSResultPtr, VSToken>(wia,
-                std::unique_ptr<ParserBase>(new VSParser<ParserPolicy>()),
-                std::unique_ptr<TokenizerBase>(new VSTokenizer<TokenizerPolicy>()))
-    {}
+       VSReader(std::shared_ptr<AbstractInput> wia)
+               : AbstractInputReader<VSResultPtr, VSToken>(wia,
+                               std::unique_ptr<ParserBase>(new VSParser<ParserPolicy>()),
+                               std::unique_ptr<TokenizerBase>(new VSTokenizer<TokenizerPolicy>()))
+       {}
 };
 
 typedef VSReader<CSVParserPolicy, CSVTokenizerPolicy> CSVReader;
index d45823f..4141505 100644 (file)
@@ -42,106 +42,97 @@ namespace VcoreDPL {
  * };
  */
 template<class TokenizerPolicy>
-class VSTokenizer : public AbstractInputTokenizer<VSToken>
-{
+class VSTokenizer : public AbstractInputTokenizer<VSToken> {
 public:
-    VSTokenizer() {}
-
-    void Reset(std::shared_ptr<AbstractInput> ia)
-    {
-        AbstractInputTokenizer<VSToken>::Reset(ia);
-        m_queue.Clear();
-        m_finished = false;
-        m_newline = false;
-    }
-
-    std::unique_ptr<VSToken> GetNextToken()
-    {
-        std::unique_ptr<VSToken> token;
-        std::string data;
-        char byte;
-        int tryNumber = 0;
-
-        while(true)
-        {
-            //check if newline was approched
-            if(m_newline)
-            {
-                token.reset(new VSToken());
-                m_newline = false;
-                return token;
-            }
-
-            //read next data
-            if(m_queue.Empty())
-            {
-                if(m_finished)
-                {
-                    return token;
-                }
-                else
-                {
-                    auto baptr = m_input->Read(4096);
-                    if(baptr.get() == 0)
-                    {
-                        ThrowMsg(Exception::TokenizerError, "Input read failed");
-                    }
-                    if(baptr->Empty())
-                    {
-                        if(TokenizerPolicy::TryAgainAtEnd(tryNumber))
-                        {
-                            ++tryNumber;
-                            continue;
-                        }
-                        m_finished = true;
-                        return token;
-                    }
-                    m_queue.AppendMoveFrom(*baptr);
-                }
-            }
-
-            //process
-            m_queue.FlattenConsume(&byte, 1); //queue uses pointer to consume bytes, this do not causes reallocations
-            if(byte == '\n')
-            {
-                m_newline = true;
-                if(!data.empty() || !TokenizerPolicy::SkipEmpty())
-                {
-                    ProduceString(token, data);
-                    return token;
-                }
-            }
-            else if(TokenizerPolicy::GetSeperators().find(byte) != std::string::npos)
-            {
-                if(!data.empty() || !TokenizerPolicy::SkipEmpty())
-                {
-                    ProduceString(token, data);
-                    return token;
-                }
-            }
-            else
-            {
-                data += byte;
-            }
-        }
-    }
-
-    bool IsStateValid()
-    {
-        if(!m_queue.Empty() && m_finished) return false;
-        return true;
-    }
+       VSTokenizer() {}
+
+       void Reset(std::shared_ptr<AbstractInput> ia)
+       {
+               AbstractInputTokenizer<VSToken>::Reset(ia);
+               m_queue.Clear();
+               m_finished = false;
+               m_newline = false;
+       }
+
+       std::unique_ptr<VSToken> GetNextToken()
+       {
+               std::unique_ptr<VSToken> token;
+               std::string data;
+               char byte;
+               int tryNumber = 0;
+
+               while (true) {
+                       //check if newline was approched
+                       if (m_newline) {
+                               token.reset(new VSToken());
+                               m_newline = false;
+                               return token;
+                       }
+
+                       //read next data
+                       if (m_queue.Empty()) {
+                               if (m_finished) {
+                                       return token;
+                               } else {
+                                       auto baptr = m_input->Read(4096);
+
+                                       if (baptr.get() == 0) {
+                                               ThrowMsg(Exception::TokenizerError, "Input read failed");
+                                       }
+
+                                       if (baptr->Empty()) {
+                                               if (TokenizerPolicy::TryAgainAtEnd(tryNumber)) {
+                                                       ++tryNumber;
+                                                       continue;
+                                               }
+
+                                               m_finished = true;
+                                               return token;
+                                       }
+
+                                       m_queue.AppendMoveFrom(*baptr);
+                               }
+                       }
+
+                       //process
+                       m_queue.FlattenConsume(&byte,
+                                                                  1); //queue uses pointer to consume bytes, this do not causes reallocations
+
+                       if (byte == '\n') {
+                               m_newline = true;
+
+                               if (!data.empty() || !TokenizerPolicy::SkipEmpty()) {
+                                       ProduceString(token, data);
+                                       return token;
+                               }
+                       } else if (TokenizerPolicy::GetSeperators().find(byte) != std::string::npos) {
+                               if (!data.empty() || !TokenizerPolicy::SkipEmpty()) {
+                                       ProduceString(token, data);
+                                       return token;
+                               }
+                       } else {
+                               data += byte;
+                       }
+               }
+       }
+
+       bool IsStateValid()
+       {
+               if (!m_queue.Empty() && m_finished) return false;
+
+               return true;
+       }
 
 protected:
-    void ProduceString(std::unique_ptr<VSToken> & token, std::string & data)
-    {
-        TokenizerPolicy::PrepareValue(data);
-        token.reset(new VSToken(data));
-    }
-
-    BinaryQueue m_queue;
-    bool m_finished;
-    bool m_newline;
+       void ProduceString(std::unique_ptr<VSToken> &token, std::string &data)
+       {
+               TokenizerPolicy::PrepareValue(data);
+               token.reset(new VSToken(data));
+       }
+
+       BinaryQueue m_queue;
+       bool m_finished;
+       bool m_newline;
 };
 
 }
index f0e9938..0772fe6 100644 (file)
 
 namespace VcoreDPL {
 
-class VSToken
-{
+class VSToken {
 public:
-    VSToken(const std::string & c);
-    VSToken(); //newline token - no new class to simplify
-    const std::string & cell() const;
+       VSToken(const std::string &c);
+       VSToken(); //newline token - no new class to simplify
+       const std::string &cell() const;
 
-    bool isNewLine();
+       bool isNewLine();
 private:
-    bool m_newline;
-    std::string m_cell;
+       bool m_newline;
+       std::string m_cell;
 };
 
 }
index 74c41f3..4aaec88 100644 (file)
 
 namespace VcoreDPL {
 void AssertProc(const char *condition,
-                const char *file,
-                int line,
-                const char *function)
+                               const char *file,
+                               int line,
+                               const char *function)
 {
-
 #define INTERNAL_LOG(message)          \
-do {                                   \
-    std::cerr << message << std::endl; \
-} while (0)
-
-    // Try to log failed assertion to log system
-    Try {
-        INTERNAL_LOG("########################################################################");
-        INTERNAL_LOG("###                      DPL assertion failed!                       ###");
-        INTERNAL_LOG("########################################################################");
-        INTERNAL_LOG("### Condition: " << condition);
-        INTERNAL_LOG("### File: " << file);
-        INTERNAL_LOG("### Line: " << line);
-        INTERNAL_LOG("### Function: " << function);
-        INTERNAL_LOG("########################################################################");
-    } catch (Exception) {
-        // Just ignore possible double errors
-    }
+       do {                                   \
+               std::cerr << message << std::endl; \
+       } while (0)
+       // Try to log failed assertion to log system
+       Try {
+               INTERNAL_LOG("########################################################################");
+               INTERNAL_LOG("###                      DPL assertion failed!                       ###");
+               INTERNAL_LOG("########################################################################");
+               INTERNAL_LOG("### Condition: " << condition);
+               INTERNAL_LOG("### File: " << file);
+               INTERNAL_LOG("### Line: " << line);
+               INTERNAL_LOG("### Function: " << function);
+               INTERNAL_LOG("########################################################################");
+       } catch (Exception) {
+               // Just ignore possible double errors
+       }
 
-    // Fail with c-library abort
-    abort();
+       // Fail with c-library abort
+       abort();
 }
 } // namespace VcoreDPL
index 0b39a22..7c30207 100644 (file)
 
 namespace VcoreDPL {
 BinaryQueue::BinaryQueue() :
-    m_size(0)
+       m_size(0)
 {}
 
 BinaryQueue::BinaryQueue(const BinaryQueue &other) :
-    m_size(0)
+       m_size(0)
 {
-    AppendCopyFrom(other);
+       AppendCopyFrom(other);
 }
 
 BinaryQueue::~BinaryQueue()
 {
-    // Remove all remainig buckets
-    Clear();
+       // Remove all remainig buckets
+       Clear();
 }
 
 BinaryQueue &BinaryQueue::operator=(const BinaryQueue &other)
 {
-    if (this != &other) {
-        Clear();
-        AppendCopyFrom(other);
-    }
+       if (this != &other) {
+               Clear();
+               AppendCopyFrom(other);
+       }
 
-    return *this;
+       return *this;
 }
 
 void BinaryQueue::AppendCopyFrom(const BinaryQueue &other)
 {
-    // To speed things up, always copy as one bucket
-    void *bufferCopy = malloc(other.m_size);
-
-    if (bufferCopy == NULL) {
-        throw std::bad_alloc();
-    }
-
-    try {
-        other.Flatten(bufferCopy, other.m_size);
-        AppendUnmanaged(bufferCopy, other.m_size, &BufferDeleterFree, NULL);
-    } catch (const std::bad_alloc &) {
-        // Free allocated memory
-        free(bufferCopy);
-        throw;
-    }
+       // To speed things up, always copy as one bucket
+       void *bufferCopy = malloc(other.m_size);
+
+       if (bufferCopy == NULL) {
+               throw std::bad_alloc();
+       }
+
+       try {
+               other.Flatten(bufferCopy, other.m_size);
+               AppendUnmanaged(bufferCopy, other.m_size, &BufferDeleterFree, NULL);
+       } catch (const std::bad_alloc &) {
+               // Free allocated memory
+               free(bufferCopy);
+               throw;
+       }
 }
 
 void BinaryQueue::AppendMoveFrom(BinaryQueue &other)
 {
-    // Copy all buckets
-    std::copy(other.m_buckets.begin(),
-              other.m_buckets.end(), std::back_inserter(m_buckets));
-    m_size += other.m_size;
-
-    // Clear other, but do not free memory
-    other.m_buckets.clear();
-    other.m_size = 0;
+       // Copy all buckets
+       std::copy(other.m_buckets.begin(),
+                         other.m_buckets.end(), std::back_inserter(m_buckets));
+       m_size += other.m_size;
+       // Clear other, but do not free memory
+       other.m_buckets.clear();
+       other.m_size = 0;
 }
 
 void BinaryQueue::AppendCopyTo(BinaryQueue &other) const
 {
-    other.AppendCopyFrom(*this);
+       other.AppendCopyFrom(*this);
 }
 
 void BinaryQueue::AppendMoveTo(BinaryQueue &other)
 {
-    other.AppendMoveFrom(*this);
+       other.AppendMoveFrom(*this);
 }
 
 void BinaryQueue::Clear()
 {
-    std::for_each(m_buckets.begin(), m_buckets.end(), &DeleteBucket);
-    m_buckets.clear();
-    m_size = 0;
+       std::for_each(m_buckets.begin(), m_buckets.end(), &DeleteBucket);
+       m_buckets.clear();
+       m_size = 0;
 }
 
-void BinaryQueue::AppendCopy(const voidbuffer, size_t bufferSize)
+void BinaryQueue::AppendCopy(const void *buffer, size_t bufferSize)
 {
-    // Create data copy with malloc/free
-    void *bufferCopy = malloc(bufferSize);
-
-    // Check if allocation succeded
-    if (bufferCopy == NULL) {
-        throw std::bad_alloc();
-    }
-
-    // Copy user data
-    memcpy(bufferCopy, buffer, bufferSize);
-
-    try {
-        // Try to append new bucket
-        AppendUnmanaged(bufferCopy, bufferSize, &BufferDeleterFree, NULL);
-    } catch (const std::bad_alloc &) {
-        // Free allocated memory
-        free(bufferCopy);
-        throw;
-    }
+       // Create data copy with malloc/free
+       void *bufferCopy = malloc(bufferSize);
+
+       // Check if allocation succeded
+       if (bufferCopy == NULL) {
+               throw std::bad_alloc();
+       }
+
+       // Copy user data
+       memcpy(bufferCopy, buffer, bufferSize);
+
+       try {
+               // Try to append new bucket
+               AppendUnmanaged(bufferCopy, bufferSize, &BufferDeleterFree, NULL);
+       } catch (const std::bad_alloc &) {
+               // Free allocated memory
+               free(bufferCopy);
+               throw;
+       }
 }
 
-void BinaryQueue::AppendUnmanaged(const voidbuffer,
-                                  size_t bufferSize,
-                                  BufferDeleter deleter,
-                                  void* userParam)
+void BinaryQueue::AppendUnmanaged(const void *buffer,
+                                                                 size_t bufferSize,
+                                                                 BufferDeleter deleter,
+                                                                 void *userParam)
 {
-    // Do not attach empty buckets
-    if (bufferSize == 0) {
-        deleter(buffer, bufferSize, userParam);
-        return;
-    }
-
-    // Just add new bucket with selected deleter
-    m_buckets.push_back(new Bucket(buffer, bufferSize, deleter, userParam));
-
-    // Increase total queue size
-    m_size += bufferSize;
+       // Do not attach empty buckets
+       if (bufferSize == 0) {
+               deleter(buffer, bufferSize, userParam);
+               return;
+       }
+
+       // Just add new bucket with selected deleter
+       m_buckets.push_back(new Bucket(buffer, bufferSize, deleter, userParam));
+       // Increase total queue size
+       m_size += bufferSize;
 }
 
 size_t BinaryQueue::Size() const
 {
-    return m_size;
+       return m_size;
 }
 
 bool BinaryQueue::Empty() const
 {
-    return m_size == 0;
+       return m_size == 0;
 }
 
 void BinaryQueue::Consume(size_t size)
 {
-    // Check parameters
-    if (size > m_size) {
-        Throw(Exception::OutOfData);
-    }
-
-    size_t bytesLeft = size;
-
-    // Consume data and/or remove buckets
-    while (bytesLeft > 0) {
-        // Get consume size
-        size_t count = std::min(bytesLeft, m_buckets.front()->left);
-
-        m_buckets.front()->ptr =
-            static_cast<const char *>(m_buckets.front()->ptr) + count;
-        m_buckets.front()->left -= count;
-        bytesLeft -= count;
-        m_size -= count;
-
-        if (m_buckets.front()->left == 0) {
-            DeleteBucket(m_buckets.front());
-            m_buckets.pop_front();
-        }
-    }
+       // Check parameters
+       if (size > m_size) {
+               Throw(Exception::OutOfData);
+       }
+
+       size_t bytesLeft = size;
+
+       // Consume data and/or remove buckets
+       while (bytesLeft > 0) {
+               // Get consume size
+               size_t count = std::min(bytesLeft, m_buckets.front()->left);
+               m_buckets.front()->ptr =
+                       static_cast<const char *>(m_buckets.front()->ptr) + count;
+               m_buckets.front()->left -= count;
+               bytesLeft -= count;
+               m_size -= count;
+
+               if (m_buckets.front()->left == 0) {
+                       DeleteBucket(m_buckets.front());
+                       m_buckets.pop_front();
+               }
+       }
 }
 
 void BinaryQueue::Flatten(void *buffer, size_t bufferSize) const
 {
-    // Check parameters
-    if (bufferSize == 0) {
-        return;
-    }
-
-    if (bufferSize > m_size) {
-        Throw(Exception::OutOfData);
-    }
-
-    size_t bytesLeft = bufferSize;
-    void *ptr = buffer;
-    BucketList::const_iterator bucketIterator = m_buckets.begin();
-    Assert(m_buckets.end() != bucketIterator);
-
-    // Flatten data
-    while (bytesLeft > 0) {
-        // Get consume size
-        size_t count = std::min(bytesLeft, (*bucketIterator)->left);
-
-        // Copy data to user pointer
-        memcpy(ptr, (*bucketIterator)->ptr, count);
-
-        // Update flattened bytes count
-        bytesLeft -= count;
-        ptr = static_cast<char *>(ptr) + count;
-
-        // Take next bucket
-        ++bucketIterator;
-    }
+       // Check parameters
+       if (bufferSize == 0) {
+               return;
+       }
+
+       if (bufferSize > m_size) {
+               Throw(Exception::OutOfData);
+       }
+
+       size_t bytesLeft = bufferSize;
+       void *ptr = buffer;
+       BucketList::const_iterator bucketIterator = m_buckets.begin();
+       Assert(m_buckets.end() != bucketIterator);
+
+       // Flatten data
+       while (bytesLeft > 0) {
+               // Get consume size
+               size_t count = std::min(bytesLeft, (*bucketIterator)->left);
+               // Copy data to user pointer
+               memcpy(ptr, (*bucketIterator)->ptr, count);
+               // Update flattened bytes count
+               bytesLeft -= count;
+               ptr = static_cast<char *>(ptr) + count;
+               // Take next bucket
+               ++bucketIterator;
+       }
 }
 
 void BinaryQueue::FlattenConsume(void *buffer, size_t bufferSize)
 {
-    // FIXME: Optimize
-    Flatten(buffer, bufferSize);
-    Consume(bufferSize);
+       // FIXME: Optimize
+       Flatten(buffer, bufferSize);
+       Consume(bufferSize);
 }
 
 void BinaryQueue::DeleteBucket(BinaryQueue::Bucket *bucket)
 {
-    delete bucket;
+       delete bucket;
 }
 
-void BinaryQueue::BufferDeleterFree(const voiddata,
-                                    size_t dataSize,
-                                    void* userParam)
+void BinaryQueue::BufferDeleterFree(const void *data,
+                                                                       size_t dataSize,
+                                                                       void *userParam)
 {
-    (void)dataSize;
-    (void)userParam;
-
-    // Default free deleter
-    free(const_cast<void *>(data));
+       (void)dataSize;
+       (void)userParam;
+       // Default free deleter
+       free(const_cast<void *>(data));
 }
 
-BinaryQueue::Bucket::Bucket(const voiddata,
-                            size_t dataSize,
-                            BufferDeleter dataDeleter,
-                            void* userParam) :
-    buffer(data),
-    ptr(data),
-    size(dataSize),
-    left(dataSize),
-    deleter(dataDeleter),
-    param(userParam)
+BinaryQueue::Bucket::Bucket(const void *data,
+                                                       size_t dataSize,
+                                                       BufferDeleter dataDeleter,
+                                                       void *userParam) :
+       buffer(data),
+       ptr(data),
+       size(dataSize),
+       left(dataSize),
+       deleter(dataDeleter),
+       param(userParam)
 {
-    Assert(data != NULL);
-    Assert(deleter != NULL);
+       Assert(data != NULL);
+       Assert(deleter != NULL);
 }
 
 BinaryQueue::Bucket::~Bucket()
 {
-    // Invoke deleter on bucket data
-    deleter(buffer, size, param);
+       // Invoke deleter on bucket data
+       deleter(buffer, size, param);
 }
 
 BinaryQueue::BucketVisitor::~BucketVisitor()
 {}
 
 BinaryQueue::BucketVisitorCall::BucketVisitorCall(BucketVisitor *visitor) :
-    m_visitor(visitor)
+       m_visitor(visitor)
 {}
 
 BinaryQueue::BucketVisitorCall::~BucketVisitorCall()
@@ -270,43 +263,39 @@ BinaryQueue::BucketVisitorCall::~BucketVisitorCall()
 
 void BinaryQueue::BucketVisitorCall::operator()(Bucket *bucket) const
 {
-    m_visitor->OnVisitBucket(bucket->ptr, bucket->left);
+       m_visitor->OnVisitBucket(bucket->ptr, bucket->left);
 }
 
 void BinaryQueue::VisitBuckets(BucketVisitor *visitor) const
 {
-    Assert(visitor != NULL);
-
-    // Visit all buckets
-    std::for_each(m_buckets.begin(), m_buckets.end(), BucketVisitorCall(visitor));
+       Assert(visitor != NULL);
+       // Visit all buckets
+       std::for_each(m_buckets.begin(), m_buckets.end(), BucketVisitorCall(visitor));
 }
 
 BinaryQueueAutoPtr BinaryQueue::Read(size_t size)
 {
-    // Simulate input stream
-    size_t available = std::min(size, m_size);
-
-    ScopedFree<void> bufferCopy(malloc(available));
-
-    if (!bufferCopy) {
-        throw std::bad_alloc();
-    }
-
-    BinaryQueueAutoPtr result(new BinaryQueue());
-
-    Flatten(bufferCopy.Get(), available);
-    result->AppendUnmanaged(
-        bufferCopy.Get(), available, &BufferDeleterFree, NULL);
-    bufferCopy.Release();
-    Consume(available);
-
-    return result;
+       // Simulate input stream
+       size_t available = std::min(size, m_size);
+       ScopedFree<void> bufferCopy(malloc(available));
+
+       if (!bufferCopy) {
+               throw std::bad_alloc();
+       }
+
+       BinaryQueueAutoPtr result(new BinaryQueue());
+       Flatten(bufferCopy.Get(), available);
+       result->AppendUnmanaged(
+               bufferCopy.Get(), available, &BufferDeleterFree, NULL);
+       bufferCopy.Release();
+       Consume(available);
+       return result;
 }
 
 size_t BinaryQueue::Write(const BinaryQueue &buffer, size_t bufferSize)
 {
-    // Simulate output stream
-    AppendCopyFrom(buffer);
-    return bufferSize;
+       // Simulate output stream
+       AppendCopyFrom(buffer);
+       return bufferSize;
 }
 } // namespace VcoreDPL
index e918453..2ec2749 100644 (file)
 namespace VcoreDPL {
 namespace Colors {
 namespace Text {
-const charBOLD_GREEN_BEGIN = "\033[1;32m";
-const charBOLD_GREEN_END = "\033[m";
-const charRED_BEGIN = "\033[0;31m";
-const charRED_END = "\033[m";
-const charPURPLE_BEGIN = "\033[0;35m";
-const charPURPLE_END = "\033[m";
-const charGREEN_BEGIN = "\033[0;32m";
-const charGREEN_END = "\033[m";
-const charCYAN_BEGIN = "\033[0;36m";
-const charCYAN_END = "\033[m";
-const charBOLD_RED_BEGIN = "\033[1;31m";
-const charBOLD_RED_END = "\033[m";
-const charBOLD_YELLOW_BEGIN = "\033[1;33m";
-const charBOLD_YELLOW_END = "\033[m";
-const charBOLD_GOLD_BEGIN = "\033[0;33m";
-const charBOLD_GOLD_END = "\033[m";
-const charBOLD_WHITE_BEGIN = "\033[1;37m";
-const charBOLD_WHITE_END = "\033[m";
+const char *BOLD_GREEN_BEGIN = "\033[1;32m";
+const char *BOLD_GREEN_END = "\033[m";
+const char *RED_BEGIN = "\033[0;31m";
+const char *RED_END = "\033[m";
+const char *PURPLE_BEGIN = "\033[0;35m";
+const char *PURPLE_END = "\033[m";
+const char *GREEN_BEGIN = "\033[0;32m";
+const char *GREEN_END = "\033[m";
+const char *CYAN_BEGIN = "\033[0;36m";
+const char *CYAN_END = "\033[m";
+const char *BOLD_RED_BEGIN = "\033[1;31m";
+const char *BOLD_RED_END = "\033[m";
+const char *BOLD_YELLOW_BEGIN = "\033[1;33m";
+const char *BOLD_YELLOW_END = "\033[m";
+const char *BOLD_GOLD_BEGIN = "\033[0;33m";
+const char *BOLD_GOLD_END = "\033[m";
+const char *BOLD_WHITE_BEGIN = "\033[1;37m";
+const char *BOLD_WHITE_END = "\033[m";
 } //namespace Text
 
 namespace Html {
-const charBOLD_GREEN_BEGIN = "<font color=\"green\"><b>";
-const charBOLD_GREEN_END = "</b></font>";
-const charPURPLE_BEGIN = "<font color=\"purple\"><b>";
-const charPURPLE_END = "</b></font>";
-const charRED_BEGIN = "<font color=\"red\"><b>";
-const charRED_END = "</b></font>";
-const charGREEN_BEGIN = "<font color=\"green\">";
-const charGREEN_END = "</font>";
-const charCYAN_BEGIN = "<font color=\"cyan\">";
-const charCYAN_END = "</font>";
-const charBOLD_RED_BEGIN = "<font color=\"red\"><b>";
-const charBOLD_RED_END = "</b></font>";
-const charBOLD_YELLOW_BEGIN = "<font color=\"yellow\"><b>";
-const charBOLD_YELLOW_END = "</b></font>";
-const charBOLD_GOLD_BEGIN = "<font color=\"gold\"><b>";
-const charBOLD_GOLD_END = "</b></font>";
-const charBOLD_WHITE_BEGIN = "<font color=\"white\"><b>";
-const charBOLD_WHITE_END = "</b></font>";
+const char *BOLD_GREEN_BEGIN = "<font color=\"green\"><b>";
+const char *BOLD_GREEN_END = "</b></font>";
+const char *PURPLE_BEGIN = "<font color=\"purple\"><b>";
+const char *PURPLE_END = "</b></font>";
+const char *RED_BEGIN = "<font color=\"red\"><b>";
+const char *RED_END = "</b></font>";
+const char *GREEN_BEGIN = "<font color=\"green\">";
+const char *GREEN_END = "</font>";
+const char *CYAN_BEGIN = "<font color=\"cyan\">";
+const char *CYAN_END = "</font>";
+const char *BOLD_RED_BEGIN = "<font color=\"red\"><b>";
+const char *BOLD_RED_END = "</b></font>";
+const char *BOLD_YELLOW_BEGIN = "<font color=\"yellow\"><b>";
+const char *BOLD_YELLOW_END = "</b></font>";
+const char *BOLD_GOLD_BEGIN = "<font color=\"gold\"><b>";
+const char *BOLD_GOLD_END = "</b></font>";
+const char *BOLD_WHITE_BEGIN = "<font color=\"white\"><b>";
+const char *BOLD_WHITE_END = "</b></font>";
 } //namespace Html
 } //namespace Colors
 } //namespace VcoreDPL
index c4efc4d..d248b34 100644 (file)
 #include <stdexcept>
 
 namespace VcoreDPL {
-namespace // anonymous
-{
+namespace { // anonymous
 const size_t DEFAULT_ERRNO_STRING_SIZE = 32;
 } // namespace anonymous
 
 std::string GetErrnoString(int error)
 {
-    size_t size = DEFAULT_ERRNO_STRING_SIZE;
-    char *buffer = NULL;
-
-    for (;;) {
-        // Add one extra characted for end of string null value
-        char *newBuffer = static_cast<char *>(::realloc(buffer, size + 1));
+       size_t size = DEFAULT_ERRNO_STRING_SIZE;
+       char *buffer = NULL;
 
-        if (!newBuffer) {
-            // Failed to realloc
-            ::free(buffer);
-            throw std::bad_alloc();
-        }
+       for (;;) {
+               // Add one extra characted for end of string null value
+               char *newBuffer = static_cast<char *>(::realloc(buffer, size + 1));
 
-        // Setup reallocated buffer
-        buffer = newBuffer;
-        ::memset(buffer, 0, size + 1);
+               if (!newBuffer) {
+                       // Failed to realloc
+                       ::free(buffer);
+                       throw std::bad_alloc();
+               }
 
-        // Try to retrieve error string
+               // Setup reallocated buffer
+               buffer = newBuffer;
+               ::memset(buffer, 0, size + 1);
+               // Try to retrieve error string
 #if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE
-        // The XSI-compliant version of strerror_r() is provided if:
-        int result = ::strerror_r(error, buffer, size);
+               // The XSI-compliant version of strerror_r() is provided if:
+               int result = ::strerror_r(error, buffer, size);
+
+               if (result == 0) {
+                       ScopedFree<char> scopedBufferFree(buffer);
+                       return std::string(buffer);
+               }
 
-        if (result == 0) {
-            ScopedFree<char> scopedBufferFree(buffer);
-            return std::string(buffer);
-        }
 #else
-        errno = 0;
+               errno = 0;
+               // Otherwise, the GNU-specific version is provided.
+               char *result = ::strerror_r(error, buffer, size);
 
-        // Otherwise, the GNU-specific version is provided.
-        char *result = ::strerror_r(error, buffer, size);
+               if (result != NULL) {
+                       ScopedFree<char> scopedBufferFree(buffer);
+                       return std::string(result);
+               }
 
-        if (result != NULL) {
-            ScopedFree<char> scopedBufferFree(buffer);
-            return std::string(result);
-        }
 #endif
 
-        // Interpret errors
-        switch (errno) {
-        case EINVAL:
-            // We got an invalid errno value
-                ::free(buffer);
-            ThrowMsg(InvalidErrnoValue, "Invalid errno value: " << error);
+               // Interpret errors
+               switch (errno) {
+               case EINVAL:
+                       // We got an invalid errno value
+                       ::free(buffer);
+                       ThrowMsg(InvalidErrnoValue, "Invalid errno value: " << error);
 
-        case ERANGE:
-            // Incease buffer size and retry
-            size <<= 1;
-            continue;
+               case ERANGE:
+                       // Incease buffer size and retry
+                       size <<= 1;
+                       continue;
 
-        default:
-            AssertMsg(0, "Invalid errno value after call to strerror_r!");
-        }
-    }
+               default:
+                       AssertMsg(0, "Invalid errno value after call to strerror_r!");
+               }
+       }
 }
 } // namespace VcoreDPL
index c12e794..acbdd7f 100644 (file)
 #include <iostream>
 
 namespace VcoreDPL {
-ExceptionException::m_lastException = NULL;
+Exception *Exception::m_lastException = NULL;
 unsigned int Exception::m_exceptionCount = 0;
 void (*Exception::m_terminateHandler)() = NULL;
 
 void LogUnhandledException(const std::string &str)
 {
-    std::cerr << str << std::endl;
+       std::cerr << str << std::endl;
 }
 
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function)
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function)
 {
-    std::cerr << "Exception occured on file[" << filename
-        << "] line[" << line
-        << "] function[" << function
-        << "] msg[" << str << "]" << std::endl;
+       std::cerr << "Exception occured on file[" << filename
+                         << "] line[" << line
+                         << "] function[" << function
+                         << "] msg[" << str << "]" << std::endl;
 }
 } // namespace VcoreDPL
index e9fc15b..c332cbf 100644 (file)
@@ -38,7 +38,7 @@
 #include <cstdlib>
 
 #define GREEN_RESULT_OK "[%s%s%s]\n", BOLD_GREEN_BEGIN, "   OK   ", \
-    BOLD_GREEN_END
+       BOLD_GREEN_END
 
 namespace VcoreDPL {
 namespace Test {
@@ -49,934 +49,979 @@ const char *DEFAULT_XML_FILE_NAME = "results.xml";
 
 bool ParseCollectorFileArg(const std::string &arg, std::string &filename)
 {
-    const std::string argname = "--file=";
-    if (arg.find(argname) == 0 ) {
-        filename = arg.substr(argname.size());
-        return true;
-    }
-    return false;
+       const std::string argname = "--file=";
+
+       if (arg.find(argname) == 0) {
+               filename = arg.substr(argname.size());
+               return true;
+       }
+
+       return false;
 }
 
-class Statistic
-{
-  public:
-    Statistic() :
-        m_failed(0),
-        m_ignored(0),
-        m_passed(0),
-        m_count(0)
-    {}
-
-    void AddTest(TestResultsCollectorBase::FailStatus::Type type)
-    {
-        ++m_count;
-        switch (type) {
-        case TestResultsCollectorBase::FailStatus::INTERNAL:
-        case TestResultsCollectorBase::FailStatus::FAILED:   ++m_failed;
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED:  ++m_ignored;
-            break;
-        case TestResultsCollectorBase::FailStatus::NONE:     ++m_passed;
-            break;
-        default:
-            Assert(false && "Bad FailStatus");
-        }
-    }
-
-    std::size_t GetTotal() const
-    {
-        return m_count;
-    }
-    std::size_t GetPassed() const
-    {
-        return m_passed;
-    }
-    std::size_t GetSuccesed() const
-    {
-        return m_passed;
-    }
-    std::size_t GetFailed() const
-    {
-        return m_failed;
-    }
-    std::size_t GetIgnored() const
-    {
-        return m_ignored;
-    }
-    float GetPassedOrIgnoredPercend() const
-    {
-        float passIgnoredPercent =
-            100.0f * (static_cast<float>(m_passed)
-                      + static_cast<float>(m_ignored))
-            / static_cast<float>(m_count);
-        return passIgnoredPercent;
-    }
-
-  private:
-    std::size_t m_failed;
-    std::size_t m_ignored;
-    std::size_t m_passed;
-    std::size_t m_count;
+class Statistic {
+public:
+       Statistic() :
+               m_failed(0),
+               m_ignored(0),
+               m_passed(0),
+               m_count(0)
+       {}
+
+       void AddTest(TestResultsCollectorBase::FailStatus::Type type)
+       {
+               ++m_count;
+
+               switch (type) {
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       ++m_failed;
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       ++m_ignored;
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       ++m_passed;
+                       break;
+
+               default:
+                       Assert(false && "Bad FailStatus");
+               }
+       }
+
+       std::size_t GetTotal() const
+       {
+               return m_count;
+       }
+       std::size_t GetPassed() const
+       {
+               return m_passed;
+       }
+       std::size_t GetSuccesed() const
+       {
+               return m_passed;
+       }
+       std::size_t GetFailed() const
+       {
+               return m_failed;
+       }
+       std::size_t GetIgnored() const
+       {
+               return m_ignored;
+       }
+       float GetPassedOrIgnoredPercend() const
+       {
+               float passIgnoredPercent =
+                       100.0f * (static_cast<float>(m_passed)
+                                         + static_cast<float>(m_ignored))
+                       / static_cast<float>(m_count);
+               return passIgnoredPercent;
+       }
+
+private:
+       std::size_t m_failed;
+       std::size_t m_ignored;
+       std::size_t m_passed;
+       std::size_t m_count;
 };
 
 class ConsoleCollector :
-    public TestResultsCollectorBase
-{
-  public:
-    static TestResultsCollectorBase* Constructor();
-
-  private:
-    ConsoleCollector() {}
-
-    virtual void CollectCurrentTestGroupName(const std::string& name)
-    {
-        printf("Starting group %s\n", name.c_str());
-        m_currentGroup = name;
-    }
-
-    virtual void Finish()
-    {
-        using namespace VcoreDPL::Colors::Text;
-
-        // Show result
-        FOREACH(group, m_groupsStats) {
-            PrintStats(group->first, group->second);
-        }
-        PrintStats("All tests together", m_stats);
-    }
-
-    virtual void CollectResult(const std::string& id,
-                               const std::string& /*description*/,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "")
-    {
-        using namespace VcoreDPL::Colors::Text;
-        std::string tmp = "'" + id + "' ...";
-
-        printf("Running test case %-60s", tmp.c_str());
-        switch (status) {
-        case TestResultsCollectorBase::FailStatus::NONE:
-            printf(GREEN_RESULT_OK);
-            break;
-        case TestResultsCollectorBase::FailStatus::FAILED:
-            PrintfErrorMessage(" FAILED ", reason, true);
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED:
-            PrintfIgnoredMessage("Ignored ", reason, true);
-            break;
-        case TestResultsCollectorBase::FailStatus::INTERNAL:
-            PrintfErrorMessage("INTERNAL", reason, true);
-            break;
-        default:
-            Assert(false && "Bad status");
-        }
-        m_stats.AddTest(status);
-        m_groupsStats[m_currentGroup].AddTest(status);
-    }
-
-    void PrintfErrorMessage(const char* type,
-                            const std::string& message,
-                            bool verbosity)
-    {
-        using namespace VcoreDPL::Colors::Text;
-        if (verbosity) {
-            printf("[%s%s%s] %s%s%s\n",
-                   BOLD_RED_BEGIN,
-                   type,
-                   BOLD_RED_END,
-                   BOLD_YELLOW_BEGIN,
-                   message.c_str(),
-                   BOLD_YELLOW_END);
-        } else {
-            printf("[%s%s%s]\n",
-                   BOLD_RED_BEGIN,
-                   type,
-                   BOLD_RED_END);
-        }
-    }
-
-    void PrintfIgnoredMessage(const char* type,
-                              const std::string& message,
-                              bool verbosity)
-    {
-        using namespace VcoreDPL::Colors::Text;
-        if (verbosity) {
-            printf("[%s%s%s] %s%s%s\n",
-                   CYAN_BEGIN,
-                   type,
-                   CYAN_END,
-                   BOLD_GOLD_BEGIN,
-                   message.c_str(),
-                   BOLD_GOLD_END);
-        } else {
-            printf("[%s%s%s]\n",
-                   CYAN_BEGIN,
-                   type,
-                   CYAN_END);
-        }
-    }
-
-    void PrintStats(const std::string& title, const Statistic& stats)
-    {
-        using namespace VcoreDPL::Colors::Text;
-        printf("\n%sResults [%s]: %s\n", BOLD_GREEN_BEGIN,
-               title.c_str(), BOLD_GREEN_END);
-        printf("%s%s%3zu%s\n",
-               CYAN_BEGIN,
-               "Total tests:            ",
-               stats.GetTotal(),
-               CYAN_END);
-        printf("  %s%s%3zu%s\n",
-               CYAN_BEGIN,
-               "Succeeded:            ",
-               stats.GetPassed(),
-               CYAN_END);
-        printf("  %s%s%3zu%s\n",
-               CYAN_BEGIN,
-               "Failed:               ",
-               stats.GetFailed(),
-               CYAN_END);
-        printf("  %s%s%3zu%s\n",
-               CYAN_BEGIN,
-               "Ignored:              ",
-               stats.GetIgnored(),
-               CYAN_END);
-    }
-
-    Statistic m_stats;
-    std::map<std::string, Statistic> m_groupsStats;
-    std::string m_currentGroup;
+       public TestResultsCollectorBase {
+public:
+       static TestResultsCollectorBase *Constructor();
+
+private:
+       ConsoleCollector() {}
+
+       virtual void CollectCurrentTestGroupName(const std::string &name)
+       {
+               printf("Starting group %s\n", name.c_str());
+               m_currentGroup = name;
+       }
+
+       virtual void Finish()
+       {
+               using namespace VcoreDPL::Colors::Text;
+               // Show result
+               FOREACH(group, m_groupsStats) {
+                       PrintStats(group->first, group->second);
+               }
+               PrintStats("All tests together", m_stats);
+       }
+
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string & /*description*/,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "")
+       {
+               using namespace VcoreDPL::Colors::Text;
+               std::string tmp = "'" + id + "' ...";
+               printf("Running test case %-60s", tmp.c_str());
+
+               switch (status) {
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       printf(GREEN_RESULT_OK);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       PrintfErrorMessage(" FAILED ", reason, true);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       PrintfIgnoredMessage("Ignored ", reason, true);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+                       PrintfErrorMessage("INTERNAL", reason, true);
+                       break;
+
+               default:
+                       Assert(false && "Bad status");
+               }
+
+               m_stats.AddTest(status);
+               m_groupsStats[m_currentGroup].AddTest(status);
+       }
+
+       void PrintfErrorMessage(const char *type,
+                                                       const std::string &message,
+                                                       bool verbosity)
+       {
+               using namespace VcoreDPL::Colors::Text;
+
+               if (verbosity) {
+                       printf("[%s%s%s] %s%s%s\n",
+                                  BOLD_RED_BEGIN,
+                                  type,
+                                  BOLD_RED_END,
+                                  BOLD_YELLOW_BEGIN,
+                                  message.c_str(),
+                                  BOLD_YELLOW_END);
+               } else {
+                       printf("[%s%s%s]\n",
+                                  BOLD_RED_BEGIN,
+                                  type,
+                                  BOLD_RED_END);
+               }
+       }
+
+       void PrintfIgnoredMessage(const char *type,
+                                                         const std::string &message,
+                                                         bool verbosity)
+       {
+               using namespace VcoreDPL::Colors::Text;
+
+               if (verbosity) {
+                       printf("[%s%s%s] %s%s%s\n",
+                                  CYAN_BEGIN,
+                                  type,
+                                  CYAN_END,
+                                  BOLD_GOLD_BEGIN,
+                                  message.c_str(),
+                                  BOLD_GOLD_END);
+               } else {
+                       printf("[%s%s%s]\n",
+                                  CYAN_BEGIN,
+                                  type,
+                                  CYAN_END);
+               }
+       }
+
+       void PrintStats(const std::string &title, const Statistic &stats)
+       {
+               using namespace VcoreDPL::Colors::Text;
+               printf("\n%sResults [%s]: %s\n", BOLD_GREEN_BEGIN,
+                          title.c_str(), BOLD_GREEN_END);
+               printf("%s%s%3zu%s\n",
+                          CYAN_BEGIN,
+                          "Total tests:            ",
+                          stats.GetTotal(),
+                          CYAN_END);
+               printf("  %s%s%3zu%s\n",
+                          CYAN_BEGIN,
+                          "Succeeded:            ",
+                          stats.GetPassed(),
+                          CYAN_END);
+               printf("  %s%s%3zu%s\n",
+                          CYAN_BEGIN,
+                          "Failed:               ",
+                          stats.GetFailed(),
+                          CYAN_END);
+               printf("  %s%s%3zu%s\n",
+                          CYAN_BEGIN,
+                          "Ignored:              ",
+                          stats.GetIgnored(),
+                          CYAN_END);
+       }
+
+       Statistic m_stats;
+       std::map<std::string, Statistic> m_groupsStats;
+       std::string m_currentGroup;
 };
 
-TestResultsCollectorBaseConsoleCollector::Constructor()
+TestResultsCollectorBase *ConsoleCollector::Constructor()
 {
-    return new ConsoleCollector();
+       return new ConsoleCollector();
 }
 
 class HtmlCollector :
-    public TestResultsCollectorBase
-{
-  public:
-    static TestResultsCollectorBase* Constructor();
-
-  private:
-    HtmlCollector() : m_filename(DEFAULT_HTML_FILE_NAME) {}
-
-    virtual void CollectCurrentTestGroupName(const std::string& name)
-    {
-        fprintf(m_fp.Get(), "<b>Starting group %s", name.c_str());
-        m_currentGroup = name;
-    }
-
-    virtual bool Configure()
-    {
-        m_fp.Reset(fopen(m_filename.c_str(), "w"));
-        if (!m_fp)
-            return false;
-
-        return true;
-    }
-    virtual std::string CollectorSpecificHelp() const
-    {
-        return "--file=<filename> - name of file for output\n"
-               "                    default - index.html\n";
-    }
-
-    virtual void Start(int count)
-    {
-        DPL_UNUSED_PARAM(count);
-        AssertMsg(!!m_fp, "File handle must not be null");
-        fprintf(m_fp.Get(),
-                "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0"
-                "Transitional//EN\" "
-                "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
-                ">\n");
-        fprintf(m_fp.Get(),
-                "<html xmlns=\"http://www.w3.org/1999/xhtml\" "
-                "lang=\"en\" dir=\"ltr\">\n");
-        fprintf(m_fp.Get(), "<body style=\"background-color: black;\">\n");
-        fprintf(m_fp.Get(), "<pre>\n");
-        fprintf(m_fp.Get(), "<font color=\"white\">\n");
-    }
-
-    virtual void Finish()
-    {
-        using namespace VcoreDPL::Colors::Html;
-        // Show result
-        FOREACH(group, m_groupsStats) {
-            PrintStats(group->first, group->second);
-        }
-        PrintStats("All tests together", m_stats);
-        fprintf(m_fp.Get(), "</font>\n");
-        fprintf(m_fp.Get(), "</pre>\n");
-        fprintf(m_fp.Get(), "</body>\n");
-        fprintf(m_fp.Get(), "</html>\n");
-    }
-
-    virtual bool ParseCollectorSpecificArg(const std::string& arg)
-    {
-        return ParseCollectorFileArg(arg, m_filename);
-    }
-
-    virtual void CollectResult(const std::string& id,
-                               const std::string& /*description*/,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "")
-    {
-        using namespace VcoreDPL::Colors::Html;
-        std::string tmp = "'" + id + "' ...";
-
-        fprintf(m_fp.Get(), "Running test case %-100s", tmp.c_str());
-        switch (status) {
-        case TestResultsCollectorBase::FailStatus::NONE:
-            fprintf(m_fp.Get(), GREEN_RESULT_OK);
-            break;
-        case TestResultsCollectorBase::FailStatus::FAILED:
-            PrintfErrorMessage(" FAILED ", reason, true);
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED:
-            PrintfIgnoredMessage("Ignored ", reason, true);
-            break;
-        case TestResultsCollectorBase::FailStatus::INTERNAL:
-            PrintfErrorMessage("INTERNAL", reason, true);
-            break;
-        default:
-            Assert(false && "Bad status");
-        }
-        m_groupsStats[m_currentGroup].AddTest(status);
-        m_stats.AddTest(status);
-    }
-
-    void PrintfErrorMessage(const char* type,
-                            const std::string& message,
-                            bool verbosity)
-    {
-        using namespace VcoreDPL::Colors::Html;
-        if (verbosity) {
-            fprintf(m_fp.Get(),
-                    "[%s%s%s] %s%s%s\n",
-                    BOLD_RED_BEGIN,
-                    type,
-                    BOLD_RED_END,
-                    BOLD_YELLOW_BEGIN,
-                    message.c_str(),
-                    BOLD_YELLOW_END);
-        } else {
-            fprintf(m_fp.Get(),
-                    "[%s%s%s]\n",
-                    BOLD_RED_BEGIN,
-                    type,
-                    BOLD_RED_END);
-        }
-    }
-
-    void PrintfIgnoredMessage(const char* type,
-                              const std::string& message,
-                              bool verbosity)
-    {
-        using namespace VcoreDPL::Colors::Html;
-
-        if (verbosity) {
-            fprintf(m_fp.Get(),
-                    "[%s%s%s] %s%s%s\n",
-                    CYAN_BEGIN,
-                    type,
-                    CYAN_END,
-                    BOLD_GOLD_BEGIN,
-                    message.c_str(),
-                    BOLD_GOLD_END);
-        } else {
-            fprintf(m_fp.Get(),
-                    "[%s%s%s]\n",
-                    CYAN_BEGIN,
-                    type,
-                    CYAN_END);
-        }
-    }
-
-    void PrintStats(const std::string& name, const Statistic& stats)
-    {
-        using namespace VcoreDPL::Colors::Html;
-        fprintf(
-            m_fp.Get(), "\n%sResults [%s]:%s\n", BOLD_GREEN_BEGIN,
-            name.c_str(), BOLD_GREEN_END);
-        fprintf(
-            m_fp.Get(), "%s%s%3zu%s\n", CYAN_BEGIN,
-            "Total tests:            ", stats.GetTotal(), CYAN_END);
-        fprintf(
-            m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
-            "Succeeded:            ", stats.GetPassed(), CYAN_END);
-        fprintf(
-            m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
-            "Failed:               ", stats.GetFailed(), CYAN_END);
-        fprintf(
-            m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
-            "Ignored:              ", stats.GetIgnored(), CYAN_END);
-    }
-
-    std::string m_filename;
-    ScopedFClose m_fp;
-    Statistic m_stats;
-    std::string m_currentGroup;
-    std::map<std::string, Statistic> m_groupsStats;
+       public TestResultsCollectorBase {
+public:
+       static TestResultsCollectorBase *Constructor();
+
+private:
+       HtmlCollector() : m_filename(DEFAULT_HTML_FILE_NAME) {}
+
+       virtual void CollectCurrentTestGroupName(const std::string &name)
+       {
+               fprintf(m_fp.Get(), "<b>Starting group %s", name.c_str());
+               m_currentGroup = name;
+       }
+
+       virtual bool Configure()
+       {
+               m_fp.Reset(fopen(m_filename.c_str(), "w"));
+
+               if (!m_fp)
+                       return false;
+
+               return true;
+       }
+       virtual std::string CollectorSpecificHelp() const
+       {
+               return "--file=<filename> - name of file for output\n"
+                          "                    default - index.html\n";
+       }
+
+       virtual void Start(int count)
+       {
+               DPL_UNUSED_PARAM(count);
+               AssertMsg(!!m_fp, "File handle must not be null");
+               fprintf(m_fp.Get(),
+                               "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0"
+                               "Transitional//EN\" "
+                               "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
+                               ">\n");
+               fprintf(m_fp.Get(),
+                               "<html xmlns=\"http://www.w3.org/1999/xhtml\" "
+                               "lang=\"en\" dir=\"ltr\">\n");
+               fprintf(m_fp.Get(), "<body style=\"background-color: black;\">\n");
+               fprintf(m_fp.Get(), "<pre>\n");
+               fprintf(m_fp.Get(), "<font color=\"white\">\n");
+       }
+
+       virtual void Finish()
+       {
+               using namespace VcoreDPL::Colors::Html;
+               // Show result
+               FOREACH(group, m_groupsStats) {
+                       PrintStats(group->first, group->second);
+               }
+               PrintStats("All tests together", m_stats);
+               fprintf(m_fp.Get(), "</font>\n");
+               fprintf(m_fp.Get(), "</pre>\n");
+               fprintf(m_fp.Get(), "</body>\n");
+               fprintf(m_fp.Get(), "</html>\n");
+       }
+
+       virtual bool ParseCollectorSpecificArg(const std::string &arg)
+       {
+               return ParseCollectorFileArg(arg, m_filename);
+       }
+
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string & /*description*/,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "")
+       {
+               using namespace VcoreDPL::Colors::Html;
+               std::string tmp = "'" + id + "' ...";
+               fprintf(m_fp.Get(), "Running test case %-100s", tmp.c_str());
+
+               switch (status) {
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       fprintf(m_fp.Get(), GREEN_RESULT_OK);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       PrintfErrorMessage(" FAILED ", reason, true);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       PrintfIgnoredMessage("Ignored ", reason, true);
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+                       PrintfErrorMessage("INTERNAL", reason, true);
+                       break;
+
+               default:
+                       Assert(false && "Bad status");
+               }
+
+               m_groupsStats[m_currentGroup].AddTest(status);
+               m_stats.AddTest(status);
+       }
+
+       void PrintfErrorMessage(const char *type,
+                                                       const std::string &message,
+                                                       bool verbosity)
+       {
+               using namespace VcoreDPL::Colors::Html;
+
+               if (verbosity) {
+                       fprintf(m_fp.Get(),
+                                       "[%s%s%s] %s%s%s\n",
+                                       BOLD_RED_BEGIN,
+                                       type,
+                                       BOLD_RED_END,
+                                       BOLD_YELLOW_BEGIN,
+                                       message.c_str(),
+                                       BOLD_YELLOW_END);
+               } else {
+                       fprintf(m_fp.Get(),
+                                       "[%s%s%s]\n",
+                                       BOLD_RED_BEGIN,
+                                       type,
+                                       BOLD_RED_END);
+               }
+       }
+
+       void PrintfIgnoredMessage(const char *type,
+                                                         const std::string &message,
+                                                         bool verbosity)
+       {
+               using namespace VcoreDPL::Colors::Html;
+
+               if (verbosity) {
+                       fprintf(m_fp.Get(),
+                                       "[%s%s%s] %s%s%s\n",
+                                       CYAN_BEGIN,
+                                       type,
+                                       CYAN_END,
+                                       BOLD_GOLD_BEGIN,
+                                       message.c_str(),
+                                       BOLD_GOLD_END);
+               } else {
+                       fprintf(m_fp.Get(),
+                                       "[%s%s%s]\n",
+                                       CYAN_BEGIN,
+                                       type,
+                                       CYAN_END);
+               }
+       }
+
+       void PrintStats(const std::string &name, const Statistic &stats)
+       {
+               using namespace VcoreDPL::Colors::Html;
+               fprintf(
+                       m_fp.Get(), "\n%sResults [%s]:%s\n", BOLD_GREEN_BEGIN,
+                       name.c_str(), BOLD_GREEN_END);
+               fprintf(
+                       m_fp.Get(), "%s%s%3zu%s\n", CYAN_BEGIN,
+                       "Total tests:            ", stats.GetTotal(), CYAN_END);
+               fprintf(
+                       m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
+                       "Succeeded:            ", stats.GetPassed(), CYAN_END);
+               fprintf(
+                       m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
+                       "Failed:               ", stats.GetFailed(), CYAN_END);
+               fprintf(
+                       m_fp.Get(), "  %s%s%3zu%s\n", CYAN_BEGIN,
+                       "Ignored:              ", stats.GetIgnored(), CYAN_END);
+       }
+
+       std::string m_filename;
+       ScopedFClose m_fp;
+       Statistic m_stats;
+       std::string m_currentGroup;
+       std::map<std::string, Statistic> m_groupsStats;
 };
 
-TestResultsCollectorBaseHtmlCollector::Constructor()
+TestResultsCollectorBase *HtmlCollector::Constructor()
 {
-    return new HtmlCollector();
+       return new HtmlCollector();
 }
 
 class XmlCollector :
-    public TestResultsCollectorBase
-{
-  public:
-    static TestResultsCollectorBase* Constructor();
-
-  private:
-    XmlCollector() : m_filename(DEFAULT_XML_FILE_NAME) {}
-
-    virtual void CollectCurrentTestGroupName(const std::string& name)
-    {
-        std::size_t pos = GetCurrentGroupPosition();
-        if (std::string::npos != pos) {
-            GroupFinish(pos);
-            FlushOutput();
-            m_stats = Statistic();
-        }
-
-        pos = m_outputBuffer.find("</testsuites>");
-        if (std::string::npos == pos) {
-            ThrowMsg(VcoreDPL::Exception, "Could not find test suites closing tag");
-        }
-        GroupStart(pos, name);
-    }
-
-    void GroupStart(const std::size_t pos, const std::string& name)
-    {
-        std::stringstream groupHeader;
-        groupHeader << "\n\t<testsuite";
-        groupHeader << " name=\"" << EscapeSpecialCharacters(name) << "\"";
-        groupHeader << R"( tests="1")"; // include SegFault
-        groupHeader << R"( failures="1")"; // include SegFault
-        groupHeader << R"( skipped="0")";
-        groupHeader << ">";
-
-        groupHeader << "\n\t\t<testcase name=\"unknown\" status=\"FAILED\">";
-        groupHeader <<
-        "\n\t\t\t<failure type=\"FAILED\" message=\"segmentation fault\"/>";
-        groupHeader << "\n\t\t</testcase>";
-
-        groupHeader << "\n\t</testsuite>";
-
-        m_outputBuffer.insert(pos - 1, groupHeader.str());
-    }
-
-    virtual bool Configure()
-    {
-        m_fp.Reset(fopen(m_filename.c_str(), "w"));
-        if (!m_fp)
-            return false;
-
-        return true;
-    }
-
-    virtual std::string CollectorSpecificHelp() const
-    {
-        return "--file=<filename> - name of file for output\n"
-               "                    default - results.xml\n";
-    }
-
-    virtual void Start(int count)
-    {
-        AssertMsg(!!m_fp, "File handle must not be null");
-        m_outputBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
-        m_outputBuffer.append("<testsuites ");
-        if(count >= 0)
-        {
-            m_outputBuffer.append("total=\"");
-            m_outputBuffer.append(VcoreDPL::lexical_cast<std::string>(count));
-            m_outputBuffer.append("\"");
-        }
-        m_outputBuffer.append(" >\n</testsuites>");
-        FlushOutput();
-    }
-
-    virtual void Finish()
-    {
-        std::size_t pos = GetCurrentGroupPosition();
-        if (std::string::npos != pos) {
-            GroupFinish(pos);
-            FlushOutput();
-        }
-    }
-
-    virtual bool ParseCollectorSpecificArg(const std::string& arg)
-    {
-        return ParseCollectorFileArg(arg, m_filename);
-    }
-
-    virtual void CollectResult(const std::string& id,
-                               const std::string& /*description*/,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "")
-    {
-        m_resultBuffer.erase();
-        m_resultBuffer.append("\t\t<testcase name=\"");
-        m_resultBuffer.append(EscapeSpecialCharacters(id));
-        m_resultBuffer.append("\"");
-        switch (status) {
-        case TestResultsCollectorBase::FailStatus::NONE:
-            m_resultBuffer.append(" status=\"OK\"/>\n");
-            break;
-        case TestResultsCollectorBase::FailStatus::FAILED:
-            m_resultBuffer.append(" status=\"FAILED\">\n");
-            PrintfErrorMessage("FAILED", EscapeSpecialCharacters(reason), true);
-            m_resultBuffer.append("\t\t</testcase>\n");
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED:
-            m_resultBuffer.append(" status=\"Ignored\">\n");
-            PrintfIgnoredMessage("Ignored", EscapeSpecialCharacters(
-                                     reason), true);
-            m_resultBuffer.append("\t\t</testcase>\n");
-            break;
-        case TestResultsCollectorBase::FailStatus::INTERNAL:
-            m_resultBuffer.append(" status=\"FAILED\">\n");
-            PrintfErrorMessage("INTERNAL", EscapeSpecialCharacters(
-                                   reason), true);
-            m_resultBuffer.append("\t\t</testcase>");
-            break;
-        default:
-            Assert(false && "Bad status");
-        }
-        std::size_t group_pos = GetCurrentGroupPosition();
-        if (std::string::npos == group_pos) {
-            ThrowMsg(VcoreDPL::Exception, "No current group set");
-        }
-
-        std::size_t last_case_pos = m_outputBuffer.find(
-                "<testcase name=\"unknown\"",
-                group_pos);
-        if (std::string::npos == last_case_pos) {
-            ThrowMsg(VcoreDPL::Exception, "Could not find SegFault test case");
-        }
-        m_outputBuffer.insert(last_case_pos - 2, m_resultBuffer);
-
-        m_stats.AddTest(status);
-
-        UpdateGroupHeader(group_pos,
-                          m_stats.GetTotal() + 1, // include SegFault
-                          m_stats.GetFailed() + 1, // include SegFault
-                          m_stats.GetIgnored());
-        FlushOutput();
-    }
-
-    std::size_t GetCurrentGroupPosition() const
-    {
-        return m_outputBuffer.rfind("<testsuite ");
-    }
-
-    void UpdateGroupHeader(const std::size_t groupPosition,
-                           const unsigned int tests,
-                           const unsigned int failures,
-                           const unsigned int skipped)
-    {
-        UpdateElementAttribute(groupPosition, "tests", UIntToString(tests));
-        UpdateElementAttribute(groupPosition, "failures", UIntToString(failures));
-        UpdateElementAttribute(groupPosition, "skipped", UIntToString(skipped));
-    }
-
-    void UpdateElementAttribute(const std::size_t elementPosition,
-                                const std::string& name,
-                                const std::string& value)
-    {
-        std::string pattern = name + "=\"";
-
-        std::size_t start = m_outputBuffer.find(pattern, elementPosition);
-        if (std::string::npos == start) {
-            ThrowMsg(VcoreDPL::Exception,
-                     "Could not find attribute " << name << " beginning");
-        }
-
-        std::size_t end = m_outputBuffer.find("\"", start + pattern.length());
-        if (std::string::npos == end) {
-            ThrowMsg(VcoreDPL::Exception,
-                     "Could not find attribute " << name << " end");
-        }
-
-        m_outputBuffer.replace(start + pattern.length(),
-                               end - start - pattern.length(),
-                               value);
-    }
-
-    std::string UIntToString(const unsigned int value)
-    {
-        std::stringstream result;
-        result << value;
-        return result.str();
-    }
-
-    void GroupFinish(const std::size_t groupPosition)
-    {
-        std::size_t segFaultStart =
-            m_outputBuffer.find("<testcase name=\"unknown\"", groupPosition);
-        if (std::string::npos == segFaultStart) {
-            ThrowMsg(VcoreDPL::Exception,
-                     "Could not find SegFault test case start position");
-        }
-        segFaultStart -= 2; // to erase tabs
-
-        std::string closeTag = "</testcase>";
-        std::size_t segFaultEnd = m_outputBuffer.find(closeTag, segFaultStart);
-        if (std::string::npos == segFaultEnd) {
-            ThrowMsg(VcoreDPL::Exception,
-                     "Could not find SegFault test case end position");
-        }
-        segFaultEnd += closeTag.length() + 1; // to erase new line
-
-        m_outputBuffer.erase(segFaultStart, segFaultEnd - segFaultStart);
-
-        UpdateGroupHeader(groupPosition,
-                          m_stats.GetTotal(),
-                          m_stats.GetFailed(),
-                          m_stats.GetIgnored());
-    }
-
-    void FlushOutput()
-    {
-        int fd = fileno(m_fp.Get());
-        if (-1 == fd) {
-            int error = errno;
-            ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
-        }
-
-        if (-1 == TEMP_FAILURE_RETRY(ftruncate(fd, 0L))) {
-            int error = errno;
-            ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
-        }
-
-        if (-1 == TEMP_FAILURE_RETRY(fseek(m_fp.Get(), 0L, SEEK_SET))) {
-            int error = errno;
-            ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
-        }
-
-        if (m_outputBuffer.size() !=
-            fwrite(m_outputBuffer.c_str(), 1, m_outputBuffer.size(),
-                   m_fp.Get()))
-        {
-            int error = errno;
-            ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
-        }
-
-        if (-1 == TEMP_FAILURE_RETRY(fflush(m_fp.Get()))) {
-            int error = errno;
-            ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
-        }
-    }
-
-    void PrintfErrorMessage(const char* type,
-                            const std::string& message,
-                            bool verbosity)
-    {
-        if (verbosity) {
-            m_resultBuffer.append("\t\t\t<failure type=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(type));
-            m_resultBuffer.append("\" message=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(message));
-            m_resultBuffer.append("\"/>\n");
-        } else {
-            m_resultBuffer.append("\t\t\t<failure type=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(type));
-            m_resultBuffer.append("\"/>\n");
-        }
-    }
-
-    void PrintfIgnoredMessage(const char* type,
-                              const std::string& message,
-                              bool verbosity)
-    {
-        if (verbosity) {
-            m_resultBuffer.append("\t\t\t<skipped type=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(type));
-            m_resultBuffer.append("\" message=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(message));
-            m_resultBuffer.append("\"/>\n");
-        } else {
-            m_resultBuffer.append("\t\t\t<skipped type=\"");
-            m_resultBuffer.append(EscapeSpecialCharacters(type));
-            m_resultBuffer.append("\"/>\n");
-        }
-    }
-
-    std::string EscapeSpecialCharacters(std::string s)
-    {
-        for (unsigned int i = 0; i < s.size();) {
-            switch (s[i]) {
-            case '"':
-                s.erase(i, 1);
-                s.insert(i, "&quot;");
-                i += 6;
-                break;
-
-            case '&':
-                s.erase(i, 1);
-                s.insert(i, "&amp;");
-                i += 5;
-                break;
-
-            case '<':
-                s.erase(i, 1);
-                s.insert(i, "&lt;");
-                i += 4;
-                break;
-
-            case '>':
-                s.erase(i, 1);
-                s.insert(i, "&gt;");
-                i += 4;
-                break;
-
-            case '\'':
-                s.erase(i, 1);
-                s.insert(i, "&#39;");
-                i += 5;
-                break;
-            default:
-                ++i;
-                break;
-            }
-        }
-        return s;
-    }
-
-    std::string m_filename;
-    ScopedFClose m_fp;
-    Statistic m_stats;
-    std::string m_outputBuffer;
-    std::string m_resultBuffer;
+       public TestResultsCollectorBase {
+public:
+       static TestResultsCollectorBase *Constructor();
+
+private:
+       XmlCollector() : m_filename(DEFAULT_XML_FILE_NAME) {}
+
+       virtual void CollectCurrentTestGroupName(const std::string &name)
+       {
+               std::size_t pos = GetCurrentGroupPosition();
+
+               if (std::string::npos != pos) {
+                       GroupFinish(pos);
+                       FlushOutput();
+                       m_stats = Statistic();
+               }
+
+               pos = m_outputBuffer.find("</testsuites>");
+
+               if (std::string::npos == pos) {
+                       ThrowMsg(VcoreDPL::Exception, "Could not find test suites closing tag");
+               }
+
+               GroupStart(pos, name);
+       }
+
+       void GroupStart(const std::size_t pos, const std::string &name)
+       {
+               std::stringstream groupHeader;
+               groupHeader << "\n\t<testsuite";
+               groupHeader << " name=\"" << EscapeSpecialCharacters(name) << "\"";
+               groupHeader << R"( tests="1")"; // include SegFault
+               groupHeader << R"( failures="1")"; // include SegFault
+               groupHeader << R"( skipped="0")";
+               groupHeader << ">";
+               groupHeader << "\n\t\t<testcase name=\"unknown\" status=\"FAILED\">";
+               groupHeader <<
+                                       "\n\t\t\t<failure type=\"FAILED\" message=\"segmentation fault\"/>";
+               groupHeader << "\n\t\t</testcase>";
+               groupHeader << "\n\t</testsuite>";
+               m_outputBuffer.insert(pos - 1, groupHeader.str());
+       }
+
+       virtual bool Configure()
+       {
+               m_fp.Reset(fopen(m_filename.c_str(), "w"));
+
+               if (!m_fp)
+                       return false;
+
+               return true;
+       }
+
+       virtual std::string CollectorSpecificHelp() const
+       {
+               return "--file=<filename> - name of file for output\n"
+                          "                    default - results.xml\n";
+       }
+
+       virtual void Start(int count)
+       {
+               AssertMsg(!!m_fp, "File handle must not be null");
+               m_outputBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
+               m_outputBuffer.append("<testsuites ");
+
+               if (count >= 0) {
+                       m_outputBuffer.append("total=\"");
+                       m_outputBuffer.append(VcoreDPL::lexical_cast<std::string>(count));
+                       m_outputBuffer.append("\"");
+               }
+
+               m_outputBuffer.append(" >\n</testsuites>");
+               FlushOutput();
+       }
+
+       virtual void Finish()
+       {
+               std::size_t pos = GetCurrentGroupPosition();
+
+               if (std::string::npos != pos) {
+                       GroupFinish(pos);
+                       FlushOutput();
+               }
+       }
+
+       virtual bool ParseCollectorSpecificArg(const std::string &arg)
+       {
+               return ParseCollectorFileArg(arg, m_filename);
+       }
+
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string & /*description*/,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "")
+       {
+               m_resultBuffer.erase();
+               m_resultBuffer.append("\t\t<testcase name=\"");
+               m_resultBuffer.append(EscapeSpecialCharacters(id));
+               m_resultBuffer.append("\"");
+
+               switch (status) {
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       m_resultBuffer.append(" status=\"OK\"/>\n");
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       m_resultBuffer.append(" status=\"FAILED\">\n");
+                       PrintfErrorMessage("FAILED", EscapeSpecialCharacters(reason), true);
+                       m_resultBuffer.append("\t\t</testcase>\n");
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       m_resultBuffer.append(" status=\"Ignored\">\n");
+                       PrintfIgnoredMessage("Ignored", EscapeSpecialCharacters(
+                                                                        reason), true);
+                       m_resultBuffer.append("\t\t</testcase>\n");
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+                       m_resultBuffer.append(" status=\"FAILED\">\n");
+                       PrintfErrorMessage("INTERNAL", EscapeSpecialCharacters(
+                                                                  reason), true);
+                       m_resultBuffer.append("\t\t</testcase>");
+                       break;
+
+               default:
+                       Assert(false && "Bad status");
+               }
+
+               std::size_t group_pos = GetCurrentGroupPosition();
+
+               if (std::string::npos == group_pos) {
+                       ThrowMsg(VcoreDPL::Exception, "No current group set");
+               }
+
+               std::size_t last_case_pos = m_outputBuffer.find(
+                                                                               "<testcase name=\"unknown\"",
+                                                                               group_pos);
+
+               if (std::string::npos == last_case_pos) {
+                       ThrowMsg(VcoreDPL::Exception, "Could not find SegFault test case");
+               }
+
+               m_outputBuffer.insert(last_case_pos - 2, m_resultBuffer);
+               m_stats.AddTest(status);
+               UpdateGroupHeader(group_pos,
+                                                 m_stats.GetTotal() + 1, // include SegFault
+                                                 m_stats.GetFailed() + 1, // include SegFault
+                                                 m_stats.GetIgnored());
+               FlushOutput();
+       }
+
+       std::size_t GetCurrentGroupPosition() const
+       {
+               return m_outputBuffer.rfind("<testsuite ");
+       }
+
+       void UpdateGroupHeader(const std::size_t groupPosition,
+                                                  const unsigned int tests,
+                                                  const unsigned int failures,
+                                                  const unsigned int skipped)
+       {
+               UpdateElementAttribute(groupPosition, "tests", UIntToString(tests));
+               UpdateElementAttribute(groupPosition, "failures", UIntToString(failures));
+               UpdateElementAttribute(groupPosition, "skipped", UIntToString(skipped));
+       }
+
+       void UpdateElementAttribute(const std::size_t elementPosition,
+                                                               const std::string &name,
+                                                               const std::string &value)
+       {
+               std::string pattern = name + "=\"";
+               std::size_t start = m_outputBuffer.find(pattern, elementPosition);
+
+               if (std::string::npos == start) {
+                       ThrowMsg(VcoreDPL::Exception,
+                                        "Could not find attribute " << name << " beginning");
+               }
+
+               std::size_t end = m_outputBuffer.find("\"", start + pattern.length());
+
+               if (std::string::npos == end) {
+                       ThrowMsg(VcoreDPL::Exception,
+                                        "Could not find attribute " << name << " end");
+               }
+
+               m_outputBuffer.replace(start + pattern.length(),
+                                                          end - start - pattern.length(),
+                                                          value);
+       }
+
+       std::string UIntToString(const unsigned int value)
+       {
+               std::stringstream result;
+               result << value;
+               return result.str();
+       }
+
+       void GroupFinish(const std::size_t groupPosition)
+       {
+               std::size_t segFaultStart =
+                       m_outputBuffer.find("<testcase name=\"unknown\"", groupPosition);
+
+               if (std::string::npos == segFaultStart) {
+                       ThrowMsg(VcoreDPL::Exception,
+                                        "Could not find SegFault test case start position");
+               }
+
+               segFaultStart -= 2; // to erase tabs
+               std::string closeTag = "</testcase>";
+               std::size_t segFaultEnd = m_outputBuffer.find(closeTag, segFaultStart);
+
+               if (std::string::npos == segFaultEnd) {
+                       ThrowMsg(VcoreDPL::Exception,
+                                        "Could not find SegFault test case end position");
+               }
+
+               segFaultEnd += closeTag.length() + 1; // to erase new line
+               m_outputBuffer.erase(segFaultStart, segFaultEnd - segFaultStart);
+               UpdateGroupHeader(groupPosition,
+                                                 m_stats.GetTotal(),
+                                                 m_stats.GetFailed(),
+                                                 m_stats.GetIgnored());
+       }
+
+       void FlushOutput()
+       {
+               int fd = fileno(m_fp.Get());
+
+               if (-1 == fd) {
+                       int error = errno;
+                       ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
+               }
+
+               if (-1 == TEMP_FAILURE_RETRY(ftruncate(fd, 0L))) {
+                       int error = errno;
+                       ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
+               }
+
+               if (-1 == TEMP_FAILURE_RETRY(fseek(m_fp.Get(), 0L, SEEK_SET))) {
+                       int error = errno;
+                       ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
+               }
+
+               if (m_outputBuffer.size() !=
+                               fwrite(m_outputBuffer.c_str(), 1, m_outputBuffer.size(),
+                                          m_fp.Get())) {
+                       int error = errno;
+                       ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
+               }
+
+               if (-1 == TEMP_FAILURE_RETRY(fflush(m_fp.Get()))) {
+                       int error = errno;
+                       ThrowMsg(VcoreDPL::Exception, VcoreDPL::GetErrnoString(error));
+               }
+       }
+
+       void PrintfErrorMessage(const char *type,
+                                                       const std::string &message,
+                                                       bool verbosity)
+       {
+               if (verbosity) {
+                       m_resultBuffer.append("\t\t\t<failure type=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(type));
+                       m_resultBuffer.append("\" message=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(message));
+                       m_resultBuffer.append("\"/>\n");
+               } else {
+                       m_resultBuffer.append("\t\t\t<failure type=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(type));
+                       m_resultBuffer.append("\"/>\n");
+               }
+       }
+
+       void PrintfIgnoredMessage(const char *type,
+                                                         const std::string &message,
+                                                         bool verbosity)
+       {
+               if (verbosity) {
+                       m_resultBuffer.append("\t\t\t<skipped type=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(type));
+                       m_resultBuffer.append("\" message=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(message));
+                       m_resultBuffer.append("\"/>\n");
+               } else {
+                       m_resultBuffer.append("\t\t\t<skipped type=\"");
+                       m_resultBuffer.append(EscapeSpecialCharacters(type));
+                       m_resultBuffer.append("\"/>\n");
+               }
+       }
+
+       std::string EscapeSpecialCharacters(std::string s)
+       {
+               for (unsigned int i = 0; i < s.size();) {
+                       switch (s[i]) {
+                       case '"':
+                               s.erase(i, 1);
+                               s.insert(i, "&quot;");
+                               i += 6;
+                               break;
+
+                       case '&':
+                               s.erase(i, 1);
+                               s.insert(i, "&amp;");
+                               i += 5;
+                               break;
+
+                       case '<':
+                               s.erase(i, 1);
+                               s.insert(i, "&lt;");
+                               i += 4;
+                               break;
+
+                       case '>':
+                               s.erase(i, 1);
+                               s.insert(i, "&gt;");
+                               i += 4;
+                               break;
+
+                       case '\'':
+                               s.erase(i, 1);
+                               s.insert(i, "&#39;");
+                               i += 5;
+                               break;
+
+                       default:
+                               ++i;
+                               break;
+                       }
+               }
+
+               return s;
+       }
+
+       std::string m_filename;
+       ScopedFClose m_fp;
+       Statistic m_stats;
+       std::string m_outputBuffer;
+       std::string m_resultBuffer;
 };
 
-TestResultsCollectorBaseXmlCollector::Constructor()
+TestResultsCollectorBase *XmlCollector::Constructor()
 {
-    return new XmlCollector();
+       return new XmlCollector();
 }
 
 class CSVCollector :
-    public TestResultsCollectorBase
-{
-  public:
-    static TestResultsCollectorBase* Constructor();
-
-  private:
-    CSVCollector() {}
-
-    virtual void Start(int count)
-    {
-        DPL_UNUSED_PARAM(count);
-        printf("GROUP;ID;RESULT;REASON\n");
-    }
-
-    virtual void CollectCurrentTestGroupName(const std::string& name)
-    {
-        m_currentGroup = name;
-    }
-
-    virtual void CollectResult(const std::string& id,
-                               const std::string& /*description*/,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "")
-    {
-        std::string statusMsg = "";
-        switch (status) {
-        case TestResultsCollectorBase::FailStatus::NONE: statusMsg = "OK";
-            break;
-        case TestResultsCollectorBase::FailStatus::FAILED: statusMsg = "FAILED";
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED: statusMsg =
-            "IGNORED";
-            break;
-        case TestResultsCollectorBase::FailStatus::INTERNAL: statusMsg =
-            "FAILED";
-            break;
-        default:
-            Assert(false && "Bad status");
-        }
-        printf("%s;%s;%s;%s\n",
-               m_currentGroup.c_str(),
-               id.c_str(),
-               statusMsg.c_str(),
-               reason.c_str());
-    }
-
-    std::string m_currentGroup;
+       public TestResultsCollectorBase {
+public:
+       static TestResultsCollectorBase *Constructor();
+
+private:
+       CSVCollector() {}
+
+       virtual void Start(int count)
+       {
+               DPL_UNUSED_PARAM(count);
+               printf("GROUP;ID;RESULT;REASON\n");
+       }
+
+       virtual void CollectCurrentTestGroupName(const std::string &name)
+       {
+               m_currentGroup = name;
+       }
+
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string & /*description*/,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "")
+       {
+               std::string statusMsg = "";
+
+               switch (status) {
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       statusMsg = "OK";
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       statusMsg = "FAILED";
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       statusMsg =
+                               "IGNORED";
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+                       statusMsg =
+                               "FAILED";
+                       break;
+
+               default:
+                       Assert(false && "Bad status");
+               }
+
+               printf("%s;%s;%s;%s\n",
+                          m_currentGroup.c_str(),
+                          id.c_str(),
+                          statusMsg.c_str(),
+                          reason.c_str());
+       }
+
+       std::string m_currentGroup;
 };
 
-TestResultsCollectorBaseCSVCollector::Constructor()
+TestResultsCollectorBase *CSVCollector::Constructor()
 {
-    return new CSVCollector();
+       return new CSVCollector();
 }
 }
 
 class TAPCollector :
-    public TestResultsCollectorBase
-{
-  public:
-    static TestResultsCollectorBase* Constructor();
-
-  private:
-    TAPCollector() : m_filename(DEFAULT_TAP_FILE_NAME)  {}
-
-    virtual bool Configure()
-    {
-        m_output.open(m_filename.c_str(), std::ios_base::trunc);
-        if (m_output.fail())
-            return false;
-
-        return true;
-    }
-    virtual std::string CollectorSpecificHelp() const
-    {
-        std::string retVal = "--file=<filename> - name of file for output\n"
-                             "                    default - ";
-        retVal += DEFAULT_TAP_FILE_NAME;
-        retVal += "\n";
-        return retVal;
-    }
-
-    virtual void Start(int count)
-    {
-        DPL_UNUSED_PARAM(count);
-        AssertMsg(m_output.good(), "Output file must be opened.");
-        m_output << "TAP version 13" << std::endl;
-        m_testIndex = 0;
-    }
-
-    virtual void Finish()
-    {
-        m_output << "1.." << m_testIndex << std::endl;
-        m_output << m_collectedData.rdbuf();
-        m_output.close();
-    }
-
-    virtual bool ParseCollectorSpecificArg(const std::string& arg)
-    {
-        return ParseCollectorFileArg(arg, m_filename);
-    }
-
-    virtual void CollectResult(const std::string& id,
-                               const std::string& description,
-                               const FailStatus::Type status = FailStatus::NONE,
-                               const std::string& reason = "")
-    {
-        m_testIndex++;
-        switch (status) {
-        case TestResultsCollectorBase::FailStatus::NONE:
-            LogBasicTAP(true, id, description);
-            endTAPLine();
-            break;
-        case TestResultsCollectorBase::FailStatus::FAILED:
-            LogBasicTAP(false, id, description);
-            endTAPLine();
-            break;
-        case TestResultsCollectorBase::FailStatus::IGNORED:
-            LogBasicTAP(true, id, description);
-            m_collectedData << " # skip " << reason;
-            endTAPLine();
-            break;
-        case TestResultsCollectorBase::FailStatus::INTERNAL:
-            LogBasicTAP(true, id, description);
-            endTAPLine();
-            m_collectedData << "    ---" << std::endl;
-            m_collectedData << "    message: " << reason << std::endl;
-            m_collectedData << "    severity: Internal" << std::endl;
-            m_collectedData << "    ..." << std::endl;
-            break;
-        default:
-            Assert(false && "Bad status");
-        }
-    }
-
-    void LogBasicTAP(bool isOK, const std::string& id,
-                     const std::string& description)
-    {
-        if (!isOK) {
-            m_collectedData << "not ";
-        }
-        m_collectedData << "ok " << m_testIndex << " [" <<
-        id << "] " << description;
-    }
-
-    void endTAPLine()
-    {
-        m_collectedData << std::endl;
-    }
-
-    std::string m_filename;
-    std::stringstream m_collectedData;
-    std::ofstream m_output;
-    int m_testIndex;
+       public TestResultsCollectorBase {
+public:
+       static TestResultsCollectorBase *Constructor();
+
+private:
+       TAPCollector() : m_filename(DEFAULT_TAP_FILE_NAME)  {}
+
+       virtual bool Configure()
+       {
+               m_output.open(m_filename.c_str(), std::ios_base::trunc);
+
+               if (m_output.fail())
+                       return false;
+
+               return true;
+       }
+       virtual std::string CollectorSpecificHelp() const
+       {
+               std::string retVal = "--file=<filename> - name of file for output\n"
+                                                        "                    default - ";
+               retVal += DEFAULT_TAP_FILE_NAME;
+               retVal += "\n";
+               return retVal;
+       }
+
+       virtual void Start(int count)
+       {
+               DPL_UNUSED_PARAM(count);
+               AssertMsg(m_output.good(), "Output file must be opened.");
+               m_output << "TAP version 13" << std::endl;
+               m_testIndex = 0;
+       }
+
+       virtual void Finish()
+       {
+               m_output << "1.." << m_testIndex << std::endl;
+               m_output << m_collectedData.rdbuf();
+               m_output.close();
+       }
+
+       virtual bool ParseCollectorSpecificArg(const std::string &arg)
+       {
+               return ParseCollectorFileArg(arg, m_filename);
+       }
+
+       virtual void CollectResult(const std::string &id,
+                                                          const std::string &description,
+                                                          const FailStatus::Type status = FailStatus::NONE,
+                                                          const std::string &reason = "")
+       {
+               m_testIndex++;
+
+               switch (status) {
+               case TestResultsCollectorBase::FailStatus::NONE:
+                       LogBasicTAP(true, id, description);
+                       endTAPLine();
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::FAILED:
+                       LogBasicTAP(false, id, description);
+                       endTAPLine();
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::IGNORED:
+                       LogBasicTAP(true, id, description);
+                       m_collectedData << " # skip " << reason;
+                       endTAPLine();
+                       break;
+
+               case TestResultsCollectorBase::FailStatus::INTERNAL:
+                       LogBasicTAP(true, id, description);
+                       endTAPLine();
+                       m_collectedData << "    ---" << std::endl;
+                       m_collectedData << "    message: " << reason << std::endl;
+                       m_collectedData << "    severity: Internal" << std::endl;
+                       m_collectedData << "    ..." << std::endl;
+                       break;
+
+               default:
+                       Assert(false && "Bad status");
+               }
+       }
+
+       void LogBasicTAP(bool isOK, const std::string &id,
+                                        const std::string &description)
+       {
+               if (!isOK) {
+                       m_collectedData << "not ";
+               }
+
+               m_collectedData << "ok " << m_testIndex << " [" <<
+                                               id << "] " << description;
+       }
+
+       void endTAPLine()
+       {
+               m_collectedData << std::endl;
+       }
+
+       std::string m_filename;
+       std::stringstream m_collectedData;
+       std::ofstream m_output;
+       int m_testIndex;
 };
 
-TestResultsCollectorBaseTAPCollector::Constructor()
+TestResultsCollectorBase *TAPCollector::Constructor()
 {
-    return new TAPCollector();
+       return new TAPCollector();
 }
 
 void TestResultsCollectorBase::RegisterCollectorConstructor(
-    const std::string& name,
-    TestResultsCollectorBase::CollectorConstructorFunc func)
+       const std::string &name,
+       TestResultsCollectorBase::CollectorConstructorFunc func)
 {
-    Assert(m_constructorsMap.find(name) == m_constructorsMap.end());
-    m_constructorsMap[name] = func;
+       Assert(m_constructorsMap.find(name) == m_constructorsMap.end());
+       m_constructorsMap[name] = func;
 }
 
-TestResultsCollectorBaseTestResultsCollectorBase::Create(
-    const std::string& name)
+TestResultsCollectorBase *TestResultsCollectorBase::Create(
+       const std::string &name)
 {
-    ConstructorsMap::iterator found = m_constructorsMap.find(name);
-    if (found != m_constructorsMap.end()) {
-        return found->second();
-    } else {
-        return NULL;
-    }
+       ConstructorsMap::iterator found = m_constructorsMap.find(name);
+
+       if (found != m_constructorsMap.end()) {
+               return found->second();
+       } else {
+               return NULL;
+       }
 }
 
 std::vector<std::string> TestResultsCollectorBase::GetCollectorsNames()
 {
-    std::vector<std::string> list;
-    FOREACH(it, m_constructorsMap)
-    {
-        list.push_back(it->first);
-    }
-    return list;
+       std::vector<std::string> list;
+       FOREACH(it, m_constructorsMap) {
+               list.push_back(it->first);
+       }
+       return list;
 }
 
 TestResultsCollectorBase::ConstructorsMap TestResultsCollectorBase::
-    m_constructorsMap;
+m_constructorsMap;
 
 namespace {
 static int RegisterCollectorConstructors();
 static const int RegisterHelperVariable = RegisterCollectorConstructors();
 int RegisterCollectorConstructors()
 {
-    (void)RegisterHelperVariable;
-
-    TestResultsCollectorBase::RegisterCollectorConstructor(
-        "text",
-        &ConsoleCollector::Constructor);
-    TestResultsCollectorBase::RegisterCollectorConstructor(
-        "html",
-        &HtmlCollector::Constructor);
-    TestResultsCollectorBase::RegisterCollectorConstructor(
-        "csv",
-        &CSVCollector::Constructor);
-    TestResultsCollectorBase::RegisterCollectorConstructor(
-        "tap",
-        &TAPCollector::Constructor);
-    TestResultsCollectorBase::RegisterCollectorConstructor(
-        "xml",
-        &XmlCollector::Constructor);
-
-    return 0;
+       (void)RegisterHelperVariable;
+       TestResultsCollectorBase::RegisterCollectorConstructor(
+               "text",
+               &ConsoleCollector::Constructor);
+       TestResultsCollectorBase::RegisterCollectorConstructor(
+               "html",
+               &HtmlCollector::Constructor);
+       TestResultsCollectorBase::RegisterCollectorConstructor(
+               "csv",
+               &CSVCollector::Constructor);
+       TestResultsCollectorBase::RegisterCollectorConstructor(
+               "tap",
+               &TAPCollector::Constructor);
+       TestResultsCollectorBase::RegisterCollectorConstructor(
+               "xml",
+               &XmlCollector::Constructor);
+       return 0;
 }
 }
 }
index 5002bfd..7822fc0 100644 (file)
@@ -48,13 +48,15 @@ namespace {
 
 std::string getXMLNode(xmlNodePtr node)
 {
-    std::string ret;
-    xmlChar * value = xmlNodeGetContent(node);
-    if (value != NULL) {
-        ret = std::string(reinterpret_cast<char*>(value));
-        xmlFree(value);
-    }
-    return ret;
+       std::string ret;
+       xmlChar *value = xmlNodeGetContent(node);
+
+       if (value != NULL) {
+               ret = std::string(reinterpret_cast<char *>(value));
+               xmlFree(value);
+       }
+
+       return ret;
 }
 
 }
@@ -62,17 +64,18 @@ std::string getXMLNode(xmlNodePtr node)
 
 namespace VcoreDPL {
 namespace Test {
-namespace // anonymous
-{
+namespace { // anonymous
 std::string BaseName(std::string aPath)
 {
-    std::unique_ptr<char[],free_deleter> path(strdup(aPath.c_str()));
-    if (NULL == path.get()) {
-        throw std::bad_alloc();
-    }
-    char* baseName = basename(path.get());
-    std::string retValue = baseName;
-    return retValue;
+       std::unique_ptr<char[], free_deleter> path(strdup(aPath.c_str()));
+
+       if (NULL == path.get()) {
+               throw std::bad_alloc();
+       }
+
+       char *baseName = basename(path.get());
+       std::string retValue = baseName;
+       return retValue;
 }
 } // namespace anonymous
 
@@ -82,614 +85,599 @@ std::string BaseName(std::string aPath)
 //! \param[in] aFile source file name
 //! \param[in] aLine source file line
 //! \param[in] aMessage error message
-TestRunner::TestFailed::TestFailed(const charaTest,
-                                   const char* aFile,
-                                   int aLine,
-                                   const std::string &aMessage)
+TestRunner::TestFailed::TestFailed(const char *aTest,
+                                                                  const char *aFile,
+                                                                  int aLine,
+                                                                  const std::string &aMessage)
 {
-    std::ostringstream assertMsg;
-    assertMsg << "[" << BaseName(aFile) << ":" << aLine
-              << "] Assertion failed ("
-              << aTest << ") " << aMessage;
-    m_message = assertMsg.str();
+       std::ostringstream assertMsg;
+       assertMsg << "[" << BaseName(aFile) << ":" << aLine
+                         << "] Assertion failed ("
+                         << aTest << ") " << aMessage;
+       m_message = assertMsg.str();
 }
 
 TestRunner::TestFailed::TestFailed(const std::string &message)
 {
-    m_message = message;
+       m_message = message;
 }
 
 void TestRunner::RegisterTest(const char *testName, TestCase proc)
 {
-    m_testGroups[m_currentGroup].push_back(TestCaseStruct(testName, proc));
+       m_testGroups[m_currentGroup].push_back(TestCaseStruct(testName, proc));
 }
 
-void TestRunner::InitGroup(const charname)
+void TestRunner::InitGroup(const char *name)
 {
-    m_currentGroup = name;
+       m_currentGroup = name;
 }
 
-void TestRunner::normalizeXMLTag(std::string& str, const std::string& testcase)
+void TestRunner::normalizeXMLTag(std::string &str, const std::string &testcase)
 {
-    //Add testcase if missing
-    std::string::size_type pos = str.find(testcase);
-    if(pos != 0)
-    {
-        str = testcase + "_" + str;
-    }
-
-    //dpl test runner cannot have '-' character in name so it have to be replaced
-    // for TCT case to make comparision works
-    std::replace(str.begin(), str.end(), '-', '_');
+       //Add testcase if missing
+       std::string::size_type pos = str.find(testcase);
+
+       if (pos != 0) {
+               str = testcase + "_" + str;
+       }
+
+       //dpl test runner cannot have '-' character in name so it have to be replaced
+       // for TCT case to make comparision works
+       std::replace(str.begin(), str.end(), '-', '_');
 }
 
-bool TestRunner::filterGroupsByXmls(const std::vector<std::string> & files)
+bool TestRunner::filterGroupsByXmls(const std::vector<std::string> &files)
 {
-    DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, XMLError)
-
-    const std::string idPath = "/test_definition/suite/set/testcase/@id";
-
-    bool success = true;
-    std::map<std::string, bool> casesMap;
-
-    std::string testsuite;
-    if(!m_testGroups.empty())
-    {
-        for(TestCaseGroupMap::const_iterator cit = m_testGroups.begin(); cit != m_testGroups.end(); ++cit)
-        {
-            if(!cit->second.empty())
-            {
-                for(TestCaseStructList::const_iterator cj = cit->second.begin(); cj != cit->second.end(); ++cj)
-                {
-                    std::string name = cj->name;
-                    std::string::size_type st = name.find('_');
-                    if(st != std::string::npos)
-                    {
-                        name = name.substr(0, st);
-                        testsuite = name;
-                        break;
-                    }
-                }
-                if(!testsuite.empty()) break;
-            }
-        }
-    }
-
-    xmlInitParser();
-    LIBXML_TEST_VERSION
-    xmlXPathInit();
-
-    Try
-    {
-        FOREACH(file, files)
-        {
-            xmlDocPtr doc;
-            xmlXPathContextPtr xpathCtx;
-
-            doc = xmlReadFile(file->c_str(), NULL, 0);
-            if (doc == NULL) {
-                ThrowMsg(XMLError, "File Problem");
-            } else {
-                //context
-                xpathCtx = xmlXPathNewContext(doc);
-                if (xpathCtx == NULL) {
-                    ThrowMsg(XMLError,
-                             "Error: unable to create new XPath context\n");
-                }
-                xpathCtx->node = xmlDocGetRootElement(doc);
-            }
-
-            std::string result;
-            xmlXPathObjectPtr xpathObject;
-            //get requested node's values
-            xpathObject = xmlXPathEvalExpression(BAD_CAST idPath.c_str(), xpathCtx);
-            if (xpathObject == NULL)
-            {
-                ThrowMsg(XMLError, "XPath evaluation failure: " << idPath);
-            }
-            xmlNodeSetPtr nodes = xpathObject->nodesetval;
-            unsigned size = (nodes) ? nodes->nodeNr : 0;
-            for(unsigned i = 0; i < size; ++i)
-            {
-                if (nodes->nodeTab[i]->type == XML_ATTRIBUTE_NODE) {
-                    xmlNodePtr curNode = nodes->nodeTab[i];
-                    result = getXMLNode(curNode);
-                    normalizeXMLTag(result, testsuite);
-                    casesMap.insert(make_pair(result, false));
-                }
-            }
-            //Cleanup of XPath data
-            xmlXPathFreeObject(xpathObject);
-            xmlXPathFreeContext(xpathCtx);
-            xmlFreeDoc(doc);
-        }
-    }
-    Catch(XMLError)
-    {
-        success = false;
-    }
-    xmlCleanupParser();
-
-    if(!filterByXML(casesMap))
-    {
-        success = false;
-    }
-
-    return success;
+       DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, XMLError)
+       const std::string idPath = "/test_definition/suite/set/testcase/@id";
+       bool success = true;
+       std::map<std::string, bool> casesMap;
+       std::string testsuite;
+
+       if (!m_testGroups.empty()) {
+               for (TestCaseGroupMap::const_iterator cit = m_testGroups.begin(); cit != m_testGroups.end();
+                               ++cit) {
+                       if (!cit->second.empty()) {
+                               for (TestCaseStructList::const_iterator cj = cit->second.begin(); cj != cit->second.end(); ++cj) {
+                                       std::string name = cj->name;
+                                       std::string::size_type st = name.find('_');
+
+                                       if (st != std::string::npos) {
+                                               name = name.substr(0, st);
+                                               testsuite = name;
+                                               break;
+                                       }
+                               }
+
+                               if (!testsuite.empty()) break;
+                       }
+               }
+       }
+
+       xmlInitParser();
+       LIBXML_TEST_VERSION
+       xmlXPathInit();
+       Try {
+               FOREACH(file, files)
+               {
+                       xmlDocPtr doc;
+                       xmlXPathContextPtr xpathCtx;
+                       doc = xmlReadFile(file->c_str(), NULL, 0);
+
+                       if (doc == NULL) {
+                               ThrowMsg(XMLError, "File Problem");
+                       } else {
+                               //context
+                               xpathCtx = xmlXPathNewContext(doc);
+
+                               if (xpathCtx == NULL) {
+                                       ThrowMsg(XMLError,
+                                                        "Error: unable to create new XPath context\n");
+                               }
+
+                               xpathCtx->node = xmlDocGetRootElement(doc);
+                       }
+
+                       std::string result;
+                       xmlXPathObjectPtr xpathObject;
+                       //get requested node's values
+                       xpathObject = xmlXPathEvalExpression(BAD_CAST idPath.c_str(), xpathCtx);
+
+                       if (xpathObject == NULL) {
+                               ThrowMsg(XMLError, "XPath evaluation failure: " << idPath);
+                       }
+
+                       xmlNodeSetPtr nodes = xpathObject->nodesetval;
+                       unsigned size = (nodes) ? nodes->nodeNr : 0;
+
+                       for (unsigned i = 0; i < size; ++i) {
+                               if (nodes->nodeTab[i]->type == XML_ATTRIBUTE_NODE) {
+                                       xmlNodePtr curNode = nodes->nodeTab[i];
+                                       result = getXMLNode(curNode);
+                                       normalizeXMLTag(result, testsuite);
+                                       casesMap.insert(make_pair(result, false));
+                               }
+                       }
+
+                       //Cleanup of XPath data
+                       xmlXPathFreeObject(xpathObject);
+                       xmlXPathFreeContext(xpathCtx);
+                       xmlFreeDoc(doc);
+               }
+       }
+       Catch(XMLError) {
+               success = false;
+       }
+       xmlCleanupParser();
+
+       if (!filterByXML(casesMap)) {
+               success = false;
+       }
+
+       return success;
 }
 
-bool TestRunner::filterByXML(std::map<std::string, bool> & casesMap)
+bool TestRunner::filterByXML(std::map<std::string, bool> &casesMap)
 {
-    FOREACH(group, m_testGroups) {
-        TestCaseStructList newList;
-        FOREACH(iterator, group->second)
-        {
-            if (casesMap.find(iterator->name) != casesMap.end()) {
-                casesMap[iterator->name] = true;
-                newList.push_back(*iterator);
-            }
-        }
-        group->second = newList;
-    }
-    FOREACH(cs, casesMap)
-    {
-        if(cs->second == false)
-        {
-            return false;
-        }
-    }
-    return true;
+       FOREACH(group, m_testGroups) {
+               TestCaseStructList newList;
+               FOREACH(iterator, group->second) {
+                       if (casesMap.find(iterator->name) != casesMap.end()) {
+                               casesMap[iterator->name] = true;
+                               newList.push_back(*iterator);
+                       }
+               }
+               group->second = newList;
+       }
+       FOREACH(cs, casesMap) {
+               if (cs->second == false) {
+                       return false;
+               }
+       }
+       return true;
 }
 
-TestRunner::Status TestRunner::RunTestCase(const TestCaseStructtestCase)
+TestRunner::Status TestRunner::RunTestCase(const TestCaseStruct &testCase)
 {
-    try {
-        testCase.proc();
-    } catch (const TestFailed &e) {
-        // Simple test failure
-        CollectResult(testCase.name,
-                      "",
-                      TestResultsCollectorBase::FailStatus::FAILED,
-                      e.GetMessage());
-        return FAILED;
-    } catch (const Ignored &e) {
-        if (m_runIgnored) {
-            // Simple test have to be implemented
-            CollectResult(testCase.name,
-                          "",
-                          TestResultsCollectorBase::FailStatus::IGNORED,
-                          e.GetMessage());
-        }
-
-        return IGNORED;
-    } catch (const VcoreDPL::Exception &e) {
-        // DPL exception failure
-        CollectResult(testCase.name,
-                      "",
-                      TestResultsCollectorBase::FailStatus::INTERNAL,
-                      "DPL exception:" + e.GetMessage() + "\n" + e.DumpToString());
-
-        return FAILED;
-    } catch (const std::exception &) {
-        // std exception failure
-        CollectResult(testCase.name,
-                      "",
-                      TestResultsCollectorBase::FailStatus::INTERNAL,
-                      "std exception");
-
-        return FAILED;
-    } catch (...) {
-        // Unknown exception failure
-        CollectResult(testCase.name,
-                      "",
-                      TestResultsCollectorBase::FailStatus::INTERNAL,
-                      "unknown exception");
-
-        return FAILED;
-    }
-
-    CollectResult(testCase.name,
-                  "",
-                  TestResultsCollectorBase::FailStatus::NONE);
-
-    // Everything OK
-    return PASS;
+       try {
+               testCase.proc();
+       } catch (const TestFailed &e) {
+               // Simple test failure
+               CollectResult(testCase.name,
+                                         "",
+                                         TestResultsCollectorBase::FailStatus::FAILED,
+                                         e.GetMessage());
+               return FAILED;
+       } catch (const Ignored &e) {
+               if (m_runIgnored) {
+                       // Simple test have to be implemented
+                       CollectResult(testCase.name,
+                                                 "",
+                                                 TestResultsCollectorBase::FailStatus::IGNORED,
+                                                 e.GetMessage());
+               }
+
+               return IGNORED;
+       } catch (const VcoreDPL::Exception &e) {
+               // DPL exception failure
+               CollectResult(testCase.name,
+                                         "",
+                                         TestResultsCollectorBase::FailStatus::INTERNAL,
+                                         "DPL exception:" + e.GetMessage() + "\n" + e.DumpToString());
+               return FAILED;
+       } catch (const std::exception &) {
+               // std exception failure
+               CollectResult(testCase.name,
+                                         "",
+                                         TestResultsCollectorBase::FailStatus::INTERNAL,
+                                         "std exception");
+               return FAILED;
+       } catch (...) {
+               // Unknown exception failure
+               CollectResult(testCase.name,
+                                         "",
+                                         TestResultsCollectorBase::FailStatus::INTERNAL,
+                                         "unknown exception");
+               return FAILED;
+       }
+
+       CollectResult(testCase.name,
+                                 "",
+                                 TestResultsCollectorBase::FailStatus::NONE);
+       // Everything OK
+       return PASS;
 }
 
 void TestRunner::RunTests()
 {
-    using namespace VcoreDPL::Colors::Text;
-
-    Banner();
-
-    unsigned count = 0;
-    FOREACH(group, m_testGroups) {
-        count += group->second.size();
-    }
-
-    std::for_each(m_collectors.begin(),
-                  m_collectors.end(),
-                  [count] (const TestResultsCollectors::value_type & collector)
-                  {
-                      collector.second->Start(count);
-                  });
-
-    fprintf(stderr, "%sFound %d testcases...%s\n", GREEN_BEGIN, count, GREEN_END);
-    fprintf(stderr, "%s%s%s\n", GREEN_BEGIN, "Running tests...", GREEN_END);
-    FOREACH(group, m_testGroups) {
-        TestCaseStructList list = group->second;
-        if (!list.empty()) {
-            std::for_each(
-                m_collectors.begin(),
-                m_collectors.end(),
-                [&group](const TestResultsCollectors::value_type & collector)
-                {
-                    collector.second->
-                        CollectCurrentTestGroupName(group->first);
-                });
-            list.sort();
-
-            for (TestCaseStructList::const_iterator iterator = list.begin();
-                 iterator != list.end();
-                 ++iterator)
-            {
-                TestCaseStruct test = *iterator;
-                if (m_startTestId == test.name) {
-                    m_startTestId = "";
-                }
-
-                if (m_startTestId.empty()) {
-                    RunTestCase(test);
-                }
-                if (m_terminate == true) {
-                    // Terminate quietly without any logs
-                    return;
-                }
-            }
-        }
-    }
-
-    std::for_each(m_collectors.begin(),
-                  m_collectors.end(),
-                  [] (const TestResultsCollectors::value_type & collector)
-                  {
-                      collector.second->Finish();
-                  });
-
-    // Finished
-    fprintf(stderr, "%s%s%s\n\n", GREEN_BEGIN, "Finished", GREEN_END);
+       using namespace VcoreDPL::Colors::Text;
+       Banner();
+       unsigned count = 0;
+       FOREACH(group, m_testGroups) {
+               count += group->second.size();
+       }
+       std::for_each(m_collectors.begin(),
+                                 m_collectors.end(),
+       [count](const TestResultsCollectors::value_type & collector) {
+               collector.second->Start(count);
+       });
+       fprintf(stderr, "%sFound %d testcases...%s\n", GREEN_BEGIN, count, GREEN_END);
+       fprintf(stderr, "%s%s%s\n", GREEN_BEGIN, "Running tests...", GREEN_END);
+       FOREACH(group, m_testGroups) {
+               TestCaseStructList list = group->second;
+
+               if (!list.empty()) {
+                       std::for_each(
+                               m_collectors.begin(),
+                               m_collectors.end(),
+                       [&group](const TestResultsCollectors::value_type & collector) {
+                               collector.second->
+                               CollectCurrentTestGroupName(group->first);
+                       });
+                       list.sort();
+
+                       for (TestCaseStructList::const_iterator iterator = list.begin();
+                                       iterator != list.end();
+                                       ++iterator) {
+                               TestCaseStruct test = *iterator;
+
+                               if (m_startTestId == test.name) {
+                                       m_startTestId = "";
+                               }
+
+                               if (m_startTestId.empty()) {
+                                       RunTestCase(test);
+                               }
+
+                               if (m_terminate == true) {
+                                       // Terminate quietly without any logs
+                                       return;
+                               }
+                       }
+               }
+       }
+       std::for_each(m_collectors.begin(),
+                                 m_collectors.end(),
+       [](const TestResultsCollectors::value_type & collector) {
+               collector.second->Finish();
+       });
+       // Finished
+       fprintf(stderr, "%s%s%s\n\n", GREEN_BEGIN, "Finished", GREEN_END);
 }
 
 void TestRunner::CollectResult(
-    const std::string& id,
-    const std::string& description,
-    const TestResultsCollectorBase::FailStatus::Type status,
-    const std::string& reason)
+       const std::string &id,
+       const std::string &description,
+       const TestResultsCollectorBase::FailStatus::Type status,
+       const std::string &reason)
 {
-    std::for_each(m_collectors.begin(),
-                  m_collectors.end(),
-                  [&](const TestResultsCollectors::value_type & collector)
-                  {
-                      collector.second->CollectResult(id,
-                                                      description,
-                                                      status,
-                                                      reason);
-                  });
+       std::for_each(m_collectors.begin(),
+                                 m_collectors.end(),
+       [&](const TestResultsCollectors::value_type & collector) {
+               collector.second->CollectResult(id,
+                                                                               description,
+                                                                               status,
+                                                                               reason);
+       });
 }
 
 void TestRunner::Banner()
 {
-    using namespace VcoreDPL::Colors::Text;
-    fprintf(stderr,
-            "%s%s%s\n",
-            BOLD_GREEN_BEGIN,
-            "DPL tests runner",
-            BOLD_GREEN_END);
-    fprintf(stderr,
-            "%s%s%s%s\n\n",
-            GREEN_BEGIN,
-            "Build: ",
-            __TIMESTAMP__,
-            GREEN_END);
+       using namespace VcoreDPL::Colors::Text;
+       fprintf(stderr,
+                       "%s%s%s\n",
+                       BOLD_GREEN_BEGIN,
+                       "DPL tests runner",
+                       BOLD_GREEN_END);
+       fprintf(stderr,
+                       "%s%s%s%s\n\n",
+                       GREEN_BEGIN,
+                       "Build: ",
+                       __TIMESTAMP__,
+                       GREEN_END);
 }
 
-void TestRunner::InvalidArgs(const std::stringmessage)
+void TestRunner::InvalidArgs(const std::string &message)
 {
-    using namespace VcoreDPL::Colors::Text;
-    fprintf(stderr,
-            "%s%s%s\n",
-            BOLD_RED_BEGIN,
-            message.c_str(),
-            BOLD_RED_END);
+       using namespace VcoreDPL::Colors::Text;
+       fprintf(stderr,
+                       "%s%s%s\n",
+                       BOLD_RED_BEGIN,
+                       message.c_str(),
+                       BOLD_RED_END);
 }
 
 void TestRunner::Usage()
 {
-    fprintf(stderr, "Usage: runner [options]\n\n");
-    fprintf(stderr, "Output type:\n");
-    fprintf(stderr, "  --output=<output type> --output=<output type> ...\n");
-    fprintf(stderr, "\n  possible output types:\n");
-    FOREACH(type, TestResultsCollectorBase::GetCollectorsNames()) {
-        fprintf(stderr, "    --output=%s\n", type->c_str());
-    }
-    fprintf(stderr, "\n  example:\n");
-    fprintf(stderr,
-            "    test-binary --output=text --output=xml --file=output.xml\n\n");
-    fprintf(stderr, "Other parameters:\n");
-    fprintf(stderr,
-            "  --regexp='regexp'\t Only selected tests"
-            " which names match regexp run\n\n");
-    fprintf(stderr, "  --start=<test id>\tStart from concrete test id");
-    fprintf(stderr, "  --group=<group name>\t Run tests only from one group\n");
-    fprintf(stderr, "  --runignored\t Run also ignored tests\n");
-    fprintf(stderr, "  --list\t Show a list of Test IDs\n");
-    fprintf(stderr, "  --listgroups\t Show a list of Test Group names \n");
-    fprintf(stderr, "  --only-from-xml=<xml file>\t Run only testcases specified in XML file \n"
-                    "       XML name is taken from attribute id=\"part1_part2\" as whole.\n"
-                    "       If part1 is not found (no _) then it is implicitily "
-                           "set according to suite part1 from binary tests\n");
-    fprintf(
-        stderr,
-        "  --listingroup=<group name>\t Show a list of Test IDS in one group\n");
-    fprintf(stderr, "  --allowchildlogs\t Allow to print logs from child process on screen.\n");
-    fprintf(stderr, "       When active child process will be able to print logs on stdout and stderr.\n");
-    fprintf(stderr, "       Both descriptors will be closed after test.\n");
-    fprintf(stderr, "  --help\t This help\n\n");
-    std::for_each(m_collectors.begin(),
-                  m_collectors.end(),
-                  [] (const TestResultsCollectors::value_type & collector)
-                  {
-                      fprintf(stderr,
-                              "Output %s has specific args:\n",
-                              collector.first.c_str());
-                      fprintf(stderr,
-                              "%s\n",
-                              collector.second->
-                                  CollectorSpecificHelp().c_str());
-                  });
-    fprintf(stderr, "For bug reporting, please write to:\n");
-    fprintf(stderr, "<p.dobrowolsk@samsung.com>\n");
+       fprintf(stderr, "Usage: runner [options]\n\n");
+       fprintf(stderr, "Output type:\n");
+       fprintf(stderr, "  --output=<output type> --output=<output type> ...\n");
+       fprintf(stderr, "\n  possible output types:\n");
+       FOREACH(type, TestResultsCollectorBase::GetCollectorsNames()) {
+               fprintf(stderr, "    --output=%s\n", type->c_str());
+       }
+       fprintf(stderr, "\n  example:\n");
+       fprintf(stderr,
+                       "    test-binary --output=text --output=xml --file=output.xml\n\n");
+       fprintf(stderr, "Other parameters:\n");
+       fprintf(stderr,
+                       "  --regexp='regexp'\t Only selected tests"
+                       " which names match regexp run\n\n");
+       fprintf(stderr, "  --start=<test id>\tStart from concrete test id");
+       fprintf(stderr, "  --group=<group name>\t Run tests only from one group\n");
+       fprintf(stderr, "  --runignored\t Run also ignored tests\n");
+       fprintf(stderr, "  --list\t Show a list of Test IDs\n");
+       fprintf(stderr, "  --listgroups\t Show a list of Test Group names \n");
+       fprintf(stderr, "  --only-from-xml=<xml file>\t Run only testcases specified in XML file \n"
+                       "       XML name is taken from attribute id=\"part1_part2\" as whole.\n"
+                       "       If part1 is not found (no _) then it is implicitily "
+                       "set according to suite part1 from binary tests\n");
+       fprintf(
+               stderr,
+               "  --listingroup=<group name>\t Show a list of Test IDS in one group\n");
+       fprintf(stderr, "  --allowchildlogs\t Allow to print logs from child process on screen.\n");
+       fprintf(stderr,
+                       "       When active child process will be able to print logs on stdout and stderr.\n");
+       fprintf(stderr, "       Both descriptors will be closed after test.\n");
+       fprintf(stderr, "  --help\t This help\n\n");
+       std::for_each(m_collectors.begin(),
+                                 m_collectors.end(),
+       [](const TestResultsCollectors::value_type & collector) {
+               fprintf(stderr,
+                               "Output %s has specific args:\n",
+                               collector.first.c_str());
+               fprintf(stderr,
+                               "%s\n",
+                               collector.second->
+                               CollectorSpecificHelp().c_str());
+       });
+       fprintf(stderr, "For bug reporting, please write to:\n");
+       fprintf(stderr, "<p.dobrowolsk@samsung.com>\n");
 }
 
 int TestRunner::ExecTestRunner(int argc, char *argv[])
 {
-    std::vector<std::string> args;
-    for (int i = 0; i < argc; ++i) {
-        args.push_back(argv[i]);
-    }
-    return ExecTestRunner(args);
+       std::vector<std::string> args;
+
+       for (int i = 0; i < argc; ++i) {
+               args.push_back(argv[i]);
+       }
+
+       return ExecTestRunner(args);
 }
 
 void TestRunner::MarkAssertion()
 {
-    ++m_totalAssertions;
+       ++m_totalAssertions;
 }
 
-int TestRunner::ExecTestRunner(const ArgsListvalue)
+int TestRunner::ExecTestRunner(const ArgsList &value)
 {
-    m_runIgnored = false;
-    ArgsList args = value;
-    // Parse command line
-    if (args.size() == 1) {
-        InvalidArgs();
-        Usage();
-        return -1;
-    }
-
-    args.erase(args.begin());
-
-    bool showHelp = false;
-    bool justList = false;
-    std::vector<std::string> xmlFiles;
-
-    TestResultsCollectorBasePtr currentCollector;
-
-    // Parse each argument
-    FOREACH(it, args)
-    {
-        std::string arg = *it;
-        const std::string regexp = "--regexp=";
-        const std::string output = "--output=";
-        const std::string groupId = "--group=";
-        const std::string runIgnored = "--runignored";
-        const std::string listCmd = "--list";
-        const std::string startCmd = "--start=";
-        const std::string listGroupsCmd = "--listgroups";
-        const std::string listInGroup = "--listingroup=";
-        const std::string allowChildLogs = "--allowchildlogs";
-        const std::string onlyFromXML = "--only-from-xml=";
-
-        if (currentCollector) {
-            if (currentCollector->ParseCollectorSpecificArg(arg)) {
-                continue;
-            }
-        }
-
-        if (arg.find(startCmd) == 0) {
-            arg.erase(0, startCmd.length());
-            FOREACH(group, m_testGroups) {
-                FOREACH(tc, group->second) {
-                    if (tc->name == arg) {
-                        m_startTestId = arg;
-                        break;
-                    }
-                }
-                if (!m_startTestId.empty()) {
-                    break;
-                }
-            }
-            if (!m_startTestId.empty()) {
-                continue;
-            }
-            InvalidArgs();
-            fprintf(stderr, "Start test id has not been found\n");
-            Usage();
-            return 0;
-        } else if (arg.find(groupId) == 0) {
-            arg.erase(0, groupId.length());
-            TestCaseGroupMap::iterator found = m_testGroups.find(arg);
-            if (found != m_testGroups.end()) {
-                std::string name = found->first;
-                TestCaseStructList newList = found->second;
-                m_testGroups.clear();
-                m_testGroups[name] = newList;
-            } else {
-                fprintf(stderr, "Group %s not found\n", arg.c_str());
-                InvalidArgs();
-                Usage();
-                return -1;
-            }
-        } else if (arg == runIgnored) {
-            m_runIgnored = true;
-        } else if (arg == listCmd) {
-            justList = true;
-        } else if (arg == listGroupsCmd) {
-            FOREACH(group, m_testGroups) {
-                printf("GR:%s\n", group->first.c_str());
-            }
-            return 0;
-        } else if (arg.find(listInGroup) == 0) {
-            arg.erase(0, listInGroup.length());
-            FOREACH(test, m_testGroups[arg]) {
-                printf("ID:%s\n", test->name.c_str());
-            }
-            return 0;
-        } else if (arg.find(allowChildLogs) == 0) {
-            arg.erase(0, allowChildLogs.length());
-            m_allowChildLogs = true;
-        } else if (arg == "--help") {
-            showHelp = true;
-        } else if (arg.find(output) == 0) {
-            arg.erase(0, output.length());
-            if (m_collectors.find(arg) != m_collectors.end()) {
-                InvalidArgs(
-                    "Multiple outputs of the same type are not supported!");
-                Usage();
-                return -1;
-            }
-            currentCollector.reset(TestResultsCollectorBase::Create(arg));
-            if (!currentCollector) {
-                InvalidArgs("Unsupported output type!");
-                Usage();
-                return -1;
-            }
-            m_collectors[arg] = currentCollector;
-        } else if (arg.find(regexp) == 0) {
-            arg.erase(0, regexp.length());
-            if (arg.length() == 0) {
-                InvalidArgs();
-                Usage();
-                return -1;
-            }
-
-            if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') {
-                arg.erase(0);
-                arg.erase(arg.length() - 1);
-            }
-
-            if (arg.length() == 0) {
-                InvalidArgs();
-                Usage();
-                return -1;
-            }
-
-            pcrecpp::RE re(arg.c_str());
-            FOREACH(group, m_testGroups) {
-                TestCaseStructList newList;
-                FOREACH(iterator, group->second)
-                {
-                    if (re.PartialMatch(iterator->name)) {
-                        newList.push_back(*iterator);
-                    }
-                }
-                group->second = newList;
-            }
-        } else if(arg.find(onlyFromXML) == 0) {
-            arg.erase(0, onlyFromXML.length());
-            if (arg.length() == 0) {
-                InvalidArgs();
-                Usage();
-                return -1;
-            }
-
-            if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') {
-                arg.erase(0);
-                arg.erase(arg.length() - 1);
-            }
-
-            if (arg.length() == 0) {
-                InvalidArgs();
-                Usage();
-                return -1;
-            }
-
-            xmlFiles.push_back(arg);
-        } else {
-            InvalidArgs();
-            Usage();
-            return -1;
-        }
-    }
-
-    if(!xmlFiles.empty())
-    {
-        if(!filterGroupsByXmls(xmlFiles))
-        {
-            fprintf(stderr, "XML file is not correct\n");
-            return 0;
-        }
-    }
-
-    if(justList)
-    {
-        FOREACH(group, m_testGroups) {
-            FOREACH(test, group->second) {
-                printf("ID:%s:%s\n", group->first.c_str(), test->name.c_str());
-            }
-        }
-        return 0;
-    }
-
-    currentCollector.reset();
-
-    // Show help
-    if (showHelp) {
-        Usage();
-        return 0;
-    }
-
-    if (m_collectors.empty()) {
-        TestResultsCollectorBasePtr collector(
-            TestResultsCollectorBase::Create("text"));
-        m_collectors["text"] = collector;
-    }
-
-    for (auto it = m_collectors.begin(); it != m_collectors.end(); ++it) {
-        if (!it->second->Configure()) {
-            fprintf(stderr, "Could not configure selected output");
-            return 0;
-        }
-    }
-
-    // Run tests
-    RunTests();
-
-    return 0;
+       m_runIgnored = false;
+       ArgsList args = value;
+
+       // Parse command line
+       if (args.size() == 1) {
+               InvalidArgs();
+               Usage();
+               return -1;
+       }
+
+       args.erase(args.begin());
+       bool showHelp = false;
+       bool justList = false;
+       std::vector<std::string> xmlFiles;
+       TestResultsCollectorBasePtr currentCollector;
+       // Parse each argument
+       FOREACH(it, args) {
+               std::string arg = *it;
+               const std::string regexp = "--regexp=";
+               const std::string output = "--output=";
+               const std::string groupId = "--group=";
+               const std::string runIgnored = "--runignored";
+               const std::string listCmd = "--list";
+               const std::string startCmd = "--start=";
+               const std::string listGroupsCmd = "--listgroups";
+               const std::string listInGroup = "--listingroup=";
+               const std::string allowChildLogs = "--allowchildlogs";
+               const std::string onlyFromXML = "--only-from-xml=";
+
+               if (currentCollector) {
+                       if (currentCollector->ParseCollectorSpecificArg(arg)) {
+                               continue;
+                       }
+               }
+
+               if (arg.find(startCmd) == 0) {
+                       arg.erase(0, startCmd.length());
+                       FOREACH(group, m_testGroups) {
+                               FOREACH(tc, group->second) {
+                                       if (tc->name == arg) {
+                                               m_startTestId = arg;
+                                               break;
+                                       }
+                               }
+
+                               if (!m_startTestId.empty()) {
+                                       break;
+                               }
+                       }
+
+                       if (!m_startTestId.empty()) {
+                               continue;
+                       }
+
+                       InvalidArgs();
+                       fprintf(stderr, "Start test id has not been found\n");
+                       Usage();
+                       return 0;
+               } else if (arg.find(groupId) == 0) {
+                       arg.erase(0, groupId.length());
+                       TestCaseGroupMap::iterator found = m_testGroups.find(arg);
+
+                       if (found != m_testGroups.end()) {
+                               std::string name = found->first;
+                               TestCaseStructList newList = found->second;
+                               m_testGroups.clear();
+                               m_testGroups[name] = newList;
+                       } else {
+                               fprintf(stderr, "Group %s not found\n", arg.c_str());
+                               InvalidArgs();
+                               Usage();
+                               return -1;
+                       }
+               } else if (arg == runIgnored) {
+                       m_runIgnored = true;
+               } else if (arg == listCmd) {
+                       justList = true;
+               } else if (arg == listGroupsCmd) {
+                       FOREACH(group, m_testGroups) {
+                               printf("GR:%s\n", group->first.c_str());
+                       }
+                       return 0;
+               } else if (arg.find(listInGroup) == 0) {
+                       arg.erase(0, listInGroup.length());
+                       FOREACH(test, m_testGroups[arg]) {
+                               printf("ID:%s\n", test->name.c_str());
+                       }
+                       return 0;
+               } else if (arg.find(allowChildLogs) == 0) {
+                       arg.erase(0, allowChildLogs.length());
+                       m_allowChildLogs = true;
+               } else if (arg == "--help") {
+                       showHelp = true;
+               } else if (arg.find(output) == 0) {
+                       arg.erase(0, output.length());
+
+                       if (m_collectors.find(arg) != m_collectors.end()) {
+                               InvalidArgs(
+                                       "Multiple outputs of the same type are not supported!");
+                               Usage();
+                               return -1;
+                       }
+
+                       currentCollector.reset(TestResultsCollectorBase::Create(arg));
+
+                       if (!currentCollector) {
+                               InvalidArgs("Unsupported output type!");
+                               Usage();
+                               return -1;
+                       }
+
+                       m_collectors[arg] = currentCollector;
+               } else if (arg.find(regexp) == 0) {
+                       arg.erase(0, regexp.length());
+
+                       if (arg.length() == 0) {
+                               InvalidArgs();
+                               Usage();
+                               return -1;
+                       }
+
+                       if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') {
+                               arg.erase(0);
+                               arg.erase(arg.length() - 1);
+                       }
+
+                       if (arg.length() == 0) {
+                               InvalidArgs();
+                               Usage();
+                               return -1;
+                       }
+
+                       pcrecpp::RE re(arg.c_str());
+                       FOREACH(group, m_testGroups) {
+                               TestCaseStructList newList;
+                               FOREACH(iterator, group->second) {
+                                       if (re.PartialMatch(iterator->name)) {
+                                               newList.push_back(*iterator);
+                                       }
+                               }
+                               group->second = newList;
+                       }
+               } else if (arg.find(onlyFromXML) == 0) {
+                       arg.erase(0, onlyFromXML.length());
+
+                       if (arg.length() == 0) {
+                               InvalidArgs();
+                               Usage();
+                               return -1;
+                       }
+
+                       if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') {
+                               arg.erase(0);
+                               arg.erase(arg.length() - 1);
+                       }
+
+                       if (arg.length() == 0) {
+                               InvalidArgs();
+                               Usage();
+                               return -1;
+                       }
+
+                       xmlFiles.push_back(arg);
+               } else {
+                       InvalidArgs();
+                       Usage();
+                       return -1;
+               }
+       }
+
+       if (!xmlFiles.empty()) {
+               if (!filterGroupsByXmls(xmlFiles)) {
+                       fprintf(stderr, "XML file is not correct\n");
+                       return 0;
+               }
+       }
+
+       if (justList) {
+               FOREACH(group, m_testGroups) {
+                       FOREACH(test, group->second) {
+                               printf("ID:%s:%s\n", group->first.c_str(), test->name.c_str());
+                       }
+               }
+               return 0;
+       }
+
+       currentCollector.reset();
+
+       // Show help
+       if (showHelp) {
+               Usage();
+               return 0;
+       }
+
+       if (m_collectors.empty()) {
+               TestResultsCollectorBasePtr collector(
+                       TestResultsCollectorBase::Create("text"));
+               m_collectors["text"] = collector;
+       }
+
+       for (auto it = m_collectors.begin(); it != m_collectors.end(); ++it) {
+               if (!it->second->Configure()) {
+                       fprintf(stderr, "Could not configure selected output");
+                       return 0;
+               }
+       }
+
+       // Run tests
+       RunTests();
+       return 0;
 }
 
 bool TestRunner::getRunIgnored() const
 {
-    return m_runIgnored;
+       return m_runIgnored;
 }
 
 void TestRunner::Terminate()
 {
-    m_terminate = true;
+       m_terminate = true;
 }
 
 bool TestRunner::GetAllowChildLogs()
 {
-    return m_allowChildLogs;
+       return m_allowChildLogs;
 }
 
 }
index 0ebe86c..3b59347 100644 (file)
@@ -48,25 +48,26 @@ const int CHILD_TEST_FAIL    = 0;
 const int CHILD_TEST_PASS    = 1;
 const int CHILD_TEST_IGNORED = 2;
 
-int closeOutput() {
-    int devnull;
-    int retcode = -1;
-    if (-1 == (devnull = TEMP_FAILURE_RETRY(open("/dev/null", O_WRONLY))))
-        return -1;
+int closeOutput()
+{
+       int devnull;
+       int retcode = -1;
 
-    // replace stdout with /dev/null
-    if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDOUT_FILENO)))
-        goto end;
+       if (-1 == (devnull = TEMP_FAILURE_RETRY(open("/dev/null", O_WRONLY))))
+               return -1;
 
-    // replace stderr with /dev/null
-    if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDERR_FILENO)))
-        goto end;
+       // replace stdout with /dev/null
+       if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDOUT_FILENO)))
+               goto end;
 
-    retcode = 0;
+       // replace stderr with /dev/null
+       if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDERR_FILENO)))
+               goto end;
 
+       retcode = 0;
 end:
-    close(devnull);
-    return retcode;
+       close(devnull);
+       return retcode;
 }
 
 } // namespace anonymous
@@ -76,250 +77,247 @@ namespace Test {
 
 PipeWrapper::PipeWrapper()
 {
-    if (-1 == pipe(m_pipefd)) {
-        m_pipefd[0] = PIPE_CLOSED;
-        m_pipefd[1] = PIPE_CLOSED;
-    }
+       if (-1 == pipe(m_pipefd)) {
+               m_pipefd[0] = PIPE_CLOSED;
+               m_pipefd[1] = PIPE_CLOSED;
+       }
 }
 
 PipeWrapper::~PipeWrapper()
 {
-    closeHelp(0);
-    closeHelp(1);
+       closeHelp(0);
+       closeHelp(1);
 }
 
 bool PipeWrapper::isReady()
 {
-    return m_pipefd[0] != PIPE_CLOSED || m_pipefd[1] != PIPE_CLOSED;
+       return m_pipefd[0] != PIPE_CLOSED || m_pipefd[1] != PIPE_CLOSED;
 }
 
 void PipeWrapper::setUsage(Usage usage)
 {
-    if (usage == READONLY) {
-        closeHelp(1);
-    }
-    if (usage == WRITEONLY) {
-        closeHelp(0);
-    }
+       if (usage == READONLY) {
+               closeHelp(1);
+       }
+
+       if (usage == WRITEONLY) {
+               closeHelp(0);
+       }
 }
 
 PipeWrapper::Status PipeWrapper::send(int code, std::string &message)
 {
-    if (m_pipefd[1] == PIPE_CLOSED) {
-        return ERROR;
-    }
-
-    std::ostringstream output;
-    output << toBinaryString(code);
-    output << toBinaryString(static_cast<int>(message.size()));
-    output << message;
-
-    std::string binary = output.str();
-    int size = binary.size();
-
-    if ((writeHelp(&size,
-                   sizeof(int)) == ERROR) ||
-        (writeHelp(binary.c_str(), size) == ERROR))
-    {
-        return ERROR;
-    }
-    return SUCCESS;
+       if (m_pipefd[1] == PIPE_CLOSED) {
+               return ERROR;
+       }
+
+       std::ostringstream output;
+       output << toBinaryString(code);
+       output << toBinaryString(static_cast<int>(message.size()));
+       output << message;
+       std::string binary = output.str();
+       int size = binary.size();
+
+       if ((writeHelp(&size,
+                                  sizeof(int)) == ERROR) ||
+                       (writeHelp(binary.c_str(), size) == ERROR)) {
+               return ERROR;
+       }
+
+       return SUCCESS;
 }
 
 PipeWrapper::Status PipeWrapper::receive(int &code, std::string &data, time_t deadline)
 {
-    if (m_pipefd[0] == PIPE_CLOSED) {
-        return ERROR;
-    }
-
-    int size;
-    Status ret;
-
-    if ((ret = readHelp(&size, sizeof(int), deadline)) != SUCCESS) {
-        return ret;
-    }
-
-    std::vector<char> buffer;
-    buffer.resize(size);
-
-    if ((ret = readHelp(&buffer[0], size, deadline)) != SUCCESS) {
-        return ret;
-    }
-
-    try {
-        VcoreDPL::BinaryQueue queue;
-        queue.AppendCopy(&buffer[0], size);
-
-        queue.FlattenConsume(&code, sizeof(int));
-        queue.FlattenConsume(&size, sizeof(int));
-
-        buffer.resize(size);
-
-        queue.FlattenConsume(&buffer[0], size);
-        data.assign(buffer.begin(), buffer.end());
-    } catch (VcoreDPL::BinaryQueue::Exception::Base &e) {
-        return ERROR;
-    }
-    return SUCCESS;
+       if (m_pipefd[0] == PIPE_CLOSED) {
+               return ERROR;
+       }
+
+       int size;
+       Status ret;
+
+       if ((ret = readHelp(&size, sizeof(int), deadline)) != SUCCESS) {
+               return ret;
+       }
+
+       std::vector<char> buffer;
+       buffer.resize(size);
+
+       if ((ret = readHelp(&buffer[0], size, deadline)) != SUCCESS) {
+               return ret;
+       }
+
+       try {
+               VcoreDPL::BinaryQueue queue;
+               queue.AppendCopy(&buffer[0], size);
+               queue.FlattenConsume(&code, sizeof(int));
+               queue.FlattenConsume(&size, sizeof(int));
+               buffer.resize(size);
+               queue.FlattenConsume(&buffer[0], size);
+               data.assign(buffer.begin(), buffer.end());
+       } catch (VcoreDPL::BinaryQueue::Exception::Base &e) {
+               return ERROR;
+       }
+
+       return SUCCESS;
 }
 
 void PipeWrapper::closeAll()
 {
-    closeHelp(0);
-    closeHelp(1);
+       closeHelp(0);
+       closeHelp(1);
 }
 
 std::string PipeWrapper::toBinaryString(int data)
 {
-    char buffer[sizeof(int)];
-    memcpy(buffer, &data, sizeof(int));
-    return std::string(buffer, buffer + sizeof(int));
+       char buffer[sizeof(int)];
+       memcpy(buffer, &data, sizeof(int));
+       return std::string(buffer, buffer + sizeof(int));
 }
 
 void PipeWrapper::closeHelp(int desc)
 {
-    if (m_pipefd[desc] != PIPE_CLOSED) {
-        TEMP_FAILURE_RETRY(close(m_pipefd[desc]));
-        m_pipefd[desc] = PIPE_CLOSED;
-    }
+       if (m_pipefd[desc] != PIPE_CLOSED) {
+               TEMP_FAILURE_RETRY(close(m_pipefd[desc]));
+               m_pipefd[desc] = PIPE_CLOSED;
+       }
 }
 
 PipeWrapper::Status PipeWrapper::writeHelp(const void *buffer, int size)
 {
-    int ready = 0;
-    const char *p = static_cast<const char *>(buffer);
-    while (ready != size) {
-        int ret = write(m_pipefd[1], &p[ready], size - ready);
-
-        if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
-            continue;
-        }
-
-        if (ret == -1) {
-            closeHelp(1);
-            return ERROR;
-        }
-
-        ready += ret;
-    }
-    return SUCCESS;
+       int ready = 0;
+       const char *p = static_cast<const char *>(buffer);
+
+       while (ready != size) {
+               int ret = write(m_pipefd[1], &p[ready], size - ready);
+
+               if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
+                       continue;
+               }
+
+               if (ret == -1) {
+                       closeHelp(1);
+                       return ERROR;
+               }
+
+               ready += ret;
+       }
+
+       return SUCCESS;
 }
 
 PipeWrapper::Status PipeWrapper::readHelp(void *buf, int size, time_t deadline)
 {
-    int ready = 0;
-    char *buffer = static_cast<char*>(buf);
-    while (ready != size) {
-        time_t wait = deadline - time(0);
-        wait = wait < 1 ? 1 : wait;
-        pollfd fds = { m_pipefd[0], POLLIN, 0 };
+       int ready = 0;
+       char *buffer = static_cast<char *>(buf);
+
+       while (ready != size) {
+               time_t wait = deadline - time(0);
+               wait = wait < 1 ? 1 : wait;
+               pollfd fds = { m_pipefd[0], POLLIN, 0 };
+               int pollReturn = poll(&fds, 1, wait * 1000);
 
-        int pollReturn = poll(&fds, 1, wait * 1000);
+               if (pollReturn == 0) {
+                       return TIMEOUT; // Timeout
+               }
 
-        if (pollReturn == 0) {
-            return TIMEOUT; // Timeout
-        }
+               if (pollReturn < -1) {
+                       return ERROR;
+               }
 
-        if (pollReturn < -1) {
-            return ERROR;
-        }
+               int ret = read(m_pipefd[0], &buffer[ready], size - ready);
 
-        int ret = read(m_pipefd[0], &buffer[ready], size - ready);
+               if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
+                       continue;
+               }
 
-        if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
-            continue;
-        }
+               if (ret == -1 || ret == 0) {
+                       closeHelp(0);
+                       return ERROR;
+               }
 
-        if (ret == -1 || ret == 0) {
-            closeHelp(0);
-            return ERROR;
-        }
+               ready += ret;
+       }
 
-        ready += ret;
-    }
-    return SUCCESS;
+       return SUCCESS;
 }
 
 void RunChildProc(TestRunner::TestCase procChild)
 {
-    PipeWrapper pipe;
-    if (!pipe.isReady()) {
-        throw TestRunner::TestFailed("Pipe creation failed");
-    }
-
-    pid_t pid = fork();
-
-    if (pid == -1) {
-        throw TestRunner::TestFailed("Child creation failed");
-    }
-
-    if (pid != 0) {
-        // parent code
-        pipe.setUsage(PipeWrapper::READONLY);
-
-        int code;
-        std::string message;
-
-        int pipeReturn = pipe.receive(code, message, time(0) + 10);
-
-        if (pipeReturn != PipeWrapper::SUCCESS) { // Timeout or reading error
-            pipe.closeAll();
-            kill(pid, SIGKILL);
-        }
-
-        int status;
-        waitpid(pid, &status, 0);
-
-        if (pipeReturn == PipeWrapper::TIMEOUT) {
-            throw TestRunner::TestFailed("Timeout");
-        }
-
-        if (pipeReturn == PipeWrapper::ERROR) {
-            throw TestRunner::TestFailed("Reading pipe error");
-        }
-
-        if (code == CHILD_TEST_FAIL) {
-            throw TestRunner::TestFailed(message);
-        } else if (code == CHILD_TEST_IGNORED) {
-            throw TestRunner::Ignored(message);
-        }
-    } else {
-        // child code
-
-        // End Runner after current test
-        TestRunnerSingleton::Instance().Terminate();
-
-        int code = CHILD_TEST_PASS;
-        std::string msg;
-
-        bool allowLogs = TestRunnerSingleton::Instance().GetAllowChildLogs();
-
-        close(STDIN_FILENO);
-        if (!allowLogs) {
-            closeOutput(); // if fails nothing we can do
-        }
-
-        pipe.setUsage(PipeWrapper::WRITEONLY);
-
-        try {
-            procChild();
-        } catch (const VcoreDPL::Test::TestRunner::TestFailed &e) {
-            msg = e.GetMessage();
-            code = CHILD_TEST_FAIL;
-        } catch (const VcoreDPL::Test::TestRunner::Ignored &e) {
-            msg = e.GetMessage();
-            code = CHILD_TEST_IGNORED;
-        } catch (...) { // catch all exception generated by "user" code
-            msg = "unhandled exeception";
-            code = CHILD_TEST_FAIL;
-        }
-
-        if (allowLogs) {
-            closeOutput();
-        }
-
-        pipe.send(code, msg);
-    }
+       PipeWrapper pipe;
+
+       if (!pipe.isReady()) {
+               throw TestRunner::TestFailed("Pipe creation failed");
+       }
+
+       pid_t pid = fork();
+
+       if (pid == -1) {
+               throw TestRunner::TestFailed("Child creation failed");
+       }
+
+       if (pid != 0) {
+               // parent code
+               pipe.setUsage(PipeWrapper::READONLY);
+               int code;
+               std::string message;
+               int pipeReturn = pipe.receive(code, message, time(0) + 10);
+
+               if (pipeReturn != PipeWrapper::SUCCESS) { // Timeout or reading error
+                       pipe.closeAll();
+                       kill(pid, SIGKILL);
+               }
+
+               int status;
+               waitpid(pid, &status, 0);
+
+               if (pipeReturn == PipeWrapper::TIMEOUT) {
+                       throw TestRunner::TestFailed("Timeout");
+               }
+
+               if (pipeReturn == PipeWrapper::ERROR) {
+                       throw TestRunner::TestFailed("Reading pipe error");
+               }
+
+               if (code == CHILD_TEST_FAIL) {
+                       throw TestRunner::TestFailed(message);
+               } else if (code == CHILD_TEST_IGNORED) {
+                       throw TestRunner::Ignored(message);
+               }
+       } else {
+               // child code
+               // End Runner after current test
+               TestRunnerSingleton::Instance().Terminate();
+               int code = CHILD_TEST_PASS;
+               std::string msg;
+               bool allowLogs = TestRunnerSingleton::Instance().GetAllowChildLogs();
+               close(STDIN_FILENO);
+
+               if (!allowLogs) {
+                       closeOutput(); // if fails nothing we can do
+               }
+
+               pipe.setUsage(PipeWrapper::WRITEONLY);
+
+               try {
+                       procChild();
+               } catch (const VcoreDPL::Test::TestRunner::TestFailed &e) {
+                       msg = e.GetMessage();
+                       code = CHILD_TEST_FAIL;
+               } catch (const VcoreDPL::Test::TestRunner::Ignored &e) {
+                       msg = e.GetMessage();
+                       code = CHILD_TEST_IGNORED;
+               } catch (...) { // catch all exception generated by "user" code
+                       msg = "unhandled exeception";
+                       code = CHILD_TEST_FAIL;
+               }
+
+               if (allowLogs) {
+                       closeOutput();
+               }
+
+               pipe.send(code, msg);
+       }
 }
 } // namespace Test
 } // namespace VcoreDPL
index 4785888..3ab4bd9 100644 (file)
@@ -44,232 +44,246 @@ namespace VcoreDPL {
 namespace Test {
 
 SimplePipeWrapper::SimplePipeWrapper()
-: PipeWrapper()
+       : PipeWrapper()
 {
-
 }
 
 SimplePipeWrapper::~SimplePipeWrapper()
 {
-
 }
 
 PipeWrapper::Status SimplePipeWrapper::send(std::string &message)
 {
-    if (m_pipefd[1] == PIPE_CLOSED) {
-           return ERROR;
-    }
-
-    if (message.size() > PIPE_BUF-1) {
-        return ERROR;
-    }
+       if (m_pipefd[1] == PIPE_CLOSED) {
+               return ERROR;
+       }
 
-    char buffer[PIPE_BUF] = { 0 };
+       if (message.size() > PIPE_BUF - 1) {
+               return ERROR;
+       }
 
+       char buffer[PIPE_BUF] = { 0 };
 
-    for(unsigned int i = 0; i < message.size(); ++i) {
-        buffer[i] = message[i];
-    }
+       for (unsigned int i = 0; i < message.size(); ++i) {
+               buffer[i] = message[i];
+       }
 
-    return writeHelp(buffer, PIPE_BUF);
+       return writeHelp(buffer, PIPE_BUF);
 }
 
 PipeWrapper::Status SimplePipeWrapper::receive(std::string &data, bool &empty, time_t deadline)
 {
-    if (m_pipefd[0] == PIPE_CLOSED) {
-        return ERROR;
-    }
-
-    empty = false;
-
-    data.resize(PIPE_BUF);
-
-    char buffer[PIPE_BUF] = { 0 };
-
-    int ready = 0;
-    while (ready != PIPE_BUF) {
-        time_t wait = deadline - time(0);
-        wait = wait < 1 ? 1 : wait;
-        pollfd fds = { m_pipefd[0], POLLIN, 0 };
-
-        int pollReturn = poll(&fds, 1, wait * 1000);
-
-        if (pollReturn == 0) {
-            return TIMEOUT; // Timeout
-        }
-
-        if (pollReturn < -1) {
-            return ERROR;
-        }
-        int ret = read(m_pipefd[0], &buffer[ready], PIPE_BUF - ready);
-        if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
-            continue;
-        }
-
-        if (ret == -1) {
-            closeHelp(0);
-            return ERROR;
-        }
-        if (ret == 0) {
-            empty = true;
-            break;
-        }
-
-        ready += ret;
-    }
-
-
-    for(unsigned int i = 0; i < PIPE_BUF; ++i){
-        if(buffer[i] == 0) {
-            data.resize(i);
-            return SUCCESS;
-        }
-        data[i] = buffer[i];
-    }
-
-    return ERROR;
+       if (m_pipefd[0] == PIPE_CLOSED) {
+               return ERROR;
+       }
+
+       empty = false;
+       data.resize(PIPE_BUF);
+       char buffer[PIPE_BUF] = { 0 };
+       int ready = 0;
+
+       while (ready != PIPE_BUF) {
+               time_t wait = deadline - time(0);
+               wait = wait < 1 ? 1 : wait;
+               pollfd fds = { m_pipefd[0], POLLIN, 0 };
+               int pollReturn = poll(&fds, 1, wait * 1000);
+
+               if (pollReturn == 0) {
+                       return TIMEOUT; // Timeout
+               }
+
+               if (pollReturn < -1) {
+                       return ERROR;
+               }
+
+               int ret = read(m_pipefd[0], &buffer[ready], PIPE_BUF - ready);
+
+               if (ret == -1 && (errno == EAGAIN || errno == EINTR)) {
+                       continue;
+               }
+
+               if (ret == -1) {
+                       closeHelp(0);
+                       return ERROR;
+               }
+
+               if (ret == 0) {
+                       empty = true;
+                       break;
+               }
+
+               ready += ret;
+       }
+
+       for (unsigned int i = 0; i < PIPE_BUF; ++i) {
+               if (buffer[i] == 0) {
+                       data.resize(i);
+                       return SUCCESS;
+               }
+
+               data[i] = buffer[i];
+       }
+
+       return ERROR;
 }
 
 void RunMultiProc(TestRunner::TestCase procMulti)
 {
-    SimplePipeWrapper pipe;
-    int code = MULTI_TEST_PASS;
-    std::string msg = "";
-    int pipeReturn;
-
-    int waitStatus;
-
-    pid_t top_pid = getpid();
-
-    if (!pipe.isReady()) {
-        throw TestRunner::TestFailed("Pipe creation failed");
-    }
-    // pipe
-
-    try {
-        procMulti();
-    } catch (const TestRunner::TestFailed &e) {
-        code = MULTI_TEST_FAILED;
-        msg = e.GetMessage();
-    } catch (const TestRunner::Ignored &e) {
-        code = MULTI_TEST_IGNORED;
-        msg = e.GetMessage();
-    } catch (const VcoreDPL::Exception &e) {
-        code = MULTI_TEST_INTERNAL;
-        msg = "DPL exception:" + e.GetMessage();
-    } catch (const std::exception &) {
-        code = MULTI_TEST_INTERNAL;
-        msg = "std exception";
-    } catch (...) {
-        // Unknown exception failure
-        code = MULTI_TEST_INTERNAL;
-        msg = "unknown exception";
-    }
-
-    while (true) {
-        pid_t child_pid = wait(&waitStatus);
-        if (child_pid == -1) {
-            if (errno == ECHILD) {
-                if (top_pid == getpid()) {
-                    std::string recMsg="";
-
-                    pipe.setUsage(PipeWrapper::READONLY);
-
-                    bool empty=false;
-                    while(true) {
-                        pipeReturn = pipe.receive(recMsg, empty, time(0) + 10);
-
-                        if (empty) {
-                            break;
-                        }
-                        if (pipeReturn == PipeWrapper::ERROR) {
-                            pipe.closeAll();
-                            throw TestRunner::TestFailed("Reading pipe error");
-                        } else if (pipeReturn == PipeWrapper::TIMEOUT) {
-                            pipe.closeAll();
-                            throw TestRunner::TestFailed("Timeout error");
-                        }
-                        msg = msg + "\n" + recMsg;
-                    }
-                    pipe.closeAll();
-
-                    switch(code) {
-                    case MULTI_TEST_PASS:
-                        return;
-                    case MULTI_TEST_FAILED:
-                        throw TestRunner::TestFailed(msg);
-                    case MULTI_TEST_IGNORED:
-                        throw TestRunner::Ignored(msg);
-                    case MULTI_TEST_INTERNAL:
-                        throw TestRunner::TestFailed(msg);
-                    default:
-                        throw TestRunner::TestFailed(msg);
-                    }
-                } else {
-                    pipe.setUsage(PipeWrapper::WRITEONLY);
-
-                    pipeReturn = pipe.send(msg);
-
-                    if (pipeReturn == PipeWrapper::ERROR) {
-                        pipe.closeAll();
-                        code = MULTI_TEST_ERROR;
-                    }
-
-                    exit(code);
-                }
-            }
-        } else if (WIFEXITED(waitStatus)) {
-            if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_FAILED) {
-                switch (code) {
-                    case MULTI_TEST_PASS:
-                        code = MULTI_TEST_FAILED;
-                        break;
-                    case MULTI_TEST_FAILED:
-                        break;
-                    case MULTI_TEST_IGNORED:
-                        code = MULTI_TEST_FAILED;
-                        break;
-                    case MULTI_TEST_INTERNAL:
-                        break;
-                    default:
-                        break;
-                    }
-            } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_IGNORED) {
-                switch (code) {
-                case MULTI_TEST_PASS:
-                    code = MULTI_TEST_IGNORED;
-                    break;
-                case MULTI_TEST_FAILED:
-                    break;
-                case MULTI_TEST_IGNORED:
-                    break;
-                case MULTI_TEST_INTERNAL:
-                    break;
-                default:
-                    break;
-                }
-            } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_INTERNAL) {
-                switch (code) {
-                case MULTI_TEST_PASS:
-                    code = MULTI_TEST_INTERNAL;
-                    break;
-                case MULTI_TEST_FAILED:
-                    code = MULTI_TEST_INTERNAL;
-                    break;
-                case MULTI_TEST_IGNORED:
-                    code = MULTI_TEST_INTERNAL;
-                    break;
-                case MULTI_TEST_INTERNAL:
-                    break;
-                default:
-                    break;
-                }
-            } else  if ((signed char)WEXITSTATUS(waitStatus) != MULTI_TEST_PASS) {
-                code = MULTI_TEST_ERROR;
-                msg = "PROCESS BAD CODE RETURN";
-            }
-        }
-    }
+       SimplePipeWrapper pipe;
+       int code = MULTI_TEST_PASS;
+       std::string msg = "";
+       int pipeReturn;
+       int waitStatus;
+       pid_t top_pid = getpid();
+
+       if (!pipe.isReady()) {
+               throw TestRunner::TestFailed("Pipe creation failed");
+       }
+
+       // pipe
+
+       try {
+               procMulti();
+       } catch (const TestRunner::TestFailed &e) {
+               code = MULTI_TEST_FAILED;
+               msg = e.GetMessage();
+       } catch (const TestRunner::Ignored &e) {
+               code = MULTI_TEST_IGNORED;
+               msg = e.GetMessage();
+       } catch (const VcoreDPL::Exception &e) {
+               code = MULTI_TEST_INTERNAL;
+               msg = "DPL exception:" + e.GetMessage();
+       } catch (const std::exception &) {
+               code = MULTI_TEST_INTERNAL;
+               msg = "std exception";
+       } catch (...) {
+               // Unknown exception failure
+               code = MULTI_TEST_INTERNAL;
+               msg = "unknown exception";
+       }
+
+       while (true) {
+               pid_t child_pid = wait(&waitStatus);
+
+               if (child_pid == -1) {
+                       if (errno == ECHILD) {
+                               if (top_pid == getpid()) {
+                                       std::string recMsg = "";
+                                       pipe.setUsage(PipeWrapper::READONLY);
+                                       bool empty = false;
+
+                                       while (true) {
+                                               pipeReturn = pipe.receive(recMsg, empty, time(0) + 10);
+
+                                               if (empty) {
+                                                       break;
+                                               }
+
+                                               if (pipeReturn == PipeWrapper::ERROR) {
+                                                       pipe.closeAll();
+                                                       throw TestRunner::TestFailed("Reading pipe error");
+                                               } else if (pipeReturn == PipeWrapper::TIMEOUT) {
+                                                       pipe.closeAll();
+                                                       throw TestRunner::TestFailed("Timeout error");
+                                               }
+
+                                               msg = msg + "\n" + recMsg;
+                                       }
+
+                                       pipe.closeAll();
+
+                                       switch (code) {
+                                       case MULTI_TEST_PASS:
+                                               return;
+
+                                       case MULTI_TEST_FAILED:
+                                               throw TestRunner::TestFailed(msg);
+
+                                       case MULTI_TEST_IGNORED:
+                                               throw TestRunner::Ignored(msg);
+
+                                       case MULTI_TEST_INTERNAL:
+                                               throw TestRunner::TestFailed(msg);
+
+                                       default:
+                                               throw TestRunner::TestFailed(msg);
+                                       }
+                               } else {
+                                       pipe.setUsage(PipeWrapper::WRITEONLY);
+                                       pipeReturn = pipe.send(msg);
+
+                                       if (pipeReturn == PipeWrapper::ERROR) {
+                                               pipe.closeAll();
+                                               code = MULTI_TEST_ERROR;
+                                       }
+
+                                       exit(code);
+                               }
+                       }
+               } else if (WIFEXITED(waitStatus)) {
+                       if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_FAILED) {
+                               switch (code) {
+                               case MULTI_TEST_PASS:
+                                       code = MULTI_TEST_FAILED;
+                                       break;
+
+                               case MULTI_TEST_FAILED:
+                                       break;
+
+                               case MULTI_TEST_IGNORED:
+                                       code = MULTI_TEST_FAILED;
+                                       break;
+
+                               case MULTI_TEST_INTERNAL:
+                                       break;
+
+                               default:
+                                       break;
+                               }
+                       } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_IGNORED) {
+                               switch (code) {
+                               case MULTI_TEST_PASS:
+                                       code = MULTI_TEST_IGNORED;
+                                       break;
+
+                               case MULTI_TEST_FAILED:
+                                       break;
+
+                               case MULTI_TEST_IGNORED:
+                                       break;
+
+                               case MULTI_TEST_INTERNAL:
+                                       break;
+
+                               default:
+                                       break;
+                               }
+                       } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_INTERNAL) {
+                               switch (code) {
+                               case MULTI_TEST_PASS:
+                                       code = MULTI_TEST_INTERNAL;
+                                       break;
+
+                               case MULTI_TEST_FAILED:
+                                       code = MULTI_TEST_INTERNAL;
+                                       break;
+
+                               case MULTI_TEST_IGNORED:
+                                       code = MULTI_TEST_INTERNAL;
+                                       break;
+
+                               case MULTI_TEST_INTERNAL:
+                                       break;
+
+                               default:
+                                       break;
+                               }
+                       } else  if ((signed char)WEXITSTATUS(waitStatus) != MULTI_TEST_PASS) {
+                               code = MULTI_TEST_ERROR;
+                               msg = "PROCESS BAD CODE RETURN";
+                       }
+               }
+       }
 }
 } // namespace Test
 } // namespace VcoreDPL
index 4fc282a..da032f3 100644 (file)
@@ -26,12 +26,12 @@ namespace VcoreDPL {
 
 std::string CSVTokenizerPolicy::GetSeperators()
 {
-    return ",";
+       return ",";
 }
 
 bool CSVTokenizerPolicy::SkipEmpty()
 {
-    return false;
+       return false;
 }
 
 void CSVTokenizerPolicy::PrepareValue(std::string &)
@@ -40,26 +40,26 @@ void CSVTokenizerPolicy::PrepareValue(std::string &)
 
 bool CSVTokenizerPolicy::TryAgainAtEnd(int)
 {
-    return false;
+       return false;
 }
 
-bool CSVParserPolicy::SkipLine(const std::vector<std::string> & )
+bool CSVParserPolicy::SkipLine(const std::vector<std::string> &)
 {
-    return false;
+       return false;
 }
 
-bool CSVParserPolicy::Validate(std::shared_ptr<std::vector<std::vector<std::string> > > & result)
+bool CSVParserPolicy::Validate(std::shared_ptr<std::vector<std::vector<std::string>>> &result)
 {
-    int num = -1;
-    FOREACH(r, *result)
-    {
-        int size = r->size();
-        if(num != -1 && num != size)
-            return false;
+       int num = -1;
+       FOREACH(r, *result) {
+               int size = r->size();
 
-        num = size;
-    }
-    return true;
+               if (num != -1 && num != size)
+                       return false;
+
+               num = size;
+       }
+       return true;
 }
 
 }
index 03e4a45..8a33548 100644 (file)
@@ -23,7 +23,7 @@
 
 namespace VcoreDPL {
 
-VSToken::VSToken(const std::string & c) :  m_newline(false), m_cell(c)
+VSToken::VSToken(const std::string &c) :  m_newline(false), m_cell(c)
 {
 }
 
@@ -31,14 +31,14 @@ VSToken::VSToken() : m_newline(true)
 {
 }
 
-const std::string & VSToken::cell() const
+const std::string &VSToken::cell() const
 {
-    return m_cell;
+       return m_cell;
 }
 
 bool VSToken::isNewLine()
 {
-    return m_newline;
+       return m_newline;
 }
 
 }
index dc71c8b..30bb846 100644 (file)
@@ -55,30 +55,27 @@ static CertSvcString wrapper_certsvc_string_new(const char *cStr)
                retval = certsvc_string_new(instance, cStr, strlen(cStr), &certsvcStr);
 
        RUNNER_ASSERT_MSG(retval == CERTSVC_SUCCESS,
-               "Failed to certsvc_string_new with retval: " << retval);
-
+                                         "Failed to certsvc_string_new with retval: " << retval);
        return certsvcStr;
 }
 
 const CertStoreType allStoreType = (CertStoreType)(WIFI_STORE | VPN_STORE | EMAIL_STORE);
 
 #define CREATE_INSTANCE \
-  certsvc_instance_new(&instance);
+       certsvc_instance_new(&instance);
 #define FREE_INSTANCE  \
-  certsvc_instance_free(instance);
+       certsvc_instance_free(instance);
 
 RUNNER_TEST(CERTSVC_PKCS12_1001_certsvc_get_root_cert_list)
 {
        CREATE_INSTANCE
-
-       CertSvcStoreCertList* certList = NULL;
+       CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       int result = certsvc_pkcs12_get_certificate_list_from_store(instance, SYSTEM_STORE, DISABLED, &certList, &length);
+       int result = certsvc_pkcs12_get_certificate_list_from_store(instance, SYSTEM_STORE, DISABLED,
+                                &certList, &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        FREE_INSTANCE
 }
 
@@ -86,36 +83,32 @@ RUNNER_TEST(CERTSVC_PKCS12_1002_certsvc_set_cert_to_disabled_and_get_status_for_
 {
        CertStatus status = ENABLED;
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("24ad0b63.0");
-
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, SYSTEM_STORE, Alias, &status);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
 
        // if status is already disabled, roll it back to enable and go on
        if (status == DISABLED) {
-               result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias, ENABLED);
-               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Roll back certificate status to system store failed.");
+               result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias,
+                                ENABLED);
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                                 "Roll back certificate status to system store failed.");
        }
 
-       result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias, DISABLED);
+       result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias,
+                        DISABLED);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to system store failed.");
-
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, SYSTEM_STORE, Alias, &status);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
        RUNNER_ASSERT_MSG(status == DISABLED, "invalid status from system store cert");
-
-       result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias, ENABLED);
+       result = certsvc_pkcs12_set_certificate_status_to_store(instance, SYSTEM_STORE, DISABLED, Alias,
+                        ENABLED);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to system store failed.");
-
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, SYSTEM_STORE, Alias, &status);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
        RUNNER_ASSERT_MSG(status == ENABLED, "invalid status from system store cert");
-
        certsvc_string_free(Alias);
-
        FREE_INSTANCE
 }
 
@@ -123,49 +116,41 @@ RUNNER_TEST(CERTSVC_PKCS12_1002_certsvc_set_cert_to_disabled_and_get_status_for_
 RUNNER_TEST(CERTSVC_PKCS12_1003_add_pem_file_in_individual_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
        CertSvcString Alias = wrapper_certsvc_string_new("PEM-wifi-server-1");
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PEM file to WIFI store failed.");
        certsvc_string_free(Alias);
-
        Alias = wrapper_certsvc_string_new("PEM-wifi-server-2");
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PEM file to VPN store failed.");
        certsvc_string_free(Alias);
-
        Alias = wrapper_certsvc_string_new("PEM-wifi-server-3");
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PEM file to EMAIL store failed.");
        certsvc_string_free(Alias);
-
        certsvc_string_free(Path);
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
-
        CertSvcStoreCertList *certListOrig = certList;
        int count = 0;
        CertSvcString strSubject;
        CertSvcString strIssuer;
        CertSvcCertificate certificate;
+
        while (certList) {
-               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
+               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname,
+                                &certificate);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get certificate from store.");
-
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &strSubject);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
-
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &strIssuer);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
-
                certsvc_string_free(strSubject);
                certsvc_string_free(strIssuer);
                certsvc_certificate_free(certificate);
@@ -174,76 +159,62 @@ RUNNER_TEST(CERTSVC_PKCS12_1003_add_pem_file_in_individual_store)
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListOrig);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1004_add_pem_file_in_all_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PEM-wifi-server-all-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PEM file to all store failed.");
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1005_add_crt_file_in_individual_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("CRT-TestingCRT1");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::CertCrtPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing CRT file to WIFI store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing CRT file to VPN store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing CRT file to EMAIL store failed.");
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
-
        CertSvcStoreCertList *certListOrig = certList;
        int count = 0;
        CertSvcString strSubject;
        CertSvcString strIssuer;
        CertSvcCertificate certificate;
-       while (certList) {
-               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
 
+       while (certList) {
+               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname,
+                                &certificate);
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get certificate from store.");
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &strSubject);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &strIssuer);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
                certsvc_string_free(strSubject);
                certsvc_string_free(strIssuer);
                certsvc_certificate_free(certificate);
@@ -252,158 +223,123 @@ RUNNER_TEST(CERTSVC_PKCS12_1005_add_crt_file_in_individual_store)
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListOrig);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1006_add_crt_file_in_all_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("CRT-TestingCRT1-all-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::CertCrtPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing CRT file to all store failed.");
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1007_install_p12_file_to_individual_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("P12-WifiUser");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::UserP12WithPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::UserP12Pass.c_str());
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing p12 file to WIFI store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing p12 file to VPN store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing p12 file to EMAIL store failed.");
-
-       CertSvcStoreCertList* certList = NULL;
+       CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1008_install_p12_file_to_all_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("P12-WifiUser-all-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::UserP12WithPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::UserP12Pass.c_str());
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing p12 file to WIFI store failed.");
-
-       CertSvcStoreCertList* certList = NULL;
+       CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1009_install_pfx_file_to_individual_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str());
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to VPN store failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to EMAIL store failed.");
-
-       CertSvcStoreCertList* certList = NULL;
+       CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1010_install_pfx_file_to_all_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-all-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str());
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
-
-       CertSvcStoreCertList* certList = NULL;
+       CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from system store failed");
-
        result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
@@ -411,35 +347,39 @@ RUNNER_TEST(CERTSVC_PKCS12_1010_install_pfx_file_to_all_store)
 RUNNER_TEST(CERTSVC_PKCS12_1011_get_all_end_user_certificate_from_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length;
-       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, WIFI_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting end user certificate list from WIFI_STORE failed.");
+       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, WIFI_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting end user certificate list from WIFI_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
-       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, VPN_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting end user certificate list from VPN_STORE failed.");
+       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, VPN_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting end user certificate list from VPN_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
-       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, EMAIL_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting end user certificate list from EMAIL_STORE failed.");
+       result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, EMAIL_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting end user certificate list from EMAIL_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
-       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, WIFI_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting root certificate list from WIFI_STORE failed.");
+       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, WIFI_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting root certificate list from WIFI_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
-       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, VPN_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting root certificate list from VPN_STORE failed.");
+       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, VPN_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting root certificate list from VPN_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
-       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, EMAIL_STORE, &certList, &length);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting root certificate list from EMAIL_STORE failed.");
+       result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, EMAIL_STORE, &certList,
+                        &length);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Getting root certificate list from EMAIL_STORE failed.");
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
        FREE_INSTANCE
 }
 
@@ -447,43 +387,37 @@ RUNNER_TEST(CERTSVC_PKCS12_1012_delete_all_cert_from_multiple_store)
 {
        int result;
        CertSvcString gname;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
-
        CertSvcStoreCertList *certListOrig = certList;
+
        while (certList) {
                gname = wrapper_certsvc_string_new(certList->gname);
                result = certsvc_pkcs12_delete_certificate_from_store(instance, certList->storeType, gname);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Deleting certificate from store failed.");
-
                certsvc_string_free(gname);
-
                certList = certList->next;
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListOrig);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1013_install_pfx_file_to_one_store_and_get_list_from_multiple_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-one-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfxPass.c_str());
-
        int isUnique = 0;
        result = certsvc_pkcs12_check_alias_exists_in_store(instance, allStoreType, Alias, &isUnique);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "check alias exists in store failed. result : " << result);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "check alias exists in store failed. result : " << result);
 
        if (!isUnique) {
                /* TODO: remove certificate which already exists and test continue */
@@ -492,37 +426,31 @@ RUNNER_TEST(CERTSVC_PKCS12_1013_install_pfx_file_to_one_store_and_get_list_from_
 
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to EMAIL_STORE failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to WIFI_STORE failed.");
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from all store failed");
-
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1014_installing_pfx_without_password_to_individual_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-without-password");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithoutPassPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new("");
-
        int isUnique = 0;
        result = certsvc_pkcs12_check_alias_exists_in_store(instance, allStoreType, Alias, &isUnique);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "check alias exists in store failed. result : " << result);
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "check alias exists in store failed. result : " << result);
 
        if (!isUnique) {
                /* TODO: remove certificate which already exists and test continue */
@@ -530,24 +458,23 @@ RUNNER_TEST(CERTSVC_PKCS12_1014_installing_pfx_without_password_to_individual_st
        }
 
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
-       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Importing PFX file to all store failed. result : " << result );
-
+       RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                         "Importing PFX file to all store failed. result : " << result);
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
-
        FREE_INSTANCE
 }
 
-RUNNER_TEST(CERTSVC_PKCS12_1015_get_certificate_from_store) {
-
+RUNNER_TEST(CERTSVC_PKCS12_1015_get_certificate_from_store)
+{
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, allStoreType, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from all store failed.");
+
        if (length == 0 || !certList) {
                /* TODO: add any cert to store for testing */
                RUNNER_ASSERT_MSG(0, "add any cert in store for testing");
@@ -557,16 +484,15 @@ RUNNER_TEST(CERTSVC_PKCS12_1015_get_certificate_from_store) {
        CertSvcString strSubject;
        CertSvcString strIssuer;
        CertSvcCertificate certificate;
+
        while (certList) {
-               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
+               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname,
+                                &certificate);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get certificate from store.");
-
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &strSubject);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
-
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &strIssuer);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
                certsvc_string_free(strSubject);
                certsvc_string_free(strIssuer);
                certsvc_certificate_free(certificate);
@@ -574,20 +500,19 @@ RUNNER_TEST(CERTSVC_PKCS12_1015_get_certificate_from_store) {
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListOrig);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1016_get_certificate_from_system_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, SYSTEM_STORE, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, SYSTEM_STORE, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
+
        if (length == 0 || !certList) {
                /* TODO: add any cert to store for testing */
                RUNNER_ASSERT_MSG(0, "add any cert in store for testing");
@@ -597,16 +522,15 @@ RUNNER_TEST(CERTSVC_PKCS12_1016_get_certificate_from_system_store)
        CertSvcString strSubject;
        CertSvcString strIssuer;
        CertSvcCertificate certificate;
-       while (certList) {
-               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
 
+       while (certList) {
+               result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname,
+                                &certificate);
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get certificate from store.");
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &strSubject);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
                result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &strIssuer);
-               RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
                certsvc_string_free(strSubject);
                certsvc_string_free(strIssuer);
                certsvc_certificate_free(certificate);
@@ -614,20 +538,19 @@ RUNNER_TEST(CERTSVC_PKCS12_1016_get_certificate_from_system_store)
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListOrig);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1017_load_cert_list_from_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certListTemp = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, VPN_STORE, DISABLED, &certListTemp, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, VPN_STORE, DISABLED,
+                        &certListTemp, &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from VPN_STORE failed.");
+
        if (length == 0 || !certListTemp) {
                /* TODO: add any cert to store for testing */
                RUNNER_ASSERT_MSG(0, "add any cert in store for testing");
@@ -637,12 +560,10 @@ RUNNER_TEST(CERTSVC_PKCS12_1017_load_cert_list_from_store)
        CertSvcString strIssuer;
        CertSvcCertificate cert;
        CertSvcString gname = wrapper_certsvc_string_new(certListTemp->gname);
-
        CertSvcCertificateList certList;
        result = certsvc_pkcs12_load_certificate_list_from_store(instance, VPN_STORE, gname, &certList);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Load certificate list form VPN_STORE failed.");
        certsvc_string_free(gname);
-
        length = 0;
        result = certsvc_certificate_list_get_length(certList, &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate list get length failed.");
@@ -651,35 +572,30 @@ RUNNER_TEST(CERTSVC_PKCS12_1017_load_cert_list_from_store)
        for (size_t i = 0; i < length; i++) {
                result = certsvc_certificate_list_get_one(certList, i, &cert);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_certificate_list_get_one failed.");
-
                result = certsvc_certificate_get_string_field(cert, CERTSVC_SUBJECT, &strSubject);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
-
                result = certsvc_certificate_get_string_field(cert, CERTSVC_ISSUER_COMMON_NAME, &strIssuer);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to get string field.");
-
                certsvc_string_free(strSubject);
                certsvc_string_free(strIssuer);
                certsvc_certificate_free(cert);
        }
 
        certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certListTemp);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1018_get_duplicate_private_key)
 {
        const char *privatekey_path = CERTSVC_PKCS12_STORAGE_DIR "/temp.txt";
-
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certListTemp = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, VPN_STORE, DISABLED, &certListTemp, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, VPN_STORE, DISABLED,
+                        &certListTemp, &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from VPN_STORE failed.");
+
        if (length == 0 || !certListTemp) {
                /* TODO: add any cert to store for testing */
                RUNNER_ASSERT_MSG(0, "add any cert in store for testing");
@@ -690,36 +606,28 @@ RUNNER_TEST(CERTSVC_PKCS12_1018_get_duplicate_private_key)
        result = certsvc_pkcs12_dup_evp_pkey_from_store(instance, VPN_STORE, gname, &privatekey);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting duplicate private key from store failed.");
        certsvc_string_free(gname);
-
        FILE *fp = NULL;
+
        if (!(fp = fopen(privatekey_path, "w")))
                RUNNER_ASSERT_MSG(0, "Failed to open file for writing.");
 
        result = PEM_write_PrivateKey(fp, privatekey, NULL, NULL, 0, NULL, NULL);
        fclose(fp);
        unlink(privatekey_path);
-
        RUNNER_ASSERT_MSG(result != 0, "Failed to write private key onto file.");
-
        certsvc_pkcs12_free_evp_pkey(privatekey);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1019_check_alias_exists)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-without-password");
-
        int isUnique = 0;
        result = certsvc_pkcs12_check_alias_exists_in_store(instance, allStoreType, Alias, &isUnique);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from all store failed.");
-
        certsvc_string_free(Alias);
-
        FREE_INSTANCE
 }
 
@@ -727,41 +635,35 @@ RUNNER_TEST(CERTSVC_PKCS12_1020_certsvc_set_cert_to_disabled_and_get_status_for_
 {
        CertStoreType storeTypeArr[3] = {VPN_STORE, WIFI_STORE, EMAIL_STORE};
        int result;
-
        CREATE_INSTANCE
 
        for (size_t j = 0; j < 3; j++) {
                CertStoreType storeType = storeTypeArr[j];
-
                CertSvcStoreCertList *certList = NULL;
                size_t length = 0;
-               result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
+               result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList,
+                                &length);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
-
                CertSvcStoreCertList *certListOrig = certList;
+
                while (certList) {
                        CertSvcString Alias = wrapper_certsvc_string_new(certList->gname);
-
                        CertStatus status;
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
-
-                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, DISABLED);
+                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias,
+                                        DISABLED);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to system store failed.");
-
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
                        RUNNER_ASSERT_MSG(status == DISABLED, "certificate status should be disabled");
-
-                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, ENABLED);
+                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias,
+                                        ENABLED);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to system store failed.");
-
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from system store failed.");
                        RUNNER_ASSERT_MSG(status == ENABLED, "certificate status should be enabled");
-
                        certsvc_string_free(Alias);
-
                        certList = certList->next;
                }
 
@@ -774,140 +676,117 @@ RUNNER_TEST(CERTSVC_PKCS12_1020_certsvc_set_cert_to_disabled_and_get_status_for_
 RUNNER_TEST(CERTSVC_PKCS12_1021_add_pem_file_to_invalid_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("PFX-WifiServer-one-store");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerCertPemPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
-       result = certsvc_pkcs12_import_from_file_to_store(instance, (CertStoreType)-1, Path, Pass, Alias);
-       RUNNER_ASSERT_MSG(result == CERTSVC_INVALID_STORE_TYPE, "Importing certifcate should be failed with invalid store type");
-
+       result = certsvc_pkcs12_import_from_file_to_store(instance, (CertStoreType) - 1, Path, Pass, Alias);
+       RUNNER_ASSERT_MSG(result == CERTSVC_INVALID_STORE_TYPE,
+                                         "Importing certifcate should be failed with invalid store type");
        result = certsvc_pkcs12_import_from_file_to_store(instance, SYSTEM_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing PEM file to SYSTEM_STORE should be failed");
-
        result = certsvc_pkcs12_delete_certificate_from_store(instance, SYSTEM_STORE, Alias);
-       RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Deleting certificate from SYSTEM_STORE should be failed");
-
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Deleting certificate from SYSTEM_STORE should be failed");
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1022_certsvc_set_cert_to_disabled_and_get_status_for_invalid_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("eb375c3e.0");
-
        CertStatus status;
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status with invalid store type should be failed");
-
-       result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias, DISABLED);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Set certificate status with invalid store type should be failed");
-
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Get certificate status with invalid store type should be failed");
+       result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias,
+                        DISABLED);
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Set certificate status with invalid store type should be failed");
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status with invalid store type should be failed");
-
-       result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias, ENABLED);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Set certificate status with invalid store type should be failed");
-
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Get certificate status with invalid store type should be failed");
+       result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias,
+                        ENABLED);
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Set certificate status with invalid store type should be failed");
        result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status with invalid store type should be failed");
-
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Get certificate status with invalid store type should be failed");
        certsvc_string_free(Alias);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1023_certsvc_set_cert_to_disabled_and_get_status_for_invalid_store)
 {
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       int result = certsvc_pkcs12_get_certificate_list_from_store(instance, NONE_STORE, DISABLED, &certList, &length);
-       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Getting certificate list from invalid store should be failed");
-       RUNNER_ASSERT_MSG((length == 0 && certList == NULL), "no output should be returned with invalid store");
-
+       int result = certsvc_pkcs12_get_certificate_list_from_store(instance, NONE_STORE, DISABLED,
+                                &certList, &length);
+       RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                         "Getting certificate list from invalid store should be failed");
+       RUNNER_ASSERT_MSG((length == 0 &&
+                                          certList == NULL), "no output should be returned with invalid store");
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1024_certsvc_set_and_get_for_invalid_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("TestingCRT1");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::InvalidCertCrtPath.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(NULL);
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid CRT file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid CRT file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid CRT file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, NONE_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid CRT file should be failed.");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1025_install_invalid_pfx_file_to_individual_and_all_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcString Alias = wrapper_certsvc_string_new("WifiServer-123");
        CertSvcString Path = wrapper_certsvc_string_new(TestData::ServerPfxWithPass2Path.c_str());
        CertSvcString Pass = wrapper_certsvc_string_new(TestData::ServerPfx2Pass.c_str());
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, SYSTEM_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, WIFI_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, VPN_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, EMAIL_STORE, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed.");
-
        result = certsvc_pkcs12_import_from_file_to_store(instance, allStoreType, Path, Pass, Alias);
        RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Importing invalid PFX file should be failed.");
-
        certsvc_string_free(Alias);
        certsvc_string_free(Path);
        certsvc_string_free(Pass);
-
        FREE_INSTANCE
 }
 
 RUNNER_TEST(CERTSVC_PKCS12_1026_enable_disable_status_certificate_from_invalid_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, WIFI_STORE, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, WIFI_STORE, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list from store failed.");
+
        if (length == 0 || !certList) {
                /* TODO: add any cert to store for testing */
                RUNNER_ASSERT_MSG(0, "add any cert in store for testing");
@@ -915,25 +794,25 @@ RUNNER_TEST(CERTSVC_PKCS12_1026_enable_disable_status_certificate_from_invalid_s
 
        while (certList) {
                CertSvcString Alias = wrapper_certsvc_string_new(certList->gname);
-
                CertStatus status;
                result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status from invalid store should be failed.");
-
-               result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias, DISABLED);
-               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Set certificate status to invalid store should be failed.");
-
+               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                                 "Get certificate status from invalid store should be failed.");
+               result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias,
+                                DISABLED);
+               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                                 "Set certificate status to invalid store should be failed.");
                result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status from invalid store should be failed.");
-
-               result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias, ENABLED);
-               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Set certificate status to invalid store should be failed.");
-
+               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                                 "Get certificate status from invalid store should be failed.");
+               result = certsvc_pkcs12_set_certificate_status_to_store(instance, NONE_STORE, DISABLED, Alias,
+                                ENABLED);
+               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                                 "Set certificate status to invalid store should be failed.");
                result = certsvc_pkcs12_get_certificate_status_from_store(instance, NONE_STORE, Alias, &status);
-               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS, "Get certificate status from invalid store should be failed.");
-
+               RUNNER_ASSERT_MSG(result != CERTSVC_SUCCESS,
+                                                 "Get certificate status from invalid store should be failed.");
                certsvc_string_free(Alias);
-
                certList = certList->next;
        }
 
@@ -941,51 +820,43 @@ RUNNER_TEST(CERTSVC_PKCS12_1026_enable_disable_status_certificate_from_invalid_s
 }
 
 #define EAP_TLS_USER_CERT_PATH   "user_cert.pem"
-#define EAP_TLS_PATH                    "/tmp/"
-#define EAP_TLS_CA_CERT_PATH    "ca_cert.pem"
+#define EAP_TLS_PATH             "/tmp/"
+#define EAP_TLS_CA_CERT_PATH     "ca_cert.pem"
 #define EAP_TLS_PRIVATEKEY_PATH  "privatekey.pem"
 
 RUNNER_TEST(CERTSVC_PKCS12_1027_get_alias_name_from_gname_from_store)
 {
        int result;
-
        CREATE_INSTANCE
-
        CertSvcStoreCertList *certList = NULL;
        size_t length = 0;
-       result = certsvc_pkcs12_get_certificate_list_from_store(instance, WIFI_STORE, DISABLED, &certList, &length);
+       result = certsvc_pkcs12_get_certificate_list_from_store(instance, WIFI_STORE, DISABLED, &certList,
+                        &length);
        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list failed.");
-
        int count = 1;
+
        while (certList) {
                CertSvcString Alias = wrapper_certsvc_string_new(certList->gname);
-
                char *alias = NULL;
-               result = certsvc_pkcs12_get_alias_name_for_certificate_in_store(instance, certList->storeType, Alias, &alias);
+               result = certsvc_pkcs12_get_alias_name_for_certificate_in_store(instance, certList->storeType,
+                                Alias, &alias);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting alias name from gname failed.");
-
                CertSvcCertificateList cert_list;
-               result = certsvc_pkcs12_load_certificate_list_from_store(instance, certList->storeType, Alias, &cert_list);
+               result = certsvc_pkcs12_load_certificate_list_from_store(instance, certList->storeType, Alias,
+                                &cert_list);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_pkcs12_load_certificate_list failed");
-
                size_t cert_counts = 0;
                result = certsvc_certificate_list_get_length(cert_list, &cert_counts);
                RUNNER_ASSERT_MSG(cert_counts > 0, "there is no certificates");
-
                CertSvcCertificate *selected_certificate = new CertSvcCertificate[cert_counts];
                RUNNER_ASSERT_MSG(selected_certificate != NULL, "failed to allocate memory");
-
                CertSvcCertificate user_certificate;
                result = certsvc_certificate_list_get_one(cert_list, 0, &user_certificate);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_certificate_list_get_one failed");
-
                X509 *x509 = NULL;
                result = certsvc_certificate_dup_x509(user_certificate, &x509);
-
                char user_cert_path[512];
-
                const char *output_template = CERTSVC_PKCS12_STORAGE_DIR "/file_%d";
-
                snprintf(user_cert_path, sizeof(user_cert_path), output_template, count++);
                FILE *fp = fopen(user_cert_path, "w");
                RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
@@ -995,53 +866,45 @@ RUNNER_TEST(CERTSVC_PKCS12_1027_get_alias_name_from_gname_from_store)
 
                result = PEM_write_X509(fp, x509);
                fclose(fp);
-
                certsvc_certificate_free_x509(x509);
                certList = certList->next;
-
                int cert_index = cert_counts - 1;
                selected_certificate[0] = user_certificate;
-
                char ca_cert_path[512];
-               snprintf(ca_cert_path, sizeof(ca_cert_path), "%s%s_%s", EAP_TLS_PATH, certList->gname, EAP_TLS_CA_CERT_PATH);
+               snprintf(ca_cert_path, sizeof(ca_cert_path), "%s%s_%s", EAP_TLS_PATH, certList->gname,
+                                EAP_TLS_CA_CERT_PATH);
+
                while (cert_index) {
                        CertSvcCertificate ca_certificate;
                        result = certsvc_certificate_list_get_one(cert_list, cert_index, &ca_certificate);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to certsvc_certificate_list_get_one");
-
-                       selected_certificate[cert_counts-cert_index] = ca_certificate;
+                       selected_certificate[cert_counts - cert_index] = ca_certificate;
                        cert_index--;
-
                        result = certsvc_certificate_dup_x509(ca_certificate, &x509);
-
                        fp = fopen(ca_cert_path, "a");
                        RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
-
                        result = PEM_write_X509(fp, x509);
                        fclose(fp);
-
                        certsvc_certificate_free_x509(x509);
                }
 
                int validity = 0;
-               result = certsvc_certificate_verify(selected_certificate[0], selected_certificate, cert_counts, NULL, 0, &validity);
+               result = certsvc_certificate_verify(selected_certificate[0], selected_certificate, cert_counts,
+                                                                                       NULL, 0, &validity);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to verify ca_certificate");
                RUNNER_ASSERT_MSG(validity != 0, "Invalid certificate");
-
                EVP_PKEY *privatekey = NULL;
                result = certsvc_pkcs12_dup_evp_pkey_from_store(instance, WIFI_STORE, Alias, &privatekey);
-               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Failed to duplicate the private key for a certificate from wifi store");
-
+               RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS,
+                                                 "Failed to duplicate the private key for a certificate from wifi store");
                char privatekey_path[512];
-               snprintf(privatekey_path, sizeof(privatekey_path), "%s%s_%s", EAP_TLS_PATH, certList->gname, EAP_TLS_PRIVATEKEY_PATH);
+               snprintf(privatekey_path, sizeof(privatekey_path), "%s%s_%s", EAP_TLS_PATH, certList->gname,
+                                EAP_TLS_PRIVATEKEY_PATH);
                fp = fopen(privatekey_path, "w");
                RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
-
                result = PEM_write_PrivateKey(fp, privatekey, NULL, NULL, 0, NULL, NULL);
                fclose(fp);
-
                certsvc_pkcs12_free_evp_pkey(privatekey);
-
                certsvc_string_free(Alias);
                delete []selected_certificate;
        }
@@ -1053,39 +916,33 @@ RUNNER_TEST(CERTSVC_PKCS12_1028_certsvc_set_cert_to_disabled_and_get_status_for_
 {
        CertStoreType array[3] = {VPN_STORE, WIFI_STORE, EMAIL_STORE};
        int result;
-
        CREATE_INSTANCE
 
        for (size_t j = 0; j < 3; j++) {
                CertStoreType storeType = array[j];
-
                CertSvcStoreCertList *certList = NULL;
                size_t length = 0;
-               result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, ENABLED, &certList, &length);
+               result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, ENABLED, &certList,
+                                &length);
                RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Getting certificate list failed.");
-
                CertSvcStoreCertList *certListOrig = certList;
+
                while (certList) {
                        CertSvcString Alias = wrapper_certsvc_string_new(certList->gname);
-
                        CertStatus status;
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from store failed.");
-
-                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, ENABLED, Alias, DISABLED);
+                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, ENABLED, Alias,
+                                        DISABLED);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to store failed.");
-
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from store failed.");
-
-                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, ENABLED, Alias, ENABLED);
+                       result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, ENABLED, Alias,
+                                        ENABLED);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Set certificate status to store failed.");
-
                        result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
                        RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "Get certificate status from store failed.");
-
                        certsvc_string_free(Alias);
-
                        certList = certList->next;
                }
 
index 9636524..f9d80f5 100644 (file)
 
 CertSvcInstance vinstance;
 
-int main (int argc, char *argv[]) {
-    certsvc_instance_new(&vinstance);
-    int status = VcoreDPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
-    certsvc_instance_free(vinstance);
-    return status;
+int main(int argc, char *argv[])
+{
+       certsvc_instance_new(&vinstance);
+       int status = VcoreDPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
+       certsvc_instance_free(vinstance);
+       return status;
 }
index c5fe108..cf4c3ef 100644 (file)
@@ -34,8 +34,8 @@
 #define PLUGIN_API __attribute__((visibility("default")))
 
 extern "C" {
-ValidationCore::ValidatorPlugin *create(void);
-void destroy(ValidationCore::ValidatorPlugin *obj);
+       ValidationCore::ValidatorPlugin *create(void);
+       void destroy(ValidationCore::ValidatorPlugin *obj);
 }
 
 namespace ValidationCore {
@@ -67,9 +67,7 @@ PLUGIN_API
 ValidationCore::ValidatorPlugin *create(void)
 {
        ValidationCore::Plugin *plugin = new ValidationCore::Plugin;
-
        SLOGI("Plugin create!");
-
        return plugin;
 }
 
@@ -77,6 +75,5 @@ PLUGIN_API
 void destroy(ValidationCore::ValidatorPlugin *obj)
 {
        delete obj;
-
        SLOGI("Plugin destroy!");
 }
index a8bd11b..9a6be32 100644 (file)
  */
 #include <dpl/test/test_runner.h>
 
-int main (int argc, char *argv[])
+int main(int argc, char *argv[])
 {
        VcoreDPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
-
        return 0;
 }
 
index 216c2f7..0ad6e1b 100644 (file)
@@ -31,21 +31,18 @@ RUNNER_TEST_GROUP_INIT(T0030_Certificate)
  */
 RUNNER_TEST(T0031_Certificate)
 {
-    Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
-    std::string result;
-
-    result = cert.getCommonName(Certificate::FIELD_SUBJECT);
-    RUNNER_ASSERT_MSG(!result.empty(), "No common name");
-    RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch");
-
-    result = cert.getCommonName(Certificate::FIELD_ISSUER);
-    RUNNER_ASSERT_MSG(!result.empty(), "No common name");
-    RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"),
-            "CommonName mismatch");
-
-    result = cert.getCountryName();
-    RUNNER_ASSERT_MSG(!result.empty(), "No country");
-    RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch");
+       Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
+       std::string result;
+       result = cert.getCommonName(Certificate::FIELD_SUBJECT);
+       RUNNER_ASSERT_MSG(!result.empty(), "No common name");
+       RUNNER_ASSERT_MSG(!result.compare("www.verisign.com"), "CommonName mismatch");
+       result = cert.getCommonName(Certificate::FIELD_ISSUER);
+       RUNNER_ASSERT_MSG(!result.empty(), "No common name");
+       RUNNER_ASSERT_MSG(!result.compare("VeriSign Class 3 Extended Validation SSL SGC CA"),
+                                         "CommonName mismatch");
+       result = cert.getCountryName();
+       RUNNER_ASSERT_MSG(!result.empty(), "No country");
+       RUNNER_ASSERT_MSG(!result.compare("US"), "Country mismatch");
 }
 
 /*
@@ -55,21 +52,20 @@ RUNNER_TEST(T0031_Certificate)
  */
 RUNNER_TEST(T0032_Certificate)
 {
-    Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
-
-    Certificate::Fingerprint fin =
-        cert.getFingerprint(Certificate::FINGERPRINT_SHA1);
-
-    unsigned char buff[20] = {
-        0xb9, 0x72, 0x1e, 0xd5, 0x49,
-        0xed, 0xbf, 0x31, 0x84, 0xd8,
-        0x27, 0x0c, 0xfe, 0x03, 0x11,
-        0x19, 0xdf, 0xc2, 0x2b, 0x0a};
-    RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint");
-
-    for (size_t i = 0; i<20; ++i) {
-        RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch");
-    }
+       Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
+       Certificate::Fingerprint fin =
+               cert.getFingerprint(Certificate::FINGERPRINT_SHA1);
+       unsigned char buff[20] = {
+               0xb9, 0x72, 0x1e, 0xd5, 0x49,
+               0xed, 0xbf, 0x31, 0x84, 0xd8,
+               0x27, 0x0c, 0xfe, 0x03, 0x11,
+               0x19, 0xdf, 0xc2, 0x2b, 0x0a
+       };
+       RUNNER_ASSERT_MSG(fin.size() == 20, "Wrong size of fingerprint");
+
+       for (size_t i = 0; i < 20; ++i) {
+               RUNNER_ASSERT_MSG(fin[i] == buff[i], "Fingerprint mismatch");
+       }
 }
 
 /*
@@ -80,18 +76,13 @@ RUNNER_TEST(T0032_Certificate)
  */
 RUNNER_TEST(T0033_Certificate)
 {
-    Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
-
-    Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS();
-
-    RUNNER_ASSERT(nameSet.size() == 8);
-
-    std::string str("verisign.com");
-    RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
-
-    str = std::string("fake.com");
-    RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
-
+       Certificate cert(TestData::certVerisign, Certificate::FORM_BASE64);
+       Certificate::AltNameSet nameSet = cert.getAlternativeNameDNS();
+       RUNNER_ASSERT(nameSet.size() == 8);
+       std::string str("verisign.com");
+       RUNNER_ASSERT(nameSet.find(str) != nameSet.end());
+       str = std::string("fake.com");
+       RUNNER_ASSERT(nameSet.find(str) == nameSet.end());
 }
 
 /*
@@ -101,12 +92,10 @@ RUNNER_TEST(T0033_Certificate)
  */
 RUNNER_TEST(T0034_Certificate_isCA)
 {
-    Certificate cert1(TestData::googleCA, Certificate::FORM_BASE64);
-    RUNNER_ASSERT(cert1.isCA() > 0);
-
-    Certificate cert2(TestData::google2nd, Certificate::FORM_BASE64);
-    RUNNER_ASSERT(cert2.isCA() > 0);
-
-    Certificate cert3(TestData::google3rd, Certificate::FORM_BASE64);
-    RUNNER_ASSERT(cert3.isCA() == 0);
+       Certificate cert1(TestData::googleCA, Certificate::FORM_BASE64);
+       RUNNER_ASSERT(cert1.isCA() > 0);
+       Certificate cert2(TestData::google2nd, Certificate::FORM_BASE64);
+       RUNNER_ASSERT(cert2.isCA() > 0);
+       Certificate cert3(TestData::google3rd, Certificate::FORM_BASE64);
+       RUNNER_ASSERT(cert3.isCA() == 0);
 }
index 0e8d36b..c6aa2ce 100644 (file)
 
 const std::string TestData::widget_path = std::string(TESTAPP_RES_DIR) + "apps/wgt";
 const std::string TestData::widget_dist22_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_dist22";
-const std::string TestData::widget_negative_hash_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_hash";
-const std::string TestData::widget_negative_signature_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_signature";
-const std::string TestData::widget_negative_certificate_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_certificate";
+const std::string TestData::widget_negative_hash_path = std::string(TESTAPP_RES_DIR) +
+               "apps/wgt_negative_hash";
+const std::string TestData::widget_negative_signature_path = std::string(
+                       TESTAPP_RES_DIR) + "apps/wgt_negative_signature";
+const std::string TestData::widget_negative_certificate_path = std::string(
+                       TESTAPP_RES_DIR) + "apps/wgt_negative_certificate";
 const std::string TestData::widget_partner_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_partner";
-const std::string TestData::widget_platform_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_platform";
-const std::string TestData::widget_positive_link_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_positive_link";
-const std::string TestData::widget_negative_link_path = std::string(TESTAPP_RES_DIR) + "apps/wgt_negative_link";
+const std::string TestData::widget_platform_path = std::string(TESTAPP_RES_DIR) +
+               "apps/wgt_platform";
+const std::string TestData::widget_positive_link_path = std::string(TESTAPP_RES_DIR) +
+               "apps/wgt_positive_link";
+const std::string TestData::widget_negative_link_path = std::string(TESTAPP_RES_DIR) +
+               "apps/wgt_negative_link";
 
 const std::string TestData::tpk_path = std::string(TESTAPP_RES_DIR) + "apps/tpk";
 const std::string TestData::attacked_tpk_path = std::string(TESTAPP_RES_DIR) + "apps/attacked-tpk";
-const std::string TestData::tpk_with_userdata_path = std::string(TESTAPP_RES_DIR) + "apps/tpk-with-userdata";
-const std::string TestData::attacked_tpk_with_userdata_path = std::string(TESTAPP_RES_DIR) + "apps/attacked-tpk-with-userdata";
+const std::string TestData::tpk_with_userdata_path = std::string(TESTAPP_RES_DIR) +
+               "apps/tpk-with-userdata";
+const std::string TestData::attacked_tpk_with_userdata_path = std::string(
+                       TESTAPP_RES_DIR) + "apps/attacked-tpk-with-userdata";
 
 const std::string TestData::certEE =
        "MIIGXDCCBUSgAwIBAgIQKJK70TuBw91HAA0BqZSPETANBgkqhkiG9w0BAQsFADB3\n"
index be979b6..7360e37 100644 (file)
@@ -40,19 +40,14 @@ RUNNER_TEST(T0031_check_positive)
        try {
                SignatureData data;
                CertificateList certList;
-
                certList.push_back(CertificatePtr(new Certificate(TestData::certEE, Certificate::FORM_BASE64)));
                certList.push_back(CertificatePtr(new Certificate(TestData::certIM, Certificate::FORM_BASE64)));
                certList.push_back(CertificatePtr(new Certificate(TestData::certRoot, Certificate::FORM_BASE64)));
-
                data.setSortedCertificateList(certList);
-
                Ocsp::Result result = Ocsp::check(data);
-
                RUNNER_ASSERT_MSG(
                        result == Ocsp::Result::GOOD,
                        "verisign cert shouldn't be revoked");
-
        } catch (Ocsp::Exception::Base &e) {
                RUNNER_ASSERT_MSG(0, "Exception occured in T0031 : " << e.DumpToString());
        }
index e6807f1..5301fac 100644 (file)
@@ -29,496 +29,485 @@ RUNNER_TEST_GROUP_INIT(T0010_SIGNATURE_VALIDATOR)
 
 RUNNER_TEST(T00101_finder)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-    RUNNER_ASSERT_MSG(signatureSet.size() == 2, "Some signature has not been found");
-
-    for (auto &fileInfo : signatureSet)
-        RUNNER_ASSERT_MSG((
-            (fileInfo.getFileName().find("author-signature.xml") != std::string::npos && fileInfo.getFileNumber() == -1) ||
-            (fileInfo.getFileName().find("signature1.xml") != std::string::npos && fileInfo.getFileNumber() == 1)),
-            "invalid signature xml found: " << fileInfo.getFileName() << " with number: " << fileInfo.getFileNumber());
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+       RUNNER_ASSERT_MSG(signatureSet.size() == 2, "Some signature has not been found");
+
+       for (auto &fileInfo : signatureSet)
+               RUNNER_ASSERT_MSG((
+                                                         (fileInfo.getFileName().find("author-signature.xml") != std::string::npos &&
+                                                          fileInfo.getFileNumber() == -1) ||
+                                                         (fileInfo.getFileName().find("signature1.xml") != std::string::npos &&
+                                                          fileInfo.getFileNumber() == 1)),
+                                                 "invalid signature xml found: " << fileInfo.getFileName() << " with number: " <<
+                                                 fileInfo.getFileNumber());
 }
 
 RUNNER_TEST(T00102_positive_public_check_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_path,
-                true,
-                true,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature() && data.getSignatureNumber() == 1)
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PUBLIC,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_path,
+                                                  true,
+                                                  true,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature() && data.getSignatureNumber() == 1)
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PUBLIC,
+                                                         "visibility check failed.");
+       }
 }
 
 RUNNER_TEST(T00103_positive_partner_check_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_partner_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_partner_path,
-                true,
-                true,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_partner_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_partner_path,
+                                                  true,
+                                                  true,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
+                                                         "visibility check failed.");
+       }
 }
 
 RUNNER_TEST(T00104_positive_public_uncheck_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_path,
-                true,
-                false,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature() && data.getSignatureNumber() == 1)
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PUBLIC,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_path,
+                                                  true,
+                                                  false,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature() && data.getSignatureNumber() == 1)
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PUBLIC,
+                                                         "visibility check failed.");
+       }
 }
 
 RUNNER_TEST(T00105_positive_partner_uncheck_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_partner_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_partner_path,
-                true,
-                false,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_partner_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_partner_path,
+                                                  true,
+                                                  false,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PARTNER,
+                                                         "visibility check failed.");
+       }
 }
 
 RUNNER_TEST(T00106_positive_tpk)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::tpk_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::tpk_path,
-                true,
-                true,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::tpk_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::tpk_path,
+                                                  true,
+                                                  true,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00107_positive_tpk_with_userdata)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::tpk_with_userdata_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    UriList uriList;
-    uriList.emplace_back("author-siganture.xml");
-    uriList.emplace_back("bin/preference");
-    uriList.emplace_back("res/edje/pref_buttons_panel.edj");
-    uriList.emplace_back("res/edje/pref_edit_panel.edj");
-    uriList.emplace_back("res/edje/preference.edj");
-    uriList.emplace_back("res/images/icon_delete.png");
-    uriList.emplace_back("res/res.xml");
-    uriList.emplace_back("shared/res/preference.png");
-    uriList.emplace_back("tizen-manifest.xml");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.checkList(
-                true,
-                uriList,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::tpk_with_userdata_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+       UriList uriList;
+       uriList.emplace_back("author-siganture.xml");
+       uriList.emplace_back("bin/preference");
+       uriList.emplace_back("res/edje/pref_buttons_panel.edj");
+       uriList.emplace_back("res/edje/pref_edit_panel.edj");
+       uriList.emplace_back("res/edje/preference.edj");
+       uriList.emplace_back("res/images/icon_delete.png");
+       uriList.emplace_back("res/res.xml");
+       uriList.emplace_back("shared/res/preference.png");
+       uriList.emplace_back("tizen-manifest.xml");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.checkList(
+                                                  true,
+                                                  uriList,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00108_distributor_disregard_check)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_dist22_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_dist22_path,
-                true,
-                true,
-                data);
-
-        if (data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_CHAIN,
-                "author sig validation should be fail : "
-                << validator.errorToString(result));
-        else
-            if (data.getSignatureNumber() == 1)
-                RUNNER_ASSERT_MSG(result == E_SIG_INVALID_CHAIN,
-                    "dist1 sig validation should be fail: "
-                    << validator.errorToString(result));
-            else
-                RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED,
-                    "dist22 sig validation should be disregarded: "
-                    << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_dist22_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_dist22_path,
+                                                  true,
+                                                  true,
+                                                  data);
+
+               if (data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_CHAIN,
+                                                         "author sig validation should be fail : "
+                                                         << validator.errorToString(result));
+               else if (data.getSignatureNumber() == 1)
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_CHAIN,
+                                                         "dist1 sig validation should be fail: "
+                                                         << validator.errorToString(result));
+               else
+                       RUNNER_ASSERT_MSG(result == E_SIG_DISREGARDED,
+                                                         "dist22 sig validation should be disregarded: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00109_positive_platform_check_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_platform_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_platform_path,
-                true,
-                true,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_platform_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_platform_path,
+                                                  true,
+                                                  true,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
+                                                         "visibility check failed.");
+       }
 }
 
 RUNNER_TEST(T00110_positive_platform_uncheck_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_platform_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_platform_path,
-                true,
-                false,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-            "sig validation should be success: "
-            << validator.errorToString(result));
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
-                "visibility check failed.");
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_platform_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_platform_path,
+                                                  true,
+                                                  false,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                 "sig validation should be success: "
+                                                 << validator.errorToString(result));
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(data.getVisibilityLevel() == CertStoreId::VIS_PLATFORM,
+                                                         "visibility check failed.");
+       }
 }
 RUNNER_TEST(T00111_positive_wgt_link)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_positive_link_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_positive_link_path,
-                true,
-                true,
-                data);
-
-        // this condition is for OCSP Success in signature1.xml
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_NONE,
-                "If DT_LNK type point within package, it should be success: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_positive_link_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_positive_link_path,
+                                                  true,
+                                                  true,
+                                                  data);
+
+               // this condition is for OCSP Success in signature1.xml
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_NONE,
+                                                         "If DT_LNK type point within package, it should be success: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00112_negative_wgt_link)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_negative_link_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_negative_link_path,
-                true,
-                true,
-                data);
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_REF,
-                "If DT_LNK type point outside of package, it should be fail: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_negative_link_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_negative_link_path,
+                                                  true,
+                                                  true,
+                                                  data);
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_REF,
+                                                         "If DT_LNK type point outside of package, it should be fail: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00151_negative_hash_check_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_negative_hash_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_negative_hash_path,
-                true,
-                true,
-                data);
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "dist sig shouldn't be success: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_negative_hash_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_negative_hash_path,
+                                                  true,
+                                                  true,
+                                                  data);
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "dist sig shouldn't be success: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00152_negative_hash_uncheck_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_negative_hash_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_negative_hash_path,
-                true,
-                false,
-                data);
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "dist sig shouldn't be success: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_negative_hash_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_negative_hash_path,
+                                                  true,
+                                                  false,
+                                                  data);
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "dist sig shouldn't be success: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00153_negative_signature_check_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_negative_signature_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_negative_signature_path,
-                true,
-                true,
-                data);
-
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "dist sig validation should be failed: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_negative_signature_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_negative_signature_path,
+                                                  true,
+                                                  true,
+                                                  data);
+
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "dist sig validation should be failed: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00154_negative_signature_uncheck_ref)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::widget_negative_signature_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::widget_negative_signature_path,
-                true,
-                false,
-                data);
-
-        // TODO(sangwan.kwon) : delete if condition about author signature
-        if (!data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "dist sig should be failed: "
-                 << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::widget_negative_signature_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::widget_negative_signature_path,
+                                                  true,
+                                                  false,
+                                                  data);
+
+               // TODO(sangwan.kwon) : delete if condition about author signature
+               if (!data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "dist sig should be failed: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00155_negative_tpk_with_added_malfile)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::attacked_tpk_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.check(
-                TestData::attacked_tpk_path,
-                true,
-                true,
-                data);
-
-        RUNNER_ASSERT_MSG(result == E_SIG_INVALID_REF,
-            "dist sig validation should be failed: "
-            << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::attacked_tpk_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.check(
+                                                  TestData::attacked_tpk_path,
+                                                  true,
+                                                  true,
+                                                  data);
+               RUNNER_ASSERT_MSG(result == E_SIG_INVALID_REF,
+                                                 "dist sig validation should be failed: "
+                                                 << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST(T00156_negative_tpk_with_userdata_file_changed_in_list)
 {
-    SignatureFileInfoSet signatureSet;
-    SignatureFinder signatureFinder(TestData::attacked_tpk_with_userdata_path);
-    RUNNER_ASSERT_MSG(
-        SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
-        "SignatureFinder failed");
-
-    UriList uriList;
-    uriList.emplace_back("author-siganture.xml");
-    uriList.emplace_back("bin/preference");
-    uriList.emplace_back("res/edje/pref_buttons_panel.edj");
-    uriList.emplace_back("res/edje/pref_edit_panel.edj");
-    uriList.emplace_back("res/edje/preference.edj");
-    uriList.emplace_back("res/images/icon_delete.png");
-    uriList.emplace_back("res/res.xml");
-    uriList.emplace_back("shared/res/preference.png");
-
-    /* this file is modified after signing app */
-    uriList.emplace_back("tizen-manifest.xml");
-
-    for (auto &sig : signatureSet) {
-        SignatureValidator validator(sig);
-        SignatureData data;
-        VCerr result = validator.checkList(
-                true,
-                uriList,
-                data);
-
-        if (data.isAuthorSignature())
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "author sig validation should be failed: "
-                << validator.errorToString(result));
-        else
-            RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
-                "dist sig validation should be failed: "
-                << validator.errorToString(result));
-    }
+       SignatureFileInfoSet signatureSet;
+       SignatureFinder signatureFinder(TestData::attacked_tpk_with_userdata_path);
+       RUNNER_ASSERT_MSG(
+               SignatureFinder::NO_ERROR == signatureFinder.find(signatureSet),
+               "SignatureFinder failed");
+       UriList uriList;
+       uriList.emplace_back("author-siganture.xml");
+       uriList.emplace_back("bin/preference");
+       uriList.emplace_back("res/edje/pref_buttons_panel.edj");
+       uriList.emplace_back("res/edje/pref_edit_panel.edj");
+       uriList.emplace_back("res/edje/preference.edj");
+       uriList.emplace_back("res/images/icon_delete.png");
+       uriList.emplace_back("res/res.xml");
+       uriList.emplace_back("shared/res/preference.png");
+       /* this file is modified after signing app */
+       uriList.emplace_back("tizen-manifest.xml");
+
+       for (auto &sig : signatureSet) {
+               SignatureValidator validator(sig);
+               SignatureData data;
+               VCerr result = validator.checkList(
+                                                  true,
+                                                  uriList,
+                                                  data);
+
+               if (data.isAuthorSignature())
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "author sig validation should be failed: "
+                                                         << validator.errorToString(result));
+               else
+                       RUNNER_ASSERT_MSG(result == E_SIG_INVALID_SIG,
+                                                         "dist sig validation should be failed: "
+                                                         << validator.errorToString(result));
+       }
 }
 
 RUNNER_TEST_GROUP_INIT(T0020_SigVal_errorstring)
 
 RUNNER_TEST(T0021)
 {
-    SignatureValidator validator(SignatureFileInfo("test-dummy", 1));
-
-    for (VCerr code = E_SCOPE_FIRST; code >= E_SCOPE_LAST; code--) {
-        std::cout << "E_SIG code["
-            << code << "] : "
-            << validator.errorToString(code) << std::endl;
-    }
-
-    /* print 10 more error code below last in case of plugin err exist */
-    for (VCerr code = E_SCOPE_LAST - 1; code >= E_SCOPE_LAST - 10; code--) {
-        std::cout << "VCerr from plugin["
-            << code << "] : "
-            << validator.errorToString(code) << std::endl;
-    }
+       SignatureValidator validator(SignatureFileInfo("test-dummy", 1));
+
+       for (VCerr code = E_SCOPE_FIRST; code >= E_SCOPE_LAST; code--) {
+               std::cout << "E_SIG code["
+                                 << code << "] : "
+                                 << validator.errorToString(code) << std::endl;
+       }
+
+       /* print 10 more error code below last in case of plugin err exist */
+       for (VCerr code = E_SCOPE_LAST - 1; code >= E_SCOPE_LAST - 10; code--) {
+               std::cout << "VCerr from plugin["
+                                 << code << "] : "
+                                 << validator.errorToString(code) << std::endl;
+       }
 }
index 95cbc3f..fb508bc 100644 (file)
 static void UnitWrapper(const char *str, int type, int expected)
 {
        ASN1_TIME asn1Time;
-
        memset(&asn1Time, 0, sizeof(ASN1_TIME));
-
        ASN1_STRING_set(&asn1Time, str, strlen(str));
        asn1Time.type = type;
-
        time_t t = 0;
        int ret = ValidationCore::asn1TimeToTimeT(&asn1Time, &t);
        RUNNER_ASSERT_MSG(ret == expected,
-               "ret: " << ret
-               << " expected: " << expected
-               << " time t: " << t);
+                                         "ret: " << ret
+                                         << " expected: " << expected
+                                         << " time t: " << t);
 }
 
 RUNNER_TEST_GROUP_INIT(T0040_TIME_CONVERSION)
index 282e9e8..ba4d813 100644 (file)
@@ -32,78 +32,78 @@ extern "C" {
 #endif
 
 typedef struct CertSvcCertificate_t {
-    size_t privateHandler;
-    CertSvcInstance privateInstance;
+       size_t privateHandler;
+       CertSvcInstance privateInstance;
 } CertSvcCertificate;
 
 typedef struct CertSvcCertificateList_t {
-    size_t privateHandler;
-    CertSvcInstance privateInstance;
+       size_t privateHandler;
+       CertSvcInstance privateInstance;
 } CertSvcCertificateList;
 
 #define MAX_STORE_ENUMS 5
 typedef enum certImportType_t {
-    NONE_STORE   =  0,
-    VPN_STORE    =  1 << 0,
-    WIFI_STORE   =  1 << 1,
-    EMAIL_STORE  =  1 << 2,
-    SYSTEM_STORE =  1 << 3,
-    ALL_STORE    =  VPN_STORE | WIFI_STORE | EMAIL_STORE | SYSTEM_STORE
+       NONE_STORE   =  0,
+       VPN_STORE    =  1 << 0,
+       WIFI_STORE   =  1 << 1,
+       EMAIL_STORE  =  1 << 2,
+       SYSTEM_STORE =  1 << 3,
+       ALL_STORE    =  VPN_STORE | WIFI_STORE | EMAIL_STORE | SYSTEM_STORE
 } CertStoreType;
 
 typedef enum certStatus_t {
-    DISABLED     =  0,
-    ENABLED      =  1
+       DISABLED     =  0,
+       ENABLED      =  1
 } CertStatus;
 
-typedef struct CertSvcStoreCertList_t{
-    char *gname;            // keyfile group name
-    char *title;            // common Name / Alias provided by the user
-    CertStatus status;
-    CertStoreType storeType;
-    struct CertSvcStoreCertList_t *next;
+typedef struct CertSvcStoreCertList_t {
+       char *gname;            // keyfile group name
+       char *title;            // common Name / Alias provided by the user
+       CertStatus status;
+       CertStoreType storeType;
+       struct CertSvcStoreCertList_t *next;
 } CertSvcStoreCertList;
 
 typedef enum certType_t {
-    PEM_CRT          = 1 << 0,
-    P12_END_USER     = 1 << 1,
-    P12_INTERMEDIATE = 1 << 2,
-    P12_TRUSTED      = 1 << 3,
-    P12_PKEY         = 1 << 4,
-    INVALID_DATA     = 1 << 5
+       PEM_CRT          = 1 << 0,
+       P12_END_USER     = 1 << 1,
+       P12_INTERMEDIATE = 1 << 2,
+       P12_TRUSTED      = 1 << 3,
+       P12_PKEY         = 1 << 4,
+       INVALID_DATA     = 1 << 5
 } CertType;
 
 typedef enum CertSvcCertificateForm_t {
-/*    CERTSVC_FORM_PEM, */
-    CERTSVC_FORM_DER,
-    CERTSVC_FORM_DER_BASE64
+       /*    CERTSVC_FORM_PEM, */
+       CERTSVC_FORM_DER,
+       CERTSVC_FORM_DER_BASE64
 } CertSvcCertificateForm;
 
 typedef enum CertSvcCertificateField_t {
-    CERTSVC_SUBJECT,
-    CERTSVC_SUBJECT_COMMON_NAME,
-    CERTSVC_SUBJECT_COUNTRY_NAME,
-    CERTSVC_SUBJECT_STATE_NAME,
-    CERTSVC_SUBJECT_LOCALITY_NAME,
-    CERTSVC_SUBJECT_ORGANIZATION_NAME,
-    CERTSVC_SUBJECT_ORGANIZATION_UNIT_NAME,
-    CERTSVC_SUBJECT_EMAIL_ADDRESS,
-/*    CERTSVC_SUBJECT_UID, */
-    CERTSVC_ISSUER,
-    CERTSVC_ISSUER_COMMON_NAME,
-    CERTSVC_ISSUER_COUNTRY_NAME,
-    CERTSVC_ISSUER_STATE_NAME,
-    CERTSVC_ISSUER_LOCALITY_NAME,
-    CERTSVC_ISSUER_ORGANIZATION_NAME,
-    CERTSVC_ISSUER_ORGANIZATION_UNIT_NAME,
-    CERTSVC_ISSUER_EMAIL_ADDRESS,
-/*    CERTSVC_ISSUER_UID, */
-    CERTSVC_VERSION,
-    CERTSVC_SERIAL_NUMBER,
-    CERTSVC_KEY_USAGE,
-    CERTSVC_KEY,
-    CERTSVC_KEY_ALGO,
-    CERTSVC_SIGNATURE_ALGORITHM
+       CERTSVC_SUBJECT,
+       CERTSVC_SUBJECT_COMMON_NAME,
+       CERTSVC_SUBJECT_COUNTRY_NAME,
+       CERTSVC_SUBJECT_STATE_NAME,
+       CERTSVC_SUBJECT_LOCALITY_NAME,
+       CERTSVC_SUBJECT_ORGANIZATION_NAME,
+       CERTSVC_SUBJECT_ORGANIZATION_UNIT_NAME,
+       CERTSVC_SUBJECT_EMAIL_ADDRESS,
+       /*    CERTSVC_SUBJECT_UID, */
+       CERTSVC_ISSUER,
+       CERTSVC_ISSUER_COMMON_NAME,
+       CERTSVC_ISSUER_COUNTRY_NAME,
+       CERTSVC_ISSUER_STATE_NAME,
+       CERTSVC_ISSUER_LOCALITY_NAME,
+       CERTSVC_ISSUER_ORGANIZATION_NAME,
+       CERTSVC_ISSUER_ORGANIZATION_UNIT_NAME,
+       CERTSVC_ISSUER_EMAIL_ADDRESS,
+       /*    CERTSVC_ISSUER_UID, */
+       CERTSVC_VERSION,
+       CERTSVC_SERIAL_NUMBER,
+       CERTSVC_KEY_USAGE,
+       CERTSVC_KEY,
+       CERTSVC_KEY_ALGO,
+       CERTSVC_SIGNATURE_ALGORITHM
 } CertSvcCertificateField;
 
 typedef enum CertSvcVisibility_t {
@@ -130,9 +130,9 @@ typedef enum CertSvcVisibility_t {
  * @see #CertSvcCertificate
  */
 int certsvc_get_certificate(CertSvcInstance instance,
-                            CertStoreType storeType,
-                            const char *gname,
-                            CertSvcCertificate *certificate);
+                                                       CertStoreType storeType,
+                                                       const char *gname,
+                                                       CertSvcCertificate *certificate);
 
 /**
  * Load certificate to @a CertSvcCertificate from file.
@@ -150,8 +150,8 @@ int certsvc_get_certificate(CertSvcInstance instance,
  * @see #CertSvcCertificate
  */
 int certsvc_certificate_new_from_file(CertSvcInstance instance,
-                                      const char *location,
-                                      CertSvcCertificate *certificate);
+                                                                         const char *location,
+                                                                         CertSvcCertificate *certificate);
 
 /**
  * Load certificate to @a CertSvcCertificate from memory.
@@ -171,10 +171,10 @@ int certsvc_certificate_new_from_file(CertSvcInstance instance,
  * @see #CertSvcCertificateForm
  */
 int certsvc_certificate_new_from_memory(CertSvcInstance instance,
-                                        const unsigned char *memory,
-                                        size_t len,
-                                        CertSvcCertificateForm form,
-                                        CertSvcCertificate *certificate);
+                                                                               const unsigned char *memory,
+                                                                               size_t len,
+                                                                               CertSvcCertificateForm form,
+                                                                               CertSvcCertificate *certificate);
 
 /**
  * Free structures connected with certificate.
@@ -219,9 +219,9 @@ int certsvc_certificate_save_file(CertSvcCertificate certificate, const char *lo
  * @see #CertSvcCertificateList
  */
 int certsvc_certificate_search(CertSvcInstance instance,
-                               CertSvcCertificateField field,
-                               const char *value,
-                               CertSvcCertificateList *handler);
+                                                          CertSvcCertificateField field,
+                                                          const char *value,
+                                                          CertSvcCertificateList *handler);
 
 /**
  * Get certificate from list founded by certsvc_certificate_search().
@@ -241,8 +241,8 @@ int certsvc_certificate_search(CertSvcInstance instance,
  * @see #CertSvcCertificateList
  */
 int certsvc_certificate_list_get_one(CertSvcCertificateList handler,
-                                     size_t position,
-                                     CertSvcCertificate *certificate);
+                                                                        size_t position,
+                                                                        CertSvcCertificate *certificate);
 
 /**
  * Return number of elements on the list.
@@ -256,7 +256,7 @@ int certsvc_certificate_list_get_one(CertSvcCertificateList handler,
  * @see #CertSvcCertificateList
  */
 int certsvc_certificate_list_get_length(CertSvcCertificateList handler,
-                                        size_t *size);
+                                                                               size_t *size);
 
 /**
  * Free @a CertSvcCertificateList. It will not free certificates on the list.
@@ -292,8 +292,8 @@ void certsvc_certificate_list_all_free(CertSvcCertificateList handler);
  * @see #CertSvcCertificate
  */
 int certsvc_certificate_is_signed_by(CertSvcCertificate child,
-                                     CertSvcCertificate parent,
-                                     int *status);
+                                                                        CertSvcCertificate parent,
+                                                                        int *status);
 
 /**
  * Extract data field from certificate. Data in buffer could be free by
@@ -312,8 +312,8 @@ int certsvc_certificate_is_signed_by(CertSvcCertificate child,
  * @see #CertSvcCertificateField
  */
 int certsvc_certificate_get_string_field(CertSvcCertificate certificate,
-                                         CertSvcCertificateField field,
-                                         CertSvcString *buffer);
+               CertSvcCertificateField field,
+               CertSvcString *buffer);
 
 /**
  * Extract NOT AFTER field from certificate.
@@ -406,11 +406,11 @@ int certsvc_base64_decode(CertSvcString base64, CertSvcString *message);
  *
  */
 int certsvc_message_verify(
-    CertSvcCertificate certificate,
-    CertSvcString message,
-    CertSvcString signature,
-    const char *algorithm,
-    int *status);
+       CertSvcCertificate certificate,
+       CertSvcString message,
+       CertSvcString signature,
+       const char *algorithm,
+       int *status);
 
 /**
  * Verify certificate. Root CA certificate should be stored in @a trusted.
@@ -425,12 +425,12 @@ int certsvc_message_verify(
  * @return #CERTSVC_SUCCESS on success, otherwise a zero or negative error value
  */
 int certsvc_certificate_verify(
-    CertSvcCertificate certificate,
-    const CertSvcCertificate *trusted,
-    size_t trustedSize,
-    const CertSvcCertificate *untrusted,
-    size_t untrustedSize,
-    int *status);
+       CertSvcCertificate certificate,
+       const CertSvcCertificate *trusted,
+       size_t trustedSize,
+       const CertSvcCertificate *untrusted,
+       size_t untrustedSize,
+       int *status);
 
 /**
  * Verify certificate with strict check of CA flag. Root CA certificate should
@@ -446,12 +446,12 @@ int certsvc_certificate_verify(
  * @return #CERTSVC_SUCCESS on success, otherwise a zero or negative error value
  */
 int certsvc_certificate_verify_with_caflag(
-    CertSvcCertificate certificate,
-    const CertSvcCertificate *trusted,
-    size_t trustedSize,
-    const CertSvcCertificate *untrusted,
-    size_t untrustedSize,
-    int *status);
+       CertSvcCertificate certificate,
+       const CertSvcCertificate *trusted,
+       size_t trustedSize,
+       const CertSvcCertificate *untrusted,
+       size_t untrustedSize,
+       int *status);
 
 /**
  * Get visibility from Tizen app signing root certificate.
@@ -463,7 +463,8 @@ int certsvc_certificate_verify_with_caflag(
  *
  * @see #CertSvcVisibility
  */
-int certsvc_certificate_get_visibility(CertSvcCertificate certificate, CertSvcVisibility *visibility);
+int certsvc_certificate_get_visibility(CertSvcCertificate certificate,
+                                                                          CertSvcVisibility *visibility);
 
 
 #ifdef __cplusplus
index 8e72a92..3ca455c 100644 (file)
@@ -29,7 +29,7 @@ extern "C" {
 #endif
 
 typedef struct CertSvcInstance_t {
-    void *privatePtr;
+       void *privatePtr;
 } CertSvcInstance;
 
 /**
index cc52112..101d2e3 100644 (file)
@@ -45,8 +45,8 @@ extern "C" {
  * @see certsvc_string_free()
  */
 int certsvc_pkcs12_has_password(CertSvcInstance instance,
-                                CertSvcString filepath,
-                                int *has_password);
+                                                               CertSvcString filepath,
+                                                               int *has_password);
 
 /**
  * Couter-routine for certsvc_pkcs12_private_key_dup.
@@ -74,10 +74,10 @@ void certsvc_pkcs12_private_key_free(char *buffer);
  * @see #CertStoreType
  */
 int certsvc_pkcs12_private_key_dup_from_store(CertSvcInstance instance,
-                                              CertStoreType storeType,
-                                              CertSvcString gname,
-                                              char **buffer,
-                                              size_t *size);
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **buffer,
+               size_t *size);
 
 /**
  * Set the status for the specified certificate in cert-svc store.
@@ -99,10 +99,10 @@ int certsvc_pkcs12_private_key_dup_from_store(CertSvcInstance instance,
  * @see #CertStatus
  */
 int certsvc_pkcs12_set_certificate_status_to_store(CertSvcInstance instance,
-                                                   CertStoreType storeType,
-                                                   int is_root_app,
-                                                   CertSvcString gname,
-                                                   CertStatus status);
+               CertStoreType storeType,
+               int is_root_app,
+               CertSvcString gname,
+               CertStatus status);
 
 /**
  * Get the status for the specified certificate in cert-svc store.
@@ -121,9 +121,9 @@ int certsvc_pkcs12_set_certificate_status_to_store(CertSvcInstance instance,
  * @see #CertStroeType
  */
 int certsvc_pkcs12_get_certificate_status_from_store(CertSvcInstance instance,
-                                                     CertStoreType storeType,
-                                                     CertSvcString gname,
-                                                     CertStatus *status);
+               CertStoreType storeType,
+               CertSvcString gname,
+               CertStatus *status);
 
 /**
  * Get the certificates in cert-svc store.
@@ -145,10 +145,10 @@ int certsvc_pkcs12_get_certificate_status_from_store(CertSvcInstance instance,
  * @see #CertSvcStoreCertList
  */
 int certsvc_pkcs12_get_certificate_list_from_store(CertSvcInstance instance,
-                                                   CertStoreType storeType,
-                                                   int is_root_app,
-                                                   CertSvcStoreCertList** certList,
-                                                   size_t *length);
+               CertStoreType storeType,
+               int is_root_app,
+               CertSvcStoreCertList **certList,
+               size_t *length);
 
 /**
  * Get the end user certificates in cert-svc store.
@@ -167,9 +167,9 @@ int certsvc_pkcs12_get_certificate_list_from_store(CertSvcInstance instance,
  * @see #CertSvcStoreCertList
  */
 int certsvc_pkcs12_get_end_user_certificate_list_from_store(CertSvcInstance instance,
-                                                            CertStoreType storeType,
-                                                            CertSvcStoreCertList** certList,
-                                                            size_t* length);
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length);
 
 /**
  * Get the root/trusted certificates in cert-svc store.
@@ -189,9 +189,9 @@ int certsvc_pkcs12_get_end_user_certificate_list_from_store(CertSvcInstance inst
  * @see #CertSvcStoreCertList
  */
 int certsvc_pkcs12_get_root_certificate_list_from_store(CertSvcInstance instance,
-                                                        CertStoreType storeType,
-                                                        CertSvcStoreCertList** certList,
-                                                        size_t* length);
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length);
 
 /**
  * Free all @a CertSvcStoreCertList in linked list of data structure.
@@ -209,7 +209,7 @@ int certsvc_pkcs12_get_root_certificate_list_from_store(CertSvcInstance instance
  * @see #CertSvcStoreCertList
  */
 int certsvc_pkcs12_free_certificate_list_loaded_from_store(CertSvcInstance instance,
-                                                           CertSvcStoreCertList** certList);
+               CertSvcStoreCertList **certList);
 
 /**
  * Get the certificate with the gname provided from cert-svc store.
@@ -227,9 +227,9 @@ int certsvc_pkcs12_free_certificate_list_loaded_from_store(CertSvcInstance insta
  * @see #CertStoreType
  */
 int certsvc_pkcs12_get_certificate_from_store(CertSvcInstance instance,
-                                              CertStoreType storeType,
-                                              const char *gname,
-                                              CertSvcCertificate *certificate);
+               CertStoreType storeType,
+               const char *gname,
+               CertSvcCertificate *certificate);
 
 /**
  * Get the encoded certificate buffer with the gname provided from cert-svc store.
@@ -250,10 +250,10 @@ int certsvc_pkcs12_get_certificate_from_store(CertSvcInstance instance,
  * @see #CertStoreType
  */
 int certsvc_pkcs12_get_certificate_info_from_store(CertSvcInstance instance,
-                                                   CertStoreType storeType,
-                                                   CertSvcString gname,
-                                                   char** buffer,
-                                                   size_t* size);
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **buffer,
+               size_t *size);
 
 /**
  * Import PKCS#12 bundle(with .pfx or .p12) or certificate(base64 form with .crt
@@ -277,10 +277,10 @@ int certsvc_pkcs12_get_certificate_info_from_store(CertSvcInstance instance,
  * @see #CertStoreType
  */
 int certsvc_pkcs12_import_from_file_to_store(CertSvcInstance instance,
-                                             CertStoreType storeType,
-                                             CertSvcString path,
-                                             CertSvcString password,
-                                             CertSvcString alias);
+               CertStoreType storeType,
+               CertSvcString path,
+               CertSvcString password,
+               CertSvcString alias);
 
 /**
  * Delete the certificate with gname provided from cert-svc store.
@@ -298,8 +298,8 @@ int certsvc_pkcs12_import_from_file_to_store(CertSvcInstance instance,
  * @see #CertStoreType
  */
 int certsvc_pkcs12_delete_certificate_from_store(CertSvcInstance instance,
-                                                 CertStoreType storeType,
-                                                 CertSvcString gname);
+               CertStoreType storeType,
+               CertSvcString gname);
 
 /**
  * Check the uniqueness of the alias in cert-svc store.
@@ -318,9 +318,9 @@ int certsvc_pkcs12_delete_certificate_from_store(CertSvcInstance instance,
  * @see #CertStoreType
  */
 int certsvc_pkcs12_check_alias_exists_in_store(CertSvcInstance instance,
-                                               CertStoreType storeType,
-                                               CertSvcString alias,
-                                               int *is_unique);
+               CertStoreType storeType,
+               CertSvcString alias,
+               int *is_unique);
 
 /**
  * Get list of certificates from PKCS#12 bundle or single certificate which
@@ -343,9 +343,9 @@ int certsvc_pkcs12_check_alias_exists_in_store(CertSvcInstance instance,
  * @see #CertSvcStoreCertList
  */
 int certsvc_pkcs12_load_certificate_list_from_store(CertSvcInstance instance,
-                                                    CertStoreType storeType,
-                                                    CertSvcString alias,
-                                                    CertSvcCertificateList *certificateList);
+               CertStoreType storeType,
+               CertSvcString alias,
+               CertSvcCertificateList *certificateList);
 
 /**
  * Get the alias name with the gname provided.
@@ -364,9 +364,9 @@ int certsvc_pkcs12_load_certificate_list_from_store(CertSvcInstance instance,
  * @see #CertStoreType
  */
 int certsvc_pkcs12_get_alias_name_for_certificate_in_store(CertSvcInstance instance,
-                                                           CertStoreType storeType,
-                                                           CertSvcString gname,
-                                                           char **alias);
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **alias);
 
 #ifdef __cplusplus
 }
index 66f86cd..8feb9e9 100644 (file)
@@ -44,7 +44,7 @@ extern "C" {
  *
  * @see certsvc_certificate_free_x509()
  */
-int certsvc_certificate_dup_x509(CertSvcCertificate certificate, X509** x509);
+int certsvc_certificate_dup_x509(CertSvcCertificate certificate, X509 **x509);
 
 /**
  * Free openssl x509 structure duplicated by certsvc_certificate_dup_x509().
@@ -66,7 +66,8 @@ void certsvc_certificate_free_x509(X509 *x509);
  *
  * @return #CERTSVC_SUCCESS on success, otherwise a zero or negative error value
  */
-int certsvc_certificate_dup_pubkey_der(CertSvcCertificate certificate, unsigned char **pubkey, size_t *len);
+int certsvc_certificate_dup_pubkey_der(CertSvcCertificate certificate, unsigned char **pubkey,
+                                                                          size_t *len);
 
 /**
  * Get private key from cert-svc store in openssl EVP_PKEY structure.
@@ -84,9 +85,9 @@ int certsvc_certificate_dup_pubkey_der(CertSvcCertificate certificate, unsigned
  * @see certsvc_pkcs12_free_evp_pkey()
  */
 int certsvc_pkcs12_dup_evp_pkey_from_store(CertSvcInstance instance,
-                                           CertStoreType storeType,
-                                           CertSvcString gname,
-                                           EVP_PKEY** pkey);
+               CertStoreType storeType,
+               CertSvcString gname,
+               EVP_PKEY **pkey);
 
 /**
  * Free openssl EVP_PKEY structure duplicated by certsvc_pkcs12_dup_ev_pkey()
@@ -97,7 +98,7 @@ int certsvc_pkcs12_dup_evp_pkey_from_store(CertSvcInstance instance,
  * @see certsvc_pkcs12_dup_evp_pkey()
  * @see certsvc_pkcs12_dup_evp_pkey_from_store()
  */
-void certsvc_pkcs12_free_evp_pkey(EVP_PKEYpkey);
+void certsvc_pkcs12_free_evp_pkey(EVP_PKEY *pkey);
 
 #ifdef __cplusplus
 }
index 3c2ef6c..4f3c37f 100644 (file)
@@ -31,19 +31,19 @@ extern "C" {
 
 
 typedef struct CertSvcStringList_t {
-    size_t privateHandler;
-    CertSvcInstance privateInstance;
+       size_t privateHandler;
+       CertSvcInstance privateInstance;
 } CertSvcStringList;
 
 typedef struct CertSvcString_t {
-    /*
-     * You are not allowed to use private fields of this structure. It is internal
-     * implementation of strings and it may change at any time without notice!
-     * To extract data use certsvc_string_to_cstring function!
-     */
-    char *privateHandler;
-    size_t privateLength;
-    CertSvcInstance privateInstance;
+       /*
+        * You are not allowed to use private fields of this structure. It is internal
+        * implementation of strings and it may change at any time without notice!
+        * To extract data use certsvc_string_to_cstring function!
+        */
+       char *privateHandler;
+       size_t privateLength;
+       CertSvcInstance privateInstance;
 } CertSvcString;
 
 /**
@@ -64,10 +64,10 @@ typedef struct CertSvcString_t {
  * @see certsvc_string_free()
  */
 int certsvc_string_new(
-    CertSvcInstance instance,
-    const char *input,
-    size_t size,
-    CertSvcString *output);
+       CertSvcInstance instance,
+       const char *input,
+       size_t size,
+       CertSvcString *output);
 
 /**
  * Create CertSvcString with @a input null-terminated string. @a output CertSvcString will
@@ -85,10 +85,10 @@ int certsvc_string_new(
  * @see certsvc_string_free()
  */
 int certsvc_string_not_managed(
-    CertSvcInstance instance,
-    const char *input,
-    size_t size,
-    CertSvcString *output);
+       CertSvcInstance instance,
+       const char *input,
+       size_t size,
+       CertSvcString *output);
 
 /**
  * Get CertSvcString from CertSvcStringList with newly allocated memory.
@@ -106,8 +106,8 @@ int certsvc_string_not_managed(
  * @see certsvc_string_free()
  */
 int certsvc_string_list_get_one(CertSvcStringList hander,
-                                size_t position,
-                                CertSvcString *buffer);
+                                                               size_t position,
+                                                               CertSvcString *buffer);
 
 /**
  * Get list size of CertSvcStringList.
index b2cb426..14ef0b7 100644 (file)
@@ -27,25 +27,25 @@ namespace VcoreDPL {
 // Do not call directly
 // Always use Assert macro
 void AssertProc(const char *condition,
-                const char *file,
-                int line,
-                const char *function) __attribute__ ((__noreturn__));
+                               const char *file,
+                               int line,
+                               const char *function) __attribute__((__noreturn__));
 } // namespace VcoreDPL
 
 #define Assert(Condition)                                               \
-do {                                                                    \
-    if (!(Condition)) {                                                 \
-        VcoreDPL::AssertProc(#Condition, __FILE__, __LINE__, __FUNCTION__);  \
-    }                                                                   \
-} while (0)
+       do {                                                                    \
+               if (!(Condition)) {                                                 \
+                       VcoreDPL::AssertProc(#Condition, __FILE__, __LINE__, __FUNCTION__);  \
+               }                                                                   \
+       } while (0)
 
 #define AssertMsg(Condition, Msg)                                         \
-    do {                                                                  \
-        if (!(Condition)) {                                               \
-            VcoreDPL::AssertProc(                                              \
-                (std::string(std::string(#Condition)+" ") + Msg).c_str(), \
-                __FILE__, __LINE__, __FUNCTION__);                        \
-        }                                                                 \
-    } while (0)
+       do {                                                                  \
+               if (!(Condition)) {                                               \
+                       VcoreDPL::AssertProc(                                              \
+                                       (std::string(std::string(#Condition)+" ") + Msg).c_str(), \
+                                       __FILE__, __LINE__, __FUNCTION__);                        \
+               }                                                                 \
+       } while (0)
 
 #endif // DPL_ASSERT_H
index 4c22139..5d8e91c 100644 (file)
 namespace VcoreDPL {
 namespace Colors {
 namespace Text {
-extern const charBOLD_GREEN_BEGIN;
-extern const charBOLD_GREEN_END;
-extern const charPURPLE_BEGIN;
-extern const charPURPLE_END;
-extern const charRED_BEGIN;
-extern const charRED_END;
-extern const charGREEN_BEGIN;
-extern const charGREEN_END;
-extern const charCYAN_BEGIN;
-extern const charCYAN_END;
-extern const charBOLD_RED_BEGIN;
-extern const charBOLD_RED_END;
-extern const charBOLD_YELLOW_BEGIN;
-extern const charBOLD_YELLOW_END;
-extern const charBOLD_GOLD_BEGIN;
-extern const charBOLD_GOLD_END;
-extern const charBOLD_WHITE_BEGIN;
-extern const charBOLD_WHITE_END;
+extern const char *BOLD_GREEN_BEGIN;
+extern const char *BOLD_GREEN_END;
+extern const char *PURPLE_BEGIN;
+extern const char *PURPLE_END;
+extern const char *RED_BEGIN;
+extern const char *RED_END;
+extern const char *GREEN_BEGIN;
+extern const char *GREEN_END;
+extern const char *CYAN_BEGIN;
+extern const char *CYAN_END;
+extern const char *BOLD_RED_BEGIN;
+extern const char *BOLD_RED_END;
+extern const char *BOLD_YELLOW_BEGIN;
+extern const char *BOLD_YELLOW_END;
+extern const char *BOLD_GOLD_BEGIN;
+extern const char *BOLD_GOLD_END;
+extern const char *BOLD_WHITE_BEGIN;
+extern const char *BOLD_WHITE_END;
 } //namespace Text
 
 namespace Html {
-extern const charBOLD_GREEN_BEGIN;
-extern const charBOLD_GREEN_END;
-extern const charPURPLE_BEGIN;
-extern const charPURPLE_END;
-extern const charRED_BEGIN;
-extern const charRED_END;
-extern const charGREEN_BEGIN;
-extern const charGREEN_END;
-extern const charCYAN_BEGIN;
-extern const charCYAN_END;
-extern const charBOLD_RED_BEGIN;
-extern const charBOLD_RED_END;
-extern const charBOLD_YELLOW_BEGIN;
-extern const charBOLD_YELLOW_END;
-extern const charBOLD_GOLD_BEGIN;
-extern const charBOLD_GOLD_END;
-extern const charBOLD_WHITE_BEGIN;
-extern const charBOLD_WHITE_END;
+extern const char *BOLD_GREEN_BEGIN;
+extern const char *BOLD_GREEN_END;
+extern const char *PURPLE_BEGIN;
+extern const char *PURPLE_END;
+extern const char *RED_BEGIN;
+extern const char *RED_END;
+extern const char *GREEN_BEGIN;
+extern const char *GREEN_END;
+extern const char *CYAN_BEGIN;
+extern const char *CYAN_END;
+extern const char *BOLD_RED_BEGIN;
+extern const char *BOLD_RED_END;
+extern const char *BOLD_YELLOW_BEGIN;
+extern const char *BOLD_YELLOW_END;
+extern const char *BOLD_GOLD_BEGIN;
+extern const char *BOLD_GOLD_END;
+extern const char *BOLD_WHITE_BEGIN;
+extern const char *BOLD_WHITE_END;
 } //namespace Html
 } //namespace Colors
 } //namespace VcoreDPL
index 95ea4ac..fba822a 100644 (file)
 namespace VcoreDPL {
 void LogUnhandledException(const std::string &str);
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function);
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function);
 }
 
 namespace VcoreDPL {
 class Exception {
 private:
-    static unsigned int m_exceptionCount;
-    static Exception* m_lastException;
-    static void (*m_terminateHandler)();
-
-    static void AddRef(Exception* exception)
-    {
-        if (!m_exceptionCount) {
-            m_terminateHandler = std::set_terminate(&TerminateHandler);
-        }
-
-        ++m_exceptionCount;
-        m_lastException = exception;
-    }
-
-    static void UnRef(Exception* e)
-    {
-        if (m_lastException == e) {
-            m_lastException = NULL;
-        }
-
-        --m_exceptionCount;
-
-        if (!m_exceptionCount) {
-            std::set_terminate(m_terminateHandler);
-            m_terminateHandler = NULL;
-        }
-    }
-
-    static void TerminateHandler()
-    {
-        if (m_lastException != NULL) {
-            DisplayKnownException(*m_lastException);
-            abort();
-        } else {
-            DisplayUnknownException();
-            abort();
-        }
-    }
-
-    Exception *m_reason;
-    std::string m_path;
-    std::string m_function;
-    int m_line;
+       static unsigned int m_exceptionCount;
+       static Exception *m_lastException;
+       static void (*m_terminateHandler)();
+
+       static void AddRef(Exception *exception)
+       {
+               if (!m_exceptionCount) {
+                       m_terminateHandler = std::set_terminate(&TerminateHandler);
+               }
+
+               ++m_exceptionCount;
+               m_lastException = exception;
+       }
+
+       static void UnRef(Exception *e)
+       {
+               if (m_lastException == e) {
+                       m_lastException = NULL;
+               }
+
+               --m_exceptionCount;
+
+               if (!m_exceptionCount) {
+                       std::set_terminate(m_terminateHandler);
+                       m_terminateHandler = NULL;
+               }
+       }
+
+       static void TerminateHandler()
+       {
+               if (m_lastException != NULL) {
+                       DisplayKnownException(*m_lastException);
+                       abort();
+               } else {
+                       DisplayUnknownException();
+                       abort();
+               }
+       }
+
+       Exception *m_reason;
+       std::string m_path;
+       std::string m_function;
+       int m_line;
 
 protected:
-    std::string m_message;
-    std::string m_className;
+       std::string m_message;
+       std::string m_className;
 
 public:
-    static std::string KnownExceptionToString(const Exception &e)
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;33mException trace:\033[m\n\n";
-        message << e.DumpToString();
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static std::string UnknownExceptionToString()
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static void DisplayKnownException(const Exception& e)
-    {
-        LogUnhandledException(KnownExceptionToString(e).c_str());
-    }
-
-    static void DisplayUnknownException()
-    {
-        LogUnhandledException(UnknownExceptionToString().c_str());
-    }
-
-    Exception(const Exception &other)
-    {
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-    }
-
-    const Exception &operator =(const Exception &other)
-    {
-        if (this == &other) {
-            return *this;
-        }
-
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-
-        return *this;
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const std::string &message) :
-        m_reason(NULL),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const Exception &reason,
-              const std::string &message) :
-        m_reason(new Exception(reason)),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    virtual ~Exception() throw()
-    {
-        if (m_reason != NULL) {
-            delete m_reason;
-            m_reason = NULL;
-        }
-
-        UnRef(this);
-    }
-
-    void Dump() const
-    {
-        // Show reason first
-        if (m_reason != NULL) {
-            m_reason->Dump();
-        }
-
-        // Afterward, dump exception
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-               file, m_line,
-               m_function.c_str(),
-               m_className.c_str(),
-               m_message.empty() ? "<EMPTY>" : m_message.c_str());
-    }
-
-    std::string DumpToString() const
-    {
-        std::string ret;
-        if (m_reason != NULL) {
-            ret = m_reason->DumpToString();
-        }
-
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        char buf[1024];
-        snprintf(buf,
-                 sizeof(buf),
-                 "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-                 file,
-                 m_line,
-                 m_function.c_str(),
-                 m_className.c_str(),
-                 m_message.empty() ? "<EMPTY>" : m_message.c_str());
-
-        buf[sizeof(buf) - 1] = '\n';
-        ret += buf;
-
-        return ret;
-    }
-
-    Exception *GetReason() const
-    {
-        return m_reason;
-    }
-
-    std::string GetPath() const
-    {
-        return m_path;
-    }
-
-    std::string GetFunction() const
-    {
-        return m_function;
-    }
-
-    int GetLine() const
-    {
-        return m_line;
-    }
-
-    std::string GetMessage() const
-    {
-        return m_message;
-    }
-
-    std::string GetClassName() const
-    {
-        return m_className;
-    }
+       static std::string KnownExceptionToString(const Exception &e)
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;33mException trace:\033[m\n\n";
+               message << e.DumpToString();
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static std::string UnknownExceptionToString()
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static void DisplayKnownException(const Exception &e)
+       {
+               LogUnhandledException(KnownExceptionToString(e).c_str());
+       }
+
+       static void DisplayUnknownException()
+       {
+               LogUnhandledException(UnknownExceptionToString().c_str());
+       }
+
+       Exception(const Exception &other)
+       {
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+       }
+
+       const Exception &operator =(const Exception &other)
+       {
+               if (this == &other) {
+                       return *this;
+               }
+
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+               return *this;
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const std::string &message) :
+               m_reason(NULL),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const Exception &reason,
+                         const std::string &message) :
+               m_reason(new Exception(reason)),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       virtual ~Exception() throw()
+       {
+               if (m_reason != NULL) {
+                       delete m_reason;
+                       m_reason = NULL;
+               }
+
+               UnRef(this);
+       }
+
+       void Dump() const
+       {
+               // Show reason first
+               if (m_reason != NULL) {
+                       m_reason->Dump();
+               }
+
+               // Afterward, dump exception
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                          file, m_line,
+                          m_function.c_str(),
+                          m_className.c_str(),
+                          m_message.empty() ? "<EMPTY>" : m_message.c_str());
+       }
+
+       std::string DumpToString() const
+       {
+               std::string ret;
+
+               if (m_reason != NULL) {
+                       ret = m_reason->DumpToString();
+               }
+
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               char buf[1024];
+               snprintf(buf,
+                                sizeof(buf),
+                                "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                                file,
+                                m_line,
+                                m_function.c_str(),
+                                m_className.c_str(),
+                                m_message.empty() ? "<EMPTY>" : m_message.c_str());
+               buf[sizeof(buf) - 1] = '\n';
+               ret += buf;
+               return ret;
+       }
+
+       Exception *GetReason() const
+       {
+               return m_reason;
+       }
+
+       std::string GetPath() const
+       {
+               return m_path;
+       }
+
+       std::string GetFunction() const
+       {
+               return m_function;
+       }
+
+       int GetLine() const
+       {
+               return m_line;
+       }
+
+       std::string GetMessage() const
+       {
+               return m_message;
+       }
+
+       std::string GetClassName() const
+       {
+               return m_className;
+       }
 };
 } // namespace VcoreDPL
 
 #define Try try
 
 #define Throw(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__)
 
 #define ThrowMsg(ClassName, Message)                                                 \
-    do                                                                               \
-    {                                                                                \
-        std::ostringstream dplLoggingStream;                                         \
-        dplLoggingStream << Message;                                                 \
-        throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
-    } while (0)
+       do                                                                               \
+       {                                                                                \
+               std::ostringstream dplLoggingStream;                                         \
+               dplLoggingStream << Message;                                                 \
+               throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
+       } while (0)
 
 #define ReThrow(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
 
 #define ReThrowMsg(ClassName, Message)                                               \
-    throw ClassName(__FILE__,                                                        \
-                    __FUNCTION__,                                                    \
-                    __LINE__,                                                        \
-                    _rethrown_exception,                                             \
-                    Message)
+       throw ClassName(__FILE__,                                                        \
+                                       __FUNCTION__,                                                    \
+                                       __LINE__,                                                        \
+                                       _rethrown_exception,                                             \
+                                       Message)
 
 #define Catch(ClassName)                                                             \
-    catch (const ClassName &_rethrown_exception)
+       catch (const ClassName &_rethrown_exception)
 
 #define DECLARE_EXCEPTION_TYPE(BaseClass, Class)                                     \
-    class Class : public BaseClass {                                                 \
-    public:                                                                          \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, message) {                               \
-                                                                                     \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-                                                                                     \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const VcoreDPL::Exception & reason,                                    \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, reason, message) {                       \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-    };
+       class Class : public BaseClass {                                                 \
+       public:                                                                          \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, message) {                               \
+                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+               \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const VcoreDPL::Exception & reason,                                    \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, reason, message) {                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+       };
 
 #define UNHANDLED_EXCEPTION_HANDLER_BEGIN try
 
 #define UNHANDLED_EXCEPTION_HANDLER_END                                              \
-    catch (const VcoreDPL::Exception &exception)                                     \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << VcoreDPL::Exception::KnownExceptionToString(exception);               \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                       __FUNCTION__);                                \
-        abort();                                                                     \
-    }                                                                                \
-    catch (std::exception& e)                                                        \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << e.what();                                                             \
-        msg << "\n";                                                                 \
-        msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }                                                                                \
-    catch (...)                                                                      \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
-        VcoreDPL::LogUnhandledException(msg.str(),                                   \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }
+       catch (const VcoreDPL::Exception &exception)                                     \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << VcoreDPL::Exception::KnownExceptionToString(exception);               \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                                \
+               abort();                                                                     \
+       }                                                                                \
+       catch (std::exception& e)                                                        \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << e.what();                                                             \
+               msg << "\n";                                                                 \
+               msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                               \
+               abort();                                                                     \
+       }                                                                                \
+       catch (...)                                                                      \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << VcoreDPL::Exception::UnknownExceptionToString();                      \
+               VcoreDPL::LogUnhandledException(msg.str(),                                   \
+                                                                               __FILE__,                                    \
+                                                                               __LINE__,                                    \
+                                                                               __FUNCTION__);                               \
+               abort();                                                                     \
+       }
 
 namespace VcoreDPL {
 namespace CommonException {
@@ -382,8 +374,8 @@ namespace CommonException {
  * important messages.
  */
 DECLARE_EXCEPTION_TYPE(Exception, InternalError) ///< Unexpected error from
-                                                // underlying libraries or
-                                                // kernel
+// underlying libraries or
+// kernel
 }
 }
 
index 89372d0..7f951dd 100644 (file)
 #define DPL_NONCOPYABLE_H
 
 namespace VcoreDPL {
-class Noncopyable
-{
-  private:
-    Noncopyable(const Noncopyable &);
-    const Noncopyable &operator=(const Noncopyable &);
+class Noncopyable {
+private:
+       Noncopyable(const Noncopyable &);
+       const Noncopyable &operator=(const Noncopyable &);
 
-  public:
-    Noncopyable();
-    virtual ~Noncopyable();
+public:
+       Noncopyable();
+       virtual ~Noncopyable();
 };
 } // namespace VcoreDPL
 
index 57bbe33..bec534a 100644 (file)
 namespace VcoreDPL {
 template<typename Class>
 class Singleton :
-    private Class
-{
-    //
-    // Note:
-    //
-    // To remove posibility of instantiating directly Class,
-    // make Class' default constructor protected
-    //
+       private Class {
+       //
+       // Note:
+       //
+       // To remove posibility of instantiating directly Class,
+       // make Class' default constructor protected
+       //
 
-  private:
-    Singleton()
-    {}
+private:
+       Singleton()
+       {}
 
-    static Singleton &InternalInstance();
+       static Singleton &InternalInstance();
 
-  public:
-    virtual ~Singleton()
-    {}
+public:
+       virtual ~Singleton()
+       {}
 
-    static Class &Instance();
+       static Class &Instance();
 };
 } // namespace VcoreDPL
 
index f8f9fd9..502d926 100644 (file)
 
 namespace VcoreDPL {
 template<typename Class>
-Singleton<Class>Singleton<Class>::InternalInstance()
+Singleton<Class> &Singleton<Class>::InternalInstance()
 {
-    static Singleton<Class> instance;
-    return instance;
+       static Singleton<Class> instance;
+       return instance;
 }
 
 template<typename Class>
 Class &Singleton<Class>::Instance()
 {
-    Singleton<Class>& instance = Singleton<Class>::InternalInstance();
-    return instance;
+       Singleton<Class> &instance = Singleton<Class>::InternalInstance();
+       return instance;
 }
 } // namespace VcoreDPL
 
 #define IMPLEMENT_SINGLETON(Type)                                                     \
-    template VcoreDPL::Singleton<Type>&VcoreDPL::Singleton<Type>::InternalInstance(); \
-    template Type & VcoreDPL::Singleton<Type>::Instance();                            \
+       template VcoreDPL::Singleton<Type>&VcoreDPL::Singleton<Type>::InternalInstance(); \
+       template Type & VcoreDPL::Singleton<Type>::Instance();                            \
 
 #endif // DPL_SINGLETON_IMPL_H
index a90b4a3..d0c935f 100644 (file)
 
 namespace VcoreDPL {
 void AssertProc(const char *condition,
-                const char *file,
-                int line,
-                const char *function)
+                               const char *file,
+                               int line,
+                               const char *function)
 {
-
 #define INTERNAL_LOG(message)          \
-do {                                   \
-    std::ostringstream platformLog;    \
-    platformLog << message;            \
-    LogDebug("" << platformLog.str()); \
-} while (0)
-
-    // Try to log failed assertion to log system
-    Try {
-        INTERNAL_LOG("########################################################################");
-        INTERNAL_LOG("###                      DPL assertion failed!                       ###");
-        INTERNAL_LOG("########################################################################");
-        INTERNAL_LOG("### Condition: " << condition);
-        INTERNAL_LOG("### File: " << file);
-        INTERNAL_LOG("### Line: " << line);
-        INTERNAL_LOG("### Function: " << function);
-        INTERNAL_LOG("########################################################################");
-    } catch (Exception) {
-        // Just ignore possible double errors
-    }
+       do {                                   \
+               std::ostringstream platformLog;    \
+               platformLog << message;            \
+               LogDebug("" << platformLog.str()); \
+       } while (0)
+       // Try to log failed assertion to log system
+       Try {
+               INTERNAL_LOG("########################################################################");
+               INTERNAL_LOG("###                      DPL assertion failed!                       ###");
+               INTERNAL_LOG("########################################################################");
+               INTERNAL_LOG("### Condition: " << condition);
+               INTERNAL_LOG("### File: " << file);
+               INTERNAL_LOG("### Line: " << line);
+               INTERNAL_LOG("### Function: " << function);
+               INTERNAL_LOG("########################################################################");
+       } catch (Exception) {
+               // Just ignore possible double errors
+       }
 
-    // Fail with c-library abort
-    abort();
+       // Fail with c-library abort
+       abort();
 }
 } // namespace VcoreDPL
index e918453..2ec2749 100644 (file)
 namespace VcoreDPL {
 namespace Colors {
 namespace Text {
-const charBOLD_GREEN_BEGIN = "\033[1;32m";
-const charBOLD_GREEN_END = "\033[m";
-const charRED_BEGIN = "\033[0;31m";
-const charRED_END = "\033[m";
-const charPURPLE_BEGIN = "\033[0;35m";
-const charPURPLE_END = "\033[m";
-const charGREEN_BEGIN = "\033[0;32m";
-const charGREEN_END = "\033[m";
-const charCYAN_BEGIN = "\033[0;36m";
-const charCYAN_END = "\033[m";
-const charBOLD_RED_BEGIN = "\033[1;31m";
-const charBOLD_RED_END = "\033[m";
-const charBOLD_YELLOW_BEGIN = "\033[1;33m";
-const charBOLD_YELLOW_END = "\033[m";
-const charBOLD_GOLD_BEGIN = "\033[0;33m";
-const charBOLD_GOLD_END = "\033[m";
-const charBOLD_WHITE_BEGIN = "\033[1;37m";
-const charBOLD_WHITE_END = "\033[m";
+const char *BOLD_GREEN_BEGIN = "\033[1;32m";
+const char *BOLD_GREEN_END = "\033[m";
+const char *RED_BEGIN = "\033[0;31m";
+const char *RED_END = "\033[m";
+const char *PURPLE_BEGIN = "\033[0;35m";
+const char *PURPLE_END = "\033[m";
+const char *GREEN_BEGIN = "\033[0;32m";
+const char *GREEN_END = "\033[m";
+const char *CYAN_BEGIN = "\033[0;36m";
+const char *CYAN_END = "\033[m";
+const char *BOLD_RED_BEGIN = "\033[1;31m";
+const char *BOLD_RED_END = "\033[m";
+const char *BOLD_YELLOW_BEGIN = "\033[1;33m";
+const char *BOLD_YELLOW_END = "\033[m";
+const char *BOLD_GOLD_BEGIN = "\033[0;33m";
+const char *BOLD_GOLD_END = "\033[m";
+const char *BOLD_WHITE_BEGIN = "\033[1;37m";
+const char *BOLD_WHITE_END = "\033[m";
 } //namespace Text
 
 namespace Html {
-const charBOLD_GREEN_BEGIN = "<font color=\"green\"><b>";
-const charBOLD_GREEN_END = "</b></font>";
-const charPURPLE_BEGIN = "<font color=\"purple\"><b>";
-const charPURPLE_END = "</b></font>";
-const charRED_BEGIN = "<font color=\"red\"><b>";
-const charRED_END = "</b></font>";
-const charGREEN_BEGIN = "<font color=\"green\">";
-const charGREEN_END = "</font>";
-const charCYAN_BEGIN = "<font color=\"cyan\">";
-const charCYAN_END = "</font>";
-const charBOLD_RED_BEGIN = "<font color=\"red\"><b>";
-const charBOLD_RED_END = "</b></font>";
-const charBOLD_YELLOW_BEGIN = "<font color=\"yellow\"><b>";
-const charBOLD_YELLOW_END = "</b></font>";
-const charBOLD_GOLD_BEGIN = "<font color=\"gold\"><b>";
-const charBOLD_GOLD_END = "</b></font>";
-const charBOLD_WHITE_BEGIN = "<font color=\"white\"><b>";
-const charBOLD_WHITE_END = "</b></font>";
+const char *BOLD_GREEN_BEGIN = "<font color=\"green\"><b>";
+const char *BOLD_GREEN_END = "</b></font>";
+const char *PURPLE_BEGIN = "<font color=\"purple\"><b>";
+const char *PURPLE_END = "</b></font>";
+const char *RED_BEGIN = "<font color=\"red\"><b>";
+const char *RED_END = "</b></font>";
+const char *GREEN_BEGIN = "<font color=\"green\">";
+const char *GREEN_END = "</font>";
+const char *CYAN_BEGIN = "<font color=\"cyan\">";
+const char *CYAN_END = "</font>";
+const char *BOLD_RED_BEGIN = "<font color=\"red\"><b>";
+const char *BOLD_RED_END = "</b></font>";
+const char *BOLD_YELLOW_BEGIN = "<font color=\"yellow\"><b>";
+const char *BOLD_YELLOW_END = "</b></font>";
+const char *BOLD_GOLD_BEGIN = "<font color=\"gold\"><b>";
+const char *BOLD_GOLD_END = "</b></font>";
+const char *BOLD_WHITE_BEGIN = "<font color=\"white\"><b>";
+const char *BOLD_WHITE_END = "</b></font>";
 } //namespace Html
 } //namespace Colors
 } //namespace VcoreDPL
index 1fb3d94..7e9faa2 100644 (file)
 #include <cstdio>
 
 namespace VcoreDPL {
-ExceptionException::m_lastException = NULL;
+Exception *Exception::m_lastException = NULL;
 unsigned int Exception::m_exceptionCount = 0;
 void (*Exception::m_terminateHandler)() = NULL;
 
 void LogUnhandledException(const std::string &str)
 {
-    LogDebug("" << str);
+       LogDebug("" << str);
 }
 
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function)
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function)
 {
-    LogError("Exception occured on file[" << filename
-        << "] line[" << line
-        << "] function[" << function
-        << "] msg[" << str << "]");
+       LogError("Exception occured on file[" << filename
+                        << "] line[" << line
+                        << "] function[" << function
+                        << "] msg[" << str << "]");
 }
 } // namespace VcoreDPL
index f2f7730..b2bf970 100644 (file)
 
 namespace VcoreDPL {
 namespace Log {
-class AbstractLogProvider
-{
+class AbstractLogProvider {
 public:
-    enum class LogLevel {
-        None,
-        Error,
-        Warning,
-        Info,
-        Debug,
-        Pedantic
-    };
+       enum class LogLevel {
+               None,
+               Error,
+               Warning,
+               Info,
+               Debug,
+               Pedantic
+       };
 
-    virtual ~AbstractLogProvider() {}
+       virtual ~AbstractLogProvider() {}
 
-    virtual void SetTag(const char *tag);
+       virtual void SetTag(const char *tag);
 
-    virtual void Log(LogLevel level,
-                     const char *message,
-                     const char *fileName,
-                     int line,
-                     const char *function) const = 0;
+       virtual void Log(LogLevel level,
+                                        const char *message,
+                                        const char *fileName,
+                                        int line,
+                                        const char *function) const = 0;
 
 protected:
-    static const char *LocateSourceFileName(const char *filename);
+       static const char *LocateSourceFileName(const char *filename);
 };
 }
 } // namespace VcoreDPL
index 5f96eb5..e1e5be2 100644 (file)
 
 namespace VcoreDPL {
 namespace Log {
-class DLOGLogProvider : public AbstractLogProvider
-{
+class DLOGLogProvider : public AbstractLogProvider {
 public:
-    DLOGLogProvider();
-    virtual ~DLOGLogProvider();
+       DLOGLogProvider();
+       virtual ~DLOGLogProvider();
 
-    virtual void Log(AbstractLogProvider::LogLevel level,
-                     const char *message,
-                     const char *fileName,
-                     int line,
-                     const char *function) const;
+       virtual void Log(AbstractLogProvider::LogLevel level,
+                                        const char *message,
+                                        const char *fileName,
+                                        int line,
+                                        const char *function) const;
 
-    // Set global Tag according to DLOG
-    virtual void SetTag(const char *tag);
+       // Set global Tag according to DLOG
+       virtual void SetTag(const char *tag);
 
 private:
-    std::unique_ptr<char[]> m_tag;
-
+       std::unique_ptr<char[]> m_tag;
 };
 }
 } // namespace VcoreDPL
index b20e880..3c2cc5a 100644 (file)
 namespace VcoreDPL {
 namespace Log {
 
-class JournalLogProvider: public AbstractLogProvider
-{
+class JournalLogProvider: public AbstractLogProvider {
 public:
-    JournalLogProvider();
-    virtual ~JournalLogProvider();
+       JournalLogProvider();
+       virtual ~JournalLogProvider();
 
-    virtual void Log(AbstractLogProvider::LogLevel level,
-                     const char *message,
-                     const char *fileName,
-                     int line,
-                     const char *function) const;
+       virtual void Log(AbstractLogProvider::LogLevel level,
+                                        const char *message,
+                                        const char *fileName,
+                                        int line,
+                                        const char *function) const;
 };
 
 } /* namespace Log */
index a97bc49..e23c722 100644 (file)
@@ -40,78 +40,79 @@ namespace Log {
  * To switch logs into old style, export
  * DPL_USE_OLD_STYLE_LOGS before application start
  */
-class LogSystem : private Noncopyable
-{
+class LogSystem : private Noncopyable {
 public:
-    LogSystem();
-    virtual ~LogSystem();
-
-    AbstractLogProvider::LogLevel GetLogLevel() const { return m_level; }
-
-    void Log(AbstractLogProvider::LogLevel level,
-             const char *message,
-             const char *filename,
-             int line,
-             const char *function) const;
-
-
-    /**
-     * Set default's DLOG provider Tag
-     */
-    void SetTag(const char *tag);
-
-    /**
-     * Add abstract provider to providers list
-     *
-     * @notice Ownership is transfered to LogSystem and deleted upon exit
-     */
-    void AddProvider(AbstractLogProvider *provider);
-
-    /**
-     * Remove abstract provider from providers list
-     */
-    void RemoveProvider(AbstractLogProvider *provider);
-
-    /**
-     * Selects given provider by name (overwrites environment setting)
-     *
-     * Throws std::out_of_range exception if not found.
-     */
-    void SelectProvider(const std::string& name);
-
-    /**
-     * Sets log level (overwrites environment settings)
-     */
-    void SetLogLevel(const char* level);
+       LogSystem();
+       virtual ~LogSystem();
+
+       AbstractLogProvider::LogLevel GetLogLevel() const
+       {
+               return m_level;
+       }
+
+       void Log(AbstractLogProvider::LogLevel level,
+                        const char *message,
+                        const char *filename,
+                        int line,
+                        const char *function) const;
+
+
+       /**
+        * Set default's DLOG provider Tag
+        */
+       void SetTag(const char *tag);
+
+       /**
+        * Add abstract provider to providers list
+        *
+        * @notice Ownership is transfered to LogSystem and deleted upon exit
+        */
+       void AddProvider(AbstractLogProvider *provider);
+
+       /**
+        * Remove abstract provider from providers list
+        */
+       void RemoveProvider(AbstractLogProvider *provider);
+
+       /**
+        * Selects given provider by name (overwrites environment setting)
+        *
+        * Throws std::out_of_range exception if not found.
+        */
+       void SelectProvider(const std::string &name);
+
+       /**
+        * Sets log level (overwrites environment settings)
+        */
+       void SetLogLevel(const char *level);
 
 private:
-    void RemoveProviders();
-
-    typedef std::list<AbstractLogProvider *> AbstractLogProviderPtrList;
-    AbstractLogProviderPtrList m_providers;
-    AbstractLogProvider::LogLevel m_level;
-
-    typedef AbstractLogProvider *(*ProviderFn)();
-    /*
-     * It cannot be global as it is used in library constructor and we can't be sure which
-     * constructor is called first: library's or new_provider's.
-     */
-    std::unordered_map<std::string, ProviderFn> m_providerCtor;
+       void RemoveProviders();
+
+       typedef std::list<AbstractLogProvider *> AbstractLogProviderPtrList;
+       AbstractLogProviderPtrList m_providers;
+       AbstractLogProvider::LogLevel m_level;
+
+       typedef AbstractLogProvider *(*ProviderFn)();
+       /*
+        * It cannot be global as it is used in library constructor and we can't be sure which
+        * constructor is called first: library's or new_provider's.
+        */
+       std::unordered_map<std::string, ProviderFn> m_providerCtor;
 };
 
 /*
  * Replacement low overhead null logging class
  */
-class NullStream
-{
-  public:
-    NullStream() {}
-
-    template <typename T>
-    NullStream& operator<<(const T&)
-    {
-        return *this;
-    }
+class NullStream {
+public:
+       NullStream() {}
+
+       template <typename T>
+       NullStream &operator<<(const T &)
+       {
+               return *this;
+       }
 };
 
 /**
@@ -124,34 +125,34 @@ typedef Singleton<LogSystem> LogSystemSingleton;
 
 /* avoid warnings about unused variables */
 #define DPL_MACRO_DUMMY_LOGGING(message, level)                                 \
-    do {                                                                        \
-        VcoreDPL::Log::NullStream ns;                                           \
-        ns << message;                                                          \
-    } while (0)
+       do {                                                                        \
+               VcoreDPL::Log::NullStream ns;                                           \
+               ns << message;                                                          \
+       } while (0)
 
 #define DPL_MACRO_FOR_LOGGING(message, level)                                   \
-do                                                                              \
-{                                                                               \
-    if (level > VcoreDPL::Log::AbstractLogProvider::LogLevel::None &&           \
-        VcoreDPL::Log::LogSystemSingleton::Instance().GetLogLevel() >= level)   \
-    {                                                                           \
-        std::ostringstream platformLog;                                         \
-        platformLog << message;                                                 \
-        VcoreDPL::Log::LogSystemSingleton::Instance().Log(level,                \
-                                                     platformLog.str().c_str(), \
-                                                     __FILE__,                  \
-                                                     __LINE__,                  \
-                                                     __FUNCTION__);             \
-    }                                                                           \
-} while (0)
+       do                                                                              \
+       {                                                                               \
+               if (level > VcoreDPL::Log::AbstractLogProvider::LogLevel::None &&           \
+                               VcoreDPL::Log::LogSystemSingleton::Instance().GetLogLevel() >= level)   \
+               {                                                                           \
+                       std::ostringstream platformLog;                                         \
+                       platformLog << message;                                                 \
+                       VcoreDPL::Log::LogSystemSingleton::Instance().Log(level,                \
+                                       platformLog.str().c_str(), \
+                                       __FILE__,                  \
+                                       __LINE__,                  \
+                                       __FUNCTION__);             \
+               }                                                                           \
+       } while (0)
 
 
 #ifdef TIZEN_ENGINEER_MODE
-    #define LogDebug(message)    DPL_MACRO_FOR_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Debug)
-    #define LogPedantic(message) DPL_MACRO_FOR_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Pedantic)
+#define LogDebug(message)    DPL_MACRO_FOR_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Debug)
+#define LogPedantic(message) DPL_MACRO_FOR_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Pedantic)
 #else
-    #define LogDebug(message)    DPL_MACRO_DUMMY_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Debug)
-    #define LogPedantic(message) DPL_MACRO_DUMMY_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Pedantic)
+#define LogDebug(message)    DPL_MACRO_DUMMY_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Debug)
+#define LogPedantic(message) DPL_MACRO_DUMMY_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Pedantic)
 #endif // TIZEN_ENGINEER_MODE
 
 #define LogInfo(message)    DPL_MACRO_FOR_LOGGING(message, VcoreDPL::Log::AbstractLogProvider::LogLevel::Info)
index 836a683..e26da28 100644 (file)
 
 namespace VcoreDPL {
 namespace Log {
-class OldStyleLogProvider : public AbstractLogProvider
-{
+class OldStyleLogProvider : public AbstractLogProvider {
 public:
-    OldStyleLogProvider();
-    virtual ~OldStyleLogProvider() {}
+       OldStyleLogProvider();
+       virtual ~OldStyleLogProvider() {}
 
-    virtual void Log(AbstractLogProvider::LogLevel level,
-                     const char *message,
-                     const char *fileName,
-                     int line,
-                     const char *function) const;
+       virtual void Log(AbstractLogProvider::LogLevel level,
+                                        const char *message,
+                                        const char *fileName,
+                                        int line,
+                                        const char *function) const;
 };
 }
 } // namespace VcoreDPL
index 56bc9a0..21fd2f1 100644 (file)
@@ -30,8 +30,8 @@ void AbstractLogProvider::SetTag(const char *) {}
 
 const char *AbstractLogProvider::LocateSourceFileName(const char *filename)
 {
-    const char *ptr = strrchr(filename, '/');
-    return ptr != NULL ? ptr + 1 : filename;
+       const char *ptr = strrchr(filename, '/');
+       return ptr != NULL ? ptr + 1 : filename;
 }
 }
 }
index 29729e7..4f514b2 100644 (file)
@@ -37,36 +37,36 @@ typedef void (*dlogMacro)(const char *, const char *);
 
 void error(const char *tag, const char *msg)
 {
-    SLOG(LOG_ERROR, tag, "%s", msg);
+       SLOG(LOG_ERROR, tag, "%s", msg);
 }
 
 void warning(const char *tag, const char *msg)
 {
-    SLOG(LOG_WARN, tag, "%s", msg);
+       SLOG(LOG_WARN, tag, "%s", msg);
 }
 
 void info(const char *tag, const char *msg)
 {
-    SLOG(LOG_INFO, tag, "%s", msg);
+       SLOG(LOG_INFO, tag, "%s", msg);
 }
 
 void debug(const char *tag, const char *msg)
 {
-    SLOG(LOG_DEBUG, tag, "%s", msg);
+       SLOG(LOG_DEBUG, tag, "%s", msg);
 }
 
 void pedantic(const char *tag, const char *msg)
 {
-    SLOG(LOG_VERBOSE, tag, "%s", msg);
+       SLOG(LOG_VERBOSE, tag, "%s", msg);
 }
 
 std::map<AbstractLogProvider::LogLevel, dlogMacro> dlogMacros = {
-        // [](const char* tag, const char* msg) { SLOG(LOG_ERROR, tag, "%s", msg); } won't compile
-        { AbstractLogProvider::LogLevel::Error,     error },
-        { AbstractLogProvider::LogLevel::Warning,   warning },
-        { AbstractLogProvider::LogLevel::Info,      info },
-        { AbstractLogProvider::LogLevel::Debug,     debug},
-        { AbstractLogProvider::LogLevel::Pedantic,  pedantic}
+       // [](const char* tag, const char* msg) { SLOG(LOG_ERROR, tag, "%s", msg); } won't compile
+       { AbstractLogProvider::LogLevel::Error,     error },
+       { AbstractLogProvider::LogLevel::Warning,   warning },
+       { AbstractLogProvider::LogLevel::Info,      info },
+       { AbstractLogProvider::LogLevel::Debug,     debug},
+       { AbstractLogProvider::LogLevel::Pedantic,  pedantic}
 };
 
 } // namespace anonymous
@@ -79,28 +79,30 @@ DLOGLogProvider::~DLOGLogProvider()
 
 void DLOGLogProvider::SetTag(const char *tag)
 {
-    size_t size = strlen(tag)+1;
-    char *buff = new (std::nothrow) char[size];
-    if (buff)
-        memcpy(buff, tag, size);
-    m_tag.reset(buff);
+       size_t size = strlen(tag) + 1;
+       char *buff = new(std::nothrow) char[size];
+
+       if (buff)
+               memcpy(buff, tag, size);
+
+       m_tag.reset(buff);
 }
 
 void DLOGLogProvider::Log(AbstractLogProvider::LogLevel level,
-                          const char *message,
-                          const char *filename,
-                          int line,
-                          const char *function) const
+                                                 const char *message,
+                                                 const char *filename,
+                                                 int line,
+                                                 const char *function) const
 {
-    std::ostringstream val;
-    val << std::string("[") << LocateSourceFileName(filename) << std::string(":") << line <<
-           std::string("] ") << function << std::string("(): ") << message;
-
-    try {
-        dlogMacros.at(level)(m_tag.get(), val.str().c_str());
-    } catch (const std::out_of_range&) {
-        SLOG(LOG_ERROR, m_tag.get(), "Unsupported log level: %d", level);
-    }
+       std::ostringstream val;
+       val << std::string("[") << LocateSourceFileName(filename) << std::string(":") << line <<
+               std::string("] ") << function << std::string("(): ") << message;
+
+       try {
+               dlogMacros.at(level)(m_tag.get(), val.str().c_str());
+       } catch (const std::out_of_range &) {
+               SLOG(LOG_ERROR, m_tag.get(), "Unsupported log level: %d", level);
+       }
 }
 }
 } // namespace VcoreDPL
index 71ec2fe..0abf8d8 100644 (file)
@@ -29,11 +29,11 @@ namespace Log {
 
 namespace {
 std::map<AbstractLogProvider::LogLevel, int> journalLevel = {
-        { AbstractLogProvider::LogLevel::Error,     LOG_ERR     },
-        { AbstractLogProvider::LogLevel::Warning,   LOG_WARNING },
-        { AbstractLogProvider::LogLevel::Info,      LOG_INFO    },
-        { AbstractLogProvider::LogLevel::Debug,     LOG_DEBUG   },
-        { AbstractLogProvider::LogLevel::Pedantic,  LOG_DEBUG   }
+       { AbstractLogProvider::LogLevel::Error,     LOG_ERR     },
+       { AbstractLogProvider::LogLevel::Warning,   LOG_WARNING },
+       { AbstractLogProvider::LogLevel::Info,      LOG_INFO    },
+       { AbstractLogProvider::LogLevel::Debug,     LOG_DEBUG   },
+       { AbstractLogProvider::LogLevel::Pedantic,  LOG_DEBUG   }
 };
 
 } // namespace anonymous
@@ -45,29 +45,29 @@ JournalLogProvider::~JournalLogProvider()
 {}
 
 void JournalLogProvider::Log(AbstractLogProvider::LogLevel level,
-                             const char *message,
-                             const char *fileName,
-                             int line,
-                             const char *function) const
+                                                        const char *message,
+                                                        const char *fileName,
+                                                        int line,
+                                                        const char *function) const
 {
-    try {
-        sd_journal_send("PRIORITY=%d", journalLevel.at(level),
-                "CODE_FILE=%s", fileName,
-                "CODE_FUNC=%s", function,
-                "CODE_LINE=%d", line,
-                // add file, line & function info to log message
-                "MESSAGE=[%s:%d] %s(): %s", fileName, line, function, message,
-                NULL);
-    } catch (const std::out_of_range&) {
-        sd_journal_send(
-                "PRIORITY=%d", LOG_ERR,
-                "CODE_FILE=%s", fileName,
-                "CODE_FUNC=%s", function,
-                "CODE_LINE=%d", line,
-                // add file, line & function info to log message
-                "MESSAGE=[%s:%d] %s(): Unsupported log level %d", fileName, line, function, level,
-                NULL);
-    }
+       try {
+               sd_journal_send("PRIORITY=%d", journalLevel.at(level),
+                                               "CODE_FILE=%s", fileName,
+                                               "CODE_FUNC=%s", function,
+                                               "CODE_LINE=%d", line,
+                                               // add file, line & function info to log message
+                                               "MESSAGE=[%s:%d] %s(): %s", fileName, line, function, message,
+                                               NULL);
+       } catch (const std::out_of_range &) {
+               sd_journal_send(
+                       "PRIORITY=%d", LOG_ERR,
+                       "CODE_FILE=%s", fileName,
+                       "CODE_FUNC=%s", function,
+                       "CODE_LINE=%d", line,
+                       // add file, line & function info to log message
+                       "MESSAGE=[%s:%d] %s(): Unsupported log level %d", fileName, line, function, level,
+                       NULL);
+       }
 }
 
 } /* namespace Log */
index c8905d7..5bd61ed 100644 (file)
@@ -35,8 +35,7 @@ IMPLEMENT_SINGLETON(VcoreDPL::Log::LogSystem)
 
 namespace VcoreDPL {
 namespace Log {
-namespace // anonymous
-{
+namespace { // anonymous
 const char *const CERTSVC_LOG_LEVEL    = "CERTSVC_LOG_LEVEL";
 const char *const CERTSVC_LOG_PROVIDER = "CERTSVC_LOG_PROVIDER";
 
@@ -46,94 +45,96 @@ const char *const JOURNALD = "JOURNALD";
 } // namespace anonymous
 
 LogSystem::LogSystem()
-  : m_providerCtor({
+       : m_providerCtor(
+{
 #ifdef TIZEN_ENGINEER_MODE
-        { CONSOLE,  []{ return static_cast<AbstractLogProvider *>(new OldStyleLogProvider()); }},
+       { CONSOLE,  []{ return static_cast<AbstractLogProvider *>(new OldStyleLogProvider()); }},
 #endif
-        { DLOG,     []{ return static_cast<AbstractLogProvider *>(new DLOGLogProvider());     }},
-        { JOURNALD, []{ return static_cast<AbstractLogProvider *>(new JournalLogProvider());  }}
-    })
+       { DLOG,     []{ return static_cast<AbstractLogProvider *>(new DLOGLogProvider());     }},
+       { JOURNALD, []{ return static_cast<AbstractLogProvider *>(new JournalLogProvider());  }}
+})
 {
-    SetLogLevel(getenv(CERTSVC_LOG_LEVEL));
+       SetLogLevel(getenv(CERTSVC_LOG_LEVEL));
+       AbstractLogProvider *prv = NULL;
 
-    AbstractLogProvider *prv = NULL;
-    try {
-        prv = m_providerCtor.at(getenv(CERTSVC_LOG_PROVIDER))();
-    } catch (const std::exception &) {
-        prv = m_providerCtor[DLOG]();
-    }
+       try {
+               prv = m_providerCtor.at(getenv(CERTSVC_LOG_PROVIDER))();
+       } catch (const std::exception &) {
+               prv = m_providerCtor[DLOG]();
+       }
 
-    AddProvider(prv);
+       AddProvider(prv);
 }
 
 LogSystem::~LogSystem()
 {
-    RemoveProviders();
+       RemoveProviders();
 }
 
-void LogSystem::SetTag(const chartag)
+void LogSystem::SetTag(const char *tag)
 {
-    for (auto &it : m_providers)
-        it->SetTag(tag);
+       for (auto &it : m_providers)
+               it->SetTag(tag);
 }
 
 void LogSystem::AddProvider(AbstractLogProvider *provider)
 {
-    m_providers.push_back(provider);
+       m_providers.push_back(provider);
 }
 
 void LogSystem::RemoveProvider(AbstractLogProvider *provider)
 {
-    m_providers.remove(provider);
+       m_providers.remove(provider);
 }
 
 void LogSystem::SelectProvider(const std::string &name)
 {
-    ProviderFn& prv = m_providerCtor.at(name);
-
-    RemoveProviders();
-    AddProvider(prv());
+       ProviderFn &prv = m_providerCtor.at(name);
+       RemoveProviders();
+       AddProvider(prv());
 }
 
 void LogSystem::SetLogLevel(const char *level)
 {
-    if (!level) {
-        m_level = AbstractLogProvider::LogLevel::Debug;
-    } else {
-        try {
-            m_level = static_cast<AbstractLogProvider::LogLevel>(std::stoi(level));
-        } catch(const std::exception&) {
-            m_level = AbstractLogProvider::LogLevel::Debug;
-        }
-    }
-
-    if (m_level < AbstractLogProvider::LogLevel::None)
-        m_level = AbstractLogProvider::LogLevel::None;
-    else if (m_level > AbstractLogProvider::LogLevel::Pedantic)
-        m_level = AbstractLogProvider::LogLevel::Pedantic;
+       if (!level) {
+               m_level = AbstractLogProvider::LogLevel::Debug;
+       } else {
+               try {
+                       m_level = static_cast<AbstractLogProvider::LogLevel>(std::stoi(level));
+               } catch (const std::exception &) {
+                       m_level = AbstractLogProvider::LogLevel::Debug;
+               }
+       }
+
+       if (m_level < AbstractLogProvider::LogLevel::None)
+               m_level = AbstractLogProvider::LogLevel::None;
+       else if (m_level > AbstractLogProvider::LogLevel::Pedantic)
+               m_level = AbstractLogProvider::LogLevel::Pedantic;
 
 #ifndef TIZEN_ENGINEER_MODE
-    if (m_level > AbstractLogProvider::LogLevel::Error)
-        m_level = AbstractLogProvider::LogLevel::Error;
+
+       if (m_level > AbstractLogProvider::LogLevel::Error)
+               m_level = AbstractLogProvider::LogLevel::Error;
+
 #endif
 }
 
 void LogSystem::Log(AbstractLogProvider::LogLevel level,
-                    const char *message,
-                    const char *filename,
-                    int line,
-                    const char *function) const
+                                       const char *message,
+                                       const char *filename,
+                                       int line,
+                                       const char *function) const
 {
-    for (const auto &it : m_providers)
-        it->Log(level, message, filename, line, function);
+       for (const auto &it : m_providers)
+               it->Log(level, message, filename, line, function);
 }
 
 void LogSystem::RemoveProviders()
 {
-    for (auto &it : m_providers)
-        delete it;
+       for (auto &it : m_providers)
+               delete it;
 
-    m_providers.clear();
+       m_providers.clear();
 }
 }
 } // namespace VcoreDPL
index 419c07f..f1dd0d0 100644 (file)
@@ -33,8 +33,7 @@
 
 namespace VcoreDPL {
 namespace Log {
-namespace // anonymous
-{
+namespace { // anonymous
 using namespace VcoreDPL::Colors::Text;
 const char *DEBUG_BEGIN = GREEN_BEGIN;
 const char *DEBUG_END = GREEN_END;
@@ -49,34 +48,32 @@ const char *PEDANTIC_END = PURPLE_END;
 
 std::string GetFormattedTime()
 {
-    timeval tv;
-    tm localNowTime;
-
-    gettimeofday(&tv, NULL);
-    localtime_r(&tv.tv_sec, &localNowTime);
-
-    char format[64];
-    snprintf(format,
-             sizeof(format),
-             "%02i:%02i:%02i.%03i",
-             localNowTime.tm_hour,
-             localNowTime.tm_min,
-             localNowTime.tm_sec,
-             static_cast<int>(tv.tv_usec / 1000));
-    return format;
+       timeval tv;
+       tm localNowTime;
+       gettimeofday(&tv, NULL);
+       localtime_r(&tv.tv_sec, &localNowTime);
+       char format[64];
+       snprintf(format,
+                        sizeof(format),
+                        "%02i:%02i:%02i.%03i",
+                        localNowTime.tm_hour,
+                        localNowTime.tm_min,
+                        localNowTime.tm_sec,
+                        static_cast<int>(tv.tv_usec / 1000));
+       return format;
 }
 
 struct ColorMark {
-    const char *const begin;
-    const char *const end;
+       const char *const begin;
+       const char *const end;
 };
 
 std::map<AbstractLogProvider::LogLevel, ColorMark> consoleLevel = {
-        { AbstractLogProvider::LogLevel::Error,     {ERROR_BEGIN,       ERROR_END} },
-        { AbstractLogProvider::LogLevel::Warning,   {WARNING_BEGIN,     WARNING_END} },
-        { AbstractLogProvider::LogLevel::Info,      {INFO_BEGIN,        INFO_END} },
-        { AbstractLogProvider::LogLevel::Debug,     {DEBUG_BEGIN,       DEBUG_END} },
-        { AbstractLogProvider::LogLevel::Pedantic,  {PEDANTIC_BEGIN,    PEDANTIC_END} }
+       { AbstractLogProvider::LogLevel::Error,     {ERROR_BEGIN,       ERROR_END} },
+       { AbstractLogProvider::LogLevel::Warning,   {WARNING_BEGIN,     WARNING_END} },
+       { AbstractLogProvider::LogLevel::Info,      {INFO_BEGIN,        INFO_END} },
+       { AbstractLogProvider::LogLevel::Debug,     {DEBUG_BEGIN,       DEBUG_END} },
+       { AbstractLogProvider::LogLevel::Pedantic,  {PEDANTIC_BEGIN,    PEDANTIC_END} }
 };
 
 } // namespace anonymous
@@ -84,23 +81,22 @@ std::map<AbstractLogProvider::LogLevel, ColorMark> consoleLevel = {
 OldStyleLogProvider::OldStyleLogProvider() {}
 
 void OldStyleLogProvider::Log(AbstractLogProvider::LogLevel level,
-                              const char *message,
-                              const char *filename,
-                              int line,
-                              const char *function) const
+                                                         const char *message,
+                                                         const char *filename,
+                                                         int line,
+                                                         const char *function) const
 {
-    try {
-        const struct ColorMark& mark = consoleLevel.at(level);
-
-        std::ostringstream val;
-        val << mark.begin << std::string("[") << GetFormattedTime() << std::string("] [") <<
-               static_cast<unsigned long>(pthread_self()) << "/" << static_cast<int>(getpid()) <<
-               std::string("] [") << LocateSourceFileName(filename) << std::string(":") << line <<
-               std::string("] ") << function << std::string("(): ") << message << mark.end;
-        fprintf(stdout, "%s\n", val.str().c_str());
-    } catch (const std::out_of_range&) {
-        fprintf(stdout, "Unsupported log level: %d\n", level);
-    }
+       try {
+               const struct ColorMark &mark = consoleLevel.at(level);
+               std::ostringstream val;
+               val << mark.begin << std::string("[") << GetFormattedTime() << std::string("] [") <<
+                       static_cast<unsigned long>(pthread_self()) << "/" << static_cast<int>(getpid()) <<
+                       std::string("] [") << LocateSourceFileName(filename) << std::string(":") << line <<
+                       std::string("] ") << function << std::string("(): ") << message << mark.end;
+               fprintf(stdout, "%s\n", val.str().c_str());
+       } catch (const std::out_of_range &) {
+               fprintf(stdout, "Unsupported log level: %d\n", level);
+       }
 }
 
 }
index 98852b7..1d91b41 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved 
+ * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
  * Contact: Kidong Kim <kd0228.kim@samsung.com>
  *
index 1cd40ca..e0a01a5 100644 (file)
 #ifndef CERT_SERVER_LOGIC_H_
 #define CERT_SERVER_LOGIC_H_
 
-int getCertificateDetailFromStore(CertStoreType storeType, CertType certType, const char* gname, char* cert);
+int getCertificateDetailFromStore(CertStoreType storeType, CertType certType, const char *gname,
+                                                                 char *cert);
 
-int getCertificateDetailFromSystemStore(const char* gname, char* cert);
+int getCertificateDetailFromSystemStore(const char *gname, char *cert);
 
-int deleteCertificateFromStore(CertStoreType storeType, const chargname);
+int deleteCertificateFromStore(CertStoreType storeType, const char *gname);
 
-int getCertificateStatusFromStore(CertStoreType storeType, const chargname, CertStatus *status);
+int getCertificateStatusFromStore(CertStoreType storeType, const char *gname, CertStatus *status);
 
-int setCertificateStatusToStore(CertStoreType storeType, int is_root_app, const char* gname, CertStatus status);
+int setCertificateStatusToStore(CertStoreType storeType, int is_root_app, const char *gname,
+                                                               CertStatus status);
 
-int checkAliasExistsInStore(CertStoreType storeType, const charalias, int *punique);
+int checkAliasExistsInStore(CertStoreType storeType, const char *alias, int *punique);
 
-int installCertificateToStore(CertStoreType storeType, const char* gname, const char *common_name, const char *private_key_gname, const char *associated_gname, const char *pCertBuffer, CertType certType);
+int installCertificateToStore(CertStoreType storeType, const char *gname, const char *common_name,
+                                                         const char *private_key_gname, const char *associated_gname, const char *pCertBuffer,
+                                                         CertType certType);
 
-int getCertificateListFromStore(int reqType, CertStoreType storeType, int is_root_app, char **ppCertListBuffer, size_t *bufferLen, size_t *certCount);
+int getCertificateListFromStore(int reqType, CertStoreType storeType, int is_root_app,
+                                                               char **ppCertListBuffer, size_t *bufferLen, size_t *certCount);
 
-int getCertificateAliasFromStore(CertStoreType storeType, const char* gname, char* alias);
+int getCertificateAliasFromStore(CertStoreType storeType, const char *gname, char *alias);
 
-int loadCertificatesFromStore(CertStoreType storeType, const char* gname, char **ppCertBlockBuffer, size_t *bufferLen, size_t *certBlockCount);
+int loadCertificatesFromStore(CertStoreType storeType, const char *gname, char **ppCertBlockBuffer,
+                                                         size_t *bufferLen, size_t *certBlockCount);
 
 int update_ca_certificate_file(char *cert);
 
index 3b844b5..e3b85ef 100644 (file)
 
 namespace ValidationCore {
 Base64Encoder::Base64Encoder() :
-    m_b64(0),
-    m_bmem(0),
-    m_finalized(false)
+       m_b64(0),
+       m_bmem(0),
+       m_finalized(false)
 {
 }
 
 void Base64Encoder::append(const std::string &data)
 {
-    if (m_finalized) {
-        LogWarning("Already finalized.");
-        VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized");
-    }
-
-    if (!m_b64) {
-        reset();
-    }
-    BIO_write(m_b64, data.c_str(), data.size());
+       if (m_finalized) {
+               LogWarning("Already finalized.");
+               VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized");
+       }
+
+       if (!m_b64) {
+               reset();
+       }
+
+       BIO_write(m_b64, data.c_str(), data.size());
 }
 
 void Base64Encoder::finalize()
 {
-    if (m_finalized) {
-        LogWarning("Already finalized.");
-        VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
-    }
-    m_finalized = true;
-
-    if (BIO_flush(m_b64) != 1)
-        VcoreThrowMsg(Exception::InternalError, "Bio internal error");
+       if (m_finalized) {
+               LogWarning("Already finalized.");
+               VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
+       }
+
+       m_finalized = true;
+
+       if (BIO_flush(m_b64) != 1)
+               VcoreThrowMsg(Exception::InternalError, "Bio internal error");
 }
 
 std::string Base64Encoder::get()
 {
-    if (!m_finalized) {
-        LogWarning("Not finalized");
-        VcoreThrowMsg(Exception::NotFinalized, "Not finalized");
-    }
-    BUF_MEM *bptr = 0;
-    BIO_get_mem_ptr(m_b64, &bptr);
-    if (bptr == 0) {
-        LogError("Bio internal error");
-        VcoreThrowMsg(Exception::InternalError, "Bio internal error");
-    }
-
-    if (bptr->length > 0) {
-        return std::string(bptr->data, bptr->length);
-    }
-    return std::string();
+       if (!m_finalized) {
+               LogWarning("Not finalized");
+               VcoreThrowMsg(Exception::NotFinalized, "Not finalized");
+       }
+
+       BUF_MEM *bptr = 0;
+       BIO_get_mem_ptr(m_b64, &bptr);
+
+       if (bptr == 0) {
+               LogError("Bio internal error");
+               VcoreThrowMsg(Exception::InternalError, "Bio internal error");
+       }
+
+       if (bptr->length > 0) {
+               return std::string(bptr->data, bptr->length);
+       }
+
+       return std::string();
 }
 
 void Base64Encoder::reset()
 {
-    m_finalized = false;
-    BIO_free_all(m_b64);
-    m_b64 = BIO_new(BIO_f_base64());
-    m_bmem = BIO_new(BIO_s_mem());
-    if (!m_b64 || !m_bmem) {
-        LogError("Error during allocation memory in BIO");
-        VcoreThrowMsg(Exception::InternalError,
-                 "Error during allocation memory in BIO");
-    }
-    BIO_set_flags(m_b64, BIO_FLAGS_BASE64_NO_NL);
-    m_b64 = BIO_push(m_b64, m_bmem);
+       m_finalized = false;
+       BIO_free_all(m_b64);
+       m_b64 = BIO_new(BIO_f_base64());
+       m_bmem = BIO_new(BIO_s_mem());
+
+       if (!m_b64 || !m_bmem) {
+               LogError("Error during allocation memory in BIO");
+               VcoreThrowMsg(Exception::InternalError,
+                                         "Error during allocation memory in BIO");
+       }
+
+       BIO_set_flags(m_b64, BIO_FLAGS_BASE64_NO_NL);
+       m_b64 = BIO_push(m_b64, m_bmem);
 }
 
 Base64Encoder::~Base64Encoder()
 {
-    BIO_free_all(m_b64);
+       BIO_free_all(m_b64);
 }
 
 Base64Decoder::Base64Decoder() :
-    m_finalized(false)
+       m_finalized(false)
 {
 }
 
 void Base64Decoder::append(const std::string &data)
 {
-    if (m_finalized) {
-        LogWarning("Already finalized.");
-        VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
-    }
-    m_input.append(data);
+       if (m_finalized) {
+               LogWarning("Already finalized.");
+               VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
+       }
+
+       m_input.append(data);
 }
 
 static bool whiteCharacter(char a)
 {
-    if (a == '\n')
-        return true;
+       if (a == '\n')
+               return true;
 
-    return false;
+       return false;
 }
 
 bool Base64Decoder::finalize()
 {
-    if (m_finalized) {
-        LogWarning("Already finalized.");
-        VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
-    }
-
-    m_finalized = true;
-
-    m_input.erase(std::remove_if(m_input.begin(),
-                                 m_input.end(),
-                                 whiteCharacter),
-                  m_input.end());
-
-    for (size_t i = 0; i<m_input.size(); ++i) {
-        if (isalnum(m_input[i])
-            || m_input[i] == '+'
-            || m_input[i] == '/'
-            || m_input[i] == '=')
-            continue;
-        LogError("Base64 input contains illegal chars: " << m_input[i]);
-        return false;
-    }
-
-    BIO *b64, *bmem;
-    size_t len = m_input.size();
-    std::shared_ptr<char> buffer(new char[len], [](char *p){delete []p;});
-    if (!buffer.get()) {
-        LogError("Error in new");
-        VcoreThrowMsg(Exception::InternalError, "Error in new");
-    }
-
-    memset(buffer.get(), 0, len);
-    b64 = BIO_new(BIO_f_base64());
-    if (!b64) {
-        LogError("Couldn't create BIO object.");
-        VcoreThrowMsg(Exception::InternalError, "Couldn't create BIO object.");
-    }
-    BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
-
-    std::shared_ptr<char> tmp(strdup(m_input.c_str()), [](char *p){free(p);});
-    if (!tmp.get()) {
-        LogError("Error in strdup");
-        VcoreThrowMsg(Exception::InternalError, "Error in strdup");
-    }
-
-    m_input.clear();
-
-    bmem = BIO_new_mem_buf(tmp.get(), len);
-
-    if (!bmem) {
-        BIO_free(b64);
-        LogError("Internal error in BIO");
-        VcoreThrowMsg(Exception::InternalError, "Internal error in BIO");
-    }
-
-    bmem = BIO_push(b64, bmem);
-
-    if (!bmem) {
-        BIO_free(b64);
-        LogError("Internal error in BIO");
-        VcoreThrowMsg(Exception::InternalError, "Internal error in BIO");
-    }
-
-    int readlen = BIO_read(bmem, buffer.get(), len);
-    m_output.clear();
-
-    bool status = true;
-
-    if (readlen > 0)
-        m_output.append(buffer.get(), readlen);
-    else
-        status = false;
-
-    BIO_free_all(bmem);
-
-    return status;
+       if (m_finalized) {
+               LogWarning("Already finalized.");
+               VcoreThrowMsg(Exception::AlreadyFinalized, "Already finalized.");
+       }
+
+       m_finalized = true;
+       m_input.erase(std::remove_if(m_input.begin(),
+                                                                m_input.end(),
+                                                                whiteCharacter),
+                                 m_input.end());
+
+       for (size_t i = 0; i < m_input.size(); ++i) {
+               if (isalnum(m_input[i])
+                               || m_input[i] == '+'
+                               || m_input[i] == '/'
+                               || m_input[i] == '=')
+                       continue;
+
+               LogError("Base64 input contains illegal chars: " << m_input[i]);
+               return false;
+       }
+
+       BIO *b64, *bmem;
+       size_t len = m_input.size();
+       std::shared_ptr<char> buffer(new char[len], [](char *p) {
+               delete []p;
+       });
+
+       if (!buffer.get()) {
+               LogError("Error in new");
+               VcoreThrowMsg(Exception::InternalError, "Error in new");
+       }
+
+       memset(buffer.get(), 0, len);
+       b64 = BIO_new(BIO_f_base64());
+
+       if (!b64) {
+               LogError("Couldn't create BIO object.");
+               VcoreThrowMsg(Exception::InternalError, "Couldn't create BIO object.");
+       }
+
+       BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
+       std::shared_ptr<char> tmp(strdup(m_input.c_str()), [](char *p) {
+               free(p);
+       });
+
+       if (!tmp.get()) {
+               LogError("Error in strdup");
+               VcoreThrowMsg(Exception::InternalError, "Error in strdup");
+       }
+
+       m_input.clear();
+       bmem = BIO_new_mem_buf(tmp.get(), len);
+
+       if (!bmem) {
+               BIO_free(b64);
+               LogError("Internal error in BIO");
+               VcoreThrowMsg(Exception::InternalError, "Internal error in BIO");
+       }
+
+       bmem = BIO_push(b64, bmem);
+
+       if (!bmem) {
+               BIO_free(b64);
+               LogError("Internal error in BIO");
+               VcoreThrowMsg(Exception::InternalError, "Internal error in BIO");
+       }
+
+       int readlen = BIO_read(bmem, buffer.get(), len);
+       m_output.clear();
+       bool status = true;
+
+       if (readlen > 0)
+               m_output.append(buffer.get(), readlen);
+       else
+               status = false;
+
+       BIO_free_all(bmem);
+       return status;
 }
 
 std::string Base64Decoder::get() const
 {
-    if (!m_finalized) {
-        LogWarning("Not finalized.");
-        VcoreThrowMsg(Exception::NotFinalized, "Not finalized");
-    }
-    return m_output;
+       if (!m_finalized) {
+               LogWarning("Not finalized.");
+               VcoreThrowMsg(Exception::NotFinalized, "Not finalized");
+       }
+
+       return m_output;
 }
 
 void Base64Decoder::reset()
 {
-    m_finalized = false;
-    m_input.clear();
-    m_output.clear();
+       m_finalized = false;
+       m_input.clear();
+       m_output.clear();
 }
 } // namespace ValidationCore
index b961d98..d8f3817 100644 (file)
@@ -25,57 +25,57 @@ typedef bio_st BIO;
 namespace ValidationCore {
 class Base64Encoder {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, NotFinalized)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, AlreadyFinalized)
-    };
-    Base64Encoder();
-    void append(const std::string &data);
-    void finalize();
-    std::string get();
-    void reset();
-    ~Base64Encoder();
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, NotFinalized)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, AlreadyFinalized)
+       };
+       Base64Encoder();
+       void append(const std::string &data);
+       void finalize();
+       std::string get();
+       void reset();
+       ~Base64Encoder();
 
 private:
-    Base64Encoder(const Base64Encoder &);
-    const Base64Encoder &operator=(const Base64Encoder &);
+       Base64Encoder(const Base64Encoder &);
+       const Base64Encoder &operator=(const Base64Encoder &);
 
-    BIO *m_b64;
-    BIO *m_bmem;
-    bool m_finalized;
+       BIO *m_b64;
+       BIO *m_bmem;
+       bool m_finalized;
 };
 
 class Base64Decoder {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, NotFinalized)
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, AlreadyFinalized)
-    };
-    Base64Decoder();
-    void append(const std::string &data);
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, NotFinalized)
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, AlreadyFinalized)
+       };
+       Base64Decoder();
+       void append(const std::string &data);
 
-    /*
-     *  Function will return false when BIO_read fails
-     *  (for example: when string was not in base64 format).
-     */
-    bool finalize();
-    std::string get() const;
-    void reset();
-    ~Base64Decoder() {}
+       /*
+        *  Function will return false when BIO_read fails
+        *  (for example: when string was not in base64 format).
+        */
+       bool finalize();
+       std::string get() const;
+       void reset();
+       ~Base64Decoder() {}
 
 private:
-    Base64Decoder(const Base64Decoder &);
-    const Base64Decoder &operator=(const Base64Decoder &);
+       Base64Decoder(const Base64Decoder &);
+       const Base64Decoder &operator=(const Base64Decoder &);
 
-    std::string m_input;
-    std::string m_output;
-    bool m_finalized;
+       std::string m_input;
+       std::string m_output;
+       bool m_finalized;
 };
 } // namespace ValidationCore
 
index 8bc001c..84e83c2 100644 (file)
@@ -27,7 +27,7 @@ namespace ValidationCore {
 namespace CertStoreId {
 
 Set::Set()
-  : m_certificateStorage(0)
+       : m_certificateStorage(0)
 {}
 
 Set::~Set()
@@ -36,53 +36,58 @@ Set::~Set()
 
 void Set::add(Type second)
 {
-    m_certificateStorage |= second;
+       m_certificateStorage |= second;
 }
 
 bool Set::contains(Type second) const
 {
-    return static_cast<bool>(m_certificateStorage & second);
+       return static_cast<bool>(m_certificateStorage & second);
 }
 
 bool Set::isContainsVis() const
 {
-    Type visType = VIS_PUBLIC;
-    visType |= VIS_PARTNER;
-    visType |= VIS_PLATFORM;
+       Type visType = VIS_PUBLIC;
+       visType |= VIS_PARTNER;
+       visType |= VIS_PLATFORM;
+       visType &= m_certificateStorage;
 
-    visType &= m_certificateStorage;
+       if (visType == 0)
+               return false;
 
-    if (visType == 0)
-        return false;
-
-    return true;
+       return true;
 }
 
 bool Set::isEmpty() const
 {
-    return m_certificateStorage == 0;
+       return m_certificateStorage == 0;
 }
 
 std::string Set::typeToString() const
 {
-    std::string ret;
-
-    if (m_certificateStorage & TIZEN_DEVELOPER)
-        ret += "TIZEN_DEVELOPER ";
-    if (m_certificateStorage & TIZEN_TEST)
-        ret += "TIZEN_TEST ";
-    if (m_certificateStorage & TIZEN_VERIFY)
-        ret += "TIZEN_VERIFY ";
-    if (m_certificateStorage & TIZEN_STORE)
-        ret += "TIZEN_STORE ";
-    if (m_certificateStorage & VIS_PUBLIC)
-        ret += "VIS_PUBLIC ";
-    if (m_certificateStorage & VIS_PARTNER)
-        ret += "VIS_PARTNER ";
-    if (m_certificateStorage & VIS_PLATFORM)
-        ret += "VIS_PLATFORM ";
-
-    return ret;
+       std::string ret;
+
+       if (m_certificateStorage & TIZEN_DEVELOPER)
+               ret += "TIZEN_DEVELOPER ";
+
+       if (m_certificateStorage & TIZEN_TEST)
+               ret += "TIZEN_TEST ";
+
+       if (m_certificateStorage & TIZEN_VERIFY)
+               ret += "TIZEN_VERIFY ";
+
+       if (m_certificateStorage & TIZEN_STORE)
+               ret += "TIZEN_STORE ";
+
+       if (m_certificateStorage & VIS_PUBLIC)
+               ret += "VIS_PUBLIC ";
+
+       if (m_certificateStorage & VIS_PARTNER)
+               ret += "VIS_PARTNER ";
+
+       if (m_certificateStorage & VIS_PLATFORM)
+               ret += "VIS_PLATFORM ";
+
+       return ret;
 }
 
 } // namespace CertStoreId
index d2ca9af..7a36bb0 100644 (file)
@@ -45,18 +45,18 @@ const Type VIS_PLATFORM = 1 << 10;
 
 class Set {
 public:
-    Set();
-    virtual ~Set();
+       Set();
+       virtual ~Set();
 
-    void add(Type second);
-    bool contains(Type second) const;
-    bool isContainsVis() const;
-    bool isEmpty() const;
+       void add(Type second);
+       bool contains(Type second) const;
+       bool isContainsVis() const;
+       bool isEmpty() const;
 
-    std::string typeToString() const;
+       std::string typeToString() const;
 
 private:
-    Type m_certificateStorage;
+       Type m_certificateStorage;
 };
 
 } // namespace CertStoreId
index 7d1109b..744694c 100644 (file)
@@ -51,609 +51,620 @@ namespace ValidationCore {
 
 Certificate::Certificate(X509 *cert)
 {
-    if (cert == NULL)
-        VcoreThrowMsg(Certificate::Exception::WrongParamError,
-                      "Input X509 shouldn't be NULL.");
+       if (cert == NULL)
+               VcoreThrowMsg(Certificate::Exception::WrongParamError,
+                                         "Input X509 shouldn't be NULL.");
 
-    m_x509 = X509_dup(cert);
+       m_x509 = X509_dup(cert);
 
-    if (m_x509 == NULL)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Internal Openssl error in d2i_X509 function.");
+       if (m_x509 == NULL)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Internal Openssl error in d2i_X509 function.");
 }
 
 Certificate::Certificate(const std::string &data,
-                         Certificate::FormType form)
-{
-    if (data.size() == 0)
-        VcoreThrowMsg(Certificate::Exception::WrongParamError,
-                      "Input data shouldn't be empty");
-
-    int size;
-    const unsigned char *ptr;
-    std::string tmp = data;
-
-    // transform to DER format
-    if (FORM_BASE64 == form) {
-        try {
-            Base64Decoder base64;
-            base64.reset();
-            base64.append(data);
-            if (!base64.finalize()) {
-                LogWarning("Error during decoding");
-            }
-            tmp = base64.get();
-        } catch (const Base64Decoder::Exception::Base &e) {
-            LogError("Exception in Certificate constructor : " << e.DumpToString());
-            VcoreThrowMsg(Certificate::Exception::Base64Error, "Failed to Base64Decoder");
-        }
-    }
-
-    ptr = reinterpret_cast<const unsigned char*>(tmp.c_str());
-    size = static_cast<int>(tmp.size());
-
-    m_x509 = d2i_X509(NULL, &ptr, size);
-    if (!m_x509)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Internal Openssl error in d2i_X509 function.");
+                                                Certificate::FormType form)
+{
+       if (data.size() == 0)
+               VcoreThrowMsg(Certificate::Exception::WrongParamError,
+                                         "Input data shouldn't be empty");
+
+       int size;
+       const unsigned char *ptr;
+       std::string tmp = data;
+
+       // transform to DER format
+       if (FORM_BASE64 == form) {
+               try {
+                       Base64Decoder base64;
+                       base64.reset();
+                       base64.append(data);
+
+                       if (!base64.finalize()) {
+                               LogWarning("Error during decoding");
+                       }
+
+                       tmp = base64.get();
+               } catch (const Base64Decoder::Exception::Base &e) {
+                       LogError("Exception in Certificate constructor : " << e.DumpToString());
+                       VcoreThrowMsg(Certificate::Exception::Base64Error, "Failed to Base64Decoder");
+               }
+       }
+
+       ptr = reinterpret_cast<const unsigned char *>(tmp.c_str());
+       size = static_cast<int>(tmp.size());
+       m_x509 = d2i_X509(NULL, &ptr, size);
+
+       if (!m_x509)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Internal Openssl error in d2i_X509 function.");
 }
 
 static off_t getFileSize(const std::string &location)
 {
-    struct stat status;
-
-    stat(location.c_str(), &status);
-
-    return status.st_size;
+       struct stat status;
+       stat(location.c_str(), &status);
+       return status.st_size;
 }
 
 CertificatePtr Certificate::createFromFile(const std::string &location)
 {
-    FILE *fp = NULL;
-    X509 *x509 = NULL;
+       FILE *fp = NULL;
+       X509 *x509 = NULL;
+       fp = fopen(location.c_str(), "rb");
 
-    fp = fopen(location.c_str(), "rb");
-    if (fp == NULL)
-        VcoreThrowMsg(Certificate::Exception::WrongParamError,
-                      "File cannot be opened : " << location);
+       if (fp == NULL)
+               VcoreThrowMsg(Certificate::Exception::WrongParamError,
+                                         "File cannot be opened : " << location);
 
-    ScopedFile filePtr(fp, fclose);
+       ScopedFile filePtr(fp, fclose);
+       x509 = PEM_read_X509(fp, NULL, NULL, NULL);
 
-    x509 = PEM_read_X509(fp, NULL, NULL, NULL);
-    if (x509 == NULL) {
-        rewind(fp);
-        x509 = PEM_read_X509_AUX(fp, NULL, NULL, NULL);
-    }
+       if (x509 == NULL) {
+               rewind(fp);
+               x509 = PEM_read_X509_AUX(fp, NULL, NULL, NULL);
+       }
 
-    if (x509 != NULL) {
-        ScopedX509 x509Ptr(x509, X509_free);
-        return CertificatePtr(new Certificate(x509));
-    }
+       if (x509 != NULL) {
+               ScopedX509 x509Ptr(x509, X509_free);
+               return CertificatePtr(new Certificate(x509));
+       }
 
-    off_t filesize = getFileSize(location);
-    if (filesize == 0)
-        VcoreThrowMsg(Certificate::Exception::WrongParamError,
-                      "File content is empty : " << location);
+       off_t filesize = getFileSize(location);
 
-    unsigned char *content = new unsigned char[filesize + 1];
-    memset(content, 0x00, filesize + 1);
-    rewind(fp);
-    if (fread(content, sizeof(unsigned char), filesize, fp) != static_cast<size_t>(filesize))
-        VcoreThrowMsg(Certificate::Exception::InternalError,
-                      "file read failed. wrong size : " << location);
+       if (filesize == 0)
+               VcoreThrowMsg(Certificate::Exception::WrongParamError,
+                                         "File content is empty : " << location);
 
-    content[filesize] = '\0';
-    const unsigned char *ptr = reinterpret_cast<const unsigned char *>(content);
-    x509 = d2i_X509(NULL, &ptr, filesize);
-    if (x509 == NULL)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Internal Openssl error in d2i_X509 function.");
+       unsigned char *content = new unsigned char[filesize + 1];
+       memset(content, 0x00, filesize + 1);
+       rewind(fp);
 
-    return CertificatePtr(new Certificate(x509));
+       if (fread(content, sizeof(unsigned char), filesize, fp) != static_cast<size_t>(filesize))
+               VcoreThrowMsg(Certificate::Exception::InternalError,
+                                         "file read failed. wrong size : " << location);
+
+       content[filesize] = '\0';
+       const unsigned char *ptr = reinterpret_cast<const unsigned char *>(content);
+       x509 = d2i_X509(NULL, &ptr, filesize);
+
+       if (x509 == NULL)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Internal Openssl error in d2i_X509 function.");
+
+       return CertificatePtr(new Certificate(x509));
 }
 
 Certificate::~Certificate()
 {
-    X509_free(m_x509);
+       X509_free(m_x509);
 }
 
-X509Certificate::getX509(void) const
+X509 *Certificate::getX509(void) const
 {
-    return m_x509;
+       return m_x509;
 }
 
 std::string Certificate::getDER(void) const
 {
-    unsigned char *rawDer = NULL;
-    int size = i2d_X509(m_x509, &rawDer);
-    if (!rawDer || size <= 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "i2d_X509 failed");
+       unsigned char *rawDer = NULL;
+       int size = i2d_X509(m_x509, &rawDer);
 
-    std::string output(reinterpret_cast<char*>(rawDer), size);
-    OPENSSL_free(rawDer);
-    return output;
+       if (!rawDer || size <= 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "i2d_X509 failed");
+
+       std::string output(reinterpret_cast<char *>(rawDer), size);
+       OPENSSL_free(rawDer);
+       return output;
 }
 
 std::string Certificate::getBase64(void) const
 {
-    Base64Encoder base64;
-    try {
-        base64.reset();
-        base64.append(getDER());
-        base64.finalize();
-    } catch (const Base64Encoder::Exception::Base &e) {
-        LogError("Exception in Certificate getBase64 : " << e.DumpToString());
-        VcoreThrowMsg(Certificate::Exception::Base64Error, "Failed to Base64Encoder");
-    }
-    return base64.get();
+       Base64Encoder base64;
+
+       try {
+               base64.reset();
+               base64.append(getDER());
+               base64.finalize();
+       } catch (const Base64Encoder::Exception::Base &e) {
+               LogError("Exception in Certificate getBase64 : " << e.DumpToString());
+               VcoreThrowMsg(Certificate::Exception::Base64Error, "Failed to Base64Encoder");
+       }
+
+       return base64.get();
 }
 
 bool Certificate::isSignedBy(const CertificatePtr &parent) const
 {
-    if (!parent) {
-        LogDebug("Invalid certificate parameter.");
-        return false;
-    }
-    return 0 == X509_NAME_cmp(X509_get_subject_name(parent->m_x509),
-                              X509_get_issuer_name(m_x509));
+       if (!parent) {
+               LogDebug("Invalid certificate parameter.");
+               return false;
+       }
+
+       return 0 == X509_NAME_cmp(X509_get_subject_name(parent->m_x509),
+                                                         X509_get_issuer_name(m_x509));
 }
 
 Certificate::Fingerprint Certificate::getFingerprint(
-        Certificate::FingerprintType type) const
+       Certificate::FingerprintType type) const
 {
-    unsigned int fingerprintlength = EVP_MAX_MD_SIZE;
-    unsigned char fingerprint[EVP_MAX_MD_SIZE];
-    Fingerprint raw;
+       unsigned int fingerprintlength = EVP_MAX_MD_SIZE;
+       unsigned char fingerprint[EVP_MAX_MD_SIZE];
+       Fingerprint raw;
 
-    if (type == FINGERPRINT_MD5) {
-        if (!X509_digest(m_x509, EVP_md5(), fingerprint, &fingerprintlength))
-            VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                          "MD5 digest counting failed!");
-    }
+       if (type == FINGERPRINT_MD5) {
+               if (!X509_digest(m_x509, EVP_md5(), fingerprint, &fingerprintlength))
+                       VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                                 "MD5 digest counting failed!");
+       }
 
-    if (type == FINGERPRINT_SHA1) {
-        if (!X509_digest(m_x509, EVP_sha1(), fingerprint, &fingerprintlength))
-            VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                          "SHA1 digest counting failed");
-    }
+       if (type == FINGERPRINT_SHA1) {
+               if (!X509_digest(m_x509, EVP_sha1(), fingerprint, &fingerprintlength))
+                       VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                                 "SHA1 digest counting failed");
+       }
 
-    raw.resize(fingerprintlength); // improve performance
-    std::copy(fingerprint, fingerprint + fingerprintlength, raw.begin());
-
-    return raw;
+       raw.resize(fingerprintlength); // improve performance
+       std::copy(fingerprint, fingerprint + fingerprintlength, raw.begin());
+       return raw;
 }
 
 X509_NAME *Certificate::getX509Name(FieldType type) const
 {
-    X509_NAME *name = NULL;
+       X509_NAME *name = NULL;
+
+       switch (type) {
+       case FIELD_ISSUER:
+               name = X509_get_issuer_name(m_x509);
+               break;
 
-    switch (type) {
-    case FIELD_ISSUER:
-        name = X509_get_issuer_name(m_x509);
-        break;
-    case FIELD_SUBJECT:
-        name = X509_get_subject_name(m_x509);
-        break;
-    default:
-        VcoreThrowMsg(Certificate::Exception::WrongParamError,
-                      "Invalid field type param. type : " << type);
-    }
+       case FIELD_SUBJECT:
+               name = X509_get_subject_name(m_x509);
+               break;
 
-    if (!name)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error during x509 name extraction.");
+       default:
+               VcoreThrowMsg(Certificate::Exception::WrongParamError,
+                                         "Invalid field type param. type : " << type);
+       }
 
-    return name;
+       if (!name)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error during x509 name extraction.");
+
+       return name;
 }
 
 std::string Certificate::getOneLine(FieldType type) const
 {
-    X509_NAME *name = getX509Name(type);
-    static const int MAXB = 1024;
-    char buffer[MAXB] = {0, };
-    X509_NAME_oneline(name, buffer, MAXB);
-
-    return std::string(buffer);
+       X509_NAME *name = getX509Name(type);
+       static const int MAXB = 1024;
+       char buffer[MAXB] = {0, };
+       X509_NAME_oneline(name, buffer, MAXB);
+       return std::string(buffer);
 }
 
 std::string Certificate::getField(FieldType type, int fieldNid) const
 {
-    X509_NAME *subjectName = getX509Name(type);
-    X509_NAME_ENTRY *subjectEntry = NULL;
-    std::string output;
-    int entryCount = X509_NAME_entry_count(subjectName);
-
-    for (int i = 0; i < entryCount; ++i) {
-        subjectEntry = X509_NAME_get_entry(subjectName,
-                                           i);
+       X509_NAME *subjectName = getX509Name(type);
+       X509_NAME_ENTRY *subjectEntry = NULL;
+       std::string output;
+       int entryCount = X509_NAME_entry_count(subjectName);
 
-        if (!subjectEntry) {
-            continue;
-        }
+       for (int i = 0; i < entryCount; ++i) {
+               subjectEntry = X509_NAME_get_entry(subjectName,
+                                                                                  i);
 
-        int nid = OBJ_obj2nid(
-            static_cast<ASN1_OBJECT*>(
-                    X509_NAME_ENTRY_get_object(subjectEntry)));
+               if (!subjectEntry) {
+                       continue;
+               }
 
-        if (nid != fieldNid) {
-            continue;
-        }
+               int nid = OBJ_obj2nid(
+                                         static_cast<ASN1_OBJECT *>(
+                                                 X509_NAME_ENTRY_get_object(subjectEntry)));
 
-        ASN1_STRING* pASN1Str = subjectEntry->value;
+               if (nid != fieldNid) {
+                       continue;
+               }
 
-        unsigned char* pData = NULL;
-        int nLength = ASN1_STRING_to_UTF8(&pData,
-                                          pASN1Str);
+               ASN1_STRING *pASN1Str = subjectEntry->value;
+               unsigned char *pData = NULL;
+               int nLength = ASN1_STRING_to_UTF8(&pData,
+                                                                                 pASN1Str);
 
-        if (nLength < 0)
-            VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                          "Reading field error.");
+               if (nLength < 0)
+                       VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                                 "Reading field error.");
 
-        if (!pData) {
-            output = std::string();
-        }
-        else {
-            output = std::string(reinterpret_cast<char*>(pData), nLength);
-            OPENSSL_free(pData);
-        }
-    }
+               if (!pData) {
+                       output = std::string();
+               } else {
+                       output = std::string(reinterpret_cast<char *>(pData), nLength);
+                       OPENSSL_free(pData);
+               }
+       }
 
-    return output;
+       return output;
 }
 
 std::string Certificate::getCommonName(FieldType type) const
 {
-    return getField(type, NID_commonName);
+       return getField(type, NID_commonName);
 }
 
 std::string Certificate::getCountryName(FieldType type) const
 {
-    return getField(type, NID_countryName);
+       return getField(type, NID_countryName);
 }
 
 std::string Certificate::getStateOrProvinceName(FieldType type) const
 {
-    return getField(type, NID_stateOrProvinceName);
+       return getField(type, NID_stateOrProvinceName);
 }
 
 std::string Certificate::getLocalityName(FieldType type) const
 {
-    return getField(type, NID_localityName);
+       return getField(type, NID_localityName);
 }
 
 std::string Certificate::getOrganizationName(FieldType type) const
 {
-    return getField(type, NID_organizationName);
+       return getField(type, NID_organizationName);
 }
 
 std::string Certificate::getOrganizationalUnitName(FieldType type) const
 {
-    return getField(type, NID_organizationalUnitName);
+       return getField(type, NID_organizationalUnitName);
 }
 
 std::string Certificate::getEmailAddres(FieldType type) const
 {
-    return getField(type, NID_pkcs9_emailAddress);
+       return getField(type, NID_pkcs9_emailAddress);
 }
 
 std::string Certificate::getNameHash(FieldType type) const
 {
-    unsigned long ulNameHash;
-    char buf[9] = {0};
+       unsigned long ulNameHash;
+       char buf[9] = {0};
 
-    if (type == FIELD_SUBJECT)
-        ulNameHash = X509_subject_name_hash(m_x509);
-    else
-        ulNameHash = X509_issuer_name_hash(m_x509);
+       if (type == FIELD_SUBJECT)
+               ulNameHash = X509_subject_name_hash(m_x509);
+       else
+               ulNameHash = X509_issuer_name_hash(m_x509);
 
-    snprintf(buf, 9, "%08lx", ulNameHash);
-
-    return std::string(buf);
+       snprintf(buf, 9, "%08lx", ulNameHash);
+       return std::string(buf);
 }
 
 std::string Certificate::getUID(FieldType type) const
 {
-    ASN1_BIT_STRING *uid = NULL;
-    if (type == FIELD_SUBJECT)
-        uid = m_x509->cert_info->subjectUID;
-    else
-        uid = m_x509->cert_info->issuerUID;
-
-    if (uid->data == NULL)
-        return std::string();
+       ASN1_BIT_STRING *uid = NULL;
 
-    char *temp = new char[uid->length + 1];
-    memcpy(temp, uid->data, uid->length);
-    temp[uid->length] = 0;
+       if (type == FIELD_SUBJECT)
+               uid = m_x509->cert_info->subjectUID;
+       else
+               uid = m_x509->cert_info->issuerUID;
 
-    std::string uidStr(temp);
-    delete []temp;
+       if (uid->data == NULL)
+               return std::string();
 
-    return uidStr;
+       char *temp = new char[uid->length + 1];
+       memcpy(temp, uid->data, uid->length);
+       temp[uid->length] = 0;
+       std::string uidStr(temp);
+       delete []temp;
+       return uidStr;
 }
 
 std::string Certificate::getOCSPURL() const
 {
-    // TODO verify this code
-    std::string retValue;
-    AUTHORITY_INFO_ACCESS *aia = static_cast<AUTHORITY_INFO_ACCESS*>(
-            X509_get_ext_d2i(m_x509,
-                             NID_info_access,
-                             NULL,
-                             NULL));
-
-    // no AIA extension in the cert
-    if (NULL == aia) {
-        return retValue;
-    }
-
-    int count = sk_ACCESS_DESCRIPTION_num(aia);
-
-    for (int i = 0; i < count; ++i) {
-        ACCESS_DESCRIPTION* ad = sk_ACCESS_DESCRIPTION_value(aia, i);
-
-        if (OBJ_obj2nid(ad->method) == NID_ad_OCSP &&
-            ad->location->type == GEN_URI)
-        {
-            void *data = ASN1_STRING_data(ad->location->d.ia5);
-            if (!data)
-                retValue = std::string();
-            else
-                retValue = std::string(static_cast<char *>(data));
-            break;
-        }
-    }
-    sk_ACCESS_DESCRIPTION_free(aia);
-    return retValue;
+       // TODO verify this code
+       std::string retValue;
+       AUTHORITY_INFO_ACCESS *aia = static_cast<AUTHORITY_INFO_ACCESS *>(
+                                                                        X509_get_ext_d2i(m_x509,
+                                                                                        NID_info_access,
+                                                                                        NULL,
+                                                                                        NULL));
+
+       // no AIA extension in the cert
+       if (NULL == aia) {
+               return retValue;
+       }
+
+       int count = sk_ACCESS_DESCRIPTION_num(aia);
+
+       for (int i = 0; i < count; ++i) {
+               ACCESS_DESCRIPTION *ad = sk_ACCESS_DESCRIPTION_value(aia, i);
+
+               if (OBJ_obj2nid(ad->method) == NID_ad_OCSP &&
+                               ad->location->type == GEN_URI) {
+                       void *data = ASN1_STRING_data(ad->location->d.ia5);
+
+                       if (!data)
+                               retValue = std::string();
+                       else
+                               retValue = std::string(static_cast<char *>(data));
+
+                       break;
+               }
+       }
+
+       sk_ACCESS_DESCRIPTION_free(aia);
+       return retValue;
 }
 
 Certificate::AltNameSet Certificate::getAlternativeNameDNS() const
 {
-    AltNameSet set;
+       AltNameSet set;
+       GENERAL_NAME *namePart = NULL;
+       STACK_OF(GENERAL_NAME)* san =
+               static_cast<STACK_OF(GENERAL_NAME) *>(
+                       X509_get_ext_d2i(m_x509, NID_subject_alt_name, NULL, NULL));
 
-    GENERAL_NAME *namePart = NULL;
+       while (sk_GENERAL_NAME_num(san) > 0) {
+               if ((namePart = sk_GENERAL_NAME_pop(san)) == NULL)
+                       VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                                 "openssl sk_GENERAL_NAME_pop err.");
 
-    STACK_OF(GENERAL_NAME)* san =
-        static_cast<STACK_OF(GENERAL_NAME)*>(
-            X509_get_ext_d2i(m_x509,NID_subject_alt_name,NULL,NULL));
+               if (GEN_DNS == namePart->type) {
+                       char *temp = reinterpret_cast<char *>(ASN1_STRING_data(namePart->d.dNSName));
 
-    while (sk_GENERAL_NAME_num(san) > 0) {
-        if ((namePart = sk_GENERAL_NAME_pop(san)) == NULL)
-            VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                          "openssl sk_GENERAL_NAME_pop err.");
+                       if (!temp) {
+                               set.insert(std::string());
+                       } else {
+                               set.insert(std::string(temp));
+                               LogDebug("FOUND GEN_DNS: " << temp);
+                       }
+               } else {
+                       LogDebug("FOUND GEN TYPE ID: " << namePart->type);
+               }
+       }
 
-        if (GEN_DNS == namePart->type) {
-            char *temp = reinterpret_cast<char *>(ASN1_STRING_data(namePart->d.dNSName));
-            if (!temp) {
-                set.insert(std::string());
-            }
-            else {
-                set.insert(std::string(temp));
-                LogDebug("FOUND GEN_DNS: " << temp);
-            }
-        } else {
-            LogDebug("FOUND GEN TYPE ID: " << namePart->type);
-        }
-    }
-    return set;
+       return set;
 }
 
-ASN1_TIMECertificate::getNotAfterTime() const
+ASN1_TIME *Certificate::getNotAfterTime() const
 {
-    auto timeafter = X509_get_notAfter(m_x509);
-    if (!timeafter)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Reading Not After error.");
+       auto timeafter = X509_get_notAfter(m_x509);
 
-    LogDebug("Get notAfter ASN1_TIME : " <<
-        reinterpret_cast<char *>(timeafter->data));
+       if (!timeafter)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Reading Not After error.");
 
-    return timeafter;
+       LogDebug("Get notAfter ASN1_TIME : " <<
+                        reinterpret_cast<char *>(timeafter->data));
+       return timeafter;
 }
 
-ASN1_TIMECertificate::getNotBeforeTime() const
+ASN1_TIME *Certificate::getNotBeforeTime() const
 {
-    auto timebefore = X509_get_notBefore(m_x509);
-    if (!timebefore)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Reading Not Before error.");
+       auto timebefore = X509_get_notBefore(m_x509);
 
-    LogDebug("Get notBefore ASN1_TIME : " <<
-        reinterpret_cast<char *>(timebefore->data));
+       if (!timebefore)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Reading Not Before error.");
 
-    return timebefore;
+       LogDebug("Get notBefore ASN1_TIME : " <<
+                        reinterpret_cast<char *>(timebefore->data));
+       return timebefore;
 }
 
 time_t Certificate::getNotAfter() const
 {
-    auto time = getNotAfterTime();
-    time_t output;
+       auto time = getNotAfterTime();
+       time_t output;
 
-    if (asn1TimeToTimeT(time, &output) == 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Converting ASN1_time to time_t error.");
+       if (asn1TimeToTimeT(time, &output) == 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Converting ASN1_time to time_t error.");
 
-    return output;
+       return output;
 }
 
 time_t Certificate::getNotBefore() const
 {
-    auto time = getNotBeforeTime();
-    time_t output;
+       auto time = getNotBeforeTime();
+       time_t output;
 
-    if (asn1TimeToTimeT(time, &output) == 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Converting ASN1_time to time_t error.");
+       if (asn1TimeToTimeT(time, &output) == 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Converting ASN1_time to time_t error.");
 
-    return output;
+       return output;
 }
 
 bool Certificate::isRootCert()
 {
-    // based on that root certificate has the same subject as issuer name
-    return isSignedBy(this->shared_from_this());
+       // based on that root certificate has the same subject as issuer name
+       return isSignedBy(this->shared_from_this());
 }
 
 long Certificate::getVersion() const
 {
-    return X509_get_version(m_x509);
+       return X509_get_version(m_x509);
 }
 
 std::string Certificate::getSerialNumberString() const
 {
-    ASN1_INTEGER *ai = X509_get_serialNumber(m_x509);
-    if (!ai)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in X509_get_serialNumber");
+       ASN1_INTEGER *ai = X509_get_serialNumber(m_x509);
+
+       if (!ai)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in X509_get_serialNumber");
+
+       std::stringstream stream;
+       stream << std::hex << std::setfill('0');
+
+       if (ai->type == V_ASN1_NEG_INTEGER) {
+               stream << "(Negetive) ";
+       }
+
+       for (int i = 0; i < ai->length; ++i) {
+               stream << std::setw(2) << (int)ai->data[i] << ":";
+       }
+
+       std::string data = stream.str();
 
-    std::stringstream stream;
-    stream << std::hex << std::setfill('0');
-    if (ai->type == V_ASN1_NEG_INTEGER) {
-        stream << "(Negetive) ";
-    }
-    for (int i=0; i<ai->length; ++i) {
-        stream << std::setw(2) << (int)ai->data[i] << ":";
-    }
-    std::string data = stream.str();
-    if (!data.empty()) {
-        data.erase(--data.end());
-    }
+       if (!data.empty()) {
+               data.erase(--data.end());
+       }
 
-    return data;
+       return data;
 }
 
 std::string Certificate::getKeyUsageString() const
 {
-    // Extensions were defined in RFC 3280
-    const char *usage[] = {
-        "digitalSignature",
-        "nonRepudiation",
-        "keyEncipherment",
-        "dataEncipherment",
-        "keyAgreement",
-        "keyCertSign",
-        "cRLSign",
-        "encipherOnly",
-        "decipherOnly"
-    };
-    int crit = -1;
-    int idx = -1;
-    ASN1_BIT_STRING *keyUsage = (ASN1_BIT_STRING*)
-        X509_get_ext_d2i(m_x509, NID_key_usage, &crit, &idx);
-
-    std::stringstream stream;
-    for(int i=0; i<9; ++i) {
-        if (ASN1_BIT_STRING_get_bit(keyUsage, i)) {
-            stream << usage[i] << ",";
-        }
-    }
-    std::string result = stream.str();
-    if (!result.empty()) {
-        result.erase(--result.end());
-    }
-
-    return result;
+       // Extensions were defined in RFC 3280
+       const char *usage[] = {
+               "digitalSignature",
+               "nonRepudiation",
+               "keyEncipherment",
+               "dataEncipherment",
+               "keyAgreement",
+               "keyCertSign",
+               "cRLSign",
+               "encipherOnly",
+               "decipherOnly"
+       };
+       int crit = -1;
+       int idx = -1;
+       ASN1_BIT_STRING *keyUsage = (ASN1_BIT_STRING *)
+                                                               X509_get_ext_d2i(m_x509, NID_key_usage, &crit, &idx);
+       std::stringstream stream;
+
+       for (int i = 0; i < 9; ++i) {
+               if (ASN1_BIT_STRING_get_bit(keyUsage, i)) {
+                       stream << usage[i] << ",";
+               }
+       }
+
+       std::string result = stream.str();
+
+       if (!result.empty()) {
+               result.erase(--result.end());
+       }
+
+       return result;
 }
 
 std::string Certificate::getSignatureAlgorithmString() const
 {
-    std::unique_ptr<BIO, std::function<int(BIO*)>>
-        b(BIO_new(BIO_s_mem()),BIO_free);
+       std::unique_ptr<BIO, std::function<int(BIO *)>>
+                       b(BIO_new(BIO_s_mem()), BIO_free);
 
-    if (!b.get())
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in BIO_new");
+       if (!b.get())
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in BIO_new");
 
-    if (i2a_ASN1_OBJECT(b.get(), m_x509->cert_info->signature->algorithm) < 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in i2a_ASN1_OBJECT");
+       if (i2a_ASN1_OBJECT(b.get(), m_x509->cert_info->signature->algorithm) < 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in i2a_ASN1_OBJECT");
 
-    BUF_MEM *bptr = 0;
-    BIO_get_mem_ptr(b.get(), &bptr);
-    if (bptr == 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in BIO_get_mem_ptr");
+       BUF_MEM *bptr = 0;
+       BIO_get_mem_ptr(b.get(), &bptr);
 
-    std::string result(bptr->data, bptr->length);
+       if (bptr == 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in BIO_get_mem_ptr");
 
-    return result;
+       std::string result(bptr->data, bptr->length);
+       return result;
 }
 
 std::string Certificate::getPublicKeyString() const
 {
-    std::unique_ptr<BIO, std::function<int(BIO*)>>
-        b(BIO_new(BIO_s_mem()),BIO_free);
+       std::unique_ptr<BIO, std::function<int(BIO *)>>
+                       b(BIO_new(BIO_s_mem()), BIO_free);
 
-    if (!b.get())
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in BIO_new");
+       if (!b.get())
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in BIO_new");
 
-    EVP_PKEY *pkey = X509_get_pubkey(m_x509);
-    if (!pkey)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in X509_get_pubkey");
+       EVP_PKEY *pkey = X509_get_pubkey(m_x509);
 
-    EVP_PKEY_print_public(b.get(), pkey, 16, NULL);
-    EVP_PKEY_free(pkey);
+       if (!pkey)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in X509_get_pubkey");
 
-    BUF_MEM *bptr = 0;
-    BIO_get_mem_ptr(b.get(), &bptr);
-    if (bptr == 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in BIO_get_mem_ptr");
+       EVP_PKEY_print_public(b.get(), pkey, 16, NULL);
+       EVP_PKEY_free(pkey);
+       BUF_MEM *bptr = 0;
+       BIO_get_mem_ptr(b.get(), &bptr);
 
-    std::string result(bptr->data, bptr->length);
+       if (bptr == 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in BIO_get_mem_ptr");
 
-    return result;
+       std::string result(bptr->data, bptr->length);
+       return result;
 }
 
 void Certificate::getPublicKeyDER(unsigned char **pubkey, size_t *len) const
 {
-    if (pubkey == NULL || len == NULL)
-        VcoreThrowMsg(Certificate::Exception::WrongParamError, "Wrong parameter");
+       if (pubkey == NULL || len == NULL)
+               VcoreThrowMsg(Certificate::Exception::WrongParamError, "Wrong parameter");
 
-    EVP_PKEY *pkey = X509_get_pubkey(m_x509);
-    unsigned char *_pubkey = NULL;
-    int _len = i2d_PUBKEY(pkey, &_pubkey);
-    EVP_PKEY_free(pkey);
+       EVP_PKEY *pkey = X509_get_pubkey(m_x509);
+       unsigned char *_pubkey = NULL;
+       int _len = i2d_PUBKEY(pkey, &_pubkey);
+       EVP_PKEY_free(pkey);
 
-    if (_pubkey == NULL || _len == 0)
-        VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
-                      "Error in i2d_PUBKEY");
+       if (_pubkey == NULL || _len == 0)
+               VcoreThrowMsg(Certificate::Exception::OpensslInternalError,
+                                         "Error in i2d_PUBKEY");
 
-    *pubkey = _pubkey;
-    *len = static_cast<size_t>(_len);
+       *pubkey = _pubkey;
+       *len = static_cast<size_t>(_len);
 }
 
 std::string Certificate::getPublicKeyAlgoString() const
 {
-    return std::string(static_cast<const char *>(
-            OBJ_nid2ln(OBJ_obj2nid(m_x509->cert_info->key->algor->algorithm))));
+       return std::string(static_cast<const char *>(
+                                                  OBJ_nid2ln(OBJ_obj2nid(m_x509->cert_info->key->algor->algorithm))));
 }
 
 int Certificate::isCA() const
 {
-    return X509_check_ca(m_x509);
+       return X509_check_ca(m_x509);
 }
 
 std::string Certificate::FingerprintToColonHex(
-        const Certificate::Fingerprint &fingerprint)
-{
-    std::string outString;
-    char buff[8];
-
-    for (size_t i = 0; i < fingerprint.size(); ++i) {
-        snprintf(buff,
-                 sizeof(buff),
-                 "%02X:",
-                 static_cast<unsigned int>(fingerprint[i]));
-        outString += buff;
-    }
-
-    // remove trailing ":"
-    outString.erase(outString.end() - 1);
-    return outString;
+       const Certificate::Fingerprint &fingerprint)
+{
+       std::string outString;
+       char buff[8];
+
+       for (size_t i = 0; i < fingerprint.size(); ++i) {
+               snprintf(buff,
+                                sizeof(buff),
+                                "%02X:",
+                                static_cast<unsigned int>(fingerprint[i]));
+               outString += buff;
+       }
+
+       // remove trailing ":"
+       outString.erase(outString.end() - 1);
+       return outString;
 }
 
 } //  namespace ValidationCore
index 265b044..64673ab 100644 (file)
 #include "vcore/exception.h"
 
 extern "C" {
-struct x509_st;
-typedef struct x509_st X509;
-struct X509_name_st;
-typedef struct X509_name_st X509_NAME;
+       struct x509_st;
+       typedef struct x509_st X509;
+       struct X509_name_st;
+       typedef struct X509_name_st X509_NAME;
 }
 
 namespace ValidationCore {
@@ -48,136 +48,133 @@ typedef std::list<CertificatePtr> CertificateList;
 
 class Certificate : public std::enable_shared_from_this<Certificate> {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, OpensslInternalError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, Base64Error);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongParamError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError);
-    };
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, OpensslInternalError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, Base64Error);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongParamError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError);
+       };
 
-    typedef std::vector<unsigned char> Fingerprint;
+       typedef std::vector<unsigned char> Fingerprint;
 
-    // ascii string
-    typedef std::string AltName;
-    typedef std::set<AltName> AltNameSet;
+       // ascii string
+       typedef std::string AltName;
+       typedef std::set<AltName> AltNameSet;
 
-    enum FingerprintType
-    {
-        FINGERPRINT_MD5,
-        FINGERPRINT_SHA1
-    };
-    enum FieldType
-    {
-        FIELD_ISSUER,
-        FIELD_SUBJECT
-    };
-
-    enum FormType
-    {
-        FORM_DER,
-        FORM_BASE64
-    };
-
-    static CertificatePtr createFromFile(const std::string &location);
-
-    explicit Certificate(X509 *cert);
-
-    explicit Certificate(const std::string &data,
-                         FormType form = FORM_DER);
-
-    ~Certificate();
-
-    // It returns pointer to internal structure!
-    // Do not free this pointer!
-    X509 *getX509(void) const;
-
-    std::string getDER(void) const;
-
-    std::string getBase64(void) const;
-
-    // This const is cheating here because you have no
-    // guarantee that X509_get_subject_name will not
-    // change X509 object.
-    bool isSignedBy(const CertificatePtr &parent) const;
-
-    Fingerprint getFingerprint(FingerprintType type) const;
-
-    // getName uses deprecated functions. Usage is strongly discouraged.
-    // utf8 string
-    std::string getOneLine(FieldType type = FIELD_SUBJECT) const;
-    std::string getCommonName(FieldType type = FIELD_SUBJECT) const;
-    std::string getCountryName(FieldType type = FIELD_SUBJECT) const;
-    std::string getStateOrProvinceName(FieldType type = FIELD_SUBJECT) const;
-    std::string getLocalityName(FieldType type = FIELD_SUBJECT) const;
-    std::string getOrganizationName(FieldType type = FIELD_SUBJECT) const;
-    std::string getOrganizationalUnitName(FieldType type = FIELD_SUBJECT) const;
-    std::string getEmailAddres(FieldType type = FIELD_SUBJECT) const;
-
-    std::string getNameHash(FieldType type = FIELD_SUBJECT) const;
-
-    // TODO: UID type is unsigned char. std::string should be changed to unsigned char container
-    std::string getUID(FieldType type = FIELD_SUBJECT) const;
-    std::string getOCSPURL() const;
-
-
-
-    // Openssl supports 9 types of alternative name filed.
-    // 4 of them are "string similar" types so it is possible
-    // to create more generic function.
-    AltNameSet getAlternativeNameDNS() const;
-
-    time_t getNotAfter() const;
-
-    time_t getNotBefore() const;
-
-    ASN1_TIME* getNotAfterTime() const;
-
-    ASN1_TIME* getNotBeforeTime() const;
-
-    /**
-     * @brief This is convenient function.
-     *
-     * @details It can't be const function (however it doesn't change internal
-     * object). For details see #isSignedBy() function description.
-     */
-    bool isRootCert();
-
-    /**
-     * @brief Gets list of CRL distribution's points URIs
-     */
-    std::list<std::string> getCrlUris() const;
-
-    long getVersion() const;
+       enum FingerprintType {
+               FINGERPRINT_MD5,
+               FINGERPRINT_SHA1
+       };
+       enum FieldType {
+               FIELD_ISSUER,
+               FIELD_SUBJECT
+       };
 
-    // utf8 string
-    std::string getSerialNumberString() const;
-    std::string getKeyUsageString() const;
-    std::string getSignatureAlgorithmString() const;
-    std::string getPublicKeyAlgoString() const;
-    std::string getPublicKeyString() const;
-    void getPublicKeyDER(unsigned char **pubkey, size_t *len) const;
+       enum FormType {
+               FORM_DER,
+               FORM_BASE64
+       };
 
-    /*
-     * 0 - not CA
-     * 1 - CA
-     * 2 - deprecated and not used
-     * 3 - older version of CA
-     * 4 - older version of CA
-     * 5 - netscape CA
-     */
-    int isCA() const;
+       static CertificatePtr createFromFile(const std::string &location);
 
-    static std::string FingerprintToColonHex(
-            const Fingerprint &fingerprint);
+       explicit Certificate(X509 *cert);
+
+       explicit Certificate(const std::string &data,
+                                                FormType form = FORM_DER);
+
+       ~Certificate();
+
+       // It returns pointer to internal structure!
+       // Do not free this pointer!
+       X509 *getX509(void) const;
+
+       std::string getDER(void) const;
+
+       std::string getBase64(void) const;
+
+       // This const is cheating here because you have no
+       // guarantee that X509_get_subject_name will not
+       // change X509 object.
+       bool isSignedBy(const CertificatePtr &parent) const;
+
+       Fingerprint getFingerprint(FingerprintType type) const;
+
+       // getName uses deprecated functions. Usage is strongly discouraged.
+       // utf8 string
+       std::string getOneLine(FieldType type = FIELD_SUBJECT) const;
+       std::string getCommonName(FieldType type = FIELD_SUBJECT) const;
+       std::string getCountryName(FieldType type = FIELD_SUBJECT) const;
+       std::string getStateOrProvinceName(FieldType type = FIELD_SUBJECT) const;
+       std::string getLocalityName(FieldType type = FIELD_SUBJECT) const;
+       std::string getOrganizationName(FieldType type = FIELD_SUBJECT) const;
+       std::string getOrganizationalUnitName(FieldType type = FIELD_SUBJECT) const;
+       std::string getEmailAddres(FieldType type = FIELD_SUBJECT) const;
+
+       std::string getNameHash(FieldType type = FIELD_SUBJECT) const;
+
+       // TODO: UID type is unsigned char. std::string should be changed to unsigned char container
+       std::string getUID(FieldType type = FIELD_SUBJECT) const;
+       std::string getOCSPURL() const;
+
+
+
+       // Openssl supports 9 types of alternative name filed.
+       // 4 of them are "string similar" types so it is possible
+       // to create more generic function.
+       AltNameSet getAlternativeNameDNS() const;
+
+       time_t getNotAfter() const;
+
+       time_t getNotBefore() const;
+
+       ASN1_TIME *getNotAfterTime() const;
+
+       ASN1_TIME *getNotBeforeTime() const;
+
+       /**
+        * @brief This is convenient function.
+        *
+        * @details It can't be const function (however it doesn't change internal
+        * object). For details see #isSignedBy() function description.
+        */
+       bool isRootCert();
+
+       /**
+        * @brief Gets list of CRL distribution's points URIs
+        */
+       std::list<std::string> getCrlUris() const;
+
+       long getVersion() const;
+
+       // utf8 string
+       std::string getSerialNumberString() const;
+       std::string getKeyUsageString() const;
+       std::string getSignatureAlgorithmString() const;
+       std::string getPublicKeyAlgoString() const;
+       std::string getPublicKeyString() const;
+       void getPublicKeyDER(unsigned char **pubkey, size_t *len) const;
+
+       /*
+        * 0 - not CA
+        * 1 - CA
+        * 2 - deprecated and not used
+        * 3 - older version of CA
+        * 4 - older version of CA
+        * 5 - netscape CA
+        */
+       int isCA() const;
+
+       static std::string FingerprintToColonHex(
+               const Fingerprint &fingerprint);
 
 protected:
-    X509_NAME *getX509Name(FieldType type) const;
+       X509_NAME *getX509Name(FieldType type) const;
 
-    // utf8 string
-    std::string getField(FieldType type, int fieldNid) const;
+       // utf8 string
+       std::string getField(FieldType type, int fieldNid) const;
 
-    X509 *m_x509;
+       X509 *m_x509;
 };
 } // namespace ValidationCore
index 6dc6e85..f7734a3 100644 (file)
@@ -49,9 +49,9 @@ using namespace ValidationCore;
 
 inline std::string toBinaryString(int data)
 {
-    char buffer[sizeof(int)];
-    memcpy(buffer, &data, sizeof(int));
-    return std::string(buffer, sizeof(int));
+       char buffer[sizeof(int)];
+       memcpy(buffer, &data, sizeof(int));
+       return std::string(buffer, sizeof(int));
 }
 
 bool isHashMatchedName(const std::string &name, const std::string &hash)
@@ -66,7 +66,6 @@ bool isHashMatchedFile(const std::string &path, const std::string &hash)
 {
        CertificatePtr certPtr = Certificate::createFromFile(path);
        std::string name = certPtr->getNameHash(Certificate::FIELD_SUBJECT);
-
        return isHashMatchedName(name, hash);
 }
 
@@ -74,19 +73,19 @@ CertificatePtr searchCert(const std::string &dir, const CertificatePtr &certPtr,
 {
        try {
                std::string hash = certPtr->getNameHash(Certificate::FIELD_ISSUER);
+               std::unique_ptr<DIR, std::function<int(DIR *)>> dp(::opendir(dir.c_str()), ::closedir);
 
-               std::unique_ptr<DIR, std::function<int(DIR*)>> dp(::opendir(dir.c_str()), ::closedir);
                if (dp.get() == NULL) {
                        LogError("Failed open dir[" << dir << "]");
                        return CertificatePtr();
                }
 
                size_t len = offsetof(struct dirent, d_name) + pathconf(dir.c_str(), _PC_NAME_MAX) + 1;
-               std::unique_ptr<struct dirent, std::function<void(void*)>>
-                       pEntry(static_cast<struct dirent *>(::malloc(len)), ::free);
-
+               std::unique_ptr<struct dirent, std::function<void(void *)>>
+                               pEntry(static_cast<struct dirent *>(::malloc(len)), ::free);
                struct dirent *dirp = NULL;
                int ret = 0;
+
                while ((ret = readdir_r(dp.get(), pEntry.get(), &dirp)) == 0 && dirp) {
                        if (dirp->d_type == DT_DIR)
                                continue;
@@ -104,8 +103,8 @@ CertificatePtr searchCert(const std::string &dir, const CertificatePtr &certPtr,
                        }
 
                        LogDebug("Found hash matched file! : " << candidatePath);
-
                        CertificatePtr candidate = Certificate::createFromFile(candidatePath);
+
                        if (candidate->getOneLine().compare(certPtr->getOneLine(Certificate::FIELD_ISSUER)) != 0)
                                continue;
 
@@ -119,7 +118,6 @@ CertificatePtr searchCert(const std::string &dir, const CertificatePtr &certPtr,
 
                LogWarning("cert not found by hash[" << hash << "]");
                return CertificatePtr();
-
        } catch (const Certificate::Exception::Base &e) {
                VcoreThrowMsg(
                        CertificateCollection::Exception::CertificateError,
@@ -139,6 +137,7 @@ CertificatePtr getIssuerCertFromStore(const CertificatePtr &certPtr)
 {
        LogDebug("Start to get issuer from store.");
        CertificatePtr found = searchCert(TZ_SYS_CA_CERTS_TIZEN, certPtr, false);
+
        if (found.get() != NULL) {
                LogDebug("Found issuer cert in tizen root CA dir");
                return found;
@@ -152,129 +151,136 @@ CertificatePtr getIssuerCertFromStore(const CertificatePtr &certPtr)
 namespace ValidationCore {
 
 CertificateCollection::CertificateCollection()
-  : m_collectionStatus(COLLECTION_UNSORTED)
+       : m_collectionStatus(COLLECTION_UNSORTED)
 {}
 
 void CertificateCollection::clear(void)
 {
-    m_collectionStatus = COLLECTION_UNSORTED;
-    m_certList.clear();
+       m_collectionStatus = COLLECTION_UNSORTED;
+       m_certList.clear();
 }
 
 void CertificateCollection::load(const CertificateList &certList)
 {
-    m_collectionStatus = COLLECTION_UNSORTED;
-    std::copy(certList.begin(),
-              certList.end(),
-              std::back_inserter(m_certList));
+       m_collectionStatus = COLLECTION_UNSORTED;
+       std::copy(certList.begin(),
+                         certList.end(),
+                         std::back_inserter(m_certList));
 }
 
 std::string CertificateCollection::toBase64String() const
 {
-    std::ostringstream output;
-    int certNum = m_certList.size();
-    output << toBinaryString(certNum);
-
-    for (auto i = m_certList.begin(); i != m_certList.end(); ++i) {
-        std::string derCert = (*i)->getDER();
-        output << toBinaryString(derCert.size());
-        output << derCert;
-    }
-    Base64Encoder base64;
-    base64.reset();
-    base64.append(output.str());
-    base64.finalize();
-    return base64.get();
+       std::ostringstream output;
+       int certNum = m_certList.size();
+       output << toBinaryString(certNum);
+
+       for (auto i = m_certList.begin(); i != m_certList.end(); ++i) {
+               std::string derCert = (*i)->getDER();
+               output << toBinaryString(derCert.size());
+               output << derCert;
+       }
+
+       Base64Encoder base64;
+       base64.reset();
+       base64.append(output.str());
+       base64.finalize();
+       return base64.get();
 }
 
 CertificateList CertificateCollection::getCertificateList() const
 {
-    return m_certList;
+       return m_certList;
 }
 
 bool CertificateCollection::isChain() const
 {
-    if (COLLECTION_SORTED != m_collectionStatus)
-        VcoreThrowMsg(CertificateCollection::Exception::WrongUsage,
-                      "You must sort certificate first");
+       if (COLLECTION_SORTED != m_collectionStatus)
+               VcoreThrowMsg(CertificateCollection::Exception::WrongUsage,
+                                         "You must sort certificate first");
 
-    return (COLLECTION_SORTED == m_collectionStatus) ? true : false;
+       return (COLLECTION_SORTED == m_collectionStatus) ? true : false;
 }
 
 bool CertificateCollection::sort()
 {
-    if (COLLECTION_UNSORTED == m_collectionStatus) {
-        sortCollection();
-    }
-    return (COLLECTION_SORTED == m_collectionStatus) ? true : false;
+       if (COLLECTION_UNSORTED == m_collectionStatus) {
+               sortCollection();
+       }
+
+       return (COLLECTION_SORTED == m_collectionStatus) ? true : false;
 }
 
 CertificateList CertificateCollection::getChain() const
 {
-    if (COLLECTION_SORTED != m_collectionStatus)
-        VcoreThrowMsg(CertificateCollection::Exception::WrongUsage,
-                      "You must sort certificates first");
+       if (COLLECTION_SORTED != m_collectionStatus)
+               VcoreThrowMsg(CertificateCollection::Exception::WrongUsage,
+                                         "You must sort certificates first");
 
-    return m_certList;
+       return m_certList;
 }
 
 void CertificateCollection::sortCollection()
 {
-    // sorting is not necessary
-    if (m_certList.empty()) {
-        m_collectionStatus = COLLECTION_SORTED;
-        return;
-    }
-
-    CertificateList sorted;
-    std::map<std::string, CertificatePtr> subTransl;
-    std::map<std::string, CertificatePtr> issTransl;
-
-    // Sort all certificate by subject
-    for (auto it = m_certList.begin(); it != m_certList.end(); ++it) {
-        subTransl.insert(std::make_pair((*it)->getOneLine(), (*it)));
-    }
-    // We need one start certificate
-    sorted.push_back(subTransl.begin()->second);
-    subTransl.erase(subTransl.begin());
-
-    // Get the issuer from front certificate and find certificate with this subject in subTransl.
-    // Add this certificate to the front.
-    while (!subTransl.empty()) {
-        std::string issuer = sorted.back()->getOneLine(Certificate::FIELD_ISSUER);
-        auto it = subTransl.find(issuer);
-        if (it == subTransl.end()) {
-            break;
-        }
-        sorted.push_back(it->second);
-        subTransl.erase(it);
-    }
-
-    // Sort all certificates by issuer
-    for (auto it = subTransl.begin(); it != subTransl.end(); ++it) {
-        issTransl.insert(std::make_pair(it->second->getOneLine(Certificate::FIELD_ISSUER), it->second));
-    }
-
-    // Get the subject from last certificate and find certificate with such issuer in issTransl.
-    // Add this certificate at end.
-    while (!issTransl.empty()) {
-        std::string sub = sorted.front()->getOneLine();
-        auto it = issTransl.find(sub);
-        if (it == issTransl.end()) {
-            break;
-        }
-        sorted.push_front(it->second);
-        issTransl.erase(it);
-    }
-
-    if (!issTransl.empty()) {
-        LogWarning("Certificates don't form a valid chain.");
-        m_collectionStatus = COLLECTION_CHAIN_BROKEN;
-        return;
-    }
-
-    m_collectionStatus = COLLECTION_SORTED;
-    m_certList = sorted;
+       // sorting is not necessary
+       if (m_certList.empty()) {
+               m_collectionStatus = COLLECTION_SORTED;
+               return;
+       }
+
+       CertificateList sorted;
+       std::map<std::string, CertificatePtr> subTransl;
+       std::map<std::string, CertificatePtr> issTransl;
+
+       // Sort all certificate by subject
+       for (auto it = m_certList.begin(); it != m_certList.end(); ++it) {
+               subTransl.insert(std::make_pair((*it)->getOneLine(), (*it)));
+       }
+
+       // We need one start certificate
+       sorted.push_back(subTransl.begin()->second);
+       subTransl.erase(subTransl.begin());
+
+       // Get the issuer from front certificate and find certificate with this subject in subTransl.
+       // Add this certificate to the front.
+       while (!subTransl.empty()) {
+               std::string issuer = sorted.back()->getOneLine(Certificate::FIELD_ISSUER);
+               auto it = subTransl.find(issuer);
+
+               if (it == subTransl.end()) {
+                       break;
+               }
+
+               sorted.push_back(it->second);
+               subTransl.erase(it);
+       }
+
+       // Sort all certificates by issuer
+       for (auto it = subTransl.begin(); it != subTransl.end(); ++it) {
+               issTransl.insert(std::make_pair(it->second->getOneLine(Certificate::FIELD_ISSUER), it->second));
+       }
+
+       // Get the subject from last certificate and find certificate with such issuer in issTransl.
+       // Add this certificate at end.
+       while (!issTransl.empty()) {
+               std::string sub = sorted.front()->getOneLine();
+               auto it = issTransl.find(sub);
+
+               if (it == issTransl.end()) {
+                       break;
+               }
+
+               sorted.push_front(it->second);
+               issTransl.erase(it);
+       }
+
+       if (!issTransl.empty()) {
+               LogWarning("Certificates don't form a valid chain.");
+               m_collectionStatus = COLLECTION_CHAIN_BROKEN;
+               return;
+       }
+
+       m_collectionStatus = COLLECTION_SORTED;
+       m_certList = sorted;
 }
 
 /*
@@ -282,40 +288,46 @@ void CertificateCollection::sortCollection()
  */
 bool CertificateCollection::completeCertificateChain()
 {
-    CertificatePtr last = m_certList.back();
-    if (last->isRootCert())
-        return true;
+       CertificatePtr last = m_certList.back();
 
-    CertificatePtr rootCert = getIssuerCertFromStore(last);
+       if (last->isRootCert())
+               return true;
 
-    if (!rootCert.get())
-        return false;
+       CertificatePtr rootCert = getIssuerCertFromStore(last);
 
-    if (!rootCert->isRootCert())
-        return false;
+       if (!rootCert.get())
+               return false;
 
-    m_certList.push_back(rootCert);
-    return true;
+       if (!rootCert->isRootCert())
+               return false;
+
+       m_certList.push_back(rootCert);
+       return true;
 }
 
-size_t CertificateCollection::size() const {
-    return m_certList.size();
+size_t CertificateCollection::size() const
+{
+       return m_certList.size();
 }
 
-bool CertificateCollection::empty() const {
-    return m_certList.empty();
+bool CertificateCollection::empty() const
+{
+       return m_certList.empty();
 }
 
-CertificateCollection::const_iterator CertificateCollection::begin() const {
-    return m_certList.begin();
+CertificateCollection::const_iterator CertificateCollection::begin() const
+{
+       return m_certList.begin();
 }
 
-CertificateCollection::const_iterator CertificateCollection::end() const {
-    return m_certList.end();
+CertificateCollection::const_iterator CertificateCollection::end() const
+{
+       return m_certList.end();
 }
 
-CertificatePtr CertificateCollection::back() const {
-    return m_certList.back();
+CertificatePtr CertificateCollection::back() const
+{
+       return m_certList.back();
 }
 
 } // namespace ValidationCore
index a7f83a1..7ec3186 100644 (file)
@@ -40,130 +40,129 @@ namespace ValidationCore {
 
 class CertificateCollection {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, CertificateError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongUsage);
-    };
-
-    CertificateCollection();
-
-    typedef CertificateList::const_iterator const_iterator;
-
-    /*
-     * Remove all certificates from collection.
-     */
-    void clear();
-
-    /*
-     * In current implemenation this function MUST success.
-     *
-     * This function will add new certificate to collection.
-     * This function DOES NOT clean collection.
-     */
-    void load(const CertificateList &certList);
-
-    /*
-     * This function will return all certificates from
-     * collection encoded in base64 format.
-     */
-    std::string toBase64String() const;
-
-    /*
-     * This will return all certificate from collection.
-     */
-    CertificateList getCertificateList() const;
-
-    /*
-     * This function will return true if certificates
-     * in in this structure were sorted and create
-     * certificate chain.
-
-     * Note: You MUST sort certificates first.
-     */
-    bool isChain() const;
-
-    /*
-     * This function will return true if all certificate are
-     * able to create certificate chain.
-     *
-     * This function will sort certificates if collection
-     * is not sorted.
-     *
-     * Note: This function will make all iterators invalid.
-     */
-    bool sort();
-
-    /*
-     * Precondition : cert list sorted and has more than on cert.
-     * This function add root cert in cert list to complete cert chain
-     */
-    bool completeCertificateChain();
-
-    /*
-     * This function will return Certificate chain.
-     *
-     * First certificate on the list is EndEntity certificate.
-     *
-     * Last certificate on the list is RootCA certificate or
-     * CA certificate if RootCA is not present.
-     *
-     * Note: You MUST sort certificates first and
-     * check if certificates creates proper chain.
-     */
-    CertificateList getChain() const;
-
-    /*
-     * It returns size of certificate collection.
-     */
-    size_t size() const;
-
-    /*
-     * Return true if collection is empty.
-     */
-    bool empty() const;
-
-    /*
-     * This will return end iterator to internal collection.
-     *
-     * Note: this iterator will lose validity if you call non const
-     * method on CertificateCollection class.
-     */
-    const_iterator begin() const;
-
-    /*
-     * This will return end iterator to internal collection.
-     *
-     * Note: this iterator will lose validity if you call non const
-     * method on CertificateCollection class.
-     */
-    const_iterator end() const;
-
-    /*
-     * This function will return the last certificate from collection.
-     *
-     * Note: There is no point to call this function if certificate
-     * collection is not sorted!
-     */
-    CertificatePtr back() const;
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, InternalError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, CertificateError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongUsage);
+       };
+
+       CertificateCollection();
+
+       typedef CertificateList::const_iterator const_iterator;
+
+       /*
+        * Remove all certificates from collection.
+        */
+       void clear();
+
+       /*
+        * In current implemenation this function MUST success.
+        *
+        * This function will add new certificate to collection.
+        * This function DOES NOT clean collection.
+        */
+       void load(const CertificateList &certList);
+
+       /*
+        * This function will return all certificates from
+        * collection encoded in base64 format.
+        */
+       std::string toBase64String() const;
+
+       /*
+        * This will return all certificate from collection.
+        */
+       CertificateList getCertificateList() const;
+
+       /*
+        * This function will return true if certificates
+        * in in this structure were sorted and create
+        * certificate chain.
+
+        * Note: You MUST sort certificates first.
+        */
+       bool isChain() const;
+
+       /*
+        * This function will return true if all certificate are
+        * able to create certificate chain.
+        *
+        * This function will sort certificates if collection
+        * is not sorted.
+        *
+        * Note: This function will make all iterators invalid.
+        */
+       bool sort();
+
+       /*
+        * Precondition : cert list sorted and has more than on cert.
+        * This function add root cert in cert list to complete cert chain
+        */
+       bool completeCertificateChain();
+
+       /*
+        * This function will return Certificate chain.
+        *
+        * First certificate on the list is EndEntity certificate.
+        *
+        * Last certificate on the list is RootCA certificate or
+        * CA certificate if RootCA is not present.
+        *
+        * Note: You MUST sort certificates first and
+        * check if certificates creates proper chain.
+        */
+       CertificateList getChain() const;
+
+       /*
+        * It returns size of certificate collection.
+        */
+       size_t size() const;
+
+       /*
+        * Return true if collection is empty.
+        */
+       bool empty() const;
+
+       /*
+        * This will return end iterator to internal collection.
+        *
+        * Note: this iterator will lose validity if you call non const
+        * method on CertificateCollection class.
+        */
+       const_iterator begin() const;
+
+       /*
+        * This will return end iterator to internal collection.
+        *
+        * Note: this iterator will lose validity if you call non const
+        * method on CertificateCollection class.
+        */
+       const_iterator end() const;
+
+       /*
+        * This function will return the last certificate from collection.
+        *
+        * Note: There is no point to call this function if certificate
+        * collection is not sorted!
+        */
+       CertificatePtr back() const;
 
 protected:
-    void sortCollection(void);
-
-    enum CollectionStatus
-    {
-        // Certificate collection are not sorted in any way
-        COLLECTION_UNSORTED,
-        // Certificate collection creates certificate chain
-        COLLECTION_SORTED,
-        // Cerfificate collection is not able to create certificate chain
-        COLLECTION_CHAIN_BROKEN,
-    };
-
-    CollectionStatus m_collectionStatus;
-    CertificateList m_certList;
+       void sortCollection(void);
+
+       enum CollectionStatus {
+               // Certificate collection are not sorted in any way
+               COLLECTION_UNSORTED,
+               // Certificate collection creates certificate chain
+               COLLECTION_SORTED,
+               // Cerfificate collection is not able to create certificate chain
+               COLLECTION_CHAIN_BROKEN,
+       };
+
+       CollectionStatus m_collectionStatus;
+       CertificateList m_certList;
 };
 
 typedef std::list<CertificateCollection> CertificateCollectionList;
index a41b7be..4a67369 100644 (file)
@@ -44,65 +44,63 @@ const std::string TOKEN_VALUE_VISIBILITY_PLATFORM = "tizen-platform";
 
 int hexCharToInt(char c)
 {
-    if (c >= 'a' && c <= 'f') {
-        return 10 + static_cast<int>(c) - 'a';
-    }
-    if (c >= 'A' && c <= 'F') {
-        return 10 + static_cast<int>(c) - 'A';
-    }
-    if (c >= '0' && c <= '9') {
-        return static_cast<int>(c) - '0';
-    }
-    return c;
+       if (c >= 'a' && c <= 'f') {
+               return 10 + static_cast<int>(c) - 'a';
+       }
+
+       if (c >= 'A' && c <= 'F') {
+               return 10 + static_cast<int>(c) - 'A';
+       }
+
+       if (c >= '0' && c <= '9') {
+               return static_cast<int>(c) - '0';
+       }
+
+       return c;
 }
 } // anonymous namespace
 
 namespace ValidationCore {
 CertificateConfigReader::CertificateConfigReader()
-  : m_certificateDomain(0)
-  , m_parserSchema(this)
+       : m_certificateDomain(0)
+       , m_parserSchema(this)
 {
-    m_parserSchema.addBeginTagCallback(
-        TOKEN_CERTIFICATE_SET,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::blankFunction);
-
-    m_parserSchema.addBeginTagCallback(
-        TOKEN_CERTIFICATE_DOMAIN,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::tokenCertificateDomain);
-
-    m_parserSchema.addBeginTagCallback(
-        TOKEN_FINGERPRINT_SHA1,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::blankFunction);
-
-    m_parserSchema.addEndTagCallback(
-        TOKEN_CERTIFICATE_SET,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::blankFunction);
-
-    m_parserSchema.addEndTagCallback(
-        TOKEN_CERTIFICATE_DOMAIN,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::blankFunction);
-
-    m_parserSchema.addEndTagCallback(
-        TOKEN_FINGERPRINT_SHA1,
-        XML_EMPTY_NAMESPACE,
-        &CertificateConfigReader::tokenEndFingerprintSHA1);
+       m_parserSchema.addBeginTagCallback(
+               TOKEN_CERTIFICATE_SET,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(
+               TOKEN_CERTIFICATE_DOMAIN,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::tokenCertificateDomain);
+       m_parserSchema.addBeginTagCallback(
+               TOKEN_FINGERPRINT_SHA1,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::blankFunction);
+       m_parserSchema.addEndTagCallback(
+               TOKEN_CERTIFICATE_SET,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::blankFunction);
+       m_parserSchema.addEndTagCallback(
+               TOKEN_CERTIFICATE_DOMAIN,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::blankFunction);
+       m_parserSchema.addEndTagCallback(
+               TOKEN_FINGERPRINT_SHA1,
+               XML_EMPTY_NAMESPACE,
+               &CertificateConfigReader::tokenEndFingerprintSHA1);
 }
 
 void CertificateConfigReader::initialize(
-    const std::string &file,
-    const std::string &scheme)
+       const std::string &file,
+       const std::string &scheme)
 {
-    m_parserSchema.initialize(file, true, SaxReader::VALIDATION_XMLSCHEME, scheme);
+       m_parserSchema.initialize(file, true, SaxReader::VALIDATION_XMLSCHEME, scheme);
 }
 
 void CertificateConfigReader::read(CertificateIdentifier &identificator)
 {
-    m_parserSchema.read(identificator);
+       m_parserSchema.read(identificator);
 }
 
 void CertificateConfigReader::blankFunction(CertificateIdentifier &)
@@ -111,55 +109,57 @@ void CertificateConfigReader::blankFunction(CertificateIdentifier &)
 
 void CertificateConfigReader::tokenCertificateDomain(CertificateIdentifier &)
 {
-    std::string name = m_parserSchema.getReader().attribute(TOKEN_ATTR_NAME);
-
-    if (name.empty()) {
-        VcoreThrowMsg(CertificateConfigReader::Exception::InvalidFile,
-                      "Invalid fingerprint file. Domain name is mandatory");
-    } else if (name == TOKEN_VALUE_TIZEN_DEVELOPER) {
-        m_certificateDomain = CertStoreId::TIZEN_DEVELOPER;
-    } else if (name == TOKEN_VALUE_TIZEN_TEST) {
-        m_certificateDomain = CertStoreId::TIZEN_TEST;
-    } else if (name == TOKEN_VALUE_TIZEN_VERIFY) {
-        m_certificateDomain = CertStoreId::TIZEN_VERIFY;
-    } else if (name == TOKEN_VALUE_TIZEN_STORE) {
-        m_certificateDomain = CertStoreId::TIZEN_STORE;
-    } else if (name == TOKEN_VALUE_VISIBILITY_PUBLIC) {
-        m_certificateDomain = CertStoreId::VIS_PUBLIC;
-    } else if (name == TOKEN_VALUE_VISIBILITY_PARTNER) {
-        m_certificateDomain = CertStoreId::VIS_PARTNER;
-    } else if (name == TOKEN_VALUE_VISIBILITY_PLATFORM) {
-        m_certificateDomain = CertStoreId::VIS_PLATFORM;
-    } else {
-        m_certificateDomain = 0;
-    }
+       std::string name = m_parserSchema.getReader().attribute(TOKEN_ATTR_NAME);
+
+       if (name.empty()) {
+               VcoreThrowMsg(CertificateConfigReader::Exception::InvalidFile,
+                                         "Invalid fingerprint file. Domain name is mandatory");
+       } else if (name == TOKEN_VALUE_TIZEN_DEVELOPER) {
+               m_certificateDomain = CertStoreId::TIZEN_DEVELOPER;
+       } else if (name == TOKEN_VALUE_TIZEN_TEST) {
+               m_certificateDomain = CertStoreId::TIZEN_TEST;
+       } else if (name == TOKEN_VALUE_TIZEN_VERIFY) {
+               m_certificateDomain = CertStoreId::TIZEN_VERIFY;
+       } else if (name == TOKEN_VALUE_TIZEN_STORE) {
+               m_certificateDomain = CertStoreId::TIZEN_STORE;
+       } else if (name == TOKEN_VALUE_VISIBILITY_PUBLIC) {
+               m_certificateDomain = CertStoreId::VIS_PUBLIC;
+       } else if (name == TOKEN_VALUE_VISIBILITY_PARTNER) {
+               m_certificateDomain = CertStoreId::VIS_PARTNER;
+       } else if (name == TOKEN_VALUE_VISIBILITY_PLATFORM) {
+               m_certificateDomain = CertStoreId::VIS_PLATFORM;
+       } else {
+               m_certificateDomain = 0;
+       }
 }
 
 void CertificateConfigReader::tokenEndFingerprintSHA1(
-        CertificateIdentifier &identificator)
+       CertificateIdentifier &identificator)
 {
-    std::string text = m_parserSchema.getText();
-    text += ":"; // add guard at the end of fingerprint
-    Certificate::Fingerprint fingerprint;
-    int s = 0;
-    int byteDescLen = 0;
-    for (size_t i = 0; i < text.size(); ++i) {
-        if (isxdigit(text[i])) {
-            s <<= 4;
-            s += hexCharToInt(text[i]);
-            byteDescLen++;
-            if (byteDescLen > 2) {
-                Assert(0 && "Unsupported fingerprint format in xml file.");
-            }
-        } else if (text[i] == ':') {
-            fingerprint.push_back(static_cast<unsigned char>(s));
-            s = 0;
-            byteDescLen = 0;
-        } else {
-            Assert(0 && "Unussported fingerprint format in xml file.");
-        }
-    }
-
-    identificator.add(fingerprint, m_certificateDomain);
+       std::string text = m_parserSchema.getText();
+       text += ":"; // add guard at the end of fingerprint
+       Certificate::Fingerprint fingerprint;
+       int s = 0;
+       int byteDescLen = 0;
+
+       for (size_t i = 0; i < text.size(); ++i) {
+               if (isxdigit(text[i])) {
+                       s <<= 4;
+                       s += hexCharToInt(text[i]);
+                       byteDescLen++;
+
+                       if (byteDescLen > 2) {
+                               Assert(0 && "Unsupported fingerprint format in xml file.");
+                       }
+               } else if (text[i] == ':') {
+                       fingerprint.push_back(static_cast<unsigned char>(s));
+                       s = 0;
+                       byteDescLen = 0;
+               } else {
+                       Assert(0 && "Unussported fingerprint format in xml file.");
+               }
+       }
+
+       identificator.add(fingerprint, m_certificateDomain);
 }
 } // namespace ValidationCore
index d61cc86..0d31934 100644 (file)
 namespace ValidationCore {
 class CertificateConfigReader {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, InvalidFile);
-    };
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, InvalidFile);
+       };
 
-    CertificateConfigReader();
+       CertificateConfigReader();
 
-    void initialize(const std::string &file, const std::string &scheme);
-    void read(CertificateIdentifier &identificator);
+       void initialize(const std::string &file, const std::string &scheme);
+       void read(CertificateIdentifier &identificator);
 
 private:
-    void blankFunction(CertificateIdentifier &);
-    void tokenCertificateDomain(CertificateIdentifier &identificator);
-    void tokenEndFingerprintSHA1(CertificateIdentifier &identificator);
+       void blankFunction(CertificateIdentifier &);
+       void tokenCertificateDomain(CertificateIdentifier &identificator);
+       void tokenEndFingerprintSHA1(CertificateIdentifier &identificator);
 
-    CertStoreId::Type m_certificateDomain;
-    ParserSchema<CertificateConfigReader, CertificateIdentifier> m_parserSchema;
+       CertStoreId::Type m_certificateDomain;
+       ParserSchema<CertificateConfigReader, CertificateIdentifier> m_parserSchema;
 };
 } // namespace ValidationCore
 
index 06ac498..6fe9806 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef \
     _WRT_ENGINE_SRC_INSTALLER_CORE_VALIDATION_CORE_CERTIFICATEIDENTIFICATOR_H_
 #define \
-    _WRT_ENGINE_SRC_INSTALLER_CORE_VALIDATION_CORE_CERTIFICATEIDENTIFICATOR_H_
+       _WRT_ENGINE_SRC_INSTALLER_CORE_VALIDATION_CORE_CERTIFICATEIDENTIFICATOR_H_
 
 #include <map>
 #include <dpl/noncopyable.h>
@@ -35,35 +35,37 @@ class CertificateIdentifier : public VcoreDPL::Noncopyable {
 public:
        typedef std::map<Certificate::Fingerprint, CertStoreId::Set> FingerPrintMap;
 
-    CertificateIdentifier()
-    {
-    }
-    ~CertificateIdentifier()
-    {
-    }
+       CertificateIdentifier()
+       {
+       }
+       ~CertificateIdentifier()
+       {
+       }
+
+       void add(const Certificate::Fingerprint &fingerprint,
+                        CertStoreId::Type domain)
+       {
+               fingerPrintMap[fingerprint].add(domain);
+       }
+
+       CertStoreId::Set find(const Certificate::Fingerprint &fingerprint) const
+       {
+               FingerPrintMap::const_iterator iter = fingerPrintMap.find(fingerprint);
 
-    void add(const Certificate::Fingerprint &fingerprint,
-            CertStoreId::Type domain)
-    {
-        fingerPrintMap[fingerprint].add(domain);
-    }
+               if (iter == fingerPrintMap.end()) {
+                       return CertStoreId::Set();
+               }
 
-    CertStoreId::Set find(const Certificate::Fingerprint &fingerprint) const
-    {
-        FingerPrintMap::const_iterator iter = fingerPrintMap.find(fingerprint);
-        if (iter == fingerPrintMap.end()) {
-            return CertStoreId::Set();
-        }
-        return iter->second;
-    }
+               return iter->second;
+       }
 
-    CertStoreId::Set find(const CertificatePtr &certificate) const
-    {
-        return find(certificate->getFingerprint(Certificate::FINGERPRINT_SHA1));
-    }
+       CertStoreId::Set find(const CertificatePtr &certificate) const
+       {
+               return find(certificate->getFingerprint(Certificate::FINGERPRINT_SHA1));
+       }
 
 private:
-    FingerPrintMap fingerPrintMap;
+       FingerPrintMap fingerPrintMap;
 };
 } // namespace ValidationCore
 
index 1c34abb..dd01d41 100644 (file)
@@ -29,104 +29,103 @@ const int MIN_RSA_KEY_LENGTH = 1024;
 
 namespace ValidationCore {
 CertificateLoader::CertificateLoaderResult CertificateLoader::
-    loadCertificateBasedOnExponentAndModulus(const std::string &m_modulus,
-        const std::string &m_exponent)
+loadCertificateBasedOnExponentAndModulus(const std::string &m_modulus,
+               const std::string &m_exponent)
 {
-    (void) m_modulus;
-    (void) m_exponent;
-    LogError("Not implemented.");
-    return UNKNOWN_ERROR;
+       (void) m_modulus;
+       (void) m_exponent;
+       LogError("Not implemented.");
+       return UNKNOWN_ERROR;
 }
 
 CertificateLoader::CertificateLoaderResult CertificateLoader::loadCertificate(
-        const std::string &storageName,
-        CertificateLoader::CertificateLoaderComparator *cmp)
+       const std::string &storageName,
+       CertificateLoader::CertificateLoaderComparator *cmp)
 {
-    (void) storageName;
-    (void) cmp;
-    LogError("Not Implemented");
-    return UNKNOWN_ERROR;
+       (void) storageName;
+       (void) cmp;
+       LogError("Not Implemented");
+       return UNKNOWN_ERROR;
 }
 
 CertificateLoader::CertificateLoaderResult CertificateLoader::
-    loadCertificateBasedOnSubjectName(const std::string &subjectName)
+loadCertificateBasedOnSubjectName(const std::string &subjectName)
 {
-    (void) subjectName;
-    LogError("Not implemented.");
-    return UNKNOWN_ERROR;
+       (void) subjectName;
+       LogError("Not implemented.");
+       return UNKNOWN_ERROR;
 }
 
 CertificateLoader::CertificateLoaderResult CertificateLoader::
-    loadCertificateWithECKEY(const std::string &curveName,
-        const std::string &publicKey)
+loadCertificateWithECKEY(const std::string &curveName,
+                                                const std::string &publicKey)
 {
-    (void) curveName;
-    (void) publicKey;
-    LogError("Not implemented.");
-    return UNKNOWN_ERROR;
+       (void) curveName;
+       (void) publicKey;
+       LogError("Not implemented.");
+       return UNKNOWN_ERROR;
 }
 
-CertificateLoader::CertificateLoaderResult CertificateLoader::loadCertificateFromRawData(const std::string &rawData)
+CertificateLoader::CertificateLoaderResult CertificateLoader::loadCertificateFromRawData(
+       const std::string &rawData)
 {
-    VcoreTry {
-        m_certificatePtr = CertificatePtr(new Certificate(rawData, Certificate::FORM_BASE64));
-    } VcoreCatch(Certificate::Exception::Base) {
-        LogWarning("Error reading certificate by openssl.");
-        return UNKNOWN_ERROR;
-    }
-
-    // Check the key length if sig algorithm is RSA
-    EVP_PKEY *pKey = X509_get_pubkey(m_certificatePtr->getX509());
-
-    if (pKey != NULL) {
-        if (pKey->type == EVP_PKEY_RSA) {
-            RSA* pRSA = pKey->pkey.rsa;
-
-            if (pRSA) {
-                int keyLength = RSA_size(pRSA);
-
-                // key Length (modulus) is in bytes
-                keyLength <<= 3;
-                LogDebug("RSA key length: " << keyLength << " bits");
-
-                if (keyLength < MIN_RSA_KEY_LENGTH) {
-                    LogError("RSA key too short! Has only " << keyLength << " bits");
-                    return CERTIFICATE_SECURITY_ERROR;
-                }
-            }
-        }
-    }
-
-    return NO_ERROR;
+       VcoreTry {
+               m_certificatePtr = CertificatePtr(new Certificate(rawData, Certificate::FORM_BASE64));
+       } VcoreCatch(Certificate::Exception::Base) {
+               LogWarning("Error reading certificate by openssl.");
+               return UNKNOWN_ERROR;
+       }
+       // Check the key length if sig algorithm is RSA
+       EVP_PKEY *pKey = X509_get_pubkey(m_certificatePtr->getX509());
+
+       if (pKey != NULL) {
+               if (pKey->type == EVP_PKEY_RSA) {
+                       RSA *pRSA = pKey->pkey.rsa;
+
+                       if (pRSA) {
+                               int keyLength = RSA_size(pRSA);
+                               // key Length (modulus) is in bytes
+                               keyLength <<= 3;
+                               LogDebug("RSA key length: " << keyLength << " bits");
+
+                               if (keyLength < MIN_RSA_KEY_LENGTH) {
+                                       LogError("RSA key too short! Has only " << keyLength << " bits");
+                                       return CERTIFICATE_SECURITY_ERROR;
+                               }
+                       }
+               }
+       }
+
+       return NO_ERROR;
 }
 
 CertificateLoader::CertificateLoaderResult CertificateLoader::
-    loadCertificateBasedOnDSAComponents(const std::string& strP,
-        const std::string& strQ,
-        const std::string& strG,
-        const std::string& strY,
-        const std::string& strJ,
-        const std::string& strSeed,
-        const std::string& strPGenCounter)
+loadCertificateBasedOnDSAComponents(const std::string &strP,
+                                                                       const std::string &strQ,
+                                                                       const std::string &strG,
+                                                                       const std::string &strY,
+                                                                       const std::string &strJ,
+                                                                       const std::string &strSeed,
+                                                                       const std::string &strPGenCounter)
 {
-    (void) strP;
-    (void) strQ;
-    (void) strG;
-    (void) strY;
-    (void) strJ;
-    (void) strSeed;
-    (void) strPGenCounter;
-    LogError("Not implemented.");
-    return UNKNOWN_ERROR;
+       (void) strP;
+       (void) strQ;
+       (void) strG;
+       (void) strY;
+       (void) strJ;
+       (void) strSeed;
+       (void) strPGenCounter;
+       LogError("Not implemented.");
+       return UNKNOWN_ERROR;
 }
 
-bool CertificateLoader::convertBase64NodeToBigNum(const std::stringstrNode,
-        BIGNUM** ppBigNum)
+bool CertificateLoader::convertBase64NodeToBigNum(const std::string &strNode,
+               BIGNUM **ppBigNum)
 {
-    (void) strNode;
-    (void) ppBigNum;
-    LogError("Not implemented.");
-    return false;
+       (void) strNode;
+       (void) ppBigNum;
+       LogError("Not implemented.");
+       return false;
 }
 
 } // namespace ValidationCore
index 9969470..ef42e0b 100644 (file)
 #include <vcore/Certificate.h>
 
 namespace ValidationCore {
-class CertificateLoader : public VcoreDPL::Noncopyable
-{
-  public:
-    class CertificateLoaderComparator
-    {
-      public:
-        virtual bool compare(X509 *x509cert) = 0;
-        virtual ~CertificateLoaderComparator()
-        {
-        }
-    };
-
-    enum CertificateLoaderResult
-    {
-        NO_ERROR,
-        CERTIFICATE_NOT_FOUND,
-        UNSUPPORTED_CERTIFICATE_FIELD,
-        WRONG_ARGUMENTS,
-        CERTIFICATE_SECURITY_ERROR,                  //!< there are some issues with certificate security (i.e. key too short)
-        UNKNOWN_ERROR
-    };
-
-    CertificateLoader()
-    {
-    }
-
-    virtual ~CertificateLoader()
-    {
-    }
-
-    CertificateLoaderResult loadCertificate(const std::string& storage,
-            CertificateLoaderComparator *cmp);
-
-    CertificateLoaderResult loadCertificateBasedOnSubjectName(
-            const std::string &subjectName);
-    CertificateLoaderResult loadCertificateBasedOnExponentAndModulus(
-            const std::string &m_modulus,
-            const std::string  &m_exponent);
-    // KW     CertificateLoaderResult loadCertificateBasedOnIssuerName(const std::string &isserName,
-    // KW       const std::string &serialNumber);
-
-    CertificateLoaderResult loadCertificateFromRawData(
-            const std::string &rawData);
-
-    CertificateLoaderResult loadCertificateBasedOnDSAComponents(
-            const std::string& strP,
-            const std::string& strQ,
-            const std::string& strG,
-            const std::string& strY,
-            const std::string& strJ,
-            const std::string& strSeed,
-            const std::string& strPGenCounter);
-
-    CertificateLoaderResult loadCertificateWithECKEY(
-            const std::string &curveName,
-            const std::string &publicKey);
-
-    /**
-     * converts base64 encoded node to SSL bignum
-     * allocates mem on *ppBigNum, don't forget to free it later with BN_free!
-     * returns conversion status
-     */
-    static bool convertBase64NodeToBigNum(const std::string& strNode,
-            BIGNUM** ppBigNum);
-
-    /*
-     * encodes SSL bignum into base64 octstring
-     * returns conversion status
-     */
-    // KW     static bool convertBigNumToBase64Node(const BIGNUM* pBigNum, std::string& strNode);
-
-    CertificatePtr getCertificatePtr() const
-    {
-        return m_certificatePtr;
-    }
-  private:
-    CertificatePtr m_certificatePtr;
+class CertificateLoader : public VcoreDPL::Noncopyable {
+public:
+       class CertificateLoaderComparator {
+       public:
+               virtual bool compare(X509 *x509cert) = 0;
+               virtual ~CertificateLoaderComparator()
+               {
+               }
+       };
+
+       enum CertificateLoaderResult {
+               NO_ERROR,
+               CERTIFICATE_NOT_FOUND,
+               UNSUPPORTED_CERTIFICATE_FIELD,
+               WRONG_ARGUMENTS,
+               CERTIFICATE_SECURITY_ERROR,                  //!< there are some issues with certificate security (i.e. key too short)
+               UNKNOWN_ERROR
+       };
+
+       CertificateLoader()
+       {
+       }
+
+       virtual ~CertificateLoader()
+       {
+       }
+
+       CertificateLoaderResult loadCertificate(const std::string &storage,
+                                                                                       CertificateLoaderComparator *cmp);
+
+       CertificateLoaderResult loadCertificateBasedOnSubjectName(
+               const std::string &subjectName);
+       CertificateLoaderResult loadCertificateBasedOnExponentAndModulus(
+               const std::string &m_modulus,
+               const std::string  &m_exponent);
+       // KW     CertificateLoaderResult loadCertificateBasedOnIssuerName(const std::string &isserName,
+       // KW       const std::string &serialNumber);
+
+       CertificateLoaderResult loadCertificateFromRawData(
+               const std::string &rawData);
+
+       CertificateLoaderResult loadCertificateBasedOnDSAComponents(
+               const std::string &strP,
+               const std::string &strQ,
+               const std::string &strG,
+               const std::string &strY,
+               const std::string &strJ,
+               const std::string &strSeed,
+               const std::string &strPGenCounter);
+
+       CertificateLoaderResult loadCertificateWithECKEY(
+               const std::string &curveName,
+               const std::string &publicKey);
+
+       /**
+        * converts base64 encoded node to SSL bignum
+        * allocates mem on *ppBigNum, don't forget to free it later with BN_free!
+        * returns conversion status
+        */
+       static bool convertBase64NodeToBigNum(const std::string &strNode,
+                                                                                 BIGNUM **ppBigNum);
+
+       /*
+        * encodes SSL bignum into base64 octstring
+        * returns conversion status
+        */
+       // KW     static bool convertBigNumToBase64Node(const BIGNUM* pBigNum, std::string& strNode);
+
+       CertificatePtr getCertificatePtr() const
+       {
+               return m_certificatePtr;
+       }
+private:
+       CertificatePtr m_certificatePtr;
 };
 } // namespace ValidationCore
 
index 93aa8ed..cdb1954 100644 (file)
@@ -53,14 +53,14 @@ void initialize_res_data(VcoreResponseData *pData)
 
 void initialize_req_data(VcoreRequestData *pData)
 {
-       memset(pData->gname, 0, VCORE_MAX_FILENAME_SIZE+1);
-       memset(pData->common_name, 0, VCORE_MAX_FILENAME_SIZE+1);
-       memset(pData->private_key_gname, 0, VCORE_MAX_FILENAME_SIZE+1);
-       memset(pData->associated_gname, 0, VCORE_MAX_FILENAME_SIZE+1);
+       memset(pData->gname, 0, VCORE_MAX_FILENAME_SIZE + 1);
+       memset(pData->common_name, 0, VCORE_MAX_FILENAME_SIZE + 1);
+       memset(pData->private_key_gname, 0, VCORE_MAX_FILENAME_SIZE + 1);
+       memset(pData->associated_gname, 0, VCORE_MAX_FILENAME_SIZE + 1);
        memset(pData->dataBlock, 0, VCORE_MAX_SEND_DATA_SIZE);
        pData->certStatus = DISABLED;
        pData->storeType = NONE_STORE;
-       pData->reqType = (VcoreRequestType)-1;
+       pData->reqType = (VcoreRequestType) - 1;
        pData->dataBlockLen = 0;
        pData->is_root_app = -1;
        pData->certType = INVALID_DATA;
@@ -74,6 +74,7 @@ CertSvcStoreCertList *createStoreListNode(VcoreCertResponseData *cert)
                return NULL;
 
        node = (CertSvcStoreCertList *)malloc(sizeof(CertSvcStoreCertList));
+
        if (node == NULL)
                return NULL;
 
@@ -108,17 +109,21 @@ int _recv_fixed_lenghth(int sockfd, char *buff, int length)
        int offset = 0;
        int remaining = length;
        int read_len = 0;
-       while(remaining > 0) {
+
+       while (remaining > 0) {
                read_len = recv(sockfd, buff + offset, remaining, 0);
-               if(read_len <= 0)
+
+               if (read_len <= 0)
                        return offset;
+
                remaining -= read_len;
                offset += read_len;
        }
+
        return offset;
 }
 
-VcoreRequestDataset_request_data(
+VcoreRequestData *set_request_data(
        VcoreRequestType reqType,
        CertStoreType storeType,
        int is_root_app,
@@ -131,13 +136,14 @@ VcoreRequestData* set_request_data(
        CertType certType,
        CertStatus certStatus)
 {
-       VcoreRequestData* pReqData = (VcoreRequestData*)malloc(sizeof(VcoreRequestData));
+       VcoreRequestData *pReqData = (VcoreRequestData *)malloc(sizeof(VcoreRequestData));
+
        if (!pReqData) {
                LogError("Failed to malloc VcoreRequestData");
                return NULL;
        }
-       initialize_req_data(pReqData);
 
+       initialize_req_data(pReqData);
        pReqData->reqType = reqType;
        pReqData->storeType = (CertStoreType) storeType;
        pReqData->dataBlockLen = dataLen;
@@ -151,6 +157,7 @@ VcoreRequestData* set_request_data(
                        free(pReqData);
                        return NULL;
                }
+
                strncpy(pReqData->gname, pGroupName, VCORE_MAX_FILENAME_SIZE);
                pReqData->gname[strlen(pGroupName)] = '\0';
        }
@@ -161,6 +168,7 @@ VcoreRequestData* set_request_data(
                        free(pReqData);
                        return NULL;
                }
+
                strncpy(pReqData->common_name, common_name, VCORE_MAX_FILENAME_SIZE);
                pReqData->common_name[strlen(common_name)] = '\0';
        }
@@ -171,6 +179,7 @@ VcoreRequestData* set_request_data(
                        free(pReqData);
                        return NULL;
                }
+
                strncpy(pReqData->private_key_gname, private_key_gname, VCORE_MAX_FILENAME_SIZE);
                pReqData->private_key_gname[strlen(private_key_gname)] = '\0';
        }
@@ -181,6 +190,7 @@ VcoreRequestData* set_request_data(
                        free(pReqData);
                        return NULL;
                }
+
                strncpy(pReqData->associated_gname, associated_gname, VCORE_MAX_FILENAME_SIZE);
                pReqData->associated_gname[strlen(associated_gname)] = '\0';
        }
@@ -191,12 +201,15 @@ VcoreRequestData* set_request_data(
                        free(pReqData);
                        return NULL;
                }
+
                memcpy(pReqData->dataBlock, pData, dataLen);
        }
+
        return pReqData;
 }
 
-VcoreResponseData cert_svc_client_comm(VcoreRequestData *pClientData) {
+VcoreResponseData cert_svc_client_comm(VcoreRequestData *pClientData)
+{
        int sockfd = 0;
        int clientLen = 0;
        int tempSockLen = 0;
@@ -218,52 +231,58 @@ VcoreResponseData cert_svc_client_comm(VcoreRequestData *pClientData) {
        strncpy(clientaddr.sun_path, VCORE_SOCK_PATH, tempSockLen);
        clientaddr.sun_path[tempSockLen] = '\0';
        clientLen = sizeof(clientaddr);
-
        struct timeval timeout;
        timeout.tv_sec = 10;
        timeout.tv_usec = 0;
 
-       if (setsockopt (sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
+       if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
                LogError("Error in Set SO_RCVTIMEO Socket Option");
                recvData.result = VCORE_SOCKET_ERROR;
                goto Error_close_exit;
        }
 
-       if (setsockopt (sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
+       if (setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0) {
                LogError("Error in Set SO_SNDTIMEO Socket Option");
                recvData.result = VCORE_SOCKET_ERROR;
                goto Error_close_exit;
        }
 
-       if (connect(sockfd, (struct sockaddr*)&clientaddr, clientLen) < 0) {
+       if (connect(sockfd, (struct sockaddr *)&clientaddr, clientLen) < 0) {
                LogError("Error in function connect()..");
                recvData.result = VCORE_SOCKET_ERROR;
                goto Error_close_exit;
        }
 
-       if (write(sockfd, (char*)pClientData, sizeof(VcoreRequestData)) < 0) {
+       if (write(sockfd, (char *)pClientData, sizeof(VcoreRequestData)) < 0) {
                LogError("Error in function write()..");
                recvData.result = VCORE_SOCKET_ERROR;
                goto Error_close_exit;
        }
 
-       read_len = _recv_fixed_lenghth(sockfd, (char*)&recvData, sizeof(recvData));
+       read_len = _recv_fixed_lenghth(sockfd, (char *)&recvData, sizeof(recvData));
+
        if (read_len < 0) {
                LogError("Error in function read()..");
                recvData.result = VCORE_SOCKET_ERROR;
                goto Error_close_exit;
        }
 
-       if(recvData.certCount > 0) {
-               recvData.certList = (VcoreCertResponseData *) malloc(recvData.certCount * sizeof(VcoreCertResponseData));
+       if (recvData.certCount > 0) {
+               recvData.certList = (VcoreCertResponseData *) malloc(recvData.certCount * sizeof(
+                                                               VcoreCertResponseData));
+
                if (!recvData.certList) {
                        LogError("Failed to allocate memory");
                        recvData.result = VCORE_SOCKET_ERROR;
                        goto Error_close_exit;
                }
+
                memset(recvData.certList, 0x00, recvData.certCount * sizeof(VcoreCertResponseData));
-               for(i=0; i<recvData.certCount; i++) {
-                       read_len = _recv_fixed_lenghth(sockfd, (char*)(recvData.certList + i), sizeof(VcoreCertResponseData));
+
+               for (i = 0; i < recvData.certCount; i++) {
+                       read_len = _recv_fixed_lenghth(sockfd, (char *)(recvData.certList + i),
+                                                                                  sizeof(VcoreCertResponseData));
+
                        if (read_len < 0) {
                                LogError("Error in function read()..");
                                recvData.result = VCORE_SOCKET_ERROR;
@@ -272,16 +291,22 @@ VcoreResponseData cert_svc_client_comm(VcoreRequestData *pClientData) {
                }
        }
 
-       if(recvData.certBlockCount > 0) {
-               recvData.certBlockList = (ResponseCertBlock *) malloc(recvData.certBlockCount * sizeof(ResponseCertBlock));
+       if (recvData.certBlockCount > 0) {
+               recvData.certBlockList = (ResponseCertBlock *) malloc(recvData.certBlockCount * sizeof(
+                                                                        ResponseCertBlock));
+
                if (!recvData.certBlockList) {
                        LogError("Failed to allocate memory");
                        recvData.result = VCORE_SOCKET_ERROR;
                        goto Error_close_exit;
                }
+
                memset(recvData.certBlockList, 0x00, recvData.certBlockCount * sizeof(ResponseCertBlock));
-               for(i=0; i<recvData.certBlockCount; i++) {
-                       read_len = _recv_fixed_lenghth(sockfd, (char*)(recvData.certBlockList + i), sizeof(ResponseCertBlock));
+
+               for (i = 0; i < recvData.certBlockCount; i++) {
+                       read_len = _recv_fixed_lenghth(sockfd, (char *)(recvData.certBlockList + i),
+                                                                                  sizeof(ResponseCertBlock));
+
                        if (read_len < 0) {
                                LogError("Error in function read()..");
                                recvData.result = VCORE_SOCKET_ERROR;
@@ -292,11 +317,11 @@ VcoreResponseData cert_svc_client_comm(VcoreRequestData *pClientData) {
 
 Error_close_exit:
        close(sockfd);
+
        if (recvData.result == VCORE_SOCKET_ERROR) {
                free(recvData.certList);
                recvData.certList = NULL;
                recvData.certCount = 0;
-
                free(recvData.certBlockList);
                recvData.certBlockList = NULL;
                recvData.certBlockCount = 0;
@@ -319,7 +344,7 @@ int vcore_client_install_certificate_to_store(
        size_t certSize,
        CertType certType)
 {
-       VcoreRequestDatapSendData = NULL;
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -329,17 +354,18 @@ int vcore_client_install_certificate_to_store(
        }
 
        pSendData = set_request_data(
-                       CERTSVC_INSTALL_CERTIFICATE,
-                       storeType,
-                       DISABLED,
-                       gname,
-                       common_name,
-                       private_key_gname,
-                       associated_gname,
-                       certData,
-                       certSize,
-                       certType,
-                       DISABLED);
+                                       CERTSVC_INSTALL_CERTIFICATE,
+                                       storeType,
+                                       DISABLED,
+                                       gname,
+                                       common_name,
+                                       private_key_gname,
+                                       associated_gname,
+                                       certData,
+                                       certSize,
+                                       certType,
+                                       DISABLED);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
@@ -350,9 +376,10 @@ int vcore_client_install_certificate_to_store(
        return recvData.result;
 }
 
-int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is_root_app, const char* gname, CertStatus status) {
-
-       VcoreRequestData* pSendData = NULL;
+int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is_root_app,
+               const char *gname, CertStatus status)
+{
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -361,7 +388,9 @@ int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is
                return CERTSVC_WRONG_ARGUMENT;
        }
 
-       pSendData = set_request_data(CERTSVC_SET_CERTIFICATE_STATUS, storeType, is_root_app, gname, NULL, NULL, NULL, NULL, 0, INVALID_DATA, status);
+       pSendData = set_request_data(CERTSVC_SET_CERTIFICATE_STATUS, storeType, is_root_app, gname, NULL,
+                                                                NULL, NULL, NULL, 0, INVALID_DATA, status);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
@@ -369,13 +398,13 @@ int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is
 
        recvData = cert_svc_client_comm(pSendData);
        free(pSendData);
-
        return recvData.result;
 }
 
-int vcore_client_get_certificate_status_from_store(CertStoreType storeType, const char* gname, CertStatus *status) {
-
-       VcoreRequestData* pSendData = NULL;
+int vcore_client_get_certificate_status_from_store(CertStoreType storeType, const char *gname,
+               CertStatus *status)
+{
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -384,7 +413,9 @@ int vcore_client_get_certificate_status_from_store(CertStoreType storeType, cons
                return CERTSVC_WRONG_ARGUMENT;
        }
 
-       pSendData = set_request_data(CERTSVC_GET_CERTIFICATE_STATUS, storeType, DISABLED, gname, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED);
+       pSendData = set_request_data(CERTSVC_GET_CERTIFICATE_STATUS, storeType, DISABLED, gname, NULL, NULL,
+                                                                NULL, NULL, 0, INVALID_DATA, DISABLED);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
@@ -396,9 +427,10 @@ int vcore_client_get_certificate_status_from_store(CertStoreType storeType, cons
        return recvData.result;
 }
 
-int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char* alias, int *isUnique) {
-
-       VcoreRequestData* pSendData = NULL;
+int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char *alias,
+               int *isUnique)
+{
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -407,7 +439,9 @@ int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char*
                return CERTSVC_WRONG_ARGUMENT;
        }
 
-       pSendData = set_request_data(CERTSVC_CHECK_ALIAS_EXISTS, storeType, DISABLED,alias, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED);
+       pSendData = set_request_data(CERTSVC_CHECK_ALIAS_EXISTS, storeType, DISABLED, alias, NULL, NULL,
+                                                                NULL, NULL, 0, INVALID_DATA, DISABLED);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
@@ -419,10 +453,11 @@ int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char*
        return recvData.result;
 }
 
-int vcore_client_get_certificate_from_store(CertStoreType storeType, const char* gname, char** certData, size_t* certSize, CertType certType) {
-
-       char* outData = NULL;
-       VcoreRequestData* pSendData = NULL;
+int vcore_client_get_certificate_from_store(CertStoreType storeType, const char *gname,
+               char **certData, size_t *certSize, CertType certType)
+{
+       char *outData = NULL;
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
 
        if (!gname || !certData || !certSize) {
@@ -433,9 +468,11 @@ int vcore_client_get_certificate_from_store(CertStoreType storeType, const char*
        initialize_res_data(&recvData);
 
        if (storeType == SYSTEM_STORE)  /* for extracting certificate from system store */
-               pSendData = set_request_data(CERTSVC_EXTRACT_SYSTEM_CERT, storeType, DISABLED, gname, NULL, NULL, NULL, NULL, 0, certType, DISABLED);
+               pSendData = set_request_data(CERTSVC_EXTRACT_SYSTEM_CERT, storeType, DISABLED, gname, NULL, NULL,
+                                                                        NULL, NULL, 0, certType, DISABLED);
        else /* for extracting certificate from other stores */
-               pSendData = set_request_data(CERTSVC_EXTRACT_CERT, storeType, DISABLED, gname, NULL, NULL, NULL, NULL, 0, certType, DISABLED);
+               pSendData = set_request_data(CERTSVC_EXTRACT_CERT, storeType, DISABLED, gname, NULL, NULL, NULL,
+                                                                        NULL, 0, certType, DISABLED);
 
        if (pSendData == NULL) {
                LogError("Failed to set request data.");
@@ -443,21 +480,22 @@ int vcore_client_get_certificate_from_store(CertStoreType storeType, const char*
        }
 
        recvData = cert_svc_client_comm(pSendData);
+
        if (recvData.result < 0) {
                LogError("An error occurred from server side err : " << recvData.result);
                free(pSendData);
                return recvData.result;
        }
+
        free(pSendData);
 
        if (recvData.dataBlockLen > 0 && recvData.dataBlockLen <= VCORE_MAX_RECV_DATA_SIZE) {
-               outData = (char*)malloc(recvData.dataBlockLen + 1);
-               memset(outData, 0x00, recvData.dataBlockLen +1);
+               outData = (char *)malloc(recvData.dataBlockLen + 1);
+               memset(outData, 0x00, recvData.dataBlockLen + 1);
                memcpy(outData, recvData.dataBlock, recvData.dataBlockLen);
                *certData = outData;
                *certSize = recvData.dataBlockLen;
-       }
-       else {
+       } else {
                LogError("revcData length is wrong : " << recvData.dataBlockLen);
                return CERTSVC_WRONG_ARGUMENT;
        }
@@ -465,9 +503,9 @@ int vcore_client_get_certificate_from_store(CertStoreType storeType, const char*
        return recvData.result;
 }
 
-int vcore_client_delete_certificate_from_store(CertStoreType storeType, const char* gname) {
-
-       VcoreRequestDatapSendData = NULL;
+int vcore_client_delete_certificate_from_store(CertStoreType storeType, const char *gname)
+{
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -476,7 +514,9 @@ int vcore_client_delete_certificate_from_store(CertStoreType storeType, const ch
                return CERTSVC_WRONG_ARGUMENT;
        }
 
-       pSendData = set_request_data(CERTSVC_DELETE_CERT, storeType, DISABLED, gname, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED);
+       pSendData = set_request_data(CERTSVC_DELETE_CERT, storeType, DISABLED, gname, NULL, NULL, NULL,
+                                                                NULL, 0, INVALID_DATA, DISABLED);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
@@ -487,27 +527,29 @@ int vcore_client_delete_certificate_from_store(CertStoreType storeType, const ch
        return recvData.result;
 }
 
-int _vcore_client_get_certificate_list_from_store(VcoreRequestType reqType, CertStoreType storeType, int is_root_app,
-                                                                          CertSvcStoreCertList **certList, size_t *length)
+int _vcore_client_get_certificate_list_from_store(VcoreRequestType reqType, CertStoreType storeType,
+               int is_root_app,
+               CertSvcStoreCertList **certList, size_t *length)
 {
        std::unique_ptr<VcoreRequestData, void(*)(void *)> pSendData(set_request_data(
-                       reqType, storeType, is_root_app,
-                       NULL, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED), free);
+                               reqType, storeType, is_root_app,
+                               NULL, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED), free);
+
        if (!pSendData) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
        }
 
        VcoreResponseData recvData;
-
        initialize_res_data(&recvData);
        recvData = cert_svc_client_comm(pSendData.get());
-
        CertSvcStoreCertList *curr = NULL;
        CertSvcStoreCertList *prev = NULL;
        CertSvcStoreCertList *list = NULL;
+
        for (size_t i = 0; i < recvData.certCount; i++) {
                curr = createStoreListNode(recvData.certList + i);
+
                if (curr == NULL) {
                        destroyStoreList(list);
                        free(recvData.certList);
@@ -518,43 +560,45 @@ int _vcore_client_get_certificate_list_from_store(VcoreRequestType reqType, Cert
                        list = curr;
                else
                        prev->next = curr;
+
                prev = curr;
        }
 
        *length = recvData.certCount;
        *certList = list;
-
        LogDebug("get_certificate_list_from_store: result : " << recvData.result);
-
        free(recvData.certList);
-
        return recvData.result;
 }
 
-int vcore_client_get_certificate_list_from_store(CertStoreType storeType, int is_root_app, 
-                                                                          CertSvcStoreCertList** certList, size_t *length)
+int vcore_client_get_certificate_list_from_store(CertStoreType storeType, int is_root_app,
+               CertSvcStoreCertList **certList, size_t *length)
 {
-       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_CERTIFICATE_LIST, storeType, is_root_app,
-                                                                          certList, length);
+       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_CERTIFICATE_LIST, storeType,
+                       is_root_app,
+                       certList, length);
 }
 
-int vcore_client_get_root_certificate_list_from_store(CertStoreType storeType,  
-                                                                          CertSvcStoreCertList **certList, size_t *length)
+int vcore_client_get_root_certificate_list_from_store(CertStoreType storeType,
+               CertSvcStoreCertList **certList, size_t *length)
 {
-       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_ROOT_CERTIFICATE_LIST, storeType, 0,
-                                                                          certList, length);
+       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_ROOT_CERTIFICATE_LIST, storeType,
+                       0,
+                       certList, length);
 }
 
-int vcore_client_get_end_user_certificate_list_from_store(CertStoreType storeType,  
-                                                                          CertSvcStoreCertList **certList, size_t *length)
+int vcore_client_get_end_user_certificate_list_from_store(CertStoreType storeType,
+               CertSvcStoreCertList **certList, size_t *length)
 {
-       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_USER_CERTIFICATE_LIST, storeType, 0,
-                                                                          certList, length);
+       return _vcore_client_get_certificate_list_from_store(CERTSVC_GET_USER_CERTIFICATE_LIST, storeType,
+                       0,
+                       certList, length);
 }
 
-int vcore_client_get_certificate_alias_from_store(CertStoreType storeType, const char *gname, char **alias)
+int vcore_client_get_certificate_alias_from_store(CertStoreType storeType, const char *gname,
+               char **alias)
 {
-       VcoreRequestDatapSendData = NULL;
+       VcoreRequestData *pSendData = NULL;
        VcoreResponseData recvData;
        initialize_res_data(&recvData);
 
@@ -563,32 +607,32 @@ int vcore_client_get_certificate_alias_from_store(CertStoreType storeType, const
                return CERTSVC_WRONG_ARGUMENT;
        }
 
-       pSendData = set_request_data(CERTSVC_GET_CERTIFICATE_ALIAS, storeType, DISABLED, gname, NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED);
+       pSendData = set_request_data(CERTSVC_GET_CERTIFICATE_ALIAS, storeType, DISABLED, gname, NULL, NULL,
+                                                                NULL, NULL, 0, INVALID_DATA, DISABLED);
+
        if (pSendData == NULL) {
                LogError("Failed to set request data");
                return CERTSVC_WRONG_ARGUMENT;
        }
 
        recvData = cert_svc_client_comm(pSendData);
-
        *alias = strndup(recvData.common_name, sizeof(recvData.common_name));
        free(pSendData);
        return recvData.result;
 }
 
-int vcore_client_load_certificates_from_store(CertStoreType storeType, const char *gname, char ***certs, size_t *ncerts)
+int vcore_client_load_certificates_from_store(CertStoreType storeType, const char *gname,
+               char ***certs, size_t *ncerts)
 {
        VcoreResponseData recvData;
-       ResponseCertBlockcert = NULL;
+       ResponseCertBlock *cert = NULL;
        size_t i = 0;
        size_t ncerts_out = 0;
        char **certs_out = NULL;
-
        initialize_res_data(&recvData);
-
        std::unique_ptr<VcoreRequestData, void(*)(void *)> pSendData(set_request_data(
-                       CERTSVC_LOAD_CERTIFICATES, storeType, DISABLED, gname,
-                       NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED), free);
+                               CERTSVC_LOAD_CERTIFICATES, storeType, DISABLED, gname,
+                               NULL, NULL, NULL, NULL, 0, INVALID_DATA, DISABLED), free);
 
        if (!pSendData) {
                LogError("Failed to set request data");
@@ -596,18 +640,21 @@ int vcore_client_load_certificates_from_store(CertStoreType storeType, const cha
        }
 
        recvData = cert_svc_client_comm(pSendData.get());
+
        if (recvData.result != CERTSVC_SUCCESS) {
                LogError("Failed to CERTSVC_LOAD_CERTIFICATES. server retcode : " << recvData.result);
                return recvData.result;
        }
 
        ncerts_out = recvData.certBlockCount;
+
        if (ncerts_out == 0) {
                LogError("No certificates exist with gname[" << gname << "] in store[" << storeType << "]");
                return CERTSVC_ALIAS_DOES_NOT_EXIST;
        }
 
        certs_out = (char **)malloc((ncerts_out + 1) * sizeof(char *));
+
        if (certs_out == NULL)
                return CERTSVC_BAD_ALLOC;
 
@@ -621,8 +668,6 @@ int vcore_client_load_certificates_from_store(CertStoreType storeType, const cha
 
        *certs = certs_out;
        *ncerts = ncerts_out;
-
        free(recvData.certBlockList);
-
        return recvData.result;
 }
index 7a35789..2b64b95 100644 (file)
@@ -41,73 +41,84 @@ extern "C" {
 #define VCORE_PKEY_TEMP_PATH        "/tmp/tmpData"
 
 typedef enum {
-    CERTSVC_EXTRACT_CERT,
-    CERTSVC_EXTRACT_SYSTEM_CERT,
-    CERTSVC_DELETE_CERT,
-    CERTSVC_INSTALL_CERTIFICATE,
-    CERTSVC_GET_CERTIFICATE_STATUS,
-    CERTSVC_SET_CERTIFICATE_STATUS,
-    CERTSVC_CHECK_ALIAS_EXISTS,
-    CERTSVC_GET_CERTIFICATE_LIST,
-    CERTSVC_GET_CERTIFICATE_ALIAS,
-    CERTSVC_GET_USER_CERTIFICATE_LIST,
-    CERTSVC_GET_ROOT_CERTIFICATE_LIST,
-    CERTSVC_LOAD_CERTIFICATES,
+       CERTSVC_EXTRACT_CERT,
+       CERTSVC_EXTRACT_SYSTEM_CERT,
+       CERTSVC_DELETE_CERT,
+       CERTSVC_INSTALL_CERTIFICATE,
+       CERTSVC_GET_CERTIFICATE_STATUS,
+       CERTSVC_SET_CERTIFICATE_STATUS,
+       CERTSVC_CHECK_ALIAS_EXISTS,
+       CERTSVC_GET_CERTIFICATE_LIST,
+       CERTSVC_GET_CERTIFICATE_ALIAS,
+       CERTSVC_GET_USER_CERTIFICATE_LIST,
+       CERTSVC_GET_ROOT_CERTIFICATE_LIST,
+       CERTSVC_LOAD_CERTIFICATES,
 } VcoreRequestType;
 
 typedef struct {
-    VcoreRequestType reqType;
-    CertStoreType    storeType;
-    char             gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for gname */
-    char             common_name[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for common_name */
-    char             private_key_gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for private_key_gname */
-    char             associated_gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for associated_gname */
-    char             dataBlock[VCORE_MAX_SEND_DATA_SIZE];    /* for cert & key buffer */
-    size_t           dataBlockLen;
-    CertStatus       certStatus;
-    int              is_root_app;
-    CertType         certType;
+       VcoreRequestType reqType;
+       CertStoreType    storeType;
+       char             gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for gname */
+       char             common_name[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for common_name */
+       char             private_key_gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for private_key_gname */
+       char             associated_gname[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /* for associated_gname */
+       char             dataBlock[VCORE_MAX_SEND_DATA_SIZE];    /* for cert & key buffer */
+       size_t           dataBlockLen;
+       CertStatus       certStatus;
+       int              is_root_app;
+       CertType         certType;
 } VcoreRequestData;
 
 typedef struct {
-    char             gname[VCORE_MAX_FILENAME_SIZE * 2 + 1];
-    char             title[VCORE_MAX_FILENAME_SIZE * 2 + 1];
-    CertStatus       status;
-    CertStoreType    storeType;
+       char             gname[VCORE_MAX_FILENAME_SIZE * 2 + 1];
+       char             title[VCORE_MAX_FILENAME_SIZE * 2 + 1];
+       CertStatus       status;
+       CertStoreType    storeType;
 } VcoreCertResponseData;
 
 
 typedef struct {
-    char             dataBlock[VCORE_MAX_RECV_DATA_SIZE];
-    size_t           dataBlockLen;
+       char             dataBlock[VCORE_MAX_RECV_DATA_SIZE];
+       size_t           dataBlockLen;
 } ResponseCertBlock;
 
 typedef struct {
-    char                   dataBlock[VCORE_MAX_RECV_DATA_SIZE];
-    size_t                 dataBlockLen;
-    CertStatus             certStatus;
-    char                   common_name[VCORE_MAX_FILENAME_SIZE* 2 + 1]; /*for common_name*/
-    int                    result;
-    int                    isAliasUnique;
-    size_t                 certCount;
-    VcoreCertResponseData* certList;
-    size_t                 certBlockCount;
-    ResponseCertBlock*     certBlockList; // array
+       char                   dataBlock[VCORE_MAX_RECV_DATA_SIZE];
+       size_t                 dataBlockLen;
+       CertStatus             certStatus;
+       char                   common_name[VCORE_MAX_FILENAME_SIZE * 2 + 1]; /*for common_name*/
+       int                    result;
+       int                    isAliasUnique;
+       size_t                 certCount;
+       VcoreCertResponseData *certList;
+       size_t                 certBlockCount;
+       ResponseCertBlock     *certBlockList; // array
 } VcoreResponseData;
 
 
 
-int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is_root_app, const char *gname, CertStatus status);
-int vcore_client_get_certificate_status_from_store(CertStoreType storeType, const char *gname, CertStatus *status);
-int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char *alias, int *isUnique);
-int vcore_client_install_certificate_to_store(CertStoreType storeType, const char *gname, const char *common_name, const char *private_key_gname, const char *associated_gname, const char *dataBlock, size_t dataBlockLen, CertType certType);
-int vcore_client_get_certificate_from_store(CertStoreType storeType, const char *gname, char **certData, size_t *certSize, CertType certType);
+int vcore_client_set_certificate_status_to_store(CertStoreType storeType, int is_root_app,
+               const char *gname, CertStatus status);
+int vcore_client_get_certificate_status_from_store(CertStoreType storeType, const char *gname,
+               CertStatus *status);
+int vcore_client_check_alias_exist_in_store(CertStoreType storeType, const char *alias,
+               int *isUnique);
+int vcore_client_install_certificate_to_store(CertStoreType storeType, const char *gname,
+               const char *common_name, const char *private_key_gname, const char *associated_gname,
+               const char *dataBlock, size_t dataBlockLen, CertType certType);
+int vcore_client_get_certificate_from_store(CertStoreType storeType, const char *gname,
+               char **certData, size_t *certSize, CertType certType);
 int vcore_client_delete_certificate_from_store(CertStoreType storeType, const char *gname);
-int vcore_client_get_certificate_list_from_store(CertStoreType storeType, int is_root_app, CertSvcStoreCertList **certList, size_t *length);
-int vcore_client_get_root_certificate_list_from_store(CertStoreType storeType, CertSvcStoreCertList **certList, size_t *length);
-int vcore_client_get_end_user_certificate_list_from_store(CertStoreType storeType, CertSvcStoreCertList **certList, size_t *length);
-int vcore_client_get_certificate_alias_from_store(CertStoreType storeType, const char *gname, char **alias);
-int vcore_client_load_certificates_from_store(CertStoreType storeType, const char *gname, char ***certs, size_t *ncerts);
+int vcore_client_get_certificate_list_from_store(CertStoreType storeType, int is_root_app,
+               CertSvcStoreCertList **certList, size_t *length);
+int vcore_client_get_root_certificate_list_from_store(CertStoreType storeType,
+               CertSvcStoreCertList **certList, size_t *length);
+int vcore_client_get_end_user_certificate_list_from_store(CertStoreType storeType,
+               CertSvcStoreCertList **certList, size_t *length);
+int vcore_client_get_certificate_alias_from_store(CertStoreType storeType, const char *gname,
+               char **alias);
+int vcore_client_load_certificates_from_store(CertStoreType storeType, const char *gname,
+               char ***certs, size_t *ncerts);
 
 #ifdef __cplusplus
 }
index 85ded0e..7a2130f 100644 (file)
@@ -26,8 +26,7 @@
 
 namespace ValidationCore {
 
-class CryptoInit : public VcoreDPL::Noncopyable
-{
+class CryptoInit : public VcoreDPL::Noncopyable {
 public:
        CryptoInit();
        virtual ~CryptoInit();
index 82b947e..ae1dc87 100644 (file)
 
 namespace {
 
-typedef std::unique_ptr<X509_STORE_CTX, std::function<void(X509_STORE_CTX*)>> X509_STORE_CTX_PTR;
-typedef std::unique_ptr<STACK_OF(X509), std::function<void(STACK_OF(X509)*)>> X509_STACK_PTR;
-typedef std::unique_ptr<X509_STORE,     std::function<void(X509_STORE*)>> X509_STORE_PTR;
-typedef std::unique_ptr<SSL_CTX,        std::function<void(SSL_CTX*)>> SSL_CTX_PTR;
-typedef std::unique_ptr<BIO,            std::function<void(BIO*)>> BIO_PTR;
-typedef std::unique_ptr<char,           std::function<void(void*)>> RAIIstr;
-typedef std::unique_ptr<OCSP_REQUEST,   std::function<void(OCSP_REQUEST*)>> OCSP_REQUEST_PTR;
-typedef std::unique_ptr<OCSP_RESPONSE,  std::function<void(OCSP_RESPONSE*)>> OCSP_RESPONSE_PTR;
-typedef std::unique_ptr<OCSP_BASICRESP, std::function<void(OCSP_BASICRESP*)>> OCSP_BASICRESP_PTR;
+typedef std::unique_ptr<X509_STORE_CTX, std::function<void(X509_STORE_CTX *)>> X509_STORE_CTX_PTR;
+typedef std::unique_ptr<STACK_OF(X509), std::function<void(STACK_OF(X509) *)>> X509_STACK_PTR;
+typedef std::unique_ptr<X509_STORE,     std::function<void(X509_STORE *)>> X509_STORE_PTR;
+typedef std::unique_ptr<SSL_CTX,        std::function<void(SSL_CTX *)>> SSL_CTX_PTR;
+typedef std::unique_ptr<BIO,            std::function<void(BIO *)>> BIO_PTR;
+typedef std::unique_ptr<char,           std::function<void(void *)>> RAIIstr;
+typedef std::unique_ptr<OCSP_REQUEST,   std::function<void(OCSP_REQUEST *)>> OCSP_REQUEST_PTR;
+typedef std::unique_ptr<OCSP_RESPONSE,  std::function<void(OCSP_RESPONSE *)>> OCSP_RESPONSE_PTR;
+typedef std::unique_ptr<OCSP_BASICRESP, std::function<void(OCSP_BASICRESP *)>> OCSP_BASICRESP_PTR;
 
 inline X509_STACK_PTR create_x509_stack()
 {
-       return X509_STACK_PTR(sk_X509_new_null(), [](STACK_OF(X509) *stack) { sk_X509_free(stack); });
+       return X509_STACK_PTR(sk_X509_new_null(), [](STACK_OF(X509) * stack) {
+               sk_X509_free(stack);
+       });
 }
 
 inline X509_STORE_CTX_PTR create_x509_store_ctx()
@@ -69,7 +71,9 @@ inline SSL_CTX_PTR create_SSL_CTX()
 
 inline RAIIstr create_RAIIstr(char *str)
 {
-       return RAIIstr(str, [](void *ptr) { OPENSSL_free(ptr); });
+       return RAIIstr(str, [](void *ptr) {
+               OPENSSL_free(ptr);
+       });
 }
 
 inline BIO_PTR create_BIO(BIO *bio)
@@ -99,10 +103,11 @@ void BIO_write_and_free(BIO *bio)
 
        std::vector<char> message(1024);
        int size = BIO_read(bio, message.data(), message.size());
+
        if (size > 0) {
                message.resize(size);
                LogError("OCSP error description ["
-                       << std::string(message.begin(), message.end()) << "]");
+                                << std::string(message.begin(), message.end()) << "]");
        }
 
        BIO_free_all(bio);
@@ -127,35 +132,31 @@ Ocsp::Result checkInternal(
 {
        /* initialize openssl library */
        CryptoInitSingleton::Instance();
-
        BIO_PTR bioLogger(BIO_new(BIO_s_mem()), BIO_write_and_free);
-
        X509 *cert = _cert->getX509();
        X509 *issuer = _issuer->getX509();
        std::string ocspUrl = _cert->getOCSPURL();
 
        if (ocspUrl.empty())
                VcoreThrowMsg(Ocsp::Exception::OcspUnsupported,
-                       "Certificate[" << _cert->getOneLine() << "] doesn't provide OCSP extension");
+                                         "Certificate[" << _cert->getOneLine() << "] doesn't provide OCSP extension");
 
        char *_ocspUrl = new char[ocspUrl.length() + 1];
+
        if (_ocspUrl == NULL)
                VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to alloc memory");
-       strncpy(_ocspUrl, ocspUrl.c_str(), ocspUrl.length() + 1);
 
+       strncpy(_ocspUrl, ocspUrl.c_str(), ocspUrl.length() + 1);
        char *_host = NULL;
        char *_port = NULL;
        char *_path = NULL;
        int use_ssl = 0;
-
        int temp = OCSP_parse_url(_ocspUrl, &_host, &_port, &_path, &use_ssl);
-
        LogDebug("ocspUrl[" << _ocspUrl
-               << "] host[" << _host
-               << "] port[" << _port
-               << "] path[" << _path
-               << "] use_ssl[" << use_ssl << "]");
-
+                        << "] host[" << _host
+                        << "] port[" << _port
+                        << "] path[" << _path
+                        << "] use_ssl[" << use_ssl << "]");
        delete []_ocspUrl;
 
        if (temp == 0) {
@@ -166,8 +167,8 @@ Ocsp::Result checkInternal(
        RAIIstr host = create_RAIIstr(_host);
        RAIIstr port = create_RAIIstr(_port);
        RAIIstr path = create_RAIIstr(_path);
-
        BIO_PTR cbio = create_BIO(BIO_new_connect(host.get()));
+
        if (cbio.get() == NULL) {
                ERR_print_errors(bioLogger.get());
                VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to create bio connect");
@@ -178,20 +179,22 @@ Ocsp::Result checkInternal(
 
        if (use_ssl == 1) {
                SSL_CTX_PTR ssl_ctx = create_SSL_CTX();
+
                if (ssl_ctx.get() == NULL) {
                        ERR_print_errors(bioLogger.get());
                        VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to SSL_CTX_new");
                }
 
                SSL_CTX_set_mode(ssl_ctx.get(), SSL_MODE_AUTO_RETRY);
-
                BIO_PTR sbio = create_BIO(BIO_new_ssl(ssl_ctx.get(), 1));
+
                if (sbio.get() == NULL) {
                        ERR_print_errors(bioLogger.get());
                        VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to BIO_new_ssl");
                }
 
                cbio.reset(BIO_push(sbio.get(), cbio.get()));
+
                if (cbio.get() == NULL) {
                        ERR_print_errors(bioLogger.get());
                        VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to BIO_push");
@@ -204,12 +207,14 @@ Ocsp::Result checkInternal(
        }
 
        OCSP_REQUEST_PTR req = create_OCSP_REQUEST();
+
        if (req.get() == NULL) {
                ERR_print_errors(bioLogger.get());
                VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to OCSP_REQUEST_new");
        }
 
        OCSP_CERTID *certid = OCSP_cert_to_id(NULL, cert, issuer);
+
        if (certid == NULL) {
                ERR_print_errors(bioLogger.get());
                VcoreThrowMsg(Ocsp::Exception::UnknownError, "Failed to OCSP_cert_to_id");
@@ -221,7 +226,7 @@ Ocsp::Result checkInternal(
        }
 
        OCSP_RESPONSE_PTR resp =
-                       create_OCSP_RESPONSE(OCSP_sendreq_bio(cbio.get(), path.get(), req.get()));
+               create_OCSP_RESPONSE(OCSP_sendreq_bio(cbio.get(), path.get(), req.get()));
 
        if (resp.get() == NULL) {
                ERR_print_errors(bioLogger.get());
@@ -234,16 +239,19 @@ Ocsp::Result checkInternal(
        }
 
        OCSP_BASICRESP_PTR basicResp =
-                       create_OCSP_BASICRESP(OCSP_response_get1_basic(resp.get()));
+               create_OCSP_BASICRESP(OCSP_response_get1_basic(resp.get()));
+
        if (basicResp.get() == NULL) {
                ERR_print_errors(bioLogger.get());
                VcoreThrowMsg(Ocsp::Exception::InvalidResponse, "Failed to OCSP_response_get1_basic");
        }
 
        X509_STORE_PTR trustedStore = create_x509_store();
+
        if (trustedCerts.get()) {
                for (int idx = 0; idx < sk_X509_num(trustedCerts.get()); idx++)
                        X509_STORE_add_cert(trustedStore.get(), sk_X509_value(trustedCerts.get(), idx));
+
                X509_STORE_add_cert(trustedStore.get(), issuer);
        }
 
@@ -262,14 +270,15 @@ Ocsp::Result checkInternal(
        ASN1_GENERALIZEDTIME *rev = NULL;
        ASN1_GENERALIZEDTIME *thisupd = NULL;
        ASN1_GENERALIZEDTIME *nextupd = NULL;
+
        if (OCSP_resp_find_status(
-                       basicResp.get(),
-                       certid,
-                       &ocspStatus,
-                       &reason,
-                       &rev,
-                       &thisupd,
-                       &nextupd) == 0) {
+                               basicResp.get(),
+                               certid,
+                               &ocspStatus,
+                               &reason,
+                               &rev,
+                               &thisupd,
+                               &nextupd) == 0) {
                ERR_print_errors(bioLogger.get());
                VcoreThrowMsg(Ocsp::Exception::InvalidResponse, "Failed to OCSP_resp_find_status");
        }
@@ -283,7 +292,7 @@ Ocsp::Result checkInternal(
                VcoreThrowMsg(Ocsp::Exception::InvalidResponse, "Unknown ocsp status.");
 
        return ocspStatus == V_OCSP_CERTSTATUS_GOOD ?
-               Ocsp::Result::GOOD : Ocsp::Result::REVOKED;
+                  Ocsp::Result::GOOD : Ocsp::Result::REVOKED;
 }
 
 Ocsp::Result Ocsp::check(const SignatureData &data)
@@ -292,14 +301,15 @@ Ocsp::Result Ocsp::check(const SignatureData &data)
                VcoreThrowMsg(Exception::InvalidParam, "cert list should be sorted");
 
        const CertificateList &certChain = data.getCertList();
+
        if (certChain.size() < 3)
                VcoreThrowMsg(Exception::InvalidParam, "cert chain is too short");
 
        X509_STACK_PTR trustedCerts = create_x509_stack();
-
        auto it = certChain.cbegin();
        it++;
        it++;
+
        /* don't trust the user cert and the first intermediate CA cert */
        for (; it != certChain.cend(); it++) {
                const auto &cert = it->get();
@@ -313,6 +323,7 @@ Ocsp::Result Ocsp::check(const SignatureData &data)
        auto itCert = certChain.cbegin();
        auto itIssuer = certChain.cbegin();
        itIssuer++;
+
        /* check ocsp except except self-signed root CA cert */
        for (; itIssuer != certChain.end(); itCert++, itIssuer++) {
                if (checkInternal(*itCert, *itIssuer, trustedCerts) == Result::REVOKED)
index 8e7b507..02ff6ed 100644 (file)
 
 namespace ValidationCore {
 namespace ParserSchemaException {
-    VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-    VCORE_DECLARE_EXCEPTION_TYPE(Base, XmlReaderError);
-    VCORE_DECLARE_EXCEPTION_TYPE(Base, CertificateLoaderError);
-    VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedAlgorithm);
-    VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedValue);
+VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+VCORE_DECLARE_EXCEPTION_TYPE(Base, XmlReaderError);
+VCORE_DECLARE_EXCEPTION_TYPE(Base, CertificateLoaderError);
+VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedAlgorithm);
+VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedValue);
 }
 
 template<typename ParserType, typename DataType>
 class ParserSchema {
 public:
 
-    struct TagDescription {
-        TagDescription(const std::string &tag,
-                const std::string & xmlNamespace) :
-            tagName(tag),
-            namespaceUri(xmlNamespace)
-        {
-        }
-
-        std::string tagName;
-        std::string namespaceUri;
-
-        bool operator<(const TagDescription &second) const
-        {
-            if (tagName < second.tagName) {
-                return true;
-            }
-            if (tagName > second.tagName) {
-                return false;
-            }
-            if (namespaceUri < second.namespaceUri) {
-                return true;
-            }
-            return false;
-        }
-    };
-
-
-    ParserSchema(ParserType *parser)
-      : m_functions(parser) {}
-
-    virtual ~ParserSchema() {}
-
-    void initialize(
-            const std::string &filename,
-            bool defaultArgs,
-            SaxReader::ValidationType valType,
-            const std::string &xmlschema)
-    {
-        VcoreTry
-        {
-            m_reader.initialize(filename, defaultArgs, valType, xmlschema);
-        }
-        VcoreCatch (SaxReader::Exception::Base)
-        {
-            VcoreReThrowMsg(ParserSchemaException::XmlReaderError, "XmlReaderError");
-        }
-    }
-
-    void deinitialize()
-    {
-        m_reader.deinitialize();
-    }
-
-    void read(DataType &dataContainer)
-    {
-        VcoreTry
-        {
-            while (m_reader.next()) {
-                switch (m_reader.type()) {
-                case SaxReader::NODE_BEGIN:
-                    beginNode(dataContainer);
-                    break;
-                case SaxReader::NODE_END:
-                    endNode(dataContainer);
-                    break;
-                case SaxReader::NODE_TEXT:
-                    textNode(dataContainer);
-                    break;
-                default:
-                    break;
-                }
-            }
-        }
-        VcoreCatch (SaxReader::Exception::Base)
-        {
-            VcoreReThrowMsg(ParserSchemaException::XmlReaderError, "XmlReaderError");
-        }
-    }
-
-    typedef void (ParserType::*FunctionPtr)(DataType &data);
-    typedef std::map<TagDescription, FunctionPtr> FunctionMap;
-
-    void addBeginTagCallback(
-            const std::string &tag,
-            const std::string &namespaceUri,
-            FunctionPtr function)
-    {
-        TagDescription desc(tag, namespaceUri);
-        m_beginFunctionMap[desc] = function;
-    }
-
-    void addEndTagCallback(
-            const std::string &tag,
-            const std::string &namespaceUri,
-            FunctionPtr function)
-    {
-        TagDescription desc(tag, namespaceUri);
-        m_endFunctionMap[desc] = function;
-    }
-
-    SaxReader& getReader()
-    {
-        return m_reader;
-    }
-
-    std::string& getText()
-    {
-        return m_textNode;
-    }
+       struct TagDescription {
+               TagDescription(const std::string &tag,
+                                          const std::string &xmlNamespace) :
+                       tagName(tag),
+                       namespaceUri(xmlNamespace)
+               {
+               }
+
+               std::string tagName;
+               std::string namespaceUri;
+
+               bool operator<(const TagDescription &second) const
+               {
+                       if (tagName < second.tagName) {
+                               return true;
+                       }
+
+                       if (tagName > second.tagName) {
+                               return false;
+                       }
+
+                       if (namespaceUri < second.namespaceUri) {
+                               return true;
+                       }
+
+                       return false;
+               }
+       };
+
+
+       ParserSchema(ParserType *parser)
+               : m_functions(parser) {}
+
+       virtual ~ParserSchema() {}
+
+       void initialize(
+               const std::string &filename,
+               bool defaultArgs,
+               SaxReader::ValidationType valType,
+               const std::string &xmlschema)
+       {
+               VcoreTry {
+                       m_reader.initialize(filename, defaultArgs, valType, xmlschema);
+               }
+               VcoreCatch(SaxReader::Exception::Base) {
+                       VcoreReThrowMsg(ParserSchemaException::XmlReaderError, "XmlReaderError");
+               }
+       }
+
+       void deinitialize()
+       {
+               m_reader.deinitialize();
+       }
+
+       void read(DataType &dataContainer)
+       {
+               VcoreTry {
+                       while (m_reader.next())
+                       {
+                               switch (m_reader.type()) {
+                               case SaxReader::NODE_BEGIN:
+                                       beginNode(dataContainer);
+                                       break;
+
+                               case SaxReader::NODE_END:
+                                       endNode(dataContainer);
+                                       break;
+
+                               case SaxReader::NODE_TEXT:
+                                       textNode(dataContainer);
+                                       break;
+
+                               default:
+                                       break;
+                               }
+                       }
+               }
+               VcoreCatch(SaxReader::Exception::Base) {
+                       VcoreReThrowMsg(ParserSchemaException::XmlReaderError, "XmlReaderError");
+               }
+       }
+
+       typedef void (ParserType::*FunctionPtr)(DataType &data);
+       typedef std::map<TagDescription, FunctionPtr> FunctionMap;
+
+       void addBeginTagCallback(
+               const std::string &tag,
+               const std::string &namespaceUri,
+               FunctionPtr function)
+       {
+               TagDescription desc(tag, namespaceUri);
+               m_beginFunctionMap[desc] = function;
+       }
+
+       void addEndTagCallback(
+               const std::string &tag,
+               const std::string &namespaceUri,
+               FunctionPtr function)
+       {
+               TagDescription desc(tag, namespaceUri);
+               m_endFunctionMap[desc] = function;
+       }
+
+       SaxReader &getReader()
+       {
+               return m_reader;
+       }
+
+       std::string &getText()
+       {
+               return m_textNode;
+       }
 
 protected:
-    void beginNode(DataType &dataContainer)
-    {
-        TagDescription desc(m_reader.name(), m_reader.namespaceURI());
-        FunctionPtr fun = m_beginFunctionMap[desc];
-
-        if (fun == 0) {
-            return;
-        }
-
-        (m_functions->*fun)(dataContainer);
-    }
-
-    void endNode(DataType &dataContainer)
-    {
-        TagDescription desc(m_reader.name(), m_reader.namespaceURI());
-        FunctionPtr fun = m_endFunctionMap[desc];
-
-        if (fun == 0) {
-            return;
-        }
-
-        (m_functions->*fun)(dataContainer);
-    }
-
-    void textNode(DataType &dataContainer)
-    {
-        (void)dataContainer;
-        m_textNode = m_reader.value();
-    }
-
-    ParserType *m_functions;
-    SaxReader m_reader;
-    FunctionMap m_beginFunctionMap;
-    FunctionMap m_endFunctionMap;
-
-    // temporary values require due parsing textNode
-    std::string m_textNode;
+       void beginNode(DataType &dataContainer)
+       {
+               TagDescription desc(m_reader.name(), m_reader.namespaceURI());
+               FunctionPtr fun = m_beginFunctionMap[desc];
+
+               if (fun == 0) {
+                       return;
+               }
+
+               (m_functions->*fun)(dataContainer);
+       }
+
+       void endNode(DataType &dataContainer)
+       {
+               TagDescription desc(m_reader.name(), m_reader.namespaceURI());
+               FunctionPtr fun = m_endFunctionMap[desc];
+
+               if (fun == 0) {
+                       return;
+               }
+
+               (m_functions->*fun)(dataContainer);
+       }
+
+       void textNode(DataType &dataContainer)
+       {
+               (void)dataContainer;
+               m_textNode = m_reader.value();
+       }
+
+       ParserType *m_functions;
+       SaxReader m_reader;
+       FunctionMap m_beginFunctionMap;
+       FunctionMap m_endFunctionMap;
+
+       // temporary values require due parsing textNode
+       std::string m_textNode;
 };
 
 } // namespace ValidationCore
index 98aa0b9..e722bfc 100644 (file)
@@ -36,6 +36,7 @@ PluginHandler::PluginHandler()
        , m_fail(true)
 {
        m_dlhandle = dlopen(PLUGIN_PATH.c_str(), RTLD_NOW);
+
        if (!m_dlhandle) {
                LogInfo("Plugin library has not been found/opened : " << PLUGIN_PATH);
                return;
@@ -43,28 +44,30 @@ PluginHandler::PluginHandler()
 
        CreateValidatorPlugin_t createFun =
                reinterpret_cast<CreateValidatorPlugin_t>(dlsym(m_dlhandle, "create"));
+
        if (!createFun) {
                LogError("create symbol cannot found from " << PLUGIN_PATH
-                       << ". dlerror : " << dlerror());
+                                << ". dlerror : " << dlerror());
                return;
        }
 
        m_destroy =
                reinterpret_cast<DestroyValidatorPlugin_t>(dlsym(m_dlhandle, "destroy"));
+
        if (!m_destroy) {
                LogError("destroy symbole cannot found from " << PLUGIN_PATH
-                       << ". dlerror : " << dlerror());
+                                << ". dlerror : " << dlerror());
                return;
        }
 
        m_plugin = createFun();
+
        if (!m_plugin) {
                LogError("cannot create plugin with create func.");
                return;
        }
 
        LogDebug("create plugin with createFun success.");
-
        m_fail = false;
 }
 
index 509ba1b..b4f4713 100644 (file)
@@ -52,231 +52,242 @@ const char MARK_ENCODED_CHAR = '%';
 
 namespace ValidationCore {
 
-class ReferenceValidator::Impl
-{
-  public:
-    Impl(const std::string &dirpath)
-      : m_dirpath(dirpath)
-      , m_signatureRegexp(REGEXP_DISTRIBUTOR_SIGNATURE)
-    {}
-
-    virtual ~Impl(){}
-
-    Result checkReferences(const SignatureData &signatureData)
-    {
-        const ReferenceSet &refSet = signatureData.getReferenceSet();
-        ReferenceSet refDecoded;
-
-        try {
-            for (auto it = refSet.begin(); it != refSet.end(); ++it) {
-                if (std::string::npos != it->find(MARK_ENCODED_CHAR))
-                    refDecoded.insert(decodeProcent(*it));
-                else
-                    refDecoded.insert(*it);
-            }
-        } catch (Result &) {
-            return ERROR_DECODING_URL;
-        }
-        return dfsCheckDirectories(
-            refDecoded,
-            std::string(),
-            signatureData.isAuthorSignature());
-    }
-
-    Result checkOutbound(const std::string &linkPath, const std::string &appPath)
-    {
-        char resolvedPath[PATH_MAX];
-        if (realpath((appPath + "/" + linkPath).c_str(), resolvedPath) == NULL)
-            return ERROR_READING_LNK;
-
-        std::string linkRealPath(resolvedPath);
-        if (linkRealPath.compare(0, appPath.size(), appPath) == 0)
-            return NO_ERROR;
-        else
-            return ERROR_OUTBOUND_LNK;
-    }
-
-  private:
-    int hexToInt(char hex);
-    std::string decodeProcent(const std::string &path);
-
-    Result dfsCheckDirectories(
-        const ReferenceSet &referenceSet,
-        const std::string &directory,
-        bool isAuthorSignature);
-
-    inline bool isDistributorSignature(const char *cstring) const
-    {
-        return m_signatureRegexp.FullMatch(cstring);
-    }
-
-    std::string m_dirpath;
-    pcrecpp::RE m_signatureRegexp;
+class ReferenceValidator::Impl {
+public:
+       Impl(const std::string &dirpath)
+               : m_dirpath(dirpath)
+               , m_signatureRegexp(REGEXP_DISTRIBUTOR_SIGNATURE)
+       {}
+
+       virtual ~Impl() {}
+
+       Result checkReferences(const SignatureData &signatureData)
+       {
+               const ReferenceSet &refSet = signatureData.getReferenceSet();
+               ReferenceSet refDecoded;
+
+               try {
+                       for (auto it = refSet.begin(); it != refSet.end(); ++it) {
+                               if (std::string::npos != it->find(MARK_ENCODED_CHAR))
+                                       refDecoded.insert(decodeProcent(*it));
+                               else
+                                       refDecoded.insert(*it);
+                       }
+               } catch (Result &) {
+                       return ERROR_DECODING_URL;
+               }
+
+               return dfsCheckDirectories(
+                                  refDecoded,
+                                  std::string(),
+                                  signatureData.isAuthorSignature());
+       }
+
+       Result checkOutbound(const std::string &linkPath, const std::string &appPath)
+       {
+               char resolvedPath[PATH_MAX];
+
+               if (realpath((appPath + "/" + linkPath).c_str(), resolvedPath) == NULL)
+                       return ERROR_READING_LNK;
+
+               std::string linkRealPath(resolvedPath);
+
+               if (linkRealPath.compare(0, appPath.size(), appPath) == 0)
+                       return NO_ERROR;
+               else
+                       return ERROR_OUTBOUND_LNK;
+       }
+
+private:
+       int hexToInt(char hex);
+       std::string decodeProcent(const std::string &path);
+
+       Result dfsCheckDirectories(
+               const ReferenceSet &referenceSet,
+               const std::string &directory,
+               bool isAuthorSignature);
+
+       inline bool isDistributorSignature(const char *cstring) const
+       {
+               return m_signatureRegexp.FullMatch(cstring);
+       }
+
+       std::string m_dirpath;
+       pcrecpp::RE m_signatureRegexp;
 };
 
-int ReferenceValidator::Impl::hexToInt(char a) {
-    if (a >= '0' && a <= '9') return a-'0';
-    if (a >= 'A' && a <= 'F') return a-'A' + 10;
-    if (a >= 'a' && a <= 'f') return a-'a' + 10;
-    LogError("Symbol '" << a << "' is out of scope.");
-    throw ERROR_DECODING_URL;
+int ReferenceValidator::Impl::hexToInt(char a)
+{
+       if (a >= '0' && a <= '9') return a - '0';
+
+       if (a >= 'A' && a <= 'F') return a - 'A' + 10;
+
+       if (a >= 'a' && a <= 'f') return a - 'a' + 10;
+
+       LogError("Symbol '" << a << "' is out of scope.");
+       throw ERROR_DECODING_URL;
 }
 
-std::string ReferenceValidator::Impl::decodeProcent(const std::string &path) {
-    std::vector<int> input(path.begin(), path.end());
-    std::vector<char> output;
-    try {
-        size_t i = 0;
-        while(i<input.size()) {
-            if (MARK_ENCODED_CHAR == input[i]) {
-                if (i+2 >= input.size())
-                    throw ERROR_DECODING_URL;
-
-                int result = hexToInt(input[i+1])*16 + hexToInt(input[i+2]);
-                output.push_back(static_cast<char>(result));
-                i+=3;
-            } else {
-                output.push_back(static_cast<char>(input[i]));
-                ++i;
-            }
-        }
-    } catch (Result &) {
-        LogError("Error while decoding url path : " << path);
-        throw ERROR_DECODING_URL;
-    }
-    return std::string(output.begin(), output.end());
+std::string ReferenceValidator::Impl::decodeProcent(const std::string &path)
+{
+       std::vector<int> input(path.begin(), path.end());
+       std::vector<char> output;
+
+       try {
+               size_t i = 0;
+
+               while (i < input.size()) {
+                       if (MARK_ENCODED_CHAR == input[i]) {
+                               if (i + 2 >= input.size())
+                                       throw ERROR_DECODING_URL;
+
+                               int result = hexToInt(input[i + 1]) * 16 + hexToInt(input[i + 2]);
+                               output.push_back(static_cast<char>(result));
+                               i += 3;
+                       } else {
+                               output.push_back(static_cast<char>(input[i]));
+                               ++i;
+                       }
+               }
+       } catch (Result &) {
+               LogError("Error while decoding url path : " << path);
+               throw ERROR_DECODING_URL;
+       }
+
+       return std::string(output.begin(), output.end());
 }
 
 ReferenceValidator::Result ReferenceValidator::Impl::dfsCheckDirectories(
-    const ReferenceSet &referenceSet,
-    const std::string &directory,
-    bool isAuthorSignature)
+       const ReferenceSet &referenceSet,
+       const std::string &directory,
+       bool isAuthorSignature)
 {
-    int ret;
-    DIR *dirp;
-    struct dirent entry;
-    struct dirent *result;
-
-    std::string currentDir = m_dirpath;
-    if (!directory.empty()) {
-        currentDir += "/";
-        currentDir += directory;
-    }
-
-    if ((dirp = opendir(currentDir.c_str())) == NULL) {
-        LogError("Error opening directory : " << currentDir);
-        return ERROR_OPENING_DIR;
-    }
-
-    for (ret = readdir_r(dirp, &entry, &result);
-            ret == 0 && result != NULL;
-            ret = readdir_r(dirp, &entry, &result)) {
-        if (!strcmp(result->d_name, SPECIAL_SYMBOL_CURRENT_DIR)) {
-            continue;
-        }
-
-        if (!strcmp(result->d_name, SPECIAL_SYMBOL_UPPER_DIR)) {
-            continue;
-        }
-
-        if (result->d_type == DT_UNKNOWN) {
-            // try to stat inode when readdir is not returning known type
-            std::string path = currentDir + "/" + result->d_name;
-            struct stat s;
-            if (lstat(path.c_str(), &s) != 0) {
-                closedir(dirp);
-                return ERROR_LSTAT;
-            }
-            if (S_ISREG(s.st_mode)) {
-                result->d_type = DT_REG;
-            } else if (S_ISDIR(s.st_mode)) {
-                result->d_type = DT_DIR;
-            }
-        }
-
-        if (currentDir == m_dirpath && result->d_type == DT_REG &&
-            !strcmp(result->d_name, SPECIAL_SYMBOL_AUTHOR_SIGNATURE_FILE) &&
-            isAuthorSignature)
-        {
-            continue;
-        }
-
-        if (currentDir == m_dirpath && result->d_type == DT_REG &&
-            isDistributorSignature(result->d_name)) {
-            continue;
-        }
-
-        if (result->d_type == DT_DIR) {
-            LogDebug("Open directory : " << (directory + result->d_name));
-            std::string tmp_directory = directory + result->d_name + "/";
-            Result result = dfsCheckDirectories(referenceSet,
-                                                tmp_directory,
-                                                isAuthorSignature);
-            if (result != NO_ERROR) {
-                closedir(dirp);
-                return result;
-            }
-        } else if (result->d_type == DT_REG) {
-            if (referenceSet.end() ==
-                referenceSet.find(directory + result->d_name))
-            {
-                LogDebug("Found file : " << (directory + result->d_name));
-                LogError("Unknown ERROR_REFERENCE_NOT_FOUND.");
-                closedir(dirp);
-                return ERROR_REFERENCE_NOT_FOUND;
-            }
-        } else if (result->d_type == DT_LNK) {
-            std::string linkPath(directory + result->d_name);
-
-            if (referenceSet.end() ==
-                referenceSet.find(linkPath))
-            {
-                LogDebug("Found file : " << (directory + result->d_name));
-                LogError("Unknown ERROR_REFERENCE_NOT_FOUND.");
-                closedir(dirp);
-                return ERROR_REFERENCE_NOT_FOUND;
-            }
-
-            Result ret = checkOutbound(linkPath, m_dirpath);
-            if (ret != NO_ERROR) {
-                LogError("Link file point wrong path");
-                closedir(dirp);
-                return ret;
-            }
-        } else {
-            LogError("Unknown file type.");
-            closedir(dirp);
-            return ERROR_UNSUPPORTED_FILE_TYPE;
-        }
-    }
-
-    if (ret != 0) {
-        closedir(dirp);
-        return ERROR_READING_DIR;
-    }
-
-    closedir(dirp);
-
-    return NO_ERROR;
+       int ret;
+       DIR *dirp;
+       struct dirent entry;
+       struct dirent *result;
+       std::string currentDir = m_dirpath;
+
+       if (!directory.empty()) {
+               currentDir += "/";
+               currentDir += directory;
+       }
+
+       if ((dirp = opendir(currentDir.c_str())) == NULL) {
+               LogError("Error opening directory : " << currentDir);
+               return ERROR_OPENING_DIR;
+       }
+
+       for (ret = readdir_r(dirp, &entry, &result);
+                       ret == 0 && result != NULL;
+                       ret = readdir_r(dirp, &entry, &result)) {
+               if (!strcmp(result->d_name, SPECIAL_SYMBOL_CURRENT_DIR)) {
+                       continue;
+               }
+
+               if (!strcmp(result->d_name, SPECIAL_SYMBOL_UPPER_DIR)) {
+                       continue;
+               }
+
+               if (result->d_type == DT_UNKNOWN) {
+                       // try to stat inode when readdir is not returning known type
+                       std::string path = currentDir + "/" + result->d_name;
+                       struct stat s;
+
+                       if (lstat(path.c_str(), &s) != 0) {
+                               closedir(dirp);
+                               return ERROR_LSTAT;
+                       }
+
+                       if (S_ISREG(s.st_mode)) {
+                               result->d_type = DT_REG;
+                       } else if (S_ISDIR(s.st_mode)) {
+                               result->d_type = DT_DIR;
+                       }
+               }
+
+               if (currentDir == m_dirpath && result->d_type == DT_REG &&
+                               !strcmp(result->d_name, SPECIAL_SYMBOL_AUTHOR_SIGNATURE_FILE) &&
+                               isAuthorSignature) {
+                       continue;
+               }
+
+               if (currentDir == m_dirpath && result->d_type == DT_REG &&
+                               isDistributorSignature(result->d_name)) {
+                       continue;
+               }
+
+               if (result->d_type == DT_DIR) {
+                       LogDebug("Open directory : " << (directory + result->d_name));
+                       std::string tmp_directory = directory + result->d_name + "/";
+                       Result result = dfsCheckDirectories(referenceSet,
+                                                                                               tmp_directory,
+                                                                                               isAuthorSignature);
+
+                       if (result != NO_ERROR) {
+                               closedir(dirp);
+                               return result;
+                       }
+               } else if (result->d_type == DT_REG) {
+                       if (referenceSet.end() ==
+                                       referenceSet.find(directory + result->d_name)) {
+                               LogDebug("Found file : " << (directory + result->d_name));
+                               LogError("Unknown ERROR_REFERENCE_NOT_FOUND.");
+                               closedir(dirp);
+                               return ERROR_REFERENCE_NOT_FOUND;
+                       }
+               } else if (result->d_type == DT_LNK) {
+                       std::string linkPath(directory + result->d_name);
+
+                       if (referenceSet.end() ==
+                                       referenceSet.find(linkPath)) {
+                               LogDebug("Found file : " << (directory + result->d_name));
+                               LogError("Unknown ERROR_REFERENCE_NOT_FOUND.");
+                               closedir(dirp);
+                               return ERROR_REFERENCE_NOT_FOUND;
+                       }
+
+                       Result ret = checkOutbound(linkPath, m_dirpath);
+
+                       if (ret != NO_ERROR) {
+                               LogError("Link file point wrong path");
+                               closedir(dirp);
+                               return ret;
+                       }
+               } else {
+                       LogError("Unknown file type.");
+                       closedir(dirp);
+                       return ERROR_UNSUPPORTED_FILE_TYPE;
+               }
+       }
+
+       if (ret != 0) {
+               closedir(dirp);
+               return ERROR_READING_DIR;
+       }
+
+       closedir(dirp);
+       return NO_ERROR;
 }
 
 ReferenceValidator::ReferenceValidator(const std::string &dirpath)
-  : m_impl(new Impl(dirpath))
+       : m_impl(new Impl(dirpath))
 {}
 
-ReferenceValidator::~ReferenceValidator(){
-    delete m_impl;
+ReferenceValidator::~ReferenceValidator()
+{
+       delete m_impl;
 }
 
 ReferenceValidator::Result ReferenceValidator::checkReferences(
-    const SignatureData &signatureData)
+       const SignatureData &signatureData)
 {
-    return m_impl->checkReferences(signatureData);
+       return m_impl->checkReferences(signatureData);
 }
 
 ReferenceValidator::Result ReferenceValidator::checkOutbound(
-    const std::string &linkPath, const std::string &appPath)
+       const std::string &linkPath, const std::string &appPath)
 {
-    return m_impl->checkOutbound(linkPath, appPath);
+       return m_impl->checkOutbound(linkPath, appPath);
 }
 } // ValidationCore
index f604b42..2fa025d 100644 (file)
 
 namespace ValidationCore {
 
-class ReferenceValidator : VcoreDPL::Noncopyable
-{
-  public:
-    enum Result
-    {
-        NO_ERROR = 0,
-        ERROR_OPENING_DIR,
-        ERROR_READING_DIR,
-        ERROR_UNSUPPORTED_FILE_TYPE,
-        ERROR_REFERENCE_NOT_FOUND,
-        ERROR_DECODING_URL,
-        ERROR_OUTBOUND_LNK,
-        ERROR_READING_LNK,
-        ERROR_LSTAT
-    };
-
-    ReferenceValidator(const std::string &dirpath);
-
-    virtual ~ReferenceValidator();
-
-    Result checkReferences(const SignatureData &signatureData);
-    Result checkOutbound(const std::string &linkPath, const std::string &appPath);
-
-  private:
-    class Impl;
-    Impl *m_impl;
+class ReferenceValidator : VcoreDPL::Noncopyable {
+public:
+       enum Result {
+               NO_ERROR = 0,
+               ERROR_OPENING_DIR,
+               ERROR_READING_DIR,
+               ERROR_UNSUPPORTED_FILE_TYPE,
+               ERROR_REFERENCE_NOT_FOUND,
+               ERROR_DECODING_URL,
+               ERROR_OUTBOUND_LNK,
+               ERROR_READING_LNK,
+               ERROR_LSTAT
+       };
+
+       ReferenceValidator(const std::string &dirpath);
+
+       virtual ~ReferenceValidator();
+
+       Result checkReferences(const SignatureData &signatureData);
+       Result checkOutbound(const std::string &linkPath, const std::string &appPath);
+
+private:
+       class Impl;
+       Impl *m_impl;
 };
 }
 
index d1ae2bd..048c7a2 100644 (file)
@@ -28,234 +28,239 @@ namespace ValidationCore {
 
 
 SaxReader::SaxReader() :
-    m_reader(0)
+       m_reader(0)
 {
 }
 
 SaxReader::~SaxReader()
 {
-    if (m_reader) {
-        deinitialize();
-    }
+       if (m_reader) {
+               deinitialize();
+       }
 }
 
 void SaxReader::initialize(
-    const std::string &filename,
-    bool defaultArgs,
-    ValidationType validate,
-    const std::string &schema)
+       const std::string &filename,
+       bool defaultArgs,
+       ValidationType validate,
+       const std::string &schema)
 {
-    Assert(m_reader == 0 && "Double initialization of SaxReader");
-
-    LogDebug("SaxReader opening file: " << filename);
-
-    m_reader = xmlNewTextReaderFilename(filename.c_str());
-
-    if (!m_reader) {
-        VcoreThrowMsg(SaxReader::Exception::FileOpeningError,
-                      "opening file " << filename << " error");
-    }
-
-    if (validate == VALIDATION_XMLSCHEME &&
-        xmlTextReaderSchemaValidate(m_reader, schema.c_str())) {
-        /*
-         * unable to turn on schema validation
-         */
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "Turn on Schema validation failed");
-    }
-
-    // Path to DTD schema is taken from xml file.
-    if (validate == VALIDATION_DTD &&
-        xmlTextReaderSetParserProp(m_reader, XML_PARSER_VALIDATE, 1)) {
-        /*
-         * unable to turn on DTD validation
-         */
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                             "Turn on DTD validation failed!");
-    }
-
-    if (defaultArgs &&
-        xmlTextReaderSetParserProp(m_reader, XML_PARSER_DEFAULTATTRS, 1)) {
-        /*
-         * unable to turn on default arguments
-         */
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                             "Turn on default arguments failed");
-    }
+       Assert(m_reader == 0 && "Double initialization of SaxReader");
+       LogDebug("SaxReader opening file: " << filename);
+       m_reader = xmlNewTextReaderFilename(filename.c_str());
+
+       if (!m_reader) {
+               VcoreThrowMsg(SaxReader::Exception::FileOpeningError,
+                                         "opening file " << filename << " error");
+       }
+
+       if (validate == VALIDATION_XMLSCHEME &&
+                       xmlTextReaderSchemaValidate(m_reader, schema.c_str())) {
+               /*
+                * unable to turn on schema validation
+                */
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "Turn on Schema validation failed");
+       }
+
+       // Path to DTD schema is taken from xml file.
+       if (validate == VALIDATION_DTD &&
+                       xmlTextReaderSetParserProp(m_reader, XML_PARSER_VALIDATE, 1)) {
+               /*
+                * unable to turn on DTD validation
+                */
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "Turn on DTD validation failed!");
+       }
+
+       if (defaultArgs &&
+                       xmlTextReaderSetParserProp(m_reader, XML_PARSER_DEFAULTATTRS, 1)) {
+               /*
+                * unable to turn on default arguments
+                */
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "Turn on default arguments failed");
+       }
 }
 
 void SaxReader::deinitialize()
 {
-    xmlFreeTextReader(m_reader);
-    m_reader = 0;
+       xmlFreeTextReader(m_reader);
+       m_reader = 0;
 }
 
 bool SaxReader::next()
 {
-    int res = xmlTextReaderRead(m_reader);
+       int res = xmlTextReaderRead(m_reader);
 
-    if (res < 0)
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "xmlTextReaderRead error");
+       if (res < 0)
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "xmlTextReaderRead error");
 
-    if (!xmlTextReaderIsValid(m_reader))
-        VcoreThrowMsg(SaxReader::Exception::FileNotValid,
-                      "xmlTextReader is invalid");
+       if (!xmlTextReaderIsValid(m_reader))
+               VcoreThrowMsg(SaxReader::Exception::FileNotValid,
+                                         "xmlTextReader is invalid");
 
-    return res ? true : false;
+       return res ? true : false;
 }
 
 void SaxReader::next(const std::string &token)
 {
-    int res = xmlTextReaderRead(m_reader);
+       int res = xmlTextReaderRead(m_reader);
 
-    if (res < 0)
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "xmlTextReaderRead error");
+       if (res < 0)
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "xmlTextReaderRead error");
 
-    if (!xmlTextReaderIsValid(m_reader))
-        VcoreThrowMsg(SaxReader::Exception::FileNotValid,
-                      "xmlTextReader is invalid");
+       if (!xmlTextReaderIsValid(m_reader))
+               VcoreThrowMsg(SaxReader::Exception::FileNotValid,
+                                         "xmlTextReader is invalid");
 
-    xmlChar *name = xmlTextReaderName(m_reader);
+       xmlChar *name = xmlTextReaderName(m_reader);
 
-    if (!name)
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "xmlTextReaderName returns NULL");
+       if (!name)
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "xmlTextReaderName returns NULL");
 
-    xmlChar *xmlToken = xmlCharStrdup(token.c_str());
+       xmlChar *xmlToken = xmlCharStrdup(token.c_str());
 
-    if (xmlStrcmp(name, xmlToken)) {
-        xmlFree(name);
-        xmlFree(xmlToken);
+       if (xmlStrcmp(name, xmlToken)) {
+               xmlFree(name);
+               xmlFree(xmlToken);
+               VcoreThrowMsg(SaxReader::Exception::WrongToken, "Wrong Token");
+       }
 
-        VcoreThrowMsg(SaxReader::Exception::WrongToken, "Wrong Token");
-    }
-
-    xmlFree(name);
-    xmlFree(xmlToken);
+       xmlFree(name);
+       xmlFree(xmlToken);
 }
 
 bool SaxReader::isEmpty(void)
 {
-    int ret = xmlTextReaderIsEmptyElement(m_reader);
-    if (-1 == ret)
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "xmlTextReaderIsEmptyElement error");
+       int ret = xmlTextReaderIsEmptyElement(m_reader);
+
+       if (-1 == ret)
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "xmlTextReaderIsEmptyElement error");
 
-    return ret ? true : false;
+       return ret ? true : false;
 }
 
 std::string SaxReader::attribute(const std::string &token, ThrowType throwStatus)
 {
-    xmlChar *attr = xmlTextReaderGetAttribute(m_reader, BAD_CAST(token.c_str()));
-    if (!attr) {
-        if (throwStatus == THROW_DISABLE) {
-            return std::string();
-        }
-        else {
-            VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                          "xmlTextReaderGetAttribute error");
-        }
-    }
-
-    std::string value = reinterpret_cast<const char *>(attr);
-    xmlFree(attr);
-
-    return value;
+       xmlChar *attr = xmlTextReaderGetAttribute(m_reader, BAD_CAST(token.c_str()));
+
+       if (!attr) {
+               if (throwStatus == THROW_DISABLE) {
+                       return std::string();
+               } else {
+                       VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                                 "xmlTextReaderGetAttribute error");
+               }
+       }
+
+       std::string value = reinterpret_cast<const char *>(attr);
+       xmlFree(attr);
+       return value;
 }
 
 std::string SaxReader::name()
 {
-    xmlChar *name = xmlTextReaderName(m_reader);
-    if (!name)
-        VcoreThrowMsg(SaxReader::Exception::ReadingNameError,
-                      "reading name error");
-
-    std::string value = reinterpret_cast<const char *>(name);
-    xmlFree(name);
-    size_t pos = value.find_last_of(":");
-    if (pos != std::string::npos) {
-        value.erase(0, pos + 1);
-    }
-
-    return value;
+       xmlChar *name = xmlTextReaderName(m_reader);
+
+       if (!name)
+               VcoreThrowMsg(SaxReader::Exception::ReadingNameError,
+                                         "reading name error");
+
+       std::string value = reinterpret_cast<const char *>(name);
+       xmlFree(name);
+       size_t pos = value.find_last_of(":");
+
+       if (pos != std::string::npos) {
+               value.erase(0, pos + 1);
+       }
+
+       return value;
 }
 
 std::string SaxReader::namespaceURI()
 {
-    xmlChar *name = xmlTextReaderNamespaceUri(m_reader);
-    if (!name) {
-        return std::string();
-    }
+       xmlChar *name = xmlTextReaderNamespaceUri(m_reader);
 
-    std::string value = reinterpret_cast<const char *>(name);
-    xmlFree(name);
+       if (!name) {
+               return std::string();
+       }
 
-    return value;
+       std::string value = reinterpret_cast<const char *>(name);
+       xmlFree(name);
+       return value;
 }
 
 std::string SaxReader::value()
 {
-    xmlChar *text = xmlTextReaderValue(m_reader);
-    if (!text)
-        VcoreThrowMsg(SaxReader::Exception::ReadingValueError,
-                      "reading value error");
+       xmlChar *text = xmlTextReaderValue(m_reader);
 
-    std::string value = reinterpret_cast<const char*>(text);
-    xmlFree(text);
+       if (!text)
+               VcoreThrowMsg(SaxReader::Exception::ReadingValueError,
+                                         "reading value error");
 
-    return value;
+       std::string value = reinterpret_cast<const char *>(text);
+       xmlFree(text);
+       return value;
 }
 
 SaxReader::NodeType SaxReader::type()
 {
-    xmlReaderTypes type =
-        static_cast<xmlReaderTypes>(xmlTextReaderNodeType(m_reader));
-    switch (type) {
-    case XML_READER_TYPE_ELEMENT:
-        return NODE_BEGIN;
-    case XML_READER_TYPE_END_ELEMENT:
-        return NODE_END;
-    case XML_READER_TYPE_TEXT:
-        return NODE_TEXT;
-    case XML_READER_TYPE_NONE:
-    case XML_READER_TYPE_ATTRIBUTE:
-    case XML_READER_TYPE_CDATA:
-    case XML_READER_TYPE_ENTITY_REFERENCE:
-    case XML_READER_TYPE_ENTITY:
-    case XML_READER_TYPE_PROCESSING_INSTRUCTION:
-    case XML_READER_TYPE_COMMENT:
-    case XML_READER_TYPE_DOCUMENT:
-    case XML_READER_TYPE_DOCUMENT_TYPE:
-    case XML_READER_TYPE_DOCUMENT_FRAGMENT:
-    case XML_READER_TYPE_NOTATION:
-    case XML_READER_TYPE_WHITESPACE:
-    case XML_READER_TYPE_SIGNIFICANT_WHITESPACE:
-    case XML_READER_TYPE_END_ENTITY:
-    case XML_READER_TYPE_XML_DECLARATION:
-    default:
-        return NODE_UNSUPPORTED;
-    }
+       xmlReaderTypes type =
+               static_cast<xmlReaderTypes>(xmlTextReaderNodeType(m_reader));
+
+       switch (type) {
+       case XML_READER_TYPE_ELEMENT:
+               return NODE_BEGIN;
+
+       case XML_READER_TYPE_END_ELEMENT:
+               return NODE_END;
+
+       case XML_READER_TYPE_TEXT:
+               return NODE_TEXT;
+
+       case XML_READER_TYPE_NONE:
+       case XML_READER_TYPE_ATTRIBUTE:
+       case XML_READER_TYPE_CDATA:
+       case XML_READER_TYPE_ENTITY_REFERENCE:
+       case XML_READER_TYPE_ENTITY:
+       case XML_READER_TYPE_PROCESSING_INSTRUCTION:
+       case XML_READER_TYPE_COMMENT:
+       case XML_READER_TYPE_DOCUMENT:
+       case XML_READER_TYPE_DOCUMENT_TYPE:
+       case XML_READER_TYPE_DOCUMENT_FRAGMENT:
+       case XML_READER_TYPE_NOTATION:
+       case XML_READER_TYPE_WHITESPACE:
+       case XML_READER_TYPE_SIGNIFICANT_WHITESPACE:
+       case XML_READER_TYPE_END_ENTITY:
+       case XML_READER_TYPE_XML_DECLARATION:
+       default:
+               return NODE_UNSUPPORTED;
+       }
 }
 
 void SaxReader::dumpNode(std::string &buffer)
 {
-    xmlBufferPtr buff = xmlBufferCreate();
-
-    xmlNodePtr node = xmlTextReaderExpand(m_reader);
-    if (!node) {
-        xmlBufferFree(buff);
-        VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
-                      "xmlTextReaderExpand error");
-    }
-
-    int size = xmlNodeDump(buff, node->doc, node, 0, 0);
-    if (size > 0) {
-        buffer.insert(0, reinterpret_cast<char*>(buff->content), size);
-    }
-    xmlBufferFree(buff);
+       xmlBufferPtr buff = xmlBufferCreate();
+       xmlNodePtr node = xmlTextReaderExpand(m_reader);
+
+       if (!node) {
+               xmlBufferFree(buff);
+               VcoreThrowMsg(SaxReader::Exception::ParserInternalError,
+                                         "xmlTextReaderExpand error");
+       }
+
+       int size = xmlNodeDump(buff, node->doc, node, 0, 0);
+
+       if (size > 0) {
+               buffer.insert(0, reinterpret_cast<char *>(buff->content), size);
+       }
+
+       xmlBufferFree(buff);
 }
 
 } // namespace ValidationCore
index 000ce1c..8ed34fb 100644 (file)
 namespace ValidationCore {
 class SaxReader {
 public:
-    SaxReader();
-    ~SaxReader();
-
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, FileOpeningError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, FileNotValid);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, ParserInternalError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongToken);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, ReadingValueError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, ReadingNameError);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedType);
-    };
-
-    enum NodeType
-    {
-        NODE_UNSUPPORTED,
-        NODE_BEGIN,
-        NODE_END,
-        NODE_TEXT
-    };
-
-    enum ThrowType
-    {
-        THROW_ENABLE = 0,
-        THROW_DISABLE
-    };
-
-    /*
-     * xml validation modes
-     */
-    enum ValidationType
-    {
-        VALIDATION_DISABLE,
-        VALIDATION_XMLSCHEME,
-        VALIDATION_DTD
-    };
-
-    /*
-     * initializes parser
-     */
-    void initialize(
-            const std::string &filename,
-            bool defaultArgs = false,
-            ValidationType validation = VALIDATION_DISABLE,
-            const std::string &schema = std::string());
-    /*
-     * deinitializes parser
-     */
-    void deinitialize();
-
-    /**
-     * Move to next xml node.
-     */
-    bool next();
-
-    /**
-     * Move to next xml node. If next node name is differ from token the exception wiil
-     * be thronw.
-     */
-    void next(const std::string &token);
-
-    /**
-     * Check if xml tag is empty.
-     */
-    bool isEmpty(void);
-
-    /**
-     * Read attribute tag.
-     */
-    std::string attribute(const std::string &token, ThrowType throwStatus = THROW_ENABLE);
-
-    /**
-     * Read xml tag name without namespace.
-     */
-    std::string name();
-
-    /**
-     * Read xml tag namespace URI
-     */
-    std::string namespaceURI();
-
-    /**
-     * Read xml tag value.
-     */
-    std::string value();
-
-    /**
-     * Return information about node type.
-     */
-    NodeType type();
-
-    /**
-     * Save all contonet of xml file which is between current tag and
-     * it's close tag into buffer.
-     */
-    void dumpNode(std::string &buffer);
+       SaxReader();
+       ~SaxReader();
+
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, FileOpeningError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, FileNotValid);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, ParserInternalError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, WrongToken);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, ReadingValueError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, ReadingNameError);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, UnsupportedType);
+       };
+
+       enum NodeType {
+               NODE_UNSUPPORTED,
+               NODE_BEGIN,
+               NODE_END,
+               NODE_TEXT
+       };
+
+       enum ThrowType {
+               THROW_ENABLE = 0,
+               THROW_DISABLE
+       };
+
+       /*
+        * xml validation modes
+        */
+       enum ValidationType {
+               VALIDATION_DISABLE,
+               VALIDATION_XMLSCHEME,
+               VALIDATION_DTD
+       };
+
+       /*
+        * initializes parser
+        */
+       void initialize(
+               const std::string &filename,
+               bool defaultArgs = false,
+               ValidationType validation = VALIDATION_DISABLE,
+               const std::string &schema = std::string());
+       /*
+        * deinitializes parser
+        */
+       void deinitialize();
+
+       /**
+        * Move to next xml node.
+        */
+       bool next();
+
+       /**
+        * Move to next xml node. If next node name is differ from token the exception wiil
+        * be thronw.
+        */
+       void next(const std::string &token);
+
+       /**
+        * Check if xml tag is empty.
+        */
+       bool isEmpty(void);
+
+       /**
+        * Read attribute tag.
+        */
+       std::string attribute(const std::string &token, ThrowType throwStatus = THROW_ENABLE);
+
+       /**
+        * Read xml tag name without namespace.
+        */
+       std::string name();
+
+       /**
+        * Read xml tag namespace URI
+        */
+       std::string namespaceURI();
+
+       /**
+        * Read xml tag value.
+        */
+       std::string value();
+
+       /**
+        * Return information about node type.
+        */
+       NodeType type();
+
+       /**
+        * Save all contonet of xml file which is between current tag and
+        * it's close tag into buffer.
+        */
+       void dumpNode(std::string &buffer);
 
 private:
-    /*
-     * internal libxml text reader
-     */
-    xmlTextReaderPtr m_reader;
+       /*
+        * internal libxml text reader
+        */
+       xmlTextReaderPtr m_reader;
 };
 }
 
index e162142..8663414 100644 (file)
 namespace ValidationCore {
 
 SignatureData::SignatureData()
-  : m_signatureNumber(-1)
-  , m_certificateSorted(false)
+       : m_signatureNumber(-1)
+       , m_certificateSorted(false)
 {}
 
 SignatureData::SignatureData(const std::string &fileName, int fileNumber)
-  : m_signatureNumber(fileNumber)
-  , m_fileName(fileName)
-  , m_certificateSorted(false)
+       : m_signatureNumber(fileNumber)
+       , m_fileName(fileName)
+       , m_certificateSorted(false)
 {}
 
 SignatureData::~SignatureData()
 {}
 
-const ReferenceSetSignatureData::getReferenceSet() const
+const ReferenceSet &SignatureData::getReferenceSet() const
 {
-    return m_referenceSet;
+       return m_referenceSet;
 }
 
 void SignatureData::setReference(const ReferenceSet &referenceSet)
 {
-    m_referenceSet = referenceSet;
+       m_referenceSet = referenceSet;
 }
 
 CertificateList SignatureData::getCertList() const
 {
-    return m_certList;
+       return m_certList;
 }
 
 void SignatureData::setSortedCertificateList(const CertificateList &list)
 {
-    m_certList = list;
-    m_certificateSorted = true;
+       m_certList = list;
+       m_certificateSorted = true;
 }
 
 bool SignatureData::isAuthorSignature() const
 {
-    return m_signatureNumber == -1;
+       return m_signatureNumber == -1;
 }
 
 std::string SignatureData::getSignatureFileName() const
 {
-    return m_fileName;
+       return m_fileName;
 }
 
 int SignatureData::getSignatureNumber() const
 {
-    return m_signatureNumber;
+       return m_signatureNumber;
 }
 
 std::string SignatureData::getRoleURI() const
 {
-    return m_roleURI;
+       return m_roleURI;
 }
 
 std::string SignatureData::getProfileURI() const
 {
-    return m_profileURI;
+       return m_profileURI;
 }
 
 bool SignatureData::containObjectReference(const std::string &ref) const
 {
-    std::string rName = "#";
-    rName += ref;
-    return m_referenceSet.end() != m_referenceSet.find(rName);
+       std::string rName = "#";
+       rName += ref;
+       return m_referenceSet.end() != m_referenceSet.find(rName);
 }
 
 ObjectList SignatureData::getObjectList() const
 {
-    return m_objectList;
+       return m_objectList;
 }
 
 void SignatureData::setStorageType(const CertStoreId::Set &storeIdSet)
 {
-    m_storeIdSet = storeIdSet;
+       m_storeIdSet = storeIdSet;
 }
 
 bool SignatureData::isCertListSorted() const
 {
-    return m_certificateSorted;
+       return m_certificateSorted;
 }
 
-const CertStoreId::SetSignatureData::getStorageType() const
+const CertStoreId::Set &SignatureData::getStorageType() const
 {
-    return m_storeIdSet;
+       return m_storeIdSet;
 }
 
 CertStoreId::Type SignatureData::getVisibilityLevel() const
 {
-    if (!m_storeIdSet.isContainsVis()) {
-        LogWarning("Visibility level was broken.");
-        return 0;
-    }
+       if (!m_storeIdSet.isContainsVis()) {
+               LogWarning("Visibility level was broken.");
+               return 0;
+       }
 
-    if (m_storeIdSet.contains(CertStoreId::VIS_PLATFORM))
-        return CertStoreId::VIS_PLATFORM;
-    else if (m_storeIdSet.contains(CertStoreId::VIS_PARTNER))
-        return CertStoreId::VIS_PARTNER;
-    else
-        return CertStoreId::VIS_PUBLIC;
+       if (m_storeIdSet.contains(CertStoreId::VIS_PLATFORM))
+               return CertStoreId::VIS_PLATFORM;
+       else if (m_storeIdSet.contains(CertStoreId::VIS_PARTNER))
+               return CertStoreId::VIS_PARTNER;
+       else
+               return CertStoreId::VIS_PUBLIC;
 }
 
-const SignatureData::IMEIListSignatureData::getIMEIList() const
+const SignatureData::IMEIList &SignatureData::getIMEIList() const
 {
-    return m_imeiList;
+       return m_imeiList;
 }
 
-const SignatureData::MEIDListSignatureData::getMEIDList() const
+const SignatureData::MEIDList &SignatureData::getMEIDList() const
 {
-    return m_meidList;
+       return m_meidList;
 }
 
 CertificatePtr SignatureData::getEndEntityCertificatePtr() const
 {
-    if (m_certificateSorted)
-        return m_certList.front();
+       if (m_certificateSorted)
+               return m_certList.front();
 
-    return CertificatePtr();
+       return CertificatePtr();
 }
 
 CertificatePtr SignatureData::getRootCaCertificatePtr() const
 {
-    if (m_certificateSorted)
-        return m_certList.back();
+       if (m_certificateSorted)
+               return m_certList.back();
 
-    return CertificatePtr();
+       return CertificatePtr();
 }
 
 } // ValidationCore
index b49d592..52e39fa 100644 (file)
@@ -36,58 +36,58 @@ typedef std::list<std::string> ObjectList;
 
 class SignatureData {
 public:
-    SignatureData();
-    SignatureData(const std::string &fileName, int fileNumber);
-
-    virtual ~SignatureData();
-
-    typedef std::list<std::string> IMEIList;
-    typedef std::list<std::string> MEIDList;
-
-    void setReference(const ReferenceSet &referenceSet);
-    void setSortedCertificateList(const CertificateList &list);
-    void setStorageType(const CertStoreId::Set &storeIdSet);
-    bool isCertListSorted() const;
-
-    const ReferenceSet& getReferenceSet() const;
-    CertificateList getCertList() const;
-    ObjectList getObjectList() const;
-    bool containObjectReference(const std::string &ref) const;
-    bool isAuthorSignature() const;
-    int getSignatureNumber() const;
-    std::string getSignatureFileName() const;
-    std::string getRoleURI() const;
-    std::string getProfileURI() const;
-    const CertStoreId::Set& getStorageType() const;
-    CertStoreId::Type getVisibilityLevel() const;
-    const IMEIList& getIMEIList() const;
-    const MEIDList& getMEIDList() const;
-    CertificatePtr getEndEntityCertificatePtr() const;
-    CertificatePtr getRootCaCertificatePtr() const;
-
-    friend class SignatureReader;
+       SignatureData();
+       SignatureData(const std::string &fileName, int fileNumber);
+
+       virtual ~SignatureData();
+
+       typedef std::list<std::string> IMEIList;
+       typedef std::list<std::string> MEIDList;
+
+       void setReference(const ReferenceSet &referenceSet);
+       void setSortedCertificateList(const CertificateList &list);
+       void setStorageType(const CertStoreId::Set &storeIdSet);
+       bool isCertListSorted() const;
+
+       const ReferenceSet &getReferenceSet() const;
+       CertificateList getCertList() const;
+       ObjectList getObjectList() const;
+       bool containObjectReference(const std::string &ref) const;
+       bool isAuthorSignature() const;
+       int getSignatureNumber() const;
+       std::string getSignatureFileName() const;
+       std::string getRoleURI() const;
+       std::string getProfileURI() const;
+       const CertStoreId::Set &getStorageType() const;
+       CertStoreId::Type getVisibilityLevel() const;
+       const IMEIList &getIMEIList() const;
+       const MEIDList &getMEIDList() const;
+       CertificatePtr getEndEntityCertificatePtr() const;
+       CertificatePtr getRootCaCertificatePtr() const;
+
+       friend class SignatureReader;
 
 private:
-    ReferenceSet m_referenceSet;
-    CertificateList m_certList;
-
-    //TargetRestriction
-    IMEIList m_imeiList;
-    MEIDList m_meidList;
-
-    /*
-     * This number is taken from distributor signature file name.
-     * Author signature do not contain any number on the file name.
-     * Author signature should have signature number equal to -1.
-     */
-    int m_signatureNumber;
-    std::string m_fileName;
-    std::string m_roleURI;
-    std::string m_profileURI;
-    std::string m_identifier;
-    ObjectList m_objectList;
-    CertStoreId::Set m_storeIdSet;
-    bool m_certificateSorted;
+       ReferenceSet m_referenceSet;
+       CertificateList m_certList;
+
+       //TargetRestriction
+       IMEIList m_imeiList;
+       MEIDList m_meidList;
+
+       /*
+        * This number is taken from distributor signature file name.
+        * Author signature do not contain any number on the file name.
+        * Author signature should have signature number equal to -1.
+        */
+       int m_signatureNumber;
+       std::string m_fileName;
+       std::string m_roleURI;
+       std::string m_profileURI;
+       std::string m_identifier;
+       ObjectList m_objectList;
+       CertStoreId::Set m_storeIdSet;
+       bool m_certificateSorted;
 };
 
 typedef std::set<SignatureData> SignatureDataSet;
index 6d0b2e7..5010563 100644 (file)
@@ -36,101 +36,102 @@ namespace {
 namespace ValidationCore {
 static const char *SIGNATURE_AUTHOR = "author-signature.xml";
 static const char *REGEXP_DISTRIBUTOR_SIGNATURE =
-    "^(signature)([1-9][0-9]*)(\\.xml)";
+       "^(signature)([1-9][0-9]*)(\\.xml)";
 
 class SignatureFinder::Impl {
 public:
-    Impl(const std::string& dir)
-      : m_dir(dir)
-      , m_signatureRegexp(REGEXP_DISTRIBUTOR_SIGNATURE)
-    {}
+       Impl(const std::string &dir)
+               : m_dir(dir)
+               , m_signatureRegexp(REGEXP_DISTRIBUTOR_SIGNATURE)
+       {}
 
-    virtual ~Impl(){}
+       virtual ~Impl() {}
 
-    Result find(SignatureFileInfoSet &set);
+       Result find(SignatureFileInfoSet &set);
 
 private:
-    std::string getFullPath(const std::string &file);
+       std::string getFullPath(const std::string &file);
 
-    std::string m_dir;
-    pcrecpp::RE m_signatureRegexp;
+       std::string m_dir;
+       pcrecpp::RE m_signatureRegexp;
 };
 
 std::string SignatureFinder::Impl::getFullPath(const std::string &file)
 {
-    std::string fullPath = m_dir;
+       std::string fullPath = m_dir;
 
-    if (fullPath.back() != '/')
-        fullPath += "/";
+       if (fullPath.back() != '/')
+               fullPath += "/";
 
-    fullPath += file;
-
-    return fullPath;
+       fullPath += file;
+       return fullPath;
 }
 
 SignatureFinder::Result SignatureFinder::Impl::find(SignatureFileInfoSet &set)
 {
-    int ret;
-    DIR *dirp;
-    struct dirent entry;
-    struct dirent *result;
-
-    if ((dirp = opendir(m_dir.c_str())) == NULL) {
-        LogError("Error opening directory: " << m_dir);
-        return ERROR_OPENING_DIR;
-    }
-
-    for (ret = readdir_r(dirp, &entry, &result);
-            ret == 0 && result != NULL;
-            ret = readdir_r(dirp, &entry, &result)) {
-        /* number for author signature is -1 */
-        if (!strcmp(result->d_name, SIGNATURE_AUTHOR)) {
-            std::string fullPath = getFullPath(std::string(result->d_name));
-            LogDebug("Found author signature file full path : " << fullPath);
-            set.insert(SignatureFileInfo(fullPath, -1));
-            continue;
-        }
-
-        std::string sig;
-        std::string num;
-        std::string xml; /* just for cutting out .xml */
-        if (m_signatureRegexp.FullMatch(result->d_name, &sig, &num, &xml)) {
-            std::istringstream stream(num);
-            int number;
-            stream >> number;
-
-            if (stream.fail()) {
-                closedir(dirp);
-                return ERROR_ISTREAM;
-            }
-
-            std::string fullPath = getFullPath(std::string(result->d_name));
-            LogDebug("Found signature file full path : " << fullPath);
-            set.insert(SignatureFileInfo(fullPath, number));
-        }
-    }
-
-    if (ret != 0) {
-        LogError("Error in readdir");
-        closedir(dirp);
-        return ERROR_READING_DIR;
-    }
-
-    closedir(dirp);
-    return NO_ERROR;
+       int ret;
+       DIR *dirp;
+       struct dirent entry;
+       struct dirent *result;
+
+       if ((dirp = opendir(m_dir.c_str())) == NULL) {
+               LogError("Error opening directory: " << m_dir);
+               return ERROR_OPENING_DIR;
+       }
+
+       for (ret = readdir_r(dirp, &entry, &result);
+                       ret == 0 && result != NULL;
+                       ret = readdir_r(dirp, &entry, &result)) {
+               /* number for author signature is -1 */
+               if (!strcmp(result->d_name, SIGNATURE_AUTHOR)) {
+                       std::string fullPath = getFullPath(std::string(result->d_name));
+                       LogDebug("Found author signature file full path : " << fullPath);
+                       set.insert(SignatureFileInfo(fullPath, -1));
+                       continue;
+               }
+
+               std::string sig;
+               std::string num;
+               std::string xml; /* just for cutting out .xml */
+
+               if (m_signatureRegexp.FullMatch(result->d_name, &sig, &num, &xml)) {
+                       std::istringstream stream(num);
+                       int number;
+                       stream >> number;
+
+                       if (stream.fail()) {
+                               closedir(dirp);
+                               return ERROR_ISTREAM;
+                       }
+
+                       std::string fullPath = getFullPath(std::string(result->d_name));
+                       LogDebug("Found signature file full path : " << fullPath);
+                       set.insert(SignatureFileInfo(fullPath, number));
+               }
+       }
+
+       if (ret != 0) {
+               LogError("Error in readdir");
+               closedir(dirp);
+               return ERROR_READING_DIR;
+       }
+
+       closedir(dirp);
+       return NO_ERROR;
 }
 
-SignatureFinder::SignatureFinder(const std::stringdir)
-  : m_impl(new Impl(dir))
+SignatureFinder::SignatureFinder(const std::string &dir)
+       : m_impl(new Impl(dir))
 {}
 
 SignatureFinder::~SignatureFinder()
 {
-    delete m_impl;
+       delete m_impl;
 }
 
-SignatureFinder::Result SignatureFinder::find(SignatureFileInfoSet &set) {
-    return m_impl->find(set);
+SignatureFinder::Result SignatureFinder::find(SignatureFileInfoSet &set)
+{
+       return m_impl->find(set);
 }
 
 } // namespace ValidationCore
index 4809096..40881b9 100644 (file)
@@ -31,56 +31,55 @@ namespace ValidationCore {
 
 class SignatureFileInfo {
 public:
-    SignatureFileInfo(const std::string &fileName, int num)
-      : m_fileName(fileName)
-      , m_fileNumber(num)
-    {}
-
-    std::string getFileName() const
-    {
-        return m_fileName;
-    }
-
-    int getFileNumber() const
-    {
-        return m_fileNumber;
-    }
-
-    bool operator<(const SignatureFileInfo &second) const
-    {
-        return m_fileNumber < second.m_fileNumber;
-    }
+       SignatureFileInfo(const std::string &fileName, int num)
+               : m_fileName(fileName)
+               , m_fileNumber(num)
+       {}
+
+       std::string getFileName() const
+       {
+               return m_fileName;
+       }
+
+       int getFileNumber() const
+       {
+               return m_fileNumber;
+       }
+
+       bool operator<(const SignatureFileInfo &second) const
+       {
+               return m_fileNumber < second.m_fileNumber;
+       }
 
 private:
-    std::string m_fileName;
-    int m_fileNumber;
+       std::string m_fileName;
+       int m_fileNumber;
 };
 
 typedef std::set<SignatureFileInfo> SignatureFileInfoSet;
 
 class SignatureFinder {
 public:
-    enum Result
-    {
-        NO_ERROR,
-        ERROR_OPENING_DIR,
-        ERROR_READING_DIR,
-        ERROR_ISTREAM
-    };
+       enum Result {
+               NO_ERROR,
+               ERROR_OPENING_DIR,
+               ERROR_READING_DIR,
+               ERROR_ISTREAM
+       };
 
-    SignatureFinder() = delete;
-    explicit SignatureFinder(const std::string& dir);
+       SignatureFinder() = delete;
+       explicit SignatureFinder(const std::string &dir);
 
-    virtual ~SignatureFinder();
+       virtual ~SignatureFinder();
 
-    Result find(SignatureFileInfoSet &set);
+       Result find(SignatureFileInfoSet &set);
 
 private:
-    class Impl;
-    Impl *m_impl;
+       class Impl;
+       Impl *m_impl;
 
-    SignatureFinder(const SignatureFinder &);
-    const SignatureFinder &operator=(const SignatureFinder &);
+       SignatureFinder(const SignatureFinder &);
+       const SignatureFinder &operator=(const SignatureFinder &);
 };
 
 } // namespace ValidationCore
index 229c93d..3fd1b58 100644 (file)
 
 namespace ValidationCore {
 static const std::string XML_NAMESPACE =
-    "http://www.w3.org/2000/09/xmldsig#";
+       "http://www.w3.org/2000/09/xmldsig#";
 static const std::string XML_NAMESPACE_DIGITALSIG =
-    "http://wacapps.net/ns/digsig";
+       "http://wacapps.net/ns/digsig";
 static const std::string XML_OBJ_NS =
-    "http://www.w3.org/2009/xmldsig-properties";
+       "http://www.w3.org/2009/xmldsig-properties";
 
 // TAG TOKENS
 static const std::string TOKEN_SIGNATURE = "Signature";
 static const std::string TOKEN_SIGNED_INFO = "SignedInfo";
 static const std::string TOKEN_CANONICALIZATION_METHOD =
-    "CanonicalizationMethod";
+       "CanonicalizationMethod";
 static const std::string TOKEN_SIGNATURE_METHOD = "SignatureMethod";
 static const std::string TOKEN_REFERENCE = "Reference";
 static const std::string TOKEN_TRANSFORMS = "Transforms";
@@ -104,238 +104,237 @@ static const std::string TOKEN_ATTR_IDENTIFIER = "identifier";
 //            "http://www.w3.org/2001/04/xmlenc#sha512";
 
 SignatureReader::SignatureReader() :
-    m_signaturePropertiesCounter(0),
-    m_targetRestrictionObjectFound(false),
-    m_parserSchema(this)
-{
-    /**
-     * member func pointers map
-     */
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNED_INFO,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_CANONICALIZATION_METHOD,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_METHOD,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_REFERENCE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_TRANSFORMS,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_TRANSFORM,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DIGEST_METHOD,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DIGEST_VALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_VALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_KEY_INFO,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenKeyInfo);
-    m_parserSchema.addBeginTagCallback(TOKEN_X509DATA,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenX509Data);
-    m_parserSchema.addBeginTagCallback(TOKEN_X509CERTIFICATE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenX509Certificate);
-    m_parserSchema.addBeginTagCallback(TOKEN_ECKEY_VALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_NAMED_CURVE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenNamedCurve);
-    m_parserSchema.addBeginTagCallback(TOKEN_PUBLIC_KEY,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenPublicKey);
-    m_parserSchema.addBeginTagCallback(TOKEN_OBJECT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenObject);
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_PROPERTIES,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::tokenSignatureProperties);
-    m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_PROPERTY,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_PROFILE,
-                                       XML_OBJ_NS,
-                                       &SignatureReader::tokenProfile);
-    m_parserSchema.addBeginTagCallback(TOKEN_ROLE,
-                                       XML_OBJ_NS,
-                                       &SignatureReader::tokenRole);
-    m_parserSchema.addBeginTagCallback(TOKEN_IDENTIFIER,
-                                       XML_OBJ_NS,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_KEY_VALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSAKEYVALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_P_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_Q_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_G_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_Y_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_J_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_SEED_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_DSA_PGENCOUNTER_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_RSA_KEY_VALUE,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_MODULUS_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_EXPONENT_COMPONENT,
-                                       XML_NAMESPACE,
-                                       &SignatureReader::blankFunction);
-    m_parserSchema.addBeginTagCallback(TOKEN_TARGET_RESTRICTION,
-                                       XML_NAMESPACE_DIGITALSIG,
-                                       &SignatureReader::tokenTargetRestriction);
-
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNED_INFO,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_CANONICALIZATION_METHOD,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_METHOD,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_REFERENCE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_TRANSFORMS,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_TRANSFORM,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_DIGEST_METHOD,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_DIGEST_VALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_VALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_KEY_INFO,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndKeyInfo);
-    m_parserSchema.addEndTagCallback(TOKEN_X509DATA,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndX509Data);
-    m_parserSchema.addEndTagCallback(TOKEN_X509CERTIFICATE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndX509Certificate);
-    m_parserSchema.addEndTagCallback(TOKEN_ECKEY_VALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndECKeyValue);
-    m_parserSchema.addEndTagCallback(TOKEN_PUBLIC_KEY,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndPublicKey);
-    m_parserSchema.addEndTagCallback(TOKEN_OBJECT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndObject);
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_PROPERTIES,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_PROPERTY,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_PROFILE,
-                                     XML_OBJ_NS,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_ROLE,
-                                     XML_OBJ_NS,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_IDENTIFIER,
-                                     XML_OBJ_NS,
-                                     &SignatureReader::tokenEndIdentifier);
-    m_parserSchema.addEndTagCallback(TOKEN_KEY_VALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
-    m_parserSchema.addEndTagCallback(TOKEN_DSAKEYVALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAKeyValue);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_P_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAPComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_Q_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAQComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_G_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAGComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_Y_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAYComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_J_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAJComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_SEED_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSASeedComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_DSA_PGENCOUNTER_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndDSAPGenCounterComponent);
-    m_parserSchema.addEndTagCallback(TOKEN_RSA_KEY_VALUE,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndRSAKeyValue);
-    m_parserSchema.addEndTagCallback(TOKEN_MODULUS_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndKeyModulus);
-    m_parserSchema.addEndTagCallback(TOKEN_EXPONENT_COMPONENT,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::tokenEndKeyExponent);
-    m_parserSchema.addEndTagCallback(TOKEN_TARGET_RESTRICTION,
-                                     XML_NAMESPACE,
-                                     &SignatureReader::blankFunction);
+       m_signaturePropertiesCounter(0),
+       m_targetRestrictionObjectFound(false),
+       m_parserSchema(this)
+{
+       /**
+        * member func pointers map
+        */
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNED_INFO,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_CANONICALIZATION_METHOD,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_METHOD,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_REFERENCE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_TRANSFORMS,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_TRANSFORM,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DIGEST_METHOD,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DIGEST_VALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_VALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_KEY_INFO,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenKeyInfo);
+       m_parserSchema.addBeginTagCallback(TOKEN_X509DATA,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenX509Data);
+       m_parserSchema.addBeginTagCallback(TOKEN_X509CERTIFICATE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenX509Certificate);
+       m_parserSchema.addBeginTagCallback(TOKEN_ECKEY_VALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_NAMED_CURVE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenNamedCurve);
+       m_parserSchema.addBeginTagCallback(TOKEN_PUBLIC_KEY,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenPublicKey);
+       m_parserSchema.addBeginTagCallback(TOKEN_OBJECT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenObject);
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_PROPERTIES,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::tokenSignatureProperties);
+       m_parserSchema.addBeginTagCallback(TOKEN_SIGNATURE_PROPERTY,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_PROFILE,
+                                                                          XML_OBJ_NS,
+                                                                          &SignatureReader::tokenProfile);
+       m_parserSchema.addBeginTagCallback(TOKEN_ROLE,
+                                                                          XML_OBJ_NS,
+                                                                          &SignatureReader::tokenRole);
+       m_parserSchema.addBeginTagCallback(TOKEN_IDENTIFIER,
+                                                                          XML_OBJ_NS,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_KEY_VALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSAKEYVALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_P_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_Q_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_G_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_Y_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_J_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_SEED_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_DSA_PGENCOUNTER_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_RSA_KEY_VALUE,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_MODULUS_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_EXPONENT_COMPONENT,
+                                                                          XML_NAMESPACE,
+                                                                          &SignatureReader::blankFunction);
+       m_parserSchema.addBeginTagCallback(TOKEN_TARGET_RESTRICTION,
+                                                                          XML_NAMESPACE_DIGITALSIG,
+                                                                          &SignatureReader::tokenTargetRestriction);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNED_INFO,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_CANONICALIZATION_METHOD,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_METHOD,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_REFERENCE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_TRANSFORMS,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_TRANSFORM,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_DIGEST_METHOD,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_DIGEST_VALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_VALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_KEY_INFO,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndKeyInfo);
+       m_parserSchema.addEndTagCallback(TOKEN_X509DATA,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndX509Data);
+       m_parserSchema.addEndTagCallback(TOKEN_X509CERTIFICATE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndX509Certificate);
+       m_parserSchema.addEndTagCallback(TOKEN_ECKEY_VALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndECKeyValue);
+       m_parserSchema.addEndTagCallback(TOKEN_PUBLIC_KEY,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndPublicKey);
+       m_parserSchema.addEndTagCallback(TOKEN_OBJECT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndObject);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_PROPERTIES,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_SIGNATURE_PROPERTY,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_PROFILE,
+                                                                        XML_OBJ_NS,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_ROLE,
+                                                                        XML_OBJ_NS,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_IDENTIFIER,
+                                                                        XML_OBJ_NS,
+                                                                        &SignatureReader::tokenEndIdentifier);
+       m_parserSchema.addEndTagCallback(TOKEN_KEY_VALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
+       m_parserSchema.addEndTagCallback(TOKEN_DSAKEYVALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAKeyValue);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_P_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAPComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_Q_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAQComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_G_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAGComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_Y_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAYComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_J_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAJComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_SEED_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSASeedComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_DSA_PGENCOUNTER_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndDSAPGenCounterComponent);
+       m_parserSchema.addEndTagCallback(TOKEN_RSA_KEY_VALUE,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndRSAKeyValue);
+       m_parserSchema.addEndTagCallback(TOKEN_MODULUS_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndKeyModulus);
+       m_parserSchema.addEndTagCallback(TOKEN_EXPONENT_COMPONENT,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::tokenEndKeyExponent);
+       m_parserSchema.addEndTagCallback(TOKEN_TARGET_RESTRICTION,
+                                                                        XML_NAMESPACE,
+                                                                        &SignatureReader::blankFunction);
 }
 
 
 void SignatureReader::initialize(
-    SignatureData &signatureData,
-    const std::string &xmlscheme)
+       SignatureData &signatureData,
+       const std::string &xmlscheme)
 {
-    m_parserSchema.initialize(
-            signatureData.getSignatureFileName(),
-            true,
-            SaxReader::VALIDATION_XMLSCHEME,
-            xmlscheme);
+       m_parserSchema.initialize(
+               signatureData.getSignatureFileName(),
+               true,
+               SaxReader::VALIDATION_XMLSCHEME,
+               xmlscheme);
 }
 
 void SignatureReader::read(SignatureData &signatureData)
 {
-    m_parserSchema.read(signatureData);
+       m_parserSchema.read(signatureData);
 }
 
 void SignatureReader::blankFunction(SignatureData &)
@@ -360,27 +359,28 @@ void SignatureReader::tokenPublicKey(SignatureData &)
 
 void SignatureReader::tokenNamedCurve(SignatureData &)
 {
-    m_nameCurveURI = m_parserSchema.getReader().attribute(TOKEN_URI);
+       m_nameCurveURI = m_parserSchema.getReader().attribute(TOKEN_URI);
 }
 
 void SignatureReader::tokenTargetRestriction(SignatureData &signatureData)
 {
-    std::string IMEI = m_parserSchema.getReader().attribute(TOKEN_IMEI);
-    std::string MEID = m_parserSchema.getReader().attribute(TOKEN_MEID);
+       std::string IMEI = m_parserSchema.getReader().attribute(TOKEN_IMEI);
+       std::string MEID = m_parserSchema.getReader().attribute(TOKEN_MEID);
 
-    //less verbose way to say (IMEI && MEID) || (!IMEI && !MEID)
-    if (IMEI.empty() == MEID.empty()) {
-        //WAC 2.0 WR-4650 point 4
-        VcoreThrowMsg(SignatureReader::Exception::TargetRestriction,
-                      "TargetRestriction should contain exactly one attribute.");
-    }
+       //less verbose way to say (IMEI && MEID) || (!IMEI && !MEID)
+       if (IMEI.empty() == MEID.empty()) {
+               //WAC 2.0 WR-4650 point 4
+               VcoreThrowMsg(SignatureReader::Exception::TargetRestriction,
+                                         "TargetRestriction should contain exactly one attribute.");
+       }
 
-    if (!IMEI.empty()) {
-        signatureData.m_imeiList.push_back(IMEI);
-    }
-    if (!MEID.empty()) {
-        signatureData.m_meidList.push_back(MEID);
-    }
+       if (!IMEI.empty()) {
+               signatureData.m_imeiList.push_back(IMEI);
+       }
+
+       if (!MEID.empty()) {
+               signatureData.m_meidList.push_back(MEID);
+       }
 }
 
 void SignatureReader::tokenEndKeyInfo(SignatureData &)
@@ -393,178 +393,187 @@ void SignatureReader::tokenEndX509Data(SignatureData &)
 
 void SignatureReader::tokenEndX509Certificate(SignatureData &signatureData)
 {
-    CertificateLoader loader;
-    if (CertificateLoader::NO_ERROR !=
-        loader.loadCertificateFromRawData(m_parserSchema.getText())) {
-        fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
-        VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
-                      "Certificate could not be loaded");
-    }
-    signatureData.m_certList.push_back(loader.getCertificatePtr());
+       CertificateLoader loader;
+
+       if (CertificateLoader::NO_ERROR !=
+                       loader.loadCertificateFromRawData(m_parserSchema.getText())) {
+               fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
+               VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
+                                         "Certificate could not be loaded");
+       }
+
+       signatureData.m_certList.push_back(loader.getCertificatePtr());
 }
 
 void SignatureReader::tokenEndRSAKeyValue(SignatureData &signatureData)
 {
-    CertificateLoader loader;
-    if (CertificateLoader::NO_ERROR !=
-        loader.loadCertificateBasedOnExponentAndModulus(m_modulus,
-                                                        m_exponent)) {
-        fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
-        VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
-                      "Certificate could not be loaded");
-    }
-    signatureData.m_certList.push_back(loader.getCertificatePtr());
+       CertificateLoader loader;
+
+       if (CertificateLoader::NO_ERROR !=
+                       loader.loadCertificateBasedOnExponentAndModulus(m_modulus,
+                                       m_exponent)) {
+               fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
+               VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
+                                         "Certificate could not be loaded");
+       }
+
+       signatureData.m_certList.push_back(loader.getCertificatePtr());
 }
 
 void SignatureReader::tokenEndKeyModulus(SignatureData &)
 {
-    m_modulus = m_parserSchema.getText();
+       m_modulus = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndKeyExponent(SignatureData &)
 {
-    m_exponent = m_parserSchema.getText();
+       m_exponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndPublicKey(SignatureData &)
 {
-    m_publicKey = m_parserSchema.getText();
+       m_publicKey = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndECKeyValue(SignatureData &signatureData)
 {
-    CertificateLoader loader;
-    if (CertificateLoader::NO_ERROR !=
-        loader.loadCertificateWithECKEY(m_nameCurveURI, m_publicKey)) {
-        fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
-        VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
-                      "Certificate could not be loaded");
-    }
-    signatureData.m_certList.push_back(loader.getCertificatePtr());
+       CertificateLoader loader;
+
+       if (CertificateLoader::NO_ERROR !=
+                       loader.loadCertificateWithECKEY(m_nameCurveURI, m_publicKey)) {
+               fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
+               VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
+                                         "Certificate could not be loaded");
+       }
+
+       signatureData.m_certList.push_back(loader.getCertificatePtr());
 }
 
 void SignatureReader::tokenEndObject(SignatureData &signatureData)
 {
-    m_signaturePropertiesCounter = 0;
-
-    if (((!signatureData.m_imeiList.empty()) ||
-         (!signatureData.m_meidList.empty())) &&
-        m_targetRestrictionObjectFound) {
-        //WAC 2.0 WR-4650 point 1
-        VcoreThrowMsg(SignatureReader::Exception::TargetRestriction,
-                      "TargetRestriction should contain exactly one ds:Object "
-                      "containing zero or more wac:TargetRestriction children.");
-    }
+       m_signaturePropertiesCounter = 0;
 
-    if ((!signatureData.m_imeiList.empty()) ||
-        (!signatureData.m_meidList.empty())) {
-        m_targetRestrictionObjectFound = true;
-    }
+       if (((!signatureData.m_imeiList.empty()) ||
+                       (!signatureData.m_meidList.empty())) &&
+                       m_targetRestrictionObjectFound) {
+               //WAC 2.0 WR-4650 point 1
+               VcoreThrowMsg(SignatureReader::Exception::TargetRestriction,
+                                         "TargetRestriction should contain exactly one ds:Object "
+                                         "containing zero or more wac:TargetRestriction children.");
+       }
 
+       if ((!signatureData.m_imeiList.empty()) ||
+                       (!signatureData.m_meidList.empty())) {
+               m_targetRestrictionObjectFound = true;
+       }
 }
 void SignatureReader::tokenEndDSAPComponent(SignatureData &)
 {
-    m_dsaKeyPComponent = m_parserSchema.getText();
+       m_dsaKeyPComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAQComponent(SignatureData &)
 {
-    m_dsaKeyQComponent = m_parserSchema.getText();
+       m_dsaKeyQComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAGComponent(SignatureData &)
 {
-    m_dsaKeyGComponent = m_parserSchema.getText();
+       m_dsaKeyGComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAYComponent(SignatureData &)
 {
-    m_dsaKeyYComponent = m_parserSchema.getText();
+       m_dsaKeyYComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAJComponent(SignatureData &)
 {
-    m_dsaKeyJComponent = m_parserSchema.getText();
+       m_dsaKeyJComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSASeedComponent(SignatureData &)
 {
-    m_dsaKeySeedComponent = m_parserSchema.getText();
+       m_dsaKeySeedComponent = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAPGenCounterComponent(SignatureData &)
 {
-    m_dsaKeyPGenCounter = m_parserSchema.getText();
+       m_dsaKeyPGenCounter = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenEndDSAKeyValue(SignatureData &signatureData)
 {
-    CertificateLoader loader;
+       CertificateLoader loader;
+
+       if (CertificateLoader::NO_ERROR !=
+                       loader.loadCertificateBasedOnDSAComponents(m_dsaKeyPComponent,
+                                       m_dsaKeyQComponent,
+                                       m_dsaKeyGComponent,
+                                       m_dsaKeyYComponent,
+                                       m_dsaKeyJComponent,
+                                       m_dsaKeySeedComponent,
+                                       m_dsaKeyPGenCounter)) {
+               fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
+               VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
+                                         "Certificate could not be loaded.");
+       }
 
-    if (CertificateLoader::NO_ERROR !=
-        loader.loadCertificateBasedOnDSAComponents(m_dsaKeyPComponent,
-                                                   m_dsaKeyQComponent,
-                                                   m_dsaKeyGComponent,
-                                                   m_dsaKeyYComponent,
-                                                   m_dsaKeyJComponent,
-                                                   m_dsaKeySeedComponent,
-                                                   m_dsaKeyPGenCounter)) {
-        fprintf(stderr, "## [validate error]: Certificate could not be loaded\n");
-        VcoreThrowMsg(ParserSchemaException::CertificateLoaderError,
-                      "Certificate could not be loaded.");
-    }
-    signatureData.m_certList.push_back(loader.getCertificatePtr());
+       signatureData.m_certList.push_back(loader.getCertificatePtr());
 }
 
 void SignatureReader::tokenRole(SignatureData &signatureData)
 {
-    if (!signatureData.m_roleURI.empty()) {
-        fprintf(stderr, "## [validate error]: Multiple definition of Role is not allowed\n");
-        VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
-                      "Multiple definition of Role is not allowed.");
-    }
-    signatureData.m_roleURI = m_parserSchema.getReader().attribute(TOKEN_URI);
+       if (!signatureData.m_roleURI.empty()) {
+               fprintf(stderr, "## [validate error]: Multiple definition of Role is not allowed\n");
+               VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
+                                         "Multiple definition of Role is not allowed.");
+       }
+
+       signatureData.m_roleURI = m_parserSchema.getReader().attribute(TOKEN_URI);
 }
 
 void SignatureReader::tokenProfile(SignatureData &signatureData)
 {
-    if (!signatureData.m_profileURI.empty()) {
-        fprintf(stderr, "## [validate error]: Multiple definition of Profile is not allowed\n");
-        VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
-                      "Multiple definition of Profile is not allowed.");
-    }
-    signatureData.m_profileURI = m_parserSchema.getReader().attribute(TOKEN_URI);
+       if (!signatureData.m_profileURI.empty()) {
+               fprintf(stderr, "## [validate error]: Multiple definition of Profile is not allowed\n");
+               VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
+                                         "Multiple definition of Profile is not allowed.");
+       }
+
+       signatureData.m_profileURI = m_parserSchema.getReader().attribute(TOKEN_URI);
 }
 
 void SignatureReader::tokenEndIdentifier(SignatureData &signatureData)
 {
-    if (!signatureData.m_identifier.empty()) {
-        fprintf(stderr, "## [validate error]: Multiple definition of Identifier is not allowed\n");
-        VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
-                      "Multiple definition of Identifier is not allowed.");
-    }
-    signatureData.m_identifier = m_parserSchema.getText();
+       if (!signatureData.m_identifier.empty()) {
+               fprintf(stderr, "## [validate error]: Multiple definition of Identifier is not allowed\n");
+               VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
+                                         "Multiple definition of Identifier is not allowed.");
+       }
+
+       signatureData.m_identifier = m_parserSchema.getText();
 }
 
 void SignatureReader::tokenObject(SignatureData &signatureData)
 {
-    std::string id = m_parserSchema.getReader().attribute(TOKEN_ID);
+       std::string id = m_parserSchema.getReader().attribute(TOKEN_ID);
 
-    if (id.empty()) {
-        fprintf(stderr, "## [validate error]: Unsupported value of Attribute Id in Object tag\n");
-        VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
-                      "Unsupported value of Attribute Id in Object tag.");
-    }
+       if (id.empty()) {
+               fprintf(stderr, "## [validate error]: Unsupported value of Attribute Id in Object tag\n");
+               VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
+                                         "Unsupported value of Attribute Id in Object tag.");
+       }
 
-    signatureData.m_objectList.push_back(id);
+       signatureData.m_objectList.push_back(id);
 }
 
 void SignatureReader::tokenSignatureProperties(SignatureData &)
 {
-    if (++m_signaturePropertiesCounter > 1) {
-        fprintf(stderr, "## [validate error]: Only one SignatureProperties tag is allowed in Object\n");
-        VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
-                      "Only one SignatureProperties tag is allowed in Object");
-    }
+       if (++m_signaturePropertiesCounter > 1) {
+               fprintf(stderr, "## [validate error]: Only one SignatureProperties tag is allowed in Object\n");
+               VcoreThrowMsg(ParserSchemaException::UnsupportedValue,
+                                         "Only one SignatureProperties tag is allowed in Object");
+       }
 }
 } // namespace ValidationCore
index 309a915..846db22 100644 (file)
@@ -32,83 +32,83 @@ namespace ValidationCore {
 
 class SignatureReader {
 public:
-    class Exception {
-    public:
-        VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
-        VCORE_DECLARE_EXCEPTION_TYPE(Base, TargetRestriction);
-    };
+       class Exception {
+       public:
+               VCORE_DECLARE_EXCEPTION_TYPE(ValidationCore::Exception, Base);
+               VCORE_DECLARE_EXCEPTION_TYPE(Base, TargetRestriction);
+       };
 
-    SignatureReader();
+       SignatureReader();
 
-    void initialize(SignatureData &signatureData, const std::string &xmlscheme);
+       void initialize(SignatureData &signatureData, const std::string &xmlscheme);
 
-    void read(SignatureData &signatureData);
+       void read(SignatureData &signatureData);
 
 private:
-    void blankFunction(SignatureData &signatureData);
-
-    void tokenKeyInfo(SignatureData &signatureData);
-    void tokenKeyModulus(SignatureData &signatureData);
-    void tokenKeyExponent(SignatureData &signatureData);
-    void tokenX509Data(SignatureData &signatureData);
-    void tokenX509Certificate(SignatureData &signatureData);
-    void tokenPublicKey(SignatureData &signatureData);
-    void tokenNamedCurve(SignatureData &signatureData);
-    void tokenRole(SignatureData &signatureData);
-    void tokenProfile(SignatureData &signatureData);
-    void tokenObject(SignatureData &signatureData);
-    void tokenSignatureProperties(SignatureData &signatureData);
-
-    void tokenTargetRestriction(SignatureData &signatureData);
-
-    void tokenEndKeyInfo(SignatureData &signatureData);
-    // KW     void tokenEndKeyName(SignatureData &signatureData);
-
-    void tokenEndRSAKeyValue(SignatureData &signatureData);
-
-    void tokenEndKeyModulus(SignatureData &signatureData);
-    void tokenEndKeyExponent(SignatureData &signatureData);
-    void tokenEndX509Data(SignatureData &signatureData);
-
-    void tokenEndX509Certificate(SignatureData &signatureData);
-
-    void tokenEndPublicKey(SignatureData &signatureData);
-    void tokenEndECKeyValue(SignatureData &signatureData);
-    void tokenEndIdentifier(SignatureData &signatureData);
-    void tokenEndObject(SignatureData &signatureData);
-
-    // DSA key components
-    void tokenEndDSAPComponent(SignatureData& signatureData);
-    void tokenEndDSAQComponent(SignatureData& signatureData);
-    void tokenEndDSAGComponent(SignatureData& signatureData);
-    void tokenEndDSAYComponent(SignatureData& signatureData);
-    void tokenEndDSAJComponent(SignatureData& signatureData);
-
-    void tokenEndDSAKeyValue(SignatureData& signatureData);
-
-    void tokenEndDSASeedComponent(SignatureData& signatureData);
-    void tokenEndDSAPGenCounterComponent(SignatureData& signatureData);
-
-    // temporary values required due reference parsing process
-    // optional parameters for dsa
-    std::string m_dsaKeyPComponent;
-    std::string m_dsaKeyQComponent;
-    std::string m_dsaKeyGComponent;
-    std::string m_dsaKeyYComponent;
-    std::string m_dsaKeyJComponent;
-    std::string m_dsaKeySeedComponent;
-    std::string m_dsaKeyPGenCounter;
-    // temporary values of ecdsa key
-    std::string m_publicKey;
-    std::string m_nameCurveURI;
-    std::string m_modulus;
-    std::string m_exponent;
-
-    // temporary values required due Object parsing
-    int m_signaturePropertiesCounter;
-    bool m_targetRestrictionObjectFound;
-
-    ParserSchema<SignatureReader, SignatureData> m_parserSchema;
+       void blankFunction(SignatureData &signatureData);
+
+       void tokenKeyInfo(SignatureData &signatureData);
+       void tokenKeyModulus(SignatureData &signatureData);
+       void tokenKeyExponent(SignatureData &signatureData);
+       void tokenX509Data(SignatureData &signatureData);
+       void tokenX509Certificate(SignatureData &signatureData);
+       void tokenPublicKey(SignatureData &signatureData);
+       void tokenNamedCurve(SignatureData &signatureData);
+       void tokenRole(SignatureData &signatureData);
+       void tokenProfile(SignatureData &signatureData);
+       void tokenObject(SignatureData &signatureData);
+       void tokenSignatureProperties(SignatureData &signatureData);
+
+       void tokenTargetRestriction(SignatureData &signatureData);
+
+       void tokenEndKeyInfo(SignatureData &signatureData);
+       // KW     void tokenEndKeyName(SignatureData &signatureData);
+
+       void tokenEndRSAKeyValue(SignatureData &signatureData);
+
+       void tokenEndKeyModulus(SignatureData &signatureData);
+       void tokenEndKeyExponent(SignatureData &signatureData);
+       void tokenEndX509Data(SignatureData &signatureData);
+
+       void tokenEndX509Certificate(SignatureData &signatureData);
+
+       void tokenEndPublicKey(SignatureData &signatureData);
+       void tokenEndECKeyValue(SignatureData &signatureData);
+       void tokenEndIdentifier(SignatureData &signatureData);
+       void tokenEndObject(SignatureData &signatureData);
+
+       // DSA key components
+       void tokenEndDSAPComponent(SignatureData &signatureData);
+       void tokenEndDSAQComponent(SignatureData &signatureData);
+       void tokenEndDSAGComponent(SignatureData &signatureData);
+       void tokenEndDSAYComponent(SignatureData &signatureData);
+       void tokenEndDSAJComponent(SignatureData &signatureData);
+
+       void tokenEndDSAKeyValue(SignatureData &signatureData);
+
+       void tokenEndDSASeedComponent(SignatureData &signatureData);
+       void tokenEndDSAPGenCounterComponent(SignatureData &signatureData);
+
+       // temporary values required due reference parsing process
+       // optional parameters for dsa
+       std::string m_dsaKeyPComponent;
+       std::string m_dsaKeyQComponent;
+       std::string m_dsaKeyGComponent;
+       std::string m_dsaKeyYComponent;
+       std::string m_dsaKeyJComponent;
+       std::string m_dsaKeySeedComponent;
+       std::string m_dsaKeyPGenCounter;
+       // temporary values of ecdsa key
+       std::string m_publicKey;
+       std::string m_nameCurveURI;
+       std::string m_modulus;
+       std::string m_exponent;
+
+       // temporary values required due Object parsing
+       int m_signaturePropertiesCounter;
+       bool m_targetRestrictionObjectFound;
+
+       ParserSchema<SignatureReader, SignatureData> m_parserSchema;
 };
 }
 
index d8fd3bb..1934d53 100644 (file)
@@ -76,7 +76,7 @@ inline CertTimeStatus _timeValidation(time_t lower, time_t upper, time_t current
 inline bool _isTimeStrict(const Set &stores)
 {
        return (stores.contains(TIZEN_TEST) || stores.contains(TIZEN_VERIFY))
-               ? true : false;
+                  ? true : false;
 }
 
 } // namespace anonymous
@@ -150,15 +150,16 @@ bool SignatureValidator::Impl::checkRoleURI(void)
 
        if (roleURI != TOKEN_ROLE_AUTHOR_URI && m_data.isAuthorSignature()) {
                LogWarning("URI attribute in Role tag does not "
-                       "match with signature filename.");
+                                  "match with signature filename.");
                return false;
        }
 
        if (roleURI != TOKEN_ROLE_DIST_URI && !m_data.isAuthorSignature()) {
                LogWarning("URI attribute in Role tag does not "
-                       "match with signature filename.");
+                                  "match with signature filename.");
                return false;
        }
+
        return true;
 }
 
@@ -167,9 +168,10 @@ bool SignatureValidator::Impl::checkProfileURI(void)
 {
        if (TOKEN_PROFILE_URI != m_data.getProfileURI()) {
                LogWarning("Profile tag contains unsupported value "
-                       "in URI attribute " << m_data.getProfileURI());
+                                  "in URI attribute " << m_data.getProfileURI());
                return false;
        }
+
        return true;
 }
 
@@ -236,9 +238,9 @@ VCerr SignatureValidator::Impl::makeDataBySignature(bool completeWithSystemCert)
 
        try {
                CertificateCollection collection;
-
                // Load Certificates and make chain.
                collection.load(m_data.getCertList());
+
                if (!collection.sort() || collection.empty()) {
                        LogError("Certificates do not form valid chain.");
                        return E_SIG_INVALID_CHAIN;
@@ -251,14 +253,13 @@ VCerr SignatureValidator::Impl::makeDataBySignature(bool completeWithSystemCert)
                                return E_SIG_INVALID_CHAIN;
                        } else {
                                LogDebug("Distributor N's certificate has got "
-                                       "unrecognized root CA certificate.");
+                                                "unrecognized root CA certificate.");
                                m_disregarded = true;
                        }
                }
 
                m_data.setSortedCertificateList(collection.getChain());
                LogDebug("Finish making chain successfully.");
-
        } catch (const CertificateCollection::Exception::Base &e) {
                LogError("CertificateCollection exception : " << e.DumpToString());
                return E_SIG_INVALID_CHAIN;
@@ -277,6 +278,7 @@ VCerr SignatureValidator::Impl::preStep(void)
 {
        // Make chain process.
        VCerr result = makeDataBySignature(true);
+
        if (result != E_SIG_NONE)
                return result;
 
@@ -284,21 +286,22 @@ VCerr SignatureValidator::Impl::preStep(void)
        LogDebug("Start to check certificate domain.");
        auto certificatePtr = m_data.getCertList().back();
        auto storeIdSet = createCertificateIdentifier().find(certificatePtr);
-
        // Check root CA certificate has proper domain.
        LogDebug("root certificate from " << storeIdSet.typeToString() << " domain");
+
        if (m_data.isAuthorSignature()) {
                if (!storeIdSet.contains(TIZEN_DEVELOPER)) {
                        LogError("author-signature.xml's root certificate "
-                               "isn't in tizen developer domain.");
+                                        "isn't in tizen developer domain.");
                        return E_SIG_INVALID_CHAIN;
                }
        } else {
                if (storeIdSet.contains(TIZEN_DEVELOPER)) {
                        LogError("distributor signautre root certificate "
-                               "shouldn't be in tizen developer domain.");
+                                        "shouldn't be in tizen developer domain.");
                        return E_SIG_INVALID_CHAIN;
                }
+
                if (m_data.getSignatureNumber() == 1 && !storeIdSet.isContainsVis()) {
                        LogError("signature1.xml has got unrecognized root CA certificate.");
                        return E_SIG_INVALID_CHAIN;
@@ -310,14 +313,12 @@ VCerr SignatureValidator::Impl::preStep(void)
 
        m_data.setStorageType(storeIdSet);
        LogDebug("Finish checking certificate domain.");
-
        /*
         * We add only Root CA certificate because the rest
         * of certificates are present in signature files ;-)
         */
        m_context.signatureFile = m_data.getSignatureFileName();
        m_context.certificatePtr = m_data.getCertList().back();
-
        /* certificate time check */
        time_t lower = m_data.getEndEntityCertificatePtr()->getNotBefore();
        time_t upper = m_data.getEndEntityCertificatePtr()->getNotAfter();
@@ -326,9 +327,10 @@ VCerr SignatureValidator::Impl::preStep(void)
 
        if (status != CertTimeStatus::VALID) {
                LogDebug("Certificate's time is invalid.");
+
                if (_isTimeStrict(storeIdSet))
                        return status == CertTimeStatus::EXPIRED
-                                       ? E_SIG_CERT_EXPIRED : E_SIG_CERT_NOT_YET;
+                                  ? E_SIG_CERT_EXPIRED : E_SIG_CERT_NOT_YET;
 
                time_t mid = _getMidTime(lower, upper);
                LogInfo("Use middle notBeforeTime and notAfterTime."
@@ -350,6 +352,7 @@ VCerr SignatureValidator::Impl::baseCheck(
        try {
                // Make certificate chain, check certificate info
                VCerr result = preStep();
+
                if (result != E_SIG_NONE)
                        return result;
 
@@ -359,9 +362,9 @@ VCerr SignatureValidator::Impl::baseCheck(
 
                // XmlSec validate
                XmlSecSingleton::Instance().validate(m_context);
-
                // Check reference of 'Object' tag - OID
                m_data.setReference(m_context.referenceSet);
+
                if (!checkObjectReferences()) {
                        LogWarning("Failed to check Object References");
                        return E_SIG_INVALID_REF;
@@ -370,6 +373,7 @@ VCerr SignatureValidator::Impl::baseCheck(
                // Check reference's existence
                if (checkReferences) {
                        ReferenceValidator fileValidator(contentPath);
+
                        if (ReferenceValidator::NO_ERROR != fileValidator.checkReferences(m_data)) {
                                LogWarning("Invalid package - file references broken");
                                return E_SIG_INVALID_REF;
@@ -383,7 +387,6 @@ VCerr SignatureValidator::Impl::baseCheck(
                }
 
                LogDebug("Signature validation check done successfully ");
-
        } catch (const CertificateCollection::Exception::Base &e) {
                LogError("CertificateCollection exception : " << e.DumpToString());
                return E_SIG_INVALID_CHAIN;
@@ -409,8 +412,10 @@ VCerr SignatureValidator::Impl::baseCheck(
                LogInfo("Ocsp check throw exeption : " << e.DumpToString());
 #ifdef PROFILE_MOBILE
                LogInfo("Launch cert-checker.");
+
                if (cchecker_ocsp_request() != 0)
                        LogError("Load cert-checker failed.");
+
 #endif
        } catch (const std::exception &e) {
                LogError("std exception occured : " << e.what());
@@ -430,6 +435,7 @@ VCerr SignatureValidator::Impl::baseCheckList(
        try {
                // Make certificate chain, check certificate info
                VCerr result = preStep();
+
                if (result != E_SIG_NONE)
                        return result;
 
@@ -445,7 +451,6 @@ VCerr SignatureValidator::Impl::baseCheckList(
                }
 
                LogDebug("Signature validation of check list done successfully ");
-
        } catch (const CertificateCollection::Exception::Base &e) {
                LogError("CertificateCollection exception : " << e.DumpToString());
                return E_SIG_INVALID_CHAIN;
@@ -471,8 +476,10 @@ VCerr SignatureValidator::Impl::baseCheckList(
                LogInfo("Ocsp check throw exeption : " << e.DumpToString());
 #ifdef PROFILE_MOBILE
                LogInfo("Launch cert-checker.");
+
                if (cchecker_ocsp_request() != 0)
                        LogError("Load cert-checker failed.");
+
 #endif
        } catch (...) {
                LogError("Unknown exception in SignatureValidator::checkList");
@@ -489,12 +496,9 @@ VCerr SignatureValidator::Impl::check(
        SignatureData &outData)
 {
        VCerr result;
-
        result = baseCheck(contentPath, checkOcsp, checkReferences);
        result = additionalCheck(result);
-
        outData = m_data;
-
        return result;
 }
 
@@ -504,12 +508,9 @@ VCerr SignatureValidator::Impl::checkList(
        SignatureData &outData)
 {
        VCerr result;
-
        result = baseCheckList(checkOcsp, uriList);
        result = additionalCheck(result);
-
        outData = m_data;
-
        return result;
 }
 
@@ -518,31 +519,58 @@ VCerr SignatureValidator::Impl::makeChainBySignature(
        CertificateList &certList)
 {
        VCerr result = makeDataBySignature(completeWithSystemCert);
+
        if (result != E_SIG_NONE)
                return result;
 
        certList = m_data.getCertList();
-
        return E_SIG_NONE;
 }
 
 std::string SignatureValidator::Impl::errorToString(VCerr code)
 {
        switch (code) {
-       case E_SIG_NONE:           return "Success.";
-       case E_SIG_INVALID_FORMAT: return "Invalid format of signature file.";
-       case E_SIG_INVALID_CERT:   return "Invalid format of certificate in signature.";
-       case E_SIG_INVALID_CHAIN:  return "Invalid certificate chain with certificate in signature.";
-       case E_SIG_INVALID_SIG:    return "Invalid signature. Signed with wrong key, changed signature file or changed package file.";
-       case E_SIG_INVALID_REF:    return "Invalid file reference. An unsinged file was found.";
-       case E_SIG_CERT_EXPIRED:   return "Certificate in signature was expired.";
-       case E_SIG_CERT_NOT_YET:   return "Certificate in signature is not valid yet.";
-       case E_SIG_DISREGARDED:    return "Signature validation can be disregarded in some cases.";
-       case E_SIG_REVOKED:        return "One of certificate was revoked in certificate chain.";
-       case E_SIG_PLUGIN:         return "Failed to load plugin for additional validation check.";
-       case E_SIG_OUT_OF_MEM:     return "Out of memory.";
-       case E_SIG_UNKNOWN:        return "Unknown error.";
-       default:                   return m_pluginHandler.errorToString(code);
+       case E_SIG_NONE:
+               return "Success.";
+
+       case E_SIG_INVALID_FORMAT:
+               return "Invalid format of signature file.";
+
+       case E_SIG_INVALID_CERT:
+               return "Invalid format of certificate in signature.";
+
+       case E_SIG_INVALID_CHAIN:
+               return "Invalid certificate chain with certificate in signature.";
+
+       case E_SIG_INVALID_SIG:
+               return "Invalid signature. Signed with wrong key, changed signature file or changed package file.";
+
+       case E_SIG_INVALID_REF:
+               return "Invalid file reference. An unsinged file was found.";
+
+       case E_SIG_CERT_EXPIRED:
+               return "Certificate in signature was expired.";
+
+       case E_SIG_CERT_NOT_YET:
+               return "Certificate in signature is not valid yet.";
+
+       case E_SIG_DISREGARDED:
+               return "Signature validation can be disregarded in some cases.";
+
+       case E_SIG_REVOKED:
+               return "One of certificate was revoked in certificate chain.";
+
+       case E_SIG_PLUGIN:
+               return "Failed to load plugin for additional validation check.";
+
+       case E_SIG_OUT_OF_MEM:
+               return "Out of memory.";
+
+       case E_SIG_UNKNOWN:
+               return "Unknown error.";
+
+       default:
+               return m_pluginHandler.errorToString(code);
        }
 }
 
@@ -572,10 +600,10 @@ VCerr SignatureValidator::check(
                return E_SIG_OUT_OF_MEM;
 
        return m_pImpl->check(
-                       contentPath,
-                       checkOcsp,
-                       checkReferences,
-                       outData);
+                          contentPath,
+                          checkOcsp,
+                          checkReferences,
+                          outData);
 }
 
 VCerr SignatureValidator::checkList(
@@ -587,9 +615,9 @@ VCerr SignatureValidator::checkList(
                return E_SIG_OUT_OF_MEM;
 
        return m_pImpl->checkList(
-                       checkOcsp,
-                       uriList,
-                       outData);
+                          checkOcsp,
+                          uriList,
+                          outData);
 }
 
 VCerr SignatureValidator::makeChainBySignature(
index de61405..8dc4692 100644 (file)
@@ -64,37 +64,37 @@ using UriList = std::list<std::string>;
  */
 class SignatureValidator {
 public:
-    SignatureValidator(const SignatureFileInfo &info);
-    virtual ~SignatureValidator();
+       SignatureValidator(const SignatureFileInfo &info);
+       virtual ~SignatureValidator();
 
-    SignatureValidator() = delete;
-    SignatureValidator(const SignatureValidator &) = delete;
-    const SignatureValidator &operator=(const SignatureValidator &) = delete;
+       SignatureValidator() = delete;
+       SignatureValidator(const SignatureValidator &) = delete;
+       const SignatureValidator &operator=(const SignatureValidator &) = delete;
 
-    VCerr check(
-        const std::string &contentPath,
-        bool checkOcsp,
-        bool checkReferences,
-        SignatureData &outData);
+       VCerr check(
+               const std::string &contentPath,
+               bool checkOcsp,
+               bool checkReferences,
+               SignatureData &outData);
 
-    VCerr checkList(
-        bool checkOcsp,
-        const UriList &uriList,
-        SignatureData &outData);
+       VCerr checkList(
+               bool checkOcsp,
+               const UriList &uriList,
+               SignatureData &outData);
 
-    /*
-     *  @Remarks : cert list isn't completed with self-signed root CA system cert
-     *             if completeWithSystemCert is false.
-     */
-    VCerr makeChainBySignature(
-        bool completeWithSystemCert,
-        CertificateList &certList);
+       /*
+        *  @Remarks : cert list isn't completed with self-signed root CA system cert
+        *             if completeWithSystemCert is false.
+        */
+       VCerr makeChainBySignature(
+               bool completeWithSystemCert,
+               CertificateList &certList);
 
-    std::string errorToString(int code);
+       std::string errorToString(int code);
 
 private:
-    class Impl;
-    std::unique_ptr<Impl> m_pImpl;
+       class Impl;
+       std::unique_ptr<Impl> m_pImpl;
 };
 
 } // namespace ValidationCore
index fd04664..45a642b 100644 (file)
@@ -32,12 +32,10 @@ namespace {
 
 void _gmtime_adj(struct tm *tm, int offset)
 {
-    time_t t = mktime(tm);
-    t += offset;
-
-    memset(tm, 0, sizeof(struct tm));
-
-    gmtime_r(&t, tm);
+       time_t t = mktime(tm);
+       t += offset;
+       memset(tm, 0, sizeof(struct tm));
+       gmtime_r(&t, tm);
 }
 
 /*
@@ -49,119 +47,150 @@ void _gmtime_adj(struct tm *tm, int offset)
  */
 int asn1_generalizedtime_to_tm(struct tm *tm, const ASN1_GENERALIZEDTIME *d)
 {
-    static const int min[9] = { 0, 0, 1, 1, 0, 0, 0, 0, 0 };
-    static const int max[9] = { 99, 99, 12, 31, 23, 59, 59, 12, 59 };
-    char *a;
-    int n, i, l, o;
-
-    if (d->type != V_ASN1_GENERALIZEDTIME)
-        return (0);
-    l = d->length;
-    a = (char *)d->data;
-    o = 0;
-    /*
-     * GENERALIZEDTIME is similar to UTCTIME except the year is represented
-     * as YYYY. This stuff treats everything as a two digit field so make
-     * first two fields 00 to 99
-     */
-    if (l < 13)
-        goto err;
-    for (i = 0; i < 7; i++) {
-        if ((i == 6) && ((a[o] == 'Z') || (a[o] == '+') || (a[o] == '-'))) {
-            i++;
-            if (tm)
-                tm->tm_sec = 0;
-            break;
-        }
-        if ((a[o] < '0') || (a[o] > '9'))
-            goto err;
-        n = a[o] - '0';
-        if (++o > l)
-            goto err;
-
-        if ((a[o] < '0') || (a[o] > '9'))
-            goto err;
-        n = (n * 10) + a[o] - '0';
-        if (++o > l)
-            goto err;
-
-        if ((n < min[i]) || (n > max[i]))
-            goto err;
-        if (tm) {
-            switch (i) {
-            case 0:
-                tm->tm_year = n * 100 - 1900;
-                break;
-            case 1:
-                tm->tm_year += n;
-                break;
-            case 2:
-                tm->tm_mon = n - 1;
-                break;
-            case 3:
-                tm->tm_mday = n;
-                break;
-            case 4:
-                tm->tm_hour = n;
-                break;
-            case 5:
-                tm->tm_min = n;
-                break;
-            case 6:
-                tm->tm_sec = n;
-                break;
-            }
-        }
-    }
-    /*
-     * Optional fractional seconds: decimal point followed by one or more
-     * digits.
-     */
-    if (a[o] == '.') {
-        if (++o > l)
-            goto err;
-        i = o;
-        while ((a[o] >= '0') && (a[o] <= '9') && (o <= l))
-            o++;
-        /* Must have at least one digit after decimal point */
-        if (i == o)
-            goto err;
-    }
-
-    if (a[o] == 'Z')
-        o++;
-    else if ((a[o] == '+') || (a[o] == '-')) {
-        int offsign = a[o] == '-' ? -1 : 1, offset = 0;
-        o++;
-        if (o + 4 > l)
-            goto err;
-        for (i = 7; i < 9; i++) {
-            if ((a[o] < '0') || (a[o] > '9'))
-                goto err;
-            n = a[o] - '0';
-            o++;
-            if ((a[o] < '0') || (a[o] > '9'))
-                goto err;
-            n = (n * 10) + a[o] - '0';
-            if ((n < min[i]) || (n > max[i]))
-                goto err;
-            if (tm) {
-                if (i == 7)
-                    offset = n * 3600;
-                else if (i == 8)
-                    offset += n * 60;
-            }
-            o++;
-        }
-        if (offset)
-            _gmtime_adj(tm, offset * offsign);
-    } else if (a[o]) {
-        /* Missing time zone information. */
-        goto err;
-    }
-    return (o == l);
- err:
-    return (0);
+       static const int min[9] = { 0, 0, 1, 1, 0, 0, 0, 0, 0 };
+       static const int max[9] = { 99, 99, 12, 31, 23, 59, 59, 12, 59 };
+       char *a;
+       int n, i, l, o;
+
+       if (d->type != V_ASN1_GENERALIZEDTIME)
+               return (0);
+
+       l = d->length;
+       a = (char *)d->data;
+       o = 0;
+
+       /*
+        * GENERALIZEDTIME is similar to UTCTIME except the year is represented
+        * as YYYY. This stuff treats everything as a two digit field so make
+        * first two fields 00 to 99
+        */
+       if (l < 13)
+               goto err;
+
+       for (i = 0; i < 7; i++) {
+               if ((i == 6) && ((a[o] == 'Z') || (a[o] == '+') || (a[o] == '-'))) {
+                       i++;
+
+                       if (tm)
+                               tm->tm_sec = 0;
+
+                       break;
+               }
+
+               if ((a[o] < '0') || (a[o] > '9'))
+                       goto err;
+
+               n = a[o] - '0';
+
+               if (++o > l)
+                       goto err;
+
+               if ((a[o] < '0') || (a[o] > '9'))
+                       goto err;
+
+               n = (n * 10) + a[o] - '0';
+
+               if (++o > l)
+                       goto err;
+
+               if ((n < min[i]) || (n > max[i]))
+                       goto err;
+
+               if (tm) {
+                       switch (i) {
+                       case 0:
+                               tm->tm_year = n * 100 - 1900;
+                               break;
+
+                       case 1:
+                               tm->tm_year += n;
+                               break;
+
+                       case 2:
+                               tm->tm_mon = n - 1;
+                               break;
+
+                       case 3:
+                               tm->tm_mday = n;
+                               break;
+
+                       case 4:
+                               tm->tm_hour = n;
+                               break;
+
+                       case 5:
+                               tm->tm_min = n;
+                               break;
+
+                       case 6:
+                               tm->tm_sec = n;
+                               break;
+                       }
+               }
+       }
+
+       /*
+        * Optional fractional seconds: decimal point followed by one or more
+        * digits.
+        */
+       if (a[o] == '.') {
+               if (++o > l)
+                       goto err;
+
+               i = o;
+
+               while ((a[o] >= '0') && (a[o] <= '9') && (o <= l))
+                       o++;
+
+               /* Must have at least one digit after decimal point */
+               if (i == o)
+                       goto err;
+       }
+
+       if (a[o] == 'Z') {
+               o++;
+       } else if ((a[o] == '+') || (a[o] == '-')) {
+               int offsign = a[o] == '-' ? -1 : 1, offset = 0;
+               o++;
+
+               if (o + 4 > l)
+                       goto err;
+
+               for (i = 7; i < 9; i++) {
+                       if ((a[o] < '0') || (a[o] > '9'))
+                               goto err;
+
+                       n = a[o] - '0';
+                       o++;
+
+                       if ((a[o] < '0') || (a[o] > '9'))
+                               goto err;
+
+                       n = (n * 10) + a[o] - '0';
+
+                       if ((n < min[i]) || (n > max[i]))
+                               goto err;
+
+                       if (tm) {
+                               if (i == 7)
+                                       offset = n * 3600;
+                               else if (i == 8)
+                                       offset += n * 60;
+                       }
+
+                       o++;
+               }
+
+               if (offset)
+                       _gmtime_adj(tm, offset * offsign);
+       } else if (a[o]) {
+               /* Missing time zone information. */
+               goto err;
+       }
+
+       return (o == l);
+err:
+       return (0);
 }
 
 /*
@@ -172,94 +201,120 @@ int asn1_generalizedtime_to_tm(struct tm *tm, const ASN1_GENERALIZEDTIME *d)
  */
 int asn1_utctime_to_tm(struct tm *tm, const ASN1_UTCTIME *d)
 {
-    static const int min[8] = { 0, 1, 1, 0, 0, 0, 0, 0 };
-    static const int max[8] = { 99, 12, 31, 23, 59, 59, 12, 59 };
-    char *a;
-    int n, i, l, o;
-
-    if (d->type != V_ASN1_UTCTIME)
-        return (0);
-    l = d->length;
-    a = (char *)d->data;
-    o = 0;
-
-    if (l < 11)
-        goto err;
-    for (i = 0; i < 6; i++) {
-        if ((i == 5) && ((a[o] == 'Z') || (a[o] == '+') || (a[o] == '-'))) {
-            i++;
-            if (tm)
-                tm->tm_sec = 0;
-            break;
-        }
-        if ((a[o] < '0') || (a[o] > '9'))
-            goto err;
-        n = a[o] - '0';
-        if (++o > l)
-            goto err;
-
-        if ((a[o] < '0') || (a[o] > '9'))
-            goto err;
-        n = (n * 10) + a[o] - '0';
-        if (++o > l)
-            goto err;
-
-        if ((n < min[i]) || (n > max[i]))
-            goto err;
-        if (tm) {
-            switch (i) {
-            case 0:
-                tm->tm_year = n < 50 ? n + 100 : n;
-                break;
-            case 1:
-                tm->tm_mon = n - 1;
-                break;
-            case 2:
-                tm->tm_mday = n;
-                break;
-            case 3:
-                tm->tm_hour = n;
-                break;
-            case 4:
-                tm->tm_min = n;
-                break;
-            case 5:
-                tm->tm_sec = n;
-                break;
-            }
-        }
-    }
-    if (a[o] == 'Z')
-        o++;
-    else if ((a[o] == '+') || (a[o] == '-')) {
-        int offsign = a[o] == '-' ? -1 : 1, offset = 0;
-        o++;
-        if (o + 4 > l)
-            goto err;
-        for (i = 6; i < 8; i++) {
-            if ((a[o] < '0') || (a[o] > '9'))
-                goto err;
-            n = a[o] - '0';
-            o++;
-            if ((a[o] < '0') || (a[o] > '9'))
-                goto err;
-            n = (n * 10) + a[o] - '0';
-            if ((n < min[i]) || (n > max[i]))
-                goto err;
-            if (tm) {
-                if (i == 6)
-                    offset = n * 3600;
-                else if (i == 7)
-                    offset += n * 60;
-            }
-            o++;
-        }
-        if (offset)
-            _gmtime_adj(tm, offset * offsign);
-    }
-    return o == l;
- err:
-    return 0;
+       static const int min[8] = { 0, 1, 1, 0, 0, 0, 0, 0 };
+       static const int max[8] = { 99, 12, 31, 23, 59, 59, 12, 59 };
+       char *a;
+       int n, i, l, o;
+
+       if (d->type != V_ASN1_UTCTIME)
+               return (0);
+
+       l = d->length;
+       a = (char *)d->data;
+       o = 0;
+
+       if (l < 11)
+               goto err;
+
+       for (i = 0; i < 6; i++) {
+               if ((i == 5) && ((a[o] == 'Z') || (a[o] == '+') || (a[o] == '-'))) {
+                       i++;
+
+                       if (tm)
+                               tm->tm_sec = 0;
+
+                       break;
+               }
+
+               if ((a[o] < '0') || (a[o] > '9'))
+                       goto err;
+
+               n = a[o] - '0';
+
+               if (++o > l)
+                       goto err;
+
+               if ((a[o] < '0') || (a[o] > '9'))
+                       goto err;
+
+               n = (n * 10) + a[o] - '0';
+
+               if (++o > l)
+                       goto err;
+
+               if ((n < min[i]) || (n > max[i]))
+                       goto err;
+
+               if (tm) {
+                       switch (i) {
+                       case 0:
+                               tm->tm_year = n < 50 ? n + 100 : n;
+                               break;
+
+                       case 1:
+                               tm->tm_mon = n - 1;
+                               break;
+
+                       case 2:
+                               tm->tm_mday = n;
+                               break;
+
+                       case 3:
+                               tm->tm_hour = n;
+                               break;
+
+                       case 4:
+                               tm->tm_min = n;
+                               break;
+
+                       case 5:
+                               tm->tm_sec = n;
+                               break;
+                       }
+               }
+       }
+
+       if (a[o] == 'Z') {
+               o++;
+       } else if ((a[o] == '+') || (a[o] == '-')) {
+               int offsign = a[o] == '-' ? -1 : 1, offset = 0;
+               o++;
+
+               if (o + 4 > l)
+                       goto err;
+
+               for (i = 6; i < 8; i++) {
+                       if ((a[o] < '0') || (a[o] > '9'))
+                               goto err;
+
+                       n = a[o] - '0';
+                       o++;
+
+                       if ((a[o] < '0') || (a[o] > '9'))
+                               goto err;
+
+                       n = (n * 10) + a[o] - '0';
+
+                       if ((n < min[i]) || (n > max[i]))
+                               goto err;
+
+                       if (tm) {
+                               if (i == 6)
+                                       offset = n * 3600;
+                               else if (i == 7)
+                                       offset += n * 60;
+                       }
+
+                       o++;
+               }
+
+               if (offset)
+                       _gmtime_adj(tm, offset * offsign);
+       }
+
+       return o == l;
+err:
+       return 0;
 }
 
 } // namespace anonymous
@@ -268,40 +323,38 @@ namespace ValidationCore {
 
 int asn1TimeToTimeT(ASN1_TIME *t, time_t *res)
 {
-    if (res == NULL)
-        return 0;
-
-    int ret = 0;
-    struct tm tm;
-
-    memset(&tm, 0, sizeof(tm));
+       if (res == NULL)
+               return 0;
 
-    if (t->type == V_ASN1_UTCTIME)
-        ret = asn1_utctime_to_tm(&tm, t);
-    else if (t->type == V_ASN1_GENERALIZEDTIME)
-        ret = asn1_generalizedtime_to_tm(&tm, t);
-    else
-        ret = 0;
+       int ret = 0;
+       struct tm tm;
+       memset(&tm, 0, sizeof(tm));
 
-    if (ret == 0)
-        return 0;
+       if (t->type == V_ASN1_UTCTIME)
+               ret = asn1_utctime_to_tm(&tm, t);
+       else if (t->type == V_ASN1_GENERALIZEDTIME)
+               ret = asn1_generalizedtime_to_tm(&tm, t);
+       else
+               ret = 0;
 
-    char buf[27]; // asctime_r return 26 characters
-    LogDebug("Convert asn1 to tm: " << asctime_r(&tm, buf));
-    *res = mktime(&tm);
+       if (ret == 0)
+               return 0;
 
-    // If time_t occured overflow, set TIME_MAX.
-    if(*res == -1) {
-        LogDebug("Occured overflow time_t. it may year 2038 problem.");
-        *res = TIME_MAX;
-    }
+       char buf[27]; // asctime_r return 26 characters
+       LogDebug("Convert asn1 to tm: " << asctime_r(&tm, buf));
+       *res = mktime(&tm);
 
-    // For Debugging.
-    struct tm localTm;
-    localtime_r(res, &localTm);
-    LogDebug("Result time_t(tm format): " << asctime_r(&localTm, buf));
+       // If time_t occured overflow, set TIME_MAX.
+       if (*res == -1) {
+               LogDebug("Occured overflow time_t. it may year 2038 problem.");
+               *res = TIME_MAX;
+       }
 
-    return 1;
+       // For Debugging.
+       struct tm localTm;
+       localtime_r(res, &localTm);
+       LogDebug("Result time_t(tm format): " << asctime_r(&localTm, buf));
+       return 1;
 }
 
 } // namespace ValidationCore
index 2c2f01d..4318f6b 100644 (file)
@@ -32,7 +32,7 @@
 
 namespace ValidationCore {
 
-const CertificateIdentifiercreateCertificateIdentifier()
+const CertificateIdentifier &createCertificateIdentifier()
 {
        static CertificateIdentifier certificateIdentifier;
        static bool initialized = false;
@@ -42,18 +42,15 @@ const CertificateIdentifier& createCertificateIdentifier()
                std::string schema(FINGERPRINT_LIST_SCHEMA_PATH);
                LogDebug("File with fingerprint list is : " << file);
                LogDebug("File with fingerprint list schema is : " << schema);
-
                // Read the fingerprint original list.
                CertificateConfigReader reader;
                reader.initialize(file, schema);
                reader.read(certificateIdentifier);
 
                // Check the fingerprint extention list exist.
-               if (std::ifstream(FINGERPRINT_LIST_EXT_PATH))
-               {
+               if (std::ifstream(FINGERPRINT_LIST_EXT_PATH)) {
                        std::string extFile(FINGERPRINT_LIST_EXT_PATH);
                        LogDebug("Exist fingerprint extention file, add it.");
-
                        // Read the fingerprint extention list.
                        CertificateConfigReader extReader;
                        extReader.initialize(extFile, schema);
@@ -63,7 +60,7 @@ const CertificateIdentifier& createCertificateIdentifier()
                initialized = true;
        }
 
-    return certificateIdentifier;
+       return certificateIdentifier;
 }
 
 } // namespace ValidationCore
index 6b75fe5..b5d87b4 100644 (file)
@@ -30,7 +30,7 @@ namespace ValidationCore {
 // CertificateConfigReader and CertificateIdentificator so
 // we are using factory method to create CertificateIdentificator.
 
-const CertificateIdentifiercreateCertificateIdentifier();
+const CertificateIdentifier &createCertificateIdentifier();
 } // namespace ValidationCore
 
 #endif // _WRT_ENGINE_SRC_INSTALLER_CORE_VALIDATION_CORE_VALIDATORFACTORY_H_
index 8093412..2ac5318 100644 (file)
@@ -51,43 +51,43 @@ namespace {
 
 template <typename Type>
 struct CustomPtr {
-    Type ptr;
-    std::function<void(Type)> deleter;
-
-    CustomPtr() = delete;
-
-    explicit CustomPtr(Type in, std::function<void(Type)> d)
-        : ptr(in)
-        , deleter(d) {}
-
-    ~CustomPtr()
-    {
-        deleter(ptr);
-    }
-
-    inline Type get(void) const
-    {
-        return ptr;
-    }
-
-    inline Type operator->() const
-    {
-        return ptr;
-    }
-
-    inline bool operator!() const
-    {
-        return (ptr == nullptr) ? true : false;
-    }
+       Type ptr;
+       std::function<void(Type)> deleter;
+
+       CustomPtr() = delete;
+
+       explicit CustomPtr(Type in, std::function<void(Type)> d)
+               : ptr(in)
+               , deleter(d) {}
+
+       ~CustomPtr()
+       {
+               deleter(ptr);
+       }
+
+       inline Type get(void) const
+       {
+               return ptr;
+       }
+
+       inline Type operator->() const
+       {
+               return ptr;
+       }
+
+       inline bool operator!() const
+       {
+               return (ptr == nullptr) ? true : false;
+       }
 };
 
 struct FileWrapper {
-    FileWrapper(void *argFile, bool argReleased)
-      : file(argFile)
-      , released(argReleased)
-    {}
-    void *file;
-    bool released;
+       FileWrapper(void *argFile, bool argReleased)
+               : file(argFile)
+               , released(argReleased)
+       {}
+       void *file;
+       bool released;
 };
 
 } // anonymous namespace
@@ -100,322 +100,323 @@ std::string XmlSec::s_prefixPath;
 
 int XmlSec::fileMatchCallback(const char *filename)
 {
-    std::string path = s_prefixPath + filename;
-
-    return xmlFileMatch(path.c_str());
+       std::string path = s_prefixPath + filename;
+       return xmlFileMatch(path.c_str());
 }
 
 void *XmlSec::fileOpenCallback(const char *filename)
 {
-    std::string path = s_prefixPath + filename;
-
-    LogDebug("Xmlsec opening : " << path);
-    return new FileWrapper(xmlFileOpen(path.c_str()), false);
+       std::string path = s_prefixPath + filename;
+       LogDebug("Xmlsec opening : " << path);
+       return new FileWrapper(xmlFileOpen(path.c_str()), false);
 }
 
 int XmlSec::fileReadCallback(void *context,
-        char *buffer,
-        int len)
+                                                        char *buffer,
+                                                        int len)
 {
-    FileWrapper *fw = static_cast<FileWrapper*>(context);
-    if (fw->released)
-        return 0;
+       FileWrapper *fw = static_cast<FileWrapper *>(context);
+
+       if (fw->released)
+               return 0;
 
-    int output = xmlFileRead(fw->file, buffer, len);
-    if (output == 0) {
-        fw->released = true;
-        xmlFileClose(fw->file);
-    }
+       int output = xmlFileRead(fw->file, buffer, len);
 
-    return output;
+       if (output == 0) {
+               fw->released = true;
+               xmlFileClose(fw->file);
+       }
+
+       return output;
 }
 
 int XmlSec::fileCloseCallback(void *context)
 {
-    FileWrapper *fw = static_cast<FileWrapper*>(context);
-    int output = 0;
-    if (!fw->released)
-        output = xmlFileClose(fw->file);
+       FileWrapper *fw = static_cast<FileWrapper *>(context);
+       int output = 0;
 
-    delete fw;
+       if (!fw->released)
+               output = xmlFileClose(fw->file);
 
-    return output;
+       delete fw;
+       return output;
 }
 
 void XmlSec::fileExtractPrefix(XmlSecContext &context)
 {
-    if (!context.workingDirectory.empty()) {
-        s_prefixPath = context.workingDirectory;
-        return;
-    }
-
-    s_prefixPath = context.signatureFile;
-    size_t pos = s_prefixPath.rfind('/');
-    if (pos == std::string::npos)
-        s_prefixPath.clear();
-    else
-        s_prefixPath.erase(pos + 1, std::string::npos);
+       if (!context.workingDirectory.empty()) {
+               s_prefixPath = context.workingDirectory;
+               return;
+       }
+
+       s_prefixPath = context.signatureFile;
+       size_t pos = s_prefixPath.rfind('/');
+
+       if (pos == std::string::npos)
+               s_prefixPath.clear();
+       else
+               s_prefixPath.erase(pos + 1, std::string::npos);
 }
 
 void LogDebugPrint(const char *file,
-                   int line,
-                   const char *func,
-                   const char *errorObject,
-                   const char *errorSubject,
-                   int reason,
-                   const char *msg)
+                                  int line,
+                                  const char *func,
+                                  const char *errorObject,
+                                  const char *errorSubject,
+                                  int reason,
+                                  const char *msg)
 {
-    std::stringstream ss;
-    ss << "[" << file << ":" << line << "][" << func
-        << "] : [" << errorObject << "] : [" << errorSubject
-        << "] : [" << msg << "]" << std::endl;
-
-    if (reason == 256)
-        LogError(ss.str());
-    else
-        LogDebug(ss.str());
+       std::stringstream ss;
+       ss << "[" << file << ":" << line << "][" << func
+          << "] : [" << errorObject << "] : [" << errorSubject
+          << "] : [" << msg << "]" << std::endl;
+
+       if (reason == 256)
+               LogError(ss.str());
+       else
+               LogDebug(ss.str());
 }
 
 XmlSec::XmlSec()
-    : m_initialized(false)
-    , m_pList(nullptr)
+       : m_initialized(false)
+       , m_pList(nullptr)
 {
-    LIBXML_TEST_VERSION
-        xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
-    xmlSubstituteEntitiesDefault(1);
+       LIBXML_TEST_VERSION
+       xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
+       xmlSubstituteEntitiesDefault(1);
 #ifndef XMLSEC_NO_XSLT
-    xmlIndentTreeOutput = 1;
+       xmlIndentTreeOutput = 1;
 #endif
 
-    if (xmlSecInit() < 0)
-        ThrowMsg(Exception::InternalError, "Xmlsec initialization failed.");
+       if (xmlSecInit() < 0)
+               ThrowMsg(Exception::InternalError, "Xmlsec initialization failed.");
 
-    if (xmlSecCheckVersion() != 1) {
-        xmlSecShutdown();
-        ThrowMsg(Exception::InternalError,
-                 "Loaded xmlsec library version is not compatible.");
-    }
+       if (xmlSecCheckVersion() != 1) {
+               xmlSecShutdown();
+               ThrowMsg(Exception::InternalError,
+                                "Loaded xmlsec library version is not compatible.");
+       }
 
 #ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
-    if (xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) < 0) {
-        xmlSecShutdown();
-        LogError(
-            "Error: unable to load default xmlsec-crypto library. Make sure "
-            "that you have it installed and check shared libraries path "
-            "(LD_LIBRARY_PATH) envornment variable.");
-        ThrowMsg(Exception::InternalError,
-                 "Unable to load default xmlsec-crypto library.");
-    }
+
+       if (xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) < 0) {
+               xmlSecShutdown();
+               LogError(
+                       "Error: unable to load default xmlsec-crypto library. Make sure "
+                       "that you have it installed and check shared libraries path "
+                       "(LD_LIBRARY_PATH) envornment variable.");
+               ThrowMsg(Exception::InternalError,
+                                "Unable to load default xmlsec-crypto library.");
+       }
+
 #endif
 
-    if (xmlSecCryptoAppInit(nullptr) < 0) {
-        xmlSecShutdown();
-        ThrowMsg(Exception::InternalError, "Crypto initialization failed.");
-    }
+       if (xmlSecCryptoAppInit(nullptr) < 0) {
+               xmlSecShutdown();
+               ThrowMsg(Exception::InternalError, "Crypto initialization failed.");
+       }
 
-    if (xmlSecCryptoInit() < 0) {
-        xmlSecCryptoAppShutdown();
-        xmlSecShutdown();
-        ThrowMsg(Exception::InternalError,
-                 "Xmlsec-crypto initialization failed.");
-    }
+       if (xmlSecCryptoInit() < 0) {
+               xmlSecCryptoAppShutdown();
+               xmlSecShutdown();
+               ThrowMsg(Exception::InternalError,
+                                "Xmlsec-crypto initialization failed.");
+       }
 
-    m_initialized = true;
+       m_initialized = true;
 }
 
 XmlSec::~XmlSec()
 {
-    if (m_initialized)
-        return;
-
-    xmlSecCryptoShutdown();
-    xmlSecCryptoAppShutdown();
-    xmlSecShutdown();
+       if (m_initialized)
+               return;
 
+       xmlSecCryptoShutdown();
+       xmlSecCryptoAppShutdown();
+       xmlSecShutdown();
 #ifndef XMLSEC_NO_XSLT
-    xsltCleanupGlobals();
+       xsltCleanupGlobals();
 #endif
-
-    s_prefixPath.clear();
-    m_initialized = false;
+       s_prefixPath.clear();
+       m_initialized = false;
 }
 
 void XmlSec::validateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngrPtr)
 {
-    fileExtractPrefix(context);
-    LogDebug("Prefix path : " << s_prefixPath);
-
-    xmlSecIOCleanupCallbacks();
-
-    xmlSecIORegisterCallbacks(
-        fileMatchCallback,
-        fileOpenCallback,
-        fileReadCallback,
-        fileCloseCallback);
-
-    CustomPtr<xmlDocPtr> docPtr(xmlParseFile(context.signatureFile.c_str()), xmlFreeDoc);
-    if (!docPtr || xmlDocGetRootElement(docPtr.get()) == nullptr)
-        ThrowMsg(Exception::InvalidFormat,
-                "Unable to parse sig xml file: " << context.signatureFile);
-
-    xmlNodePtr node = xmlSecFindNode(
-            xmlDocGetRootElement(docPtr.get()),
-            xmlSecNodeSignature,
-            xmlSecDSigNs);
-    if (node == nullptr)
-        ThrowMsg(Exception::InvalidFormat,
-                "Start node not found in " << context.signatureFile);
-
-    CustomPtr<xmlSecDSigCtxPtr> dsigCtx(xmlSecDSigCtxCreate(mngrPtr), xmlSecDSigCtxDestroy);
-    if (!dsigCtx)
-        ThrowMsg(Exception::OutOfMemory, "Failed to create signature context.");
-
-    if (context.allowBrokenChain)
-        dsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_ALLOW_BROKEN_CHAIN;
-
-    if (context.validationTime) {
-        LogDebug("Setting validation time.");
-        dsigCtx->keyInfoReadCtx.certsVerificationTime = context.validationTime;
-    }
-
-    int res;
-    switch (m_mode) {
-    case ValidateMode::NORMAL:
-        res = xmlSecDSigCtxVerify(dsigCtx.get(), node);
-        break;
-
-    case ValidateMode::NO_HASH:
-        res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 1, nullptr);
-        break;
-
-    case ValidateMode::PARTIAL_HASH:
-    {
-        size_t n = m_pList->size();
-        const char *pList[n + 1] = {0};
-
-        size_t i = 0;
-        for (auto uri : *m_pList)
-            pList[i++] = uri.c_str();
-
-        res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 0, pList);
-        break;
-    }
-    default:
-        ThrowMsg(Exception::InternalError, "ValidateMode is invalid");
-    }
-
-    if (res != 0)
-        ThrowMsg(Exception::InvalidSig, "Signature verify error.");
-
-    if (dsigCtx->keyInfoReadCtx.flags2 & XMLSEC_KEYINFO_ERROR_FLAGS_BROKEN_CHAIN) {
-        LogWarning("Signature contains broken chain!");
-        context.errorBrokenChain = true;
-    }
-
-    if (dsigCtx->status != xmlSecDSigStatusSucceeded)
-        ThrowMsg(Exception::InvalidSig, "Signature status is not succedded.");
-
-    xmlSecSize refSize = xmlSecPtrListGetSize(&(dsigCtx->signedInfoReferences));
-    for (xmlSecSize i = 0; i < refSize; ++i) {
-        xmlSecDSigReferenceCtxPtr dsigRefCtx = static_cast<xmlSecDSigReferenceCtxPtr>(
-                xmlSecPtrListGetItem(&(dsigCtx->signedInfoReferences), i));
-
-        if (!dsigRefCtx || !dsigRefCtx->uri)
-            continue;
-
-        if (dsigRefCtx->digestMethod
-            && dsigRefCtx->digestMethod->id
-            && dsigRefCtx->digestMethod->id->name) {
-            auto digest = reinterpret_cast<const char * const>(
-                    dsigRefCtx->digestMethod->id->name);
-
-            if (DIGEST_MD5.compare(digest) == 0)
-                ThrowMsg(Exception::InvalidFormat,
-                        "MD5 digest method used! Please use sha");
-        }
-
-        context.referenceSet.emplace(reinterpret_cast<char *>(dsigRefCtx->uri));
-    }
+       fileExtractPrefix(context);
+       LogDebug("Prefix path : " << s_prefixPath);
+       xmlSecIOCleanupCallbacks();
+       xmlSecIORegisterCallbacks(
+               fileMatchCallback,
+               fileOpenCallback,
+               fileReadCallback,
+               fileCloseCallback);
+       CustomPtr<xmlDocPtr> docPtr(xmlParseFile(context.signatureFile.c_str()), xmlFreeDoc);
+
+       if (!docPtr || xmlDocGetRootElement(docPtr.get()) == nullptr)
+               ThrowMsg(Exception::InvalidFormat,
+                                "Unable to parse sig xml file: " << context.signatureFile);
+
+       xmlNodePtr node = xmlSecFindNode(
+                                                 xmlDocGetRootElement(docPtr.get()),
+                                                 xmlSecNodeSignature,
+                                                 xmlSecDSigNs);
+
+       if (node == nullptr)
+               ThrowMsg(Exception::InvalidFormat,
+                                "Start node not found in " << context.signatureFile);
+
+       CustomPtr<xmlSecDSigCtxPtr> dsigCtx(xmlSecDSigCtxCreate(mngrPtr), xmlSecDSigCtxDestroy);
+
+       if (!dsigCtx)
+               ThrowMsg(Exception::OutOfMemory, "Failed to create signature context.");
+
+       if (context.allowBrokenChain)
+               dsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_ALLOW_BROKEN_CHAIN;
+
+       if (context.validationTime) {
+               LogDebug("Setting validation time.");
+               dsigCtx->keyInfoReadCtx.certsVerificationTime = context.validationTime;
+       }
+
+       int res;
+
+       switch (m_mode) {
+       case ValidateMode::NORMAL:
+               res = xmlSecDSigCtxVerify(dsigCtx.get(), node);
+               break;
+
+       case ValidateMode::NO_HASH:
+               res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 1, nullptr);
+               break;
+
+       case ValidateMode::PARTIAL_HASH: {
+               size_t n = m_pList->size();
+               const char *pList[n + 1] = {0};
+               size_t i = 0;
+
+               for (auto uri : *m_pList)
+                       pList[i++] = uri.c_str();
+
+               res = xmlSecDSigCtxVerifyEx(dsigCtx.get(), node, 0, pList);
+               break;
+       }
+
+       default:
+               ThrowMsg(Exception::InternalError, "ValidateMode is invalid");
+       }
+
+       if (res != 0)
+               ThrowMsg(Exception::InvalidSig, "Signature verify error.");
+
+       if (dsigCtx->keyInfoReadCtx.flags2 & XMLSEC_KEYINFO_ERROR_FLAGS_BROKEN_CHAIN) {
+               LogWarning("Signature contains broken chain!");
+               context.errorBrokenChain = true;
+       }
+
+       if (dsigCtx->status != xmlSecDSigStatusSucceeded)
+               ThrowMsg(Exception::InvalidSig, "Signature status is not succedded.");
+
+       xmlSecSize refSize = xmlSecPtrListGetSize(&(dsigCtx->signedInfoReferences));
+
+       for (xmlSecSize i = 0; i < refSize; ++i) {
+               xmlSecDSigReferenceCtxPtr dsigRefCtx = static_cast<xmlSecDSigReferenceCtxPtr>(
+                               xmlSecPtrListGetItem(&(dsigCtx->signedInfoReferences), i));
+
+               if (!dsigRefCtx || !dsigRefCtx->uri)
+                       continue;
+
+               if (dsigRefCtx->digestMethod
+                               && dsigRefCtx->digestMethod->id
+                               && dsigRefCtx->digestMethod->id->name) {
+                       auto digest = reinterpret_cast<const char *const>(
+                                                         dsigRefCtx->digestMethod->id->name);
+
+                       if (DIGEST_MD5.compare(digest) == 0)
+                               ThrowMsg(Exception::InvalidFormat,
+                                                "MD5 digest method used! Please use sha");
+               }
+
+               context.referenceSet.emplace(reinterpret_cast<char *>(dsigRefCtx->uri));
+       }
 }
 
 void XmlSec::loadDERCertificateMemory(XmlSecContext &context, xmlSecKeysMngrPtr mngrPtr)
 {
-    std::string derCert;
-
-    try {
-        derCert = context.certificatePtr->getDER();
-    } catch (Certificate::Exception::Base &e) {
-        ThrowMsg(Exception::InternalError,
-                 "Failed during x509 conversion to der format: " << e.DumpToString());
-    }
-
-    if (xmlSecCryptoAppKeysMngrCertLoadMemory(
-            mngrPtr,
-            reinterpret_cast<const xmlSecByte *>(derCert.data()),
-            static_cast<xmlSecSize>(derCert.length()),
-            xmlSecKeyDataFormatDer,
-            xmlSecKeyDataTypeTrusted) < 0)
-        ThrowMsg(Exception::InternalError, "Failed to load der cert from memory.");
+       std::string derCert;
+
+       try {
+               derCert = context.certificatePtr->getDER();
+       } catch (Certificate::Exception::Base &e) {
+               ThrowMsg(Exception::InternalError,
+                                "Failed during x509 conversion to der format: " << e.DumpToString());
+       }
+
+       if (xmlSecCryptoAppKeysMngrCertLoadMemory(
+                               mngrPtr,
+                               reinterpret_cast<const xmlSecByte *>(derCert.data()),
+                               static_cast<xmlSecSize>(derCert.length()),
+                               xmlSecKeyDataFormatDer,
+                               xmlSecKeyDataTypeTrusted) < 0)
+               ThrowMsg(Exception::InternalError, "Failed to load der cert from memory.");
 }
 
 void XmlSec::loadPEMCertificateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngrPtr)
 {
-    if (xmlSecCryptoAppKeysMngrCertLoad(
-            mngrPtr,
-            context.certificatePath.c_str(),
-            xmlSecKeyDataFormatPem,
-            xmlSecKeyDataTypeTrusted) < 0)
-        ThrowMsg(Exception::InternalError, "Failed to load PEM cert from file.");
+       if (xmlSecCryptoAppKeysMngrCertLoad(
+                               mngrPtr,
+                               context.certificatePath.c_str(),
+                               xmlSecKeyDataFormatPem,
+                               xmlSecKeyDataTypeTrusted) < 0)
+               ThrowMsg(Exception::InternalError, "Failed to load PEM cert from file.");
 }
 
 void XmlSec::validateInternal(XmlSecContext &context)
 {
-    LogDebug("Start to validate.");
-    Assert(!context.signatureFile.empty());
-    Assert(!!context.certificatePtr || !context.certificatePath.empty());
+       LogDebug("Start to validate.");
+       Assert(!context.signatureFile.empty());
+       Assert(!!context.certificatePtr || !context.certificatePath.empty());
+       xmlSecErrorsSetCallback(LogDebugPrint);
 
-    xmlSecErrorsSetCallback(LogDebugPrint);
+       if (!m_initialized)
+               ThrowMsg(Exception::InternalError, "XmlSec is not initialized");
 
-    if (!m_initialized)
-        ThrowMsg(Exception::InternalError, "XmlSec is not initialized");
+       CustomPtr<xmlSecKeysMngrPtr> mngrPtr(xmlSecKeysMngrCreate(), xmlSecKeysMngrDestroy);
 
-    CustomPtr<xmlSecKeysMngrPtr> mngrPtr(xmlSecKeysMngrCreate(), xmlSecKeysMngrDestroy);
+       if (!mngrPtr)
+               ThrowMsg(Exception::InternalError, "Failed to create keys manager.");
 
-    if (!mngrPtr)
-        ThrowMsg(Exception::InternalError, "Failed to create keys manager.");
+       if (xmlSecCryptoAppDefaultKeysMngrInit(mngrPtr.get()) < 0)
+               ThrowMsg(Exception::InternalError, "Failed to initialize keys manager.");
 
-    if (xmlSecCryptoAppDefaultKeysMngrInit(mngrPtr.get()) < 0)
-        ThrowMsg(Exception::InternalError, "Failed to initialize keys manager.");
+       context.referenceSet.clear();
 
-    context.referenceSet.clear();
+       if (!!context.certificatePtr)
+               loadDERCertificateMemory(context, mngrPtr.get());
 
-    if (!!context.certificatePtr)
-        loadDERCertificateMemory(context, mngrPtr.get());
+       if (!context.certificatePath.empty())
+               loadPEMCertificateFile(context, mngrPtr.get());
 
-    if (!context.certificatePath.empty())
-        loadPEMCertificateFile(context, mngrPtr.get());
-
-    validateFile(context, mngrPtr.get());
+       validateFile(context, mngrPtr.get());
 }
 
 void XmlSec::validate(XmlSecContext &context)
 {
-    m_mode = ValidateMode::NORMAL;
-    validateInternal(context);
+       m_mode = ValidateMode::NORMAL;
+       validateInternal(context);
 }
 
 void XmlSec::validateNoHash(XmlSecContext &context)
 {
-    m_mode = ValidateMode::NO_HASH;
-    validateInternal(context);
+       m_mode = ValidateMode::NO_HASH;
+       validateInternal(context);
 }
 
 void XmlSec::validatePartialHash(XmlSecContext &context, const std::list<std::string> &targetUri)
 {
-    m_mode = ValidateMode::PARTIAL_HASH;
-    m_pList = &targetUri;
-
-    validateInternal(context);
+       m_mode = ValidateMode::PARTIAL_HASH;
+       m_pList = &targetUri;
+       validateInternal(context);
 }
 
 } // namespace ValidationCore
index 7c4d6ab..b03f3c2 100644 (file)
 
 namespace ValidationCore {
 class XmlSec : public VcoreDPL::Noncopyable {
-
 public:
-    struct XmlSecContext {
-        /* You _must_ set one of the value: certificatePath or certificate. */
-        XmlSecContext()
-            : validationTime(0)
-            , allowBrokenChain(false)
-            , errorBrokenChain(false) {}
-
-        /*
-         * Absolute path to signature file.
-         */
-        std::string signatureFile;
-        /*
-         * Direcotory with signed data.
-         * If you leave it empty xmlsec will use directory extracted
-         * from signatureFile.
-         */
-        std::string workingDirectory;
-        /*
-         * Path to trusted certificate.
-         */
-        std::string certificatePath;
-        /*
-         * Trusted certificate. In most cases it should be Root CA certificate.
-         */
-        CertificatePtr certificatePtr;
-        /*
-         * Validation date.
-         * 0 - uses current time.
-         */
-        time_t validationTime;
-        /*
-         * Input parameter.
-         * If true, signature validation will not be interrupted by chain error.
-         * If true and chain is broken then the value errorBrokenChain will be
-         * set to true.
-         */
-        bool allowBrokenChain;
-        /*
-         * Output parameter.
-         * This will be set if chain is incomplete or broken.
-         */
-        bool errorBrokenChain;
-        /*
-         * Output parameter.
-         * Reference checked by xmlsec
-         */
-        ReferenceSet referenceSet;
-    };
-
-    struct Exception {
-        DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
-        DECLARE_EXCEPTION_TYPE(Base, InternalError)
-        DECLARE_EXCEPTION_TYPE(Base, InvalidFormat)
-        DECLARE_EXCEPTION_TYPE(Base, InvalidSig)
-        DECLARE_EXCEPTION_TYPE(Base, OutOfMemory)
-    };
-
-    /* context - input/output param. */
-    void validate(XmlSecContext &context);
-    void validateNoHash(XmlSecContext &context);
-    void validatePartialHash(XmlSecContext &context, const std::list<std::string> &targetUri);
+       struct XmlSecContext {
+               /* You _must_ set one of the value: certificatePath or certificate. */
+               XmlSecContext()
+                       : validationTime(0)
+                       , allowBrokenChain(false)
+                       , errorBrokenChain(false) {}
+
+               /*
+                * Absolute path to signature file.
+                */
+               std::string signatureFile;
+               /*
+                * Direcotory with signed data.
+                * If you leave it empty xmlsec will use directory extracted
+                * from signatureFile.
+                */
+               std::string workingDirectory;
+               /*
+                * Path to trusted certificate.
+                */
+               std::string certificatePath;
+               /*
+                * Trusted certificate. In most cases it should be Root CA certificate.
+                */
+               CertificatePtr certificatePtr;
+               /*
+                * Validation date.
+                * 0 - uses current time.
+                */
+               time_t validationTime;
+               /*
+                * Input parameter.
+                * If true, signature validation will not be interrupted by chain error.
+                * If true and chain is broken then the value errorBrokenChain will be
+                * set to true.
+                */
+               bool allowBrokenChain;
+               /*
+                * Output parameter.
+                * This will be set if chain is incomplete or broken.
+                */
+               bool errorBrokenChain;
+               /*
+                * Output parameter.
+                * Reference checked by xmlsec
+                */
+               ReferenceSet referenceSet;
+       };
+
+       struct Exception {
+               DECLARE_EXCEPTION_TYPE(VcoreDPL::Exception, Base)
+               DECLARE_EXCEPTION_TYPE(Base, InternalError)
+               DECLARE_EXCEPTION_TYPE(Base, InvalidFormat)
+               DECLARE_EXCEPTION_TYPE(Base, InvalidSig)
+               DECLARE_EXCEPTION_TYPE(Base, OutOfMemory)
+       };
+
+       /* context - input/output param. */
+       void validate(XmlSecContext &context);
+       void validateNoHash(XmlSecContext &context);
+       void validatePartialHash(XmlSecContext &context, const std::list<std::string> &targetUri);
 
 protected:
-    XmlSec();
-    ~XmlSec();
+       XmlSec();
+       ~XmlSec();
 
 private:
-    enum class ValidateMode : int {
-        NORMAL,
-        NO_HASH,
-        PARTIAL_HASH
-    };
-
-    ValidateMode m_mode;
-    bool m_initialized;
-    const std::list<std::string> *m_pList;
-
-    void loadDERCertificateMemory(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
-    void loadPEMCertificateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
-    void validateInternal(XmlSecContext &context);
-    void validateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
-
-    static std::string s_prefixPath;
-    static int fileMatchCallback(const char *filename);
-    static void *fileOpenCallback(const char *filename);
-    static int fileReadCallback(void *context, char *buffer, int len);
-    static int fileCloseCallback(void *context);
-    static void fileExtractPrefix(XmlSecContext &context);
+       enum class ValidateMode : int {
+               NORMAL,
+               NO_HASH,
+               PARTIAL_HASH
+       };
+
+       ValidateMode m_mode;
+       bool m_initialized;
+       const std::list<std::string> *m_pList;
+
+       void loadDERCertificateMemory(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
+       void loadPEMCertificateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
+       void validateInternal(XmlSecContext &context);
+       void validateFile(XmlSecContext &context, xmlSecKeysMngrPtr mngr);
+
+       static std::string s_prefixPath;
+       static int fileMatchCallback(const char *filename);
+       static void *fileOpenCallback(const char *filename);
+       static int fileReadCallback(void *context, char *buffer, int len);
+       static int fileCloseCallback(void *context);
+       static void fileExtractPrefix(XmlSecContext &context);
 };
 
 typedef VcoreDPL::Singleton<XmlSec> XmlSecSingleton;
index ed1f1f3..986bb6c 100644 (file)
@@ -69,1074 +69,1167 @@ using namespace ValidationCore;
 namespace {
 
 struct CharDeleter {
-    void operator()(char *str) const {
-        free(str);
-    }
+       void operator()(char *str) const
+       {
+               free(str);
+       }
 };
 
 struct CharArrDeleter {
-    void operator()(char **arr) const {
-        size_t i = 0;
-        if (arr == NULL)
-            return;
+       void operator()(char **arr) const
+       {
+               size_t i = 0;
 
-        while (arr[i])
-            free(arr[i++]);
+               if (arr == NULL)
+                       return;
 
-        free(arr);
-    }
+               while (arr[i])
+                       free(arr[i++]);
+
+               free(arr);
+       }
 };
 
 class CertSvcInstanceImpl {
 public:
-    CertSvcInstanceImpl()
-      : m_certificateCounter(0)
-      , m_idListCounter(0)
-      , m_stringListCounter(0)
-    {}
-
-    ~CertSvcInstanceImpl(){
-        auto it = m_allocatedStringSet.begin();
-        for (; it != m_allocatedStringSet.end(); ++it)
-            delete[] *it;
-    }
-
-    inline void reset(){
-        m_certificateCounter = 0;
-        m_certificateMap.clear();
-        m_idListCounter = 0;
-        m_idListMap.clear();
-        m_stringListCounter = 0;
-        m_stringListMap.clear();
-
-        auto it = m_allocatedStringSet.begin();
-        for (; it != m_allocatedStringSet.end(); ++it)
-            delete[] *it;
-
-        m_allocatedStringSet.clear();
-    }
-
-    inline size_t addCert(const CertificatePtr &cert) {
-        m_certificateMap[m_certificateCounter] = cert;
-        return m_certificateCounter++;
-    }
-
-    inline void removeCert(const CertSvcCertificate &cert) {
-        auto iter = m_certificateMap.find(cert.privateHandler);
-        if (iter != m_certificateMap.end()) {
-            m_certificateMap.erase(iter);
-        }
-    }
-
-    inline int getCertFromList(
-        const CertSvcCertificateList &handler,
-        size_t position,
-        CertSvcCertificate *certificate)
-    {
-        auto iter = m_idListMap.find(handler.privateHandler);
-        if (iter == m_idListMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        if (position >= iter->second.size()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        certificate->privateInstance = handler.privateInstance;
-        certificate->privateHandler = (iter->second)[position];
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getCertListLen(const CertSvcCertificateList &handler, size_t *len) {
-        auto iter = m_idListMap.find(handler.privateHandler);
-        if (iter == m_idListMap.end() || !len) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        *len = (iter->second).size();
-        return CERTSVC_SUCCESS;
-    }
-
-    inline void removeCertList(const CertSvcCertificateList &handler) {
-        auto iter = m_idListMap.find(handler.privateHandler);
-        if (iter != m_idListMap.end())
-            m_idListMap.erase(iter);
-    }
-
-    inline void removeCertListAll(const CertSvcCertificateList &handler) {
-        auto iter = m_idListMap.find(handler.privateHandler);
-        if (iter == m_idListMap.end())
-            return;
-
-        for (size_t pos = 0; pos < iter->second.size(); ++pos) {
-            auto iterCert = m_certificateMap.find((iter->second)[pos]);
-            if (iterCert == m_certificateMap.end())
-                return;
-
-            m_certificateMap.erase(iterCert);
-        }
-
-        m_idListMap.erase(iter);
-    }
-
-    inline int isSignedBy(const CertSvcCertificate &child,
-                          const CertSvcCertificate &parent,
-                          int *status)
-    {
-        auto citer = m_certificateMap.find(child.privateHandler);
-        if (citer == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        auto piter = m_certificateMap.find(parent.privateHandler);
-        if (piter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        if (citer->second->isSignedBy(piter->second)) {
-            *status = CERTSVC_TRUE;
-        } else {
-            *status = CERTSVC_FALSE;
-        }
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getField(const CertSvcCertificate &cert,
-                        CertSvcCertificateField field,
-                        CertSvcString *buffer)
-    {
-        auto iter = m_certificateMap.find(cert.privateHandler);
-        if (iter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        auto certPtr = iter->second;
-        std::string result;
-        switch (field) {
-            case CERTSVC_SUBJECT:
-                result = certPtr->getOneLine();
-                break;
-            case CERTSVC_ISSUER:
-                result = certPtr->getOneLine(Certificate::FIELD_ISSUER);
-                break; 
-            case CERTSVC_SUBJECT_COMMON_NAME:
-                result = certPtr->getCommonName();
-                break;
-            case CERTSVC_SUBJECT_COUNTRY_NAME:
-                result = certPtr->getCountryName();
-                break;
-            case CERTSVC_SUBJECT_STATE_NAME:
-                result = certPtr->getStateOrProvinceName();
-                break;
-            case CERTSVC_SUBJECT_LOCALITY_NAME:
-                result = certPtr->getLocalityName();
-                break;
-            case CERTSVC_SUBJECT_ORGANIZATION_NAME:
-                result = certPtr->getOrganizationName();
-                break;
-            case CERTSVC_SUBJECT_ORGANIZATION_UNIT_NAME:
-                result = certPtr->getOrganizationalUnitName();
-                break;
-            case CERTSVC_SUBJECT_EMAIL_ADDRESS:
-                result = certPtr->getEmailAddres();
-                break;
-/*
-            case CERTSVC_SUBJECT_UID:
-                result = certPtr->getUID();
-                break;
-*/
-            case CERTSVC_ISSUER_COMMON_NAME:
-                result = certPtr->getCommonName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_COUNTRY_NAME:
-                result = certPtr->getCountryName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_STATE_NAME:
-                result = certPtr->getStateOrProvinceName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_LOCALITY_NAME:
-                result = certPtr->getLocalityName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_ORGANIZATION_NAME:
-                result = certPtr->getOrganizationName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_ORGANIZATION_UNIT_NAME:
-                result = certPtr->getOrganizationalUnitName(Certificate::FIELD_ISSUER);
-                break;
-            case CERTSVC_ISSUER_EMAIL_ADDRESS:
-                result = certPtr->getEmailAddres(Certificate::FIELD_ISSUER);
-                break;
-/*
-            case CERTSVC_ISSUER_UID:
-                result = certPtr->getUID(Certificate::FIELD_ISSUER);
-                break;
-*/
-            case CERTSVC_VERSION:
-            {
-                std::stringstream stream;
-                stream << (certPtr->getVersion()+1);
-                result = stream.str();
-                break;
-            }
-            case CERTSVC_SERIAL_NUMBER:
-                result = certPtr->getSerialNumberString();
-                break;
-            case CERTSVC_KEY_USAGE:
-                result = certPtr->getKeyUsageString();
-                break;
-            case CERTSVC_KEY:
-                result = certPtr->getPublicKeyString();
-                break;
-            case CERTSVC_KEY_ALGO:
-                result = certPtr->getPublicKeyAlgoString();
-                break;
-            case CERTSVC_SIGNATURE_ALGORITHM:
-                result = certPtr->getSignatureAlgorithmString();
-                break;
-            default:
-                break;
-        }
-
-        if (result.empty()) {
-            buffer->privateHandler = NULL;
-            buffer->privateLength = 0;
-            buffer->privateInstance = cert.privateInstance;
-            return CERTSVC_SUCCESS;
-        }
-
-        char *cstring = new char[result.size() + 1];
-        if (cstring == NULL) {
-            buffer->privateHandler = NULL;
-            buffer->privateLength = 0;
-            buffer->privateInstance = cert.privateInstance;
-            return CERTSVC_BAD_ALLOC;
-        }
-
-        strncpy(cstring, result.c_str(), result.size() + 1);
-
-        buffer->privateHandler = cstring;
-        buffer->privateLength = result.size();
-        buffer->privateInstance = cert.privateInstance;
-
-        m_allocatedStringSet.insert(cstring);
-
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getNotAfter(const CertSvcCertificate &cert,
-                           time_t *time)
-    {
-        auto iter = m_certificateMap.find(cert.privateHandler);
-        if (iter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        *time = iter->second->getNotAfter();
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getNotBefore(const CertSvcCertificate &cert,
-                            time_t *time)
-    {
-        auto iter = m_certificateMap.find(cert.privateHandler);
-        if (iter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        *time = iter->second->getNotBefore();
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int isRootCA(const CertSvcCertificate &cert, int *status){
-        auto iter = m_certificateMap.find(cert.privateHandler);
-        if (iter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        if (iter->second->isRootCert()) {
-            *status = CERTSVC_TRUE;
-        } else {
-            *status = CERTSVC_FALSE;
-        }
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getStringFromList(
-        const CertSvcStringList &handler,
-        size_t position,
-        CertSvcString *buffer)
-    {
-        buffer->privateHandler = NULL;
-        buffer->privateLength = 0;
-
-        auto iter = m_stringListMap.find(handler.privateHandler);
-        if (iter == m_stringListMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        if (position >= iter->second.size()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        const std::string &data = iter->second.at(position);
-        size_t size = data.size();
-        char *cstring = new char[size + 1];
-        if (!cstring) {
-            return CERTSVC_FAIL;
-        }
-
-        strncpy(cstring, data.c_str(), size + 1);
-
-        buffer->privateHandler = cstring;
-        buffer->privateLength = size;
-        buffer->privateInstance = handler.privateInstance;
-
-        m_allocatedStringSet.insert(cstring);
-
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getStringListLen(
-        const CertSvcStringList &handler,
-        size_t *size)
-    {
-        auto iter = m_stringListMap.find(handler.privateHandler);
-        if (iter == m_stringListMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        *size = iter->second.size();
-        return CERTSVC_SUCCESS;
-    }
-
-    inline void removeStringList(const CertSvcStringList &handler)
-    {
-        m_stringListMap.erase(m_stringListMap.find(handler.privateHandler));
-    }
-
-    inline void removeString(const CertSvcString &handler)
-    {
-        auto iter = m_allocatedStringSet.find(handler.privateHandler);
-        if (iter != m_allocatedStringSet.end()) {
-            delete[] *iter;
-            m_allocatedStringSet.erase(iter);
-        }
-    }
-
-    inline int sortCollection(CertSvcCertificate *certificate_array, size_t size) {
-        if (size < 2) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        for (size_t i = 1; i < size; ++i) {
-            if (certificate_array[i - 1].privateInstance.privatePtr
-                != certificate_array[i].privateInstance.privatePtr)
-            {
-                return CERTSVC_WRONG_ARGUMENT;
-            }
-        }
-
-        CertificateList certList;
-        std::map<Certificate*, size_t> translator;
-
-        for (size_t i = 0; i < size; ++i) {
-            size_t pos = certificate_array[i].privateHandler;
-            auto cert = m_certificateMap.find(pos);
-            if (cert == m_certificateMap.end()) {
-                return CERTSVC_WRONG_ARGUMENT;
-            }
-            translator[cert->second.get()] = pos;
-            certList.push_back(cert->second);
-        }
-
-        CertificateCollection collection;
-        collection.load(certList);
-
-        if (!collection.sort()) {
-            return CERTSVC_FAIL;
-        }
-
-        auto chain = collection.getChain();
-
-        size_t i = 0;
-        for (const auto &cert : collection.getChain())
-            certificate_array[i++].privateHandler = translator[cert.get()];
-
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getX509Copy(const CertSvcCertificate &certificate, X509** cert)
-    {
-        auto it = m_certificateMap.find(certificate.privateHandler);
-        if (it == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        *cert = X509_dup(it->second->getX509());
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getPubkeyDER(const CertSvcCertificate &certificate,
-                            unsigned char **pubkey,
-                            size_t *len)
-    {
-        auto it = m_certificateMap.find(certificate.privateHandler);
-        if (it == m_certificateMap.end() || pubkey == NULL || len == NULL)
-            return CERTSVC_WRONG_ARGUMENT;
-
-        it->second->getPublicKeyDER(pubkey, len);
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int saveToFile(const CertSvcCertificate &certificate,
-                          const char *location)
-    {
-        auto it = m_certificateMap.find(certificate.privateHandler);
-        if (it == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        FILE *out = fopen(location, "w");
-        if (out == NULL) {
-            return CERTSVC_FAIL;
-        }
-        if (0 == i2d_X509_fp(out, it->second->getX509())) {
-            fclose(out);
-            return CERTSVC_FAIL;
-        }
-        fclose(out);
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int verify(
-        CertSvcCertificate certificate,
-        CertSvcString &message,
-        CertSvcString &signature,
-        const char *algorithm,
-        int *status)
-    {
-        int result = CERTSVC_FAIL;
-
-        if (!status) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        auto it = m_certificateMap.find(certificate.privateHandler);
-        if (it == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        OpenSSL_add_all_digests();
-
-        int temp;
-        EVP_MD_CTX* mdctx = NULL;
-        const EVP_MD * md = NULL;
-        X509 *cert = it->second->getX509();
-        EVP_PKEY *pkey = NULL;
-
-        if (cert == NULL) {
-            goto err;
-        }
-
-        pkey = X509_get_pubkey(cert);
-
-        if (pkey == NULL) {
-            goto err;
-        }
-
-        if (algorithm == NULL) {
-            md = EVP_get_digestbyobj(cert->cert_info->signature->algorithm);
-        } else {
-            md = EVP_get_digestbyname(algorithm);
-        }
-
-        if (md == NULL) {
-            result = CERTSVC_INVALID_ALGORITHM;
-            goto err;
-        }
-
-        mdctx = EVP_MD_CTX_create();
-
-        if (mdctx == NULL) {
-            goto err;
-        }
-
-        if (EVP_VerifyInit_ex(mdctx, md, NULL) != 1) {
-            goto err;
-        }
-
-        if (EVP_VerifyUpdate(mdctx, message.privateHandler, message.privateLength) != 1) {
-            goto err;
-        }
-
-        temp = EVP_VerifyFinal(mdctx,
-            reinterpret_cast<unsigned char*>(signature.privateHandler),
-            signature.privateLength,
-            pkey);
-
-        if (temp == 0) {
-            *status = CERTSVC_INVALID_SIGNATURE;
-            result = CERTSVC_SUCCESS;
-        } else if (temp == 1) {
-            *status = CERTSVC_SUCCESS;
-            result = CERTSVC_SUCCESS;
-        }
-
-    err:
-        if (mdctx != NULL)
-            EVP_MD_CTX_destroy(mdctx);
-        if (pkey != NULL)
-            EVP_PKEY_free(pkey);
-        return result;
-    }
-
-    inline int base64Encode(
-        const CertSvcString &message,
-        CertSvcString *base64)
-    {
-        if (!base64) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        std::string info(message.privateHandler, message.privateLength);
-        Base64Encoder base;
-        base.reset();
-        base.append(info);
-        base.finalize();
-        info = base.get();
-        char *ptr = new char[info.size()+1];
-        if(ptr == NULL) {
-            return CERTSVC_BAD_ALLOC;
-        }
-        memcpy(ptr, info.c_str(), info.size()+1);
-        m_allocatedStringSet.insert(ptr);
-        base64->privateHandler = ptr;
-        base64->privateLength = info.size();
-        base64->privateInstance = message.privateInstance;
-        return CERTSVC_SUCCESS;
-    }
-
-    int base64Decode(
-        const CertSvcString &base64,
-        CertSvcString *message)
-    {
-        if (!message) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        std::string info(base64.privateHandler, base64.privateLength);
-        Base64Decoder base;
-        base.reset();
-        base.append(info);
-        if (!base.finalize()) {
-            return CERTSVC_FAIL;
-        }
-        info = base.get();
-        char *ptr = new char[info.size()+1];
-        if(ptr == NULL) {
-            return CERTSVC_BAD_ALLOC;
-        }
-        memcpy(ptr, info.c_str(), info.size()+1);
-        m_allocatedStringSet.insert(ptr);
-        message->privateHandler = ptr;
-        message->privateLength = info.size();
-        message->privateInstance = base64.privateInstance;
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int stringNew(
-        CertSvcInstance &instance,
-        const char *str,
-        size_t size,
-        CertSvcString *output)
-    {
-        if (!output)
-            return CERTSVC_WRONG_ARGUMENT;
-
-        /* return struct for empty string */
-        if (size == 0 || str == NULL) {
-            output->privateHandler = NULL;
-            output->privateLength = 0;
-            output->privateInstance = instance;
-
-            return CERTSVC_SUCCESS;
-        }
-
-        if (strlen(str) < size)
-            return CERTSVC_WRONG_ARGUMENT;
-
-        char *ptr = new(std::nothrow) char[size + 1];
-        if (ptr == NULL)
-            return CERTSVC_BAD_ALLOC;
-
-        memcpy(ptr, str, size);
-        ptr[size] = '\0';
-
-        output->privateHandler = ptr;
-        output->privateLength = size;
-        output->privateInstance = instance;
-
-        m_allocatedStringSet.insert(ptr);
-
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int certificateVerify(
-        CertSvcCertificate certificate,
-        const CertSvcCertificate *trusted,
-        size_t trustedSize,
-        const CertSvcCertificate *untrusted,
-        size_t untrustedSize,
-        int checkCaFlag,
-        int *status)
-    {
-        if (!trusted || !status) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        auto iter = m_certificateMap.find(certificate.privateHandler);
-        if (iter == m_certificateMap.end()) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-
-        X509 *cert = iter->second->getX509();
-        X509_STORE *store = X509_STORE_new();
-        STACK_OF(X509) *ustore = sk_X509_new_null();
-
-        for (size_t i = 0; i < trustedSize; ++i) {
-            auto iter = m_certificateMap.find(trusted[i].privateHandler);
-            if (iter == m_certificateMap.end()) {
-                X509_STORE_free(store);
-                sk_X509_free(ustore);
-                return CERTSVC_WRONG_ARGUMENT;
-            }
-
-            X509_STORE_add_cert(store, iter->second->getX509());
-        }
-
-        for (size_t i = 0; i < untrustedSize; ++i) {
-            auto iter = m_certificateMap.find(untrusted[i].privateHandler);
-            if (iter == m_certificateMap.end()) {
-                X509_STORE_free(store);
-                sk_X509_free(ustore);
-                return CERTSVC_WRONG_ARGUMENT;
-            }
-
-            if (sk_X509_push(ustore, iter->second->getX509()) == 0)
-                break;
-        }
-
-        X509_STORE_CTX context;
-        X509_STORE_CTX_init(&context, store, cert, ustore);
-        int result = X509_verify_cert(&context);
-
-        if (result == 1 && checkCaFlag) { // check strictly
-               STACK_OF(X509) *resultChain = X509_STORE_CTX_get1_chain(&context);
-               X509* tmpCert = NULL;
-               int caFlagValidity;
-            while ((tmpCert = sk_X509_pop(resultChain))) {
-                       caFlagValidity = X509_check_ca(tmpCert);
-                if (caFlagValidity != 1 && (tmpCert = sk_X509_pop(resultChain)) != NULL) {
-                    // the last one is not a CA.
-                               result = 0;
-                               break;
-                       }
-               }
-       }
-
-        X509_STORE_CTX_cleanup(&context);
-        X509_STORE_free(store);
-        sk_X509_free(ustore);
-
-        if (result == 1) {
-            *status = CERTSVC_SUCCESS;
-        } else {
-            *status = CERTSVC_FAIL;
-        }
-        return CERTSVC_SUCCESS;
-    }
+       CertSvcInstanceImpl()
+               : m_certificateCounter(0)
+               , m_idListCounter(0)
+               , m_stringListCounter(0)
+       {}
+
+       ~CertSvcInstanceImpl()
+       {
+               auto it = m_allocatedStringSet.begin();
+
+               for (; it != m_allocatedStringSet.end(); ++it)
+                       delete[] *it;
+       }
+
+       inline void reset()
+       {
+               m_certificateCounter = 0;
+               m_certificateMap.clear();
+               m_idListCounter = 0;
+               m_idListMap.clear();
+               m_stringListCounter = 0;
+               m_stringListMap.clear();
+               auto it = m_allocatedStringSet.begin();
+
+               for (; it != m_allocatedStringSet.end(); ++it)
+                       delete[] *it;
+
+               m_allocatedStringSet.clear();
+       }
+
+       inline size_t addCert(const CertificatePtr &cert)
+       {
+               m_certificateMap[m_certificateCounter] = cert;
+               return m_certificateCounter++;
+       }
+
+       inline void removeCert(const CertSvcCertificate &cert)
+       {
+               auto iter = m_certificateMap.find(cert.privateHandler);
+
+               if (iter != m_certificateMap.end()) {
+                       m_certificateMap.erase(iter);
+               }
+       }
+
+       inline int getCertFromList(
+               const CertSvcCertificateList &handler,
+               size_t position,
+               CertSvcCertificate *certificate)
+       {
+               auto iter = m_idListMap.find(handler.privateHandler);
+
+               if (iter == m_idListMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               if (position >= iter->second.size()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               certificate->privateInstance = handler.privateInstance;
+               certificate->privateHandler = (iter->second)[position];
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getCertListLen(const CertSvcCertificateList &handler, size_t *len)
+       {
+               auto iter = m_idListMap.find(handler.privateHandler);
+
+               if (iter == m_idListMap.end() || !len) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               *len = (iter->second).size();
+               return CERTSVC_SUCCESS;
+       }
+
+       inline void removeCertList(const CertSvcCertificateList &handler)
+       {
+               auto iter = m_idListMap.find(handler.privateHandler);
+
+               if (iter != m_idListMap.end())
+                       m_idListMap.erase(iter);
+       }
+
+       inline void removeCertListAll(const CertSvcCertificateList &handler)
+       {
+               auto iter = m_idListMap.find(handler.privateHandler);
+
+               if (iter == m_idListMap.end())
+                       return;
+
+               for (size_t pos = 0; pos < iter->second.size(); ++pos) {
+                       auto iterCert = m_certificateMap.find((iter->second)[pos]);
+
+                       if (iterCert == m_certificateMap.end())
+                               return;
+
+                       m_certificateMap.erase(iterCert);
+               }
+
+               m_idListMap.erase(iter);
+       }
+
+       inline int isSignedBy(const CertSvcCertificate &child,
+                                                 const CertSvcCertificate &parent,
+                                                 int *status)
+       {
+               auto citer = m_certificateMap.find(child.privateHandler);
+
+               if (citer == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               auto piter = m_certificateMap.find(parent.privateHandler);
+
+               if (piter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               if (citer->second->isSignedBy(piter->second)) {
+                       *status = CERTSVC_TRUE;
+               } else {
+                       *status = CERTSVC_FALSE;
+               }
+
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getField(const CertSvcCertificate &cert,
+                                               CertSvcCertificateField field,
+                                               CertSvcString *buffer)
+       {
+               auto iter = m_certificateMap.find(cert.privateHandler);
+
+               if (iter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               auto certPtr = iter->second;
+               std::string result;
+
+               switch (field) {
+               case CERTSVC_SUBJECT:
+                       result = certPtr->getOneLine();
+                       break;
+
+               case CERTSVC_ISSUER:
+                       result = certPtr->getOneLine(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_SUBJECT_COMMON_NAME:
+                       result = certPtr->getCommonName();
+                       break;
+
+               case CERTSVC_SUBJECT_COUNTRY_NAME:
+                       result = certPtr->getCountryName();
+                       break;
+
+               case CERTSVC_SUBJECT_STATE_NAME:
+                       result = certPtr->getStateOrProvinceName();
+                       break;
+
+               case CERTSVC_SUBJECT_LOCALITY_NAME:
+                       result = certPtr->getLocalityName();
+                       break;
+
+               case CERTSVC_SUBJECT_ORGANIZATION_NAME:
+                       result = certPtr->getOrganizationName();
+                       break;
+
+               case CERTSVC_SUBJECT_ORGANIZATION_UNIT_NAME:
+                       result = certPtr->getOrganizationalUnitName();
+                       break;
+
+               case CERTSVC_SUBJECT_EMAIL_ADDRESS:
+                       result = certPtr->getEmailAddres();
+                       break;
+
+               /*
+                           case CERTSVC_SUBJECT_UID:
+                               result = certPtr->getUID();
+                               break;
+               */
+               case CERTSVC_ISSUER_COMMON_NAME:
+                       result = certPtr->getCommonName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_COUNTRY_NAME:
+                       result = certPtr->getCountryName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_STATE_NAME:
+                       result = certPtr->getStateOrProvinceName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_LOCALITY_NAME:
+                       result = certPtr->getLocalityName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_ORGANIZATION_NAME:
+                       result = certPtr->getOrganizationName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_ORGANIZATION_UNIT_NAME:
+                       result = certPtr->getOrganizationalUnitName(Certificate::FIELD_ISSUER);
+                       break;
+
+               case CERTSVC_ISSUER_EMAIL_ADDRESS:
+                       result = certPtr->getEmailAddres(Certificate::FIELD_ISSUER);
+                       break;
+
+               /*
+                           case CERTSVC_ISSUER_UID:
+                               result = certPtr->getUID(Certificate::FIELD_ISSUER);
+                               break;
+               */
+               case CERTSVC_VERSION: {
+                       std::stringstream stream;
+                       stream << (certPtr->getVersion() + 1);
+                       result = stream.str();
+                       break;
+               }
+
+               case CERTSVC_SERIAL_NUMBER:
+                       result = certPtr->getSerialNumberString();
+                       break;
+
+               case CERTSVC_KEY_USAGE:
+                       result = certPtr->getKeyUsageString();
+                       break;
+
+               case CERTSVC_KEY:
+                       result = certPtr->getPublicKeyString();
+                       break;
+
+               case CERTSVC_KEY_ALGO:
+                       result = certPtr->getPublicKeyAlgoString();
+                       break;
+
+               case CERTSVC_SIGNATURE_ALGORITHM:
+                       result = certPtr->getSignatureAlgorithmString();
+                       break;
+
+               default:
+                       break;
+               }
+
+               if (result.empty()) {
+                       buffer->privateHandler = NULL;
+                       buffer->privateLength = 0;
+                       buffer->privateInstance = cert.privateInstance;
+                       return CERTSVC_SUCCESS;
+               }
+
+               char *cstring = new char[result.size() + 1];
+
+               if (cstring == NULL) {
+                       buffer->privateHandler = NULL;
+                       buffer->privateLength = 0;
+                       buffer->privateInstance = cert.privateInstance;
+                       return CERTSVC_BAD_ALLOC;
+               }
+
+               strncpy(cstring, result.c_str(), result.size() + 1);
+               buffer->privateHandler = cstring;
+               buffer->privateLength = result.size();
+               buffer->privateInstance = cert.privateInstance;
+               m_allocatedStringSet.insert(cstring);
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getNotAfter(const CertSvcCertificate &cert,
+                                                  time_t *time)
+       {
+               auto iter = m_certificateMap.find(cert.privateHandler);
+
+               if (iter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               *time = iter->second->getNotAfter();
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getNotBefore(const CertSvcCertificate &cert,
+                                                       time_t *time)
+       {
+               auto iter = m_certificateMap.find(cert.privateHandler);
+
+               if (iter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               *time = iter->second->getNotBefore();
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int isRootCA(const CertSvcCertificate &cert, int *status)
+       {
+               auto iter = m_certificateMap.find(cert.privateHandler);
+
+               if (iter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               if (iter->second->isRootCert()) {
+                       *status = CERTSVC_TRUE;
+               } else {
+                       *status = CERTSVC_FALSE;
+               }
+
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getStringFromList(
+               const CertSvcStringList &handler,
+               size_t position,
+               CertSvcString *buffer)
+       {
+               buffer->privateHandler = NULL;
+               buffer->privateLength = 0;
+               auto iter = m_stringListMap.find(handler.privateHandler);
+
+               if (iter == m_stringListMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               if (position >= iter->second.size()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               const std::string &data = iter->second.at(position);
+               size_t size = data.size();
+               char *cstring = new char[size + 1];
+
+               if (!cstring) {
+                       return CERTSVC_FAIL;
+               }
+
+               strncpy(cstring, data.c_str(), size + 1);
+               buffer->privateHandler = cstring;
+               buffer->privateLength = size;
+               buffer->privateInstance = handler.privateInstance;
+               m_allocatedStringSet.insert(cstring);
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getStringListLen(
+               const CertSvcStringList &handler,
+               size_t *size)
+       {
+               auto iter = m_stringListMap.find(handler.privateHandler);
+
+               if (iter == m_stringListMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               *size = iter->second.size();
+               return CERTSVC_SUCCESS;
+       }
+
+       inline void removeStringList(const CertSvcStringList &handler)
+       {
+               m_stringListMap.erase(m_stringListMap.find(handler.privateHandler));
+       }
+
+       inline void removeString(const CertSvcString &handler)
+       {
+               auto iter = m_allocatedStringSet.find(handler.privateHandler);
+
+               if (iter != m_allocatedStringSet.end()) {
+                       delete[] *iter;
+                       m_allocatedStringSet.erase(iter);
+               }
+       }
+
+       inline int sortCollection(CertSvcCertificate *certificate_array, size_t size)
+       {
+               if (size < 2) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               for (size_t i = 1; i < size; ++i) {
+                       if (certificate_array[i - 1].privateInstance.privatePtr
+                                       != certificate_array[i].privateInstance.privatePtr) {
+                               return CERTSVC_WRONG_ARGUMENT;
+                       }
+               }
+
+               CertificateList certList;
+               std::map<Certificate *, size_t> translator;
+
+               for (size_t i = 0; i < size; ++i) {
+                       size_t pos = certificate_array[i].privateHandler;
+                       auto cert = m_certificateMap.find(pos);
+
+                       if (cert == m_certificateMap.end()) {
+                               return CERTSVC_WRONG_ARGUMENT;
+                       }
+
+                       translator[cert->second.get()] = pos;
+                       certList.push_back(cert->second);
+               }
+
+               CertificateCollection collection;
+               collection.load(certList);
+
+               if (!collection.sort()) {
+                       return CERTSVC_FAIL;
+               }
+
+               auto chain = collection.getChain();
+               size_t i = 0;
+
+               for (const auto &cert : collection.getChain())
+                       certificate_array[i++].privateHandler = translator[cert.get()];
+
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getX509Copy(const CertSvcCertificate &certificate, X509 **cert)
+       {
+               auto it = m_certificateMap.find(certificate.privateHandler);
+
+               if (it == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               *cert = X509_dup(it->second->getX509());
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getPubkeyDER(const CertSvcCertificate &certificate,
+                                                       unsigned char **pubkey,
+                                                       size_t *len)
+       {
+               auto it = m_certificateMap.find(certificate.privateHandler);
+
+               if (it == m_certificateMap.end() || pubkey == NULL || len == NULL)
+                       return CERTSVC_WRONG_ARGUMENT;
+
+               it->second->getPublicKeyDER(pubkey, len);
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int saveToFile(const CertSvcCertificate &certificate,
+                                                 const char *location)
+       {
+               auto it = m_certificateMap.find(certificate.privateHandler);
+
+               if (it == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               FILE *out = fopen(location, "w");
+
+               if (out == NULL) {
+                       return CERTSVC_FAIL;
+               }
+
+               if (0 == i2d_X509_fp(out, it->second->getX509())) {
+                       fclose(out);
+                       return CERTSVC_FAIL;
+               }
+
+               fclose(out);
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int verify(
+               CertSvcCertificate certificate,
+               CertSvcString &message,
+               CertSvcString &signature,
+               const char *algorithm,
+               int *status)
+       {
+               int result = CERTSVC_FAIL;
+
+               if (!status) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               auto it = m_certificateMap.find(certificate.privateHandler);
+
+               if (it == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               OpenSSL_add_all_digests();
+               int temp;
+               EVP_MD_CTX *mdctx = NULL;
+               const EVP_MD *md = NULL;
+               X509 *cert = it->second->getX509();
+               EVP_PKEY *pkey = NULL;
+
+               if (cert == NULL) {
+                       goto err;
+               }
+
+               pkey = X509_get_pubkey(cert);
+
+               if (pkey == NULL) {
+                       goto err;
+               }
+
+               if (algorithm == NULL) {
+                       md = EVP_get_digestbyobj(cert->cert_info->signature->algorithm);
+               } else {
+                       md = EVP_get_digestbyname(algorithm);
+               }
+
+               if (md == NULL) {
+                       result = CERTSVC_INVALID_ALGORITHM;
+                       goto err;
+               }
+
+               mdctx = EVP_MD_CTX_create();
+
+               if (mdctx == NULL) {
+                       goto err;
+               }
+
+               if (EVP_VerifyInit_ex(mdctx, md, NULL) != 1) {
+                       goto err;
+               }
+
+               if (EVP_VerifyUpdate(mdctx, message.privateHandler, message.privateLength) != 1) {
+                       goto err;
+               }
+
+               temp = EVP_VerifyFinal(mdctx,
+                                                          reinterpret_cast<unsigned char *>(signature.privateHandler),
+                                                          signature.privateLength,
+                                                          pkey);
+
+               if (temp == 0) {
+                       *status = CERTSVC_INVALID_SIGNATURE;
+                       result = CERTSVC_SUCCESS;
+               } else if (temp == 1) {
+                       *status = CERTSVC_SUCCESS;
+                       result = CERTSVC_SUCCESS;
+               }
+
+err:
+
+               if (mdctx != NULL)
+                       EVP_MD_CTX_destroy(mdctx);
+
+               if (pkey != NULL)
+                       EVP_PKEY_free(pkey);
+
+               return result;
+       }
+
+       inline int base64Encode(
+               const CertSvcString &message,
+               CertSvcString *base64)
+       {
+               if (!base64) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               std::string info(message.privateHandler, message.privateLength);
+               Base64Encoder base;
+               base.reset();
+               base.append(info);
+               base.finalize();
+               info = base.get();
+               char *ptr = new char[info.size() + 1];
+
+               if (ptr == NULL) {
+                       return CERTSVC_BAD_ALLOC;
+               }
+
+               memcpy(ptr, info.c_str(), info.size() + 1);
+               m_allocatedStringSet.insert(ptr);
+               base64->privateHandler = ptr;
+               base64->privateLength = info.size();
+               base64->privateInstance = message.privateInstance;
+               return CERTSVC_SUCCESS;
+       }
+
+       int base64Decode(
+               const CertSvcString &base64,
+               CertSvcString *message)
+       {
+               if (!message) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               std::string info(base64.privateHandler, base64.privateLength);
+               Base64Decoder base;
+               base.reset();
+               base.append(info);
+
+               if (!base.finalize()) {
+                       return CERTSVC_FAIL;
+               }
+
+               info = base.get();
+               char *ptr = new char[info.size() + 1];
+
+               if (ptr == NULL) {
+                       return CERTSVC_BAD_ALLOC;
+               }
+
+               memcpy(ptr, info.c_str(), info.size() + 1);
+               m_allocatedStringSet.insert(ptr);
+               message->privateHandler = ptr;
+               message->privateLength = info.size();
+               message->privateInstance = base64.privateInstance;
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int stringNew(
+               CertSvcInstance &instance,
+               const char *str,
+               size_t size,
+               CertSvcString *output)
+       {
+               if (!output)
+                       return CERTSVC_WRONG_ARGUMENT;
+
+               /* return struct for empty string */
+               if (size == 0 || str == NULL) {
+                       output->privateHandler = NULL;
+                       output->privateLength = 0;
+                       output->privateInstance = instance;
+                       return CERTSVC_SUCCESS;
+               }
+
+               if (strlen(str) < size)
+                       return CERTSVC_WRONG_ARGUMENT;
+
+               char *ptr = new(std::nothrow) char[size + 1];
+
+               if (ptr == NULL)
+                       return CERTSVC_BAD_ALLOC;
+
+               memcpy(ptr, str, size);
+               ptr[size] = '\0';
+               output->privateHandler = ptr;
+               output->privateLength = size;
+               output->privateInstance = instance;
+               m_allocatedStringSet.insert(ptr);
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int certificateVerify(
+               CertSvcCertificate certificate,
+               const CertSvcCertificate *trusted,
+               size_t trustedSize,
+               const CertSvcCertificate *untrusted,
+               size_t untrustedSize,
+               int checkCaFlag,
+               int *status)
+       {
+               if (!trusted || !status) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               auto iter = m_certificateMap.find(certificate.privateHandler);
+
+               if (iter == m_certificateMap.end()) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               X509 *cert = iter->second->getX509();
+               X509_STORE *store = X509_STORE_new();
+               STACK_OF(X509) *ustore = sk_X509_new_null();
+
+               for (size_t i = 0; i < trustedSize; ++i) {
+                       auto iter = m_certificateMap.find(trusted[i].privateHandler);
+
+                       if (iter == m_certificateMap.end()) {
+                               X509_STORE_free(store);
+                               sk_X509_free(ustore);
+                               return CERTSVC_WRONG_ARGUMENT;
+                       }
+
+                       X509_STORE_add_cert(store, iter->second->getX509());
+               }
+
+               for (size_t i = 0; i < untrustedSize; ++i) {
+                       auto iter = m_certificateMap.find(untrusted[i].privateHandler);
+
+                       if (iter == m_certificateMap.end()) {
+                               X509_STORE_free(store);
+                               sk_X509_free(ustore);
+                               return CERTSVC_WRONG_ARGUMENT;
+                       }
+
+                       if (sk_X509_push(ustore, iter->second->getX509()) == 0)
+                               break;
+               }
+
+               X509_STORE_CTX context;
+               X509_STORE_CTX_init(&context, store, cert, ustore);
+               int result = X509_verify_cert(&context);
+
+               if (result == 1 && checkCaFlag) { // check strictly
+                       STACK_OF(X509) *resultChain = X509_STORE_CTX_get1_chain(&context);
+                       X509 *tmpCert = NULL;
+                       int caFlagValidity;
+
+                       while ((tmpCert = sk_X509_pop(resultChain))) {
+                               caFlagValidity = X509_check_ca(tmpCert);
+
+                               if (caFlagValidity != 1 && (tmpCert = sk_X509_pop(resultChain)) != NULL) {
+                                       // the last one is not a CA.
+                                       result = 0;
+                                       break;
+                               }
+                       }
+               }
+
+               X509_STORE_CTX_cleanup(&context);
+               X509_STORE_free(store);
+               sk_X509_free(ustore);
+
+               if (result == 1) {
+                       *status = CERTSVC_SUCCESS;
+               } else {
+                       *status = CERTSVC_FAIL;
+               }
+
+               return CERTSVC_SUCCESS;
+       }
 
        // TODO : sangan.kwon, modify method by using CertificateIdentifier
-    int getVisibility(CertSvcCertificate certificate, CertSvcVisibility *visibility, const char *fingerprintListPath)
-    {
+       int getVisibility(CertSvcCertificate certificate, CertSvcVisibility *visibility,
+                                         const char *fingerprintListPath)
+       {
                int ret = CERTSVC_FAIL;
                //xmlChar *xmlPathCertificateSet  = (xmlChar*) "CertificateSet"; /*unused variable*/
                //xmlChar *xmlPathCertificateDomain = (xmlChar*) "CertificateDomain";// name=\"tizen-platform\""; /*unused variable*/
-               xmlChar *xmlPathDomainPlatform = (xmlChar*) "tizen-platform";
-               xmlChar *xmlPathDomainPublic = (xmlChar*) "tizen-public";
-               xmlChar *xmlPathDomainPartner = (xmlChar*) "tizen-partner";
-               xmlChar *xmlPathDomainDeveloper = (xmlChar*) "tizen-developer";
+               xmlChar *xmlPathDomainPlatform = (xmlChar *) "tizen-platform";
+               xmlChar *xmlPathDomainPublic = (xmlChar *) "tizen-public";
+               xmlChar *xmlPathDomainPartner = (xmlChar *) "tizen-partner";
+               xmlChar *xmlPathDomainDeveloper = (xmlChar *) "tizen-developer";
                //xmlChar *xmlPathFingerPrintSHA1 = (xmlChar*) "FingerprintSHA1"; /*unused variable*/
+               auto iter = m_certificateMap.find(certificate.privateHandler);
 
-        auto iter = m_certificateMap.find(certificate.privateHandler);
-        if (iter == m_certificateMap.end()) {
+               if (iter == m_certificateMap.end()) {
                        return CERTSVC_FAIL;
-        }
-        CertificatePtr certPtr = iter->second;
-
-               std::string fingerprint = Certificate::FingerprintToColonHex(certPtr->getFingerprint(Certificate::FINGERPRINT_SHA1));
+               }
 
+               CertificatePtr certPtr = iter->second;
+               std::string fingerprint = Certificate::FingerprintToColonHex(certPtr->getFingerprint(
+                                                                         Certificate::FINGERPRINT_SHA1));
                /*   load file */
                xmlDocPtr doc = xmlParseFile(fingerprintListPath);
-               if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL))
-               {
+
+               if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)) {
                        LogError("Failed to prase fingerprint_list.xml");
                        return CERTSVC_IO_ERROR;
                }
 
                xmlNodePtr curPtr = xmlFirstElementChild(xmlDocGetRootElement(doc));
-               if(curPtr == NULL)
-               {
+
+               if (curPtr == NULL) {
                        LogError("Can not find root");
                        ret = CERTSVC_IO_ERROR;
                        goto out;
                }
 
-               while(curPtr != NULL)
-               {
-                       xmlAttr* attr = curPtr->properties;
-                       if(!attr->children || !attr->children->content)
-                       {
+               while (curPtr != NULL) {
+                       xmlAttr *attr = curPtr->properties;
+
+                       if (!attr->children || !attr->children->content) {
                                LogError("Failed to get fingerprints from list");
                                ret = CERTSVC_FAIL;
                                goto out;
                        }
 
-                       xmlCharstrLevel = attr->children->content;
+                       xmlChar *strLevel = attr->children->content;
                        xmlNodePtr FpPtr = xmlFirstElementChild(curPtr);
-                       if(FpPtr == NULL)
-                       {
+
+                       if (FpPtr == NULL) {
                                LogError("Could not find fingerprint");
                                ret = CERTSVC_FAIL;
                                goto out;
                        }
 
                        LogDebug("Retrieve level : " << strLevel);
-                       while(FpPtr)
-                       {
+
+                       while (FpPtr) {
                                xmlChar *content = xmlNodeGetContent(FpPtr);
-                               if(xmlStrcmp(content, (xmlChar*)fingerprint.c_str()) == 0)
-                               {
+
+                               if (xmlStrcmp(content, (xmlChar *)fingerprint.c_str()) == 0) {
                                        LogDebug("fingerprint : " << content << " are " << strLevel);
-                                       if(!xmlStrcmp(strLevel, xmlPathDomainPlatform))
-                                       {
+
+                                       if (!xmlStrcmp(strLevel, xmlPathDomainPlatform)) {
                                                *visibility = CERTSVC_VISIBILITY_PLATFORM;
                                                ret = CERTSVC_SUCCESS;
                                                goto out;
-                                       }
-                                       else if(!xmlStrcmp(strLevel, xmlPathDomainPublic))
-                                       {
+                                       } else if (!xmlStrcmp(strLevel, xmlPathDomainPublic)) {
                                                *visibility = CERTSVC_VISIBILITY_PUBLIC;
                                                ret = CERTSVC_SUCCESS;
                                                goto out;
-                                       }
-                                       else if(!xmlStrcmp(strLevel, xmlPathDomainPartner))
-                                       {
+                                       } else if (!xmlStrcmp(strLevel, xmlPathDomainPartner)) {
                                                *visibility = CERTSVC_VISIBILITY_PARTNER;
                                                ret = CERTSVC_SUCCESS;
                                                goto out;
-                                       }
-                                       else if(!xmlStrcmp(strLevel, xmlPathDomainDeveloper))
-                                       {
+                                       } else if (!xmlStrcmp(strLevel, xmlPathDomainDeveloper)) {
                                                *visibility = CERTSVC_VISIBILITY_DEVELOPER;
                                                ret = CERTSVC_SUCCESS;
                                                goto out;
                                        }
                                }
-                               FpPtr = xmlNextElementSibling(FpPtr);
+
+                               FpPtr = xmlNextElementSibling(FpPtr);
+                       }
+
+                       curPtr = xmlNextElementSibling(curPtr);
+               }
+
+               xmlFreeDoc(doc);
+               return CERTSVC_FAIL;
+out:
+               xmlFreeDoc(doc);
+               return ret;
+       }
+
+       inline int pkcsNameIsUniqueInStore(
+               CertStoreType storeType,
+               CertSvcString pfxIdString,
+               int *is_unique)
+       {
+               return vcore_client_check_alias_exist_in_store(storeType, pfxIdString.privateHandler, is_unique);
+       }
+
+       inline int getCertDetailFromStore(CertStoreType storeType,
+                                                                         CertSvcString gname,
+                                                                         char **certBuffer,
+                                                                         size_t *certSize)
+       {
+               return vcore_client_get_certificate_from_store(storeType, gname.privateHandler, certBuffer,
+                               certSize, PEM_CRT);
+       }
+
+       inline int pkcsDeleteCertFromStore(
+               CertStoreType storeType,
+               CertSvcString gname
+       )
+       {
+               return vcore_client_delete_certificate_from_store(storeType, gname.privateHandler);
+       }
+
+       inline int pkcsHasPassword(
+               CertSvcString filepath,
+               int *has_password)
+       {
+               return pkcs12_has_password(filepath.privateHandler, has_password);
+       }
+
+       inline int pkcsImportToStore(
+               CertStoreType storeType,
+               CertSvcString path,
+               CertSvcString pass,
+               CertSvcString pfxIdString)
+       {
+               return pkcs12_import_from_file_to_store(storeType, path.privateHandler, pass.privateHandler,
+                                                                                               pfxIdString.privateHandler);
+       }
+
+       inline int pkcsGetAliasNameForCertInStore(CertStoreType storeType,
+                       CertSvcString gname,
+                       char **alias)
+       {
+               return vcore_client_get_certificate_alias_from_store(storeType, gname.privateHandler, alias);
+       }
+
+       inline int pkcsSetCertStatusToStore(CertStoreType storeType,
+                                                                               int is_root_app,
+                                                                               CertSvcString gname,
+                                                                               CertStatus status)
+       {
+               return vcore_client_set_certificate_status_to_store(storeType, is_root_app, gname.privateHandler,
+                               status);
+       }
+
+       inline int pkcsGetCertStatusFromStore(
+               CertStoreType storeType,
+               CertSvcString gname,
+               CertStatus *status)
+       {
+               return vcore_client_get_certificate_status_from_store(storeType, gname.privateHandler, status);
+       }
+
+       inline int getCertFromStore(CertSvcInstance instance,
+                                                               CertStoreType storeType,
+                                                               const char *gname,
+                                                               CertSvcCertificate *certificate)
+       {
+               return certsvc_get_certificate(instance, storeType, gname, certificate);
+       }
+
+       inline int freePkcsIdListFromStore(CertSvcStoreCertList **certList)
+       {
+               CertSvcStoreCertList *current;
+               CertSvcStoreCertList *next;
+
+               for (current = *certList; current != NULL; current = next) {
+                       next = current->next;
+                       free(current->title);
+                       free(current->gname);
+                       free(current);
+               }
+
+               *certList = NULL;
+               return CERTSVC_SUCCESS;
+       }
+
+       inline int getPkcsIdListFromStore(
+               CertStoreType storeType,
+               int is_root_app,
+               CertSvcStoreCertList **certList,
+               size_t *length)
+       {
+               return vcore_client_get_certificate_list_from_store(storeType, is_root_app, certList, length);
+       }
+
+       inline int getPkcsIdEndUserListFromStore(
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length)
+       {
+               return vcore_client_get_end_user_certificate_list_from_store(storeType, certList, length);
+       }
+
+       inline int getPkcsIdRootListFromStore(
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length)
+       {
+               return vcore_client_get_root_certificate_list_from_store(storeType, certList, length);
+       }
+
+       inline int getPkcsPrivateKeyFromStore(
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **certBuffer,
+               size_t *certSize)
+       {
+               return vcore_client_get_certificate_from_store(storeType, gname.privateHandler, certBuffer,
+                               certSize, (CertType)P12_PKEY);
+       }
+
+       inline int getPkcsCertificateListFromStore(
+               CertSvcInstance &instance,
+               CertStoreType storeType,
+               CertSvcString &pfxIdString,
+               CertSvcCertificateList *handler)
+       {
+               char **certs = NULL;
+               size_t ncerts = 0;
+               int result = vcore_client_load_certificates_from_store(storeType, pfxIdString.privateHandler,
+                                        &certs, &ncerts);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Unable to load certificates from store.");
+                       return result;
+               }
+
+               std::shared_ptr<char *> certsPtr(certs, CharArrDeleter());
+               std::vector<CertificatePtr> certPtrVector;
+
+               for (size_t i = 0; i < ncerts; i++) {
+                       CertSvcString Alias;
+                       Alias.privateHandler = certs[i];
+                       Alias.privateLength = strlen(certs[i]);
+                       char *certBuffer = NULL;
+                       size_t certLength = 0;
+                       result = certsvc_pkcs12_get_certificate_info_from_store(instance, storeType, Alias, &certBuffer,
+                                        &certLength);
+
+                       if (result != CERTSVC_SUCCESS || !certBuffer) {
+                               LogError("Failed to get certificate buffer.");
+                               return CERTSVC_FAIL;
+                       }
+
+                       std::shared_ptr<char> certBufferPtr(certBuffer, CharDeleter());
+                       const char *header = strstr(certBuffer, START_CERT);
+                       const char *headEnd = START_CERT;
+
+                       if (!header) {
+                               header = strstr(certBuffer, START_TRUSTED);
+                               headEnd = START_TRUSTED;
+
+                               if (!header) {
+                                       LogError("Invalid format of certificate. alias : " << certs[i]);
+                                       return CERTSVC_FAIL;
+                               }
+                       }
+
+                       const char *trailer = strstr(header, END_CERT);
+                       const char *tailEnd = END_CERT;
+
+                       if (!trailer) {
+                               trailer = strstr(header, END_TRUSTED);
+                               tailEnd = END_TRUSTED;
+
+                               if (!trailer) {
+                                       LogError("Invalid format of certificate. alias : " << certs[i]);
+                                       return CERTSVC_FAIL;
+                               }
                        }
-                       curPtr = xmlNextElementSibling(curPtr);
+
+                       if ((strcmp(headEnd, START_CERT) == 0 && strcmp(tailEnd, END_TRUSTED) == 0)
+                                       || (strcmp(headEnd, START_TRUSTED) == 0 && strcmp(tailEnd, END_CERT) == 0)) {
+                               LogError("Invalid format of certificate. alias : " << certs[i]);
+                               return CERTSVC_FAIL;
+                       }
+
+                       header += strlen(headEnd); /* cut headEnd */
+                       std::string certStr(header, strlen(header) - strlen(trailer));
+                       certPtrVector.push_back(CertificatePtr(new Certificate(certStr, Certificate::FORM_BASE64)));
                }
-               xmlFreeDoc(doc);
-               return CERTSVC_FAIL;
-out:
-               xmlFreeDoc(doc);
-               return ret;
-       }
 
-    inline int pkcsNameIsUniqueInStore(
-        CertStoreType storeType,
-        CertSvcString pfxIdString,
-        int *is_unique)
-    {
-        return vcore_client_check_alias_exist_in_store(storeType, pfxIdString.privateHandler, is_unique);
-    }
-
-    inline int getCertDetailFromStore(CertStoreType storeType,
-        CertSvcString gname,
-        char **certBuffer,
-        size_t *certSize)
-    {
-        return vcore_client_get_certificate_from_store(storeType, gname.privateHandler, certBuffer, certSize, PEM_CRT);
-    }
-
-    inline int pkcsDeleteCertFromStore(
-        CertStoreType storeType,
-        CertSvcString gname
-    )
-    {
-        return vcore_client_delete_certificate_from_store(storeType, gname.privateHandler);
-    }
-
-    inline int pkcsHasPassword(
-        CertSvcString filepath,
-        int *has_password)
-    {
-        return pkcs12_has_password(filepath.privateHandler, has_password);
-    }
-
-    inline int pkcsImportToStore(
-        CertStoreType storeType,
-        CertSvcString path,
-        CertSvcString pass,
-        CertSvcString pfxIdString)
-    {
-        return pkcs12_import_from_file_to_store(storeType, path.privateHandler, pass.privateHandler, pfxIdString.privateHandler);
-    }
-
-    inline int pkcsGetAliasNameForCertInStore(CertStoreType storeType,
-        CertSvcString gname,
-        char **alias)
-    {
-        return vcore_client_get_certificate_alias_from_store(storeType, gname.privateHandler, alias);
-    }
-
-    inline int pkcsSetCertStatusToStore(CertStoreType storeType,
-        int is_root_app,
-       CertSvcString gname,
-        CertStatus status)
-    {
-           return vcore_client_set_certificate_status_to_store(storeType, is_root_app, gname.privateHandler, status);
-    }
-
-    inline int pkcsGetCertStatusFromStore(
-        CertStoreType storeType,
-        CertSvcString gname,
-        CertStatus *status)
-    {
-        return vcore_client_get_certificate_status_from_store(storeType, gname.privateHandler, status);
-    }
-
-    inline int getCertFromStore(CertSvcInstance instance,
-        CertStoreType storeType,
-        const char *gname,
-        CertSvcCertificate *certificate)
-    {
-           return certsvc_get_certificate(instance, storeType, gname, certificate);
-    }
-
-    inline int freePkcsIdListFromStore(CertSvcStoreCertList **certList)
-    {
-        CertSvcStoreCertList *current;
-        CertSvcStoreCertList *next;
-
-        for (current = *certList; current != NULL; current = next) {
-            next = current->next;
-
-            free(current->title);
-            free(current->gname);
-            free(current);
-        }
-
-        *certList = NULL;
-
-        return CERTSVC_SUCCESS;
-    }
-
-    inline int getPkcsIdListFromStore(
-        CertStoreType storeType,
-        int is_root_app,
-        CertSvcStoreCertList** certList,
-        size_t *length)
-    {
-        return vcore_client_get_certificate_list_from_store(storeType, is_root_app, certList, length);
-    }
-
-    inline int getPkcsIdEndUserListFromStore(
-        CertStoreType storeType,
-        CertSvcStoreCertList** certList,
-        size_t *length)
-    {
-        return vcore_client_get_end_user_certificate_list_from_store(storeType, certList, length);
-    }
-
-    inline int getPkcsIdRootListFromStore(
-        CertStoreType storeType,
-        CertSvcStoreCertList** certList,
-        size_t *length)
-    {
-        return vcore_client_get_root_certificate_list_from_store(storeType, certList, length);
-    }
-
-    inline int getPkcsPrivateKeyFromStore(
-        CertStoreType storeType,
-        CertSvcString gname,
-        char **certBuffer,
-        size_t *certSize)
-    {
-        return vcore_client_get_certificate_from_store(storeType, gname.privateHandler, certBuffer, certSize, (CertType)P12_PKEY);
-    }
-
-    inline int getPkcsCertificateListFromStore(
-        CertSvcInstance &instance,
-        CertStoreType storeType,
-        CertSvcString &pfxIdString,
-        CertSvcCertificateList *handler)
-    {
-        char **certs = NULL;
-        size_t ncerts = 0;
-        int result = vcore_client_load_certificates_from_store(storeType, pfxIdString.privateHandler, &certs, &ncerts);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Unable to load certificates from store.");
-            return result;
-        }
-
-        std::shared_ptr<char *> certsPtr(certs, CharArrDeleter());
+               std::vector<size_t> listId;
 
-               std::vector<CertificatePtr> certPtrVector;
-        for (size_t i = 0; i < ncerts; i++) {
-            CertSvcString Alias;
-            Alias.privateHandler = certs[i];
-            Alias.privateLength = strlen(certs[i]);
-            char *certBuffer = NULL;
-            size_t certLength = 0;
-            result = certsvc_pkcs12_get_certificate_info_from_store(instance, storeType, Alias, &certBuffer, &certLength);
-            if (result != CERTSVC_SUCCESS || !certBuffer) {
-                LogError("Failed to get certificate buffer.");
-                return CERTSVC_FAIL;
-            }
-
-            std::shared_ptr<char> certBufferPtr(certBuffer, CharDeleter());
-
-            const char *header = strstr(certBuffer, START_CERT);
-            const char *headEnd = START_CERT;
-            if (!header) {
-                header = strstr(certBuffer, START_TRUSTED);
-                headEnd = START_TRUSTED;
-                if (!header) {
-                    LogError("Invalid format of certificate. alias : " << certs[i]);
-                    return CERTSVC_FAIL;
-                }
-            }
-
-            const char *trailer = strstr(header, END_CERT);
-            const char *tailEnd = END_CERT;
-            if (!trailer) {
-                trailer = strstr(header, END_TRUSTED);
-                tailEnd = END_TRUSTED;
-                if (!trailer) {
-                    LogError("Invalid format of certificate. alias : " << certs[i]);
-                    return CERTSVC_FAIL;
-                }
-            }
-
-            if ((strcmp(headEnd, START_CERT) == 0 && strcmp(tailEnd, END_TRUSTED) == 0)
-                    || (strcmp(headEnd, START_TRUSTED) == 0 && strcmp(tailEnd, END_CERT) == 0)) {
-                LogError("Invalid format of certificate. alias : " << certs[i]);
-                return CERTSVC_FAIL;
-            }
-
-            header += strlen(headEnd); /* cut headEnd */
-            std::string certStr(header, strlen(header) - strlen(trailer));
-            certPtrVector.push_back(CertificatePtr(new Certificate(certStr, Certificate::FORM_BASE64)));
-        }
-
-        std::vector<size_t> listId;
-        for (const auto &cert : certPtrVector)
-            listId.push_back(addCert(cert));
-
-        size_t position = m_idListCounter++;
-        m_idListMap[position] = listId;
-
-        handler->privateInstance = instance;
-        handler->privateHandler = position;
-
-        return result;
-    }
-
-    inline bool checkValidStoreType(CertStoreType storeType)
-    {
-        if (storeType >= VPN_STORE && storeType <= ALL_STORE)
-            return true;
-        else
-            return false;
-    }
+               for (const auto &cert : certPtrVector)
+                       listId.push_back(addCert(cert));
+
+               size_t position = m_idListCounter++;
+               m_idListMap[position] = listId;
+               handler->privateInstance = instance;
+               handler->privateHandler = position;
+               return result;
+       }
+
+       inline bool checkValidStoreType(CertStoreType storeType)
+       {
+               if (storeType >= VPN_STORE && storeType <= ALL_STORE)
+                       return true;
+               else
+                       return false;
+       }
 
 private:
-    size_t m_certificateCounter;
-    std::map<size_t, CertificatePtr> m_certificateMap;
+       size_t m_certificateCounter;
+       std::map<size_t, CertificatePtr> m_certificateMap;
 
-    size_t m_idListCounter;
-    std::map<size_t, std::vector<size_t> > m_idListMap;
+       size_t m_idListCounter;
+       std::map<size_t, std::vector<size_t>> m_idListMap;
 
-    size_t m_stringListCounter;
-    std::map<size_t, std::vector<std::string> > m_stringListMap;
+       size_t m_stringListCounter;
+       std::map<size_t, std::vector<std::string>> m_stringListMap;
 
-    std::set<char *> m_allocatedStringSet;
+       std::set<char *> m_allocatedStringSet;
 };
 
-inline CertSvcInstanceImpl *impl(CertSvcInstance instance) {
-    return static_cast<CertSvcInstanceImpl*>(instance.privatePtr);
+inline CertSvcInstanceImpl *impl(CertSvcInstance instance)
+{
+       return static_cast<CertSvcInstanceImpl *>(instance.privatePtr);
 }
 
 } // namespace anonymous
 
-int certsvc_instance_new(CertSvcInstance *instance) {
-    static int init = 1;
-    if (init) {
-        OpenSSL_add_ssl_algorithms();
-        OpenSSL_add_all_digests();
-        init = 0;
-    }
-    try {
-        instance->privatePtr =
-            reinterpret_cast<void*>(new CertSvcInstanceImpl);
-        if (instance->privatePtr)
-            return CERTSVC_SUCCESS;
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+int certsvc_instance_new(CertSvcInstance *instance)
+{
+       static int init = 1;
+
+       if (init) {
+               OpenSSL_add_ssl_algorithms();
+               OpenSSL_add_all_digests();
+               init = 0;
+       }
+
+       try {
+               instance->privatePtr =
+                       reinterpret_cast<void *>(new CertSvcInstanceImpl);
+
+               if (instance->privatePtr)
+                       return CERTSVC_SUCCESS;
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
-void certsvc_instance_reset(CertSvcInstance instance) {
-    impl(instance)->reset();
+void certsvc_instance_reset(CertSvcInstance instance)
+{
+       impl(instance)->reset();
 }
 
-void certsvc_instance_free(CertSvcInstance instance) {
-    delete impl(instance);
+void certsvc_instance_free(CertSvcInstance instance)
+{
+       delete impl(instance);
 }
 
 int certsvc_certificate_new_from_file(
-        CertSvcInstance instance,
-        const char *location,
-        CertSvcCertificate *certificate)
+       CertSvcInstance instance,
+       const char *location,
+       CertSvcCertificate *certificate)
 {
-    try {
-        CertificatePtr cert = Certificate::createFromFile(location);
-
-        certificate->privateInstance = instance;
-        certificate->privateHandler = impl(instance)->addCert(cert);
-
-        return CERTSVC_SUCCESS;
-    // TODO support for std exceptions
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               CertificatePtr cert = Certificate::createFromFile(location);
+               certificate->privateInstance = instance;
+               certificate->privateHandler = impl(instance)->addCert(cert);
+               return CERTSVC_SUCCESS;
+               // TODO support for std exceptions
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_new_from_memory(
-        CertSvcInstance instance,
-        const unsigned char *memory,
-        size_t len,
-        CertSvcCertificateForm form,
-        CertSvcCertificate *certificate)
+       CertSvcInstance instance,
+       const unsigned char *memory,
+       size_t len,
+       CertSvcCertificateForm form,
+       CertSvcCertificate *certificate)
 {
-    try {
-        Certificate::FormType formType;
-        std::string binary((char*)memory, len);
-
-        if (CERTSVC_FORM_DER == form) {
-            formType = Certificate::FORM_DER;
-        } else {
-            formType = Certificate::FORM_BASE64;
-        }
-
-        CertificatePtr cert(new Certificate(binary, formType));
-
-        certificate->privateInstance = instance;
-        certificate->privateHandler = impl(instance)->addCert(cert);
-        return CERTSVC_SUCCESS;
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               Certificate::FormType formType;
+               std::string binary((char *)memory, len);
+
+               if (CERTSVC_FORM_DER == form) {
+                       formType = Certificate::FORM_DER;
+               } else {
+                       formType = Certificate::FORM_BASE64;
+               }
+
+               CertificatePtr cert(new Certificate(binary, formType));
+               certificate->privateInstance = instance;
+               certificate->privateHandler = impl(instance)->addCert(cert);
+               return CERTSVC_SUCCESS;
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 void certsvc_certificate_free(CertSvcCertificate certificate)
@@ -1146,111 +1239,115 @@ void certsvc_certificate_free(CertSvcCertificate certificate)
 }
 
 int certsvc_certificate_save_file(
-        CertSvcCertificate certificate,
-        const char *location)
+       CertSvcCertificate certificate,
+       const char *location)
 {
-    return impl(certificate.privateInstance)->saveToFile(certificate, location);
+       return impl(certificate.privateInstance)->saveToFile(certificate, location);
 }
 
 int certsvc_certificate_list_get_one(
-        CertSvcCertificateList handler,
-        size_t position,
-        CertSvcCertificate *certificate)
+       CertSvcCertificateList handler,
+       size_t position,
+       CertSvcCertificate *certificate)
 {
-    return impl(handler.privateInstance)->
-        getCertFromList(handler, position, certificate);
+       return impl(handler.privateInstance)->
+                  getCertFromList(handler, position, certificate);
 }
 
 int certsvc_certificate_list_get_length(
-        CertSvcCertificateList handler,
-        size_t *size)
+       CertSvcCertificateList handler,
+       size_t *size)
 {
-    return impl(handler.privateInstance)->getCertListLen(handler, size);
+       return impl(handler.privateInstance)->getCertListLen(handler, size);
 }
 
 void certsvc_certificate_list_free(CertSvcCertificateList handler)
 {
-    impl(handler.privateInstance)->removeCertList(handler);
+       impl(handler.privateInstance)->removeCertList(handler);
 }
 
 void certsvc_certificate_list_all_free(CertSvcCertificateList handler)
 {
-    impl(handler.privateInstance)->removeCertListAll(handler);
+       impl(handler.privateInstance)->removeCertListAll(handler);
 }
 
 int certsvc_certificate_is_signed_by(
-        CertSvcCertificate child,
-        CertSvcCertificate parent,
-        int *status)
+       CertSvcCertificate child,
+       CertSvcCertificate parent,
+       int *status)
 {
-    if (child.privateInstance.privatePtr == parent.privateInstance.privatePtr) {
-        return impl(child.privateInstance)->isSignedBy(child, parent, status);
-    }
-    return CERTSVC_WRONG_ARGUMENT;
+       if (child.privateInstance.privatePtr == parent.privateInstance.privatePtr) {
+               return impl(child.privateInstance)->isSignedBy(child, parent, status);
+       }
+
+       return CERTSVC_WRONG_ARGUMENT;
 }
 
 int certsvc_certificate_get_string_field(
-        CertSvcCertificate certificate,
-        CertSvcCertificateField field,
-        CertSvcString *buffer)
+       CertSvcCertificate certificate,
+       CertSvcCertificateField field,
+       CertSvcString *buffer)
 {
-    try {
-        return impl(certificate.privateInstance)->getField(certificate, field, buffer);
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->getField(certificate, field, buffer);
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_get_not_after(
-        CertSvcCertificate certificate,
-        time_t *result)
+       CertSvcCertificate certificate,
+       time_t *result)
 {
-    try {
-        return impl(certificate.privateInstance)->getNotAfter(certificate, result);
-    } catch(...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->getNotAfter(certificate, result);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_get_not_before(
-        CertSvcCertificate certificate,
-        time_t *result)
+       CertSvcCertificate certificate,
+       time_t *result)
 {
-    try {
-        return impl(certificate.privateInstance)->getNotBefore(certificate, result);
-    } catch(...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->getNotBefore(certificate, result);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_is_root_ca(CertSvcCertificate certificate, int *status)
 {
-    return impl(certificate.privateInstance)->isRootCA(certificate, status);
+       return impl(certificate.privateInstance)->isRootCA(certificate, status);
 }
 
 int certsvc_string_list_get_one(
-        CertSvcStringList handler,
-        size_t position,
-        CertSvcString *buffer)
+       CertSvcStringList handler,
+       size_t position,
+       CertSvcString *buffer)
 {
-    try {
-        return impl(handler.privateInstance)->getStringFromList(handler, position, buffer);
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(handler.privateInstance)->getStringFromList(handler, position, buffer);
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_string_list_get_length(
-        CertSvcStringList handler,
-        size_t *size)
+       CertSvcStringList handler,
+       size_t *size)
 {
-    return impl(handler.privateInstance)->getStringListLen(handler, size);
+       return impl(handler.privateInstance)->getStringListLen(handler, size);
 }
 
 void certsvc_string_list_free(CertSvcStringList handler)
 {
-       if (handler.privateHandler != 0)
-       {
+       if (handler.privateHandler != 0) {
                impl(handler.privateInstance)->removeStringList(handler);
                handler.privateHandler = 0;
        }
@@ -1263,40 +1360,44 @@ void certsvc_string_free(CertSvcString string)
 }
 
 void certsvc_string_to_cstring(
-        CertSvcString string,
-        const char **buffer,
-        size_t *len)
+       CertSvcString string,
+       const char **buffer,
+       size_t *len)
 {
-    if (buffer) {
-        *buffer = string.privateHandler;
-    }
-    if (len) {
-        *len = string.privateLength;
-    }
+       if (buffer) {
+               *buffer = string.privateHandler;
+       }
+
+       if (len) {
+               *len = string.privateLength;
+       }
 }
 
 int certsvc_certificate_chain_sort(
-        CertSvcCertificate *certificate_array,
-        size_t size)
+       CertSvcCertificate *certificate_array,
+       size_t size)
 {
-    try {
-        if (!certificate_array) {
-            return CERTSVC_WRONG_ARGUMENT;
-        }
-        return impl(certificate_array[0].privateInstance)->
-            sortCollection(certificate_array, size);
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!certificate_array) {
+                       return CERTSVC_WRONG_ARGUMENT;
+               }
+
+               return impl(certificate_array[0].privateInstance)->
+                          sortCollection(certificate_array, size);
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_dup_x509(CertSvcCertificate certificate, X509 **cert)
 {
-    try {
-        return impl(certificate.privateInstance)->getX509Copy(certificate, cert);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->getX509Copy(certificate, cert);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 void certsvc_certificate_free_x509(X509 *x509)
@@ -1313,507 +1414,554 @@ int certsvc_certificate_dup_pubkey_der(
        try {
                return impl(certificate.privateInstance)->getPubkeyDER(certificate, pubkey, len);
        } catch (...) {}
+
        return CERTSVC_FAIL;
 }
 
-void certsvc_pkcs12_free_evp_pkey(EVP_PKEYpkey)
+void certsvc_pkcs12_free_evp_pkey(EVP_PKEY *pkey)
 {
-    EVP_PKEY_free(pkey);
+       EVP_PKEY_free(pkey);
 }
 
 int certsvc_message_verify(
-    CertSvcCertificate certificate,
-    CertSvcString message,
-    CertSvcString signature,
-    const char *algorithm,
-    int *status)
+       CertSvcCertificate certificate,
+       CertSvcString message,
+       CertSvcString signature,
+       const char *algorithm,
+       int *status)
 {
-    try {
-        return impl(certificate.privateInstance)->verify(
-            certificate,
-            message,
-            signature,
-            algorithm,
-            status);
-    } catch(...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->verify(
+                                  certificate,
+                                  message,
+                                  signature,
+                                  algorithm,
+                                  status);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_base64_encode(CertSvcString message, CertSvcString *base64)
 {
-    try {
-        return impl(message.privateInstance)->base64Encode(message, base64);
-    } catch(...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(message.privateInstance)->base64Encode(message, base64);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_base64_decode(CertSvcString base64, CertSvcString *message)
 {
-    try {
-        return impl(base64.privateInstance)->base64Decode(base64, message);
-    } catch(...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(base64.privateInstance)->base64Decode(base64, message);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_string_new(
-    CertSvcInstance instance,
-    const char *url,
-    size_t size,
-    CertSvcString *output)
+       CertSvcInstance instance,
+       const char *url,
+       size_t size,
+       CertSvcString *output)
 {
-    try {
-        return impl(instance)->stringNew(instance, url, size, output);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(instance)->stringNew(instance, url, size, output);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_string_not_managed(
-    CertSvcInstance instance,
-    const char *url,
-    size_t size,
-    CertSvcString *output)
+       CertSvcInstance instance,
+       const char *url,
+       size_t size,
+       CertSvcString *output)
 {
-    if (!output) {
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-    output->privateHandler = const_cast<char*>(url);
-    output->privateLength = size;
-    output->privateInstance = instance;
-    return CERTSVC_SUCCESS;
+       if (!output) {
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       output->privateHandler = const_cast<char *>(url);
+       output->privateLength = size;
+       output->privateInstance = instance;
+       return CERTSVC_SUCCESS;
 }
 
 int certsvc_certificate_verify(
-    CertSvcCertificate certificate,
-    const CertSvcCertificate *trusted,
-    size_t trustedSize,
-    const CertSvcCertificate *untrusted,
-    size_t untrustedSize,
-    int *status)
+       CertSvcCertificate certificate,
+       const CertSvcCertificate *trusted,
+       size_t trustedSize,
+       const CertSvcCertificate *untrusted,
+       size_t untrustedSize,
+       int *status)
 {
-    try {
-        return impl(certificate.privateInstance)->certificateVerify(
-            certificate,
-            trusted,
-            trustedSize,
-            untrusted,
-            untrustedSize,
-            0,
-            status);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->certificateVerify(
+                                  certificate,
+                                  trusted,
+                                  trustedSize,
+                                  untrusted,
+                                  untrustedSize,
+                                  0,
+                                  status);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_certificate_verify_with_caflag(
-    CertSvcCertificate certificate,
-    const CertSvcCertificate *trusted,
-    size_t trustedSize,
-    const CertSvcCertificate *untrusted,
-    size_t untrustedSize,
-    int *status)
+       CertSvcCertificate certificate,
+       const CertSvcCertificate *trusted,
+       size_t trustedSize,
+       const CertSvcCertificate *untrusted,
+       size_t untrustedSize,
+       int *status)
 {
-    try {
-        return impl(certificate.privateInstance)->certificateVerify(
-            certificate,
-            trusted,
-            trustedSize,
-            untrusted,
-            untrustedSize,
-            1,
-            status);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(certificate.privateInstance)->certificateVerify(
+                                  certificate,
+                                  trusted,
+                                  trustedSize,
+                                  untrusted,
+                                  untrustedSize,
+                                  1,
+                                  status);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
-int certsvc_certificate_get_visibility(CertSvcCertificate certificate, CertSvcVisibility *visibility)
+int certsvc_certificate_get_visibility(CertSvcCertificate certificate,
+                                                                          CertSvcVisibility *visibility)
 {
-    try {
-        int result = impl(certificate.privateInstance)->getVisibility(certificate, visibility, FINGERPRINT_LIST_PATH);
-        if (result != CERTSVC_SUCCESS) {
-            LogDebug("Cannot find store id in FINGERPRINT_LIST_PATH. Find it in extention continue.");
-            result = impl(certificate.privateInstance)->getVisibility(certificate, visibility, FINGERPRINT_LIST_EXT_PATH);
-        }
-        return result;
-    } catch (...)
-    {
-        LogError("exception occur");
-    }
-    return CERTSVC_FAIL;
+       try {
+               int result = impl(certificate.privateInstance)->getVisibility(certificate, visibility,
+                                        FINGERPRINT_LIST_PATH);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogDebug("Cannot find store id in FINGERPRINT_LIST_PATH. Find it in extention continue.");
+                       result = impl(certificate.privateInstance)->getVisibility(certificate, visibility,
+                                        FINGERPRINT_LIST_EXT_PATH);
+               }
+
+               return result;
+       } catch (...) {
+               LogError("exception occur");
+       }
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_get_certificate(CertSvcInstance instance,
-    CertStoreType storeType,
-    const char *gname,
-    CertSvcCertificate *certificate)
+                                                       CertStoreType storeType,
+                                                       const char *gname,
+                                                       CertSvcCertificate *certificate)
 {
-    int result = CERTSVC_SUCCESS;
-    char* certBuffer = NULL;
-    std::string fileName;
-    size_t length = 0;
-    FILE* fp_write = NULL;
-    BIO* pBio = NULL;
-    X509* x509Struct = NULL;
-
-    try {
-        result = vcore_client_get_certificate_from_store(storeType, gname, &certBuffer, &length, PEM_CRT);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Failed to get certificate buffer from store.");
-            return result;
-        }
-
-        pBio = BIO_new(BIO_s_mem());
-        if (pBio == NULL) {
-            LogError("Failed to allocate memory.");
-            result = CERTSVC_BAD_ALLOC;
-        }
-
-        length = BIO_write(pBio, (const void *)certBuffer, (int)length);
-        if ((int)length < 1) {
-            LogError("Failed to load cert into bio.");
-            result = CERTSVC_BAD_ALLOC;
-        }
-
-        x509Struct = PEM_read_bio_X509(pBio, NULL, 0, NULL);
-        if (x509Struct != NULL) {
-            CertificatePtr cert(new Certificate(x509Struct));
-            certificate->privateInstance = instance;
-            certificate->privateHandler = impl(instance)->addCert(cert);
-            if (certBuffer!=NULL) free(certBuffer);
-        }
-        else {
-            fileName.append(CERTSVC_PKCS12_STORAGE_DIR);
-            fileName.append(gname);
-            if (!(fp_write = fopen(fileName.c_str(), "w"))) {
-                LogError("Failed to open the file for writing, [" << fileName << "].");
-                result = CERTSVC_FAIL;
-                goto error;
-            }
-
-            if (fwrite(certBuffer, sizeof(char), length, fp_write) != length) {
-                LogError("Fail to write certificate.");
-                result = CERTSVC_FAIL;
-                goto error;
-            }
-
-            fclose(fp_write);
-            result = certsvc_certificate_new_from_file(instance, fileName.c_str(), certificate);
-            if (result != CERTSVC_SUCCESS) {
-                LogError("Failed to construct certificate from buffer.");
-                goto error;
-            }
-            unlink(fileName.c_str());
-        }
-        result = CERTSVC_SUCCESS;
-    } catch (std::bad_alloc &) {
-        return CERTSVC_BAD_ALLOC;
-    } catch (...) {}
+       int result = CERTSVC_SUCCESS;
+       char *certBuffer = NULL;
+       std::string fileName;
+       size_t length = 0;
+       FILE *fp_write = NULL;
+       BIO *pBio = NULL;
+       X509 *x509Struct = NULL;
+
+       try {
+               result = vcore_client_get_certificate_from_store(storeType, gname, &certBuffer, &length, PEM_CRT);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Failed to get certificate buffer from store.");
+                       return result;
+               }
+
+               pBio = BIO_new(BIO_s_mem());
+
+               if (pBio == NULL) {
+                       LogError("Failed to allocate memory.");
+                       result = CERTSVC_BAD_ALLOC;
+               }
+
+               length = BIO_write(pBio, (const void *)certBuffer, (int)length);
+
+               if ((int)length < 1) {
+                       LogError("Failed to load cert into bio.");
+                       result = CERTSVC_BAD_ALLOC;
+               }
+
+               x509Struct = PEM_read_bio_X509(pBio, NULL, 0, NULL);
+
+               if (x509Struct != NULL) {
+                       CertificatePtr cert(new Certificate(x509Struct));
+                       certificate->privateInstance = instance;
+                       certificate->privateHandler = impl(instance)->addCert(cert);
+
+                       if (certBuffer != NULL) free(certBuffer);
+               } else {
+                       fileName.append(CERTSVC_PKCS12_STORAGE_DIR);
+                       fileName.append(gname);
+
+                       if (!(fp_write = fopen(fileName.c_str(), "w"))) {
+                               LogError("Failed to open the file for writing, [" << fileName << "].");
+                               result = CERTSVC_FAIL;
+                               goto error;
+                       }
+
+                       if (fwrite(certBuffer, sizeof(char), length, fp_write) != length) {
+                               LogError("Fail to write certificate.");
+                               result = CERTSVC_FAIL;
+                               goto error;
+                       }
+
+                       fclose(fp_write);
+                       result = certsvc_certificate_new_from_file(instance, fileName.c_str(), certificate);
+
+                       if (result != CERTSVC_SUCCESS) {
+                               LogError("Failed to construct certificate from buffer.");
+                               goto error;
+                       }
+
+                       unlink(fileName.c_str());
+               }
+
+               result = CERTSVC_SUCCESS;
+       } catch (std::bad_alloc &) {
+               return CERTSVC_BAD_ALLOC;
+       } catch (...) {}
 
 error:
-    if (x509Struct) X509_free(x509Struct);
-    if (pBio) BIO_free(pBio);
-    return result;
+
+       if (x509Struct) X509_free(x509Struct);
+
+       if (pBio) BIO_free(pBio);
+
+       return result;
 }
 
 int certsvc_pkcs12_check_alias_exists_in_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString pfxIdString,
-    int *is_unique)
+               CertStoreType storeType,
+               CertSvcString pfxIdString,
+               int *is_unique)
 {
-    if (pfxIdString.privateHandler == NULL || pfxIdString.privateLength<=0) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-
-        return impl(instance)->pkcsNameIsUniqueInStore(storeType, pfxIdString, is_unique);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (pfxIdString.privateHandler == NULL || pfxIdString.privateLength <= 0) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsNameIsUniqueInStore(storeType, pfxIdString, is_unique);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_free_certificate_list_loaded_from_store(CertSvcInstance instance,
-    CertSvcStoreCertList **certList)
+               CertSvcStoreCertList **certList)
 {
-    if (certList == NULL || *certList == NULL) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        return impl(instance)->freePkcsIdListFromStore(certList);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (certList == NULL || *certList == NULL) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               return impl(instance)->freePkcsIdListFromStore(certList);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_certificate_list_from_store(CertSvcInstance instance,
-       CertStoreType storeType,
-    int is_root_app,
-       CertSvcStoreCertList **certList,
-       size_t *length)
+               CertStoreType storeType,
+               int is_root_app,
+               CertSvcStoreCertList **certList,
+               size_t *length)
 {
-    if (certList == NULL || *certList != NULL) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
+       if (certList == NULL || *certList != NULL) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
 
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
 
-        return impl(instance)->getPkcsIdListFromStore(storeType, is_root_app, certList, length);
-    } catch (...) {}
+               return impl(instance)->getPkcsIdListFromStore(storeType, is_root_app, certList, length);
+       } catch (...) {}
 
-    return CERTSVC_FAIL;
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_end_user_certificate_list_from_store(CertSvcInstance instance,
-       CertStoreType storeType,
-       CertSvcStoreCertList **certList,
-       size_t *length)
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length)
 {
-    if (certList == NULL || *certList != NULL) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-
-        return impl(instance)->getPkcsIdEndUserListFromStore(storeType, certList, length);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (certList == NULL || *certList != NULL) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getPkcsIdEndUserListFromStore(storeType, certList, length);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_root_certificate_list_from_store(CertSvcInstance instance,
-       CertStoreType storeType,
-       CertSvcStoreCertList **certList,
-       size_t *length)
+               CertStoreType storeType,
+               CertSvcStoreCertList **certList,
+               size_t *length)
 {
-    if (certList == NULL || *certList != NULL) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-
-        return impl(instance)->getPkcsIdRootListFromStore(storeType, certList, length);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (certList == NULL || *certList != NULL) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getPkcsIdRootListFromStore(storeType, certList, length);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_certificate_info_from_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname,
-    char **certBuffer,
-    size_t *certSize)
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **certBuffer,
+               size_t *certSize)
 {
-    if (certBuffer == NULL || *certBuffer != NULL) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-
-        return impl(instance)->getCertDetailFromStore(storeType, gname, certBuffer, certSize);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (certBuffer == NULL || *certBuffer != NULL) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getCertDetailFromStore(storeType, gname, certBuffer, certSize);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_delete_certificate_from_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname)
+               CertStoreType storeType,
+               CertSvcString gname)
 {
-     try {
-         if (!impl(instance)->checkValidStoreType(storeType)) {
-             LogError("Invalid input parameter.");
-             return CERTSVC_INVALID_STORE_TYPE;
-         }
-         return impl(instance)->pkcsDeleteCertFromStore(storeType, gname);
-     } catch (...) {}
-     return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsDeleteCertFromStore(storeType, gname);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_import_from_file_to_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString path,
-    CertSvcString password,
-    CertSvcString pfxIdString)
+               CertStoreType storeType,
+               CertSvcString path,
+               CertSvcString password,
+               CertSvcString pfxIdString)
 {
-    try {
-        if (path.privateHandler == NULL || !impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-
-        return impl(instance)->pkcsImportToStore(storeType, path, password, pfxIdString);
-    } catch (...) {
-        LogError("Exception occured from pkcsImportToStore");
-        return CERTSVC_FAIL;
-    }
+       try {
+               if (path.privateHandler == NULL || !impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsImportToStore(storeType, path, password, pfxIdString);
+       } catch (...) {
+               LogError("Exception occured from pkcsImportToStore");
+               return CERTSVC_FAIL;
+       }
 }
 
 int certsvc_pkcs12_get_alias_name_for_certificate_in_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname,
-    char **alias)
+               CertStoreType storeType,
+               CertSvcString gname,
+               char **alias)
 {
-    if (gname.privateHandler == NULL || gname.privateLength<=0) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->pkcsGetAliasNameForCertInStore(storeType, gname, alias);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       if (gname.privateHandler == NULL || gname.privateLength <= 0) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsGetAliasNameForCertInStore(storeType, gname, alias);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_set_certificate_status_to_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    int is_root_app,
-    CertSvcString gname,
-    CertStatus status)
+               CertStoreType storeType,
+               int is_root_app,
+               CertSvcString gname,
+               CertStatus status)
 {
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->pkcsSetCertStatusToStore(storeType, is_root_app, gname, status);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsSetCertStatusToStore(storeType, is_root_app, gname, status);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_certificate_status_from_store(
-    CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname,
-    CertStatus *status)
+       CertSvcInstance instance,
+       CertStoreType storeType,
+       CertSvcString gname,
+       CertStatus *status)
 {
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->pkcsGetCertStatusFromStore(storeType, gname, status);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->pkcsGetCertStatusFromStore(storeType, gname, status);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_get_certificate_from_store(CertSvcInstance instance,
-    CertStoreType storeType,
-    const char *gname,
-    CertSvcCertificate *certificate)
+               CertStoreType storeType,
+               const char *gname,
+               CertSvcCertificate *certificate)
 {
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->getCertFromStore(instance, storeType, gname, certificate);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getCertFromStore(instance, storeType, gname, certificate);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_load_certificate_list_from_store(
-    CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString pfxIdString,
-    CertSvcCertificateList *certificateList)
+       CertSvcInstance instance,
+       CertStoreType storeType,
+       CertSvcString pfxIdString,
+       CertSvcCertificateList *certificateList)
 {
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->getPkcsCertificateListFromStore(instance, storeType, pfxIdString, certificateList);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getPkcsCertificateListFromStore(instance, storeType, pfxIdString,
+                               certificateList);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_private_key_dup_from_store(
-    CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname,
-    char **certBuffer,
-    size_t *certSize)
+       CertSvcInstance instance,
+       CertStoreType storeType,
+       CertSvcString gname,
+       char **certBuffer,
+       size_t *certSize)
 {
-    try {
-        if (!impl(instance)->checkValidStoreType(storeType)) {
-            LogError("Invalid input parameter.");
-            return CERTSVC_INVALID_STORE_TYPE;
-        }
-        return impl(instance)->getPkcsPrivateKeyFromStore(storeType, gname, certBuffer, certSize);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               if (!impl(instance)->checkValidStoreType(storeType)) {
+                       LogError("Invalid input parameter.");
+                       return CERTSVC_INVALID_STORE_TYPE;
+               }
+
+               return impl(instance)->getPkcsPrivateKeyFromStore(storeType, gname, certBuffer, certSize);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_dup_evp_pkey_from_store(
-    CertSvcInstance instance,
-    CertStoreType storeType,
-    CertSvcString gname,
-    EVP_PKEY** pkey)
+       CertSvcInstance instance,
+       CertStoreType storeType,
+       CertSvcString gname,
+       EVP_PKEY **pkey)
 {
-    char *buffer = NULL;
-    size_t size;
-
-    int result = certsvc_pkcs12_private_key_dup_from_store(instance, storeType, gname, &buffer, &size);
-    if (result != CERTSVC_SUCCESS) {
-        LogError("Error in certsvc_pkcs12_private_key_dup");
-        return result;
-    }
-
-    BIO *b = BIO_new(BIO_s_mem());
-    if ((int)size != BIO_write(b, buffer, size)) {
-         LogError("Error in BIO_write");
-         BIO_free_all(b);
-         certsvc_pkcs12_private_key_free(buffer);
-         return CERTSVC_FAIL;
-    }
-
-    certsvc_pkcs12_private_key_free(buffer);
-    *pkey = PEM_read_bio_PrivateKey(b, NULL, NULL, NULL);
-    BIO_free_all(b);
-    if (*pkey)
-        return CERTSVC_SUCCESS;
-
-    LogError("Result is null. Openssl REASON code is : " << ERR_GET_REASON(ERR_peek_last_error()));
-    return CERTSVC_FAIL;
+       char *buffer = NULL;
+       size_t size;
+       int result = certsvc_pkcs12_private_key_dup_from_store(instance, storeType, gname, &buffer, &size);
+
+       if (result != CERTSVC_SUCCESS) {
+               LogError("Error in certsvc_pkcs12_private_key_dup");
+               return result;
+       }
+
+       BIO *b = BIO_new(BIO_s_mem());
+
+       if ((int)size != BIO_write(b, buffer, size)) {
+               LogError("Error in BIO_write");
+               BIO_free_all(b);
+               certsvc_pkcs12_private_key_free(buffer);
+               return CERTSVC_FAIL;
+       }
+
+       certsvc_pkcs12_private_key_free(buffer);
+       *pkey = PEM_read_bio_PrivateKey(b, NULL, NULL, NULL);
+       BIO_free_all(b);
+
+       if (*pkey)
+               return CERTSVC_SUCCESS;
+
+       LogError("Result is null. Openssl REASON code is : " << ERR_GET_REASON(ERR_peek_last_error()));
+       return CERTSVC_FAIL;
 }
 
 int certsvc_pkcs12_has_password(
-    CertSvcInstance instance,
-    CertSvcString filepath,
-    int *has_password)
+       CertSvcInstance instance,
+       CertSvcString filepath,
+       int *has_password)
 {
-    try {
-        return impl(instance)->pkcsHasPassword(filepath, has_password);
-    } catch (...) {}
-    return CERTSVC_FAIL;
+       try {
+               return impl(instance)->pkcsHasPassword(filepath, has_password);
+       } catch (...) {}
+
+       return CERTSVC_FAIL;
 }
 
 void certsvc_pkcs12_private_key_free(char *buffer)
 {
-    free(buffer);
+       free(buffer);
 }
 
index fc3e734..b52655e 100644 (file)
 #include <cstdio>
 
 namespace ValidationCore {
-ExceptionException::m_lastException = NULL;
+Exception *Exception::m_lastException = NULL;
 unsigned int Exception::m_exceptionCount = 0;
 void (*Exception::m_terminateHandler)() = NULL;
 
 void LogUnhandledException(const std::string &str)
 {
-    LogDebug("" << str);
+       LogDebug("" << str);
 }
 
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function)
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function)
 {
-    LogError("[" << filename << ":" << line << "][" << function << "]" << str);
+       LogError("[" << filename << ":" << line << "][" << function << "]" << str);
 }
 } // namespace ValidationCore
index dae719e..0129e0a 100644 (file)
 namespace ValidationCore {
 void LogUnhandledException(const std::string &str);
 void LogUnhandledException(const std::string &str,
-                           const char *filename,
-                           int line,
-                           const char *function);
+                                                  const char *filename,
+                                                  int line,
+                                                  const char *function);
 }
 
 namespace ValidationCore {
 class Exception {
 private:
-    static unsigned int m_exceptionCount;
-    static Exception* m_lastException;
-    static void (*m_terminateHandler)();
-
-    static void AddRef(Exception* exception)
-    {
-        if (!m_exceptionCount) {
-            m_terminateHandler = std::set_terminate(&TerminateHandler);
-        }
-
-        ++m_exceptionCount;
-        m_lastException = exception;
-    }
-
-    static void UnRef(Exception* e)
-    {
-        if (m_lastException == e) {
-            m_lastException = NULL;
-        }
-
-        --m_exceptionCount;
-
-        if (!m_exceptionCount) {
-            std::set_terminate(m_terminateHandler);
-            m_terminateHandler = NULL;
-        }
-    }
-
-    static void TerminateHandler()
-    {
-        if (m_lastException != NULL) {
-            DisplayKnownException(*m_lastException);
-            abort();
-        } else {
-            DisplayUnknownException();
-            abort();
-        }
-    }
-
-    Exception *m_reason;
-    std::string m_path;
-    std::string m_function;
-    int m_line;
+       static unsigned int m_exceptionCount;
+       static Exception *m_lastException;
+       static void (*m_terminateHandler)();
+
+       static void AddRef(Exception *exception)
+       {
+               if (!m_exceptionCount) {
+                       m_terminateHandler = std::set_terminate(&TerminateHandler);
+               }
+
+               ++m_exceptionCount;
+               m_lastException = exception;
+       }
+
+       static void UnRef(Exception *e)
+       {
+               if (m_lastException == e) {
+                       m_lastException = NULL;
+               }
+
+               --m_exceptionCount;
+
+               if (!m_exceptionCount) {
+                       std::set_terminate(m_terminateHandler);
+                       m_terminateHandler = NULL;
+               }
+       }
+
+       static void TerminateHandler()
+       {
+               if (m_lastException != NULL) {
+                       DisplayKnownException(*m_lastException);
+                       abort();
+               } else {
+                       DisplayUnknownException();
+                       abort();
+               }
+       }
+
+       Exception *m_reason;
+       std::string m_path;
+       std::string m_function;
+       int m_line;
 
 protected:
-    std::string m_message;
-    std::string m_className;
+       std::string m_message;
+       std::string m_className;
 
 public:
-    static std::string KnownExceptionToString(const Exception &e)
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;33mException trace:\033[m\n\n";
-        message << e.DumpToString();
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static std::string UnknownExceptionToString()
-    {
-        std::ostringstream message;
-        message <<
-        "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
-        message << "\033[1;31m\n=== Will now abort ===\033[m\n";
-
-        return message.str();
-    }
-
-    static void DisplayKnownException(const Exception& e)
-    {
-        LogUnhandledException(KnownExceptionToString(e).c_str());
-    }
-
-    static void DisplayUnknownException()
-    {
-        LogUnhandledException(UnknownExceptionToString().c_str());
-    }
-
-    Exception(const Exception &other)
-    {
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-    }
-
-    const Exception &operator =(const Exception &other)
-    {
-        if (this == &other) {
-            return *this;
-        }
-
-        // Deep copy
-        if (other.m_reason != NULL) {
-            m_reason = new Exception(*other.m_reason);
-        } else {
-            m_reason = NULL;
-        }
-
-        m_message = other.m_message;
-        m_path = other.m_path;
-        m_function = other.m_function;
-        m_line = other.m_line;
-
-        m_className = other.m_className;
-
-        AddRef(this);
-
-        return *this;
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const std::string &message) :
-        m_reason(NULL),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    Exception(const char *path,
-              const char *function,
-              int line,
-              const Exception &reason,
-              const std::string &message) :
-        m_reason(new Exception(reason)),
-        m_path(path),
-        m_function(function),
-        m_line(line),
-        m_message(message)
-    {
-        AddRef(this);
-    }
-
-    virtual ~Exception() throw()
-    {
-        if (m_reason != NULL) {
-            delete m_reason;
-            m_reason = NULL;
-        }
-
-        UnRef(this);
-    }
-
-    void Dump() const
-    {
-        // Show reason first
-        if (m_reason != NULL) {
-            m_reason->Dump();
-        }
-
-        // Afterward, dump exception
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-               file, m_line,
-               m_function.c_str(),
-               m_className.c_str(),
-               m_message.empty() ? "<EMPTY>" : m_message.c_str());
-    }
-
-    std::string DumpToString() const
-    {
-        std::string ret;
-        if (m_reason != NULL) {
-            ret = m_reason->DumpToString();
-        }
-
-        const char *file = strchr(m_path.c_str(), '/');
-
-        if (file == NULL) {
-            file = m_path.c_str();
-        } else {
-            ++file;
-        }
-
-        char buf[1024];
-        snprintf(buf,
-                 sizeof(buf),
-                 "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
-                 file,
-                 m_line,
-                 m_function.c_str(),
-                 m_className.c_str(),
-                 m_message.empty() ? "<EMPTY>" : m_message.c_str());
-
-        buf[sizeof(buf) - 1] = '\n';
-        ret += buf;
-
-        return ret;
-    }
-
-    Exception *GetReason() const
-    {
-        return m_reason;
-    }
-
-    std::string GetPath() const
-    {
-        return m_path;
-    }
-
-    std::string GetFunction() const
-    {
-        return m_function;
-    }
-
-    int GetLine() const
-    {
-        return m_line;
-    }
-
-    std::string GetMessage() const
-    {
-        return m_message;
-    }
-
-    std::string GetClassName() const
-    {
-        return m_className;
-    }
+       static std::string KnownExceptionToString(const Exception &e)
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;33mException trace:\033[m\n\n";
+               message << e.DumpToString();
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static std::string UnknownExceptionToString()
+       {
+               std::ostringstream message;
+               message <<
+                               "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n";
+               message << "\033[1;31m\n=== Will now abort ===\033[m\n";
+               return message.str();
+       }
+
+       static void DisplayKnownException(const Exception &e)
+       {
+               LogUnhandledException(KnownExceptionToString(e).c_str());
+       }
+
+       static void DisplayUnknownException()
+       {
+               LogUnhandledException(UnknownExceptionToString().c_str());
+       }
+
+       Exception(const Exception &other)
+       {
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+       }
+
+       const Exception &operator =(const Exception &other)
+       {
+               if (this == &other) {
+                       return *this;
+               }
+
+               // Deep copy
+               if (other.m_reason != NULL) {
+                       m_reason = new Exception(*other.m_reason);
+               } else {
+                       m_reason = NULL;
+               }
+
+               m_message = other.m_message;
+               m_path = other.m_path;
+               m_function = other.m_function;
+               m_line = other.m_line;
+               m_className = other.m_className;
+               AddRef(this);
+               return *this;
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const std::string &message) :
+               m_reason(NULL),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       Exception(const char *path,
+                         const char *function,
+                         int line,
+                         const Exception &reason,
+                         const std::string &message) :
+               m_reason(new Exception(reason)),
+               m_path(path),
+               m_function(function),
+               m_line(line),
+               m_message(message)
+       {
+               AddRef(this);
+       }
+
+       virtual ~Exception() throw()
+       {
+               if (m_reason != NULL) {
+                       delete m_reason;
+                       m_reason = NULL;
+               }
+
+               UnRef(this);
+       }
+
+       void Dump() const
+       {
+               // Show reason first
+               if (m_reason != NULL) {
+                       m_reason->Dump();
+               }
+
+               // Afterward, dump exception
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                          file, m_line,
+                          m_function.c_str(),
+                          m_className.c_str(),
+                          m_message.empty() ? "<EMPTY>" : m_message.c_str());
+       }
+
+       std::string DumpToString() const
+       {
+               std::string ret;
+
+               if (m_reason != NULL) {
+                       ret = m_reason->DumpToString();
+               }
+
+               const char *file = strchr(m_path.c_str(), '/');
+
+               if (file == NULL) {
+                       file = m_path.c_str();
+               } else {
+                       ++file;
+               }
+
+               char buf[1024];
+               snprintf(buf,
+                                sizeof(buf),
+                                "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n",
+                                file,
+                                m_line,
+                                m_function.c_str(),
+                                m_className.c_str(),
+                                m_message.empty() ? "<EMPTY>" : m_message.c_str());
+               buf[sizeof(buf) - 1] = '\n';
+               ret += buf;
+               return ret;
+       }
+
+       Exception *GetReason() const
+       {
+               return m_reason;
+       }
+
+       std::string GetPath() const
+       {
+               return m_path;
+       }
+
+       std::string GetFunction() const
+       {
+               return m_function;
+       }
+
+       int GetLine() const
+       {
+               return m_line;
+       }
+
+       std::string GetMessage() const
+       {
+               return m_message;
+       }
+
+       std::string GetClassName() const
+       {
+               return m_className;
+       }
 };
 } // namespace ValidationCore
 
 #define VcoreTry try
 
 #define VcoreThrow(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__)
 
 #define VcoreThrowMsg(ClassName, Message)                                            \
-    do                                                                               \
-    {                                                                                \
-        std::ostringstream dplLoggingStream;                                         \
-        dplLoggingStream << Message;                                                 \
-        throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
-    } while (0)
+       do                                                                               \
+       {                                                                                \
+               std::ostringstream dplLoggingStream;                                         \
+               dplLoggingStream << Message;                                                 \
+               throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str());   \
+       } while (0)
 
 #define VcoreReThrow(ClassName) \
-    throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
+       throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception)
 
 #define VcoreReThrowMsg(ClassName, Message)                                          \
-    throw ClassName(__FILE__,                                                        \
-                    __FUNCTION__,                                                    \
-                    __LINE__,                                                        \
-                    _rethrown_exception,                                             \
-                    Message)
+       throw ClassName(__FILE__,                                                        \
+                                       __FUNCTION__,                                                    \
+                                       __LINE__,                                                        \
+                                       _rethrown_exception,                                             \
+                                       Message)
 
 #define VcoreCatch(ClassName)                                                        \
-    catch (const ClassName &_rethrown_exception)
+       catch (const ClassName &_rethrown_exception)
 
 #define VCORE_DECLARE_EXCEPTION_TYPE(BaseClass, Class)                               \
-    class Class : public BaseClass {                                                 \
-    public:                                                                          \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, message) {                               \
-                                                                                     \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-                                                                                     \
-        Class(const char *path,                                                      \
-              const char *function,                                                  \
-              int line,                                                              \
-              const ValidationCore::Exception & reason,                              \
-              const std::string & message = std::string())                           \
-          : BaseClass(path, function, line, reason, message) {                       \
-            BaseClass::m_className = #Class;                                         \
-        }                                                                            \
-    };
+       class Class : public BaseClass {                                                 \
+       public:                                                                          \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, message) {                               \
+                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+               \
+               Class(const char *path,                                                      \
+                         const char *function,                                                  \
+                         int line,                                                              \
+                         const ValidationCore::Exception & reason,                              \
+                         const std::string & message = std::string())                           \
+                       : BaseClass(path, function, line, reason, message) {                       \
+                       BaseClass::m_className = #Class;                                         \
+               }                                                                            \
+       };
 
 #define VCORE_UNHANDLED_EXCEPTION_HANDLER_BEGIN try
 
 #define VCORE_UNHANDLED_EXCEPTION_HANDLER_END                                        \
-    catch (const ValidationCore::Exception &exception)                               \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << ValidationCore::Exception::KnownExceptionToString(exception);         \
-        ValidationCore::LogUnhandledException(msg.str(),                             \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                       __FUNCTION__);                                \
-        abort();                                                                     \
-    }                                                                                \
-    catch (std::exception& e)                                                        \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << e.what();                                                             \
-        msg << "\n";                                                                 \
-        msg << ValidationCore::Exception::UnknownExceptionToString();                \
-        ValidationCore::LogUnhandledException(msg.str(),                             \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }                                                                                \
-    catch (...)                                                                      \
-    {                                                                                \
-        std::ostringstream msg;                                                      \
-        msg << ValidationCore::Exception::UnknownExceptionToString();                \
-        ValidationCore::LogUnhandledException(msg.str(),                             \
-                                        __FILE__,                                    \
-                                        __LINE__,                                    \
-                                        __FUNCTION__);                               \
-        abort();                                                                     \
-    }
+       catch (const ValidationCore::Exception &exception)                               \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << ValidationCore::Exception::KnownExceptionToString(exception);         \
+               ValidationCore::LogUnhandledException(msg.str(),                             \
+                                                                                         __FILE__,                                    \
+                                                                                         __LINE__,                                    \
+                                                                                         __FUNCTION__);                                \
+               abort();                                                                     \
+       }                                                                                \
+       catch (std::exception& e)                                                        \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << e.what();                                                             \
+               msg << "\n";                                                                 \
+               msg << ValidationCore::Exception::UnknownExceptionToString();                \
+               ValidationCore::LogUnhandledException(msg.str(),                             \
+                                                                                         __FILE__,                                    \
+                                                                                         __LINE__,                                    \
+                                                                                         __FUNCTION__);                               \
+               abort();                                                                     \
+       }                                                                                \
+       catch (...)                                                                      \
+       {                                                                                \
+               std::ostringstream msg;                                                      \
+               msg << ValidationCore::Exception::UnknownExceptionToString();                \
+               ValidationCore::LogUnhandledException(msg.str(),                             \
+                                                                                         __FILE__,                                    \
+                                                                                         __LINE__,                                    \
+                                                                                         __FUNCTION__);                               \
+               abort();                                                                     \
+       }
 
 namespace ValidationCore {
 namespace CommonException {
@@ -382,8 +374,8 @@ namespace CommonException {
  * important messages.
  */
 VCORE_DECLARE_EXCEPTION_TYPE(Exception, InternalError) ///< Unexpected error from
-                                                          // underlying libraries or
-                                                          // kernel
+// underlying libraries or
+// kernel
 }
 }
 
index 29e0e70..0d818cc 100644 (file)
@@ -44,7 +44,7 @@
 #include "vcore/Client.h"
 #include "vcore/pkcs12.h"
 
-#define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
+#define SYSCALL(call) while (((call) == -1) && (errno == EINTR))
 
 namespace {
 
@@ -58,115 +58,130 @@ static const std::string END_KEY       = "-----END PRIVATE KEY-----";
 using ValidationCore::CertificatePtr;
 using ValidationCore::Certificate;
 
-using FileUniquePtr      = std::unique_ptr<FILE, std::function<int(FILE*)>>;
-using BioUniquePtr       = std::unique_ptr<BIO, std::function<void(BIO*)>>;
-using PKEYUniquePtr      = std::unique_ptr<EVP_PKEY, std::function<void(EVP_PKEY*)>>;
-using X509UniquePtr      = std::unique_ptr<X509, std::function<void(X509*)>>;
-using X509StackUniquePtr = std::unique_ptr<STACK_OF(X509), std::function<void(STACK_OF(X509)*)>>;
+using FileUniquePtr      = std::unique_ptr<FILE, std::function<int(FILE *)>>;
+using BioUniquePtr       = std::unique_ptr<BIO, std::function<void(BIO *)>>;
+using PKEYUniquePtr      = std::unique_ptr<EVP_PKEY, std::function<void(EVP_PKEY *)>>;
+using X509UniquePtr      = std::unique_ptr<X509, std::function<void(X509 *)>>;
+using X509StackUniquePtr = std::unique_ptr<STACK_OF(X509), std::function<void(STACK_OF(X509) *)>>;
 
 void X509_stack_free(STACK_OF(X509) *stack)
 {
-    sk_X509_free(stack);
+       sk_X509_free(stack);
 }
 
 inline bool hasStore(CertStoreType types, CertStoreType type)
 {
-    return (types & type) != 0;
+       return (types & type) != 0;
 }
 
 inline CertStoreType nextStore(CertStoreType type)
 {
-    switch (type) {
-    case NONE_STORE:   return VPN_STORE;
-    case VPN_STORE:    return WIFI_STORE;
-    case WIFI_STORE:   return EMAIL_STORE;
-    case EMAIL_STORE:  return SYSTEM_STORE;
-    case SYSTEM_STORE: return NONE_STORE;
-    default:           return NONE_STORE;
-    }
+       switch (type) {
+       case NONE_STORE:
+               return VPN_STORE;
+
+       case VPN_STORE:
+               return WIFI_STORE;
+
+       case WIFI_STORE:
+               return EMAIL_STORE;
+
+       case EMAIL_STORE:
+               return SYSTEM_STORE;
+
+       case SYSTEM_STORE:
+               return NONE_STORE;
+
+       default:
+               return NONE_STORE;
+       }
 }
 
 std::string generateGname(void)
 {
-    int generator;
-    int64_t random;
-    SHA_CTX ctx;
-    unsigned char d[SHA_DIGEST_LENGTH];
-    int result;
-    char *gname = NULL;
-
-    SYSCALL(generator = open("/dev/urandom", O_RDONLY));
-    if (generator == -1)
-        return std::string();
-    SYSCALL(result = read(generator, &random, sizeof(random)));
-    if (result == -1) {
-        SYSCALL(close(generator));
-        return std::string();
-    }
-    SYSCALL(result = close(generator));
-    if (result == -1)
-        return std::string();
-
-    SHA1_Init(&ctx);
-    SHA1_Update(&ctx, &random, sizeof(random));
-    SHA1_Final(d, &ctx);
-
-    result = asprintf(&gname,
-             "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
-             "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
-             d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9],
-             d[10], d[11], d[12], d[13], d[14], d[15], d[16], d[17], d[18], d[19]);
-
-    if (result == -1)
-        return std::string();
-
-    std::string ret(gname);
-
-    free(gname);
-
-    return ret;
+       int generator;
+       int64_t random;
+       SHA_CTX ctx;
+       unsigned char d[SHA_DIGEST_LENGTH];
+       int result;
+       char *gname = NULL;
+       SYSCALL(generator = open("/dev/urandom", O_RDONLY));
+
+       if (generator == -1)
+               return std::string();
+
+       SYSCALL(result = read(generator, &random, sizeof(random)));
+
+       if (result == -1) {
+               SYSCALL(close(generator));
+               return std::string();
+       }
+
+       SYSCALL(result = close(generator));
+
+       if (result == -1)
+               return std::string();
+
+       SHA1_Init(&ctx);
+       SHA1_Update(&ctx, &random, sizeof(random));
+       SHA1_Final(d, &ctx);
+       result = asprintf(&gname,
+                                         "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
+                                         "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
+                                         d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9],
+                                         d[10], d[11], d[12], d[13], d[14], d[15], d[16], d[17], d[18], d[19]);
+
+       if (result == -1)
+               return std::string();
+
+       std::string ret(gname);
+       free(gname);
+       return ret;
 }
 
 std::string getCommonName(CertType type, const std::string &cert)
 {
-    BioUniquePtr bio(BIO_new(BIO_s_mem()), BIO_free_all);
-    if (bio.get() == NULL) {
-        LogError("Failed to allocate memory.");
-        return std::string();
-    }
-
-    auto readCount = BIO_write(bio.get(), (const void *)cert.data(), (int)cert.length());
-    if (readCount < 1) {
-        LogError("Failed to load cert into bio.");
-        return std::string();
-    }
-
-    X509 *x509 = NULL;
-    switch (type) {
-    case P12_TRUSTED:
-    case P12_INTERMEDIATE:
-        x509 = PEM_read_bio_X509_AUX(bio.get(), NULL, 0, NULL);
-        break;
-
-    default:
-        x509 = PEM_read_bio_X509(bio.get(), NULL, 0, NULL);
-        break;
-    }
-
-    if (x509 == NULL) {
-        LogError("Failed to create x509 structure.");
-        return std::string();
-    }
-
-    X509UniquePtr x509Ptr(x509, X509_free);
-
-    const char *subject_c = X509_NAME_oneline(x509->cert_info->subject, NULL, 0);
-    if (subject_c == NULL) {
-        LogError("Failed to parse x509 structure");
-        return std::string();
-    }
-
-    return std::string(subject_c);
+       BioUniquePtr bio(BIO_new(BIO_s_mem()), BIO_free_all);
+
+       if (bio.get() == NULL) {
+               LogError("Failed to allocate memory.");
+               return std::string();
+       }
+
+       auto readCount = BIO_write(bio.get(), (const void *)cert.data(), (int)cert.length());
+
+       if (readCount < 1) {
+               LogError("Failed to load cert into bio.");
+               return std::string();
+       }
+
+       X509 *x509 = NULL;
+
+       switch (type) {
+       case P12_TRUSTED:
+       case P12_INTERMEDIATE:
+               x509 = PEM_read_bio_X509_AUX(bio.get(), NULL, 0, NULL);
+               break;
+
+       default:
+               x509 = PEM_read_bio_X509(bio.get(), NULL, 0, NULL);
+               break;
+       }
+
+       if (x509 == NULL) {
+               LogError("Failed to create x509 structure.");
+               return std::string();
+       }
+
+       X509UniquePtr x509Ptr(x509, X509_free);
+       const char *subject_c = X509_NAME_oneline(x509->cert_info->subject, NULL, 0);
+
+       if (subject_c == NULL) {
+               LogError("Failed to parse x509 structure");
+               return std::string();
+       }
+
+       return std::string(subject_c);
 }
 
 /*
@@ -178,626 +193,653 @@ std::string getCommonName(CertType type, const std::string &cert)
  */
 
 int installPKEY(CertStoreType storeType,
-                const std::string &key,
-                const std::string &gname)
+                               const std::string &key,
+                               const std::string &gname)
 {
-    return vcore_client_install_certificate_to_store(
-            storeType,
-            gname.c_str(),
-            NULL,
-            NULL,
-            NULL,
-            key.c_str(),
-            key.length(),
-            P12_PKEY);
+       return vcore_client_install_certificate_to_store(
+                          storeType,
+                          gname.c_str(),
+                          NULL,
+                          NULL,
+                          NULL,
+                          key.c_str(),
+                          key.length(),
+                          P12_PKEY);
 }
 
 int installEndCert(CertStoreType storeType,
-                   const std::string &cert,
-                   const std::string &alias,
-                   const std::string &gname,
-                   const std::string &prikeyGname)
+                                  const std::string &cert,
+                                  const std::string &alias,
+                                  const std::string &gname,
+                                  const std::string &prikeyGname)
 {
-    return vcore_client_install_certificate_to_store(
-            storeType,
-            gname.c_str(),
-            alias.c_str(),
-            prikeyGname.c_str(),
-            gname.c_str(),
-            cert.c_str(),
-            cert.length(),
-            P12_END_USER);
+       return vcore_client_install_certificate_to_store(
+                          storeType,
+                          gname.c_str(),
+                          alias.c_str(),
+                          prikeyGname.c_str(),
+                          gname.c_str(),
+                          cert.c_str(),
+                          cert.length(),
+                          P12_END_USER);
 }
 
 int installChainCert(CertStoreType storeType,
-                     const std::string &cert,
-                     const std::string &gname,
-                     const std::string &endCertGname,
-                     CertType type)
+                                        const std::string &cert,
+                                        const std::string &gname,
+                                        const std::string &endCertGname,
+                                        CertType type)
 {
-    std::string commonName = getCommonName(type, cert);
-
-    return vcore_client_install_certificate_to_store(
-            storeType,
-            gname.c_str(),
-            commonName.c_str(),
-            NULL,
-            endCertGname.c_str(),
-            cert.c_str(),
-            cert.length(),
-            type);
+       std::string commonName = getCommonName(type, cert);
+       return vcore_client_install_certificate_to_store(
+                          storeType,
+                          gname.c_str(),
+                          commonName.c_str(),
+                          NULL,
+                          endCertGname.c_str(),
+                          cert.c_str(),
+                          cert.length(),
+                          type);
 }
 int installCert(CertStoreType storeType,
-                const std::string &cert,
-                const std::string &gname)
+                               const std::string &cert,
+                               const std::string &gname)
 {
-    std::string commonName = getCommonName(PEM_CRT, cert);
-
-    return vcore_client_install_certificate_to_store(
-            storeType,
-            gname.c_str(),
-            commonName.c_str(),
-            NULL,
-            NULL,
-            cert.c_str(),
-            cert.length(),
-            PEM_CRT);
+       std::string commonName = getCommonName(PEM_CRT, cert);
+       return vcore_client_install_certificate_to_store(
+                          storeType,
+                          gname.c_str(),
+                          commonName.c_str(),
+                          NULL,
+                          NULL,
+                          cert.c_str(),
+                          cert.length(),
+                          PEM_CRT);
 }
 
 std::string readFromFile(const std::string &path)
 {
-    FILE *fp = NULL;
-    if ((fp = fopen(path.c_str(), "rb")) == NULL) {
-        LogError("Fail to open file for reading : " << path);
-        return std::string();
-    }
-
-    FileUniquePtr filePtr(fp, fclose);
-
-    fseek(fp, 0L, SEEK_END);
-    int len = ftell(fp);
-    if (len <= 0) {
-        LogError("Fail to get certificate length.");
-        return std::string();
-    }
-
-    rewind(fp);
-
-    char *content = (char *)malloc(sizeof(char) * (len + 1));
-    if (content == NULL) {
-        LogError("Fail to allocate memory");
-        return std::string();
-    }
-
-    memset(content, 0x00, len + 1);
-    size_t readLen = fread(content, sizeof(char), (size_t)len, fp);
-    if (readLen != (size_t)len) {
-        LogError("Fail to read file : " << path);
-        free(content);
-        return std::string();
-    }
-
-    content[len] = '\0';
-
-    std::string ret(content);
-
-    free(content);
-
-    return ret;
+       FILE *fp = NULL;
+
+       if ((fp = fopen(path.c_str(), "rb")) == NULL) {
+               LogError("Fail to open file for reading : " << path);
+               return std::string();
+       }
+
+       FileUniquePtr filePtr(fp, fclose);
+       fseek(fp, 0L, SEEK_END);
+       int len = ftell(fp);
+
+       if (len <= 0) {
+               LogError("Fail to get certificate length.");
+               return std::string();
+       }
+
+       rewind(fp);
+       char *content = (char *)malloc(sizeof(char) * (len + 1));
+
+       if (content == NULL) {
+               LogError("Fail to allocate memory");
+               return std::string();
+       }
+
+       memset(content, 0x00, len + 1);
+       size_t readLen = fread(content, sizeof(char), (size_t)len, fp);
+
+       if (readLen != (size_t)len) {
+               LogError("Fail to read file : " << path);
+               free(content);
+               return std::string();
+       }
+
+       content[len] = '\0';
+       std::string ret(content);
+       free(content);
+       return ret;
 }
 
 std::string parseCRT(const std::string &cert)
 {
-    size_t from = 0;
-    size_t to = 0;
-    size_t tailLen = 0;
-
-    from = cert.find(START_CERT);
-    to = cert.find(END_CERT);
-    tailLen = END_CERT.length();
-
-    if (from == std::string::npos || to == std::string::npos || from > to) {
-        from = cert.find(START_TRUSTED);
-        to = cert.find(END_TRUSTED);
-        tailLen = END_TRUSTED.length();
-    }
-
-    if (from == std::string::npos || to == std::string::npos || from > to)
-        return std::string();
-
-    return std::string(cert, from, to - from + tailLen);
+       size_t from = 0;
+       size_t to = 0;
+       size_t tailLen = 0;
+       from = cert.find(START_CERT);
+       to = cert.find(END_CERT);
+       tailLen = END_CERT.length();
+
+       if (from == std::string::npos || to == std::string::npos || from > to) {
+               from = cert.find(START_TRUSTED);
+               to = cert.find(END_TRUSTED);
+               tailLen = END_TRUSTED.length();
+       }
+
+       if (from == std::string::npos || to == std::string::npos || from > to)
+               return std::string();
+
+       return std::string(cert, from, to - from + tailLen);
 }
 
 #define _CERT_SVC_VERIFY_PKCS12
 int verify_cert_details(X509 *cert, STACK_OF(X509) *certv)
 {
-    int result = CERTSVC_SUCCESS;
-    char* pSubject = NULL;
-    char* pIssuerName = NULL;
-    X509_STORE_CTX *cert_ctx = NULL;
-    X509_STORE *cert_store = NULL;
-    int res = 0;
-
+       int result = CERTSVC_SUCCESS;
+       char *pSubject = NULL;
+       char *pIssuerName = NULL;
+       X509_STORE_CTX *cert_ctx = NULL;
+       X509_STORE *cert_store = NULL;
+       int res = 0;
 #ifdef _CERT_SVC_VERIFY_PKCS12
-    if (certv == NULL) {
-        pSubject = X509_NAME_oneline(cert->cert_info->subject, NULL, 0);
-        if (!pSubject) {
-            LogError("Failed to get subject name");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        pIssuerName = X509_NAME_oneline(cert->cert_info->issuer, NULL, 0);
-        if (!pIssuerName) {
-            LogError("Failed to get issuer name");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        if (strcmp((const char*)pSubject, (const char*)pIssuerName) == 0) {
-            /*self signed.. */
-            EVP_PKEY *pKey = NULL;
-            pKey = X509_get_pubkey(cert);
-            if (!pKey) {
-                LogError("Failed to get public key");
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-
-            if (X509_verify(cert, pKey) <= 0) {
-                LogError("P12 verification failed");
-                EVP_PKEY_free(pKey);
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-            LogDebug("P12 verification Success");
-            EVP_PKEY_free(pKey);
-        } else {
-            cert_store = X509_STORE_new();
-            if (!cert_store) {
-                LogError("Memory allocation failed");
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-
-            res = X509_STORE_load_locations(cert_store, NULL, TZ_SYS_CA_CERTS);
-            if (res != 1) {
-                LogError("P12 load certificate store failed");
-                X509_STORE_free(cert_store);
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-
-            res = X509_STORE_set_default_paths(cert_store);
-            if (res != 1) {
-                LogError("P12 load certificate store path failed");
-                X509_STORE_free(cert_store);
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-
-            /* initialise store and store context */
-            cert_ctx = X509_STORE_CTX_new();
-            if (cert_ctx == NULL) {
-                LogError("Memory allocation failed");
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-
-            /* construct store context */
-            if (!X509_STORE_CTX_init(cert_ctx, cert_store, cert, NULL)) {
-                LogError("Memory allocation failed");
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
+
+       if (certv == NULL) {
+               pSubject = X509_NAME_oneline(cert->cert_info->subject, NULL, 0);
+
+               if (!pSubject) {
+                       LogError("Failed to get subject name");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               pIssuerName = X509_NAME_oneline(cert->cert_info->issuer, NULL, 0);
+
+               if (!pIssuerName) {
+                       LogError("Failed to get issuer name");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               if (strcmp((const char *)pSubject, (const char *)pIssuerName) == 0) {
+                       /*self signed.. */
+                       EVP_PKEY *pKey = NULL;
+                       pKey = X509_get_pubkey(cert);
+
+                       if (!pKey) {
+                               LogError("Failed to get public key");
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       if (X509_verify(cert, pKey) <= 0) {
+                               LogError("P12 verification failed");
+                               EVP_PKEY_free(pKey);
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       LogDebug("P12 verification Success");
+                       EVP_PKEY_free(pKey);
+               } else {
+                       cert_store = X509_STORE_new();
+
+                       if (!cert_store) {
+                               LogError("Memory allocation failed");
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       res = X509_STORE_load_locations(cert_store, NULL, TZ_SYS_CA_CERTS);
+
+                       if (res != 1) {
+                               LogError("P12 load certificate store failed");
+                               X509_STORE_free(cert_store);
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       res = X509_STORE_set_default_paths(cert_store);
+
+                       if (res != 1) {
+                               LogError("P12 load certificate store path failed");
+                               X509_STORE_free(cert_store);
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       /* initialise store and store context */
+                       cert_ctx = X509_STORE_CTX_new();
+
+                       if (cert_ctx == NULL) {
+                               LogError("Memory allocation failed");
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       /* construct store context */
+                       if (!X509_STORE_CTX_init(cert_ctx, cert_store, cert, NULL)) {
+                               LogError("Memory allocation failed");
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
 
 #ifdef P12_VERIFICATION_NEEDED
-            res = X509_verify_cert(cert_ctx);
-            if (res != 1) {
-                LogError("P12 verification failed");
-                result = CERTSVC_FAIL;
-                goto free_memory;
-            }
-            LogDebug("P12 verification Success");
+                       res = X509_verify_cert(cert_ctx);
+
+                       if (res != 1) {
+                               LogError("P12 verification failed");
+                               result = CERTSVC_FAIL;
+                               goto free_memory;
+                       }
+
+                       LogDebug("P12 verification Success");
 #endif
-        }
-    } else if (certv != NULL) {
-        /* Cert Chain */
-        cert_store = X509_STORE_new();
-        if (!cert_store) {
-            LogError("Memory allocation failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        res = X509_STORE_load_locations(cert_store, NULL, TZ_SYS_CA_CERTS);
-        if (res != 1) {
-            LogError("P12 load certificate store failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        res = X509_STORE_set_default_paths(cert_store);
-        if (res != 1) {
-            LogError("P12 load certificate path failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        /* initialise store and store context */
-        cert_ctx = X509_STORE_CTX_new();
-        if (cert_ctx == NULL) {
-            LogError("Memory allocation failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        /* construct store context */
-        if (!X509_STORE_CTX_init(cert_ctx, cert_store, cert, NULL)) {
-            LogError("Memory allocation failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-
-        X509_STORE_CTX_trusted_stack(cert_ctx, certv);
+               }
+       } else if (certv != NULL) {
+               /* Cert Chain */
+               cert_store = X509_STORE_new();
+
+               if (!cert_store) {
+                       LogError("Memory allocation failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               res = X509_STORE_load_locations(cert_store, NULL, TZ_SYS_CA_CERTS);
+
+               if (res != 1) {
+                       LogError("P12 load certificate store failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               res = X509_STORE_set_default_paths(cert_store);
+
+               if (res != 1) {
+                       LogError("P12 load certificate path failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               /* initialise store and store context */
+               cert_ctx = X509_STORE_CTX_new();
+
+               if (cert_ctx == NULL) {
+                       LogError("Memory allocation failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               /* construct store context */
+               if (!X509_STORE_CTX_init(cert_ctx, cert_store, cert, NULL)) {
+                       LogError("Memory allocation failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               X509_STORE_CTX_trusted_stack(cert_ctx, certv);
 #ifdef P12_VERIFICATION_NEEDED
-        res = X509_verify_cert(cert_ctx);
-        if (res != 1) {
-            LogError("P12 verification failed");
-            result = CERTSVC_FAIL;
-            goto free_memory;
-        }
-        LogDebug("P12 verification Success");
+               res = X509_verify_cert(cert_ctx);
+
+               if (res != 1) {
+                       LogError("P12 verification failed");
+                       result = CERTSVC_FAIL;
+                       goto free_memory;
+               }
+
+               LogDebug("P12 verification Success");
 #endif
-    }
-#endif //_CERT_SVC_VERIFY_PKCS12
+       }
 
+#endif //_CERT_SVC_VERIFY_PKCS12
 free_memory:
-    if (cert_store != NULL)
-        X509_STORE_free(cert_store);
-    if (cert_ctx)
-        X509_STORE_CTX_free(cert_ctx);
 
-    free(pSubject);
-    free(pIssuerName);
+       if (cert_store != NULL)
+               X509_STORE_free(cert_store);
 
-    return result;
+       if (cert_ctx)
+               X509_STORE_CTX_free(cert_ctx);
+
+       free(pSubject);
+       free(pIssuerName);
+       return result;
 }
 
 enum class OsslType : int {
-    PKEY = 1,
-    X509,
-    X509AUX
+       PKEY = 1,
+       X509,
+       X509AUX
 };
 
 std::string osslToPEM(OsslType type, void *data)
 {
-    std::vector<char> buf(4096);
-    BioUniquePtr bio(BIO_new(BIO_s_mem()), BIO_free_all);
-    if (bio.get() == NULL)
-        return std::string();
+       std::vector<char> buf(4096);
+       BioUniquePtr bio(BIO_new(BIO_s_mem()), BIO_free_all);
+
+       if (bio.get() == NULL)
+               return std::string();
 
-    switch (type) {
-    case OsslType::PKEY:
-        PEM_write_bio_PrivateKey(bio.get(), static_cast<EVP_PKEY *>(data), NULL, NULL, 0, NULL, NULL);
-        break;
+       switch (type) {
+       case OsslType::PKEY:
+               PEM_write_bio_PrivateKey(bio.get(), static_cast<EVP_PKEY *>(data), NULL, NULL, 0, NULL, NULL);
+               break;
 
-    case OsslType::X509:
-        PEM_write_bio_X509(bio.get(), static_cast<X509 *>(data));
-        break;
+       case OsslType::X509:
+               PEM_write_bio_X509(bio.get(), static_cast<X509 *>(data));
+               break;
 
-    case OsslType::X509AUX:
-        PEM_write_bio_X509_AUX(bio.get(), static_cast<X509 *>(data));
-        break;
+       case OsslType::X509AUX:
+               PEM_write_bio_X509_AUX(bio.get(), static_cast<X509 *>(data));
+               break;
 
-    default:
-        break;
-    }
+       default:
+               break;
+       }
 
-    int size = BIO_read(bio.get(), buf.data(), 4096);
-    if (size <= 0)
-        return std::string();
+       int size = BIO_read(bio.get(), buf.data(), 4096);
 
-    buf[size] = '\0';
+       if (size <= 0)
+               return std::string();
 
-    return std::string(buf.data());
+       buf[size] = '\0';
+       return std::string(buf.data());
 }
 
 int extractPkcs12(const std::string &path,
-                  const std::string &password,
-                  PKEYUniquePtr &keyPtr,
-                  X509UniquePtr &certPtr,
-                  X509StackUniquePtr &certvPtr)
+                                 const std::string &password,
+                                 PKEYUniquePtr &keyPtr,
+                                 X509UniquePtr &certPtr,
+                                 X509StackUniquePtr &certvPtr)
 {
-    FILE *stream = NULL;
-    if ((stream = fopen(path.c_str(), "rb")) == NULL) {
-        LogError("Unable to open the file for reading : " << path);
-        return CERTSVC_IO_ERROR;
-    }
-
-    PKCS12 *container = d2i_PKCS12_fp(stream, NULL);
-    fclose(stream);
-    if (container == NULL) {
-        LogError("Failed to parse the input file passed.");
-        return CERTSVC_FAIL;
-    }
-
-    EVP_PKEY *key = NULL;
-    X509 *cert = NULL;
-    STACK_OF(X509) *certv = NULL;
-    int result = PKCS12_parse(container, password.c_str(), &key, &cert, &certv);
-    PKCS12_free(container);
-    if (result != 1) {
-        LogError("Failed to parse the file passed. openssl err : " << ERR_get_error());
-        return CERTSVC_FAIL;
-    }
-
-    keyPtr.reset(key);
-    certPtr.reset(cert);
-    certvPtr.reset(certv);
-
-    return CERTSVC_SUCCESS;
+       FILE *stream = NULL;
+
+       if ((stream = fopen(path.c_str(), "rb")) == NULL) {
+               LogError("Unable to open the file for reading : " << path);
+               return CERTSVC_IO_ERROR;
+       }
+
+       PKCS12 *container = d2i_PKCS12_fp(stream, NULL);
+       fclose(stream);
+
+       if (container == NULL) {
+               LogError("Failed to parse the input file passed.");
+               return CERTSVC_FAIL;
+       }
+
+       EVP_PKEY *key = NULL;
+       X509 *cert = NULL;
+       STACK_OF(X509) *certv = NULL;
+       int result = PKCS12_parse(container, password.c_str(), &key, &cert, &certv);
+       PKCS12_free(container);
+
+       if (result != 1) {
+               LogError("Failed to parse the file passed. openssl err : " << ERR_get_error());
+               return CERTSVC_FAIL;
+       }
+
+       keyPtr.reset(key);
+       certPtr.reset(cert);
+       certvPtr.reset(certv);
+       return CERTSVC_SUCCESS;
 }
 
 void rollbackStore(CertStoreType storeTypes, const std::string &endCertName)
 {
-    for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE; storeType = nextStore(storeType)) {
-        if (!hasStore(storeTypes, storeType))
-            continue;
-
-        char **certChainName = NULL;
-        size_t ncerts = 0;
-
-        int result = vcore_client_load_certificates_from_store(storeType, endCertName.c_str(), &certChainName, &ncerts);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Unable to load certificates from store. result : " << result);
-            continue;
-        }
-
-        for (size_t i = 0; i < ncerts; i++) {
-            if (certChainName[i] == NULL)
-                continue;
-
-            vcore_client_delete_certificate_from_store(storeType, certChainName[i]);
-            free(certChainName[i]);
-        }
-
-        vcore_client_delete_certificate_from_store(storeType, endCertName.c_str());
-    }
+       for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE;
+                       storeType = nextStore(storeType)) {
+               if (!hasStore(storeTypes, storeType))
+                       continue;
+
+               char **certChainName = NULL;
+               size_t ncerts = 0;
+               int result = vcore_client_load_certificates_from_store(storeType, endCertName.c_str(),
+                                        &certChainName, &ncerts);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Unable to load certificates from store. result : " << result);
+                       continue;
+               }
+
+               for (size_t i = 0; i < ncerts; i++) {
+                       if (certChainName[i] == NULL)
+                               continue;
+
+                       vcore_client_delete_certificate_from_store(storeType, certChainName[i]);
+                       free(certChainName[i]);
+               }
+
+               vcore_client_delete_certificate_from_store(storeType, endCertName.c_str());
+       }
 }
 
 int insertToStore(CertStoreType storeTypes,
-                  const std::string &alias,
-                  const std::string &prikeyName,
-                  const std::string &prikeyBuffer,
-                  const std::string &endCertName,
-                  const std::string &endCertBuffer,
-                  const std::vector<std::string> &certChainName,
-                  const std::vector<std::string> &certChainBuffer)
+                                 const std::string &alias,
+                                 const std::string &prikeyName,
+                                 const std::string &prikeyBuffer,
+                                 const std::string &endCertName,
+                                 const std::string &endCertBuffer,
+                                 const std::vector<std::string> &certChainName,
+                                 const std::vector<std::string> &certChainBuffer)
 {
-    size_t ncerts = certChainName.size();
-
-    for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE; storeType = nextStore(storeType)) {
-        if (!hasStore(storeTypes, storeType))
-            continue;
-
-        LogDebug("Processing store type : " << storeType);
-
-        int result = installPKEY(storeType, prikeyBuffer, prikeyName);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Failed to store the private key contents. result : " << result);
-            return result;
-        }
-
-        result = installEndCert(storeType, endCertBuffer, alias, endCertName, prikeyName);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Failed to install the end user certificate. result : " << result);
-            return result;
-        }
-
-        for (size_t i = 0; i < ncerts; i++) {
-            if (i == ncerts - 1)
-                result = installChainCert(storeType, certChainBuffer[i], certChainName[i], endCertName, P12_INTERMEDIATE);
-            else
-                result = installChainCert(storeType, certChainBuffer[i], certChainName[i], endCertName, P12_TRUSTED);
-
-            if (result != CERTSVC_SUCCESS) {
-                LogError("Failed to install the ca certificates. result : " << result);
-                return result;
-            }
-        }
-    }
-
-    LogDebug("Success to insert extracted pkcs12 data to db");
-
-    return CERTSVC_SUCCESS;
+       size_t ncerts = certChainName.size();
+
+       for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE;
+                       storeType = nextStore(storeType)) {
+               if (!hasStore(storeTypes, storeType))
+                       continue;
+
+               LogDebug("Processing store type : " << storeType);
+               int result = installPKEY(storeType, prikeyBuffer, prikeyName);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Failed to store the private key contents. result : " << result);
+                       return result;
+               }
+
+               result = installEndCert(storeType, endCertBuffer, alias, endCertName, prikeyName);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Failed to install the end user certificate. result : " << result);
+                       return result;
+               }
+
+               for (size_t i = 0; i < ncerts; i++) {
+                       if (i == ncerts - 1)
+                               result = installChainCert(storeType, certChainBuffer[i], certChainName[i], endCertName,
+                                                                                 P12_INTERMEDIATE);
+                       else
+                               result = installChainCert(storeType, certChainBuffer[i], certChainName[i], endCertName,
+                                                                                 P12_TRUSTED);
+
+                       if (result != CERTSVC_SUCCESS) {
+                               LogError("Failed to install the ca certificates. result : " << result);
+                               return result;
+                       }
+               }
+       }
+
+       LogDebug("Success to insert extracted pkcs12 data to db");
+       return CERTSVC_SUCCESS;
 }
 
 int insertToStorePEM(CertStoreType storeTypes, const std::string &path, const std::string &gname)
 {
-    std::string content = readFromFile(path);
-    if (content.empty()) {
-        LogError("Failed to read the file : " << path);
-        return CERTSVC_IO_ERROR;
-    }
-
-    std::string parsed = parseCRT(content);
-    if (parsed.empty()) {
-        LogError("Failed to parse CRT : " << path);
-        return CERTSVC_FAIL;
-    }
-
-    for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE; storeType = nextStore(storeType)) {
-        if (!hasStore(storeTypes, storeType))
-            continue;
-
-        int result = installCert(storeType, parsed, gname);
-        if (result != CERTSVC_SUCCESS) {
-            LogError("Failed to install PEM/CRT to db store : " << storeType << " result : " << result);
-            rollbackStore(storeTypes, gname);
-            return result;
-        }
-
-        LogDebug("Success to install PEM/CRT to db store : " << storeType);
-    }
-
-    LogDebug("Success to install PEM/CRT to db stores : " << storeTypes);
-
-    return CERTSVC_SUCCESS;
+       std::string content = readFromFile(path);
+
+       if (content.empty()) {
+               LogError("Failed to read the file : " << path);
+               return CERTSVC_IO_ERROR;
+       }
+
+       std::string parsed = parseCRT(content);
+
+       if (parsed.empty()) {
+               LogError("Failed to parse CRT : " << path);
+               return CERTSVC_FAIL;
+       }
+
+       for (CertStoreType storeType = VPN_STORE; storeType < SYSTEM_STORE;
+                       storeType = nextStore(storeType)) {
+               if (!hasStore(storeTypes, storeType))
+                       continue;
+
+               int result = installCert(storeType, parsed, gname);
+
+               if (result != CERTSVC_SUCCESS) {
+                       LogError("Failed to install PEM/CRT to db store : " << storeType << " result : " << result);
+                       rollbackStore(storeTypes, gname);
+                       return result;
+               }
+
+               LogDebug("Success to install PEM/CRT to db store : " << storeType);
+       }
+
+       LogDebug("Success to install PEM/CRT to db stores : " << storeTypes);
+       return CERTSVC_SUCCESS;
 }
 
 } // namespace anonymous
 
 
 int pkcs12_import_from_file_to_store(CertStoreType storeTypes,
-                                     const char *_path,
-                                     const char *_password,
-                                     const char *_alias)
+                                                                        const char *_path,
+                                                                        const char *_password,
+                                                                        const char *_alias)
 {
-
-    int result = 0;
-
-    if (_alias == NULL || _path == NULL || strlen(_path) < 4) {
-        LogError("Invalid input parameter.");
-        return CERTSVC_WRONG_ARGUMENT;
-    }
-
-    std::string path(_path);
-    std::string alias(_alias);
-    std::string password;
-    if (_password != NULL)
-        password = std::string(_password);
-
-    LogDebug("pkcs12_import_from_file_to_store start. path[" << path << "] password[" << password << "] alias[" << alias << "]");
-
-    if (storeTypes & SYSTEM_STORE) {
-        LogError("User should not install any form of certificates in SYSTEM_STORE.");
-        return CERTSVC_INVALID_STORE_TYPE;
-    }
-
-    /*
-     * Installs CRT and PEM files.
-     * We will passing NULL for private_key_gname and associated_gname parameter
-     * in installFilePEM(). Which means that there is no private key involved
-     * in the certificate which we are installing and there are no other
-     * certificates related with the current certificate which is installed
-     */
-    std::string suffix = path.substr(path.length() - 4, 4);
-    if (strcasecmp(suffix.c_str(), ".pem") == 0 || strcasecmp(suffix.c_str(), ".crt") == 0) {
-        std::string gnamePEM = generateGname();
-        result = insertToStorePEM(storeTypes, path, gnamePEM);
-        if (result != CERTSVC_SUCCESS)
-            LogError("Failed to install PEM/CRT file to store. gname : " << gnamePEM << " result : " << result);
-
-        return result;;
-    }
-
-    LogDebug("Convert ossl type to string start");
-
-    /* 0. extract pkcs12 data from file */
-    PKEYUniquePtr key(nullptr, EVP_PKEY_free);
-    X509UniquePtr cert(nullptr, X509_free);
-    X509StackUniquePtr certv(nullptr, X509_stack_free);
-    result = extractPkcs12(path, password, key, cert, certv);
-    if (result != CERTSVC_SUCCESS) {
-        LogError("Failed to extract pkcs12 file. result : " << result);
-        return result;
-    }
-
-    LogDebug("extract pkcs12 to unique ptr success");
-
-    result = verify_cert_details(cert.get(), certv.get());
-    if (result != CERTSVC_SUCCESS) {
-        LogError("Failed to verify p12 certificate. result : " << result);
-        return result;
-    }
-
-    /* 1. handling private key */
-    std::string prikeyName = generateGname();
-    std::string prikeyBuffer = osslToPEM(OsslType::PKEY, key.get());
-    if (prikeyName.empty() || prikeyBuffer.empty()) {
-        LogError("Failed to transform pkey to PEM. result : " << result);
-        return CERTSVC_FAIL;
-    }
-
-    LogDebug("Convert pkey to string success");
-
-    /* 2. handling end user certificate */
-    std::string endCertName = generateGname();
-    std::string endCertBuffer = osslToPEM(OsslType::X509, cert.get());
-    if (endCertName.empty() || endCertBuffer.empty()) {
-        LogError("Failed to transform x509 to PEM. result : " << result);
-        return CERTSVC_FAIL;
-    }
-
-    LogDebug("Convert end cert to string success");
-
-    /* 3. handling certificate chain */
-    std::vector<std::string> certChainName;
-    std::vector<std::string> certChainBuffer;
-    int ncerts = certv ? sk_X509_num(certv.get()) : 0;
-    for (int i = 0; i < ncerts; i++) {
-        std::string tempName = generateGname();
-        std::string tempBuffer = osslToPEM(OsslType::X509AUX, sk_X509_value(certv.get(), i));
-        if (tempName.empty() || tempBuffer.empty()) {
-            LogError("Failed to transform x509 AUX to PEM");
-            return CERTSVC_FAIL;
-        }
-
-        certChainName.push_back(std::move(tempName));
-        certChainBuffer.push_back(std::move(tempBuffer));
-    }
-
-    LogDebug("Convert cert chain to string success");
-
-    /* 4. insert extracted pkcs12 data to db */
-    result = insertToStore(storeTypes,
-                           alias,
-                           prikeyName,
-                           prikeyBuffer,
-                           endCertName,
-                           endCertBuffer,
-                           certChainName,
-                           certChainBuffer);
-
-    if (result != CERTSVC_SUCCESS)
-        rollbackStore(storeTypes, endCertName);
-
-    LogDebug("Success to import pkcs12 to store");
-
-    return result;
+       int result = 0;
+
+       if (_alias == NULL || _path == NULL || strlen(_path) < 4) {
+               LogError("Invalid input parameter.");
+               return CERTSVC_WRONG_ARGUMENT;
+       }
+
+       std::string path(_path);
+       std::string alias(_alias);
+       std::string password;
+
+       if (_password != NULL)
+               password = std::string(_password);
+
+       LogDebug("pkcs12_import_from_file_to_store start. path[" << path << "] password[" << password <<
+                        "] alias[" << alias << "]");
+
+       if (storeTypes & SYSTEM_STORE) {
+               LogError("User should not install any form of certificates in SYSTEM_STORE.");
+               return CERTSVC_INVALID_STORE_TYPE;
+       }
+
+       /*
+        * Installs CRT and PEM files.
+        * We will passing NULL for private_key_gname and associated_gname parameter
+        * in installFilePEM(). Which means that there is no private key involved
+        * in the certificate which we are installing and there are no other
+        * certificates related with the current certificate which is installed
+        */
+       std::string suffix = path.substr(path.length() - 4, 4);
+
+       if (strcasecmp(suffix.c_str(), ".pem") == 0 || strcasecmp(suffix.c_str(), ".crt") == 0) {
+               std::string gnamePEM = generateGname();
+               result = insertToStorePEM(storeTypes, path, gnamePEM);
+
+               if (result != CERTSVC_SUCCESS)
+                       LogError("Failed to install PEM/CRT file to store. gname : " << gnamePEM << " result : " << result);
+
+               return result;;
+       }
+
+       LogDebug("Convert ossl type to string start");
+       /* 0. extract pkcs12 data from file */
+       PKEYUniquePtr key(nullptr, EVP_PKEY_free);
+       X509UniquePtr cert(nullptr, X509_free);
+       X509StackUniquePtr certv(nullptr, X509_stack_free);
+       result = extractPkcs12(path, password, key, cert, certv);
+
+       if (result != CERTSVC_SUCCESS) {
+               LogError("Failed to extract pkcs12 file. result : " << result);
+               return result;
+       }
+
+       LogDebug("extract pkcs12 to unique ptr success");
+       result = verify_cert_details(cert.get(), certv.get());
+
+       if (result != CERTSVC_SUCCESS) {
+               LogError("Failed to verify p12 certificate. result : " << result);
+               return result;
+       }
+
+       /* 1. handling private key */
+       std::string prikeyName = generateGname();
+       std::string prikeyBuffer = osslToPEM(OsslType::PKEY, key.get());
+
+       if (prikeyName.empty() || prikeyBuffer.empty()) {
+               LogError("Failed to transform pkey to PEM. result : " << result);
+               return CERTSVC_FAIL;
+       }
+
+       LogDebug("Convert pkey to string success");
+       /* 2. handling end user certificate */
+       std::string endCertName = generateGname();
+       std::string endCertBuffer = osslToPEM(OsslType::X509, cert.get());
+
+       if (endCertName.empty() || endCertBuffer.empty()) {
+               LogError("Failed to transform x509 to PEM. result : " << result);
+               return CERTSVC_FAIL;
+       }
+
+       LogDebug("Convert end cert to string success");
+       /* 3. handling certificate chain */
+       std::vector<std::string> certChainName;
+       std::vector<std::string> certChainBuffer;
+       int ncerts = certv ? sk_X509_num(certv.get()) : 0;
+
+       for (int i = 0; i < ncerts; i++) {
+               std::string tempName = generateGname();
+               std::string tempBuffer = osslToPEM(OsslType::X509AUX, sk_X509_value(certv.get(), i));
+
+               if (tempName.empty() || tempBuffer.empty()) {
+                       LogError("Failed to transform x509 AUX to PEM");
+                       return CERTSVC_FAIL;
+               }
+
+               certChainName.push_back(std::move(tempName));
+               certChainBuffer.push_back(std::move(tempBuffer));
+       }
+
+       LogDebug("Convert cert chain to string success");
+       /* 4. insert extracted pkcs12 data to db */
+       result = insertToStore(storeTypes,
+                                                  alias,
+                                                  prikeyName,
+                                                  prikeyBuffer,
+                                                  endCertName,
+                                                  endCertBuffer,
+                                                  certChainName,
+                                                  certChainBuffer);
+
+       if (result != CERTSVC_SUCCESS)
+               rollbackStore(storeTypes, endCertName);
+
+       LogDebug("Success to import pkcs12 to store");
+       return result;
 }
 
 int pkcs12_has_password(const char *filepath, int *passworded)
 {
-    if (filepath == NULL || passworded == NULL)
-        return CERTSVC_WRONG_ARGUMENT;
+       if (filepath == NULL || passworded == NULL)
+               return CERTSVC_WRONG_ARGUMENT;
 
-    FILE *stream;
-    if ((stream = fopen(filepath, "rb")) == NULL)
-        return CERTSVC_IO_ERROR;
+       FILE *stream;
 
-    PKCS12 *container = d2i_PKCS12_fp(stream, NULL);
-    fclose(stream);
+       if ((stream = fopen(filepath, "rb")) == NULL)
+               return CERTSVC_IO_ERROR;
 
-    if (container == NULL)
-        return CERTSVC_FAIL;
+       PKCS12 *container = d2i_PKCS12_fp(stream, NULL);
+       fclose(stream);
 
-    EVP_PKEY *pkey = NULL;
-    X509 *cert = NULL;
-    int result = PKCS12_parse(container, NULL, &pkey, &cert, NULL);
+       if (container == NULL)
+               return CERTSVC_FAIL;
 
-    PKCS12_free(container);
+       EVP_PKEY *pkey = NULL;
+       X509 *cert = NULL;
+       int result = PKCS12_parse(container, NULL, &pkey, &cert, NULL);
+       PKCS12_free(container);
 
-    if (pkey != NULL)
-        EVP_PKEY_free(pkey);
-    if (cert != NULL)
-        X509_free(cert);
+       if (pkey != NULL)
+               EVP_PKEY_free(pkey);
 
-    if (result != 1 && ERR_GET_REASON(ERR_peek_last_error()) != PKCS12_R_MAC_VERIFY_FAILURE)
-        return CERTSVC_FAIL;
+       if (cert != NULL)
+               X509_free(cert);
 
-    *passworded = (result == 1) ? 1 : 0;
+       if (result != 1 && ERR_GET_REASON(ERR_peek_last_error()) != PKCS12_R_MAC_VERIFY_FAILURE)
+               return CERTSVC_FAIL;
 
-    return CERTSVC_SUCCESS;
+       *passworded = (result == 1) ? 1 : 0;
+       return CERTSVC_SUCCESS;
 }
index dbf4854..f98ebf8 100644 (file)
@@ -32,7 +32,8 @@
  * @param[in] alias Logical name for certificate bundle identification (can't be empty).
  * @return CERTSVC_SUCCESS, CERTSVC_FAIL, CERTSVC_DUPLICATED_ALIAS, CERTSVC_IO_ERROR, CERTSVC_WRONG_ARGUMENT, CERTSVC_BAD_ALLOC.
  */
-int pkcs12_import_from_file_to_store(CertStoreType storeType, const char *path, const char *password, const char *alias);
+int pkcs12_import_from_file_to_store(CertStoreType storeType, const char *path,
+                                                                        const char *password, const char *alias);
 
 /**
  * TO check if the p12/pfx file is protected by password or not.