git: 2e06d59516c7 - main - security/kanidm: New port

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Sat, 31 May 2025 12:39:26 UTC
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2e06d59516c7358b675f54621c562318f0258bed

commit 2e06d59516c7358b675f54621c562318f0258bed
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2025-05-31 12:37:27 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2025-05-31 12:38:52 +0000

    security/kanidm: New port
    
    Kanidm is a simple and secure identity provider and client for UNIX systems
    
    WWW:    https://kanidm.com
---
 GIDs                                        |    2 +-
 UIDs                                        |    2 +-
 security/Makefile                           |    1 +
 security/kanidm/Makefile                    |   70 ++
 security/kanidm/Makefile.crates             |  606 +++++++++++++
 security/kanidm/distinfo                    | 1215 +++++++++++++++++++++++++++
 security/kanidm/files/kanidm_unixd.in       |   27 +
 security/kanidm/files/kanidm_unixd_tasks.in |   27 +
 security/kanidm/pkg-descr                   |    1 +
 security/kanidm/pkg-plist.client            |    7 +
 security/kanidm/pkg-plist.server            |    7 +
 11 files changed, 1963 insertions(+), 2 deletions(-)

diff --git a/GIDs b/GIDs
index 125d6916544d..818ee833ecc1 100644
--- a/GIDs
+++ b/GIDs
@@ -800,7 +800,7 @@ opensearch:*:855:
 # free: 856
 # free: 857
 # free: 858
-# free: 859
+kanidm:*:859:
 plocate:*:860:
 rekor:*:861:
 timestamp-authority:*:862:
diff --git a/UIDs b/UIDs
index 84275c402fce..9aa6506351bd 100644
--- a/UIDs
+++ b/UIDs
@@ -806,7 +806,7 @@ opensearch:*:855:855::0:0:opensearch user:/nonexistent:/usr/sbin/nologin
 # free: 856
 # free: 857
 # free: 858
-# free: 859
+kanidm:*:859:859::0:0:Kanidm user:/nonexistent:/usr/sbin/nologin
 # free: 860
 rekor:*:861:861::0:0:rekor user:/nonexistent:/usr/sbin/nologin
 timestamp-authority:*:862:862::0:0:Timestamp Authority:/nonexistent:/usr/sbin/nologin
diff --git a/security/Makefile b/security/Makefile
index 205c732e5678..9e313b8b05b9 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -248,6 +248,7 @@
     SUBDIR += ismtp
     SUBDIR += isnprober
     SUBDIR += john
+    SUBDIR += kanidm
     SUBDIR += kbfsd
     SUBDIR += kc
     SUBDIR += kdbxviewer
