468e01d16472b3442551849199edacb711f3e0ba
Commit 82c0c4fdd2
("Fallback to hashlib instead of deprecated libs")
had changed the hmac import to try the import from
the hashlib module, but there appears to be 'hmac'
underneath hashlib in neither Python 2 nor Python 3, but
it's a separate module.
Test on Debian testing with Python 2.7.18:
$ python2
Python 2.7.18 (default, Aug 1 2022, 06:23:55)
[GCC 12.1.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Jedi is not installed, falling back to readline
>>> from hashlib import hmac as HMAC
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name hmac
>>> import hmac as HMAC
>>>
The same with Python 3.10.6:
$ python3
Python 3.10.6 (main, Aug 10 2022, 11:19:32) [GCC 12.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Using Jedi for tab completion.
>>> from hashlib import hmac as HMAC
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'hmac' from 'hashlib' (/usr/lib/python3.10/hashlib.py)
>>> import hmac as HMAC
>>>
Even the official Python 3.10.6 documentation for the hashlib
module use plain hmac import [1] in its example:
>>> import hmac, hashlib
>>> m = hmac.new(b'secret key', digestmod=hashlib.blake2s)
>>> m.update(b'message')
>>> m.hexdigest()
'e3c8102868d28b5ff85fc35dda07329970d1a01e273c37481326fe0c861c8142'
Therefore, revert that change to the import and use the direct hmac
import again to make the case where PyCrypto is not installed work
again.
[1] https://docs.python.org/3/library/hashlib.html
Fixes: #223
Virtual Smart Card Architecture
Virtual Smart Card Architecture is an umbrella project for various projects concerned with the emulation of different types of smart card readers or smart cards themselves.
Currently the following projects are part of Virtual Smart Card Architecture:
- Virtual Smart Card
- Remote Smart Card Reader
- Android Smart Card Emulator
- PC/SC Relay
- USB CCID Emulator
Please refer to our project's website for more information.
Description
Languages
C
40.3%
Python
32.2%
Java
11.8%
M4
6.8%
C++
6.7%
Other
2.2%