sepafm 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -30
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +15 -0
  5. data/Gemfile +1 -1
  6. data/LICENSE +16 -4
  7. data/README.md +180 -319
  8. data/Rakefile +7 -2
  9. data/lib/sepa/application_request.rb +100 -131
  10. data/lib/sepa/application_response.rb +28 -84
  11. data/lib/sepa/attribute_checks.rb +169 -0
  12. data/lib/sepa/banks/danske/danske_response.rb +19 -0
  13. data/lib/sepa/banks/danske/soap_danske.rb +132 -0
  14. data/lib/sepa/banks/nordea/nordea_response.rb +20 -0
  15. data/lib/sepa/banks/nordea/soap_nordea.rb +51 -0
  16. data/lib/sepa/client.rb +72 -60
  17. data/lib/sepa/error_messages.rb +15 -0
  18. data/lib/sepa/response.rb +88 -85
  19. data/lib/sepa/soap_builder.rb +51 -341
  20. data/lib/sepa/utilities.rb +132 -0
  21. data/lib/sepa/version.rb +1 -1
  22. data/lib/sepa/xml_schemas/PKIFactory.xsd +334 -0
  23. data/lib/sepa/xml_schemas/xml_id.xsd +9 -0
  24. data/lib/sepa/xml_templates/application_request/create_certificate.xml +15 -10
  25. data/lib/sepa/xml_templates/application_request/danske_get_bank_certificate.xml +13 -9
  26. data/lib/sepa/xml_templates/application_request/download_file.xml +32 -30
  27. data/lib/sepa/xml_templates/application_request/download_file_list.xml +29 -27
  28. data/lib/sepa/xml_templates/application_request/encrypted_request.xml +22 -0
  29. data/lib/sepa/xml_templates/application_request/get_certificate.xml +9 -8
  30. data/lib/sepa/xml_templates/application_request/get_user_info.xml +26 -24
  31. data/lib/sepa/xml_templates/application_request/upload_file.xml +29 -27
  32. data/lib/sepa/xml_templates/soap/create_certificate.xml +17 -15
  33. data/lib/sepa/xml_templates/soap/danske_get_bank_certificate.xml +15 -13
  34. data/lib/sepa/xml_templates/soap/download_file.xml +19 -15
  35. data/lib/sepa/xml_templates/soap/download_file_list.xml +19 -15
  36. data/lib/sepa/xml_templates/soap/get_certificate.xml +2 -1
  37. data/lib/sepa/xml_templates/soap/get_user_info.xml +19 -15
  38. data/lib/sepa/xml_templates/soap/header.xml +48 -37
  39. data/lib/sepa/xml_templates/soap/upload_file.xml +19 -15
  40. data/lib/sepafm.rb +20 -18
  41. data/{sepa.gemspec → sepafm.gemspec} +10 -9
  42. data/test/sepa/banks/danske/danske_cert_response_test.rb +52 -0
  43. data/test/sepa/banks/danske/danske_cert_soap_builder_test.rb +100 -0
  44. data/test/sepa/banks/danske/danske_generic_soap_builder_test.rb +278 -0
  45. data/test/sepa/banks/danske/danske_get_bank_cert_test.rb +111 -0
  46. data/{lib/sepa/danske_testing/keys/danske_encryption.crt → test/sepa/banks/danske/keys/bank_encryption_cert.pem} +0 -0
  47. data/test/sepa/{danske_test_keys/danskeroot.pem → banks/danske/keys/bank_root_cert.pem} +1 -1
  48. data/test/sepa/banks/danske/keys/bank_signing_cert.pem +24 -0
  49. data/test/sepa/banks/danske/keys/danske_encryption.crt +24 -0
  50. data/test/sepa/banks/danske/keys/enc_private_key.pem +27 -0
  51. data/test/sepa/{danske_test_keys → banks/danske/keys}/encryption_pkcs.csr +0 -0
  52. data/test/sepa/banks/danske/keys/own_enc_cert.pem +21 -0
  53. data/test/sepa/banks/danske/keys/own_signing_cert.pem +22 -0
  54. data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_key.pem +0 -0
  55. data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_pkcs.csr +0 -0
  56. data/test/sepa/banks/danske/keys/signing_private_key.pem +27 -0
  57. data/test/sepa/banks/danske/responses/create_cert.xml +38 -0
  58. data/test/sepa/banks/danske/responses/get_bank_cert.xml +37 -0
  59. data/{lib/sepa/nordea_testing → test/sepa/banks/nordea}/keys/nordea.crt +0 -4
  60. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/nordea.key +0 -3
  61. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/root_cert.cer +0 -0
  62. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/testcert.csr +0 -0
  63. data/test/sepa/banks/nordea/nordea_application_request_test.rb +252 -0
  64. data/test/sepa/{application_response_test.rb → banks/nordea/nordea_application_response_test.rb} +40 -46
  65. data/test/sepa/banks/nordea/nordea_cert_application_request_test.rb +72 -0
  66. data/test/sepa/banks/nordea/nordea_cert_request_soap_builder_test.rb +65 -0
  67. data/test/sepa/banks/nordea/nordea_generic_soap_builder_test.rb +280 -0
  68. data/test/sepa/banks/nordea/nordea_response_test.rb +116 -0
  69. data/test/sepa/banks/nordea/responses/df_ktl.xml +45 -0
  70. data/test/sepa/{test_files/test_responses/df.xml → banks/nordea/responses/df_tito.xml} +1 -1
  71. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/dfl.xml +0 -0
  72. data/test/sepa/banks/nordea/responses/gbc.xml +15 -0
  73. data/test/sepa/banks/nordea/responses/gc.xml +49 -0
  74. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/gui.xml +0 -0
  75. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/uf.xml +0 -0
  76. data/test/sepa/client_test.rb +156 -302
  77. data/test/sepa/fixtures.rb +214 -0
  78. data/test/sepa/sepa_test.rb +3 -13
  79. data/test/sepa/test_files/{invalid.wsdl → invalid_wsdl.wsdl} +0 -0
  80. data/test/test_helper.rb +29 -3
  81. metadata +140 -116
  82. data/lib/danske_get_bank_certificate_test.rb +0 -15
  83. data/lib/sepa/custom_exceptions.rb +0 -2
  84. data/lib/sepa/filedescriptor.rb +0 -7
  85. data/lib/sepa/filetypeservice.rb +0 -6
  86. data/lib/sepa/nordea_testing/keys/CSR.csr +0 -0
  87. data/lib/sepa/nordea_testing/keys/nordea.key +0 -19
  88. data/lib/sepa/nordea_testing/response/content_053.xml +0 -998
  89. data/lib/sepa/nordea_testing/response/content_054.xml +0 -1
  90. data/lib/sepa/nordea_testing/response/download_file_response.xml +0 -14
  91. data/lib/sepa/nordea_testing/response/download_filelist_response.xml +0 -14
  92. data/lib/sepa/nordea_testing/response/get_user_info_response.xml +0 -14
  93. data/lib/sepa/nordea_testing/response/upload_file_response.xml +0 -14
  94. data/lib/sepa/payload.rb +0 -109
  95. data/lib/sepa/payment.rb +0 -97
  96. data/lib/sepa/sender_verifier.rb +0 -15
  97. data/lib/sepa/signature.rb +0 -7
  98. data/lib/sepa/soap_danske.rb +0 -47
  99. data/lib/sepa/soap_nordea.rb +0 -68
  100. data/lib/sepa/transaction.rb +0 -178
  101. data/lib/sepa/userfiletype.rb +0 -16
  102. data/lib/sepa/xml_parser.rb +0 -291
  103. data/lib/sepa_client_testing_mika.rb +0 -32
  104. data/lib/sepa_client_testing_tiere.rb +0 -257
  105. data/test/sepa/application_request_test.rb +0 -423
  106. data/test/sepa/cert_application_request_test.rb +0 -99
  107. data/test/sepa/nordea_cert_request_soap_builder_test.rb +0 -112
  108. data/test/sepa/nordea_generic_soap_builder_test.rb +0 -427
  109. data/test/sepa/nordea_test_keys/nordea.crt +0 -27
  110. data/test/sepa/payload_test.rb +0 -297
  111. data/test/sepa/payment_test.rb +0 -198
  112. data/test/sepa/response_test.rb +0 -269
  113. data/test/sepa/transaction_test.rb +0 -362
  114. data/test/sepa/user_file_type_test.rb +0 -21
  115. data/test/sepa/xml_parser_test.rb +0 -73