diff --git a/security/kanidm/Makefile b/security/kanidm/Makefile
new file mode 100644
index 000000000000..56791f6125fd
--- /dev/null
+++ b/security/kanidm/Makefile
@@ -0,0 +1,70 @@
+PORTNAME=	kanidm
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.5.0
+CATEGORIES=	security net
+
+MAINTAINER=	bofh@FreeBSD.org
+COMMENT=	Simple and secure identity management platform ${${FLAVOR}_COMMENT}
+WWW=		https://kanidm.com \
+		https://github.com/kanidm/kanidm/
+
+LICENSE=	MPL20
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+IGNORE_FreeBSD_13=		Does not build on FreeBSD 13.x due to OpenSSL 1.1.1
+ONLY_FOR_ARCHS=	aarch64 amd64
+
+FLAVORS=	client server
+FLAVOR?=	${FLAVORS:[1]}
+client_PKGNAMESUFFIX=	-client
+client_COMMENT=		(client only)
+client_PLIST=	${.CURDIR}/pkg-plist.client
+server_PKGNAMESUFFIX=	-server
+server_COMMENT=		(server only)
+server_PLIST=	${.CURDIR}/pkg-plist.server
+
+USES=		cargo ssl
+USE_GITHUB=	yes
+.if ${FLAVOR} == client
+USE_RC_SUBR=	kanidm_unixd kanidm_unixd_tasks
+.endif
+
+.if ${FLAVOR} == client
+CARGO_BUILD_ARGS=	-p kanidm_tools -p kanidm_unix_int -p nss_kanidm -p pam_kanidm
+.endif
+CARGO_INSTALL=	no
+CARGO_ENV=	KANIDM_BUILD_PROFILE=release_freebsd
+
+CACHEDIR=/var/cache/kanidm-unixd
+LIBDIR=/var/lib/kanidm-unixd
+RUNDIR=/var/run/kanidm-unixd
+
+SUB_LIST=	USER=${USERS} \
+		GROUP=${GROUPS} \
+		ETCDIR=${PREFIX}/etc/kanidm \
+		RUNDIR=/var/run/kanidm-unixd \
+		CACHEDIR=/var/cache/kanidm-unixd \
+		LIBDIR=/var/lib/kanidm-unixd
+
+USERS=		${PORTNAME}
+GROUPS=		${PORTNAME}
+
+do-install:
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+.if ${FLAVOR} == client
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm-unix ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm_ssh_authorizedkeys ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm_ssh_authorizedkeys_direct ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_LIB} ${WRKDIR}/target/release/libnss_kanidm.so ${STAGEDIR}${PREFIX}/lib/nss_kanidm.so.1
+	${INSTALL_LIB} ${WRKDIR}/target/release/libpam_kanidm.so ${STAGEDIR}${PREFIX}/lib
+.endif
+.if ${FLAVOR} == server
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm_unixd ${STAGEDIR}${PREFIX}/libexec
+	${INSTALL_PROGRAM} ${WRKDIR}/target/release/kanidm_unixd_tasks ${STAGEDIR}${PREFIX}/libexec
+	${MKDIR} ${STAGEDIR}${CACHEDIR}
+	${MKDIR} ${STAGEDIR}${LIBDIR}
+	${MKDIR} ${STAGEDIR}${RUNDIR}
+.endif
+
+.include <bsd.port.mk>
diff --git a/security/kanidm/Makefile.crates b/security/kanidm/Makefile.crates
new file mode 100644
index 000000000000..b480ae9049dc
--- /dev/null
+++ b/security/kanidm/Makefile.crates
@@ -0,0 +1,606 @@
+CARGO_CRATES=	addr2line-0.24.2 \
+		adler2-2.0.0 \
+		ahash-0.8.11 \
+		aho-corasick-1.1.3 \
+		allocator-api2-0.2.21 \
+		android-tzdata-0.1.1 \
+		android_system_properties-0.1.5 \
+		anstream-0.6.18 \
+		anstyle-1.0.10 \
+		anstyle-parse-0.2.6 \
+		anstyle-query-1.1.2 \
+		anstyle-wincon-3.0.7 \
+		anyhow-1.0.95 \
+		arc-swap-1.7.1 \
+		argon2-0.5.3 \
+		askama-0.12.1 \
+		askama_axum-0.4.0 \
+		askama_derive-0.12.5 \
+		askama_escape-0.10.3 \
+		askama_parser-0.2.1 \
+		asn1-rs-0.6.2 \
+		asn1-rs-derive-0.5.1 \
+		asn1-rs-impl-0.2.0 \
+		async-compression-0.4.18 \
+		async-stream-0.3.6 \
+		async-stream-impl-0.3.6 \
+		async-trait-0.1.86 \
+		atomic-waker-1.1.2 \
+		authenticator-0.4.1 \
+		autocfg-1.4.0 \
+		axum-0.7.9 \
+		axum-core-0.4.5 \
+		axum-extra-0.9.6 \
+		axum-htmx-0.5.0 \
+		axum-macros-0.4.2 \
+		axum-server-0.7.1 \
+		backtrace-0.3.74 \
+		base32-0.5.1 \
+		base64-0.13.1 \
+		base64-0.21.7 \
+		base64-0.22.1 \
+		base64ct-1.6.0 \
+		base64urlsafedata-0.5.1 \
+		basic-toml-0.1.9 \
+		bindgen-0.66.1 \
+		bindgen-0.70.1 \
+		bit-set-0.5.3 \
+		bit-set-0.8.0 \
+		bit-vec-0.6.3 \
+		bit-vec-0.8.0 \
+		bitfield-0.13.2 \
+		bitflags-1.3.2 \
+		bitflags-2.8.0 \
+		blake2-0.10.6 \
+		block-buffer-0.10.4 \
+		borrow-or-share-0.2.2 \
+		bstr-1.11.3 \
+		bumpalo-3.17.0 \
+		bytecount-0.6.8 \
+		bytemuck-1.21.0 \
+		byteorder-1.5.0 \
+		bytes-1.10.0 \
+		cc-1.2.13 \
+		cexpr-0.6.0 \
+		cfg-if-1.0.0 \
+		cfg_aliases-0.2.1 \
+		checked_int_cast-1.0.0 \
+		chrono-0.4.39 \
+		clang-sys-1.8.1 \
+		clap-4.5.28 \
+		clap_builder-4.5.27 \
+		clap_complete-4.5.44 \
+		clap_derive-4.5.28 \
+		clap_lex-0.7.4 \
+		clru-0.6.2 \
+		color_quant-1.1.0 \
+		colorchoice-1.0.3 \
+		compact_jwt-0.4.3 \
+		concread-0.5.3 \
+		console-0.15.10 \
+		const-oid-0.9.6 \
+		cookie-0.16.2 \
+		cookie-0.18.1 \
+		cookie_store-0.21.1 \
+		core-foundation-0.9.4 \
+		core-foundation-0.10.0 \
+		core-foundation-sys-0.8.7 \
+		cpufeatures-0.2.17 \
+		crc32fast-1.4.2 \
+		cron-0.15.0 \
+		crossbeam-0.8.4 \
+		crossbeam-channel-0.5.14 \
+		crossbeam-deque-0.8.6 \
+		crossbeam-epoch-0.9.18 \
+		crossbeam-queue-0.3.12 \
+		crossbeam-utils-0.8.21 \
+		crypto-common-0.1.6 \
+		csv-1.3.1 \
+		csv-core-0.1.11 \
+		darling-0.14.4 \
+		darling-0.20.10 \
+		darling_core-0.14.4 \
+		darling_core-0.20.10 \
+		darling_macro-0.14.4 \
+		darling_macro-0.20.10 \
+		data-encoding-2.7.0 \
+		der-0.7.9 \
+		der-parser-9.0.0 \
+		der_derive-0.7.3 \
+		deranged-0.3.11 \
+		derive_builder-0.12.0 \
+		derive_builder_core-0.12.0 \
+		derive_builder_macro-0.12.0 \
+		devd-rs-0.3.6 \
+		dhat-0.3.3 \
+		dialoguer-0.11.0 \
+		digest-0.10.7 \
+		dirs-4.0.0 \
+		dirs-sys-0.3.7 \
+		displaydoc-0.2.5 \
+		document-features-0.2.10 \
+		dunce-1.0.5 \
+		dyn-clone-1.0.18 \
+		either-1.13.0 \
+		email_address-0.2.9 \
+		encode_unicode-1.0.0 \
+		encoding_rs-0.8.35 \
+		enum-iterator-2.1.0 \
+		enum-iterator-derive-1.4.0 \
+		enumflags2-0.7.11 \
+		enumflags2_derive-0.7.11 \
+		equivalent-1.0.1 \
+		errno-0.3.10 \
+		escargot-0.5.13 \
+		fallible-iterator-0.2.0 \
+		fallible-streaming-iterator-0.1.9 \
+		fancy-regex-0.11.0 \
+		fancy-regex-0.14.0 \
+		fantoccini-0.21.4 \
+		faster-hex-0.9.0 \
+		fastrand-2.3.0 \
+		fernet-0.2.2 \
+		file-id-0.1.0 \
+		filetime-0.2.25 \
+		fixedbitset-0.5.7 \
+		flagset-0.4.6 \
+		flate2-1.0.35 \
+		fluent-uri-0.3.2 \
+		fnv-1.0.7 \
+		foldhash-0.1.4 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		form_urlencoded-1.2.1 \
+		fraction-0.15.3 \
+		fs4-0.12.0 \
+		fsevent-sys-4.1.0 \
+		futures-0.3.31 \
+		futures-channel-0.3.31 \
+		futures-core-0.3.31 \
+		futures-executor-0.3.31 \
+		futures-io-0.3.31 \
+		futures-macro-0.3.31 \
+		futures-sink-0.3.31 \
+		futures-task-0.3.31 \
+		futures-util-0.3.31 \
+		generic-array-0.14.7 \
+		getrandom-0.2.15 \
+		getrandom-0.3.1 \
+		gif-0.13.1 \
+		gimli-0.31.1 \
+		gix-0.64.0 \
+		gix-actor-0.31.5 \
+		gix-chunk-0.4.11 \
+		gix-commitgraph-0.24.3 \
+		gix-config-0.38.0 \
+		gix-config-value-0.14.11 \
+		gix-date-0.8.7 \
+		gix-diff-0.44.1 \
+		gix-discover-0.33.0 \
+		gix-features-0.38.2 \
+		gix-fs-0.11.3 \
+		gix-glob-0.16.5 \
+		gix-hash-0.14.2 \
+		gix-hashtable-0.5.2 \
+		gix-lock-14.0.0 \
+		gix-macros-0.1.5 \
+		gix-object-0.42.3 \
+		gix-odb-0.61.1 \
+		gix-pack-0.51.1 \
+		gix-path-0.10.14 \
+		gix-quote-0.4.15 \
+		gix-ref-0.45.0 \
+		gix-refspec-0.23.1 \
+		gix-revision-0.27.2 \
+		gix-revwalk-0.13.2 \
+		gix-sec-0.10.11 \
+		gix-tempfile-14.0.2 \
+		gix-trace-0.1.12 \
+		gix-traverse-0.39.2 \
+		gix-url-0.27.5 \
+		gix-utils-0.1.14 \
+		gix-validate-0.8.5 \
+		glob-0.3.2 \
+		h2-0.3.26 \
+		h2-0.4.7 \
+		half-1.8.3 \
+		hashbrown-0.12.3 \
+		hashbrown-0.14.5 \
+		hashbrown-0.15.2 \
+		hashlink-0.8.4 \
+		heck-0.5.0 \
+		hex-0.4.3 \
+		home-0.5.11 \
+		hostname-validator-1.1.1 \
+		http-0.2.12 \
+		http-1.2.0 \
+		http-body-0.4.6 \
+		http-body-1.0.1 \
+		http-body-util-0.1.2 \
+		http-range-header-0.4.2 \
+		httparse-1.10.0 \
+		httpdate-1.0.3 \
+		humansize-2.1.3 \
+		hyper-0.14.32 \
+		hyper-1.6.0 \
+		hyper-rustls-0.27.5 \
+		hyper-timeout-0.5.2 \
+		hyper-tls-0.6.0 \
+		hyper-util-0.1.10 \
+		iana-time-zone-0.1.61 \
+		iana-time-zone-haiku-0.1.2 \
+		icu_collections-1.5.0 \
+		icu_locid-1.5.0 \
+		icu_locid_transform-1.5.0 \
+		icu_locid_transform_data-1.5.0 \
+		icu_normalizer-1.5.0 \
+		icu_normalizer_data-1.5.0 \
+		icu_properties-1.5.1 \
+		icu_properties_data-1.5.0 \
+		icu_provider-1.5.0 \
+		icu_provider_macros-1.5.0 \
+		ident_case-1.0.1 \
+		idlset-0.2.5 \
+		idna-1.0.3 \
+		idna_adapter-1.2.0 \
+		image-0.23.14 \
+		image-0.24.9 \
+		indexmap-1.9.3 \
+		indexmap-2.7.1 \
+		inotify-0.9.6 \
+		inotify-sys-0.1.5 \
+		ipnet-2.11.0 \
+		is_terminal_polyfill-1.70.1 \
+		itertools-0.10.5 \
+		itertools-0.13.0 \
+		itoa-1.0.14 \
+		jpeg-decoder-0.3.1 \
+		js-sys-0.3.77 \
+		jsonschema-0.29.0 \
+		kanidm-hsm-crypto-0.2.0 \
+		kqueue-1.0.8 \
+		kqueue-sys-1.0.4 \
+		lazy_static-1.5.0 \
+		lazycell-1.3.0 \
+		lber-0.4.2 \
+		ldap3_client-0.5.2 \
+		ldap3_proto-0.5.2 \
+		libc-0.2.169 \
+		libloading-0.8.6 \
+		libm-0.2.11 \
+		libmimalloc-sys-0.1.39 \
+		libredox-0.1.3 \
+		libsqlite3-sys-0.25.2 \
+		libudev-0.2.0 \
+		libudev-sys-0.1.4 \
+		linux-raw-sys-0.4.15 \
+		litemap-0.7.4 \
+		litrs-0.4.1 \
+		lock_api-0.4.12 \
+		lodepng-3.11.0 \
+		log-0.4.25 \
+		lru-0.12.5 \
+		malloced-1.3.1 \
+		matchers-0.1.0 \
+		matchit-0.7.3 \
+		mathru-0.13.0 \
+		memchr-2.7.4 \
+		memmap2-0.9.5 \
+		memoffset-0.8.0 \
+		mimalloc-0.1.43 \
+		mime-0.3.17 \
+		mime_guess-2.0.5 \
+		minimal-lexical-0.2.1 \
+		miniz_oxide-0.8.3 \
+		mintex-0.1.3 \
+		mio-0.8.11 \
+		mio-1.0.3 \
+		multer-3.1.0 \
+		native-tls-0.2.13 \
+		nix-0.29.0 \
+		nom-7.1.3 \
+		nonempty-0.8.1 \
+		notify-6.1.1 \
+		notify-debouncer-full-0.1.0 \
+		nu-ansi-term-0.46.0 \
+		num-0.4.3 \
+		num-bigint-0.4.6 \
+		num-cmp-0.1.0 \
+		num-complex-0.4.6 \
+		num-conv-0.1.0 \
+		num-derive-0.3.3 \
+		num-integer-0.1.46 \
+		num-iter-0.1.45 \
+		num-rational-0.3.2 \
+		num-rational-0.4.2 \
+		num-traits-0.2.19 \
+		num_enum-0.5.11 \
+		num_enum_derive-0.5.11 \
+		num_threads-0.1.7 \
+		oauth2-4.4.2 \
+		oauth2-5.0.0 \
+		object-0.36.7 \
+		oid-0.2.1 \
+		oid-registry-0.7.1 \
+		once_cell-1.20.3 \
+		openssl-0.10.70 \
+		openssl-macros-0.1.1 \
+		openssl-probe-0.1.6 \
+		openssl-sys-0.9.105 \
+		opentelemetry-0.27.1 \
+		opentelemetry-http-0.27.0 \
+		opentelemetry-otlp-0.27.0 \
+		opentelemetry-proto-0.27.0 \
+		opentelemetry-semantic-conventions-0.27.0 \
+		opentelemetry_sdk-0.27.1 \
+		outref-0.5.2 \
+		overload-0.1.1 \
+		parking_lot-0.12.3 \
+		parking_lot_core-0.9.10 \
+		password-hash-0.5.0 \
+		paste-1.0.15 \
+		peeking_take_while-0.1.2 \
+		peg-0.8.4 \
+		peg-macros-0.8.4 \
+		peg-runtime-0.8.3 \
+		pem-rfc7468-0.7.0 \
+		percent-encoding-2.3.1 \
+		petgraph-0.7.1 \
+		picky-asn1-0.8.0 \
+		picky-asn1-der-0.4.1 \
+		picky-asn1-x509-0.12.0 \
+		pin-project-1.1.9 \
+		pin-project-internal-1.1.9 \
+		pin-project-lite-0.2.16 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.31 \
+		powerfmt-0.2.0 \
+		ppv-lite86-0.2.20 \
+		prctl-1.0.0 \
+		prettyplease-0.2.29 \
+		proc-macro-crate-1.3.1 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.93 \
+		prodash-28.0.0 \
+		prost-0.13.4 \
+		prost-derive-0.13.4 \
+		psl-types-2.0.11 \
+		publicsuffix-2.3.0 \
+		qrcode-0.12.0 \
+		quick-error-2.0.1 \
+		quinn-0.11.6 \
+		quinn-proto-0.11.9 \
+		quinn-udp-0.5.9 \
+		quote-1.0.38 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.5.8 \
+		redox_users-0.4.6 \
+		ref-cast-1.0.23 \
+		ref-cast-impl-1.0.23 \
+		reference-counted-singleton-0.1.5 \
+		referencing-0.29.0 \
+		regex-1.11.1 \
+		regex-automata-0.1.10 \
+		regex-automata-0.4.9 \
+		regex-syntax-0.6.29 \
+		regex-syntax-0.8.5 \
+		reqwest-0.11.27 \
+		reqwest-0.12.12 \
+		rgb-0.8.50 \
+		ring-0.17.8 \
+		rpassword-5.0.1 \
+		runloop-0.1.0 \
+		rusqlite-0.28.0 \
+		rust-embed-8.5.0 \
+		rust-embed-impl-8.5.0 \
+		rust-embed-utils-8.5.0 \
+		rustc-demangle-0.1.24 \
+		rustc-hash-1.1.0 \
+		rustc-hash-2.1.1 \
+		rusticata-macros-4.1.0 \
+		rustix-0.38.44 \
+		rustls-0.23.22 \
+		rustls-native-certs-0.8.1 \
+		rustls-pemfile-2.2.0 \
+		rustls-pki-types-1.11.0 \
+		rustls-webpki-0.102.8 \
+		rustversion-1.0.19 \
+		ryu-1.0.19 \
+		same-file-1.0.6 \
+		schannel-0.1.27 \
+		scopeguard-1.2.0 \
+		sd-notify-0.4.5 \
+		security-framework-2.11.1 \
+		security-framework-3.2.0 \
+		security-framework-sys-2.14.0 \
+		selinux-0.4.6 \
+		selinux-sys-0.6.13 \
+		semver-1.0.25 \
+		serde-1.0.217 \
+		serde_bytes-0.11.15 \
+		serde_cbor-0.11.2 \
+		serde_cbor_2-0.12.0-dev \
+		serde_derive-1.0.217 \
+		serde_json-1.0.138 \
+		serde_path_to_error-0.1.16 \
+		serde_urlencoded-0.7.1 \
+		serde_with-3.12.0 \
+		serde_with_macros-3.12.0 \
+		sha-crypt-0.5.0 \
+		sha1_smol-1.0.1 \
+		sha2-0.10.8 \
+		sharded-slab-0.1.7 \
+		shell-words-1.1.0 \
+		shellexpand-2.1.2 \
+		shlex-1.3.0 \
+		signal-hook-registry-1.4.2 \
+		slab-0.4.9 \
+		smallvec-1.13.2 \
+		smartstring-1.0.1 \
+		smolset-1.3.1 \
+		socket2-0.5.8 \
+		spin-0.9.8 \
+		spki-0.7.3 \
+		sptr-0.3.2 \
+		sshkey-attest-0.5.0 \
+		sshkeys-0.3.3 \
+		stable_deref_trait-1.2.0 \
+		static_assertions-1.1.0 \
+		strsim-0.10.0 \
+		strsim-0.11.1 \
+		subtle-2.6.1 \
+		svg-0.13.1 \
+		syn-1.0.109 \
+		syn-2.0.98 \
+		sync_wrapper-0.1.2 \
+		sync_wrapper-1.0.2 \
+		synstructure-0.13.1 \
+		system-configuration-0.5.1 \
+		system-configuration-sys-0.5.0 \
+		target-lexicon-0.12.16 \
+		tempfile-3.16.0 \
+		thiserror-1.0.69 \
+		thiserror-2.0.11 \
+		thiserror-impl-1.0.69 \
+		thiserror-impl-2.0.11 \
+		thousands-0.2.0 \
+		thread_local-1.1.8 \
+		time-0.3.37 \
+		time-core-0.1.2 \
+		time-macros-0.2.19 \
+		tinystr-0.7.6 \
+		tinyvec-1.8.1 \
+		tinyvec_macros-0.1.1 \
+		tls_codec-0.4.1 \
+		tls_codec_derive-0.4.1 \
+		tokio-1.43.0 \
+		tokio-macros-2.5.0 \
+		tokio-native-tls-0.3.1 \
+		tokio-openssl-0.6.5 \
+		tokio-rustls-0.26.1 \
+		tokio-stream-0.1.17 \
+		tokio-util-0.7.13 \
+		toml-0.5.11 \
+		toml_datetime-0.6.8 \
+		toml_edit-0.19.15 \
+		tonic-0.12.3 \
+		tower-0.4.13 \
+		tower-0.5.2 \
+		tower-http-0.6.2 \
+		tower-layer-0.3.3 \
+		tower-service-0.3.3 \
+		tracing-0.1.41 \
+		tracing-attributes-0.1.28 \
+		tracing-core-0.1.33 \
+		tracing-forest-0.1.6 \
+		tracing-log-0.2.0 \
+		tracing-opentelemetry-0.28.0 \
+		tracing-subscriber-0.3.19 \
+		try-lock-0.2.5 \
+		tss-esapi-8.0.0-alpha \
+		tss-esapi-sys-0.5.0 \
+		typenum-1.17.0 \
+		unicase-2.8.1 \
+		unicode-bom-2.0.3 \
+		unicode-ident-1.0.16 \
+		unicode-normalization-0.1.24 \
+		unicode-segmentation-1.12.0 \
+		unicode-width-0.2.0 \
+		untrusted-0.9.0 \
+		url-2.5.4 \
+		urlencoding-2.1.3 \
+		utf16_iter-1.0.5 \
+		utf8_iter-1.0.4 \
+		utf8parse-0.2.2 \
+		utoipa-4.2.3 \
+		utoipa-gen-4.3.1 \
+		utoipa-swagger-ui-6.0.0 \
+		uuid-1.13.1 \
+		uuid-simd-0.8.0 \
+		valuable-0.1.1 \
+		vcpkg-0.2.15 \
+		version_check-0.9.5 \
+		vsimd-0.8.0 \
+		walkdir-2.5.0 \
+		want-0.3.1 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasi-0.13.3+wasi-0.2.2 \
+		wasite-0.1.0 \
+		wasm-bindgen-0.2.100 \
+		wasm-bindgen-backend-0.2.100 \
+		wasm-bindgen-futures-0.4.50 \
+		wasm-bindgen-macro-0.2.100 \
+		wasm-bindgen-macro-support-0.2.100 \
+		wasm-bindgen-shared-0.2.100 \
+		web-sys-0.3.77 \
+		web-time-1.1.0 \
+		webauthn-attestation-ca-0.5.1 \
+		webauthn-authenticator-rs-0.5.1 \
+		webauthn-rs-0.5.1 \
+		webauthn-rs-core-0.5.1 \
+		webauthn-rs-proto-0.5.1 \
+		webdriver-0.50.0 \
+		webpki-roots-0.26.8 \
+		weezl-0.1.8 \
+		which-4.4.2 \
+		whoami-1.5.2 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.9 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-0.41.0 \
+		windows-core-0.52.0 \
+		windows-registry-0.2.0 \
+		windows-result-0.2.0 \
+		windows-strings-0.1.0 \
+		windows-sys-0.48.0 \
+		windows-sys-0.52.0 \
+		windows-sys-0.59.0 \
+		windows-targets-0.48.5 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.41.0 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.41.0 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.41.0 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.41.0 \
+		windows_i686_msvc-0.48.5 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.41.0 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.41.0 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.41.0 \
+		windows_x86_64_msvc-0.48.5 \
+		windows_x86_64_msvc-0.52.6 \
+		winnow-0.5.40 \
+		winnow-0.6.26 \
+		winreg-0.50.0 \
+		wit-bindgen-rt-0.33.0 \
+		write16-1.0.0 \
+		writeable-0.5.5 \
+		x509-cert-0.2.5 \
+		x509-parser-0.16.0 \
+		yoke-0.7.5 \
+		yoke-derive-0.7.5 \
+		zerocopy-0.7.35 \
+		zerocopy-derive-0.7.35 \
+		zerofrom-0.1.5 \
+		zerofrom-derive-0.1.5 \
+		zeroize-1.8.1 \
+		zeroize_derive-1.4.2 \
+		zerovec-0.10.4 \
+		zerovec-derive-0.10.3 \
+		zip-0.6.6 \
+		zxcvbn-2.2.2 \
+		libnss@git+https://github.com/Firstyear/libnss-rs.git?branch=20250207-freebsd\#763da4beaadc1e475b89ed876de31a5e393f6d30
diff --git a/security/kanidm/distinfo b/security/kanidm/distinfo
new file mode 100644
index 000000000000..da26b5c7a3b2
--- /dev/null
+++ b/security/kanidm/distinfo
@@ -0,0 +1,1215 @@
+TIMESTAMP = 1746603013
+SHA256 (rust/crates/addr2line-0.24.2.crate) = dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1
+SIZE (rust/crates/addr2line-0.24.2.crate) = 39015
+SHA256 (rust/crates/adler2-2.0.0.crate) = 512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627
+SIZE (rust/crates/adler2-2.0.0.crate) = 13529
+SHA256 (rust/crates/ahash-0.8.11.crate) = e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011
+SIZE (rust/crates/ahash-0.8.11.crate) = 43607
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0
+SIZE (rust/crates/android-tzdata-0.1.1.crate) = 7674
+SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
+SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
+SHA256 (rust/crates/anstream-0.6.18.crate) = 8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b
+SIZE (rust/crates/anstream-0.6.18.crate) = 29681
+SHA256 (rust/crates/anstyle-1.0.10.crate) = 55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9
+SIZE (rust/crates/anstyle-1.0.10.crate) = 15725
+SHA256 (rust/crates/anstyle-parse-0.2.6.crate) = 3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9
+SIZE (rust/crates/anstyle-parse-0.2.6.crate) = 22343
+SHA256 (rust/crates/anstyle-query-1.1.2.crate) = 79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c
+SIZE (rust/crates/anstyle-query-1.1.2.crate) = 9969
+SHA256 (rust/crates/anstyle-wincon-3.0.7.crate) = ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e
+SIZE (rust/crates/anstyle-wincon-3.0.7.crate) = 12400
+SHA256 (rust/crates/anyhow-1.0.95.crate) = 34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04
+SIZE (rust/crates/anyhow-1.0.95.crate) = 52155
+SHA256 (rust/crates/arc-swap-1.7.1.crate) = 69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457
+SIZE (rust/crates/arc-swap-1.7.1.crate) = 68512
+SHA256 (rust/crates/argon2-0.5.3.crate) = 3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072
+SIZE (rust/crates/argon2-0.5.3.crate) = 28795
+SHA256 (rust/crates/askama-0.12.1.crate) = b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28
+SIZE (rust/crates/askama-0.12.1.crate) = 16976
+SHA256 (rust/crates/askama_axum-0.4.0.crate) = a41603f7cdbf5ac4af60760f17253eb6adf6ec5b6f14a7ed830cf687d375f163
+SIZE (rust/crates/askama_axum-0.4.0.crate) = 6649
+SHA256 (rust/crates/askama_derive-0.12.5.crate) = 19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83
+SIZE (rust/crates/askama_derive-0.12.5.crate) = 31218
+SHA256 (rust/crates/askama_escape-0.10.3.crate) = 619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341
+SIZE (rust/crates/askama_escape-0.10.3.crate) = 8875
+SHA256 (rust/crates/askama_parser-0.2.1.crate) = acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0
+SIZE (rust/crates/askama_parser-0.2.1.crate) = 20707
+SHA256 (rust/crates/asn1-rs-0.6.2.crate) = 5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048
+SIZE (rust/crates/asn1-rs-0.6.2.crate) = 90647
+SHA256 (rust/crates/asn1-rs-derive-0.5.1.crate) = 965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490
+SIZE (rust/crates/asn1-rs-derive-0.5.1.crate) = 9692
+SHA256 (rust/crates/asn1-rs-impl-0.2.0.crate) = 7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7
+SIZE (rust/crates/asn1-rs-impl-0.2.0.crate) = 2261
+SHA256 (rust/crates/async-compression-0.4.18.crate) = df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522
+SIZE (rust/crates/async-compression-0.4.18.crate) = 111919
+SHA256 (rust/crates/async-stream-0.3.6.crate) = 0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476
+SIZE (rust/crates/async-stream-0.3.6.crate) = 13823
+SHA256 (rust/crates/async-stream-impl-0.3.6.crate) = c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d
+SIZE (rust/crates/async-stream-impl-0.3.6.crate) = 4312
+SHA256 (rust/crates/async-trait-0.1.86.crate) = 644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d
+SIZE (rust/crates/async-trait-0.1.86.crate) = 31946
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+SHA256 (rust/crates/authenticator-0.4.1.crate) = 82d71e457dc518a15eecc90d3b0660dee4b51623b34ac4262c9326e0d7e0f8e2
+SIZE (rust/crates/authenticator-0.4.1.crate) = 198210
+SHA256 (rust/crates/autocfg-1.4.0.crate) = ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26
+SIZE (rust/crates/autocfg-1.4.0.crate) = 17712
+SHA256 (rust/crates/axum-0.7.9.crate) = edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f
+SIZE (rust/crates/axum-0.7.9.crate) = 155272
+SHA256 (rust/crates/axum-core-0.4.5.crate) = 09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199
+SIZE (rust/crates/axum-core-0.4.5.crate) = 22183
+SHA256 (rust/crates/axum-extra-0.9.6.crate) = c794b30c904f0a1c2fb7740f7df7f7972dfaa14ef6f57cb6178dc63e5dca2f04
+SIZE (rust/crates/axum-extra-0.9.6.crate) = 47663
+SHA256 (rust/crates/axum-htmx-0.5.0.crate) = 40f7051fdc094b6e5ea06cab9bca4b198c54dee4472a9419155f0ff19f19901e
+SIZE (rust/crates/axum-htmx-0.5.0.crate) = 15894
+SHA256 (rust/crates/axum-macros-0.4.2.crate) = 57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce
+SIZE (rust/crates/axum-macros-0.4.2.crate) = 39245
+SHA256 (rust/crates/axum-server-0.7.1.crate) = 56bac90848f6a9393ac03c63c640925c4b7c8ca21654de40d53f55964667c7d8
+SIZE (rust/crates/axum-server-0.7.1.crate) = 41684
+SHA256 (rust/crates/backtrace-0.3.74.crate) = 8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a
+SIZE (rust/crates/backtrace-0.3.74.crate) = 88516
+SHA256 (rust/crates/base32-0.5.1.crate) = 022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076
+SIZE (rust/crates/base32-0.5.1.crate) = 9238
+SHA256 (rust/crates/base64-0.13.1.crate) = 9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8
+SIZE (rust/crates/base64-0.13.1.crate) = 61002
+SHA256 (rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567
+SIZE (rust/crates/base64-0.21.7.crate) = 82576
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/base64ct-1.6.0.crate) = 8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b
+SIZE (rust/crates/base64ct-1.6.0.crate) = 28870
+SHA256 (rust/crates/base64urlsafedata-0.5.1.crate) = 72f0ad38ce7fbed55985ad5b2197f05cff8324ee6eb6638304e78f0108fae56c
+SIZE (rust/crates/base64urlsafedata-0.5.1.crate) = 5683
+SHA256 (rust/crates/basic-toml-0.1.9.crate) = 823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8
+SIZE (rust/crates/basic-toml-0.1.9.crate) = 50234
+SHA256 (rust/crates/bindgen-0.66.1.crate) = f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7
+SIZE (rust/crates/bindgen-0.66.1.crate) = 218860
+SHA256 (rust/crates/bindgen-0.70.1.crate) = f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f
+SIZE (rust/crates/bindgen-0.70.1.crate) = 226363
+SHA256 (rust/crates/bit-set-0.5.3.crate) = 0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1
+SIZE (rust/crates/bit-set-0.5.3.crate) = 14470
+SHA256 (rust/crates/bit-set-0.8.0.crate) = 08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3
+SIZE (rust/crates/bit-set-0.8.0.crate) = 16289
+SHA256 (rust/crates/bit-vec-0.6.3.crate) = 349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb
+SIZE (rust/crates/bit-vec-0.6.3.crate) = 19927
+SHA256 (rust/crates/bit-vec-0.8.0.crate) = 5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7
+SIZE (rust/crates/bit-vec-0.8.0.crate) = 24132
+SHA256 (rust/crates/bitfield-0.13.2.crate) = 46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719
+SIZE (rust/crates/bitfield-0.13.2.crate) = 16479
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.8.0.crate) = 8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36
+SIZE (rust/crates/bitflags-2.8.0.crate) = 47482
+SHA256 (rust/crates/blake2-0.10.6.crate) = 46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe
+SIZE (rust/crates/blake2-0.10.6.crate) = 47234
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/borrow-or-share-0.2.2.crate) = 3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32
+SIZE (rust/crates/borrow-or-share-0.2.2.crate) = 4871
+SHA256 (rust/crates/bstr-1.11.3.crate) = 531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0
+SIZE (rust/crates/bstr-1.11.3.crate) = 351536
+SHA256 (rust/crates/bumpalo-3.17.0.crate) = 1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf
+SIZE (rust/crates/bumpalo-3.17.0.crate) = 91975
+SHA256 (rust/crates/bytecount-0.6.8.crate) = 5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce
+SIZE (rust/crates/bytecount-0.6.8.crate) = 14694
+SHA256 (rust/crates/bytemuck-1.21.0.crate) = ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3
+SIZE (rust/crates/bytemuck-1.21.0.crate) = 51553
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/bytes-1.10.0.crate) = f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9
+SIZE (rust/crates/bytes-1.10.0.crate) = 76656
+SHA256 (rust/crates/cc-1.2.13.crate) = c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda
+SIZE (rust/crates/cc-1.2.13.crate) = 102839
+SHA256 (rust/crates/cexpr-0.6.0.crate) = 6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766
+SIZE (rust/crates/cexpr-0.6.0.crate) = 17966
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/cfg_aliases-0.2.1.crate) = 613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724
+SIZE (rust/crates/cfg_aliases-0.2.1.crate) = 6355
+SHA256 (rust/crates/checked_int_cast-1.0.0.crate) = 17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919
+SIZE (rust/crates/checked_int_cast-1.0.0.crate) = 2669
+SHA256 (rust/crates/chrono-0.4.39.crate) = 7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825
+SIZE (rust/crates/chrono-0.4.39.crate) = 222248
+SHA256 (rust/crates/clang-sys-1.8.1.crate) = 0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4
+SIZE (rust/crates/clang-sys-1.8.1.crate) = 44009
+SHA256 (rust/crates/clap-4.5.28.crate) = 3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff
+SIZE (rust/crates/clap-4.5.28.crate) = 56073
+SHA256 (rust/crates/clap_builder-4.5.27.crate) = 1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7
+SIZE (rust/crates/clap_builder-4.5.27.crate) = 168024
+SHA256 (rust/crates/clap_complete-4.5.44.crate) = 375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6
+SIZE (rust/crates/clap_complete-4.5.44.crate) = 47993
+SHA256 (rust/crates/clap_derive-4.5.28.crate) = bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed
+SIZE (rust/crates/clap_derive-4.5.28.crate) = 33428
+SHA256 (rust/crates/clap_lex-0.7.4.crate) = f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6
+SIZE (rust/crates/clap_lex-0.7.4.crate) = 12858
+SHA256 (rust/crates/clru-0.6.2.crate) = cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59
+SIZE (rust/crates/clru-0.6.2.crate) = 16497
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/colorchoice-1.0.3.crate) = 5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990
+SIZE (rust/crates/colorchoice-1.0.3.crate) = 7923
+SHA256 (rust/crates/compact_jwt-0.4.3.crate) = 12bbab6445446e8d0b07468a01d0bfdae15879de5c440c5e47ae4ae0e18a1fba
+SIZE (rust/crates/compact_jwt-0.4.3.crate) = 61901
+SHA256 (rust/crates/concread-0.5.3.crate) = cba00cef522c2597dfbb0a8d1b0ac8ac2b99714f50cc354cda71da63164da0be
+SIZE (rust/crates/concread-0.5.3.crate) = 877996
+SHA256 (rust/crates/console-0.15.10.crate) = ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b
+SIZE (rust/crates/console-0.15.10.crate) = 36449
+SHA256 (rust/crates/const-oid-0.9.6.crate) = c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8
+SIZE (rust/crates/const-oid-0.9.6.crate) = 45382
+SHA256 (rust/crates/cookie-0.16.2.crate) = e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb
+SIZE (rust/crates/cookie-0.16.2.crate) = 34632
+SHA256 (rust/crates/cookie-0.18.1.crate) = 4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747
+SIZE (rust/crates/cookie-0.18.1.crate) = 43551
+SHA256 (rust/crates/cookie_store-0.21.1.crate) = 2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9
+SIZE (rust/crates/cookie_store-0.21.1.crate) = 34692
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-0.10.0.crate) = b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63
+SIZE (rust/crates/core-foundation-0.10.0.crate) = 27023
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/cpufeatures-0.2.17.crate) = 59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280
+SIZE (rust/crates/cpufeatures-0.2.17.crate) = 13466
+SHA256 (rust/crates/crc32fast-1.4.2.crate) = a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3
+SIZE (rust/crates/crc32fast-1.4.2.crate) = 38491
+SHA256 (rust/crates/cron-0.15.0.crate) = 5877d3fbf742507b66bc2a1945106bd30dd8504019d596901ddd012a4dd01740
+SIZE (rust/crates/cron-0.15.0.crate) = 21536
+SHA256 (rust/crates/crossbeam-0.8.4.crate) = 1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8
+SIZE (rust/crates/crossbeam-0.8.4.crate) = 10500
+SHA256 (rust/crates/crossbeam-channel-0.5.14.crate) = 06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471
+SIZE (rust/crates/crossbeam-channel-0.5.14.crate) = 92728
+SHA256 (rust/crates/crossbeam-deque-0.8.6.crate) = 9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51
+SIZE (rust/crates/crossbeam-deque-0.8.6.crate) = 22471
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-queue-0.3.12.crate) = 0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115
+SIZE (rust/crates/crossbeam-queue-0.3.12.crate) = 16270
+SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
+SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
+SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
+SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/csv-1.3.1.crate) = acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf
+SIZE (rust/crates/csv-1.3.1.crate) = 888542
+SHA256 (rust/crates/csv-core-0.1.11.crate) = 5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70
+SIZE (rust/crates/csv-core-0.1.11.crate) = 25852
+SHA256 (rust/crates/darling-0.14.4.crate) = 7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850
+SIZE (rust/crates/darling-0.14.4.crate) = 25168
+SHA256 (rust/crates/darling-0.20.10.crate) = 6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989
+SIZE (rust/crates/darling-0.20.10.crate) = 32031
+SHA256 (rust/crates/darling_core-0.14.4.crate) = 109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0
+SIZE (rust/crates/darling_core-0.14.4.crate) = 57485
+SHA256 (rust/crates/darling_core-0.20.10.crate) = 95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5
+SIZE (rust/crates/darling_core-0.20.10.crate) = 65015
+SHA256 (rust/crates/darling_macro-0.14.4.crate) = a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e
+SIZE (rust/crates/darling_macro-0.14.4.crate) = 1896
+SHA256 (rust/crates/darling_macro-0.20.10.crate) = d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806
+SIZE (rust/crates/darling_macro-0.20.10.crate) = 1874
+SHA256 (rust/crates/data-encoding-2.7.0.crate) = 0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f
+SIZE (rust/crates/data-encoding-2.7.0.crate) = 21086
+SHA256 (rust/crates/der-0.7.9.crate) = f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0
+SIZE (rust/crates/der-0.7.9.crate) = 85173
+SHA256 (rust/crates/der-parser-9.0.0.crate) = 5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553
+SIZE (rust/crates/der-parser-9.0.0.crate) = 63191
+SHA256 (rust/crates/der_derive-0.7.3.crate) = 8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18
+SIZE (rust/crates/der_derive-0.7.3.crate) = 24657
+SHA256 (rust/crates/deranged-0.3.11.crate) = b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4
+SIZE (rust/crates/deranged-0.3.11.crate) = 18043
+SHA256 (rust/crates/derive_builder-0.12.0.crate) = 8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8
+SIZE (rust/crates/derive_builder-0.12.0.crate) = 35456
+SHA256 (rust/crates/derive_builder_core-0.12.0.crate) = c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f
+SIZE (rust/crates/derive_builder_core-0.12.0.crate) = 31438
+SHA256 (rust/crates/derive_builder_macro-0.12.0.crate) = ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e
*** 1088 LINES SKIPPED ***