You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ ./python -m test -m test_aead_aes_gcm test_socket
Run tests sequentially
0:00:00 [1/1] test_socket
test test_socket failed -- Traceback (most recent call last):
File "/home/heimes/dev/python/cpython/Lib/test/support/__init__.py", line 556, in wrapperreturn func(*args, **kw)
File "/home/heimes/dev/python/cpython/Lib/test/test_socket.py", line 5515, in test_aead_aes_gcm
res = op.recv(assoclen +len(plain) + taglen)
OSError: [Errno 22] Invalid argument
The tests were written and passed under Linux Kernel 4.7. I was under the assumption that the API is stable. But the most recent version 4.9 has changed the API for AEAD mode slightly. libkcapi project maintain a well written documentation of the Kernel crypto API, smuellerDD/libkcapi@be242c3
Fedora 24 and 25 are affected. I'm going to update the tests. Downstream distributors: Feel free to disable the test in the mean time. The feature is not critical.
recv(64) works. I need to figure out why 64 and what's in the extra bytes.
matejcik commented on Feb 2, 2017
matejcikmannequin
Mannequin
More actions
The "'0' * taglen" part is now considered part of plaintext. Which makes a lot of sense :)
Removing the "empty taglen" fixes the encryption part of the tests for me. Similarly, for the decryption test, we must only read and check the message without the tag.
Confirmed that test_socket_aead_kernel49.patch fixes the problem for Ubuntu 17.04. It'll probably fix it for Debian Stretch too give its kernel version number, but I haven't tested that yet.
Even when the fix will be backported to Python 3.6, please keep the issue open until Christian Heimes has time to review the kernel changes. Copy/paste of his message on the PR#133:
"I still haven't had time to study the changes in the Linux kernel. Let's merge the PR to silence the test error. Please leave the ticket open as reminder for me."
This patch works for me as well. Debian testing, kernel:
Linux version 4.9.0-3-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170425 (Debian 6.3.0-16) ) #1 SMP Debian 4.9.25-1 (2017-05-02)
In the 3.6.1 Python release, test_socket fails with:
test test_socket failed -- Traceback (most recent call last):
File "/home/nas/src/cpython/Lib/test/support/__init__.py", line 556, in wrapperreturn func(*args, **kw)
File "/home/nas/src/cpython/Lib/test/test_socket.py", line 5497, in test_aead_aes_gcm
res = op.recv(assoclen +len(plain) + taglen)
OSError: [Errno 22] Invalid argument
This bug can be closed. The fix is in the master branch (commit 9764c15) and has also been backported to the "3.6" branch (git commit 4ac01f0). The fork for 3.6.1rc1 happened before the backport which is why 3.6.1 doesn't have the fix.
Activity
tiran commentedon Jan 19, 2017
The tests were written and passed under Linux Kernel 4.7. I was under the assumption that the API is stable. But the most recent version 4.9 has changed the API for AEAD mode slightly. libkcapi project maintain a well written documentation of the Kernel crypto API,
smuellerDD/libkcapi@be242c3
Fedora 24 and 25 are affected. I'm going to update the tests. Downstream distributors: Feel free to disable the test in the mean time. The feature is not critical.
tiran commentedon Jan 19, 2017
recv(64) works. I need to figure out why 64 and what's in the extra bytes.
matejcik commentedon Feb 2, 2017
The "'0' * taglen" part is now considered part of plaintext. Which makes a lot of sense :)
Removing the "empty taglen" fixes the encryption part of the tests for me. Similarly, for the decryption test, we must only read and check the message without the tag.
matejcik commentedon Feb 2, 2017
the attached patch fixes the test for me
vstinner commentedon Feb 10, 2017
I confirm that test_socket pass with test_socket_aead_kernel49.patch on my Fedora 25 (kernel 4.9.5-200.fc25.x86_64).
I would be nice to fix test_socket which is currently broken ;-)
warsaw commentedon Feb 11, 2017
Confirmed that test_socket_aead_kernel49.patch fixes the problem for Ubuntu 17.04. It'll probably fix it for Debian Stretch too give its kernel version number, but I haven't tested that yet.
tiran commentedon Feb 11, 2017
Thx Barry,
I'll try to find some time to verify the new Kernel API and commit the patch early next week.
vstinner commentedon Feb 15, 2017
@matejcik: would you mind to create a pull request for your patch?
vstinner commentedon Feb 16, 2017
Even when the fix will be backported to Python 3.6, please keep the issue open until Christian Heimes has time to review the kernel changes. Copy/paste of his message on the PR#133:
"I still haven't had time to study the changes in the Linux kernel. Let's merge the PR to silence the test error. Please leave the ticket open as reminder for me."
nascheme commentedon Jun 9, 2017
This patch works for me as well. Debian testing, kernel:
Linux version 4.9.0-3-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170425 (Debian 6.3.0-16) ) #1 SMP Debian 4.9.25-1 (2017-05-02)
In the 3.6.1 Python release, test_socket fails with:
vstinner commentedon Jun 9, 2017
The fix was also merged to master. It should be backported to 3.6. Neil, do
you want to try to backport it?
nascheme commentedon Jun 9, 2017
This bug can be closed. The fix is in the master branch (commit 9764c15) and has also been backported to the "3.6" branch (git commit 4ac01f0). The fork for 3.6.1rc1 happened before the backport which is why 3.6.1 doesn't have the fix.
vstinner commentedon Jun 10, 2017
Oh ok, fine. Hopefully, 3.6.2 is coming in next days ;-)
vstinner commentedon Oct 9, 2017
FYI the merged fix is:
commit 9764c15
Author: matejcik <matejcik@gmail.com>
Date: Thu Feb 16 14:41:31 2017 +0100