Skip to content

Commit 66e1a4a

Browse files
committed
Release of version 1.4.3
1 parent 8b253be commit 66e1a4a

30 files changed

+117
-254
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@
33
[submodule "extras/optiga-trust-m/external/optiga"]
44
path = extras/optiga-trust-m/external/optiga
55
url = https://github.com/Infineon/optiga-trust-m.git
6+
[submodule "extras/optiga-trust-m/external/libusb"]
7+
path = extras/optiga-trust-m/external/libusb
8+
url = https://github.com/libusb/libusb.git

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## 1.4.3 (2024-11-29)
9+
10+
### Changed
11+
- Updated optiga-trust-m module to v5.3.0
12+
- Fixed sample preparation config
13+
- Improve permission handling for libusb on Linux
14+
- Improved the description and metadata of the Python package
15+
816
## 1.4.2 (2024-08-29)
917

1018
### Fixed

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,25 @@ To install this Python module from pip, run the following command
4141
$ python -m pip install optigatrust
4242
```
4343

44+
### libusb: Allow access to USB device (USB-to-UART-interface)
45+
46+
If you want to use the `optigatrust` Python package with libusb and a USB-to-UART-interface from user space, the access has to be permitted with a udev rule.
47+
48+
#### Manual installation of the udev rule
49+
50+
When using the OPTIGA™ Trust M Perso2Go board, add the predefined [udev rule](./src/optigatrust/rules/90-optigatrust.rules) as follows (root permission needed).
51+
52+
```bash
53+
$ sudo cp ./src/optigatrust/rules/90-optigatrust.rules /etc/udev/rules.d/
54+
```
55+
#### Automatic installation of the udev rule (root permission needed)
56+
57+
Alternatively, you can also run the installation with root permissions which will install the udev rule for the OPTIGA™ Trust M Perso2Go board automatically.
58+
59+
```bash
60+
$ sudo python -m pip install optigatrust
61+
```
62+
4463
## Building from sources
4564

4665
### Building the OPTIGA™ Trust Host Library for C as library

extras/optiga-trust-m/download_libusb_windows.bat

Lines changed: 0 additions & 28 deletions
This file was deleted.

extras/optiga-trust-m/external/libusb

Submodule libusb added at d52e355

extras/optiga-trust-m/linux_i2c.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ if(UNIX)
1515
${TRUSTM_HOST_LIBRARY_PATH}/extras/pal/linux/pal_os_lock.c
1616
${TRUSTM_HOST_LIBRARY_PATH}/extras/pal/linux/pal_os_timer.c
1717
${TRUSTM_HOST_LIBRARY_PATH}/extras/pal/linux/pal_os_memory.c
18+
${TRUSTM_HOST_LIBRARY_PATH}/extras/pal/linux/pal_shared_mutex.c
1819
${TRUSTM_HOST_LIBRARY_PATH}/src/comms/optiga_comms_ifx_i2c.c
1920
${TRUSTM_HOST_LIBRARY_PATH}/src/comms/ifx_i2c/ifx_i2c.c
2021
${TRUSTM_HOST_LIBRARY_PATH}/src/comms/ifx_i2c/ifx_i2c_config.c

extras/optiga-trust-m/optiga-trust-m-libusb.vcxproj

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,14 @@ SPDX-License-Identifier: MIT
100100
<WarningLevel>Level3</WarningLevel>
101101
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
102102
<Optimization>Disabled</Optimization>
103-
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\include;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
103+
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\libusb;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
104104
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
105105
</ClCompile>
106106
<Link>
107107
<TargetMachine>MachineX86</TargetMachine>
108108
<GenerateDebugInformation>true</GenerateDebugInformation>
109109
<SubSystem>Windows</SubSystem>
110-
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\VS2019\MS32\static\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
110+
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\build\v142\Win32\Release\lib;$(SolutionDir)external\libusb\build\v143\Win32\Release\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
111111
<AdditionalDependencies>libusb-1.0.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
112112
<IgnoreAllDefaultLibraries>
113113
</IgnoreAllDefaultLibraries>
@@ -126,7 +126,7 @@ SPDX-License-Identifier: MIT
126126
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
127127
<WarningLevel>Level3</WarningLevel>
128128
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
129-
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\include;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
129+
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\libusb;$(SolutionDir)external\libusb\include;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
130130
<Optimization>Disabled</Optimization>
131131
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
132132
</ClCompile>
@@ -136,7 +136,7 @@ SPDX-License-Identifier: MIT
136136
<SubSystem>Windows</SubSystem>
137137
<EnableCOMDATFolding>true</EnableCOMDATFolding>
138138
<OptimizeReferences>true</OptimizeReferences>
139-
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\VS2019\MS32\static\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
139+
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\build\v142\Win32\Release\lib;$(SolutionDir)external\libusb\build\v143\Win32\Release\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
140140
<AdditionalDependencies>libusb-1.0.lib;legacy_stdio_definitions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
141141
<IgnoreAllDefaultLibraries>
142142
</IgnoreAllDefaultLibraries>
@@ -149,20 +149,18 @@ SPDX-License-Identifier: MIT
149149
</ItemDefinitionGroup>
150150
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
151151
<ClCompile>
152-
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\include;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
152+
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\libusb;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
153153
<PreprocessorDefinitions>OPTIGA_LIB_EXPORTS;OPTIGA_LIB_EXTERNAL="optiga_lib_config_m_v3_python.h";IFX_I2C_FRAME_SIZE=55;WIN32;__WIN32__;_WINDLL</PreprocessorDefinitions>
154154
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
155155
<WarningLevel>Level3</WarningLevel>
156156
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
157157
</ClCompile>
158158
<Link>
159-
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\VS2019\MS64\static\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
160159
<AdditionalDependencies>libusb-1.0.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
161160
<IgnoreAllDefaultLibraries>
162161
</IgnoreAllDefaultLibraries>
163162
<IgnoreSpecificDefaultLibraries>LIBCMT</IgnoreSpecificDefaultLibraries>
164-
<OptimizeReferences>true</OptimizeReferences>
165-
<EnableCOMDATFolding>true</EnableCOMDATFolding>
163+
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\build\v142\x64\Release\lib;$(SolutionDir)external\libusb\build\v143\x64\Release\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
166164
<SubSystem>Windows</SubSystem>
167165
</Link>
168166
<PostBuildEvent>
@@ -173,14 +171,14 @@ SPDX-License-Identifier: MIT
173171
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
174172
<ClCompile>
175173
<Optimization>Disabled</Optimization>
176-
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\include;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
174+
<AdditionalIncludeDirectories>$(SolutionDir)config;$(SolutionDir)include;$(SolutionDir)external\libusb\libusb;$(SolutionDir)external\optiga\extras\pal\libusb\include;$(SolutionDir)external\optiga\include;$(SolutionDir)external\optiga\include\cmd;$(SolutionDir)external\optiga\include\common;$(SolutionDir)external\optiga\include\comms;$(SolutionDir)external\optiga\include\ifx_i2c;$(SolutionDir)external\optiga\include\pal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
177175
<PreprocessorDefinitions>OPTIGA_LIB_EXPORTS;OPTIGA_LIB_EXTERNAL="optiga_lib_config_m_v3_python.h";IFX_I2C_FRAME_SIZE=55;WIN32;__WIN32__;_WINDLL</PreprocessorDefinitions>
178176
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
179177
<WarningLevel>Level3</WarningLevel>
180178
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
181179
</ClCompile>
182180
<Link>
183-
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\VS2019\MS64\static\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
181+
<AdditionalLibraryDirectories>$(SolutionDir)external\libusb\build\v142\x64\Release\lib;$(SolutionDir)external\libusb\build\v143\x64\Release\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
184182
<AdditionalDependencies>libusb-1.0.lib;legacy_stdio_definitions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
185183
<IgnoreAllDefaultLibraries>
186184
</IgnoreAllDefaultLibraries>

extras/optiga-trust-m/optiga-trust-m-uart.vcxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,6 @@ SPDX-License-Identifier: MIT
152152
<Link>
153153
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
154154
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
155-
<OptimizeReferences>true</OptimizeReferences>
156-
<EnableCOMDATFolding>true</EnableCOMDATFolding>
157155
<SubSystem>Windows</SubSystem>
158156
</Link>
159157
<PostBuildEvent>

setup.py

Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@
99
import os
1010
import shutil
1111

12-
def read(rel_path):
12+
13+
def _read_relative(rel_path):
1314
here = os.path.abspath(os.path.dirname(__file__))
14-
with codecs.open(os.path.join(here, rel_path), 'r') as fp:
15+
with codecs.open(os.path.join(here, rel_path), "r") as fp:
1516
return fp.read()
1617

17-
def __copy_rules(target):
18-
rules = 'rules/90-optigatrust.rules'
18+
19+
def _copy_rules(target):
20+
rules = "src/optigatrust/rules/90-optigatrust.rules"
1921

2022
if not os.path.exists(target):
2123
raise FileNotFoundError
@@ -25,83 +27,77 @@ def __copy_rules(target):
2527

2628

2729
def _install_rules():
28-
if sys.platform.startswith('linux'):
30+
if sys.platform.startswith("linux"):
2931
try:
30-
__copy_rules('/etc/udev/rules.d')
31-
except PermissionError:
32-
print('Install udev rules failed, install as sudo or manually')
33-
except:
34-
print('Install udev rules failed')
32+
_copy_rules("/etc/udev/rules.d")
33+
except PermissionError as e:
34+
print("Error: Installation of udev rules failed! Install as sudo or manually.")
35+
print(e)
36+
except Exception as e:
37+
print("Error: Installation of udev rules failed!")
38+
print(e)
39+
40+
41+
class _install(install):
42+
def run(self):
43+
# Installation
44+
install.run(self)
45+
# Post-install steps
46+
_install_rules()
47+
3548

3649
def __description():
37-
description_file = os.path.join("src" , "optigatrust", "DESCRIPTION.md")
38-
with open(description_file, 'r', encoding='utf-8') as f:
50+
description_file = os.path.join("src", "optigatrust", "DESCRIPTION.md")
51+
with open(description_file, "r", encoding="utf-8") as f:
3952
readme = f.read()
4053

4154
return readme
4255

56+
4357
def __get_version(rel_path):
44-
for line in read(rel_path).splitlines():
45-
if line.startswith('__version__'):
58+
for line in _read_relative(rel_path).splitlines():
59+
if line.startswith("__version__"):
4660
delim = '"' if '"' in line else "'"
4761
return line.split(delim)[1]
4862
else:
4963
raise RuntimeError("Unable to find version string.")
5064

51-
class OptigaTrustInstall(install):
52-
def run(self):
53-
self.do_egg_install()
54-
_install_rules()
55-
5665

57-
__name = 'optigatrust'
58-
__desc = 'A ctypes based Python wrapper for the OPTIGA™ Trust M Host Library for C'
59-
__url = 'https://github.com/infineon/python-optiga-trust'
60-
__author = 'Infineon Technologies AG'
61-
__author_email = 'DSSTechnicalSupport@infineon.com'
62-
__license = 'MIT'
63-
__keywords = 'ECDHE ECDSA RSA ECC X509 NISTP256 NIST384 OPTIGA TRUST TRUSTX TRUSTM'
66+
__name = "optigatrust"
67+
__desc = "A ctypes based Python wrapper for the OPTIGA™ Trust M Host Library for C"
68+
__url = "https://github.com/infineon/python-optiga-trust"
69+
__author = "Infineon Technologies AG"
70+
__author_email = "dsi-host-software@infineon.com"
71+
__license = "MIT"
72+
__keywords = "ECDHE ECDSA RSA ECC X509 NISTP256 NIST384 OPTIGA TRUST TRUSTX TRUSTM"
6473
__classifiers = [
65-
'Development Status :: 4 - Beta',
66-
'License :: OSI Approved :: MIT License',
67-
'Intended Audience :: Developers',
68-
'Programming Language :: Python',
69-
'Programming Language :: Python :: 3.7',
70-
'Operating System :: Microsoft :: Windows',
71-
'Operating System :: Microsoft :: Windows :: Windows 8',
72-
'Operating System :: Microsoft :: Windows :: Windows 8.1',
73-
'Operating System :: Microsoft :: Windows :: Windows 10',
74-
'Operating System :: POSIX :: Linux'
74+
"Development Status :: 5 - Production/Stable",
75+
"License :: OSI Approved :: MIT License",
76+
"Intended Audience :: Developers",
77+
"Programming Language :: Python",
78+
"Operating System :: Microsoft :: Windows",
79+
"Operating System :: POSIX :: Linux",
80+
"Framework :: Pytest"
7581
]
7682

7783
# Parameters for setup
78-
__packages = [
79-
'optigatrust',
80-
'optigatrust.enums',
81-
'optigatrust.rules',
82-
'optigatrust.lib'
83-
]
84+
__packages = ["optigatrust", "optigatrust.enums", "optigatrust.rules", "optigatrust.lib"]
8485

85-
__package_data = {
86-
'optigatrust': ['*.md'],
87-
'optigatrust.lib': ['*.dll', '*.so', '*.ini'],
88-
'optigatrust.enums': ['*.xml'],
89-
'optigatrust.rules': ['*.rules']
90-
}
86+
__package_data = {"optigatrust": ["*.md"], "optigatrust.lib": ["*.dll", "*.so", "*.ini"], "optigatrust.enums": ["*.xml"], "optigatrust.rules": ["*.rules"]}
9187

9288
__package_root_dir = "src/" + __name
9389

9490
__package_dir = {
9591
"optigatrust": __package_root_dir,
9692
}
9793

98-
if __name__ == '__main__':
94+
if __name__ == "__main__":
9995
setup(
10096
name=__name,
10197
version=__get_version("src/optigatrust/version.py"),
10298
description=__desc,
10399
long_description=__description(),
104-
long_description_content_type='text/markdown',
100+
long_description_content_type="text/markdown",
105101
url=__url,
106102
author=__author,
107103
author_email=__author_email,
@@ -112,12 +108,15 @@ def run(self):
112108
packages=__packages,
113109
package_dir=__package_dir,
114110
package_data=__package_data,
115-
setup_requires=['setuptools>=40', 'wheel'],
116-
install_requires=['optigatrust', 'asn1crypto', 'jinja2', 'cryptography', 'pyserial', 'click'],
117-
python_requires='>=3.5',
111+
setup_requires=["setuptools>=40", "wheel"],
112+
install_requires=["optigatrust", "asn1crypto", "jinja2", "cryptography", "pyserial", "click"],
113+
python_requires=">=3.5",
118114
entry_points={
119-
'console_scripts': [
120-
'optigatrust = optigatrust.clidriver:main',
115+
"console_scripts": [
116+
"optigatrust = optigatrust.clidriver:main",
121117
],
122118
},
119+
cmdclass={
120+
"install": _install,
121+
},
123122
)

0 commit comments

Comments
 (0)