mirror of
https://github.com/brain-tec/account_ebics.git
synced 2024-11-22 12:12:03 +00:00
[13.0][IMP]SWIFT 3SKey support (#18)
This commit is contained in:
parent
fef1892f28
commit
8c21ac4e0d
@ -24,6 +24,7 @@ Remark:
|
|||||||
|
|
||||||
The EBICS 'Test Mode' for uploading orders requires Fintech 4.3.4 or higher.
|
The EBICS 'Test Mode' for uploading orders requires Fintech 4.3.4 or higher.
|
||||||
|
|
||||||
|
SWIFT 3SKey support requires Fintech 6.4 or higher.
|
||||||
|
|
|
|
||||||
|
|
||||||
We also recommend to consider the installation of the following modules:
|
We also recommend to consider the installation of the following modules:
|
||||||
@ -136,5 +137,5 @@ You can also find this information in the doc folder of this module (file EBICS_
|
|||||||
Known Issues / Roadmap
|
Known Issues / Roadmap
|
||||||
======================
|
======================
|
||||||
|
|
||||||
- add support for 3SKEY signed transactions
|
|
||||||
- add support for EBICS 3.0
|
- add support for EBICS 3.0
|
||||||
|
- add support to import externally generated keys & certificates (currently only 3SKey signature certificate)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'EBICS banking protocol',
|
'name': 'EBICS banking protocol',
|
||||||
'version': '13.0.1.1.4',
|
'version': '13.0.1.2.0',
|
||||||
'license': 'LGPL-3',
|
'license': 'LGPL-3',
|
||||||
'author': 'Noviat',
|
'author': 'Noviat',
|
||||||
'website': 'www.noviat.com',
|
'website': 'www.noviat.com',
|
||||||
|
@ -93,6 +93,14 @@ class EbicsUserID(models.Model):
|
|||||||
help="EBICS Public Bank Keys to be checked for consistency.")
|
help="EBICS Public Bank Keys to be checked for consistency.")
|
||||||
ebics_public_bank_keys_fn = fields.Char(
|
ebics_public_bank_keys_fn = fields.Char(
|
||||||
string='EBICS Public Bank Keys Filename', readonly=True)
|
string='EBICS Public Bank Keys Filename', readonly=True)
|
||||||
|
swift_3skey = fields.Boolean(
|
||||||
|
string='Enable 3SKey support',
|
||||||
|
help="Transactions for this user will be signed "
|
||||||
|
"by means of the SWIFT 3SKey token.")
|
||||||
|
swift_3skey_certificate = fields.Binary(
|
||||||
|
string='3SKey Certficate')
|
||||||
|
swift_3skey_certificate_fn = fields.Char(
|
||||||
|
string='EBICS Public Bank Keys Filename')
|
||||||
# X.509 Distinguished Name attributes used to
|
# X.509 Distinguished Name attributes used to
|
||||||
# create self-signed X.509 certificates
|
# create self-signed X.509 certificates
|
||||||
ebics_key_x509 = fields.Boolean(
|
ebics_key_x509 = fields.Boolean(
|
||||||
@ -168,6 +176,16 @@ class EbicsUserID(models.Model):
|
|||||||
raise UserError(_(
|
raise UserError(_(
|
||||||
"The passphrase must be at least 8 characters long"))
|
"The passphrase must be at least 8 characters long"))
|
||||||
|
|
||||||
|
@api.onchange('signature_class')
|
||||||
|
def _onchange_signature_class(self):
|
||||||
|
if self.signature_class == 'T':
|
||||||
|
self.swift_3skey = False
|
||||||
|
|
||||||
|
@api.onchange('swift_3skey')
|
||||||
|
def _onchange_swift_3skey(self):
|
||||||
|
if self.swift_3skey:
|
||||||
|
self.ebics_key_x509 = True
|
||||||
|
|
||||||
def set_to_draft(self):
|
def set_to_draft(self):
|
||||||
return self.write({'state': 'draft'})
|
return self.write({'state': 'draft'})
|
||||||
|
|
||||||
@ -192,6 +210,10 @@ class EbicsUserID(models.Model):
|
|||||||
raise UserError(
|
raise UserError(
|
||||||
_("Set a passphrase."))
|
_("Set a passphrase."))
|
||||||
|
|
||||||
|
if not self.swift_3skey and not self.swift_3skey_certificate:
|
||||||
|
raise UserError(
|
||||||
|
_("3SKey certificate missing."))
|
||||||
|
|
||||||
ebics_version = self.ebics_config_id.ebics_version
|
ebics_version = self.ebics_config_id.ebics_version
|
||||||
try:
|
try:
|
||||||
keyring = EbicsKeyRing(
|
keyring = EbicsKeyRing(
|
||||||
@ -214,6 +236,14 @@ class EbicsUserID(models.Model):
|
|||||||
self.ebics_config_id._check_ebics_keys()
|
self.ebics_config_id._check_ebics_keys()
|
||||||
if not os.path.isfile(self.ebics_keys_fn):
|
if not os.path.isfile(self.ebics_keys_fn):
|
||||||
try:
|
try:
|
||||||
|
# TODO:
|
||||||
|
# enable import of all type of certicates: A00x, X002, E002
|
||||||
|
if self.swift_3skey:
|
||||||
|
kwargs = {
|
||||||
|
self.ebics_config_id.ebics_key_version:
|
||||||
|
base64.decodestring(self.swift_3skey_certificate),
|
||||||
|
}
|
||||||
|
user.import_certificates(**kwargs)
|
||||||
user.create_keys(
|
user.create_keys(
|
||||||
keyversion=self.ebics_config_id.ebics_key_version,
|
keyversion=self.ebics_config_id.ebics_key_version,
|
||||||
bitlength=self.ebics_config_id.ebics_key_bitlength)
|
bitlength=self.ebics_config_id.ebics_key_bitlength)
|
||||||
@ -223,6 +253,11 @@ class EbicsUserID(models.Model):
|
|||||||
error += '\n' + str(exctype) + '\n' + str(value)
|
error += '\n' + str(exctype) + '\n' + str(value)
|
||||||
raise UserError(error)
|
raise UserError(error)
|
||||||
|
|
||||||
|
if self.swift_3skey and not self.ebics_key_x509:
|
||||||
|
raise UserError(_(
|
||||||
|
"The current version of this module "
|
||||||
|
"requires to X509 support when enabling 3SKey"))
|
||||||
|
|
||||||
if self.ebics_key_x509:
|
if self.ebics_key_x509:
|
||||||
dn_attrs = {
|
dn_attrs = {
|
||||||
'commonName': self.ebics_key_x509_dn_cn,
|
'commonName': self.ebics_key_x509_dn_cn,
|
||||||
|
@ -358,9 +358,8 @@ ul.auto-toc {
|
|||||||
</ul>
|
</ul>
|
||||||
<p>Remark:</p>
|
<p>Remark:</p>
|
||||||
<p>The EBICS 'Test Mode' for uploading orders requires Fintech 4.3.4 or higher.</p>
|
<p>The EBICS 'Test Mode' for uploading orders requires Fintech 4.3.4 or higher.</p>
|
||||||
<div class="line-block">
|
<p>SWIFT 3SKey support requires Fintech 6.4 or higher.
|
||||||
<div class="line"><br /></div>
|
|</p>
|
||||||
</div>
|
|
||||||
<p>We also recommend to consider the installation of the following modules:</p>
|
<p>We also recommend to consider the installation of the following modules:</p>
|
||||||
<div class="line-block">
|
<div class="line-block">
|
||||||
<div class="line"><br /></div>
|
<div class="line"><br /></div>
|
||||||
@ -472,8 +471,8 @@ You can also find this information in the doc folder of this module (file EBICS_
|
|||||||
<div class="section" id="known-issues-roadmap">
|
<div class="section" id="known-issues-roadmap">
|
||||||
<h2>Known Issues / Roadmap</h2>
|
<h2>Known Issues / Roadmap</h2>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>add support for 3SKEY signed transactions</li>
|
|
||||||
<li>add support for EBICS 3.0</li>
|
<li>add support for EBICS 3.0</li>
|
||||||
|
<li>add support to import externally generated keys & certificates (currently only 3SKey signature certificate)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,13 +38,18 @@
|
|||||||
help="Use this button to bypass the EBICS initialization (e.g. in case you have manually transferred active EBICS keys from another system."/>
|
help="Use this button to bypass the EBICS initialization (e.g. in case you have manually transferred active EBICS keys from another system."/>
|
||||||
<field name="state" widget="statusbar"/>
|
<field name="state" widget="statusbar"/>
|
||||||
</header>
|
</header>
|
||||||
<group name="main">
|
<group name="main" attrs="{'readonly': [('state', '!=', 'draft')]}">
|
||||||
<field name="ebics_keys_found" invisible="1"/>
|
<field name="ebics_keys_found" invisible="1"/>
|
||||||
<field name="ebics_keys_fn" invisible="1"/>
|
<field name="ebics_keys_fn" invisible="1"/>
|
||||||
<group name="main-left">
|
<group name="main-left">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="ebics_passphrase" password="True"
|
<field name="ebics_passphrase" password="True"
|
||||||
attrs="{'required': [('state', '=', 'draft')]}"/>
|
attrs="{'required': [('state', '=', 'draft')]}"/>
|
||||||
|
<field name="swift_3skey"
|
||||||
|
attrs="{'invisible': [('signature_class', '=', 'T')]}"/>
|
||||||
|
<field name="swift_3skey_certificate_fn" invisible="1"/>
|
||||||
|
<field name="swift_3skey_certificate" filename="swift_3skey_certificate_fn"
|
||||||
|
attrs="{'invisible': [('swift_3skey', '=', False)], 'required': [('swift_3skey', '=', True)]}"/>
|
||||||
<field name="active"/>
|
<field name="active"/>
|
||||||
</group>
|
</group>
|
||||||
<group name="main-right">
|
<group name="main-right">
|
||||||
@ -53,7 +58,7 @@
|
|||||||
<field name="ebics_key_x509"/>
|
<field name="ebics_key_x509"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group col="4" name="dn" attrs="{'invisible': [('ebics_key_x509', '=', False)]}">
|
<group col="4" name="dn" attrs="{'invisible': [('ebics_key_x509', '=', False)], 'readonly': [('state', '!=', 'draft')]}">
|
||||||
<group colspan="4" col="1">
|
<group colspan="4" col="1">
|
||||||
<strong>Distinguished Name attributes used to create self-signed X.509 certificates:</strong>
|
<strong>Distinguished Name attributes used to create self-signed X.509 certificates:</strong>
|
||||||
</group>
|
</group>
|
||||||
|
Loading…
Reference in New Issue
Block a user