コード例 #1
0
        static void Main(string[] args)
        {
            const string toKibs           = "<?xml version='1.0' encoding='utf-8'></soap:Envelope><soap:Envelope xmlns:mioa='http://mioa.gov.mk/interop/mim/v1' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns='http://www.slss.hr/' xmlns:soap='http://www.w3.org/2003/05/soap-envelope'><soap:Header><mioa:MIMHeader id='MIMHeader'><mioa:Consumer>CRRM</mioa:Consumer><mioa:Provider>AKN</mioa:Provider><mioa:RoutingToken>MIM1$$AKN</mioa:RoutingToken><mioa:Service>ImotenListParcela</mioa:Service><mioa:ServiceMethod>http://interop.org/IAKNService/GetPropertyList</mioa:ServiceMethod><mioa:TransactionId>a520132a-ff3d-40be-bb66-461a7421bb99</mioa:TransactionId><mioa:Dir>Response</mioa:Dir><mioa:PublicKey>MIIFbzCCBFegAwIBAgIQZhXzWJpQqIltlgMRd/SY3jANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJNSzEXMBUGA1UEChMOS0lCUyBBRCBTa29wamUxHzAdBgNVBAsTFkZPUiBURVNUIFBVUlBPU0VTIE9OTFkxGDAWBgNVBAMTD0tJQlMgVEVTVCBDQSBHMzAeFw0xNTEyMjkwMDAwMDBaFw0xNjEyMjgyMzU5NTlaMIGfMQ8wDQYDVQQLFAZPZGRlbDIxFTATBgNVBAoUDEluc3RpdHVjaWphMjEXMBUGA1UECxQORU1CUyAtIDU1Mjk1ODExHDAaBgNVBAsUE0VEQiAtIDQwMzAwMDE0MTYzMDkxCzAJBgNVBAYTAk1LMR8wHQYJKoZIhvcNAQkBFhBjYS1wb21vc0BraWJzLm1rMRAwDgYDVQQDDAdTZXJ2aXMyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1K3qXeEQTIgCOGTFACx0aXfksfcVJ2NuQ072C7g9tiqGtGNHyJCnv9sXVvSHSpITP/igATGZcDr39Y6r3Hh9v1x2Cn5Ve4RDEXmcyiBs8Vr8QVE8iPfWD/hCCtcKsK4lK4AaGSOnDiHsnnrUDqxJJWChoivfSkUlkR02I4j/zVHUbiCaSpNrwCHPdYNaE3WeaVjn3SXqLRSg/a47TRTf8wUFoqP4pbXlQtK7Fq6ZhC/0OL3IqbLf5ApIe25Fvo8UwqAdGj04PFzQuYZYZkDceNg0UfMC7GbAlFYwfZxdlWIgWs7h6d0g68GqJkL3Mao8f6iQ/jrzQnK5ykHboZi6QIDAQABo4IB4jCCAd4wCQYDVR0TBAIwADCBvwYDVR0gBIG3MIG0MEMGC2CGSAGG+EUBBxcCMDQwMgYIKwYBBQUHAgEWJmh0dHA6Ly93d3cua2lic3RydXN0Lm1rL3JlcG9zaXRvcnkvY3BzMG0GBgQAizABAjBjMGEGCCsGAQUFBwICMFUaU092YSBlIGt2YWxpZmlrdXZhbiBzZXJ0aWZpa2F0IHphIGVsZWt0cm9uc2tpIHBlY2hhdCBzb2dsYXNubyBFdnJvcHNrYXRhIFJlZ3VsYXRpdmEuME4GA1UdHwRHMEUwQ6BBoD+GPWh0dHA6Ly9jcmwtdGVzdC5hZGFjb20uY29tL0tJQlNBRFNrb3BqZVRlc3RDQUczL0xhdGVzdENSTC5jcmwwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBSsusmmdC7Kx4yrV3cUB2ILbcRuCjAfBgNVHSMEGDAWgBQ00QpTasVWIdkKx8aUuJG7utGnYjA7BgNVHSUENDAyBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMFBggrBgEFBQcDBgYIKwYBBQUHAwcwGwYDVR0RBBQwEoEQY2EtcG9tb3NAa2licy5tazAYBggrBgEFBQcBAwQMMAowCAYGBACORgEBMA0GCSqGSIb3DQEBCwUAA4IBAQAktJuurhytKYFPB9n4WfgGc5hw7FXl7IHjX0MdNIpURQ22j5emh1DrPWnjswREIU3bloCUksCnSSAOCM1U5BM8VqvFtjyn4AXef/+5pIFyNivqMVOWD3F+Qqe/OzIQYHnw9Dcy7BM2o30aEjeLjKnI1OlZgDWiHF4EnqEuoi5DbOtQx0YdrnTcimD4FlHow1AjMbnvcV8FFRRbm9IhB9Bp5wC35AX4EiahUBqsy39585pp6v7aySqqbN1UfCtLah9f9rTWhJh5qrrxBG0ahP6BRx0D015pG3oCyraopIcfodEdtVXvbQJLrNmCHJaKMVo1P2O0GfiArnDO4YmAFwdQ</mioa:PublicKey><mioa:MimeType>application/soap+xml; charset=utf-8</mioa:MimeType><mioa:TimeStamp>2016-06-21T06:44:13</mioa:TimeStamp><mioa:CorrelationID /><mioa:CallType>synchronous</mioa:CallType><Signature xmlns='http://www.w3.org/2000/09/xmldsig#'><SignedInfo><CanonicalizationMethod Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' /><SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1' /><Reference URI='#MIMHeader'><Transforms><Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' /><Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' /></Transforms><DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /><DigestValue>zvYxpBGrW6KpmTt0fAkakoDh9/I=</DigestValue></Reference><Reference URI='#MIMBody'><Transforms><Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' /><Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' /></Transforms><DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /><DigestValue>gSytOCV4rzg++q2oGZHQXRhVBh4=</DigestValue></Reference></SignedInfo><SignatureValue>h+L6Ck7MIH0lHif08jZ1ZUszjKdwQFv1E3BALlHO8s4KJDPPrjMD1WKOE7UkHBPjN66K/ywhwZ38jM2bQJ/36VXIeq6XF+/fG1wuwsOf2rYwH5e9uOH4qzAprezJJ1vgdOQf25iSIdvl/zZHZ7R+5VI7NAt4xoXASYwNtDkHarVeywnH8SHVWL5/OM2Oe9tF9ehGH46duxvCCknZ+PimssJt+Vpwxa0i9kO/a+LD7q+S3FMvIOWfnN/G16Syvfr0kGERZge8DD0Wx0HOUKxWy1xteakiqCAJPtrBqsFQIYtZt4lKJ0bUHG3S9WeNlUJUgAUCFtJMi8oQNIiYcX2PXQ==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFTTCCBDWgAwIBAgIQdmiILXAJhrJyVtFIEhZ5zTANBgkqhkiG9w0BAQUFADCBpTELMAkGA1UEBhMCTUsxFzAVBgNVBAoTDktJQlMgQUQgU2tvcGplMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTUwMwYDVQQLEyxDbGFzcyAyIE1hbmFnZWQgUEtJIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTElMCMGA1UEAxMcS0lCUyBDZXJ0aWZpY2F0ZSBTZXJ2aWNlcyBDQTAeFw0xNjAxMjkwMDAwMDBaFw0xOTAxMjgyMzU5NTlaMIHBMQswCQYDVQQGEwJNSzEXMBUGA1UECxQORU1CUyAtIDQwNjU5MzAxHDAaBgNVBAsUE0VEQiAtIDQwMzA5OTAyNTQ1MzMxNTAzBgNVBAoULEFnZW5jaWphIHphIGthdGFzdGFyIG5hIG5lZHZpem5vc3RpIC0gU2tvcGplMSgwJgYJKoZIhvcNAQkBFhlnLm5pa29sb3ZAa2F0YXN0YXIuZ292Lm1rMRowGAYDVQQDDBFJbnRlcm9wZXJhYmlsbm9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMfRLODhOvjb4eTA/for3/yrgjLm7bfsKBGl4/1WE4A3TeT9N8gk8DofP0RKbvIHz5PY8sV7RGeIuEzJtRNpl/0dxT5HSpIoz6IAeG+GHYWwrKblbQAlPl+mYz40xdgYEzqYabqVvv7zW+JCex3DKtn4fosK2+8TRM2cZokNiJbyyLrjkjTBVKL4RrAPoAmEleOE+6xSc8Pl0Aqyj6Y/LlA7Sjz526AwcmxgXM5JlJEKjCrfd8QfQyMmku/FqdTIF0lxYwBkMX6mFJ5BZwSHDEandhx7T0r3qKsCWBRy/zhC7sa034TSZP+oI6YSM8XkVayzibnKJJM72inovLXzlhUCAwEAAaOCAVkwggFVMAkGA1UdEwQCMAAwTQYDVR0gBEYwRDBCBgtghkgBhvhFAQcXAjAzMDEGCCsGAQUFBwIBFiVodHRwczovL2NhLmtpYnMuY29tLm1rL3JlcG9zaXRvcnkvY3BzMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jYS5raWJzLmNvbS5tay9jcmwvVmVyYmFOUS5jcmwwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBSyOD7M2FIpV/MwHzz0DHpk9pD+qjAfBgNVHSMEGDAWgBTcpNDjYmqaTPtZJZUxbo/S0W4Q2zA7BgNVHSUENDAyBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMFBggrBgEFBQcDBgYIKwYBBQUHAwcwJAYDVR0RBB0wG4EZZy5uaWtvbG92QGthdGFzdGFyLmdvdi5tazARBglghkgBhvhCAQEEBAMCB4AwDQYJKoZIhvcNAQEFBQADggEBACk02ThregQBU8qvssaQKPZHkMy2lnO8CwnlXBsR/dJ4EASfrJPJ8FofqqNIh9mrmWvAFOZR5juYK4a+MgJZB+j7z9pBo5BwPCUzEK1+SXJJRbsBP2saP9pi0E6Gpz3Aoy2AfNFfEmRVm2QqrW1TYN6Nw8SVDaM1I0ffpuhP/Li7kdRdzFscqikPXA8hd29eiYh4yXk4XZ7efbtVRcCuDF/R0iIfNIT2kLbqh7TpYXLgkLBJNVMwM+D/tXitO+g1o9+ZKosKEw3RYFlMm2Hd96GoKoaTIS5xaQcdX1qbhNPi0WRHetgC2ZijHkTkLyCBd15LsYar0CpWK2jz0as5gwQ=</X509Certificate></X509Data></KeyInfo></Signature></mioa:MIMHeader><mioa:MIMadditionalHeader><mioa:Status>200</mioa:Status><mioa:StatusMessage>OK</mioa:StatusMessage><mioa:ProviderEndpointUrl /><mioa:ExternalEndpointUrl /><mioa:WebServiceUrl /><mioa:ConsumerBusCode /><mioa:TimeStampToken>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</mioa:TimeStampToken><mioa:IsInteropTestCommunicationCall>false</mioa:IsInteropTestCommunicationCall></mioa:MIMadditionalHeader><mioa:CryptoHeader><mioa:Key>g9yhhITzfP/70LIZvIdpoZxHqldzKg/+KH3yVSbIfrf/AJtF0CQMNpEzUmDrbWCVD0DwnkHnw1Nq2IjSNCzUZPi9oUVZbgzwfLdBJm5L9XpReH9oi5QDzZh6B/EGRGfL/IkJGUt5zMxkUU+DYqvsVH/Y3Gep1Jeb3cF9CJclTYiTtU+c6o8PUVb6BdviRDueeyP+Jpdq4BrsxRbs4kbpCyPvk42dYhIcoXyyuyi9uA4JstypcdOgRXyyN3Qcva+JLwaEGrAiYchtBxWaFkKd+VBXyqrq75bgVHd+dh+YJBzCPw/EfFjWNZHGPMt1oXVmq/0lHNQFYhJ4aRX89LZTwA==</mioa:Key><mioa:InitializationVector>f28g12aq1rTqrJpqGLLkwg==</mioa:InitializationVector><mioa:FormatValue>AES</mioa:FormatValue></mioa:CryptoHeader></soap:Header><soap:Body><mioa:MIMBody id='MIMBody'><mioa:Message>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</mioa:Message></mioa:MIMBody></soap:Body></soap:Envelope>";
            string       btResponseToKibs = "<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:mioa='http://mioa.gov.mk/interop/mim/v1' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns='http://www.slss.hr/' xmlns:soap='http://www.w3.org/2003/05/soap-envelope'><soap:Header><mioa:MIMHeader id='MIMHeader'><mioa:Consumer>CURM</mioa:Consumer><mioa:Provider>CRRM</mioa:Provider><mioa:RoutingToken>MIM1$$CRRM</mioa:RoutingToken><mioa:Service>TekovnaSostojbaCURM</mioa:Service><mioa:ServiceMethod>http://interop.org/ICRM_TS_CURM/Get_TS_CURM</mioa:ServiceMethod><mioa:TransactionId>9589adc8-76fe-486d-b003-aa5b20bdd6e3</mioa:TransactionId><mioa:Dir>Response</mioa:Dir><mioa:PublicKey>MIIFZjCCBE6gAwIBAgIQXi527mgOzqeUzns90z++4zANBgkqhkiG9w0BAQUFADCBpTELMAkGA1UEBhMCTUsxFzAVBgNVBAoTDktJQlMgQUQgU2tvcGplMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTUwMwYDVQQLEyxDbGFzcyAyIE1hbmFnZWQgUEtJIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTElMCMGA1UEAxMcS0lCUyBDZXJ0aWZpY2F0ZSBTZXJ2aWNlcyBDQTAeFw0xNjAyMDEwMDAwMDBaFw0xOTAxMzEyMzU5NTlaMIHUMQswCQYDVQQGEwJNSzEXMBUGA1UECxQORU1CUyAtIDQ2NDE2NTUxHDAaBgNVBAsUE0VEQiAtIDQwMzA5OTIyMjgwMTcxQjBABgNVBAoUOU1pbmlzdGVyc3R2byB6YSBmaW5hbnNpaSAtIENhcmluc2thIHVwcmF2YSBuYSBSTSAtIFNrb3BqZTEuMCwGCSqGSIb3DQEJARYfem9yaWNhLmFzaWtvdnNrYUBjdXN0b21zLmdvdi5tazEaMBgGA1UEAwwRSW50ZXJvcGVyYWJpbG5vc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDf2/1/JqNA5i8d3d1wx8EvJwQnlQHcujxsx4TRooxlk2wgHJ/1hLM6EkTXGwqBUbxak6stoE/9HAnsrywWVvnftjDTPLw39pOuoTCEU2E4c4SrJRmCMz73QD6XZ3SpsZGXHRX9OwE2ql/tUt5YIBmZC5kviSmovis/qsW2OF7I0pLbjyQpnGOoJAAZfUtnbuI+XSa75tmIbr40NenmaxeOrSQOunFU/kCNETkIbjN6um82YOWuNWqqDJngy4ur1NumGlj3Fvy37iY/G+frzVUs6qXmZxdKux+QDzv843OEWqS6oDoFID3gP7fI5B8fLZQpOVbMcwgIAHeqfJZiCp11AgMBAAGjggFfMIIBWzAJBgNVHRMEAjAAME0GA1UdIARGMEQwQgYLYIZIAYb4RQEHFwIwMzAxBggrBgEFBQcCARYlaHR0cHM6Ly9jYS5raWJzLmNvbS5tay9yZXBvc2l0b3J5L2NwczA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY2Eua2licy5jb20ubWsvY3JsL1ZlcmJhTlEuY3JsMAsGA1UdDwQEAwIE8DAdBgNVHQ4EFgQU0rEDjKv13GKif/s+4Y501JXBZC4wHwYDVR0jBBgwFoAU3KTQ42Jqmkz7WSWVMW6P0tFuENswOwYDVR0lBDQwMgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDBQYIKwYBBQUHAwYGCCsGAQUFBwMHMCoGA1UdEQQjMCGBH3pvcmljYS5hc2lrb3Zza2FAY3VzdG9tcy5nb3YubWswEQYJYIZIAYb4QgEBBAQDAgeAMA0GCSqGSIb3DQEBBQUAA4IBAQAb4+dISuqkc5qTATwkEf2ydkYEf8q0fuLBTSC6Pqt99YBXQ/cmMkEnDaEjrYnuZeE7Gi6LUiYmFH4iLgsyMoIihhhfLi7XJcBcDEK3BMsltz04W7znXk1d9tVpDht2x2lEUSQ0ZhT1nCSPf70QVKm7VditnAs6jqv4GzTkzUk4xyTnX/59Z0AKx4lV10zE/jsZZnMp1OOLhaeH60I9Ay+QXrhmSfWl01NGIepyslqzTBgnumF2N/bkqjia8CFowx+5f8d0w36Xe02GcIs3CoGvP3qzRnhz85bB/e6wsTwF/7dF6Sa+iJqNmSMTkbV7WUHnyUohT8tm4z/iD5mIuahU</mioa:PublicKey><mioa:MimeType>application/soap+xml; charset=utf-8</mioa:MimeType><mioa:TimeStamp>2016-09-15T16:11:17</mioa:TimeStamp><mioa:CorrelationID /><mioa:CallType>synchronous</mioa:CallType><Signature xmlns='http://www.w3.org/2000/09/xmldsig#'><SignedInfo><CanonicalizationMethod Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' /><SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1' /><Reference URI='#MIMHeader'><Transforms><Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' /><Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' /></Transforms><DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /><DigestValue>uUMhnp220SJZsYjTHVy+tJ8kdvE=</DigestValue></Reference><Reference URI='#MIMBody'><Transforms><Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' /><Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' /></Transforms><DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' /><DigestValue>KYlfJH8jTTWr7Ze69JjQOsdVlZE=</DigestValue></Reference></SignedInfo><SignatureValue>L7mMLsYcCF8/kn7xN/fHAsh0kK2W0ZYwjyXroyXgVrOuYlqm5HI9aaG/l5TsUwNhntUF8vcR3kHqYc4f3O10T+Dehj6FV53i+Aw5mMSQfqLSVBNtf6eR84bZCCVJ+V0tpGyIigytMoEQBP5pYqGQhZq5KxyOUwijRdSynaR6RImFKYGobnDfAvdwYoUXJIfg974+lb31xMJFnqzTBf2EQkRiNGncXssc4zper+BNNP9GG2Vh1q2JO9pwc3dfPssFJlDo1EK2zMZ5bclGLUJD43nepmtL9jvUSVj7FqJYFbEBtN4n3bzSN/O26cW5jkql2IGPH+2xxPUBVo0fzz3eWQ==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFRjCCBC6gAwIBAgIQbZxYJIthD9DGCRXt3WsvgzANBgkqhkiG9w0BAQUFADCBpTELMAkGA1UEBhMCTUsxFzAVBgNVBAoTDktJQlMgQUQgU2tvcGplMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMTUwMwYDVQQLEyxDbGFzcyAyIE1hbmFnZWQgUEtJIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQTElMCMGA1UEAxMcS0lCUyBDZXJ0aWZpY2F0ZSBTZXJ2aWNlcyBDQTAeFw0xNjAyMDMwMDAwMDBaFw0xOTAyMDIyMzU5NTlaMIHBMQswCQYDVQQGEwJNSzEXMBUGA1UECxQORU1CUyAtIDU1NDk4NTAxHDAaBgNVBAsUE0VEQiAtIDQwMzAwMDE0MjU0ODAxPDA6BgNVBAoUM0NlbnRyYWxlbiByZWdpc3RhciBuYSBSZXB1Ymxpa2EgTWFrZWRvbmlqYSAtIFNrb3BqZTEhMB8GCSqGSIb3DQEJARYSY3JfaW5mb0Bjcm0ub3JnLm1rMRowGAYDVQQDDBFJbnRlcm9wZXJhYmlsbm9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI1rtEclw8XbXoqaHOCsdMrFuSjHaBXBv0QOJizmKuAAr//RlqiVAecDKOuXBulx4P3nFfreNZZZKq23Cea+CC/obPcnWf5SZh6K7f0bNMuv3dw0YN7M9hpMuF8B3TcX9ysoP0UL5ISp2Xi685vcNzJqleK7gEj5t/+hxpsADgsvJ2ji+6sgHjfIunu9T8447wLLWQH8drI8pFVsK0+pFIkb26ezQGRo4Ft0IWLEnldoA4KDqbUYaqPV7QLMu83Ev8XI7oUO5crpczszHp7q8ab6VMh662Eu4zpy2tLhDL3ndLVLG6+5IGyBbvqyVIjWae61TFpqQ7qfDp2s8mEkFI8CAwEAAaOCAVIwggFOMAkGA1UdEwQCMAAwTQYDVR0gBEYwRDBCBgtghkgBhvhFAQcXAjAzMDEGCCsGAQUFBwIBFiVodHRwczovL2NhLmtpYnMuY29tLm1rL3JlcG9zaXRvcnkvY3BzMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jYS5raWJzLmNvbS5tay9jcmwvVmVyYmFOUS5jcmwwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBR+GE8DzFoY8tJwitBXQSAww817jjAfBgNVHSMEGDAWgBTcpNDjYmqaTPtZJZUxbo/S0W4Q2zA7BgNVHSUENDAyBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMFBggrBgEFBQcDBgYIKwYBBQUHAwcwHQYDVR0RBBYwFIESY3JfaW5mb0Bjcm0ub3JnLm1rMBEGCWCGSAGG+EIBAQQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAeBATgwop7mBdM/l5JDhD9LxjBpd7bq28NXmsZ2oSXNNZaSMwo9F1wD8b5tX1fp8HNFQyJGGm1cGxGGSLQ7eGAJeO5eCTpZitDApD96PbdAvTVrNmRDf4IXpgoUfg8TkW11L5+RK3EgaVp0o6LOyqfJr/BqKeDzY0smJgv7JHDeWHqKNRpmaytW7W84tR7M6P1CuLqVkplZmuLbi6A3uefZB6c7ZcUlaBTQsS1JPpPpyQ3F4aJJN5QKf1lYr/AAqOhwRVSVzNLQmzo3yUQf2wkpzat9Omdi4yHSs01Ttrj4maLA5kAtIXyp3CSg5zbjBFrAbeQ7Y+tdYkkOa050fLhg==</X509Certificate></X509Data></KeyInfo></Signature></mioa:MIMHeader><mioa:MIMadditionalHeader><mioa:Status>200</mioa:Status><mioa:StatusMessage>OK</mioa:StatusMessage><mioa:ProviderEndpointUrl /><mioa:ExternalEndpointUrl /><mioa:WebServiceUrl /><mioa:ConsumerBusCode /><mioa:TimeStampToken>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</mioa:TimeStampToken><mioa:IsInteropTestCommunicationCall>false</mioa:IsInteropTestCommunicationCall></mioa:MIMadditionalHeader><mioa:CryptoHeader><mioa:Key>pExJgMBufRAwvLpv4q8OanVM3DMMOzcV/9ZUdWRjsRvmDi3z7g1qMW2/23ohePnJFym6PB4TiqDfff6ewlLhtLM9CDqJPMIedKQiVFzH+ZKBY3vdwkQthtLTHsrZnghkdtinUdzLoUH5bxqPv7zgKWFmoRIrdM8UcMOdaWJju1d8lRe88IwMP9xfjSrs/uWH3EJNPkzxgP6RKbAuqnxuLmDmHqaPY3/vHjbCGmQc0g7K8zXou4QYSFeQMBLs48LQSR2eAj/o7t/REW3mZO3YRLqh4To71CXQBRMGFJ3bNEZfShs806iFmA6Ddkeu9GJGyzdswIUTDE/VoWwOCAZ+RQ==</mioa:Key><mioa:InitializationVector>lxCtHA8ub7p8vOwqQrSiTw==</mioa:InitializationVector><mioa:FormatValue>AES</mioa:FormatValue></mioa:CryptoHeader></soap:Header><soap:Body><mioa:MIMBody id='MIMBody'><mioa:Message>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</mioa:Message></mioa:MIMBody></soap:Body></soap:Envelope>";

            var fromFile = AppSettings.Get <bool>("FromFile");

            if (fromFile)
            {
                var path = Directory.GetCurrentDirectory() + @"\Files\1Mb.txt";
                if (File.Exists(path))
                {
                    TextReader textReader = File.OpenText(path);
                    btResponseToKibs = textReader.ReadToEnd();
                }
            }


            try
            {
                //Testen KIBS servis
                Console.WriteLine("Before KIBS " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"));
                KIBSResponse resultkibsAfterBt = KIBS.KIBS.GenerateTimeStamp(btResponseToKibs);
                Console.WriteLine("After KIBS " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"));
                Console.WriteLine("Kibs vrati timestamp? " + resultkibsAfterBt.IsSuccessful);
                Console.WriteLine("Kibs timestamp: " + resultkibsAfterBt.TimeStamp);
                Console.WriteLine("Kibs hash: " + resultkibsAfterBt.Hash);

                //Produkciski KIBS servis
                //KIBSResponse resultProd = KIBS.KIBS.GenerateTimeStampProduction(btResponseToKibs);
                //Console.WriteLine("Kibs vrati timestamp  " + resultProd.IsSuccessful);
                //Console.WriteLine("Kibs timestamp: " + resultProd.TimeStamp);

                //var has = resultProd.Hash;
                //byte[] bytData = Encoding.UTF8.GetBytes(has);
                //string hashPassword = System.Text.Encoding.UTF8.GetString(bytData);
            }
            catch (WebException exception)
            {
                Console.WriteLine("Exception response: " + exception.Response.ResponseUri);
                Console.WriteLine("Status: " + exception.Status);
                Console.WriteLine("Dosol vo web exception");
                Console.WriteLine(exception);
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.InnerException);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Dosol vo exception");
                Console.WriteLine(exception);
                Console.WriteLine(exception.Message);
            }
            Console.ReadLine();
        }
コード例 #2
0
        // Опис: Метод кој овозможува процесирање на НТТР Web повици
        // Влезни параметри: HttpContext context
        // Излезни параметри: /
        public void ProcessRequest(HttpContext context)
        {
            var transactionId = Guid.NewGuid();
            var validTId      = true;

            try
            {
                var urlSegments = _requestHelper.GetUrlSegments(context.Request.RawUrl);

                _logger.Info("context.Request.RawUrl: " + context.Request.RawUrl);
                const string ourMim     = "MIM1$$";
                const string secoundMim = "MIM2$$";
                bool         routingTokenContainOurMim = urlSegments.RoutingToken.Contains(ourMim);
                //_logger.Info("Go sodrzi nasiot Mim: " + routingTokenContainOurMim);
                bool routingTokenContainsSecoundMim = urlSegments.RoutingToken.Contains(secoundMim);
                //_logger.Info("Go sodrzi vtoriot Mim: " + routingTokenContainsSecoundMim);
                if (!routingTokenContainOurMim && !routingTokenContainsSecoundMim)
                {
                    //Dodavame MIM1$$ na RountingToken ako istiot nema
                    urlSegments.RoutingToken = "MIM1$$" + urlSegments.RoutingToken;
                    //_logger.Info("Nas mim e, treba da dodade i sea Routing token e: " + urlSegments.RoutingToken);
                }
                var logUrlSegments = JsonConvert.SerializeObject(urlSegments);

                _logger.Info("urlSegments e: " + JsonConvert.SerializeObject(logUrlSegments) + "urlsegment: " +
                             context.Request.RawUrl);
                var contentType = context.Request.ContentType;
                var action      = contentType.Split(';').Last();
                //_logger.Info("action e:" + action);
                var actionName          = string.Empty;
                var executionMethodName = string.Empty;
                if (!string.IsNullOrEmpty(action))
                {
                    actionName          = action.Substring(action.IndexOf('"') + 1);
                    executionMethodName = actionName.Substring(0, actionName.Length - 1);
                }

                //_logger.Info("actionName e:" + actionName);
                //_logger.Info("executionMethodName e:" + executionMethodName);
                var soapBody = string.Empty;
                try
                {
                    var logGetSoapBody = AppSettings.Get <bool>("LogGetSoapBody");
                    if (logGetSoapBody)
                    {
                        _logger.Info(
                            "Pred da go zeme samo soap body od porakata " +
                            DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BeforeGetOnlySoapBody");
                    }
                    soapBody = _requestHelper.GetOnlySoapBody(context.Request.InputStream);
                    if (logGetSoapBody)
                    {
                        _logger.Info(
                            "Otkako kje se zeme samo soap body od porakata " +
                            DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "AfterGetOnlySoapBody");
                    }
                    _logger.Info("soapBody e: " + soapBody);
                }
                catch (Exception ex)
                {
                    _logger.Error("Nastanata e greska kaj GetOnlySoapBody", ex);
                }

                var logCreateMimRequestMsg = AppSettings.Get <bool>("LogCreateMimRequestMsg");
                if (logCreateMimRequestMsg)
                {
                    _logger.Info("Pred CreateMimRequestMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimRequestMsg");
                }
                var mimMsg = _mimMsgHelper.CreateMimRequestMsg(urlSegments, transactionId.ToString());
                if (logCreateMimRequestMsg)
                {
                    _logger.Info("Posle CreateMimRequestMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterCreateMimRequestMsg");
                }

                #region Log SOAP Request Message

                var logSoap = AppSettings.Get <bool>("LogSoap");
                if (logSoap)
                {
                    _logger.Info(soapBody + Environment.NewLine + "ContentType: " + contentType + Environment.NewLine +
                                 "Soap action: " + actionName);
                }

                #endregion

                if (string.IsNullOrEmpty(soapBody) || !urlSegments.IsUrlCorrrect)
                {
                    validTId = false;
                    context.Response.StatusCode = 400;
                    context.Response.End();
                }

                #region Log MIM Message

                var logInsertRequestLogInDb = AppSettings.Get <bool>("LogInsertRequestLogInDb");
                if (logInsertRequestLogInDb)
                {
                    _logger.Info("Pred LogInitialMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLogInitialMimMessage");
                }
                _mimMsgHelper.LogInitialMimMessage(mimMsg, _logger);
                if (logInsertRequestLogInDb)
                {
                    _logger.Info("Posle LogInitialMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLogInitialMimMessage");
                }

                #endregion

                if (urlSegments.Async)
                {
                    //TODO Async req
                }
                var logLoadOwnCertificate = AppSettings.Get <bool>("LogLoadOwnCertificate");
                if (logLoadOwnCertificate)
                {
                    _logger.Info("Pred LoadOwnCertificate " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLoadOwnCertificate");
                }
                var ownCert = _mimMsgHelper.LoadOwnCertificate(_logger);
                if (logLoadOwnCertificate)
                {
                    _logger.Info("Posle LoadOwnCertificate " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLoadOwnCertificate");
                }

                var logGetPrivateKey = AppSettings.Get <bool>("LogGetPrivateKey");
                if (logGetPrivateKey)
                {
                    _logger.Info("Pred GetPrivateKey " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeGetPrivateKey");
                }
                var privateKey = _mimMsgHelper.GetPrivateKey(ownCert.PrivateKey);
                if (logGetPrivateKey)
                {
                    _logger.Info("Posle GetPrivateKey " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterGetPrivateKey");
                }

                string original = soapBody;

                var logGetPublicKeyForProvider = AppSettings.Get <bool>("LogGetPublicKeyForProvider");
                if (logGetPublicKeyForProvider)
                {
                    _logger.Info("Pred GetPublicKeyForProvider " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeGetPublicKeyForProvider");
                }
                var publicKey = _mimMsgHelper.GetPublicKeyForProvider(urlSegments.RoutingToken);
                if (logGetPublicKeyForProvider)
                {
                    _logger.Info(
                        "Posle GetPublicKeyForProvider " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                        "AfterGetPublicKeyForProvider");
                }

                var logEncryption = AppSettings.Get <bool>("LogEncryption");
                if (logEncryption)
                {
                    _logger.Info(
                        "Pred da go enkriptira body koe kje se isprati vo requestot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BeforeEncryptRequest");
                }
                var encryptedBlock = _mimMsgHelper.EncryptSoapBody(original, publicKey.PublicKeyRsa);
                if (logEncryption)
                {
                    _logger.Info(
                        "Otkako kje go enkriptira body koe kje se isprati vo requestot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "AfterEncryptRequest");
                }
                //var soapMethodName = _requestHelper.GetSoapMethodName(soapBody);

                #region Create MIM Message

                //set values to missing properties
                mimMsg.Body.MimBody.Message    = Convert.ToBase64String(encryptedBlock.EncryptedData);
                mimMsg.Header.CryptoHeader.Key = Convert.ToBase64String(encryptedBlock.EncryptedSessionKey);
                mimMsg.Header.CryptoHeader.InitializationVector = Convert.ToBase64String(encryptedBlock.Iv);
                mimMsg.Header.MimHeader.ServiceMethod           = executionMethodName;
                mimMsg.Header.MimHeader.PublicKey = ownCert.CertString;
                _logger.Info("mimMsg.Header.MimHeader.PublicKey is: " + ownCert.CertString);

                var logCreateMimXmlMsg = AppSettings.Get <bool>("LogCreateMimXmlMsg");
                if (logCreateMimXmlMsg)
                {
                    _logger.Info("Pred CreateMimXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimXmlMsg");
                }
                var doc = _mimMsgHelper.CreateMimXmlMsg(mimMsg);
                if (logCreateMimXmlMsg)
                {
                    _logger.Info("Posle CreateMimXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterACreateMimXmlMsg");
                }
                //_logger.Info("MIM message before KIBS" + doc);

                try
                {
                    KIBSResponse resultkibs = null;
                    if (mimMsg.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibs = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                var logKibsTimestamp = AppSettings.Get <bool>("LogKIBS");
                                if (logKibsTimestamp)
                                {
                                    _logger.Info("Se koristi testen KIBS.");
                                }
                                var requestBeforeKibs = DateTime.Now;
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPredRequest");
                                }
                                resultkibs = KIBS.KIBS.GenerateTimeStamp(doc.ToString());
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPosleRequest");
                                    var totalMinRequestKibs     = (int)(DateTime.Now - requestBeforeKibs).TotalMinutes;
                                    var totalSecRequestKibs     = (int)(DateTime.Now - requestBeforeKibs).TotalSeconds;
                                    var totalMilisecRequestKibs =
                                        (int)(DateTime.Now - requestBeforeKibs).TotalMilliseconds;
                                    _logger.Info(
                                        "Kibs ni vratil odgovor za " + totalMinRequestKibs + " min " +
                                        totalSecRequestKibs + " sec " + totalMilisecRequestKibs + " miliseconds",
                                        "RequestKIBS");
                                }
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibs = KIBS.KIBS.GenerateTimeStampProduction(doc.ToString());
                            }
                        }
                    }

                    try
                    {
                        //resultkibs = new KIBSResponse
                        //{
                        //    Hash = "InteropTestCommunicationCallHash",
                        //    TimeStamp = DateTime.Now
                        //};
                        if (resultkibs != null)
                        {
                            //_logger.Info("Pred update message log: " + mimMsg.Header.MimHeader.Dir + "/" + mimMsg.Header.MimHeader.ServiceMethod + "/" + mimMsg.Header.MimHeader.PublicKey + "/" + mimMsg.Header.MimHeader.TransactionId);

                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp
                            // _messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.TimeStamp,
                            //resultkibs.Hash, mimMsg.Header.MimHeader.ServiceMethod, mimMsg.Header.MimHeader.PublicKey,
                            //mimMsg.Header.MimHeader.TransactionId);
                            var logUpdateMessageLog = AppSettings.Get <bool>("LogUpdateMessageLog");
                            if (logUpdateMessageLog)
                            {
                                _logger.Info(
                                    "Pred UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "BeforeUpdateMessageLog");
                            }
                            _messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.Hash,
                                                                    mimMsg.Header.MimHeader.ServiceMethod, mimMsg.Header.MimHeader.PublicKey,
                                                                    mimMsg.Header.MimHeader.TransactionId);
                            if (logUpdateMessageLog)
                            {
                                _logger.Info(
                                    "Posle UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "AfterUpdateMessageLog");
                            }

                            //mimMsg.Header.MimHeader.TimeStamp = resultkibs.TimeStamp; //.ToString();

                            mimMsg.Header.MimHeader.TimeStamp = DateTime.Now;
                            mimMsg.Header.MimAdditionalHeader.TimeStampToken = resultkibs.Hash;

                            //_logger.Info("posle kibs so result: " + resultkibs.TimeStamp);
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Error("Error while updating mim message: ", exception);
                        throw new Exception("Неуспешна комуникација со KIBS!");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error posle CreateMimRequestMsg: " + ex.Message);
                    throw new Exception("KIBS врати грешка!");
                }

                var logCreateMimSignedXmlMsg = AppSettings.Get <bool>("LogCreateMimSignedXmlMsg");
                if (logCreateMimSignedXmlMsg)
                {
                    _logger.Info("Pred CreateMimSignedXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimSignedXmlMsg");
                }
                var mimMsgXml = _mimMsgHelper.CreateMimSignedXmlMsg(mimMsg, ownCert, _logger);
                if (logCreateMimSignedXmlMsg)
                {
                    _logger.Info("Posle CreateMimSignedXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterCreateMimSignedXmlMsg");
                }

                //_logger.Info("Created MIM signed xml message: " + mimMsgXml);

                #endregion



                var urlToBizTalk = AppSettings.Get <string>("URLWebRequest");
                ResponseInteropCommunication responseBizTalk = null;
                try
                {
                    //_logger.Info("pred responseBizTalk urlToBizTalk" + urlToBizTalk);
                    var timeBeforeCallBizTalk = DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt");
                    responseBizTalk = _soapRequestHelper.Execute(mimMsgXml, contentType, urlToBizTalk, _logger);

                    _logger.Info(
                        "Calling BizTalk in " + timeBeforeCallBizTalk + " , receving response in " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BizTalkResponseTime");
                    //Real MIM message
                    var logUnwrapSoapFaultMessage = AppSettings.Get <bool>("LogUnwrapSoapFaultMessage");
                    if (logUnwrapSoapFaultMessage)
                    {
                        _logger.Info(
                            "Pred UnwrapSoapFaultMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                            "BeforeUnwrapSoapFaultMessage");
                    }
                    var soapFaultUnwrapped = _soapRequestHelper.UnwrapSoapFaultMessage(responseBizTalk.Response);
                    if (logUnwrapSoapFaultMessage)
                    {
                        _logger.Info(
                            "Posle UnwrapSoapFaultMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                            "AfterUnwrapSoapFaultMessage");
                    }
                    //_logger.Info("Pominal kaj soapFaultUnwrapped!");
                    _logger.Info(responseBizTalk.Response, "BTResponseReceived");


                    if (soapFaultUnwrapped.Body.Fault != null)
                    {
                        // BizzTalk error
                        if (soapFaultUnwrapped.Body.Fault.Code.Subcode.value == "10000")
                        {
                            if (soapFaultUnwrapped.Body.Fault.Code.value == "10001")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultAccessMapping"));
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10002")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultParticipantInactive"));
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10003")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultServiceUnReachable"));
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10004")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultKIBSUnReachable"));
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10005")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    soapFaultUnwrapped.Body.Fault.Reason.Text.value);
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10010")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    soapFaultUnwrapped.Body.Fault.Reason.Text.value);
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10007")
                            {
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultUnsuccessfulRequest"));
                            }
                            else if (soapFaultUnwrapped.Body.Fault.Code.value == "10000")
                            {
                                //ova e vo slucaj koga CC-to e nedostapno
                                throw new Exception("BTMstatus10000BTMend;" +
                                                    AppSettings.Get <string>("SoapFaultServiceUnReachable"));
                            }
                            throw new Exception("BTMstatus10000BTMend;" +
                                                soapFaultUnwrapped.Body.Fault.Reason.Text.value);
                        }
                        // Our error
                        else
                        {
                            throw new Exception(soapFaultUnwrapped.Body.Fault.Reason.Text.value);
                        }
                    }
                }
                catch (Exception e)
                {
                    _logger.Error("Greska vo povikot do BizTalk", e);
                    throw new Exception(e.Message);
                }

                var logUnwrapMimMessage = AppSettings.Get <bool>("LogUnwrapMimMessage");
                if (logUnwrapMimMessage)
                {
                    _logger.Info("Pred UnwrapMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeUnwrapMimMessage");
                }
                var mimMsgResponse = _soapRequestHelper.UnwrapMimMessage(responseBizTalk.Response);
                if (logUnwrapMimMessage)
                {
                    _logger.Info("Posle UnwrapMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterUnwrapMimMessage");
                }

                #region Log MIM Message

                var logMimMessage = AppSettings.Get <bool>("LogMimMessage");
                if (logMimMessage)
                {
                    _logger.Info("Pred LogMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLogMimMessage");
                }
                _mimMsgHelper.LogMimMessage(mimMsgResponse, _logger);
                if (logMimMessage)
                {
                    _logger.Info("posle LogMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLogMimMessage");
                }

                #endregion

                #region ValidateMsg

                try
                {
                    var logValidateSignature = AppSettings.Get <bool>("LogValidateSignature");
                    if (logValidateSignature)
                    {
                        _logger.Info("Pred ValidateSignature " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                     "BeforeValidateSignature");
                        _logger.Info("Own cert string " + ownCert.CertString, "OwnCertString");
                    }
                    if (_soapRequestHelper.ValidateSignature(responseBizTalk.Response, ownCert.CertString, _logger))
                    {
                        if (logValidateSignature)
                        {
                            _logger.Info(
                                "Posle ValidateSignature " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                "AfterValidateSignature");
                        }
                        var logValidateXml = AppSettings.Get <bool>("LogValidateXml");
                        if (logValidateXml)
                        {
                            _logger.Info("Pred ValidateXml " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                         "BeforeValidateXml");
                        }
                        _validXmlMsgHelper.ValidateXml(responseBizTalk.Response);
                        if (logValidateXml)
                        {
                            _logger.Info("Posle ValidateXml " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                         "AfterValidateXml");
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error("Nastanala greska kaj ValidateSignature", ex);
                }

                #endregion

                var symmetricKey = mimMsgResponse.Header.CryptoHeader.Key;
                var iVector      = mimMsgResponse.Header.CryptoHeader.InitializationVector;
                var decryptBody  = string.Empty;

                try
                {
                    //_logger.Info("symmetricKey" + symmetricKey);
                    //_logger.Info("iVector" + iVector);
                    if (logEncryption)
                    {
                        _logger.Info(
                            "Pred da go dekriptira body koe kje se vrati kako response " +
                            DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BeforeDecryptResponse");
                    }
                    decryptBody =
                        _mimMsgHelper.DecryptSoapBody(
                            Convert.FromBase64String(mimMsgResponse.Body.MimBody.Message),
                            Convert.FromBase64String(symmetricKey), Convert.FromBase64String(iVector), privateKey);
                    if (logEncryption)
                    {
                        _logger.Info(
                            "Otkako kje go dekriptira body koe kje se vrati kako response " +
                            DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "AfterDecryptResponse");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error("Nastanala greska kaj DecryptSoapBody", ex);
                }


                #region Log DecryptBody

                if (AppSettings.Get <bool>("LogDecryptBody"))
                {
                    _logger.Info("Decripting MIM message: " + decryptBody);
                }

                #endregion

                #region KIBS after BT

                try
                {
                    KIBSResponse resultkibsAfterBt = null;
                    if (mimMsgResponse.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibsAfterBt = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                var logKibsTimestamp = AppSettings.Get <bool>("LogKIBS");
                                if (logKibsTimestamp)
                                {
                                    _logger.Info("Se koristi testen KIBS.");
                                }
                                var responseBeforeKibs = DateTime.Now;
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred response ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPredResponse");
                                }
                                resultkibsAfterBt = KIBS.KIBS.GenerateTimeStamp(responseBizTalk.Response);
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Posle response ." + DateTime.Now.ToString("dd.MM.yyy hh:mm:ss.fff tt"),
                                        "KIBSPosleResponse");
                                    var totalMinRequestKibs     = (int)(DateTime.Now - responseBeforeKibs).TotalMinutes;
                                    var totalSecRequestKibs     = (int)(DateTime.Now - responseBeforeKibs).TotalSeconds;
                                    var totalMilisecRequestKibs =
                                        (int)(DateTime.Now - responseBeforeKibs).TotalMilliseconds;
                                    //TimeSpan a = DateTime.Now - responseBeforeKibs;
                                    //int b = a.Seconds;
                                    //int c = a.Milliseconds;
                                    //int d = a.Minutes;
                                    //_logger.Info("minuti ima " + d, "minuti");
                                    //_logger.Info("sekindi ima " + b, "sekundi");
                                    //_logger.Info("milisekunds ima " + c, "milisekunds");
                                    _logger.Info(
                                        "Kibs ni vratil odgovor za " + totalMinRequestKibs + " min " +
                                        totalSecRequestKibs + " sec " + totalMilisecRequestKibs + " miliseconds",
                                        "ResponseKIBS");
                                }
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibsAfterBt = KIBS.KIBS.GenerateTimeStampProduction(responseBizTalk.Response);
                            }
                        }
                    }
                    try
                    {
                        //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                        //Sega se zapishuva DateTime.Now vo poleto Timestamp

                        //_messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir,
                        //    resultkibsAfterBt.TimeStamp, resultkibsAfterBt.Hash, string.Empty, string.Empty,
                        //    mimMsg.Header.MimHeader.TransactionId);

                        var logUpdateMessageLogResponse = AppSettings.Get <bool>("LogUpdateMessageLogResponse");
                        if (logUpdateMessageLogResponse)
                        {
                            _logger.Info(
                                "Pred UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                "BeforeUpdateMessageLogResponse");
                        }
                        _messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir,
                                                                resultkibsAfterBt.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);
                        if (logUpdateMessageLogResponse)
                        {
                            _logger.Info(
                                "Posle UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                "AfterUpdateMessageLogResponse");
                        }
                        //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                        //Sega se zapishuva DateTime.Now vo poleto Timestamp

                        //mimMsgResponse.Header.MimHeader.TimeStamp = resultkibsAfterBt.TimeStamp; //.ToString();

                        mimMsgResponse.Header.MimHeader.TimeStamp = DateTime.Now;
                        mimMsgResponse.Header.MimAdditionalHeader.TimeStampToken = resultkibsAfterBt.Hash;
                    }
                    catch (Exception exception)
                    {
                        _logger.Error("Error while updating mim message: ", exception);
                        throw new Exception("Неуспешна комуникација со KIBS!");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error after BT: " + ex.Message);
                    throw new Exception("KIBS врати грешка!");
                }

                #endregion

                #region Log SOAP Response Message

                if (logSoap)
                {
                    _logger.Info(responseBizTalk.Response, "BizTalk response");
                }

                #endregion

                string decryptedResponseBodyWrappedInSoapEnvelope =
                    "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Body>" + decryptBody +
                    "</s:Body></s:Envelope>";
                //_logger.Info(decryptedResponseBodyWrappedInSoapEnvelope, "decryptedResponseBodyWrappedInSoapEnvelope");
                _logger.Info("Zavsilo se na External handler vo " + DateTime.Now + " casot.", "EndedOnExternalHandler");
                HttpContext.Current.Response.ContentType = "application/soap+xml";
                context.Response.Write(decryptedResponseBodyWrappedInSoapEnvelope);
            }
            catch (Exception ex)
            {
                //AccessMap=0;Status=;StatusDescription="";IsActive=1;IsExternal=1;Uri="http://internalHandler-fpiom/";KIBS=True;
                if (validTId)
                {
                    var soapFault = new SoapFaultMessage();

                    if (ex.Message.StartsWith("BTMstatus10000BTMend"))
                    {
                        // BizzTalk error handled - Custom
                        //var soapFaultError = _soapRequestHelper.BTsoapFault(ex.Message);
                        // BizzTalk error handled - Kornel
                        var soapFaultError = ex.Message.Split(';')[1];

                        soapFault = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value",
                                                                  "Details - MaxTime value", soapFaultError);
                    }
                    else
                    {
                        soapFault = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value",
                                                                  "Details - MaxTime value", ex.Message);
                    }

                    _logger.Error("Generalen exception", ex);
                    _logger.Error(soapFault.Body.Fault.Reason.Text.value, ex, "Error on response");

                    var soapFaultDB = _soapRequestHelper.CreateSoapFaultDB(transactionId,
                                                                           soapFault.Body.Fault.Code.value, soapFault.Body.Fault.Code.Subcode.value,
                                                                           soapFault.Body.Fault.Detail.maxTime, soapFault.Body.Fault.Reason.Text.value);

                    _soapFaultRepo.InsertSoapFault(soapFaultDB);

                    var soapFaultXml = _mimMsgHelper.CreateFaultMessage(soapFault);

                    HttpContext.Current.Response.ContentType = "application/soap+xml";
                    HttpContext.Current.Response.Write(soapFaultXml.InnerXml);
                }
            }
        }
コード例 #3
0
        // Опис: Метод кој овозможува процесирање на НТТР Web повици
        // Влезни параметри: HttpContext context
        // Излезни параметри: /
        public void ProcessRequest(HttpContext context)
        {
            var validTId      = false;
            var transactionId = new Guid();

            try
            {
                var logGetSoapBody = AppSettings.Get <bool>("LogGetSoapBody");
                if (logGetSoapBody)
                {
                    _logger.Info(
                        "Pred da go zeme samo soap body od porakata " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BeforeGetSoapBody");
                }
                var soapBody = _requestHelper.GetSoapBody(context.Request.InputStream);
                if (logGetSoapBody)
                {
                    _logger.Info(
                        "Otkako kje go zeme soap body od porakata " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "AfterGetSoapBody");
                }
                var contentType = context.Request.ContentType;



                #region Log SOAP Request Message

                var logSoap = AppSettings.Get <bool>("LogSoap");
                if (logSoap)
                {
                    _logger.Info(soapBody + Environment.NewLine + "ContentType: " + contentType,
                                 "Request to Internal handler");
                }
                //soapBody = File.ReadAllText(@"C:\NSRequest.txt"); ;

                #endregion

                if (string.IsNullOrEmpty(soapBody))
                {
                    context.Response.StatusCode = 400;
                    context.Response.End();
                }

                var logUnwrapMimMessage = AppSettings.Get <bool>("LogUnwrapMimMessage");
                if (logUnwrapMimMessage)
                {
                    _logger.Info("Pred UnwrapMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeUnwrapMimMessage");
                }
                var mimMsg = _soapRequestHelper.UnwrapMimMessage(soapBody);
                if (logUnwrapMimMessage)
                {
                    _logger.Info("Posle UnwrapMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterUnwrapMimMessage");
                }

                validTId      = true;
                transactionId = new Guid(mimMsg.Header.MimHeader.TransactionId);

                #region Log MIM Message

                var logMimMessageRequest = AppSettings.Get <bool>("LogMimMessageRequest");
                if (logMimMessageRequest)
                {
                    _logger.Info("Pred LogMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLogMimMessage");
                }
                _mimMsgHelper.LogMimMessage(mimMsg, _logger);
                if (logMimMessageRequest)
                {
                    _logger.Info("Posle LogMimMessage " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLogMimMessage");
                }

                #endregion

                var logLoadOwnCertificate = AppSettings.Get <bool>("LogLoadOwnCertificate");
                if (logLoadOwnCertificate)
                {
                    _logger.Info("Pred LoadOwnCertificate " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLoadOwnCertificate");
                }
                var ownCert = _mimMsgHelper.LoadOwnCertificate(_logger);
                if (logLoadOwnCertificate)
                {
                    _logger.Info("Posle LoadOwnCertificate " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLoadOwnCertificate");
                }

                var logGetPrivateKey = AppSettings.Get <bool>("LogGetPrivateKey");
                if (logGetPrivateKey)
                {
                    _logger.Info("Pred GetPrivateKey " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeGetPrivateKey");
                }
                var privateKey = _mimMsgHelper.GetPrivateKey(ownCert.PrivateKey);
                if (logGetPrivateKey)
                {
                    _logger.Info("Posle GetPrivateKey " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterGetPrivateKey");
                }
                var publicKey = mimMsg.Header.MimHeader.PublicKey;

                var logValidateSignature = AppSettings.Get <bool>("LogValidateSignature");
                if (logValidateSignature)
                {
                    _logger.Info("Pred ValidateSignature " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeValidateSignature");
                }
                if (_soapRequestHelper.ValidateSignature(soapBody, publicKey, _logger))
                {
                    if (logValidateSignature)
                    {
                        _logger.Info("Posle ValidateSignature " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                     "AfterValidateSignature");
                    }
                    var logValidateXml = AppSettings.Get <bool>("LogValidateXml");
                    if (logValidateXml)
                    {
                        _logger.Info("Pred ValidateXml " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                     "BeforeValidateXml");
                    }
                    _validXmlMsgHelper.ValidateXml(soapBody);
                    if (logValidateXml)
                    {
                        _logger.Info("Posle ValidateXml " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                     "AfterValidateXml");
                    }
                }

                var symmetricKey = mimMsg.Header.CryptoHeader.Key;
                var iVector      = mimMsg.Header.CryptoHeader.InitializationVector;

                var logEncryption = AppSettings.Get <bool>("LogEncryption");
                if (logEncryption)
                {
                    _logger.Info(
                        "Pred da go dekriptira body koe kje se prati vo requestot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "BeforeDecryptRequest");
                }
                var decryptBody =
                    _mimMsgHelper.DecryptSoapBody(Convert.FromBase64String(mimMsg.Body.MimBody.Message.ToString()),
                                                  Convert.FromBase64String(symmetricKey), Convert.FromBase64String(iVector), privateKey);
                if (logEncryption)
                {
                    _logger.Info(
                        "Otkako kje go dekriptira body koe kje se prati vo requestot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "AfterDecryptRequest");
                }

                #region Log DecryptBody

                if (AppSettings.Get <bool>("LogDecryptBody"))
                {
                    _logger.Info("Decripting MIM message: " + decryptBody);
                }

                #endregion

                #region KIBS after DecryptSoapBody

                try
                {
                    KIBSResponse resultkibs = null;
                    if (mimMsg.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibs = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                var logKibsTimestamp = AppSettings.Get <bool>("LogKIBS");
                                if (logKibsTimestamp)
                                {
                                    _logger.Info("Se koristi testen KIBS.");
                                }
                                var requestBeforeKibs = DateTime.Now;
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPredRequest");
                                }
                                resultkibs = KIBS.KIBS.GenerateTimeStamp(soapBody);
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPosleRequest");
                                    var totalMinRequestKibs     = (int)(DateTime.Now - requestBeforeKibs).TotalMinutes;
                                    var totalSecRequestKibs     = (int)(DateTime.Now - requestBeforeKibs).TotalSeconds;
                                    var totalMilisecRequestKibs =
                                        (int)(DateTime.Now - requestBeforeKibs).TotalMilliseconds;
                                    _logger.Info(
                                        "Kibs ni vratil odgovor za " + totalMinRequestKibs + " min " +
                                        totalSecRequestKibs + " sec " + totalMilisecRequestKibs + " miliseconds",
                                        "RequestKIBS");
                                }
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibs = KIBS.KIBS.GenerateTimeStampProduction(soapBody);
                            }
                        }

                        //resultkibs = new KIBSResponse
                        //{
                        //    Hash = "InteropTestCommunicationCallHash",
                        //    TimeStamp = DateTime.Now
                        //};
                    }

                    try
                    {
                        if (resultkibs != null)
                        {
                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //_messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.TimeStamp,
                            //    resultkibs.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);
                            var logUpdateMessageLog = AppSettings.Get <bool>("LogUpdateMessageLog");
                            if (logUpdateMessageLog)
                            {
                                _logger.Info(
                                    "Pred UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "BeforeUpdateMessageLogRequest");
                            }
                            _messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.Hash,
                                                                    string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);
                            if (logUpdateMessageLog)
                            {
                                _logger.Info(
                                    "Posle UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "AfterUpdateMessageLogRequest");
                            }
                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //mimMsg.Header.MimHeader.TimeStamp = resultkibs.TimeStamp; //.ToString();

                            mimMsg.Header.MimHeader.TimeStamp = DateTime.Now;
                            mimMsg.Header.MimAdditionalHeader.TimeStampToken = resultkibs.Hash;
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Error("Error while updating mim message: ", exception.Message);
                        throw new Exception("Грешка при UpdateMessageLog!");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error posle DecryptSoapBody: " + ex.Message);
                    throw new Exception("KIBS врати грешка!");
                }

                #endregion

                //_logger.Info("posle LogMimMessage");

                var logGetServiceUrl = AppSettings.Get <bool>("LogGetServiceUrl");
                if (logGetServiceUrl)
                {
                    _logger.Info("Pred GetServiceUrl " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeGetServiceUrl");
                }
                var urlToHostedApp = _requestHelper.GetServiceUrl(mimMsg.Header.MimHeader);
                if (logGetServiceUrl)
                {
                    _logger.Info("Posle GetServiceUrl " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterGetServiceUrl");
                }

                //_logger.Info("urlToHostedApp mimheader e: " + mimMsg.Header.MimHeader);
                _logger.Info("urlToHostedApp e: " + urlToHostedApp);

                #region ExecuteRequestToInstitution

                ResponseInteropCommunication responseEndPointInstitution;

                string decryptedRequestBodyWrappedInSoapEnvelope =
                    "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Body>" + decryptBody +
                    "</s:Body></s:Envelope>";

                if (mimMsg.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                {
                    responseEndPointInstitution = new ResponseInteropCommunication
                    {
                        Response =
                            @"<s:Envelope xmlns:s=""http://www.w3.org/2003/05/soap-envelope""><s:Body><InteropTestCommunicationService xmlns=""http://tempuri.org/"">InteropTestCommunicationCallResponse</InteropTestCommunicationService></s:Body></s:Envelope>",
                        MimeType = "InteropTestCommunicationCallMimeType"
                    };
                }
                else
                {
                    try
                    {
                        _logger.Info("Povikot koj se prakja e: " + decryptedRequestBodyWrappedInSoapEnvelope);
                        System.Net.ServicePointManager.ServerCertificateValidationCallback =
                            ((sender, certificate, chain, sslPolicyErrors) => true);
                        //sertifikatot ne im e u red za toa go stavam ova za da go ignorira
                        var timeBeforeCallInstitution = DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt");
                        //ovaa linija da se proveri za custom interop fault greski, od tuka pa natamu da se proveruva povikot
                        responseEndPointInstitution =
                            _soapRequestHelper.Execute(decryptedRequestBodyWrappedInSoapEnvelope, contentType,
                                                       urlToHostedApp, _logger);
                        //_logger.Info(
                        //    "decryptedRequestBodyWrappedInSoapEnvelope" + decryptedRequestBodyWrappedInSoapEnvelope +
                        //    "contentType" + contentType + "urltToApp" + urlToHostedApp, "Test");
                        _logger.Info(
                            "Calling institution  in " + timeBeforeCallInstitution + " , receiving response in " +
                            DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"), "InsitutionTotalResponse");

                        //ovie dva loga ne gi pravi bidejki direktno odi na exception!
                        //_logger.Info("Response institution is: " + responseEndPointInstitution.Response, "InstitutionReturnedLength");
                        // _logger.Info("Response institution bez envelope is: " + _requestHelper.GetOnlySoapBodyFromString(responseEndPointInstitution.Response));
                    }
                    //tuka probaj stavi catch (FaultException e) da vidish shto kje vrati
                    catch (FaultException ex)
                    {
                        //_logger.Info("dosol vo fault exception.");
                        //_logger.Error("Error koj se vrakja od fault exception e: ", ex);
                        _logger.Error("Error koj se vrakja od fault exception Message e: ", ex.Message);
                        //_logger.Error("Error koj se vrakja od fault exception inner exception e: ", ex.InnerException.Message);
                        throw new FaultException(ex.Message);
                    }


                    //MARIJA
                    //DODADENO za da se fati Web exception od povikot do adapterot vo slucaj koga toj e nedostapen
                    //INICIJALNO ova BESE ZAKOMENTIRANO
                    //catch (Exception e)
                    //{
                    //    _logger.Info("catch exception e: " + e.Message, "WebErrorVoPovikotDoAdapterot");
                    //    //throw new Exception("Сервисот кој го повикавте врати грешка!", e);
                    //    throw new FaultException(e.Message);
                    //}
                }

                #endregion

                #region Create MIM Message

                var logCreateMimResponseMsg = AppSettings.Get <bool>("LogCreateMimResponseMsg");
                if (logCreateMimResponseMsg)
                {
                    _logger.Info("Pred CreateMimResponseMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimResponseMsg");
                }
                var mimMsgResponse = _mimMsgHelper.CreateMimResponseMsg(mimMsg, responseEndPointInstitution.MimeType);
                if (logCreateMimResponseMsg)
                {
                    _logger.Info("Posle CreateMimResponseMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterCreateMimResponseMsg");
                }

                #region Log MIM Message

                //_logger.Info("Pred LogMimMessage.");
                var logMimMessageResponse = AppSettings.Get <bool>("LogMimMessageResponse");
                if (logMimMessageResponse)
                {
                    _logger.Info("Pred LogMimMessageResponse " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeLogMimMessageResponse");
                }
                _mimMsgHelper.LogMimMessage(mimMsgResponse, _logger);
                if (logMimMessageResponse)
                {
                    _logger.Info("Posle LogMimMessageResponse " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterLogMimMessageResponse");
                }
                //_logger.Info("Posle LogMimMessage.");

                #endregion

                //_logger.Info("Pred responseWithoutSoapEnvelope.");
                var logGetOnlySoapBodyFromString = AppSettings.Get <bool>("LogGetOnlySoapBodyFromString");
                if (logGetOnlySoapBodyFromString)
                {
                    _logger.Info(
                        "Pred GetOnlySoapBodyFromString " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                        "BeforeGetOnlySoapBodyFromString");
                }
                string responseWithoutSoapEnvelope =
                    _requestHelper.GetOnlySoapBodyFromString(responseEndPointInstitution.Response);
                if (logGetOnlySoapBodyFromString)
                {
                    _logger.Info(
                        "Posle GetOnlySoapBodyFromString " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                        "AfterGetOnlySoapBodyFromString");
                }
                //_logger.Info("Posle responseWithoutSoapEnvelope.");

                var logGetPublicKeyFromString = AppSettings.Get <bool>("LogGetPublicKeyFromString");
                if (logGetPublicKeyFromString)
                {
                    _logger.Info("Pred GetPublicKeyFromString " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeGetPublicKeyFromString");
                }
                var publicKeyRsa = _mimMsgHelper.GetPublicKeyFromString(publicKey);
                if (logGetPublicKeyFromString)
                {
                    _logger.Info("Posle GetPublicKeyFromString " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterGetPublicKeyFromString");
                }
                if (logEncryption)
                {
                    _logger.Info(
                        "Pred da go enkriptira body koe kje se prati vo responsot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                        "BeforeEncryptResponse");
                }
                var encryptedBlock = _mimMsgHelper.EncryptSoapBody(responseWithoutSoapEnvelope, publicKeyRsa);
                if (logEncryption)
                {
                    _logger.Info(
                        "Otkako kje go enkriptira body koe kje se prati vo responsot " +
                        DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                        "AfterEncryptResponse");
                }

                var encryptedSoapBody   = Convert.ToBase64String(encryptedBlock.EncryptedData);
                var encryptedSessionKey = Convert.ToBase64String(encryptedBlock.EncryptedSessionKey);
                var encriptedIVector    = Convert.ToBase64String(encryptedBlock.Iv);

                mimMsgResponse.Body.MimBody.Message = encryptedSoapBody;
                mimMsgResponse.Header.CryptoHeader.InitializationVector = encriptedIVector;
                mimMsgResponse.Header.CryptoHeader.Key = encryptedSessionKey;

                var logCreateMimXmlMsg = AppSettings.Get <bool>("LogCreateMimXmlMsg");
                if (logCreateMimXmlMsg)
                {
                    _logger.Info("Pred CreateMimXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimXmlMsg");
                }
                var doc = _mimMsgHelper.CreateMimXmlMsg(mimMsgResponse);
                if (logCreateMimXmlMsg)
                {
                    _logger.Info("Posle CreateMimXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterCreateMimXmlMsg");
                }

                #region KIBS after CreateMimXmlMsg

                try
                {
                    KIBSResponse resultkibsResp = null;
                    if (mimMsgResponse.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibsResp = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                var logKibsTimestamp = AppSettings.Get <bool>("LogKIBS");
                                if (logKibsTimestamp)
                                {
                                    _logger.Info("Se koristi testen KIBS.");
                                }
                                var responseBeforeKibs = DateTime.Now;
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPredResponse");
                                }
                                resultkibsResp = KIBS.KIBS.GenerateTimeStamp(doc.ToString());
                                if (logKibsTimestamp)
                                {
                                    _logger.Info(
                                        "Pred request ." + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                        "KIBSPosleResponse");
                                    var totalMinRequestKibs     = (int)(DateTime.Now - responseBeforeKibs).TotalMinutes;
                                    var totalSecRequestKibs     = (int)(DateTime.Now - responseBeforeKibs).TotalSeconds;
                                    var totalMilisecRequestKibs =
                                        (int)(DateTime.Now - responseBeforeKibs).TotalMilliseconds;
                                    _logger.Info(
                                        "Kibs ni vratil odgovor za " + totalMinRequestKibs + " min " +
                                        totalSecRequestKibs + " sec " + totalMilisecRequestKibs + " miliseconds",
                                        "ResponseKIBS");
                                }
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibsResp = KIBS.KIBS.GenerateTimeStampProduction(doc.ToString());
                            }
                        }

                        //resultkibsResp = new KIBSResponse
                        //{
                        //    Hash = "InteropTestCommunicationCallHash",
                        //    TimeStamp = DateTime.Now
                        //};
                    }

                    try
                    {
                        if (resultkibsResp != null)
                        {
                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //_messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir, resultkibsResp.TimeStamp, resultkibsResp.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);
                            var logUpdateMessageLogResponse = AppSettings.Get <bool>("LogUpdateMessageLogResponse");
                            if (logUpdateMessageLogResponse)
                            {
                                _logger.Info(
                                    "Pred UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "BeforeUpdateMessageLogResponse");
                            }
                            _messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir,
                                                                    resultkibsResp.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);
                            if (logUpdateMessageLogResponse)
                            {
                                _logger.Info(
                                    "Posle UpdateMessageLog " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                    "AfterUpdateMessageLogResponse");
                            }

                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp
                            //mimMsgResponse.Header.MimHeader.TimeStamp = resultkibsResp.TimeStamp;//.ToString();

                            mimMsgResponse.Header.MimHeader.TimeStamp = DateTime.Now;
                            mimMsgResponse.Header.MimAdditionalHeader.TimeStampToken = resultkibsResp.Hash;
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Info("KIBS error: " + exception.Message);
                        throw new Exception("KIBS врати грешка: " + exception.Message);
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error after CreateMimXmlMsg: " + ex.Message);
                    throw new Exception("KIBS врати грешка: " + ex.Message);
                }

                #endregion

                var logCreateMimSignedXmlMsg = AppSettings.Get <bool>("LogCreateMimSignedXmlMsg");
                if (logCreateMimSignedXmlMsg)
                {
                    _logger.Info("Pred CreateMimSignedXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "BeforeCreateMimSignedXmlMsg");
                }
                var mimMsgResponseXml = _mimMsgHelper.CreateMimSignedXmlMsg(mimMsgResponse, ownCert, _logger);
                //Check for need of encryption
                if (logCreateMimSignedXmlMsg)
                {
                    _logger.Info("Posle CreateMimSignedXmlMsg " + DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss.fff tt"),
                                 "AfterCreateMimSignedXmlMsg");
                }

                #endregion

                #region Log SOAP Response Message

                if (logSoap)
                {
                    //LogHelper.WriteInNLoc("", "", mimMsgResponseXml, "Response_" + DateTime.Now, "Info");
                    _logger.Info(mimMsgResponseXml, "ResponseSignedXml");
                }

                #endregion

                HttpContext.Current.Response.ContentType = "application/soap+xml";
                context.Response.Write(mimMsgResponseXml);
                _logger.Info("Zavsilo se na Internal handler vo " + DateTime.Now + " casot.", "EndedOnInternalHandler");
            }
            catch (FaultException ex)
            {
                //_logger.Info("dosol vo fault exception.");
                _logger.Error("Error koj se vrakja od fault exception e: ", ex, "CatchFaultException");
                //_logger.Info("validTID vo glavniot catch e: " + validTId);
                if (validTId)
                {
                    var soapFault   = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value", "Details - MaxTime value", ex.Message);
                    var soapFaultDb = _soapRequestHelper.CreateSoapFaultDB(transactionId,
                                                                           soapFault.Body.Fault.Code.value, soapFault.Body.Fault.Code.Subcode.value,
                                                                           soapFault.Body.Fault.Detail.maxTime, soapFault.Body.Fault.Reason.Text.value);

                    try
                    {
                        _soapFaultRepo.InsertSoapFault(soapFaultDb);
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(exception, "Nastanata greska pri kreiranje na soap fault vo baza.");
                    }

                    var soapFaultXml = _mimMsgHelper.CreateFaultMessage(soapFault);
                    _logger.Info(soapFaultXml.InnerXml, "SoapFaultXml");
                    _logger.Error(soapFault.Body.Fault.Reason.Text.value, ex, "ErrorOnResponseInternalHandler");

                    HttpContext.Current.Response.ContentType = "application/soap+xml";
                    HttpContext.Current.Response.Write(soapFaultXml.InnerXml);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("odma u catch", ex);
                _logger.Info("validTID vo glavniot catch e: " + validTId);
                if (validTId)
                {
                    var soapFault = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value",
                                                                  "Details - MaxTime value", ex.Message);
                    var soapFaultDb = _soapRequestHelper.CreateSoapFaultDB(transactionId,
                                                                           soapFault.Body.Fault.Code.value, soapFault.Body.Fault.Code.Subcode.value,
                                                                           soapFault.Body.Fault.Detail.maxTime, soapFault.Body.Fault.Reason.Text.value);

                    try
                    {
                        _soapFaultRepo.InsertSoapFault(soapFaultDb);
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(exception, "Nastanata greska pri kreiranje na soap fault vo baza.");
                    }

                    var soapFaultXml = _mimMsgHelper.CreateFaultMessage(soapFault);
                    _logger.Error(soapFault.Body.Fault.Reason.Text.value, ex, "Error on response");

                    HttpContext.Current.Response.ContentType = "application/soap+xml";
                    HttpContext.Current.Response.Write(soapFaultXml.InnerXml);
                }
            }
        }
コード例 #4
0
        // Опис: Метод кој овозможува процесирање на НТТР Web повици
        // Влезни параметри: HttpContext context
        // Излезни параметри: /
        public void ProcessRequest(HttpContext context)
        {
            var validTId      = false;
            var transactionId = new Guid();

            try
            {
                var soapBody    = _requestHelper.GetSoapBody(context.Request.InputStream);
                var contentType = context.Request.ContentType;
                var soapHeader  = _requestHelper.GetSoapHeader(context.Request.Headers);

                #region Log SOAP Request Message

                var logSoap = AppSettings.Get <bool>("LogSoap");
                if (logSoap)
                {
                    _logger.Info(soapBody + Environment.NewLine + "ContentType: " + contentType + Environment.NewLine + "SoapHeader: " + soapHeader, "Request to Internal handler");
                }
                //soapBody = File.ReadAllText(@"C:\NSRequest.txt"); ;
                #endregion

                if (string.IsNullOrEmpty(soapBody))
                {
                    context.Response.StatusCode = 400;
                    context.Response.End();
                }

                var mimMsg = _soapRequestHelper.UnwrapMimMessage(soapBody);
                validTId      = true;
                transactionId = new Guid(mimMsg.Header.MimHeader.TransactionId);

                #region Log MIM Message
                _mimMsgHelper.LogMimMessage(mimMsg, _logger);
                #endregion

                var ownCert    = _mimMsgHelper.LoadOwnCertificate(_logger);
                var privateKey = _mimMsgHelper.GetPrivateKey(ownCert.PrivateKey);
                var publicKey  = mimMsg.Header.MimHeader.PublicKey;
                if (_soapRequestHelper.ValidateSignature(soapBody, publicKey, _logger))
                {
                    _validXmlMsgHelper.ValidateXml(soapBody);
                }
                var symmetricKey = mimMsg.Header.CryptoHeader.Key;
                var iVector      = mimMsg.Header.CryptoHeader.InitializationVector;

                var decryptBody = _mimMsgHelper.DecryptSoapBody(Convert.FromBase64String(mimMsg.Body.MimBody.Message.ToString()), Convert.FromBase64String(symmetricKey), Convert.FromBase64String(iVector), privateKey);

                #region Log DecryptBody
                if (AppSettings.Get <bool>("LogDecryptBody"))
                {
                    _logger.Info("Decripting MIM message: " + decryptBody);
                }
                #endregion

                #region KIBS after DecryptSoapBody

                try
                {
                    KIBSResponse resultkibs = null;
                    if (mimMsg.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibs = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                _logger.Info("Se koristi testen KIBS.");
                                resultkibs = KIBS.KIBS.GenerateTimeStamp(soapBody);
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibs = KIBS.KIBS.GenerateTimeStampProduction(soapBody);
                            }
                        }

                        //resultkibs = new KIBSResponse
                        //{
                        //    Hash = "InteropTestCommunicationCallHash",
                        //    TimeStamp = DateTime.Now
                        //};
                    }

                    try
                    {
                        if (resultkibs != null)
                        {
                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //_messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.TimeStamp,
                            //    resultkibs.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);

                            _messageLogsRepository.UpdateMessageLog(mimMsg.Header.MimHeader.Dir, resultkibs.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);

                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //mimMsg.Header.MimHeader.TimeStamp = resultkibs.TimeStamp; //.ToString();

                            mimMsg.Header.MimHeader.TimeStamp = DateTime.Now;
                            mimMsg.Header.MimAdditionalHeader.TimeStampToken = resultkibs.Hash;
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Error("Error while updating mim message: ", exception);
                        throw new Exception("Неуспешна комуникација со KIBS!");
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error posle DecryptSoapBody: " + ex.Message);
                    throw new Exception("KIBS врати грешка!");
                }
                #endregion

                _logger.Info("posle LogMimMessage");

                var urlToHostedApp = _requestHelper.GetServiceUrl(mimMsg.Header.MimHeader);

                _logger.Info("urlToHostedApp mimheader e: " + mimMsg.Header.MimHeader);
                _logger.Info("urlToHostedApp e: " + urlToHostedApp);

                #region ExecuteRequestToInstitution

                ResponseInteropCommunication responseEndPointInstitution;

                string decryptedRequestBodyWrappedInSoapEnvelope = "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Body>" + decryptBody + "</s:Body></s:Envelope>";

                if (mimMsg.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                {
                    responseEndPointInstitution = new ResponseInteropCommunication
                    {
                        Response = @"<s:Envelope xmlns:s=""http://www.w3.org/2003/05/soap-envelope""><s:Body><InteropTestCommunicationService xmlns=""http://tempuri.org/"">InteropTestCommunicationCallResponse</InteropTestCommunicationService></s:Body></s:Envelope>",
                        MimeType = "InteropTestCommunicationCallMimeType"
                    };
                }
                else
                {
                    try
                    {
                        _logger.Info("Povikot koj se prakja e: " + decryptedRequestBodyWrappedInSoapEnvelope);
                        System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);//sertifikatot ne im e u red za toa go stavam ova za da go ignorira
                        //ovaa linija da se proveri za custom interop fault greski, od tuka pa natamu da se proveruva povikot
                        responseEndPointInstitution = _soapRequestHelper.Execute(decryptedRequestBodyWrappedInSoapEnvelope, contentType, urlToHostedApp, _logger);
                        //ovie dva loga ne gi pravi bidejki direktno odi na exception!
                        _logger.Info("Response institution is: " + responseEndPointInstitution.Response);
                        _logger.Info("Response institution bez envelope is: " + _requestHelper.GetOnlySoapBodyFromString(responseEndPointInstitution.Response));
                    }
                    //tuka probaj stavi catch (FaultException e) da vidish shto kje vrati
                    catch (FaultException ex)
                    {
                        _logger.Info("dosol vo fault exception.");
                        _logger.Error("Error koj se vrakja od fault exception e: ", ex);
                        _logger.Error("Error koj se vrakja od fault exception Message e: ", ex.Message);
                        _logger.Error("Error koj se vrakja od fault exception inner exception e: ", ex.InnerException.Message);
                        throw;
                    }
                    catch (Exception e)
                    {
                        _logger.Info("catch exception e: " + e.Message);
                        throw new Exception("Сервисот кој го повикавте врати грешка!");
                    }
                }
                #endregion

                #region Create MIM Message

                var mimMsgResponse = _mimMsgHelper.CreateMimResponseMsg(mimMsg, responseEndPointInstitution.MimeType);

                #region Log MIM Message
                _mimMsgHelper.LogMimMessage(mimMsgResponse, _logger);
                #endregion

                string responseWithoutSoapEnvelope = _requestHelper.GetOnlySoapBodyFromString(responseEndPointInstitution.Response);

                var publicKeyRsa   = _mimMsgHelper.GetPublicKeyFromString(publicKey);
                var encryptedBlock = _mimMsgHelper.EncryptSoapBody(responseWithoutSoapEnvelope, publicKeyRsa);

                var encryptedSoapBody   = Convert.ToBase64String(encryptedBlock.EncryptedData);
                var encryptedSessionKey = Convert.ToBase64String(encryptedBlock.EncryptedSessionKey);
                var encriptedIVector    = Convert.ToBase64String(encryptedBlock.Iv);

                mimMsgResponse.Body.MimBody.Message = encryptedSoapBody;
                mimMsgResponse.Header.CryptoHeader.InitializationVector = encriptedIVector;
                mimMsgResponse.Header.CryptoHeader.Key = encryptedSessionKey;

                var doc = _mimMsgHelper.CreateMimXmlMsg(mimMsgResponse);

                #region KIBS after CreateMimXmlMsg

                try
                {
                    KIBSResponse resultkibsResp = null;
                    if (mimMsgResponse.Header.MimAdditionalHeader.IsInteropTestCommunicationCall)
                    {
                        resultkibsResp = new KIBSResponse
                        {
                            Hash = "InteropTestCommunicationCallHash"
                        };
                    }
                    else
                    {
                        if (AppSettings.Get <string>("KIBSEnviroment") != null)
                        {
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Test")
                            {
                                _logger.Info("Se koristi testen KIBS.");
                                resultkibsResp = KIBS.KIBS.GenerateTimeStamp(doc.ToString());
                            }
                            if (AppSettings.Get <string>("KIBSEnviroment") == "Production")
                            {
                                _logger.Info("Se koristi produkciski KIBS.");
                                resultkibsResp = KIBS.KIBS.GenerateTimeStampProduction(doc.ToString());
                            }
                        }

                        //resultkibsResp = new KIBSResponse
                        //{
                        //    Hash = "InteropTestCommunicationCallHash",
                        //    TimeStamp = DateTime.Now
                        //};
                    }

                    try
                    {
                        if (resultkibsResp != null)
                        {
                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp

                            //_messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir, resultkibsResp.TimeStamp, resultkibsResp.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);

                            _messageLogsRepository.UpdateMessageLog(mimMsgResponse.Header.MimHeader.Dir, resultkibsResp.Hash, string.Empty, string.Empty, mimMsg.Header.MimHeader.TransactionId);

                            //Prethodno se zemashe vrednosta Timestamp od servisot na KIBS, i istata se zapisuvase vo baza
                            //Sega se zapishuva DateTime.Now vo poleto Timestamp
                            //mimMsgResponse.Header.MimHeader.TimeStamp = resultkibsResp.TimeStamp;//.ToString();

                            mimMsgResponse.Header.MimHeader.TimeStamp = DateTime.Now;
                            mimMsgResponse.Header.MimAdditionalHeader.TimeStampToken = resultkibsResp.Hash;
                        }
                    }
                    catch (Exception exception)
                    {
                        _logger.Info("KIBS error: " + exception.Message);
                        throw new Exception("KIBS врати грешка: " + exception.Message);
                    }
                }
                catch (Exception ex)
                {
                    _logger.Info("KIBS error after CreateMimXmlMsg: " + ex.Message);
                    throw new Exception("KIBS врати грешка: " + ex.Message);
                }
                #endregion

                var mimMsgResponseXml = _mimMsgHelper.CreateMimSignedXmlMsg(mimMsgResponse, ownCert, _logger); //Check for need of encryption

                #endregion

                #region Log SOAP Response Message

                if (logSoap)
                {
                    //LogHelper.WriteInNLoc("", "", mimMsgResponseXml, "Response_" + DateTime.Now, "Info");
                    _logger.Info(mimMsgResponseXml, "Response");
                }

                #endregion

                HttpContext.Current.Response.ContentType = "application/soap+xml";
                context.Response.Write(mimMsgResponseXml);
            }
            catch (FaultException ex)
            {
                _logger.Info("dosol vo fault exception.");
                _logger.Error("Error koj se vrakja od fault exception e: ", ex);
                _logger.Info("validTID vo glavniot catch e: " + validTId);
                if (validTId)
                {
                    var soapFault = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value",
                                                                  "Details - MaxTime value", ex.Message);
                    var soapFaultDB = _soapRequestHelper.CreateSoapFaultDB(transactionId,
                                                                           soapFault.Body.Fault.Code.value, soapFault.Body.Fault.Code.Subcode.value,
                                                                           soapFault.Body.Fault.Detail.maxTime, soapFault.Body.Fault.Reason.Text.value);

                    try
                    {
                        _soapFaultRepo.InsertSoapFault(soapFaultDB);
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(exception, "Nastanata greska pri kreiranje na soap fault vo baza.");
                    }

                    var soapFaultXml = _mimMsgHelper.CreateFaultMessage(soapFault);
                    _logger.Error(soapFault.Body.Fault.Reason.Text.value, ex, "Error on response");

                    HttpContext.Current.Response.ContentType = "application/soap+xml";
                    HttpContext.Current.Response.Write(soapFaultXml.InnerXml);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("odma u catch", ex);
                _logger.Info("validTID vo glavniot catch e: " + validTId);
                if (validTId)
                {
                    var soapFault = _mimMsgHelper.CreateSoapFault("Code value", "Code - SubCode value",
                                                                  "Details - MaxTime value", ex.Message);
                    var soapFaultDb = _soapRequestHelper.CreateSoapFaultDB(transactionId,
                                                                           soapFault.Body.Fault.Code.value, soapFault.Body.Fault.Code.Subcode.value,
                                                                           soapFault.Body.Fault.Detail.maxTime, soapFault.Body.Fault.Reason.Text.value);

                    try
                    {
                        _soapFaultRepo.InsertSoapFault(soapFaultDb);
                    }
                    catch (Exception exception)
                    {
                        _logger.Error(exception, "Nastanata greska pri kreiranje na soap fault vo baza.");
                    }

                    var soapFaultXml = _mimMsgHelper.CreateFaultMessage(soapFault);
                    _logger.Error(soapFault.Body.Fault.Reason.Text.value, ex, "Error on response");

                    HttpContext.Current.Response.ContentType = "application/soap+xml";
                    HttpContext.Current.Response.Write(soapFaultXml.InnerXml);
                }
            }
        }