@@ -0,0 +1,278 @@
1
+ require 'test_helper'
2
+
3
+ class DanskeGenericSoapBuilderTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ keys_path = File.expand_path('../keys', __FILE__)
7
+
8
+ private_key_path = "#{keys_path}/signing_private_key.pem"
9
+ private_key = File.read private_key_path
10
+
11
+ signing_cert_path = "#{keys_path}/own_signing_cert.pem"
12
+ signing_cert = File.read signing_cert_path
13
+
14
+ enc_cert_path = "#{keys_path}/own_enc_cert.pem"
15
+ enc_cert = File.read enc_cert_path
16
+
17
+ @nordea_generic_params = {
18
+ bank: :danske,
19
+ private_key: OpenSSL::PKey::RSA.new(private_key),
20
+ command: :upload_file,
21
+ customer_id: '360817',
22
+ environment: 'TEST',
23
+ enc_cert: enc_cert,
24
+ cert: signing_cert,
25
+ language: 'EN',
26
+ status: 'ALL',
27
+ target_id: 'Danske FI',
28
+ file_type: 'pain.001.001.02',
29
+ content: Base64.encode64('kissa'),
30
+ file_reference: "11111111A12006030329501800000014",
31
+ }
32
+
33
+ @soap_request = Sepa::SoapBuilder.new(@nordea_generic_params)
34
+
35
+ @doc = Nokogiri::XML(@soap_request.to_xml)
36
+
37
+ # Namespaces
38
+ @bxd = 'http://model.bxd.fi'
39
+ end
40
+
41
+ def test_should_initialize_request_with_proper_params
42
+ assert Sepa::SoapBuilder.new(@nordea_generic_params).to_xml
43
+ end
44
+
45
+ def test_should_get_error_if_command_missing
46
+ @nordea_generic_params.delete(:command)
47
+
48
+ assert_raises(ArgumentError) do
49
+ Sepa::SoapBuilder.new(@nordea_generic_params)
50
+ end
51
+ end
52
+
53
+ def test_should_load_correct_template_with_download_file_list
54
+ @nordea_generic_params[:command] = :download_file_list
55
+ doc = Nokogiri::XML(Sepa::SoapBuilder.new(@nordea_generic_params).to_xml)
56
+
57
+ assert doc.at('//cor:downloadFileListin', 'cor' => 'http://bxd.fi/CorporateFileService')
58
+ end
59
+
60
+ def test_should_load_correct_template_with_get_user_info
61
+ @nordea_generic_params[:command] = :get_user_info
62
+ doc = Nokogiri::XML(Sepa::SoapBuilder.new(@nordea_generic_params).to_xml)
63
+
64
+ assert doc.at('//cor:getUserInfoin', 'cor' => 'http://bxd.fi/CorporateFileService')
65
+ end
66
+
67
+ def test_should_load_correct_template_with_download_file
68
+ @nordea_generic_params[:command] = :download_file
69
+ doc = Nokogiri::XML(Sepa::SoapBuilder.new(@nordea_generic_params).to_xml)
70
+
71
+ assert doc.at('//cor:downloadFilein', 'cor' => 'http://bxd.fi/CorporateFileService')
72
+ end
73
+
74
+ def test_should_load_correct_template_with_upload_file
75
+ @nordea_generic_params[:command] = :upload_file
76
+ doc = Nokogiri::XML(Sepa::SoapBuilder.new(@nordea_generic_params).to_xml)
77
+
78
+ assert doc.at('//cor:uploadFilein', 'cor' => 'http://bxd.fi/CorporateFileService')
79
+ end
80
+
81
+ def test_should_raise_error_if_unrecognised_command
82
+ @nordea_generic_params[:command] = :wrong_command
83
+
84
+ assert_raises(ArgumentError) do
85
+ soap = Sepa::SoapBuilder.new(@nordea_generic_params)
86
+ end
87
+ end
88
+
89
+ def test_sender_id_is_properly_set
90
+ assert_equal @nordea_generic_params[:customer_id],
91
+ @doc.at("//bxd:SenderId", 'bxd' => 'http://model.bxd.fi').content
92
+ end
93
+
94
+ def test_request_id_is_properly_set
95
+ request_id = @doc.at("RequestId", 'xmlns' => @bxd).content
96
+
97
+ assert request_id =~ /^[0-9A-F]+$/i
98
+ assert_equal request_id.length, 10
99
+ end
100
+
101
+ def test_timestamp_is_set_correctly
102
+ timestamp_node = @doc.at("//bxd:Timestamp", 'bxd' => 'http://model.bxd.fi')
103
+ timestamp = Time.strptime(timestamp_node.content, '%Y-%m-%dT%H:%M:%S%z')
104
+
105
+ assert timestamp <= Time.now && timestamp > (Time.now - 60)
106
+ end
107
+
108
+ def test_language_is_set_correctly
109
+ language_node = @doc.at("//bxd:Language", 'bxd' => 'http://model.bxd.fi')
110
+
111
+ assert_equal language_node.content, @nordea_generic_params[:language]
112
+ end
113
+
114
+ def test_user_agent_is_set_correctly
115
+ user_agent_node = @doc.at("//bxd:UserAgent", 'bxd' => 'http://model.bxd.fi')
116
+
117
+ assert_equal user_agent_node.content, "Sepa Transfer Library version " + Sepa::VERSION
118
+ end
119
+
120
+ def test_receiver_is_is_set_correctly
121
+ receiver_id_node = @doc.at("//bxd:ReceiverId", 'bxd' => 'http://model.bxd.fi')
122
+
123
+ assert_equal receiver_id_node.content, @nordea_generic_params[:target_id]
124
+ end
125
+
126
+ def test_cert_is_added_correctly
127
+ wsse = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
128
+
129
+ added_cert = @doc.at(
130
+ "//wsse:BinarySecurityToken", 'wsse' => wsse
131
+ ).content
132
+
133
+ actual_cert = OpenSSL::X509::Certificate.new(
134
+ @nordea_generic_params.fetch(:cert)
135
+ ).to_s
136
+
137
+ actual_cert = actual_cert.split('-----BEGIN CERTIFICATE-----')[1]
138
+ actual_cert = actual_cert.split('-----END CERTIFICATE-----')[0]
139
+ actual_cert = actual_cert.gsub(/\s+/, "")
140
+
141
+ assert_equal added_cert, actual_cert
142
+ end
143
+
144
+ def test_body_digest_is_calculated_correctly
145
+ sha1 = OpenSSL::Digest::SHA1.new
146
+
147
+ # Digest which is calculated from the body and added to the header
148
+ added_digest = @doc.at(
149
+ "//dsig:Reference[@URI='#sdf6sa7d86f87s6df786sd87f6s8fsda']/dsig:DigestValue",
150
+ 'dsig' => 'http://www.w3.org/2000/09/xmldsig#'
151
+ ).content
152
+
153
+ body_node = @doc.at(
154
+ "//env:Body", 'env' => 'http://schemas.xmlsoap.org/soap/envelope/'
155
+ )
156
+
157
+ body_node = body_node.canonicalize(
158
+ mode = Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0,
159
+ inclusive_namespaces = nil, with_comments = false
160
+ )
161
+
162
+ actual_digest = Base64.encode64(sha1.digest(body_node)).strip
163
+
164
+ assert_equal actual_digest, added_digest
165
+ end
166
+
167
+ def test_header_created_timestamp_is_added_correctly
168
+ wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
169
+
170
+ timestamp_node = @doc.at(
171
+ "//wsu:Created", 'wsu' => wsu
172
+ )
173
+
174
+ timestamp = Time.strptime(timestamp_node.content, '%Y-%m-%dT%H:%M:%S%z')
175
+
176
+ assert timestamp <= Time.now && timestamp > (Time.now - 60)
177
+ end
178
+
179
+ def test_header_expires_timestamp_is_added_correctly
180
+ wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
181
+
182
+ timestamp_node = @doc.at(
183
+ "//wsu:Expires", 'wsu' => wsu
184
+ )
185
+
186
+ timestamp = Time.strptime(timestamp_node.content, '%Y-%m-%dT%H:%M:%S%z')
187
+
188
+ assert timestamp <= (Time.now + 300) &&
189
+ timestamp > ((Time.now + 300) - 60)
190
+ end
191
+
192
+ def test_header_timestamps_digest_is_calculated_correctly
193
+ sha1 = OpenSSL::Digest::SHA1.new
194
+
195
+ added_digest = @doc.at(
196
+ "//dsig:Reference[@URI='#dsfg8sdg87dsf678g6dsg6ds7fg']/dsig:DigestValue",
197
+ 'dsig' => 'http://www.w3.org/2000/09/xmldsig#'
198
+ ).content
199
+
200
+ wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
201
+
202
+ timestamp_node = @doc.at(
203
+ "//wsu:Timestamp", 'wsu' => wsu
204
+ )
205
+
206
+ timestamp_node = timestamp_node.canonicalize(
207
+ mode = Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, inclusive_namespaces = nil,
208
+ with_comments = false
209
+ )
210
+
211
+ actual_digest = Base64.encode64(sha1.digest(timestamp_node)).strip
212
+
213
+ assert_equal actual_digest, added_digest
214
+ end
215
+
216
+ def test_signature_is_calculated_correctly
217
+ sha1 = OpenSSL::Digest::SHA1.new
218
+
219
+ private_key = OpenSSL::PKey::RSA.new(@nordea_generic_params.fetch(:private_key))
220
+
221
+ added_signature = @doc.at(
222
+ "//dsig:SignatureValue",
223
+ 'dsig' => 'http://www.w3.org/2000/09/xmldsig#'
224
+ ).content
225
+
226
+ signed_info_node = @doc.at("//dsig:SignedInfo", 'dsig' => 'http://www.w3.org/2000/09/xmldsig#')
227
+
228
+ signed_info_node = signed_info_node.canonicalize(
229
+ mode = Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0, inclusive_namespaces = nil,
230
+ with_comments = false
231
+ )
232
+
233
+ actual_signature = Base64.encode64(
234
+ private_key.sign(sha1, signed_info_node)
235
+ ).gsub(/\s+/, "")
236
+
237
+ assert_equal actual_signature, added_signature
238
+ end
239
+
240
+ def test_should_validate_against_schema
241
+ Dir.chdir(SCHEMA_PATH) do
242
+ xsd = Nokogiri::XML::Schema(IO.read('soap.xsd'))
243
+ assert xsd.valid?(@doc)
244
+ end
245
+ end
246
+
247
+ def test_schema_validation_should_fail_with_wrong_must_understand_value
248
+ wsse = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
249
+ security_node = @doc.at(
250
+ '//wsse:Security', 'wsse' => wsse
251
+ )
252
+
253
+ security_node['env:mustUnderstand'] = '3'
254
+
255
+ Dir.chdir(SCHEMA_PATH) do
256
+ xsd = Nokogiri::XML::Schema(IO.read('soap.xsd'))
257
+ refute xsd.valid?(@doc)
258
+ end
259
+ end
260
+
261
+ def test_should_validate_against_ws_security_schema
262
+ wsse = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
263
+
264
+ ws_node = @doc.xpath(
265
+ '//wsse:Security', 'wsse' => wsse
266
+ )
267
+
268
+ ws_node = ws_node.to_xml
269
+
270
+ ws_node = Nokogiri::XML(ws_node)
271
+
272
+ Dir.chdir(SCHEMA_PATH) do
273
+ xsd = Nokogiri::XML::Schema IO.read 'oasis-200401-wss-wssecurity-secext-1.0.xsd'
274
+ assert xsd.valid?(ws_node)
275
+ end
276
+ end
277
+
278
+ end
@@ -0,0 +1,111 @@
1
+ require 'test_helper'
2
+
3
+ class DanskeGetBankCertTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ @get_bank_cert_params = {
7
+ bank: :danske,
8
+ command: :get_bank_certificate,
9
+ bank_root_cert_serial: '1111110002',
10
+ customer_id: '360817',
11
+ request_id: SecureRandom.hex(5)
12
+ }
13
+
14
+ @doc = Sepa::SoapBuilder.new(@get_bank_cert_params)
15
+ @doc = Nokogiri::XML(@doc.to_xml)
16
+
17
+ # Namespaces
18
+ @pkif = 'http://danskebank.dk/PKI/PKIFactoryService'
19
+ @elem = 'http://danskebank.dk/PKI/PKIFactoryService/elements'
20
+ end
21
+
22
+ def test_should_initialize_request_with_proper_params
23
+ assert Sepa::SoapBuilder.new(@get_bank_cert_params).to_xml
24
+ end
25
+
26
+ def test_should_get_error_if_command_missing
27
+ @get_bank_cert_params.delete(:command)
28
+
29
+ assert_raises(ArgumentError) do
30
+ Sepa::SoapBuilder.new(@get_bank_cert_params)
31
+ end
32
+ end
33
+
34
+ def test_sender_id_is_properly_set
35
+ assert_equal @get_bank_cert_params[:customer_id],
36
+ @doc.at('SenderId', 'xmlns' => @pkif).content
37
+ end
38
+
39
+ def test_customer_id_is_properly_set
40
+ assert_equal @get_bank_cert_params[:customer_id],
41
+ @doc.at('CustomerId', 'xmlns' => @pkif).content
42
+ end
43
+
44
+ def test_header_request_id_is_properly_set
45
+ request_id = @doc.at("RequestId", 'xmlns' => @pkif).content
46
+
47
+ assert request_id =~ /^[0-9A-F]+$/i
48
+ assert_equal request_id.length, 10
49
+ end
50
+
51
+ def test_header_timestamp_is_set_correctly
52
+ timestamp = @doc.at("Timestamp", 'xmlns' => @pkif).content
53
+ timestamp = Time.strptime(timestamp, '%Y-%m-%dT%H:%M:%S%z')
54
+
55
+ assert timestamp <= Time.now && timestamp > (Time.now - 60)
56
+ end
57
+
58
+ def test_interface_version_is_correctly_set
59
+ version = @doc.at('InterfaceVersion', 'xmlns' => @pkif).content
60
+ assert version.length >= 1 && version.length <= 10
61
+ end
62
+
63
+ def test_bank_root_cert_serial_is_correctly_set
64
+ assert_equal @get_bank_cert_params[:bank_root_cert_serial],
65
+ @doc.at('BankRootCertificateSerialNo', 'xmlns' => @elem).content
66
+ end
67
+
68
+ def test_request_timestamp_is_set_correctly
69
+ timestamp = @doc.at("Timestamp", 'xmlns' => @elem).content
70
+ timestamp = Time.strptime(timestamp, '%Y-%m-%dT%H:%M:%S%z')
71
+
72
+ assert timestamp <= Time.now && timestamp > (Time.now - 60)
73
+ end
74
+
75
+ def test_request_request_id_is_properly_set
76
+ request_id = @doc.at("RequestId", 'xmlns' => @elem).content
77
+
78
+ assert request_id =~ /^[0-9A-F]+$/i
79
+ assert_equal request_id.length, 10
80
+ end
81
+
82
+ def test_should_validate_against_soap_schema
83
+ Dir.chdir(SCHEMA_PATH) do
84
+ xsd = Nokogiri::XML::Schema(IO.read('soap.xsd'))
85
+ assert xsd.valid?(@doc)
86
+ end
87
+ end
88
+
89
+ def test_request_should_validate_against_pki_service_schema
90
+ request = @doc.css('GetBankCertificateRequest', 'xmlns' => @elem).to_xml
91
+ request = Nokogiri::XML(request)
92
+
93
+ Dir.chdir(SCHEMA_PATH) do
94
+ xsd = Nokogiri::XML::Schema(IO.read('PKIFactory.xsd'))
95
+ assert xsd.valid?(request)
96
+ end
97
+ end
98
+
99
+ def test_invalid_bank_root_cert_serial_should_fail_schema_validation
100
+ @doc.at('BankRootCertificateSerialNo', 'xmlns' => @elem).content = '1' * 65
101
+
102
+ request = @doc.css('GetBankCertificateRequest', 'xmlns' => @elem).to_xml
103
+ request = Nokogiri::XML(request)
104
+
105
+ Dir.chdir(SCHEMA_PATH) do
106
+ xsd = Nokogiri::XML::Schema(IO.read('PKIFactory.xsd'))
107
+ refute xsd.valid?(request)
108
+ end
109
+ end
110
+
111
+ end
@@ -22,4 +22,4 @@ asiclsO38cSn2qriJPIrCREPOpRVqrGQRbZQhmDiB198hpAdLp38khJon/gXbR7u
22
22
  9e0rN8MIM4sXn+lFuQIWiPuv+3llGSoLlIxJnjiQQ9FDjhwN5U+N1N2aHaLc5AHu
