git: 55bf3daa4aad - main - net/rosenpass: Wireguard-based post-quantum VPN

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Sun, 10 Sep 2023 16:13:58 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=55bf3daa4aad84241170dd7973ab0dffee0bcd23

commit 55bf3daa4aad84241170dd7973ab0dffee0bcd23
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2023-02-28 22:30:33 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2023-09-10 16:13:03 +0000

    net/rosenpass: Wireguard-based post-quantum VPN
    
    Rosenpass implements a post-quantum-secure key exchange in the spirit of
    a Noise protocol. The motivating use case is integrating with the
    WireGuard VPN: In this mode, the key generated by Rosenpass is supplied
    to WireGuard as its pre-shared symmetric key (PSK). This results in a
    WireGuard VPN connection with hybrid post-quantum security.
    
    While Rosenpass is designed with WireGuard in mind, it can be used as a
    stand-alone tool to exchange keys. Using this mode, it can be used to
    secure other protocols against attacks from quantum computers, given
    that they offer using a PSK, and that a secure PSK is sufficient for
    security of the protocol. To use this mode, the rosenpass binary must be
    used together with the outfile <FILE> parameter. Then, Rosenpass will
    write a key to the given file every two minutes, and print a message on
    standard out to notify the user or the calling script that the key has
    changed.
    
    The implementation is written in Rust but uses libsodium and liboqs --
    both of which are C libraries. This does not result in pretty code
    everywhere, but enables some advanced security features such as using
    libsodium's sodium_malloc. We use a couple of techniques to make sure
    the code is secure: We use variable colouring (gating use of a secret
    value through a .secret() method), and the code zeroizes all key
    material.
    
    WWW: https://rosenpass.eu
---
 net/Makefile                                       |   1 +
 net/rosenpass/Makefile                             |  37 +++
 net/rosenpass/Makefile.crates                      | 179 ++++++++++
 net/rosenpass/distinfo                             | 361 +++++++++++++++++++++
 ...argo-crates_oqs-sys-0.8.0_liboqs_CMakeLists.txt |  29 ++
 net/rosenpass/files/patch-rp                       |  37 +++
 net/rosenpass/pkg-descr                            |  23 ++
 7 files changed, 667 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index dd5762a1f41c..2e9be1bd842f 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1225,6 +1225,7 @@
     SUBDIR += rfbproxy
     SUBDIR += rinetd
     SUBDIR += ripe-whois
+    SUBDIR += rosenpass
     SUBDIR += rospo
     SUBDIR += routinator
     SUBDIR += rp-pppoe
