sepafm 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +14 -30
- data/.ruby-version +1 -1
- data/.travis.yml +15 -0
- data/Gemfile +1 -1
- data/LICENSE +16 -4
- data/README.md +180 -319
- data/Rakefile +7 -2
- data/lib/sepa/application_request.rb +100 -131
- data/lib/sepa/application_response.rb +28 -84
- data/lib/sepa/attribute_checks.rb +169 -0
- data/lib/sepa/banks/danske/danske_response.rb +19 -0
- data/lib/sepa/banks/danske/soap_danske.rb +132 -0
- data/lib/sepa/banks/nordea/nordea_response.rb +20 -0
- data/lib/sepa/banks/nordea/soap_nordea.rb +51 -0
- data/lib/sepa/client.rb +72 -60
- data/lib/sepa/error_messages.rb +15 -0
- data/lib/sepa/response.rb +88 -85
- data/lib/sepa/soap_builder.rb +51 -341
- data/lib/sepa/utilities.rb +132 -0
- data/lib/sepa/version.rb +1 -1
- data/lib/sepa/xml_schemas/PKIFactory.xsd +334 -0
- data/lib/sepa/xml_schemas/xml_id.xsd +9 -0
- data/lib/sepa/xml_templates/application_request/create_certificate.xml +15 -10
- data/lib/sepa/xml_templates/application_request/danske_get_bank_certificate.xml +13 -9
- data/lib/sepa/xml_templates/application_request/download_file.xml +32 -30
- data/lib/sepa/xml_templates/application_request/download_file_list.xml +29 -27
- data/lib/sepa/xml_templates/application_request/encrypted_request.xml +22 -0
- data/lib/sepa/xml_templates/application_request/get_certificate.xml +9 -8
- data/lib/sepa/xml_templates/application_request/get_user_info.xml +26 -24
- data/lib/sepa/xml_templates/application_request/upload_file.xml +29 -27
- data/lib/sepa/xml_templates/soap/create_certificate.xml +17 -15
- data/lib/sepa/xml_templates/soap/danske_get_bank_certificate.xml +15 -13
- data/lib/sepa/xml_templates/soap/download_file.xml +19 -15
- data/lib/sepa/xml_templates/soap/download_file_list.xml +19 -15
- data/lib/sepa/xml_templates/soap/get_certificate.xml +2 -1
- data/lib/sepa/xml_templates/soap/get_user_info.xml +19 -15
- data/lib/sepa/xml_templates/soap/header.xml +48 -37
- data/lib/sepa/xml_templates/soap/upload_file.xml +19 -15
- data/lib/sepafm.rb +20 -18
- data/{sepa.gemspec → sepafm.gemspec} +10 -9
- data/test/sepa/banks/danske/danske_cert_response_test.rb +52 -0
- data/test/sepa/banks/danske/danske_cert_soap_builder_test.rb +100 -0
- data/test/sepa/banks/danske/danske_generic_soap_builder_test.rb +278 -0
- data/test/sepa/banks/danske/danske_get_bank_cert_test.rb +111 -0
- data/{lib/sepa/danske_testing/keys/danske_encryption.crt → test/sepa/banks/danske/keys/bank_encryption_cert.pem} +0 -0
- data/test/sepa/{danske_test_keys/danskeroot.pem → banks/danske/keys/bank_root_cert.pem} +1 -1
- data/test/sepa/banks/danske/keys/bank_signing_cert.pem +24 -0
- data/test/sepa/banks/danske/keys/danske_encryption.crt +24 -0
- data/test/sepa/banks/danske/keys/enc_private_key.pem +27 -0
- data/test/sepa/{danske_test_keys → banks/danske/keys}/encryption_pkcs.csr +0 -0
- data/test/sepa/banks/danske/keys/own_enc_cert.pem +21 -0
- data/test/sepa/banks/danske/keys/own_signing_cert.pem +22 -0
- data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_key.pem +0 -0
- data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_pkcs.csr +0 -0
- data/test/sepa/banks/danske/keys/signing_private_key.pem +27 -0
- data/test/sepa/banks/danske/responses/create_cert.xml +38 -0
- data/test/sepa/banks/danske/responses/get_bank_cert.xml +37 -0
- data/{lib/sepa/nordea_testing → test/sepa/banks/nordea}/keys/nordea.crt +0 -4
- data/test/sepa/{nordea_test_keys → banks/nordea/keys}/nordea.key +0 -3
- data/test/sepa/{nordea_test_keys → banks/nordea/keys}/root_cert.cer +0 -0
- data/test/sepa/{nordea_test_keys → banks/nordea/keys}/testcert.csr +0 -0
- data/test/sepa/banks/nordea/nordea_application_request_test.rb +252 -0
- data/test/sepa/{application_response_test.rb → banks/nordea/nordea_application_response_test.rb} +40 -46
- data/test/sepa/banks/nordea/nordea_cert_application_request_test.rb +72 -0
- data/test/sepa/banks/nordea/nordea_cert_request_soap_builder_test.rb +65 -0
- data/test/sepa/banks/nordea/nordea_generic_soap_builder_test.rb +280 -0
- data/test/sepa/banks/nordea/nordea_response_test.rb +116 -0
- data/test/sepa/banks/nordea/responses/df_ktl.xml +45 -0
- data/test/sepa/{test_files/test_responses/df.xml → banks/nordea/responses/df_tito.xml} +1 -1
- data/test/sepa/{test_files/test_responses → banks/nordea/responses}/dfl.xml +0 -0
- data/test/sepa/banks/nordea/responses/gbc.xml +15 -0
- data/test/sepa/banks/nordea/responses/gc.xml +49 -0
- data/test/sepa/{test_files/test_responses → banks/nordea/responses}/gui.xml +0 -0
- data/test/sepa/{test_files/test_responses → banks/nordea/responses}/uf.xml +0 -0
- data/test/sepa/client_test.rb +156 -302
- data/test/sepa/fixtures.rb +214 -0
- data/test/sepa/sepa_test.rb +3 -13
- data/test/sepa/test_files/{invalid.wsdl → invalid_wsdl.wsdl} +0 -0
- data/test/test_helper.rb +29 -3
- metadata +140 -116
- data/lib/danske_get_bank_certificate_test.rb +0 -15
- data/lib/sepa/custom_exceptions.rb +0 -2
- data/lib/sepa/filedescriptor.rb +0 -7
- data/lib/sepa/filetypeservice.rb +0 -6
- data/lib/sepa/nordea_testing/keys/CSR.csr +0 -0
- data/lib/sepa/nordea_testing/keys/nordea.key +0 -19
- data/lib/sepa/nordea_testing/response/content_053.xml +0 -998
- data/lib/sepa/nordea_testing/response/content_054.xml +0 -1
- data/lib/sepa/nordea_testing/response/download_file_response.xml +0 -14
- data/lib/sepa/nordea_testing/response/download_filelist_response.xml +0 -14
- data/lib/sepa/nordea_testing/response/get_user_info_response.xml +0 -14
- data/lib/sepa/nordea_testing/response/upload_file_response.xml +0 -14
- data/lib/sepa/payload.rb +0 -109
- data/lib/sepa/payment.rb +0 -97
- data/lib/sepa/sender_verifier.rb +0 -15
- data/lib/sepa/signature.rb +0 -7
- data/lib/sepa/soap_danske.rb +0 -47
- data/lib/sepa/soap_nordea.rb +0 -68
- data/lib/sepa/transaction.rb +0 -178
- data/lib/sepa/userfiletype.rb +0 -16
- data/lib/sepa/xml_parser.rb +0 -291
- data/lib/sepa_client_testing_mika.rb +0 -32
- data/lib/sepa_client_testing_tiere.rb +0 -257
- data/test/sepa/application_request_test.rb +0 -423
- data/test/sepa/cert_application_request_test.rb +0 -99
- data/test/sepa/nordea_cert_request_soap_builder_test.rb +0 -112
- data/test/sepa/nordea_generic_soap_builder_test.rb +0 -427
- data/test/sepa/nordea_test_keys/nordea.crt +0 -27
- data/test/sepa/payload_test.rb +0 -297
- data/test/sepa/payment_test.rb +0 -198
- data/test/sepa/response_test.rb +0 -269
- data/test/sepa/transaction_test.rb +0 -362
- data/test/sepa/user_file_type_test.rb +0 -21
- data/test/sepa/xml_parser_test.rb +0 -73
@@ -1,29 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
1
2
|
<ApplicationRequest xmlns="http://bxd.fi/xmldata/">
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
</dsig:
|
3
|
+
<CustomerId></CustomerId>
|
4
|
+
<Command></Command>
|
5
|
+
<Timestamp></Timestamp>
|
6
|
+
<Environment></Environment>
|
7
|
+
<TargetId></TargetId>
|
8
|
+
<SoftwareId></SoftwareId>
|
9
|
+
<FileType></FileType>
|
10
|
+
<Content></Content>
|
11
|
+
<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
|
12
|
+
<dsig:SignedInfo>
|
13
|
+
<dsig:CanonicalizationMethod
|
14
|
+
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
|
15
|
+
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
|
16
|
+
<dsig:Reference URI="">
|
17
|
+
<dsig:Transforms>
|
18
|
+
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
|
19
|
+
</dsig:Transforms>
|
20
|
+
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
|
21
|
+
<dsig:DigestValue></dsig:DigestValue>
|
22
|
+
</dsig:Reference>
|
23
|
+
</dsig:SignedInfo>
|
24
|
+
<dsig:SignatureValue></dsig:SignatureValue>
|
25
|
+
<dsig:KeyInfo>
|
26
|
+
<dsig:X509Data>
|
27
|
+
<dsig:X509Certificate></dsig:X509Certificate>
|
28
|
+
</dsig:X509Data>
|
29
|
+
</dsig:KeyInfo>
|
30
|
+
</dsig:Signature>
|
29
31
|
</ApplicationRequest>
|
@@ -1,15 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
</
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
|
4
|
+
<soapenv:Header/>
|
5
|
+
<soapenv:Body>
|
6
|
+
<pkif:CreateCertificateIn>
|
7
|
+
<pkif:RequestHeader>
|
8
|
+
<pkif:SenderId></pkif:SenderId>
|
9
|
+
<pkif:CustomerId></pkif:CustomerId>
|
10
|
+
<pkif:RequestId></pkif:RequestId>
|
11
|
+
<pkif:Timestamp></pkif:Timestamp>
|
12
|
+
<pkif:InterfaceVersion></pkif:InterfaceVersion>
|
13
|
+
<pkif:Environment></pkif:Environment>
|
14
|
+
</pkif:RequestHeader>
|
15
|
+
</pkif:CreateCertificateIn>
|
16
|
+
</soapenv:Body>
|
17
|
+
</soapenv:Envelope>
|
@@ -1,14 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
|
4
|
+
<soapenv:Header/>
|
5
|
+
<soapenv:Body>
|
6
|
+
<pkif:GetBankCertificateIn xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
|
7
|
+
<pkif:RequestHeader xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
|
8
|
+
<pkif:SenderId></pkif:SenderId>
|
9
|
+
<pkif:CustomerId></pkif:CustomerId>
|
10
|
+
<pkif:RequestId></pkif:RequestId>
|
11
|
+
<pkif:Timestamp></pkif:Timestamp>
|
12
|
+
<pkif:InterfaceVersion></pkif:InterfaceVersion>
|
13
|
+
</pkif:RequestHeader>
|
14
|
+
</pkif:GetBankCertificateIn>
|
15
|
+
</soapenv:Body>
|
14
16
|
</soapenv:Envelope>
|
@@ -1,16 +1,20 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</
|
2
|
+
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
4
|
+
xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
|
5
|
+
<env:Body
|
6
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
7
|
+
wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
|
8
|
+
<cor:downloadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
|
9
|
+
<bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
|
10
|
+
<bxd:SenderId></bxd:SenderId>
|
11
|
+
<bxd:RequestId></bxd:RequestId>
|
12
|
+
<bxd:Timestamp></bxd:Timestamp>
|
13
|
+
<bxd:Language></bxd:Language>
|
14
|
+
<bxd:UserAgent></bxd:UserAgent>
|
15
|
+
<bxd:ReceiverId></bxd:ReceiverId>
|
16
|
+
</bxd:RequestHeader>
|
17
|
+
<bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
|
18
|
+
</cor:downloadFilein>
|
19
|
+
</env:Body>
|
20
|
+
</env:Envelope>
|
@@ -1,16 +1,20 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</
|
2
|
+
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
4
|
+
xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
|
5
|
+
<env:Body
|
6
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
7
|
+
wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
|
8
|
+
<cor:downloadFileListin xmlns:cor="http://bxd.fi/CorporateFileService">
|
9
|
+
<bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
|
10
|
+
<bxd:SenderId></bxd:SenderId>
|
11
|
+
<bxd:RequestId></bxd:RequestId>
|
12
|
+
<bxd:Timestamp></bxd:Timestamp>
|
13
|
+
<bxd:Language></bxd:Language>
|
14
|
+
<bxd:UserAgent></bxd:UserAgent>
|
15
|
+
<bxd:ReceiverId></bxd:ReceiverId>
|
16
|
+
</bxd:RequestHeader>
|
17
|
+
<bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
|
18
|
+
</cor:downloadFileListin>
|
19
|
+
</env:Body>
|
20
|
+
</env:Envelope>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<?xml version="1.0"?>
|
1
2
|
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cer="http://bxd.fi/CertificateService">
|
2
3
|
<soapenv:Header/>
|
3
4
|
<soapenv:Body>
|
@@ -10,4 +11,4 @@
|
|
10
11
|
<cer:ApplicationRequest></cer:ApplicationRequest>
|
11
12
|
</cer:getCertificatein>
|
12
13
|
</soapenv:Body>
|
13
|
-
</soapenv:Envelope>
|
14
|
+
</soapenv:Envelope>
|
@@ -1,16 +1,20 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</
|
2
|
+
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
4
|
+
xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
|
5
|
+
<env:Body
|
6
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
7
|
+
wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
|
8
|
+
<cor:getUserInfoin>
|
9
|
+
<bxd:RequestHeader>
|
10
|
+
<bxd:SenderId></bxd:SenderId>
|
11
|
+
<bxd:RequestId></bxd:RequestId>
|
12
|
+
<bxd:Timestamp></bxd:Timestamp>
|
13
|
+
<bxd:Language></bxd:Language>
|
14
|
+
<bxd:UserAgent></bxd:UserAgent>
|
15
|
+
<bxd:ReceiverId></bxd:ReceiverId>
|
16
|
+
</bxd:RequestHeader>
|
17
|
+
<bxd:ApplicationRequest></bxd:ApplicationRequest>
|
18
|
+
</cor:getUserInfoin>
|
19
|
+
</env:Body>
|
20
|
+
</env:Envelope>
|
@@ -1,37 +1,48 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
</
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
|
4
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
5
|
+
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
|
6
|
+
<env:Header>
|
7
|
+
<wsse:Security xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:mustUnderstand="1"
|
8
|
+
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
|
9
|
+
<wsse:BinarySecurityToken
|
10
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
11
|
+
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
|
12
|
+
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
|
13
|
+
wsu:Id="sdgdsg76sdg78sdg78d6gs"></wsse:BinarySecurityToken>
|
14
|
+
<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
|
15
|
+
<dsig:SignedInfo>
|
16
|
+
<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
17
|
+
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
|
18
|
+
<dsig:Reference URI="#dsfg8sdg87dsf678g6dsg6ds7fg">
|
19
|
+
<dsig:Transforms>
|
20
|
+
<dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
21
|
+
</dsig:Transforms>
|
22
|
+
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
|
23
|
+
<dsig:DigestValue></dsig:DigestValue>
|
24
|
+
</dsig:Reference>
|
25
|
+
<dsig:Reference URI="#sdf6sa7d86f87s6df786sd87f6s8fsda">
|
26
|
+
<dsig:Transforms>
|
27
|
+
<dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
|
28
|
+
</dsig:Transforms>
|
29
|
+
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
|
30
|
+
<dsig:DigestValue></dsig:DigestValue>
|
31
|
+
</dsig:Reference>
|
32
|
+
</dsig:SignedInfo>
|
33
|
+
<dsig:SignatureValue></dsig:SignatureValue>
|
34
|
+
<dsig:KeyInfo>
|
35
|
+
<wsse:SecurityTokenReference>
|
36
|
+
<wsse:Reference URI="#sdgdsg76sdg78sdg78d6gs"/>
|
37
|
+
</wsse:SecurityTokenReference>
|
38
|
+
</dsig:KeyInfo>
|
39
|
+
</dsig:Signature>
|
40
|
+
<wsu:Timestamp
|
41
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
42
|
+
wsu:Id="dsfg8sdg87dsf678g6dsg6ds7fg">
|
43
|
+
<wsu:Created></wsu:Created>
|
44
|
+
<wsu:Expires></wsu:Expires>
|
45
|
+
</wsu:Timestamp>
|
46
|
+
</wsse:Security>
|
47
|
+
</env:Header>
|
48
|
+
</env:Envelope>
|
@@ -1,16 +1,20 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
</
|
2
|
+
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
|
3
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
4
|
+
xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
|
5
|
+
<env:Body
|
6
|
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
|
7
|
+
wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
|
8
|
+
<cor:uploadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
|
9
|
+
<bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
|
10
|
+
<bxd:SenderId></bxd:SenderId>
|
11
|
+
<bxd:RequestId></bxd:RequestId>
|
12
|
+
<bxd:Timestamp></bxd:Timestamp>
|
13
|
+
<bxd:Language></bxd:Language>
|
14
|
+
<bxd:UserAgent></bxd:UserAgent>
|
15
|
+
<bxd:ReceiverId></bxd:ReceiverId>
|
16
|
+
</bxd:RequestHeader>
|
17
|
+
<bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
|
18
|
+
</cor:uploadFilein>
|
19
|
+
</env:Body>
|
20
|
+
</env:Envelope>
|
data/lib/sepafm.rb
CHANGED
@@ -1,25 +1,27 @@
|
|
1
|
-
require
|
2
|
-
require "nokogiri"
|
3
|
-
require "savon"
|
4
|
-
require "sepa/xml_parser"
|
5
|
-
require "sepa/client"
|
6
|
-
require "sepa/version"
|
1
|
+
require 'active_model'
|
7
2
|
require 'base64'
|
8
3
|
require 'nokogiri'
|
9
4
|
require 'openssl'
|
5
|
+
require 'savon'
|
10
6
|
require 'securerandom'
|
11
|
-
require 'sepa/application_request'
|
12
|
-
require 'sepa/filedescriptor'
|
13
|
-
require 'sepa/filetypeservice'
|
14
|
-
require 'sepa/signature'
|
15
|
-
require 'sepa/userfiletype'
|
16
7
|
require 'time'
|
17
|
-
require 'sepa/
|
8
|
+
require 'sepa/utilities'
|
9
|
+
require 'sepa/error_messages'
|
10
|
+
require 'sepa/attribute_checks'
|
11
|
+
require 'sepa/application_request'
|
18
12
|
require 'sepa/application_response'
|
19
|
-
require 'sepa/
|
13
|
+
require 'sepa/client'
|
14
|
+
require 'sepa/response'
|
15
|
+
require 'sepa/banks/nordea/nordea_response'
|
16
|
+
require 'sepa/banks/danske/danske_response'
|
20
17
|
require 'sepa/soap_builder'
|
21
|
-
require 'sepa/soap_danske'
|
22
|
-
require 'sepa/soap_nordea'
|
23
|
-
require 'sepa/
|
24
|
-
|
25
|
-
|
18
|
+
require 'sepa/banks/danske/soap_danske'
|
19
|
+
require 'sepa/banks/nordea/soap_nordea'
|
20
|
+
require 'sepa/version'
|
21
|
+
|
22
|
+
ROOT_PATH = File.expand_path('../../', __FILE__)
|
23
|
+
WSDL_PATH = "#{ROOT_PATH}/lib/sepa/wsdl"
|
24
|
+
SCHEMA_PATH = "#{ROOT_PATH}/lib/sepa/xml_schemas"
|
25
|
+
SCHEMA_FILE = "#{ROOT_PATH}/lib/sepa/xml_schemas/wsdl.xml"
|
26
|
+
AR_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/application_request"
|
27
|
+
SOAP_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/soap"
|
@@ -9,21 +9,22 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.description = 'SEPA Financial Messages using Web Services'
|
10
10
|
spec.homepage = 'https://github.com/devlab-oy/sepa'
|
11
11
|
spec.license = 'MIT'
|
12
|
-
spec.authors = ['Joni Kanerva', 'Mika Myllynen', 'Tommi
|
12
|
+
spec.authors = ['Joni Kanerva', 'Mika Myllynen', 'Tommi Jarvinen']
|
13
13
|
spec.email = ['joni@devlab.fi']
|
14
14
|
spec.files = `git ls-files`.split($/)
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
|
-
spec.required_ruby_version = '
|
19
|
+
spec.required_ruby_version = '>= 2.0.0'
|
20
20
|
|
21
|
-
spec.add_dependency 'savon',
|
22
|
-
spec.add_dependency 'nokogiri',
|
21
|
+
spec.add_dependency 'savon', '~> 2.5'
|
22
|
+
spec.add_dependency 'nokogiri', '~> 1.6'
|
23
|
+
spec.add_dependency 'activemodel', '~> 4.1'
|
24
|
+
spec.add_dependency 'minitest', '~> 5.3'
|
23
25
|
|
24
|
-
spec.add_development_dependency 'bundler',
|
25
|
-
spec.add_development_dependency 'rake',
|
26
|
-
spec.add_development_dependency '
|
27
|
-
spec.add_development_dependency '
|
28
|
-
spec.add_development_dependency 'json', '~> 1.8.0'
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.3'
|
28
|
+
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.3'
|
29
|
+
spec.add_development_dependency 'dotenv', '~> 0.11'
|
29
30
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DanskeCertResponseTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
get_bank_cert_soap = Nokogiri::XML(File.open "#{DANSKE_TEST_RESPONSE_PATH}get_bank_cert.xml")
|
6
|
+
get_bank_cert_response = Sepa::DanskeResponse.new(get_bank_cert_soap, command: :get_bank_certificate)
|
7
|
+
|
8
|
+
create_certificate_soap = Nokogiri::XML(File.open "#{DANSKE_TEST_RESPONSE_PATH}create_cert.xml")
|
9
|
+
create_certificate_response = Sepa::DanskeResponse.new(create_certificate_soap, command: :create_certificate)
|
10
|
+
|
11
|
+
##
|
12
|
+
# Tests for get bank certificate
|
13
|
+
|
14
|
+
test 'should have correct bank signing cert with get_bank_certificate command' do
|
15
|
+
bank_signing_cert = get_bank_cert_response.bank_signing_cert
|
16
|
+
refute_nil bank_signing_cert
|
17
|
+
assert_equal bank_signing_cert.to_s, DANSKE_BANK_SIGNING_CERT
|
18
|
+
end
|
19
|
+
|
20
|
+
test 'should have corrent bank encryption cert with get bank certificate command' do
|
21
|
+
bank_encryption_cert = get_bank_cert_response.bank_encryption_cert
|
22
|
+
refute_nil bank_encryption_cert
|
23
|
+
assert_equal bank_encryption_cert.to_s, DANSKE_BANK_ENCRYPTION_CERT
|
24
|
+
end
|
25
|
+
|
26
|
+
test 'should have correct bank root cert with get bank certificate command' do
|
27
|
+
bank_root_cert = get_bank_cert_response.bank_root_cert
|
28
|
+
refute_nil bank_root_cert
|
29
|
+
assert_equal bank_root_cert.to_s, DANSKE_BANK_ROOT_CERT
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Tests for create certificate
|
34
|
+
|
35
|
+
test 'should have own encryption certificate with create certificate command' do
|
36
|
+
own_encryption_cert = create_certificate_response.own_encryption_cert
|
37
|
+
refute_nil own_encryption_cert
|
38
|
+
assert own_encryption_cert.respond_to? :sign
|
39
|
+
end
|
40
|
+
|
41
|
+
test 'should have on signing certificate with create certificate command' do
|
42
|
+
own_signing_cert = create_certificate_response.own_signing_cert
|
43
|
+
refute_nil own_signing_cert
|
44
|
+
assert own_signing_cert.respond_to? :sign
|
45
|
+
end
|
46
|
+
|
47
|
+
test 'should have correct CA certificate with create certificate command' do
|
48
|
+
ca_certificate = create_certificate_response.ca_certificate
|
49
|
+
refute_nil ca_certificate
|
50
|
+
assert ca_certificate.respond_to? :sign
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DanskeCertSoapBuilderTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
@create_cert_params = danske_create_cert_params
|
6
|
+
|
7
|
+
@cert_request = Sepa::SoapBuilder.new(@create_cert_params)
|
8
|
+
@enc_private_key = OpenSSL::PKey::RSA.new File.read("#{DANSKE_TEST_KEYS_PATH}/enc_private_key.pem")
|
9
|
+
@doc = Nokogiri::XML(@cert_request.to_xml)
|
10
|
+
|
11
|
+
# Namespaces
|
12
|
+
@pkif = 'http://danskebank.dk/PKI/PKIFactoryService'
|
13
|
+
@dsig = 'http://www.w3.org/2000/09/xmldsig#'
|
14
|
+
@xenc = 'http://www.w3.org/2001/04/xmlenc#'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_raise_error_if_command_missing
|
18
|
+
@create_cert_params.delete(:command)
|
19
|
+
|
20
|
+
assert_raises(ArgumentError) do
|
21
|
+
Sepa::SoapBuilder.new(@create_cert_params)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_sender_id_is_properly_set
|
26
|
+
sender_id = @doc.at("SenderId", "xmlns" => @pkif).content
|
27
|
+
assert_equal sender_id, @create_cert_params[:customer_id]
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_customer_id_is_properly_set
|
31
|
+
customer_id = @doc.at("CustomerId", "xmlns" => @pkif).content
|
32
|
+
assert_equal customer_id, @create_cert_params[:customer_id]
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_request_id_is_properly_set
|
36
|
+
request_id = @doc.at("RequestId", 'xmlns' => @pkif).content
|
37
|
+
|
38
|
+
assert request_id =~ /^[0-9A-F]+$/i
|
39
|
+
assert_equal request_id.length, 10
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_timestamp_is_set_correctly
|
43
|
+
timestamp_node = @doc.at(
|
44
|
+
"Timestamp", 'xmlns' => @pkif
|
45
|
+
)
|
46
|
+
timestamp = Time.strptime(timestamp_node.content, '%Y-%m-%dT%H:%M:%S%z')
|
47
|
+
|
48
|
+
assert timestamp <= Time.now && timestamp > (Time.now - 60)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_interface_version_is_properly_set
|
52
|
+
interface_version = @doc.at("InterfaceVersion", 'xmlns' => @pkif).content
|
53
|
+
assert_equal interface_version, '1'
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_certificate_is_added_properly
|
57
|
+
embedded_cert = @doc.at("X509Certificate", 'xmlns' => @dsig).content.gsub(/\s+/, "")
|
58
|
+
|
59
|
+
actual_cert = @create_cert_params[:enc_cert]
|
60
|
+
actual_cert = actual_cert.split('-----BEGIN CERTIFICATE-----')[1]
|
61
|
+
actual_cert = actual_cert.split('-----END CERTIFICATE-----')[0]
|
62
|
+
actual_cert.gsub!(/\s+/, "")
|
63
|
+
|
64
|
+
assert_equal embedded_cert, actual_cert
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_encrypted_key_is_added_properly_and_can_be_decrypted
|
68
|
+
enc_key = @doc.css("CipherValue", 'xmlns' => @xenc)[0].content
|
69
|
+
enc_key = Base64.decode64(enc_key)
|
70
|
+
assert @enc_private_key.private_decrypt(enc_key)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_encypted_data_is_added_properly_and_can_be_decrypted
|
74
|
+
enc_key = @doc.css("CipherValue", 'xmlns' => @xenc)[0].content
|
75
|
+
enc_key = Base64.decode64(enc_key)
|
76
|
+
key = @enc_private_key.private_decrypt(enc_key)
|
77
|
+
|
78
|
+
encypted_data = @doc.css("CipherValue", 'xmlns' => @xenc)[1].content
|
79
|
+
encypted_data = Base64.decode64(encypted_data)
|
80
|
+
iv = encypted_data[0, 8]
|
81
|
+
encypted_data = encypted_data[8, encypted_data.length]
|
82
|
+
|
83
|
+
decipher = OpenSSL::Cipher.new('DES-EDE3-CBC')
|
84
|
+
decipher.decrypt
|
85
|
+
decipher.key = key
|
86
|
+
decipher.iv = iv
|
87
|
+
|
88
|
+
decrypted_data = decipher.update(encypted_data) + decipher.final
|
89
|
+
|
90
|
+
assert_respond_to(Nokogiri::XML(decrypted_data), :css)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_should_validate_against_schema
|
94
|
+
Dir.chdir(SCHEMA_PATH) do
|
95
|
+
xsd = Nokogiri::XML::Schema(IO.read('soap.xsd'))
|
96
|
+
assert xsd.valid?(@doc)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|