23
23
  4X/qRutLCy7AYUJZMPBoakPLscYceW2Ztvx4VAyOXgHDdvmz0Bd58XWOs1A9bNMZ
24
24
  FeYAB14D9yQRCkXYLhr6sm8HuyqaIkGChFpNb+Gf8gcPvtw=
25
- -----END CERTIFICATE-----
25
+ -----END CERTIFICATE-----
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEADCCAuigAwIBAgIFAMa3bfMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMT
3
+ B0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYD
4
+ VQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UE
5
+ CxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAe
6
+ Fw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGXMQ8wDQYDVQQDEwZEUFNJ
7
+ R04xCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdE
8
+ ZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFu
9
+ c2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MzkxMDAwMzCCASAwDQYJ
10
+ KoZIhvcNAQEBBQADggENADCCAQgCggEBAL1zYMqPk/6klEpL5wo+vWAo3MmxPz4w
11
+ q9wuLAHpPUhJ4ZpHmncNsdmqSSXT6U4mxTY8tzKvz4ZdTDljp+5J6OxOl1B7av3V
12
+ 7hlHtfGb7wozsBAya2JOoPrLxc+ajapslbduiEvdhW9ZLKvn/n7rQ9sZzHA6GyGK
13
+ Qk8lfvKK+OjMylA86XyxApasFD/0eIDnzUJHth3UpPoQTJAlB7h7d4CKc/QG9tFv
14
+ 900AAi4R/Tmy9TRai7fVCkXz7y4qRXN+M7NIhDGAsCmtM6oSuDqjv3lh10nD7XEL
15
+ TxTvcbpq5xHLt9yknwjiM2ivc4XudDMgC7ESoH6vaJSUcbC17+wa6IUCAQOjUjBQ
16
+ MB8GA1UdIwQYMBaAFIT65b/ekUlm38WKUsOzt7MgHMdtMB0GA1UdDgQWBBQHbPge
17
+ y2TInIKC7xbag8AZG25qnTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQAD
18
+ ggEBAFl3WfGkVElIeUXjQsr8uQFXhkSbrI14F6mRIkUpCTa9Px/UUfw1HQNVn4Ty
19
+ ep30JmfsFN91Yj387jiZDzoeMYeiVI32wyZkao7rC3Z4YhAfUdPdVFZqO1k2gOgo
20
+ Z49nyLKVS+GlyuzeLQVBnFE7f3sbpgDTRzd8o58W5VncHuzmSj/IVe8ZwRQ4bm3c
21
+ HlKTQpRnyz5x7UJjp08fH6KOUal8DVsOaQKoo+jWIsPPir58b/QZsxIRL4uq3qqQ
22
+ t5udrbZqyltRsyxUpgomIN5irCn7Wgr+iYwNLhzXYwxKvwKsNRS7isEAZuyfH9fN
23
+ arBRP4p72g+225NB0itQ73Xo7pg=
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEATCCAumgAwIBAgIFAQjv8bMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMT
3
+ B0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYD
4
+ VQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UE
5
+ CxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAe
6
+ Fw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGYMRAwDgYDVQQDEwdEUENS
7
+ WVBUMQswCQYDVQQGEwJESzETMBEGA1UEBxMKQ29wZW5oYWdlbjEQMA4GA1UECBMH
8
+ RGVubWFyazEaMBgGA1UEChMRRGFuc2tlIEJhbmsgR3JvdXAxGjAYBgNVBAsTEURh
9
+ bnNrZSBCYW5rIEdyb3VwMRgwFgYDVQQFEw82MTEyNjIyODQ5MTAwMDMwggEgMA0G
10
+ CSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQC/kHrOvHOueBsit9drxIHpaD7mXINy
11
+ pXS/l9PbbOZ0lZKVEfW9gtG8xk9XggsPXHJMF/PXpG6mveXvPu9WW/XpryAUqGfv
12
+ YsC7Px3ixaJb2EMOL+2mJYd0v5HKg5RuYkQ82k3K01hMNEGYs0OotjNVAimQcTLt
13
+ VPDGBjK5BUAiwady9LpI6afo7roJWnRmsvSvinDgBqswnfCvUfSfM8cZyhnLLC2u
14
+ j1kBHAD/5xpllmS3aq1M8LqFkBYcCE5PdPmFWhGUumZ/Y5qLjDgcPMAPvUaKLqOs
15
+ h22jvPCZ0pm17eV0bSQzWe5e0zkgCYAepuFRazSlkJQYBdS47Mp68dY5AgEDo1Iw
16
+ UDAfBgNVHSMEGDAWgBSE+uW/3pFJZt/FilLDs7ezIBzHbTAdBgNVHQ4EFgQUP6wH
17
+ VNOmznu212c08M3oeYjeXW4wDgYDVR0PAQH/BAQDAgQwMA0GCSqGSIb3DQEBCwUA
18
+ A4IBAQAvJBfPug+ixGL/zWUnKMweV80atZXMjHJEn4mOE+iUkCNONLImMMt6MXJy
19
+ snJViL1gL5xMrka6A62PLLsVkl79kxDDbzXMPfGt5/mB9L7CMpyzaID0acDii3rs
20
+ ZwT3Wxpnate6wowN4zpmXgpCpTDGbxjuVRiOArsjQblerhfxnD/UAieZ1IWozIAN
21
+ s6SVms/TuOB+bODUr06ITxBkDJhizOJxjsXRIAtwZvvrH4qGjJz5qFcPb3nz4Txw
22
+ swU8X6yvbtqF+q4aAKPA6ZydnGZFQSoSzNJtcF28T1ItxEHN3+xyQqXpTgFviiuL
23
+ 277LaAl9YUFFnSgeh7GiFitWJPfD
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEA50pjfDwVbrgGSno4APCFiARnOEKVBvzy5DD/tBP1UutQC5/2
3
+ K54qeXskN+LF0LDdlgWP0Sp0L/UYcFRqsFiiM2TLHXRHF/fwR2YJA79navIrTqHy
4
+ hyGeuQduWcMO4i/epz19O2XdAcKMUxnbjOrrjb4GNZEG7aopB18z1QbtGoR0Qfc7
5
+ syj4Hg/gaAWNw9e0HxEQDs21OVsLDjr9ssAQzBnlLgJ2nokgnvIWXSHqpbIKq0kN
6
+ 6JozpOKSaV5fpW+DLowHhCl73yunsmvJiH7pqr8TWWoBiNeoeVYtntSRUYioxc1b
7
+ u/ugIuH5jcUc7VTLI0RxKPdWnvk5JHV5V8PozQIDAQABAoIBAQCmtskE+K4eM4ld
8
+ T8Fkc/pcM4hPVjbjZZqSfvshSy2OykzVREUF5akKDYfqvIwHxCTEiVfD1g0PsGQg
9
+ O8j3ObwYvXNm1LSWA0JvxI2E5QdfYBV1RWhynPoytreE/gORaB3egITvNppaNWg+
10
+ Uiod5gtKDQmevN24m+mdBbNvvuFTNX1i4lW5RS3ValzuUveB6rUjZ+IC6glBfXN4
11
+ 31veJq9IGPvp9sifQWg322Ps6cI/A4Itdv7m3QO+XK2G5pv0uGu7w7ILjM0jzBJ0
12
+ y5ZbDNJiFfApiLwH8jBWKoY0+Od32n18sIuzLdmSEJ2CqChRBrhi9unkeO3rJdfV
13
+ 3oJUqv3FAoGBAPYPuPwFyUyHenG2TfjnhplXj3GlMjjaq1GZMmNzlXaZ3Uchzzbz
14
+ 2Owcu4ZXDTvcyhD+E7x/LmUmdWxE/HIfpYSwsCjWPDiIMwAyAiBuBtNevMhkGiRH
15
+ VR9mx2KgWDiIdT3+s2xz1vmkVkxqnhBBgO1L1CIffkb6DtM6Pe2/rDgTAoGBAPCh
16
+ 73ihWrYJ6kecvWAl76knPL5HYQ316unor887wTTV82+M/ulssSEVqYh+qSy+5Ih1
17
+ LuDB1i7n3GxOtMXO/YBqzAqOyIAik6us1urRtvV6ei/dZx1/V6VdTmehIhNyjAEi
18
+ RkzMQvNk2hhd1uNZMdWKfTfZ8nB6+jIAAubPWzefAoGBAIWAEEhER2wLESbC11kV
19
+ HJTzybLKAw6PrWWPLaSBoHUBk+m08T0KXgX0rNV9Q4PYDZXclA6wHhbpH8pHP4QX
20
+ oXD1gA4X9gJh+vG/MCIyL+fcPaankPtf7FImLEVZY6QAfUPOfcB4tQkq3VuGeQ2u
21
+ zGlyu7xrw9J0dzipH9JvLNwbAoGAem7aSjVG0zJuSmt8i2wh6Z32MRZeUl0aXlMv
22
+ CLDtl/V3+/zwQlI0OZItBS704rhpzOhapq7ZTFpac50EK1Uq9GjiUkjdyRxOqF2z
23
+ qBx2C6Z6ftoWuhJtxMyZtO5uSRjSFU2cGT0gn3hj41vzlw9t5KmnFoDE8ugPXttU
24
+ np1IWx8CgYAuetHMVYM+v9DYLeRdFmUlzaWfRY4FxAfJMYlQuqXKBjOcrCCSlFka
25
+ m5K8UKVuvXWDNYhl/LLuR3hnlu25Hc4ZR68kbH+N4ydoFOM58zj/OnxASyY9RSld
26
+ xNQZiIhtNGV2jltZ4CBP0XGMKkiDSNQS6QeOzx+a9O8Yol0Xm15qwA==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDbzCCAlegAwIBAgIBADANBgkqhkiG9w0BAQUFADAyMQ8wDQYDVQQDDAZoZW11
3
+ bGkxHzAdBgoJkiaJk/IsZAEZFg9udXVza2FtdWlra3VuZW4wHhcNMTMxMDIyMTAy
4
+ ODAyWhcNMTQxMDIyMTAyODAyWjAyMQ8wDQYDVQQDDAZoZW11bGkxHzAdBgoJkiaJ
5
+ k/IsZAEZFg9udXVza2FtdWlra3VuZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
6
+ ggEKAoIBAQDnSmN8PBVuuAZKejgA8IWIBGc4QpUG/PLkMP+0E/VS61ALn/Yrnip5
7
+ eyQ34sXQsN2WBY/RKnQv9RhwVGqwWKIzZMsddEcX9/BHZgkDv2dq8itOofKHIZ65
8
+ B25Zww7iL96nPX07Zd0BwoxTGduM6uuNvgY1kQbtqikHXzPVBu0ahHRB9zuzKPge
9
+ D+BoBY3D17QfERAOzbU5WwsOOv2ywBDMGeUuAnaeiSCe8hZdIeqlsgqrSQ3omjOk
10
+ 4pJpXl+lb4MujAeEKXvfK6eya8mIfumqvxNZagGI16h5Vi2e1JFRiKjFzVu7+6Ai
11
+ 4fmNxRztVMsjRHEo91ae+TkkdXlXw+jNAgMBAAGjgY8wgYwwDwYDVR0TAQH/BAUw
12
+ AwEB/zAdBgNVHQ4EFgQUBMv98rBcdK888oG1T8q2E3MF0kkwWgYDVR0jBFMwUYAU
13
+ BMv98rBcdK888oG1T8q2E3MF0kmhNqQ0MDIxDzANBgNVBAMMBmhlbXVsaTEfMB0G
14
+ CgmSJomT8ixkARkWD251dXNrYW11aWtrdW5lboIBADANBgkqhkiG9w0BAQUFAAOC
15
+ AQEADaPP/I5v+6ngpsvQb7b0dNsO6/QuxyClu9+XKVmlZBNtwpC8SFH1Utsic5Uv
16
+ g7GICRvEVCwtgrYeE8gMCt5I6gYvxhLC+bmcSvSKhphSi0mp/iU+Tw6T1kpsOk7G
17
+ UI8+TvlyS/rxKKRHZG4aml8ljyXXTEd3XrN/dH3Qo6OA5kLI4N8X6GyLeaBcMiP0
18
+ eH5EinZdq24/l29CZxTr8a3JsBFFH4QM5H8VubGlOvw6oj6gV6C7poW3kDlvMvKn
19
+ gCpR0ZyFMdmHmeLCoe42YfqKgXXXoEDmzJyykIis2dR75bC6p5362i9pcJ679Ma7
20
+ BvN6HFIS6rdjwVEHP26A0x+LPg==
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDnzCCAoegAwIBAgIHHoy+tGx4NTANBgkqhkiG9w0BAQsFADCBwjEQMA4GA1UE
3
+ AxMHREJHQ0FEQjELMAkGA1UEBhMCREsxEzARBgNVBAcTCkNvcGVuaGFnZW4xEDAO
4
+ BgNVBAgTB0Rlbm1hcmsxGjAYBgNVBAoTEURhbnNrZSBCYW5rIEdyb3VwMRgwFgYD
5
+ VQQLEw9EYW5za2UgQmFuayBBL1MxGDAWBgNVBAUTDzYxMTI2MjI4MjIzMDEwMTEJ
6
+ MAcGA1UEBBMAMQkwBwYDVQQqEwAxCTAHBgNVBAwTADEJMAcGA1UEERMAMB4XDTEw
7
+ MDUyODExMTgzOVoXDTEyMDUyNzExMTgzOVowgaYxIDAeBgNVBAMTF0JFTkdUU1NP
8
+ TiBPRyBGUi4gSkVOU0VOMQswCQYDVQQGEwJESzEcMBoGA1UEChMTREJUUyBERU1P
9
+ IDEuICgzNEFLKTEeMBwGA1UECxMVQ09SUE9SQVRFIERFVkVMT1BNRU5UMTcwNQYD
10
+ VQQFEy5TRS1LRVJIVi9EQUJBOjAwOTIxMDA4NDEtQUdSOjA2MTA0OC1VU1I6MDYx
11
+ MTMzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfh+ajEvsFS1kByPsjReO+
12
+ EmyFglGDiCBh7voya2aSbvGMQm/aAYugTliAhoklq4adwUwqjf86gon3ZdUMDBmD
13
+ pJiPlxeexBHesOjr32hxzO8u67tS5o1xfDex3ga192g+94pAJsqmn3Fc8LJ0Wn2z
14
+ JPtYCTYvbrx6551QLiD3fwIDAQABozgwNjAJBgNVHQ4EAgQAMBkGA1UdIwQSMBCA
15
+ DsLGxMP29vnBwsTCxsTDMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOC
16
+ AQEASgxJaAoWP08MKVnuvNxG7EkmogFUfKCX7fWrHYxDzEs5uhnRQ6IR4GitTHEM
17
+ /BE5KNGu6MuHuKMhp4HuMBg5YzaFtk5yFk+K6BjLEEFwz/NBFLyrtPmrezxjmxMY
18
+ x4PRTqeyEthOIkZ1KFQvzxB1Vg2Kt5fqdvxKVODAFstJB2nE3uICnrOQmHlo/R/1
19
+ rp0J/VQnOsWdgKmIFhFlFdFpWhI7m1ry7cuilHPdCHq+M83jGfTYVXulwbxDYv0L
20
+ PHZGzCxoAnxZQM4r2HqwXTCZiRT/eP+fEv7A571aHb9GhJhQQQ0lStd1vhOJu1Ll
21
+ O3fe68SSKSye5CozKwvvlEwbag==
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAy4zgajeMzFrBR4zsJ50qo4fxHWfjdCmI5nwLbKqKhSKB15JB
3
+ dRmh/Wz0Gi1qOvERx9wS5c/1pMr1ARcVUvz2425ZNV77AAQMGUZpLxP9N6QWK39u
4
+ 4VemoecdPfNYv/ttqk1cJFO1aNNmIMrDzBZEzQH/Mf4QbiqsaSvuVay8mjVEW3sh
5
+ e4FbcrhNnhlm3PS7XOm0UF2TiCjrM4enCI2XhTzKnSxONiM8KubKEAEOXPDAYGRw
6
+ n+dik30qYwT5kMbGtzggHPsiwkBUDEcNeMuMGRKNxP3i03DA4wGSJZu3A61TcYVL
7
+ ihj9hEDnybe7Dw0heNmyqoqp/0gr89rxlAANNwIDAQABAoIBAHWasnqMF9xmPy/A
8
+ 2xzUMLOFMqkjwgX2jXNljhA9xITBeDV9+jXXFoHetnZ9cNgXOoe3vm9rJOkOnln/
9
+ 5UEqiNbEheRROUI8FGVyCgm6Sd4g/vIo0X5+7vayGnIVrFxXv3fa9HbEqpajNWmS
10
+ 3WeIIj40fiZ7PTD5lN27FRwJDnslbMUwl/QSyJmWuiogZ/wR2oQmmTtFXRT7CGD6
11
+ 4lJAnjIXpk5+A11qzw3B0C16jonF3EQzD2qdgjIJKNusYjrnaqP5EAvaqx/40sx2
12
+ qoBBVB46AaoqBeQn4uDDRJGaZ3VL+4qCPFFfQ+WRYCBTK7W2jMf7RVom9DbkH2op
13
+ FHn1ckECgYEA+WsZOazUreVdbBf6gdV/pM9IfN/7pP3i+/fopJe4xnLenwtH+5oF
14
+ 4hhyflRejTIBsFi4Cz9zi/GqZFFTo33CXWI+qFcg5+0SWF/BROQYA5AXRnyl8zvE
15
+ bVg6kwlULR7rcd0VDKHelqkGz5SUCnoYr458ZaDptK53Cbu0E1LEgGECgYEA0Ovs
16
+ sQUBrzg2mNo3FZGjDtiIVYFji5X5t4X38lXgTORhq2xvPu7MftqmqijwfbC9+n8I
17
+ wjuNXmLzodh13JDvE8cBUugNAsK1lJpHVWx0fheyGzwDiG8dwoRqFGvsLcB4BRWl
18
+ k5pkpgmon4j1ZCM4zrYi7qICfOtY/3P9JjzI1JcCgYB5oN+JP53rOzmml77ih5Ga
19
+ dja8JqHZoLGK/Cbn9ND3fVbQqjitGjwaOJ/EuTHumt819t2xJn0bVnsoNnyZ8p7Q
20
+ 2TMC9pImZ3aVwARIqw6G1kJzbh+jEJdGV0shHuB8rGJWgWBda6ZXRA/9NFBJF6do
21
+ HQzOpnyxTo7gITe8YJVQoQKBgBuiqYt86w0fdXFgpBqxSg1jrR0KYX2MWBzjlrmy
22
+ jFn/d7/yNwDvG5PIHnWxtqYZo/enqCPxNrD+i9WjyWtkrItELrOlyFrOILDIe5kc
23
+ IIixX7jkhl8cu6YIV/Pdlr8yj220wFM3AAtKiciYmEUnt5L4WsSQH54gj4Qy9pCB
24
+ R9t/AoGAJRlYneV2guAZ+ba7E7zppvNa/8E78k6KKGpk3/LameGUjcCivZuXziXF
25
+ DF5/ZRU4mxuDmKs9vg2e75eD729pnMdQDKYBS34DRWZHJwpQJlvQPR3hJbaEx/GZ
26
+ 94+HtAa9MRBIcMFNzHEjm4oNlsj+X8UiW4R+4HQEjVWSBIQvYpY=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService" xmlns:elem="http://danskebank.dk/PKI/PKIFactoryService/elements" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
3
+ <soapenv:Header/>
4
+ <soapenv:Body>
5
+ <CreateCertificateOut xmlns="http://danskebank.dk/PKI/PKIFactoryService">
6
+ <pkif:ResponseHeader xmlns="">
7
+ <pkif:SenderId>360817</pkif:SenderId>
8
+ <pkif:CustomerId>360817</pkif:CustomerId>
9
+ <pkif:RequestId>494d9bf886</pkif:RequestId>
10
+ <pkif:Timestamp>2014-06-11T10:46:37Z</pkif:Timestamp>
11
+ <pkif:InterfaceVersion>1</pkif:InterfaceVersion>
12
+ <pkif:Environment>customertest</pkif:Environment>
13
+ </pkif:ResponseHeader>
14
+ <tns:CreateCertificateResponse xmlns:tns="http://danskebank.dk/PKI/PKIFactoryService/elements" xmlns="" xml:id="response">
15
+ <tns:ReturnCode>00</tns:ReturnCode>
16
+ <tns:ReturnText>OK</tns:ReturnText>
17
+ <tns:EncryptionCert>MIIDnzCCAoegAwIBAgIHHoy+tGx4NjANBgkqhkiG9w0BAQsFADCBwjEQMA4GA1UEAxMHREJHQ0FEQjELMAkGA1UEBhMCREsxEzARBgNVBAcTCkNvcGVuaGFnZW4xEDAOBgNVBAgTB0Rlbm1hcmsxGjAYBgNVBAoTEURhbnNrZSBCYW5rIEdyb3VwMRgwFgYDVQQLEw9EYW5za2UgQmFuayBBL1MxGDAWBgNVBAUTDzYxMTI2MjI4MjIzMDEwMTEJMAcGA1UEBBMAMQkwBwYDVQQqEwAxCTAHBgNVBAwTADEJMAcGA1UEERMAMB4XDTEwMDUyODExMTgzOVoXDTEyMDUyNzExMTgzOVowgaYxIDAeBgNVBAMTF0JFTkdUU1NPTiBPRyBGUi4gSkVOU0VOMQswCQYDVQQGEwJESzEcMBoGA1UEChMTREJUUyBERU1PIDEuICgzNEFLKTEeMBwGA1UECxMVQ09SUE9SQVRFIERFVkVMT1BNRU5UMTcwNQYDVQQFEy5TRS1LRVJIVi9EQUJBOjAwOTIxMDA4NDEtQUdSOjA2MTA0OC1VU1I6MDYxMTMzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvWdhjVCuWXWu4H8WqUJGuvme+6l0g37fAXur3Xm28RChzvhue7pvwhtsZEyHN3Oa9DhLMV9UQC4wy5Md7Js+rm2HtgOtM2LMorE4GeoTYpi5f1fbYDUqHj2ygkkWDqQ9v0xSCJkGIyW+1vsrcId+DDlZqBacuXwtv5xy8plmX7wIDAQABozgwNjAJBgNVHQ4EAgQAMBkGA1UdIwQSMBCADsLGxMP29vnBwsTCxsTDMA4GA1UdDwEB/wQEAwIEMDANBgkqhkiG9w0BAQsFAAOCAQEAkITeNDN6Mxkb8AXF9SjZ1xfWD+yZcyb5wqQmpvwlM1gfovvV5mW/r2Wgn8uyhwwZd8dDJClNRslQeQrV8FbmCF8uh0dr1z2pt/t3u6lZ5YH1MWmLKGpJ8gGnWkRwEtkeZCuaD+Nji6YCGqCPytmKae+CFvz46XrvQ+VxfoqD8IlSoT2Himw6kfbE7H5oyJtuBSjozz+zz9GE09HQzCn3j1AX1jF0U0qFOXOR185NnDHtQPBytUOOBHBNog1+bVfby7E1nmXum38pMVnv5ReSvnhKhmusmxkHaKCGwgYCoKMvsXntHStAvmH/t4tGdNyLvmC/88GYfoBXtNrsuZV3Ew==</tns:EncryptionCert>
18
+ <tns:SigningCert>MIIDnzCCAoegAwIBAgIHHoy+tGx4NTANBgkqhkiG9w0BAQsFADCBwjEQMA4GA1UEAxMHREJHQ0FEQjELMAkGA1UEBhMCREsxEzARBgNVBAcTCkNvcGVuaGFnZW4xEDAOBgNVBAgTB0Rlbm1hcmsxGjAYBgNVBAoTEURhbnNrZSBCYW5rIEdyb3VwMRgwFgYDVQQLEw9EYW5za2UgQmFuayBBL1MxGDAWBgNVBAUTDzYxMTI2MjI4MjIzMDEwMTEJMAcGA1UEBBMAMQkwBwYDVQQqEwAxCTAHBgNVBAwTADEJMAcGA1UEERMAMB4XDTEwMDUyODExMTgzOVoXDTEyMDUyNzExMTgzOVowgaYxIDAeBgNVBAMTF0JFTkdUU1NPTiBPRyBGUi4gSkVOU0VOMQswCQYDVQQGEwJESzEcMBoGA1UEChMTREJUUyBERU1PIDEuICgzNEFLKTEeMBwGA1UECxMVQ09SUE9SQVRFIERFVkVMT1BNRU5UMTcwNQYDVQQFEy5TRS1LRVJIVi9EQUJBOjAwOTIxMDA4NDEtQUdSOjA2MTA0OC1VU1I6MDYxMTMzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfh+ajEvsFS1kByPsjReO+EmyFglGDiCBh7voya2aSbvGMQm/aAYugTliAhoklq4adwUwqjf86gon3ZdUMDBmDpJiPlxeexBHesOjr32hxzO8u67tS5o1xfDex3ga192g+94pAJsqmn3Fc8LJ0Wn2zJPtYCTYvbrx6551QLiD3fwIDAQABozgwNjAJBgNVHQ4EAgQAMBkGA1UdIwQSMBCADsLGxMP29vnBwsTCxsTDMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAQEASgxJaAoWP08MKVnuvNxG7EkmogFUfKCX7fWrHYxDzEs5uhnRQ6IR4GitTHEM/BE5KNGu6MuHuKMhp4HuMBg5YzaFtk5yFk+K6BjLEEFwz/NBFLyrtPmrezxjmxMYx4PRTqeyEthOIkZ1KFQvzxB1Vg2Kt5fqdvxKVODAFstJB2nE3uICnrOQmHlo/R/1rp0J/VQnOsWdgKmIFhFlFdFpWhI7m1ry7cuilHPdCHq+M83jGfTYVXulwbxDYv0LPHZGzCxoAnxZQM4r2HqwXTCZiRT/eP+fEv7A571aHb9GhJhQQQ0lStd1vhOJu1LlO3fe68SSKSye5CozKwvvlEwbag==</tns:SigningCert>
19
+ <tns:CACert>MIIEFzCCAv+gAwIBAgIFAc+WvjUwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTEzMDAwMzAeFw0xMDEwMTEwMDAwMDBaFw0yMDEwMTEwMDAwMDBaMIGaMRAwDgYDVQQDEwdEQkdTV0RLMQswCQYDVQQGEwJESzETMBEGA1UEBxMKQ29wZW5oYWdlbjEQMA4GA1UECBMHRGVubWFyazEaMBgGA1UEChMRRGFuc2tlIEJhbmsgR3JvdXAxHDAaBgNVBAsTE0RhbnNrZSBCYW5rIERlbm1hcmsxGDAWBgNVBAUTDzYxMTI2MjI4NzczMDEwMTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAOC0DrY9Q4HzHQ/BWr/RWB1GOq+90BiGN85uhWAeGGMI2od/ahn/R7zl8+MNcMLAuVHB8LvzRrC3lxZqjNvRKv8fYsMgwdmdYtBwiqHINpXTLjQxtLEWqEu5fiMZAi1oFE08YAkCDLUGopbkY+d2KULqxFK2blwHi3m0jOwuZGiw4ELeChGcELsOpCT/oJU5mR3dFHbRs3HBgWmuFwJKvwHNZeNAmrCwEUWqw1x4MjQRHRGl10TfTNqPrd7zyTfyR0+GPy1INxHwWZroBUc9j54ONX9pV6x835WedHdo80UxImjCiIruClzsMAXYtvsC3d9xgk9oLNFIVPRe2fTs07ECAQOjZjBkMB8GA1UdIwQYMBaAFLU6ie9kUC8x5CDLauuTRJBL35qYMB0GA1UdDgQWBBQO5nD7QkqlQCrxigdJncTYo20tIzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADANBgkqhkiG9w0BAQsFAAOCAQEAQPCp0H3g88CZZurq0kS76ozBVRiLZ3V8S0+IYi0dmMCfTpW/qnEzMGn+NlHOvgkm5C2VaHCdbEzZPsvv4cx2YrqpsFf8x+Ts6W2r3VVjOdve5u0Oj1CK/ONwaqUl5p4SxRCfnv6sSh6TwxhJF/zESiHXLdyWdJf+NkXsATE6QB4ZjgaGw1NcvhnDUvbbfUZ1zOTIf7+wUpfCNCJi0T1sFvJ88nYkVoQmVWQFS7Kwj+kwQ1ILfnp/1xbycrt1XNxZ8SkRDAWOJARY0fS/C0o7/1t/SB2ePrY/g0U8ZWi0B6odT5isGNpLOKzhD5YGjbKGesC9GEnhmhLoawXU7b4Wcw==</tns:CACert>
20
+ <tns:RequestId/>
21
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
22
+ <SignedInfo>
23
+ <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
24
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
25
+ <Reference URI="#response">
26
+ <Transforms>
27
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
28
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
29
+ </Transforms>
30
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
31
+ <DigestValue>2vCYl3h7ksRgk7IyV2axgpXxTWM=</DigestValue>
32
+ </Reference>
33
+ </SignedInfo>
34
+ <SignatureValue>CqPQW88gjJayDovXbk++IXJ5yjAJNf5+BL6wodkwIErqLdK3DYeAn9T6MQRNciB7POZkKqtnFj4CG1mbpGRCP5yduaBYP96uUoRSZiGuFHqb5HvMIgMvDCsnRJX11tUaMhrZkktYb0Xx2ulPrbLm/n9kW9L0oZftEijm7ixYSIsNEdJMHxWqCDGQCzLwD5zz512nNHEm3Ddimvh3mOqZ6deGtfODl4KuK247NNuak6Pjz9sE5hJnwDi4E1jtme735HEcxkrtYlqTIOjPXS/xRKkHEW6R59R3DR3FpYAo3H+SR/2WptoQhaBvVtlzle9Z8BG2JFRnbudAo3CkA245Vg==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIEADCCAuigAwIBAgIFAMa3bfMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAeFw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGXMQ8wDQYDVQQDEwZEUFNJR04xCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MzkxMDAwMzCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAL1zYMqPk/6klEpL5wo+vWAo3MmxPz4wq9wuLAHpPUhJ4ZpHmncNsdmqSSXT6U4mxTY8tzKvz4ZdTDljp+5J6OxOl1B7av3V7hlHtfGb7wozsBAya2JOoPrLxc+ajapslbduiEvdhW9ZLKvn/n7rQ9sZzHA6GyGKQk8lfvKK+OjMylA86XyxApasFD/0eIDnzUJHth3UpPoQTJAlB7h7d4CKc/QG9tFv900AAi4R/Tmy9TRai7fVCkXz7y4qRXN+M7NIhDGAsCmtM6oSuDqjv3lh10nD7XELTxTvcbpq5xHLt9yknwjiM2ivc4XudDMgC7ESoH6vaJSUcbC17+wa6IUCAQOjUjBQMB8GA1UdIwQYMBaAFIT65b/ekUlm38WKUsOzt7MgHMdtMB0GA1UdDgQWBBQHbPgey2TInIKC7xbag8AZG25qnTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAFl3WfGkVElIeUXjQsr8uQFXhkSbrI14F6mRIkUpCTa9Px/UUfw1HQNVn4Tyep30JmfsFN91Yj387jiZDzoeMYeiVI32wyZkao7rC3Z4YhAfUdPdVFZqO1k2gOgoZ49nyLKVS+GlyuzeLQVBnFE7f3sbpgDTRzd8o58W5VncHuzmSj/IVe8ZwRQ4bm3cHlKTQpRnyz5x7UJjp08fH6KOUal8DVsOaQKoo+jWIsPPir58b/QZsxIRL4uq3qqQt5udrbZqyltRsyxUpgomIN5irCn7Wgr+iYwNLhzXYwxKvwKsNRS7isEAZuyfH9fNarBRP4p72g+225NB0itQ73Xo7pg=</X509Certificate><X509IssuerSerial><X509IssuerName>serialNumber=611262281110002, OU=Danske Bank Group, O=Danske Bank Group, ST=Denmark, L=Copenhagen, C=DK, CN=DBGROOT</X509IssuerName><X509SerialNumber>3333910003</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo></Signature>
35
+ </tns:CreateCertificateResponse>
36
+ </CreateCertificateOut>
37
+ </soapenv:Body>
38
+ </soapenv:Envelope>
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:xd="http://www.w3.org/2000/09/xmldsig#" xmlns:elem="http://danskebank.dk/PKI/PKIFactoryService/elements" xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <soapenv:Header/>
4
+ <soapenv:Body>
5
+ <GetBankCertificateOut xmlns="http://danskebank.dk/PKI/PKIFactoryService">
6
+ <pkif:ResponseHeader xmlns="">
7
+ <pkif:SenderId>360817</pkif:SenderId>
8
+ <pkif:CustomerId>360817</pkif:CustomerId>
9
+ <pkif:RequestId>b90999d5c0</pkif:RequestId>
10
+ <pkif:Timestamp>2014-06-11T08:21:11Z</pkif:Timestamp>
11
+ <pkif:InterfaceVersion>1</pkif:InterfaceVersion>
12
+ </pkif:ResponseHeader>
13
+ <pkie:GetBankCertificateResponse xmlns="" xmlns:pkie="http://danskebank.dk/PKI/PKIFactoryService/elements" xml:id="response">
14
+ <pkie:ReturnCode>00</pkie:ReturnCode>
15
+ <pkie:ReturnText>OK</pkie:ReturnText>
16
+ <pkie:BankEncryptionCert>MIIEATCCAumgAwIBAgIFAQjv8bMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAeFw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGYMRAwDgYDVQQDEwdEUENSWVBUMQswCQYDVQQGEwJESzETMBEGA1UEBxMKQ29wZW5oYWdlbjEQMA4GA1UECBMHRGVubWFyazEaMBgGA1UEChMRRGFuc2tlIEJhbmsgR3JvdXAxGjAYBgNVBAsTEURhbnNrZSBCYW5rIEdyb3VwMRgwFgYDVQQFEw82MTEyNjIyODQ5MTAwMDMwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQC/kHrOvHOueBsit9drxIHpaD7mXINypXS/l9PbbOZ0lZKVEfW9gtG8xk9XggsPXHJMF/PXpG6mveXvPu9WW/XpryAUqGfvYsC7Px3ixaJb2EMOL+2mJYd0v5HKg5RuYkQ82k3K01hMNEGYs0OotjNVAimQcTLtVPDGBjK5BUAiwady9LpI6afo7roJWnRmsvSvinDgBqswnfCvUfSfM8cZyhnLLC2uj1kBHAD/5xpllmS3aq1M8LqFkBYcCE5PdPmFWhGUumZ/Y5qLjDgcPMAPvUaKLqOsh22jvPCZ0pm17eV0bSQzWe5e0zkgCYAepuFRazSlkJQYBdS47Mp68dY5AgEDo1IwUDAfBgNVHSMEGDAWgBSE+uW/3pFJZt/FilLDs7ezIBzHbTAdBgNVHQ4EFgQUP6wHVNOmznu212c08M3oeYjeXW4wDgYDVR0PAQH/BAQDAgQwMA0GCSqGSIb3DQEBCwUAA4IBAQAvJBfPug+ixGL/zWUnKMweV80atZXMjHJEn4mOE+iUkCNONLImMMt6MXJysnJViL1gL5xMrka6A62PLLsVkl79kxDDbzXMPfGt5/mB9L7CMpyzaID0acDii3rsZwT3Wxpnate6wowN4zpmXgpCpTDGbxjuVRiOArsjQblerhfxnD/UAieZ1IWozIANs6SVms/TuOB+bODUr06ITxBkDJhizOJxjsXRIAtwZvvrH4qGjJz5qFcPb3nz4TxwswU8X6yvbtqF+q4aAKPA6ZydnGZFQSoSzNJtcF28T1ItxEHN3+xyQqXpTgFviiuL277LaAl9YUFFnSgeh7GiFitWJPfD</pkie:BankEncryptionCert>
17
+ <pkie:BankSigningCert>MIIEADCCAuigAwIBAgIFAMa3bfMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAeFw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGXMQ8wDQYDVQQDEwZEUFNJR04xCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MzkxMDAwMzCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAL1zYMqPk/6klEpL5wo+vWAo3MmxPz4wq9wuLAHpPUhJ4ZpHmncNsdmqSSXT6U4mxTY8tzKvz4ZdTDljp+5J6OxOl1B7av3V7hlHtfGb7wozsBAya2JOoPrLxc+ajapslbduiEvdhW9ZLKvn/n7rQ9sZzHA6GyGKQk8lfvKK+OjMylA86XyxApasFD/0eIDnzUJHth3UpPoQTJAlB7h7d4CKc/QG9tFv900AAi4R/Tmy9TRai7fVCkXz7y4qRXN+M7NIhDGAsCmtM6oSuDqjv3lh10nD7XELTxTvcbpq5xHLt9yknwjiM2ivc4XudDMgC7ESoH6vaJSUcbC17+wa6IUCAQOjUjBQMB8GA1UdIwQYMBaAFIT65b/ekUlm38WKUsOzt7MgHMdtMB0GA1UdDgQWBBQHbPgey2TInIKC7xbag8AZG25qnTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAFl3WfGkVElIeUXjQsr8uQFXhkSbrI14F6mRIkUpCTa9Px/UUfw1HQNVn4Tyep30JmfsFN91Yj387jiZDzoeMYeiVI32wyZkao7rC3Z4YhAfUdPdVFZqO1k2gOgoZ49nyLKVS+GlyuzeLQVBnFE7f3sbpgDTRzd8o58W5VncHuzmSj/IVe8ZwRQ4bm3cHlKTQpRnyz5x7UJjp08fH6KOUal8DVsOaQKoo+jWIsPPir58b/QZsxIRL4uq3qqQt5udrbZqyltRsyxUpgomIN5irCn7Wgr+iYwNLhzXYwxKvwKsNRS7isEAZuyfH9fNarBRP4p72g+225NB0itQ73Xo7pg=</pkie:BankSigningCert>
18
+ <pkie:BankRootCert>MIIEPzCCAyegAwIBAgIEQjoxcjANBgkqhkiG9w0BAQsFADCBmDEQMA4GA1UEAxMHREJHUk9PVDELMAkGA1UEBhMCREsxEzARBgNVBAcTCkNvcGVuaGFnZW4xEDAOBgNVBAgTB0Rlbm1hcmsxGjAYBgNVBAoTEURhbnNrZSBCYW5rIEdyb3VwMRowGAYDVQQLExFEYW5za2UgQmFuayBHcm91cDEYMBYGA1UEBRMPNjExMjYyMjgxMTEwMDAyMB4XDTEwMTAyNzAwMDAwMFoXDTIwMTAyNzAwMDAwMFowgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKWRtTRCXNEn5Hj+tA0vVg8VKUi/HnFgioZW/eyaF4gWvR4PNXXJJOS31VNHnb2SQHPLt3ac+5icH7vLu/OtS5rvnDiDFMg+TomVDrur6RtlsZNLnihZiaSaooI49+ERTz6vcCjST7xbfhmC03LUhE8eBKI1U70cx/lQ55UQKZvIAIbCVaZEks95VS4uJpwnU4M8glNIVGSvJhIUj/LIkSIcqBiryq/t9FRVtRl1gVhwKdi8A5O9hp4t3dBIdOanaup2UEL4lp7izzgt2rkMeuyQ1ZjHsN7LmDsfjoFcYx/8CID9LBwRCN2p+YCuoWUjuorrdU/2eit2lNh6ypiF6WECAQOjgZAwgY0wHQYDVR0OBBYEFIT65b/ekUlm38WKUsOzt7MgHMdtMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9vbmxpbmUuZGFuc2tlYmFuay5jb20vcGtpL0RCR1JPT1RfMTExMTExMDAwMi5jcmwwDQYJKoZIhvcNAQELBQADggEBAFjnBPCos7jMMLc3FqyQUMt/HJGKgJDrhYiPZBo9njGkH52Urryqw1sbT3wXA1NuzbjHE3xTUD+5jNPCncYqML9xqQjSQkBcb9eJfHZ+asiclsO38cSn2qriJPIrCREPOpRVqrGQRbZQhmDiB198hpAdLp38khJon/gXbR7u9e0rN8MIM4sXn+lFuQIWiPuv+3llGSoLlIxJnjiQQ9FDjhwN5U+N1N2aHaLc5AHu4X/qRutLCy7AYUJZMPBoakPLscYceW2Ztvx4VAyOXgHDdvmz0Bd58XWOs1A9bNMZFeYAB14D9yQRCkXYLhr6sm8HuyqaIkGChFpNb+Gf8gcPvtw=</pkie:BankRootCert>
19
+ <pkie:RequestId/>
20
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
21
+ <SignedInfo>
22
+ <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
23
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
24
+ <Reference URI="#response">
25
+ <Transforms>
26
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
27
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
28
+ </Transforms>
29
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
30
+ <DigestValue>hlJfqr9mI7Z3VePrAg3Pklb9ABk=</DigestValue>
31
+ </Reference>
32
+ </SignedInfo>
33
+ <SignatureValue>G8A9IL/ZKjcT8B4gTvUQm+yDBQRh3TfUXxvhi1CtdjfvpVCOpsjH+E1Q6BTKC2ngcBdPMuP0Yp6wZhOH0EvQu9apqWtZeKvDY8AUGWM8HxglnhEQNrvzw2Z+LMHKeg5PIdG6YMjOcmNu7chy5E9NhUmhj9ic8hJOiCE00vjiv+I2YeQC6EJ6J7UjIgJWtMlsgzvuz5jhKmvYDh3MYSmfeuHTbm8QEM7f83UgmFw2UXuN/q5ahMxJlH28Ix3WGHZ5OFjSioKT125hbz5AQ6JEry8E6qiEkSLtLfmiYnv9zNqIItcm9TVgurqoKAZObzkCcADs+hoNEHXbE3CvNHUvog==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIEADCCAuigAwIBAgIFAMa3bfMwDQYJKoZIhvcNAQELBQAwgZgxEDAOBgNVBAMTB0RCR1JPT1QxCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MTExMDAwMjAeFw0xMjA4MDEwMDAwMDBaFw0xNDEwMzEwMDAwMDBaMIGXMQ8wDQYDVQQDEwZEUFNJR04xCzAJBgNVBAYTAkRLMRMwEQYDVQQHEwpDb3BlbmhhZ2VuMRAwDgYDVQQIEwdEZW5tYXJrMRowGAYDVQQKExFEYW5za2UgQmFuayBHcm91cDEaMBgGA1UECxMRRGFuc2tlIEJhbmsgR3JvdXAxGDAWBgNVBAUTDzYxMTI2MjI4MzkxMDAwMzCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAL1zYMqPk/6klEpL5wo+vWAo3MmxPz4wq9wuLAHpPUhJ4ZpHmncNsdmqSSXT6U4mxTY8tzKvz4ZdTDljp+5J6OxOl1B7av3V7hlHtfGb7wozsBAya2JOoPrLxc+ajapslbduiEvdhW9ZLKvn/n7rQ9sZzHA6GyGKQk8lfvKK+OjMylA86XyxApasFD/0eIDnzUJHth3UpPoQTJAlB7h7d4CKc/QG9tFv900AAi4R/Tmy9TRai7fVCkXz7y4qRXN+M7NIhDGAsCmtM6oSuDqjv3lh10nD7XELTxTvcbpq5xHLt9yknwjiM2ivc4XudDMgC7ESoH6vaJSUcbC17+wa6IUCAQOjUjBQMB8GA1UdIwQYMBaAFIT65b/ekUlm38WKUsOzt7MgHMdtMB0GA1UdDgQWBBQHbPgey2TInIKC7xbag8AZG25qnTAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggEBAFl3WfGkVElIeUXjQsr8uQFXhkSbrI14F6mRIkUpCTa9Px/UUfw1HQNVn4Tyep30JmfsFN91Yj387jiZDzoeMYeiVI32wyZkao7rC3Z4YhAfUdPdVFZqO1k2gOgoZ49nyLKVS+GlyuzeLQVBnFE7f3sbpgDTRzd8o58W5VncHuzmSj/IVe8ZwRQ4bm3cHlKTQpRnyz5x7UJjp08fH6KOUal8DVsOaQKoo+jWIsPPir58b/QZsxIRL4uq3qqQt5udrbZqyltRsyxUpgomIN5irCn7Wgr+iYwNLhzXYwxKvwKsNRS7isEAZuyfH9fNarBRP4p72g+225NB0itQ73Xo7pg=</X509Certificate><X509IssuerSerial><X509IssuerName>serialNumber=611262281110002, OU=Danske Bank Group, O=Danske Bank Group, ST=Denmark, L=Copenhagen, C=DK, CN=DBGROOT</X509IssuerName><X509SerialNumber>3333910003</X509SerialNumber></X509IssuerSerial></X509Data></KeyInfo></Signature>
34
+ </pkie:GetBankCertificateResponse>
35
+ </GetBankCertificateOut>
36
+ </soapenv:Body>
37
+ </soapenv:Envelope>