diff --git a/net/rosenpass/Makefile b/net/rosenpass/Makefile
new file mode 100644
index 000000000000..6519f63ba71e
--- /dev/null
+++ b/net/rosenpass/Makefile
@@ -0,0 +1,37 @@
+PORTNAME=	rosenpass
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.2.0
+CATEGORIES=	net net-vpn security
+
+MAINTAINER=	fuz@FreeBSD.org
+COMMENT=	Wireguard-based post-quantum VPN
+WWW=		https://rosenpass.eu/
+
+LICENSE=	MIT APACHE20
+LICENSE_COMB=	dual
+LICENSE_FILE_APACHE20=	${WRKSRC}/LICENSE-APACHE
+LICENSE_FILE_MIT=	${WRKSRC}/LICENSE-MIT
+
+LIB_DEPENDS=	libsodium.so:security/libsodium
+RUN_DEPENDS=	bash:shells/bash \
+		wireguard>0:net/wireguard
+
+USES=		cargo llvm:build pkgconfig shebangfix
+USE_GITHUB=	yes
+
+PLIST_FILES=	bin/rosenpass \
+		bin/rp \
+		man/man1/rosenpass.1.gz \
+		man/man1/rp.1.gz
+
+pre-configure:
+	${REINPLACE_CMD} -e 's,%%BASH%%,${LOCALBASE}/bin/bash,' ${WRKSRC}/rp
+
+post-install:
+	${INSTALL_SCRIPT} ${WRKSRC}/rp ${STAGEDIR}${PREFIX}/bin/
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/rosenpass
+.for man in rp.1 rosenpass.1
+	${INSTALL_MAN} ${WRKSRC}/doc/${man} ${STAGEDIR}${MANPREFIX}/man/man${man:E}/${man}
+.endfor
+
+.include <bsd.port.mk>
diff --git a/net/rosenpass/Makefile.crates b/net/rosenpass/Makefile.crates
new file mode 100644
index 000000000000..77ed6ac3635f
--- /dev/null
+++ b/net/rosenpass/Makefile.crates
@@ -0,0 +1,179 @@
+CARGO_CRATES=	addr2line-0.21.0 \
+		adler-1.0.2 \
+		adler32-1.2.0 \
+		ahash-0.8.3 \
+		aho-corasick-1.0.4 \
+		anes-0.1.6 \
+		anstream-0.3.2 \
+		anstyle-1.0.1 \
+		anstyle-parse-0.2.1 \
+		anstyle-query-1.0.0 \
+		anstyle-wincon-1.0.2 \
+		anyhow-1.0.75 \
+		atty-0.2.14 \
+		autocfg-1.1.0 \
+		backtrace-0.3.69 \
+		base64-0.21.2 \
+		bindgen-0.65.1 \
+		bitflags-1.3.2 \
+		bitflags-2.4.0 \
+		build-deps-0.1.4 \
+		bumpalo-3.13.0 \
+		byteorder-1.4.3 \
+		cast-0.3.0 \
+		cc-1.0.83 \
+		cexpr-0.6.0 \
+		cfg-if-1.0.0 \
+		ciborium-0.2.1 \
+		ciborium-io-0.2.1 \
+		ciborium-ll-0.2.1 \
+		clang-sys-1.6.1 \
+		clap-3.2.25 \
+		clap-4.3.23 \
+		clap_builder-4.3.23 \
+		clap_derive-4.3.12 \
+		clap_lex-0.2.4 \
+		clap_lex-0.5.0 \
+		cmake-0.1.50 \
+		colorchoice-1.0.0 \
+		core2-0.4.0 \
+		crc32fast-1.3.2 \
+		criterion-0.4.0 \
+		criterion-plot-0.5.0 \
+		crossbeam-channel-0.5.8 \
+		crossbeam-deque-0.8.3 \
+		crossbeam-epoch-0.9.15 \
+		crossbeam-utils-0.8.16 \
+		dary_heap-0.3.6 \
+		either-1.9.0 \
+		env_logger-0.10.0 \
+		equivalent-1.0.1 \
+		errno-0.3.2 \
+		errno-dragonfly-0.1.2 \
+		filetime-0.2.22 \
+		flate2-1.0.27 \
+		form_urlencoded-1.2.0 \
+		gimli-0.28.0 \
+		glob-0.3.1 \
+		half-1.8.2 \
+		hashbrown-0.12.3 \
+		hashbrown-0.13.2 \
+		hashbrown-0.14.0 \
+		heck-0.4.1 \
+		hermit-abi-0.1.19 \
+		hermit-abi-0.3.2 \
+		humantime-2.1.0 \
+		idna-0.4.0 \
+		indexmap-1.9.3 \
+		indexmap-2.0.0 \
+		is-terminal-0.4.9 \
+		itertools-0.10.5 \
+		itoa-1.0.9 \
+		js-sys-0.3.64 \
+		lazy_static-1.4.0 \
+		lazycell-1.3.0 \
+		libc-0.2.147 \
+		libflate-2.0.0 \
+		libflate_lz77-2.0.0 \
+		libloading-0.7.4 \
+		libsodium-sys-stable-1.19.30 \
+		linux-raw-sys-0.4.5 \
+		log-0.4.20 \
+		memchr-2.5.0 \
+		memoffset-0.9.0 \
+		minimal-lexical-0.2.1 \
+		minisign-verify-0.2.1 \
+		miniz_oxide-0.7.1 \
+		mio-0.8.8 \
+		nom-7.1.3 \
+		num-traits-0.2.16 \
+		num_cpus-1.16.0 \
+		object-0.32.0 \
+		once_cell-1.18.0 \
+		oorandom-11.1.3 \
+		oqs-sys-0.8.0 \
+		os_str_bytes-6.5.1 \
+		paste-1.0.14 \
+		peeking_take_while-0.1.2 \
+		percent-encoding-2.3.0 \
+		pkg-config-0.3.27 \
+		plotters-0.3.5 \
+		plotters-backend-0.3.5 \
+		plotters-svg-0.3.5 \
+		prettyplease-0.2.12 \
+		proc-macro2-1.0.66 \
+		quote-1.0.33 \
+		rayon-1.7.0 \
+		rayon-core-1.11.0 \
+		redox_syscall-0.3.5 \
+		regex-1.9.3 \
+		regex-automata-0.3.6 \
+		regex-syntax-0.7.4 \
+		ring-0.16.20 \
+		rle-decode-fast-1.0.3 \
+		rustc-demangle-0.1.23 \
+		rustc-hash-1.1.0 \
+		rustix-0.38.8 \
+		rustls-0.21.6 \
+		rustls-webpki-0.100.2 \
+		rustls-webpki-0.101.4 \
+		ryu-1.0.15 \
+		same-file-1.0.6 \
+		scopeguard-1.2.0 \
+		sct-0.7.0 \
+		serde-1.0.185 \
+		serde_derive-1.0.185 \
+		serde_json-1.0.105 \
+		serde_spanned-0.6.3 \
+		shlex-1.1.0 \
+		spin-0.5.2 \
+		static_assertions-1.1.0 \
+		strsim-0.10.0 \
+		syn-2.0.29 \
+		tar-0.4.40 \
+		termcolor-1.2.0 \
+		test_bin-0.4.0 \
+		textwrap-0.16.0 \
+		thiserror-1.0.47 \
+		thiserror-impl-1.0.47 \
+		tinytemplate-1.2.1 \
+		tinyvec-1.6.0 \
+		tinyvec_macros-0.1.1 \
+		toml-0.7.6 \
+		toml_datetime-0.6.3 \
+		toml_edit-0.19.14 \
+		unicode-bidi-0.3.13 \
+		unicode-ident-1.0.11 \
+		unicode-normalization-0.1.22 \
+		untrusted-0.7.1 \
+		ureq-2.7.1 \
+		url-2.4.0 \
+		utf8parse-0.2.1 \
+		vcpkg-0.2.15 \
+		version_check-0.9.4 \
+		walkdir-2.3.3 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.87 \
+		wasm-bindgen-backend-0.2.87 \
+		wasm-bindgen-macro-0.2.87 \
+		wasm-bindgen-macro-support-0.2.87 \
+		wasm-bindgen-shared-0.2.87 \
+		web-sys-0.3.64 \
+		webpki-roots-0.23.1 \
+		which-4.4.0 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.48.0 \
+		windows-targets-0.48.5 \
+		windows_aarch64_gnullvm-0.48.5 \
+		windows_aarch64_msvc-0.48.5 \
+		windows_i686_gnu-0.48.5 \
+		windows_i686_msvc-0.48.5 \
+		windows_x86_64_gnu-0.48.5 \
+		windows_x86_64_gnullvm-0.48.5 \
+		windows_x86_64_msvc-0.48.5 \
+		winnow-0.5.14 \
+		xattr-1.0.1 \
+		zip-0.6.6
diff --git a/net/rosenpass/distinfo b/net/rosenpass/distinfo
new file mode 100644
index 000000000000..dbf9b3b19bcc
--- /dev/null
+++ b/net/rosenpass/distinfo
@@ -0,0 +1,361 @@
+TIMESTAMP = 1694055391
+SHA256 (rust/crates/addr2line-0.21.0.crate) = 8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb
+SIZE (rust/crates/addr2line-0.21.0.crate) = 40807
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/adler32-1.2.0.crate) = aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234
+SIZE (rust/crates/adler32-1.2.0.crate) = 6411
+SHA256 (rust/crates/ahash-0.8.3.crate) = 2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f
+SIZE (rust/crates/ahash-0.8.3.crate) = 42416
+SHA256 (rust/crates/aho-corasick-1.0.4.crate) = 6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a
+SIZE (rust/crates/aho-corasick-1.0.4.crate) = 171175
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstream-0.3.2.crate) = 0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163
+SIZE (rust/crates/anstream-0.3.2.crate) = 19504
+SHA256 (rust/crates/anstyle-1.0.1.crate) = 3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd
+SIZE (rust/crates/anstyle-1.0.1.crate) = 13977
+SHA256 (rust/crates/anstyle-parse-0.2.1.crate) = 938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333
+SIZE (rust/crates/anstyle-parse-0.2.1.crate) = 24802
+SHA256 (rust/crates/anstyle-query-1.0.0.crate) = 5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b
+SIZE (rust/crates/anstyle-query-1.0.0.crate) = 8620
+SHA256 (rust/crates/anstyle-wincon-1.0.2.crate) = c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c
+SIZE (rust/crates/anstyle-wincon-1.0.2.crate) = 11712
+SHA256 (rust/crates/anyhow-1.0.75.crate) = a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6
+SIZE (rust/crates/anyhow-1.0.75.crate) = 43901
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/backtrace-0.3.69.crate) = 2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837
+SIZE (rust/crates/backtrace-0.3.69.crate) = 77299
+SHA256 (rust/crates/base64-0.21.2.crate) = 604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d
+SIZE (rust/crates/base64-0.21.2.crate) = 76389
+SHA256 (rust/crates/bindgen-0.65.1.crate) = cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5
+SIZE (rust/crates/bindgen-0.65.1.crate) = 213479
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.4.0.crate) = b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635
+SIZE (rust/crates/bitflags-2.4.0.crate) = 36954
+SHA256 (rust/crates/build-deps-0.1.4.crate) = 64f14468960818ce4f3e3553c32d524446687884f8e7af5d3e252331d8a87e43
+SIZE (rust/crates/build-deps-0.1.4.crate) = 35939
+SHA256 (rust/crates/bumpalo-3.13.0.crate) = a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1
+SIZE (rust/crates/bumpalo-3.13.0.crate) = 82114
+SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610
+SIZE (rust/crates/byteorder-1.4.3.crate) = 22512
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
+SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0
+SIZE (rust/crates/cc-1.0.83.crate) = 68343
+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/ciborium-0.2.1.crate) = effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926
+SIZE (rust/crates/ciborium-0.2.1.crate) = 34974
+SHA256 (rust/crates/ciborium-io-0.2.1.crate) = cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656
+SIZE (rust/crates/ciborium-io-0.2.1.crate) = 6679
+SHA256 (rust/crates/ciborium-ll-0.2.1.crate) = defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b
+SIZE (rust/crates/ciborium-ll-0.2.1.crate) = 14649
+SHA256 (rust/crates/clang-sys-1.6.1.crate) = c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f
+SIZE (rust/crates/clang-sys-1.6.1.crate) = 41346
+SHA256 (rust/crates/clap-3.2.25.crate) = 4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123
+SIZE (rust/crates/clap-3.2.25.crate) = 219403
+SHA256 (rust/crates/clap-4.3.23.crate) = 03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3
+SIZE (rust/crates/clap-4.3.23.crate) = 55026
+SHA256 (rust/crates/clap_builder-4.3.23.crate) = f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98
+SIZE (rust/crates/clap_builder-4.3.23.crate) = 162380
+SHA256 (rust/crates/clap_derive-4.3.12.crate) = 54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050
+SIZE (rust/crates/clap_derive-4.3.12.crate) = 29052
+SHA256 (rust/crates/clap_lex-0.2.4.crate) = 2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5
+SIZE (rust/crates/clap_lex-0.2.4.crate) = 9652
+SHA256 (rust/crates/clap_lex-0.5.0.crate) = 2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b
+SIZE (rust/crates/clap_lex-0.5.0.crate) = 11792
+SHA256 (rust/crates/cmake-0.1.50.crate) = a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130
+SIZE (rust/crates/cmake-0.1.50.crate) = 16748
+SHA256 (rust/crates/colorchoice-1.0.0.crate) = acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7
+SIZE (rust/crates/colorchoice-1.0.0.crate) = 6857
+SHA256 (rust/crates/core2-0.4.0.crate) = b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505
+SIZE (rust/crates/core2-0.4.0.crate) = 37075
+SHA256 (rust/crates/crc32fast-1.3.2.crate) = b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d
+SIZE (rust/crates/crc32fast-1.3.2.crate) = 38661
+SHA256 (rust/crates/criterion-0.4.0.crate) = e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb
+SIZE (rust/crates/criterion-0.4.0.crate) = 108978
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
+SHA256 (rust/crates/crossbeam-channel-0.5.8.crate) = a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200
+SIZE (rust/crates/crossbeam-channel-0.5.8.crate) = 90455
+SHA256 (rust/crates/crossbeam-deque-0.8.3.crate) = ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef
+SIZE (rust/crates/crossbeam-deque-0.8.3.crate) = 21746
+SHA256 (rust/crates/crossbeam-epoch-0.9.15.crate) = ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7
+SIZE (rust/crates/crossbeam-epoch-0.9.15.crate) = 48553
+SHA256 (rust/crates/crossbeam-utils-0.8.16.crate) = 5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294
+SIZE (rust/crates/crossbeam-utils-0.8.16.crate) = 42508
+SHA256 (rust/crates/dary_heap-0.3.6.crate) = 7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca
+SIZE (rust/crates/dary_heap-0.3.6.crate) = 23683
+SHA256 (rust/crates/either-1.9.0.crate) = a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07
+SIZE (rust/crates/either-1.9.0.crate) = 16660
+SHA256 (rust/crates/env_logger-0.10.0.crate) = 85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0
+SIZE (rust/crates/env_logger-0.10.0.crate) = 36574
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.2.crate) = 6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f
+SIZE (rust/crates/errno-0.3.2.crate) = 10424
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/filetime-0.2.22.crate) = d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0
+SIZE (rust/crates/filetime-0.2.22.crate) = 15029
+SHA256 (rust/crates/flate2-1.0.27.crate) = c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010
+SIZE (rust/crates/flate2-1.0.27.crate) = 73460
+SHA256 (rust/crates/form_urlencoded-1.2.0.crate) = a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652
+SIZE (rust/crates/form_urlencoded-1.2.0.crate) = 8923
+SHA256 (rust/crates/gimli-0.28.0.crate) = 6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0
+SIZE (rust/crates/gimli-0.28.0.crate) = 269277
+SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
+SIZE (rust/crates/glob-0.3.1.crate) = 18880
+SHA256 (rust/crates/half-1.8.2.crate) = eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7
+SIZE (rust/crates/half-1.8.2.crate) = 41874
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.13.2.crate) = 43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e
+SIZE (rust/crates/hashbrown-0.13.2.crate) = 105265
+SHA256 (rust/crates/hashbrown-0.14.0.crate) = 2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a
+SIZE (rust/crates/hashbrown-0.14.0.crate) = 116103
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/hermit-abi-0.3.2.crate) = 443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b
+SIZE (rust/crates/hermit-abi-0.3.2.crate) = 13783
+SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4
+SIZE (rust/crates/humantime-2.1.0.crate) = 16749
+SHA256 (rust/crates/idna-0.4.0.crate) = 7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c
+SIZE (rust/crates/idna-0.4.0.crate) = 271429
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/indexmap-2.0.0.crate) = d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d
+SIZE (rust/crates/indexmap-2.0.0.crate) = 64038
+SHA256 (rust/crates/is-terminal-0.4.9.crate) = cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b
+SIZE (rust/crates/is-terminal-0.4.9.crate) = 8109
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itoa-1.0.9.crate) = af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38
+SIZE (rust/crates/itoa-1.0.9.crate) = 10492
+SHA256 (rust/crates/js-sys-0.3.64.crate) = c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a
+SIZE (rust/crates/js-sys-0.3.64.crate) = 80313
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lazycell-1.3.0.crate) = 830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55
+SIZE (rust/crates/lazycell-1.3.0.crate) = 12502
+SHA256 (rust/crates/libc-0.2.147.crate) = b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3
+SIZE (rust/crates/libc-0.2.147.crate) = 686772
+SHA256 (rust/crates/libflate-2.0.0.crate) = 9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf
+SIZE (rust/crates/libflate-2.0.0.crate) = 42505
+SHA256 (rust/crates/libflate_lz77-2.0.0.crate) = be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524
+SIZE (rust/crates/libflate_lz77-2.0.0.crate) = 5893
+SHA256 (rust/crates/libloading-0.7.4.crate) = b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f
+SIZE (rust/crates/libloading-0.7.4.crate) = 27580
+SHA256 (rust/crates/libsodium-sys-stable-1.19.30.crate) = 2cf9c3bd17952580efd8f57e3d01d724cfb18d51fbd9dc00a65e5911f71521ba
+SIZE (rust/crates/libsodium-sys-stable-1.19.30.crate) = 1895511
+SHA256 (rust/crates/linux-raw-sys-0.4.5.crate) = 57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503
+SIZE (rust/crates/linux-raw-sys-0.4.5.crate) = 1274380
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/memoffset-0.9.0.crate) = 5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c
+SIZE (rust/crates/memoffset-0.9.0.crate) = 9033
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
+SHA256 (rust/crates/minisign-verify-0.2.1.crate) = 933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881
+SIZE (rust/crates/minisign-verify-0.2.1.crate) = 21582
+SHA256 (rust/crates/miniz_oxide-0.7.1.crate) = e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7
+SIZE (rust/crates/miniz_oxide-0.7.1.crate) = 55194
+SHA256 (rust/crates/mio-0.8.8.crate) = 927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2
+SIZE (rust/crates/mio-0.8.8.crate) = 94264
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/num-traits-0.2.16.crate) = f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2
+SIZE (rust/crates/num-traits-0.2.16.crate) = 50130
+SHA256 (rust/crates/num_cpus-1.16.0.crate) = 4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43
+SIZE (rust/crates/num_cpus-1.16.0.crate) = 15713
+SHA256 (rust/crates/object-0.32.0.crate) = 77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe
+SIZE (rust/crates/object-0.32.0.crate) = 275335
+SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d
+SIZE (rust/crates/once_cell-1.18.0.crate) = 32969
+SHA256 (rust/crates/oorandom-11.1.3.crate) = 0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575
+SIZE (rust/crates/oorandom-11.1.3.crate) = 10068
+SHA256 (rust/crates/oqs-sys-0.8.0.crate) = 7fa114149fb6e5362b9cf539de9305a6a3cf1556fbfa93b5053b4f70cf3adfb9
+SIZE (rust/crates/oqs-sys-0.8.0.crate) = 2788646
+SHA256 (rust/crates/os_str_bytes-6.5.1.crate) = 4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac
+SIZE (rust/crates/os_str_bytes-6.5.1.crate) = 22778
+SHA256 (rust/crates/paste-1.0.14.crate) = de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c
+SIZE (rust/crates/paste-1.0.14.crate) = 18157
+SHA256 (rust/crates/peeking_take_while-0.1.2.crate) = 19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099
+SIZE (rust/crates/peeking_take_while-0.1.2.crate) = 6697
+SHA256 (rust/crates/percent-encoding-2.3.0.crate) = 9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94
+SIZE (rust/crates/percent-encoding-2.3.0.crate) = 10196
+SHA256 (rust/crates/pkg-config-0.3.27.crate) = 26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964
+SIZE (rust/crates/pkg-config-0.3.27.crate) = 18838
+SHA256 (rust/crates/plotters-0.3.5.crate) = d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45
+SIZE (rust/crates/plotters-0.3.5.crate) = 143975
+SHA256 (rust/crates/plotters-backend-0.3.5.crate) = 9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609
+SIZE (rust/crates/plotters-backend-0.3.5.crate) = 13440
+SHA256 (rust/crates/plotters-svg-0.3.5.crate) = 38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab
+SIZE (rust/crates/plotters-svg-0.3.5.crate) = 6948
+SHA256 (rust/crates/prettyplease-0.2.12.crate) = 6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62
+SIZE (rust/crates/prettyplease-0.2.12.crate) = 56698
+SHA256 (rust/crates/proc-macro2-1.0.66.crate) = 18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9
+SIZE (rust/crates/proc-macro2-1.0.66.crate) = 43575
+SHA256 (rust/crates/quote-1.0.33.crate) = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae
+SIZE (rust/crates/quote-1.0.33.crate) = 28090
+SHA256 (rust/crates/rayon-1.7.0.crate) = 1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b
+SIZE (rust/crates/rayon-1.7.0.crate) = 169488
+SHA256 (rust/crates/rayon-core-1.11.0.crate) = 4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d
+SIZE (rust/crates/rayon-core-1.11.0.crate) = 73118
+SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29
+SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404
+SHA256 (rust/crates/regex-1.9.3.crate) = 81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a
+SIZE (rust/crates/regex-1.9.3.crate) = 252676
+SHA256 (rust/crates/regex-automata-0.3.6.crate) = fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69
+SIZE (rust/crates/regex-automata-0.3.6.crate) = 607174
+SHA256 (rust/crates/regex-syntax-0.7.4.crate) = e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2
+SIZE (rust/crates/regex-syntax-0.7.4.crate) = 343365
+SHA256 (rust/crates/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (rust/crates/rle-decode-fast-1.0.3.crate) = 3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422
+SIZE (rust/crates/rle-decode-fast-1.0.3.crate) = 62086
+SHA256 (rust/crates/rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76
+SIZE (rust/crates/rustc-demangle-0.1.23.crate) = 28970
+SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustix-0.38.8.crate) = 19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f
+SIZE (rust/crates/rustix-0.38.8.crate) = 333258
+SHA256 (rust/crates/rustls-0.21.6.crate) = 1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb
+SIZE (rust/crates/rustls-0.21.6.crate) = 282907
+SHA256 (rust/crates/rustls-webpki-0.100.2.crate) = e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab
+SIZE (rust/crates/rustls-webpki-0.100.2.crate) = 71561
+SHA256 (rust/crates/rustls-webpki-0.101.4.crate) = 7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d
+SIZE (rust/crates/rustls-webpki-0.101.4.crate) = 164324
+SHA256 (rust/crates/ryu-1.0.15.crate) = 1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741
+SIZE (rust/crates/ryu-1.0.15.crate) = 46906
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/sct-0.7.0.crate) = d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4
+SIZE (rust/crates/sct-0.7.0.crate) = 27502
+SHA256 (rust/crates/serde-1.0.185.crate) = be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31
+SIZE (rust/crates/serde-1.0.185.crate) = 77337
+SHA256 (rust/crates/serde_derive-1.0.185.crate) = dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec
+SIZE (rust/crates/serde_derive-1.0.185.crate) = 55569
+SHA256 (rust/crates/serde_json-1.0.105.crate) = 693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360
+SIZE (rust/crates/serde_json-1.0.105.crate) = 146316
+SHA256 (rust/crates/serde_spanned-0.6.3.crate) = 96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186
+SIZE (rust/crates/serde_spanned-0.6.3.crate) = 7737
+SHA256 (rust/crates/shlex-1.1.0.crate) = 43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3
+SIZE (rust/crates/shlex-1.1.0.crate) = 5199
+SHA256 (rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/syn-2.0.29.crate) = c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a
+SIZE (rust/crates/syn-2.0.29.crate) = 241664
+SHA256 (rust/crates/tar-0.4.40.crate) = b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb
+SIZE (rust/crates/tar-0.4.40.crate) = 51844
+SHA256 (rust/crates/termcolor-1.2.0.crate) = be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6
+SIZE (rust/crates/termcolor-1.2.0.crate) = 17917
+SHA256 (rust/crates/test_bin-0.4.0.crate) = 8e7a7de15468c6e65dd7db81cf3822c1ec94c71b2a3c1a976ea8e4696c91115c
+SIZE (rust/crates/test_bin-0.4.0.crate) = 7591
+SHA256 (rust/crates/textwrap-0.16.0.crate) = 222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d
+SIZE (rust/crates/textwrap-0.16.0.crate) = 53722
+SHA256 (rust/crates/thiserror-1.0.47.crate) = 97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f
+SIZE (rust/crates/thiserror-1.0.47.crate) = 18811
+SHA256 (rust/crates/thiserror-impl-1.0.47.crate) = 6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b
+SIZE (rust/crates/thiserror-impl-1.0.47.crate) = 15080
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tinyvec-1.6.0.crate) = 87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50
+SIZE (rust/crates/tinyvec-1.6.0.crate) = 45991
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/toml-0.7.6.crate) = c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542
+SIZE (rust/crates/toml-0.7.6.crate) = 49220
+SHA256 (rust/crates/toml_datetime-0.6.3.crate) = 7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b
+SIZE (rust/crates/toml_datetime-0.6.3.crate) = 10770
+SHA256 (rust/crates/toml_edit-0.19.14.crate) = f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a
+SIZE (rust/crates/toml_edit-0.19.14.crate) = 94875
+SHA256 (rust/crates/unicode-bidi-0.3.13.crate) = 92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460
+SIZE (rust/crates/unicode-bidi-0.3.13.crate) = 44477
+SHA256 (rust/crates/unicode-ident-1.0.11.crate) = 301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c
+SIZE (rust/crates/unicode-ident-1.0.11.crate) = 42067
+SHA256 (rust/crates/unicode-normalization-0.1.22.crate) = 5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921
+SIZE (rust/crates/unicode-normalization-0.1.22.crate) = 122604
+SHA256 (rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (rust/crates/ureq-2.7.1.crate) = 0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9
+SIZE (rust/crates/ureq-2.7.1.crate) = 111068
+SHA256 (rust/crates/url-2.4.0.crate) = 50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb
+SIZE (rust/crates/url-2.4.0.crate) = 75670
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
+SIZE (rust/crates/vcpkg-0.2.15.crate) = 228735
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/walkdir-2.3.3.crate) = 36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698
+SIZE (rust/crates/walkdir-2.3.3.crate) = 23125
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.87.crate) = 7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342
+SIZE (rust/crates/wasm-bindgen-0.2.87.crate) = 175052
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd
+SIZE (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 26821
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.87.crate) = dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d
+SIZE (rust/crates/wasm-bindgen-macro-0.2.87.crate) = 13897
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 20006
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.87.crate) = ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1
+SIZE (rust/crates/wasm-bindgen-shared-0.2.87.crate) = 7248
+SHA256 (rust/crates/web-sys-0.3.64.crate) = 9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b
+SIZE (rust/crates/web-sys-0.3.64.crate) = 725584
+SHA256 (rust/crates/webpki-roots-0.23.1.crate) = b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338
+SIZE (rust/crates/webpki-roots-0.23.1.crate) = 245626
+SHA256 (rust/crates/which-4.4.0.crate) = 2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269
+SIZE (rust/crates/which-4.4.0.crate) = 10889
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/winnow-0.5.14.crate) = d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97
+SIZE (rust/crates/winnow-0.5.14.crate) = 144956
+SHA256 (rust/crates/xattr-1.0.1.crate) = f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985
+SIZE (rust/crates/xattr-1.0.1.crate) = 12258
+SHA256 (rust/crates/zip-0.6.6.crate) = 760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261
+SIZE (rust/crates/zip-0.6.6.crate) = 65789
+SHA256 (rosenpass-rosenpass-v0.2.0_GH0.tar.gz) = 11ed1f8d91ce7dbfc905293306c93aebf54d55a342f325b62f0d6bd0634c69d0
+SIZE (rosenpass-rosenpass-v0.2.0_GH0.tar.gz) = 4868563
diff --git a/net/rosenpass/files/patch-cargo-crates_oqs-sys-0.8.0_liboqs_CMakeLists.txt b/net/rosenpass/files/patch-cargo-crates_oqs-sys-0.8.0_liboqs_CMakeLists.txt
new file mode 100644
index 000000000000..4ff03e4621c9
--- /dev/null
+++ b/net/rosenpass/files/patch-cargo-crates_oqs-sys-0.8.0_liboqs_CMakeLists.txt
@@ -0,0 +1,29 @@
+--- cargo-crates/oqs-sys-0.8.0/liboqs/CMakeLists.txt.orig	2023-09-10 06:30:42 UTC
++++ cargo-crates/oqs-sys-0.8.0/liboqs/CMakeLists.txt
+@@ -49,7 +49,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64"
+     if(${OQS_DIST_BUILD})
+         set(OQS_DIST_X86_64_BUILD ON)
+     endif()
+-elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86|i586|i686")
++elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86|i386|i586|i686")
+     set(ARCH "i586")
+     set(ARCH_X86 ON)
+     if(${OQS_DIST_BUILD})
+@@ -61,7 +61,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|a
+     if(${OQS_DIST_BUILD})
+         set(OQS_DIST_ARM64_V8_BUILD ON)
+     endif()
+-elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armel|armhf|armv7|arm32v7")
++elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armel|armhf|armv6|armv7|arm32v7")
+     set(ARCH "arm32v7")
+     set(ARCH_ARM32v7 ON)
+     if(${OQS_DIST_BUILD})
+@@ -86,7 +86,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
+     if(${OQS_DIST_BUILD})
+         set(OQS_DIST_S390X_BUILD ON)
+     endif()
+-elseif(OQS_PERMIT_UNSUPPORTED_ARCHITECTURE)
++elseif(OQS_PERMIT_UNSUPPORTED_ARCHITECTURE OR TRUE)
+     message(WARNING "Unknown or unsupported processor: " ${CMAKE_SYSTEM_PROCESSOR})
+     message(WARNING "Compilation on an unsupported processor should only be used for testing, as it may result an insecure configuration, for example due to variable-time instructions leaking secret information.")
+ else()
diff --git a/net/rosenpass/files/patch-rp b/net/rosenpass/files/patch-rp
new file mode 100644
index 000000000000..2236ebe19b4b
--- /dev/null
+++ b/net/rosenpass/files/patch-rp
@@ -0,0 +1,37 @@
+--- rp.orig	2023-08-29 21:48:48 UTC
++++ rp
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env bash
++#!%%BASH%%
+ 
+ set -e
+ 
+@@ -78,7 +78,7 @@ frag_init() {
+   explain=0
+   frag_transaction=()
+   frag "
+-    #! /bin/bash
++    #!%%BASH%%
+     set -e"
+ }
+ 
+@@ -223,7 +223,7 @@ exchange() {
+         ip link set dev $(enquote "${dev}") up"
+       ;;
+ 
+-    freebsd*)
++    freebsd*|FreeBSD*)
+       frag "
+         # load the WireGuard kernel module
+         kldload -n if_wg || fatal 'Cannot load if_wg kernel module'"
+@@ -351,10 +351,6 @@ main() {
+   project_name="rosenpass"
+   verbose=0
+   scriptdir="$(dirname "${script}")"
+-  gitdir="$(detect_git_dir)" || true
+-  if [[ -d /nix ]]; then
+-    nixdir="$(readlink -f result/bin/rp | grep -Pio '^/nix/store/[^/]+(?=/bin/[^/]+)')" || true
+-  fi
+   binary="$(find_rosenpass_binary)"
+ 
+   # Parse command
diff --git a/net/rosenpass/pkg-descr b/net/rosenpass/pkg-descr
new file mode 100644
index 000000000000..702f00bf235c
--- /dev/null
+++ b/net/rosenpass/pkg-descr
@@ -0,0 +1,23 @@
+Rosenpass implements a post-quantum-secure key exchange in the spirit of
+a Noise protocol. The motivating use case is integrating with the
+WireGuard VPN: In this mode, the key generated by Rosenpass is supplied
+to WireGuard as its pre-shared symmetric key (PSK). This results in a
+WireGuard VPN connection with hybrid post-quantum security.
+
+While Rosenpass is designed with WireGuard in mind, it can be used as a
+stand-alone tool to exchange keys. Using this mode, it can be used to
+secure other protocols against attacks from quantum computers, given
+that they offer using a PSK, and that a secure PSK is sufficient for
+security of the protocol. To use this mode, the rosenpass binary must be
+used together with the outfile <FILE> parameter. Then, Rosenpass will
+write a key to the given file every two minutes, and print a message on
+standard out to notify the user or the calling script that the key has
+changed.
+
+The implementation is written in Rust but uses libsodium and liboqs --
+both of which are C libraries. This does not result in pretty code
+everywhere, but enables some advanced security features such as using
+libsodium's sodium_malloc. We use a couple of techniques to make sure
+the code is secure: We use variable colouring (gating use of a secret
+value through a .secret() method), and the code zeroizes all key
+material.