[packages/canokey-qemu] - new

qboosh qboosh at pld-linux.org
Tue Apr 2 20:58:24 CEST 2024


commit 1abef64f215046cafaaac31a5bdfd547aee2fe9c
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Tue Apr 2 20:44:44 2024 +0200

    - new

 canokey-qemu-system-libs.patch | 150 +++++++++++++++++++++++++++++++++++++++++
 canokey-qemu.spec              | 103 ++++++++++++++++++++++++++++
 2 files changed, 253 insertions(+)
---
diff --git a/canokey-qemu.spec b/canokey-qemu.spec
new file mode 100644
index 0000000..aac9bfb
--- /dev/null
+++ b/canokey-qemu.spec
@@ -0,0 +1,103 @@
+%define		core_gitref	e216aa00b95b27c8e6bc5f2907a05e49a0ddafad
+%define		crypto_gitref	8fab8813ce2603ba198a9beeb32c06ad08ae0865
+%define		mbedtls_gitref	f71e2878084126737cc39083e1e15afc459bd93d
+Summary:	CanoKey library for QEMU
+Summary(pl.UTF-8):	Biblioteka CanoKey dla QEMU
+Name:		canokey-qemu
+Version:	0
+%define	gitref	151568c34f5e92b086b7a3a62a11c43dd39f628b
+%define	snap	20230606
+%define	rel	1
+Release:	0.%{snap}.%{rel}
+License:	Apache v2.0
+Group:		Libraries
+#Source0Download: https://github.com/canokeys/canokey-qemu/tags
+Source0:	https://github.com/canokeys/canokey-qemu/archive/%{gitref}/%{name}-%{snap}.tar.gz
+# Source0-md5:	02b14bbbdbe0e0774f3b8bdb3e201a40
+Source1:	https://github.com/canokeys/canokey-core/archive/%{core_gitref}/canokey-core-%{core_gitref}.tar.gz
+# Source1-md5:	68d90de51a4279965e172dc58f3beb5f
+Source2:	https://github.com/canokeys/canokey-crypto/archive/%{crypto_gitref}/canokey-crypto-%{crypto_gitref}.tar.gz
+# Source2-md5:	2f0b6d9c6ededec1fb57f04c2c5b0b7e
+## private mbedtls is patched for MBEDTLS_ECP_DP_ED25519 support
+Source3:	https://github.com/ARMmbed/mbedtls/archive/%{mbedtls_gitref}/mbedtls-%{mbedtls_gitref}.tar.gz
+# Source3-md5:	80fe94ab2e3eb4213d00ba0473dbe71c
+Patch0:		%{name}-system-libs.patch
+URL:		https://github.com/canokeys/canokey-core/
+BuildRequires:	cmake >= 3.7
+BuildRequires:	gcc >= 6:4.7
+BuildRequires:	littlefs-devel >= 2.8
+BuildRequires:	pkgconfig
+BuildRequires:	rpmbuild(macros) >= 1.605
+BuildRequires:	tinycbor-devel
+Requires:	littlefs >= 2.8
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+# library expects symbols provided by qemu
+%define		skip_post_check_so	libcanokey-qemu.so.*
+
+%description
+This library can be used by QEMU to provide a virtual canokey to the
+guest OS.
+
+Note: this is only for testing purpose; there is no warranty on the
+security.
+
+%description -l pl.UTF-8
+Ta biblioteka może być używana przez QEMU do zapewnienia wirtualnego
+klucza canokey dla systemu-gościa.
+
+Uwaga: służy to tylko do celów testowych - nie ma gwarancji
+bezpieczeństwa.
+
+%package devel
+Summary:	Header files for canokey-qemu library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki canokey-qemu
+Group:		Development/Libraries
+Requires:	%{name} = %{version}-%{release}
+
+%description devel
+Header files for canokey-qemu library.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki canokey-qemu.
+
+%prep
+%setup -q -n %{name}-%{gitref}
+
+%{__tar} xf %{SOURCE1} -C canokey-core --strip-components=1
+%{__tar} xf %{SOURCE2} -C canokey-core/canokey-crypto --strip-components=1
+%{__tar} xf %{SOURCE3} -C canokey-core/canokey-crypto/mbedtls --strip-components=1
+
+%patch0 -p1
+
+%{__sed} -i -e 's,git describe --always --tags --long --abbrev=8 --dirty,echo %{core_gitref},' canokey-core/CMakeLists.txt
+
+%build
+install -d build
+cd build
+%cmake ..
+
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} -C build install \
+	DESTDIR=$RPM_BUILD_ROOT
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post	-p /sbin/ldconfig
+%postun	-p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%attr(755,root,root) %{_libdir}/libcanokey-qemu.so.0
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcanokey-qemu.so
+%{_includedir}/canokey-qemu.h
+%{_pkgconfigdir}/canokey-qemu.pc
diff --git a/canokey-qemu-system-libs.patch b/canokey-qemu-system-libs.patch
new file mode 100644
index 0000000..2ffb9f5
--- /dev/null
+++ b/canokey-qemu-system-libs.patch
@@ -0,0 +1,150 @@
+--- canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/CMakeLists.txt.orig	2023-06-05 19:09:03.000000000 +0200
++++ canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/CMakeLists.txt	2024-04-01 21:47:48.581666791 +0200
+@@ -27,18 +27,18 @@ if(${APPLE})
+ 	add_library(canokey-qemu STATIC ${SRC} 
+         canokey-core/virt-card/device-sim.c
+         canokey-core/virt-card/fabrication.c
+-        canokey-core/littlefs/bd/lfs_filebd.c)
++        )
+ else()
+ 	add_library(canokey-qemu SHARED ${SRC}
+         canokey-core/virt-card/device-sim.c
+         canokey-core/virt-card/fabrication.c
+-        canokey-core/littlefs/bd/lfs_filebd.c)
++        )
+ endif()
+ set_target_properties(canokey-qemu PROPERTIES PUBLIC_HEADER Inc/canokey-qemu.h)
+ set_target_properties(canokey-qemu PROPERTIES SOVERSION ${LIBCANOKEY_QEMU_SO_VERSION})
+ target_include_directories(canokey-qemu SYSTEM PRIVATE Inc canokey-core/virt-card canokey-core)
+ target_compile_definitions(canokey-qemu PRIVATE HW_VARIANT_NAME="CanoKey QEMU")
+-target_link_libraries(canokey-qemu general canokey-core)
++target_link_libraries(canokey-qemu general canokey-core lfs)
+ add_dependencies(canokey-qemu gitrev)
+ install(TARGETS canokey-qemu LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+         PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+--- canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/canokey-core/CMakeLists.txt.orig	2022-05-11 16:15:56.000000000 +0200
++++ canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/canokey-core/CMakeLists.txt	2024-04-01 21:54:24.789520349 +0200
+@@ -29,8 +29,8 @@ if (DEFINED USBD_PRODUCT_STRING)
+ endif ()
+ 
+ file(GLOB_RECURSE SRC src/*.c applets/*.c interfaces/*.c
+-        littlefs/lfs.c littlefs/lfs_util.c
+-        tinycbor/src/cborencoder.c tinycbor/src/cborparser.c)
++        )
++include_directories("/usr/include/tinycbor")
+ add_library(canokey-core ${SRC})
+ 
+ if (ENABLE_TESTS)
+@@ -47,15 +46,13 @@ endif (ENABLE_FUZZING)
+ target_include_directories(canokey-core SYSTEM
+         PUBLIC
+         include
+-        littlefs
+-        tinycbor/src
+         interfaces/USB/device
+         interfaces/USB/core/inc
+         interfaces/USB/class/ccid
+         interfaces/USB/class/ctaphid
+         interfaces/USB/class/kbdhid
+         interfaces/USB/class/webusb)
+-target_link_libraries(canokey-core canokey-crypto)
++target_link_libraries(canokey-core canokey-crypto lfs tinycbor)
+ 
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
+ 
+@@ -81,9 +78,9 @@ if (ENABLE_TESTS)
+             virt-card/device-sim.c
+             virt-card/fabrication.c
+             virt-card/fido-hid-over-udp.c
+-            littlefs/bd/lfs_filebd.c)
+-    target_include_directories(fido-hid-over-udp SYSTEM PRIVATE virt-card littlefs)
+-    target_link_libraries(fido-hid-over-udp general canokey-core "-fsanitize=address")
++            )
++    target_include_directories(fido-hid-over-udp SYSTEM PRIVATE virt-card)
++    target_link_libraries(fido-hid-over-udp general canokey-core lfs "-fsanitize=address")
+ 
+     pkg_search_module(PCSCLITE libpcsclite)
+     if (PCSCLITE_FOUND)
+@@ -92,9 +89,9 @@ if (ENABLE_TESTS)
+                 virt-card/device-sim.c
+                 virt-card/ifdhandler.c
+                 virt-card/fabrication.c
+-                littlefs/bd/lfs_filebd.c)
+-        target_include_directories(u2f-virt-card SYSTEM PRIVATE virt-card ${PCSCLITE_INCLUDE_DIRS} littlefs)
+-        target_link_libraries(u2f-virt-card ${PCSCLITE_LIBRARIES} canokey-core)
++                )
++        target_include_directories(u2f-virt-card SYSTEM PRIVATE virt-card ${PCSCLITE_INCLUDE_DIRS})
++        target_link_libraries(u2f-virt-card ${PCSCLITE_LIBRARIES} lfs canokey-core)
+         add_dependencies(u2f-virt-card gitrev)
+     endif ()
+ endif (ENABLE_TESTS)
+@@ -105,9 +102,9 @@ if (ENABLE_FUZZING)
+             virt-card/usb-dummy.c
+             virt-card/device-sim.c
+             virt-card/fabrication.c
+-            littlefs/bd/lfs_filebd.c)
+-    target_include_directories(honggfuzz-fuzzer SYSTEM PRIVATE virt-card littlefs)
+-    target_link_libraries(honggfuzz-fuzzer canokey-core)
++            )
++    target_include_directories(honggfuzz-fuzzer SYSTEM PRIVATE virt-card)
++    target_link_libraries(honggfuzz-fuzzer canokey-core lfs)
+     add_dependencies(honggfuzz-fuzzer gitrev)
+ 
+     add_executable(honggfuzz-debug
+@@ -116,8 +113,8 @@ if (ENABLE_FUZZING)
+             virt-card/usb-dummy.c
+             virt-card/device-sim.c
+             virt-card/fabrication.c
+-            littlefs/bd/lfs_filebd.c)
+-    target_include_directories(honggfuzz-debug SYSTEM PRIVATE virt-card littlefs)
+-    target_link_libraries(honggfuzz-debug canokey-core)
++            )
++    target_include_directories(honggfuzz-debug SYSTEM PRIVATE virt-card)
++    target_link_libraries(honggfuzz-debug canokey-core lfs)
+     add_dependencies(honggfuzz-debug gitrev)
+ endif (ENABLE_FUZZING)
+--- canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/canokey-core/virt-card/fabrication.c.orig	2022-05-11 16:15:56.000000000 +0200
++++ canokey-qemu-151568c34f5e92b086b7a3a62a11c43dd39f628b/canokey-core/virt-card/fabrication.c	2024-04-01 21:55:06.385961668 +0200
+@@ -9,7 +9,7 @@
+ #include <aes.h>
+ #include <apdu.h>
+ #include <assert.h>
+-#include <bd/lfs_filebd.h>
++#include <lfs_filebd.h>
+ #include <ctap.h>
+ #include <fs.h>
+ #include <lfs.h>
+@@ -15,6 +15,7 @@
+ #include <lfs.h>
+ 
+ static struct lfs_config cfg;
++static struct lfs_filebd_config bdcfg;
+ static lfs_filebd_t bd;
+ 
+ uint8_t private_key[] = {0x46, 0x5b, 0x44, 0x5d, 0x8e, 0x78, 0x34, 0x53, 0xf7, 0x4b, 0x90,
+@@ -104,19 +105,20 @@ static void oath_init() {
+ 
+ int card_fs_init(const char *lfs_root) {
+   memset(&cfg, 0, sizeof(cfg));
++  memset(&bdcfg, 0, sizeof(bdcfg));
+   cfg.context = &bd;
+   cfg.read = &lfs_filebd_read;
+   cfg.prog = &lfs_filebd_prog;
+   cfg.erase = &lfs_filebd_erase;
+   cfg.sync = &lfs_filebd_sync;
+-  cfg.read_size = 1;
+-  cfg.prog_size = 512;
+-  cfg.block_size = 512;
+-  cfg.block_count = 256;
++  bdcfg.read_size = cfg.read_size = 1;
++  bdcfg.prog_size = cfg.prog_size = 512;
++  bdcfg.erase_size = cfg.block_size = 512;
++  bdcfg.erase_count = cfg.block_count = 256;
+   cfg.block_cycles = 50000;
+   cfg.cache_size = 512;
+   cfg.lookahead_size = 16;
+-  if (lfs_filebd_create(&cfg, lfs_root)) return 1;
++  if (lfs_filebd_create(&cfg, lfs_root, &bdcfg)) return 1;
+ 
+   int err = fs_mount(&cfg);
+   if (err) { // should happen for the first boot
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/canokey-qemu.git/commitdiff/1abef64f215046cafaaac31a5bdfd547aee2fe9c



More information about the pld-cvs-commit mailing list