[Freeipa-devel] [PATCH 537] ipapython: port p11helper C code to Python

Jan Cholasta jcholast at redhat.com
Tue Jan 19 10:43:41 UTC 2016


On 12.1.2016 16:06, Martin Basti wrote:
>
>
> On 12.01.2016 14:44, Jan Cholasta wrote:
>> On 12.1.2016 13:32, Martin Basti wrote:
>>>
>>>
>>> On 12.01.2016 12:24, Jan Cholasta wrote:
>>>> On 12.1.2016 12:17, Martin Basti wrote:
>>>>>
>>>>>
>>>>> On 12.01.2016 10:19, Jan Cholasta wrote:
>>>>>> On 12.1.2016 09:32, Martin Basti wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 07.01.2016 14:13, Jan Cholasta wrote:
>>>>>>>> On 7.1.2016 09:50, Jan Cholasta wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> the attached patch ports the _ipap11helper module to python-cffi.
>>>>>>>>>
>>>>>>>>> Combined with my patch 536 [1], this makes ipapython architecture
>>>>>>>>> independent.
>>>>>>>>
>>>>>>>> Updated patch attached.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> I tried to run DNSSEC tests and it failed unexpectedly:
>>>>>>>
>>>>>>> Jan 12 08:28:06 master.ipa.test
>>>>>>> /usr/libexec/ipa/ipa-ods-exporter[8667]:
>>>>>>> Connected
>>>>>>> Jan 12 08:28:06 master.ipa.test
>>>>>>> /usr/libexec/ipa/ipa-ods-exporter[8667]:
>>>>>>> replica pub keys in LDAP: set(['0x51df7c70b9869a7dd2bbd27335dba3f8',
>>>>>>> '0xd8538e634797420ca86cda420234443c'])
>>>>>>> Jan 12 08:28:06 master.ipa.test
>>>>>>> /usr/libexec/ipa/ipa-ods-exporter[8667]:
>>>>>>> replica pub keys in SoftHSM:
>>>>>>> set(['0x51df7c70b9869a7dd2bbd27335dba3f8',
>>>>>>> '0x1f7241a64d69ced6c0a14f6999410c59'])
>>>>>>> Jan 12 08:28:06 master.ipa.test
>>>>>>> /usr/libexec/ipa/ipa-ods-exporter[8667]:
>>>>>>> new replica keys in LDAP:
>>>>>>> set(['0xd8538e634797420ca86cda420234443c'])
>>>>>>> Jan 12 08:28:06 master.ipa.test
>>>>>>> /usr/libexec/ipa/ipa-ods-exporter[8667]:
>>>>>>> label=dnssec-replica:replica1.ipa.test.,
>>>>>>> id=d8538e634797420ca86cda420234443c,
>>>>>>> data=30820122300d06092a864886f70d01010105
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: Traceback
>>>>>>> (most
>>>>>>> recent call last):
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: File
>>>>>>> "/usr/libexec/ipa/ipa-ods-exporter", line 664, in <module>
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]:
>>>>>>> ldap2master_replica_keys_sync(log, ldapkeydb, localhsm)
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: File
>>>>>>> "/usr/libexec/ipa/ipa-ods-exporter", line 313, in
>>>>>>> ldap2master_replica_keys_sync
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]:
>>>>>>> localhsm.import_public_key(new_key_ldap,
>>>>>>> new_key_ldap['ipapublickey'])
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: File
>>>>>>> "/usr/lib/python2.7/site-packages/ipapython/dnssec/localhsm.py",
>>>>>>> line
>>>>>>> 173, in import_public_key
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: h =
>>>>>>> self.p11.import_public_key(**params)
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: File
>>>>>>> "/usr/lib/python2.7/site-packages/ipapython/p11helper.py", line
>>>>>>> 1498, in
>>>>>>> import_public_key
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: pkey =
>>>>>>> d2i_PUBKEY(NULL, data_ptr, data_length)
>>>>>>> Jan 12 08:28:06 master.ipa.test ipa-ods-exporter[8667]: TypeError:
>>>>>>> 'int(*)(EVP_PKEY *, unsigned char * *)' expects 2 arguments, got 3
>>>>>>> Jan 12 08:28:06 master.ipa.test systemd[1]:
>>>>>>> ipa-ods-exporter.service:
>>>>>>> Main process exited, code=exited, status=1/FAILURE
>>>>>>> Jan 12 08:28:06 master.ipa.test systemd[1]:
>>>>>>> ipa-ods-exporter.service:
>>>>>>> Unit entered failed state.
>>>>>>> Jan 12 08:28:06 master.ipa.test systemd[1]:
>>>>>>> ipa-ods-exporter.service:
>>>>>>> Failed with result 'exit-code'.
>>>>>>>
>>>>>>> I haven't seen any other errors
>>>>>>
>>>>>> Updated patch attached. Added a patch which replaces calls to
>>>>>> libcrypto with calls to python-cryptography.
>>>>>>
>>>>>
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] Done
>>>>> configuring
>>>>> DNS (named).
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] Configuring DNS
>>>>> key synchronization service (ipa-dnskeysyncd)
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [1/7]: checking
>>>>> status
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [2/7]: setting
>>>>> up bind-dyndb-ldap working directory
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [3/7]: setting
>>>>> up kerberos principal
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [4/7]: setting
>>>>> up SoftHSM
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [5/7]: adding
>>>>> DNSSEC containers
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [6/7]: creating
>>>>> replica keys
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] [error] Error:
>>>>> export_RSA_public_key: internal error: EVP_PKEY_set1_RSA failed
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10]
>>>>> ipa.ipapython.install.cli.install_tool(Server): ERROR
>>>>> export_RSA_public_key: internal error: EVP_PKEY_set1_RSA failed
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10]
>>>>> ipa.ipapython.install.cli.install_tool(Server): ERROR    The
>>>>> ipa-server-install command failed. See /var/log/ipaserver-install.log
>>>>> for more information
>>>>> [ipa.ipatests.test_integration.host.Host.master.cmd10] Exit code: 1
>>>>>
>>>>> ipa-server-install.log
>>>>> ....
>>>>>    File
>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/service.py",
>>>>> line 436, in run_step
>>>>>      method()
>>>>>    File
>>>>> "/usr/lib/python2.7/site-packages/ipaserver/install/dnskeysyncinstance.py",
>>>>>
>>>>>
>>>>> line 342, in __setup_replica_keys
>>>>>      public_key_blob = p11.export_public_key(public_key_handle)
>>>>>    File "/usr/lib/python2.7/site-packages/ipapython/p11helper.py",
>>>>> line
>>>>> 1275, in export_public_key
>>>>>      return self._export_RSA_public_key(object)
>>>>>    File "/usr/lib/python2.7/site-packages/ipapython/p11helper.py",
>>>>> line
>>>>> 1240, in _export_RSA_public_key
>>>>>      raise Error("export_RSA_public_key: internal error: "
>>>>>
>>>>> 2016-01-12T11:00:29Z DEBUG The ipa-server-install command failed,
>>>>> exception: Error: export_RSA_public_key: internal error:
>>>>> EVP_PKEY_set1_RSA failed
>>>>> 2016-01-12T11:00:29Z ERROR export_RSA_public_key: internal error:
>>>>> EVP_PKEY_set1_RSA failed
>>>>
>>>> Updated patch 538 attached.
>>>>
>>> Jan 12 12:31:43 master.ipa.test
>>> /usr/libexec/ipa/ipa-ods-exporter[31178]: Connected
>>> Jan 12 12:31:44 master.ipa.test
>>> /usr/libexec/ipa/ipa-ods-exporter[31178]: replica pub keys in LDAP:
>>> set(['0xf5edad67436d0ed36b75c3a70216fa43',
>>> '0x7164a931484d505f1e249e3dcbc313e2'])
>>> Jan 12 12:31:44 master.ipa.test
>>> /usr/libexec/ipa/ipa-ods-exporter[31178]: replica pub keys in SoftHSM:
>>> set(['0xf5edad67436d0ed36b75c3a70216fa43',
>>> '0x7164a931484d505f1e249e3dcbc313e2', '0x28e302ae6b6ee7e9284cd5f6
>>> Jan 12 12:31:44 master.ipa.test
>>> /usr/libexec/ipa/ipa-ods-exporter[31178]: new replica keys in LDAP:
>>> set([])
>>> Jan 12 12:31:44 master.ipa.test
>>> /usr/libexec/ipa/ipa-ods-exporter[31178]: obsolete replica keys in local
>>> HSM: set(['0x28e302ae6b6ee7e9284cd5f61aadbbe7'])
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: Traceback (most
>>> recent call last):
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: File
>>> "/usr/libexec/ipa/ipa-ods-exporter", line 664, in <module>
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]:
>>> ldap2master_replica_keys_sync(log, ldapkeydb, localhsm)
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: File
>>> "/usr/libexec/ipa/ipa-ods-exporter", line 321, in
>>> ldap2master_replica_keys_sync
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]:
>>> localhsm.replica_pubkeys_wrap[key_id]['ipk11wrap'] = False
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: File
>>> "/usr/lib/python2.7/site-packages/ipapython/dnssec/localhsm.py", line
>>> 65, in __setitem__
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: return
>>> self.p11.set_attribute(self.handle, attrs_name2id[key], value)
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: File
>>> "/usr/lib/python2.7/site-packages/ipapython/p11helper.py", line 1661, in
>>> set_attribute
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]:
>>> sizeof(CK_ATTRIBUTE)))
>>> Jan 12 12:31:44 master.ipa.test ipa-ods-exporter[31178]: TypeError: an
>>> integer is required
>>> Jan 12 12:31:44 master.ipa.test systemd[1]: ipa-ods-exporter.service:
>>> Main process exited, code=exited, status=1/FAILURE
>>>
>>
>> Updated patch 537 attached.
>>
> Jan 12 15:04:10 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: Connected
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: replica pub keys in LDAP:
> set(['0x0e3dfd7343999d2ea7d17ac4ce15e4ca',
> '0x9fc77beeb4b8ef33402e4fbb67d9b5e1'])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: replica pub keys in SoftHSM:
> set(['0x0e3dfd7343999d2ea7d17ac4ce15e4ca',
> '0x9fc77beeb4b8ef33402e4fbb67d9b5e1'])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: new replica keys in LDAP: set([])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: obsolete replica keys in local
> HSM: set([])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: keys in local HSM & LDAP:
> set(['0x0e3dfd7343999d2ea7d17ac4ce15e4ca',
> '0x9fc77beeb4b8ef33402e4fbb67d9b5e1'])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: Updating attribute
> ipk11verifyrecover from "1" to "False"
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: master keys in local HSM: set([])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: master keys in LDAP HSM: set([])
> Jan 12 15:04:11 master.ipa.test
> /usr/libexec/ipa/ipa-ods-exporter[20652]: new master keys in local HSM:
> set([])
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: Traceback (most
> recent call last):
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/libexec/ipa/ipa-ods-exporter", line 665, in <module>
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]:
> master2ldap_master_keys_sync(log, ldapkeydb, localhsm)
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/libexec/ipa/ipa-ods-exporter", line 340, in
> master2ldap_master_keys_sync
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: ldapkeydb.flush()
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 311, in flush
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]:
> self._update_keys()
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 307, in _update_keys
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: key._update_key()
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 179, in _update_key
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]:
> self._cleanup_key()
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 170, in _cleanup_key
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: if
> self.get(attr, empty) == default_attrs[attr]:
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib64/python2.7/_abcoll.py", line 382, in get
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: return self[key]
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 132, in __getitem__
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: val =
> ldap_bool(val)
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: File
> "/usr/lib/python2.7/site-packages/ipapython/dnssec/ldapkeydb.py", line
> 39, in ldap_bool
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: raise
> AssertionError('invalid LDAP boolean "%s"' % val)
> Jan 12 15:04:11 master.ipa.test ipa-ods-exporter[20652]: AssertionError:
> invalid LDAP boolean "1"
> Jan 12 15:04:11 master.ipa.test systemd[1]: ipa-ods-exporter.service:
> Main process exited, code=exited, status=1/FAILURE
>
>
> You can run the dnssec test, it has been fixed.

Updated patches attached. The test now passes.

-- 
Jan Cholasta
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-jcholast-537.5-ipapython-port-p11helper-C-code-to-Python.patch
Type: text/x-patch
Size: 163225 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160119/4f6b1862/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-jcholast-538.2-ipapython-use-python-cryptography-instead-of-libcryp.patch
Type: text/x-patch
Size: 15055 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20160119/4f6b1862/attachment-0001.bin>


More information about the Freeipa-devel mailing list