git: 342f6a12f5fe - main - net-im/libsignal-node: Add new port

From: Mikael Urankar <mikael_at_FreeBSD.org>
Date: Thu, 23 Jun 2022 11:38:22 UTC
The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=342f6a12f5fe379e96b02231624d1dc0a4ef12fc

commit 342f6a12f5fe379e96b02231624d1dc0a4ef12fc
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2022-06-23 11:22:01 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2022-06-23 11:38:17 +0000

    net-im/libsignal-node: Add new port
    
    libsignal contains platform-agnostic APIs used by the official Signal clients
    and servers, exposed as a Java, Swift, or TypeScript library.
    The underlying implementations are written in Rust:
    
     - libsignal-protocol: Implements the Signal protocol, including the
       Double Ratchet algorithm. A replacement for libsignal-protocol-java and
       libsignal-metadata-java.
     - signal-crypto: Cryptographic primitives such as AES-GCM. We use RustCrypto's
       where we can but sometimes have differing needs.
     - device-transfer: Support logic for Signal's device-to-device transfer
       feature.
     - attest: Functionality for remote attestation of SGX enclaves and
       server-side HSMs.
     - zkgroup: Functionality for zero-knowledge groups and related features
       available in Signal.
     - poksho: Utilities for implementing zero-knowledge proofs (such as those used
       by zkgroup); stands for "proof-of-knowledge, stateful-hash-object".
    
    WWW: https://github.com/signalapp/libsignal
---
 net-im/Makefile                                    |   1 +
 net-im/libsignal-node/Makefile                     | 268 +++++++++++++
 net-im/libsignal-node/distinfo                     | 429 +++++++++++++++++++++
 net-im/libsignal-node/files/patch-node_binding.gyp |  10 +
 net-im/libsignal-node/pkg-descr                    |  19 +
 5 files changed, 727 insertions(+)

diff --git a/net-im/Makefile b/net-im/Makefile
index 890f22c7db1e..3341d6d8b47d 100644
--- a/net-im/Makefile
+++ b/net-im/Makefile
@@ -63,6 +63,7 @@
     SUBDIR += libqtelegram-ae
     SUBDIR += libquotient
     SUBDIR += libsignal-client
+    SUBDIR += libsignal-node
     SUBDIR += libsignon-glib
     SUBDIR += libstrophe
     SUBDIR += loudmouth
diff --git a/net-im/libsignal-node/Makefile b/net-im/libsignal-node/Makefile
new file mode 100644
index 000000000000..6dcaf9894fe3
--- /dev/null
+++ b/net-im/libsignal-node/Makefile
@@ -0,0 +1,268 @@
+PORTNAME=	libsignal
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.16.0
+CATEGORIES=	net-im
+MASTER_SITES=	LOCAL/mikael/signal-desktop/:yarn
+PKGNAMESUFFIX=	-node
+DISTFILES=	libsignal-node-${DISTVERSION}-yarn-cache.tar.gz:yarn
+
+MAINTAINER=	mikael@FreeBSD.org
+COMMENT=	Platform-agnostic APIs used by the official Signal clients and servers
+
+LICENSE=	AGPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	protoc:devel/protobuf \
+		yarn:www/yarn-node16
+
+USES=		cargo gmake python:3.7+,build
+USE_GITHUB=	yes
+GH_ACCOUNT=	signalapp
+
+CARGO_CRATES=	addr2line-0.17.0 \
+		adler-1.0.2 \
+		aead-0.4.3 \
+		aes-0.7.5 \
+		aes-gcm-0.9.4 \
+		aes-gcm-siv-0.10.3 \
+		aho-corasick-0.7.18 \
+		anyhow-1.0.56 \
+		arrayref-0.3.6 \
+		async-trait-0.1.52 \
+		atty-0.2.14 \
+		autocfg-1.1.0 \
+		backtrace-0.3.64 \
+		base64-0.13.0 \
+		bincode-1.3.3 \
+		bitflags-1.3.2 \
+		blake2-0.9.2 \
+		block-buffer-0.9.0 \
+		block-modes-0.8.1 \
+		block-padding-0.2.1 \
+		bstr-0.2.17 \
+		bumpalo-3.7.1 \
+		byteorder-1.4.3 \
+		bytes-1.1.0 \
+		cast-0.2.7 \
+		cc-1.0.73 \
+		cesu8-1.1.0 \
+		cfg-if-1.0.0 \
+		chacha20-0.7.3 \
+		chacha20poly1305-0.8.2 \
+		chrono-0.4.19 \
+		cipher-0.3.0 \
+		clap-2.34.0 \
+		combine-4.6.3 \
+		cpufeatures-0.2.2 \
+		criterion-0.3.5 \
+		criterion-plot-0.4.4 \
+		crossbeam-channel-0.5.4 \
+		crossbeam-deque-0.8.1 \
+		crossbeam-epoch-0.9.8 \
+		crossbeam-utils-0.8.8 \
+		crypto-mac-0.8.0 \
+		crypto-mac-0.11.1 \
+		csv-1.1.6 \
+		csv-core-0.1.10 \
+		ctr-0.8.0 \
+		digest-0.9.0 \
+		displaydoc-0.2.3 \
+		either-1.6.1 \
+		fastrand-1.7.0 \
+		fixedbitset-0.4.1 \
+		foreign-types-0.3.2 \
+		foreign-types-shared-0.1.1 \
+		futures-core-0.3.21 \
+		futures-macro-0.3.21 \
+		futures-task-0.3.21 \
+		futures-util-0.3.21 \
+		generic-array-0.14.5 \
+		getrandom-0.1.16 \
+		getrandom-0.2.5 \
+		ghash-0.4.4 \
+		gimli-0.26.1 \
+		half-1.8.2 \
+		hashbrown-0.11.2 \
+		heck-0.3.3 \
+		hermit-abi-0.1.19 \
+		hex-0.4.3 \
+		hkdf-0.11.0 \
+		hmac-0.11.0 \
+		indexmap-1.8.0 \
+		instant-0.1.12 \
+		itertools-0.10.3 \
+		itoa-0.4.8 \
+		itoa-1.0.1 \
+		jni-0.19.0 \
+		jni-sys-0.3.0 \
+		js-sys-0.3.56 \
+		keccak-0.1.0 \
+		lazy_static-1.4.0 \
+		libc-0.2.121 \
+		libloading-0.6.7 \
+		libm-0.2.2 \
+		linkme-0.2.10 \
+		linkme-impl-0.2.10 \
+		log-0.4.14 \
+		log-panics-2.0.0 \
+		memchr-2.4.1 \
+		memoffset-0.6.5 \
+		miniz_oxide-0.4.4 \
+		multimap-0.8.3 \
+		neon-0.10.0 \
+		neon-build-0.10.0 \
+		neon-macros-0.10.0 \
+		neon-runtime-0.10.0 \
+		num-bigint-0.4.3 \
+		num-integer-0.1.44 \
+		num-iter-0.1.42 \
+		num-traits-0.2.14 \
+		num_cpus-1.13.1 \
+		num_enum-0.5.7 \
+		num_enum_derive-0.5.7 \
+		object-0.27.1 \
+		oid-0.2.1 \
+		once_cell-1.10.0 \
+		oorandom-11.1.3 \
+		opaque-debug-0.3.0 \
+		openssl-0.10.38 \
+		openssl-sys-0.9.72 \
+		paste-1.0.6 \
+		pem-0.8.3 \
+		pest-2.1.3 \
+		petgraph-0.6.0 \
+		picky-6.3.0 \
+		picky-asn1-0.3.3 \
+		picky-asn1-der-0.2.5 \
+		picky-asn1-x509-0.6.1 \
+		pin-project-lite-0.2.8 \
+		pin-utils-0.1.0 \
+		pkg-config-0.3.24 \
+		plotters-0.3.1 \
+		plotters-backend-0.3.2 \
+		plotters-svg-0.3.1 \
+		poly1305-0.7.2 \
+		polyval-0.5.3 \
+		ppv-lite86-0.2.16 \
+		proc-macro-crate-1.1.3 \
+		proc-macro2-1.0.29 \
+		prost-0.9.0 \
+		prost-build-0.9.0 \
+		prost-derive-0.9.0 \
+		prost-types-0.9.0 \
+		quote-1.0.10 \
+		rand-0.7.3 \
+		rand-0.8.5 \
+		rand_chacha-0.2.2 \
+		rand_chacha-0.3.1 \
+		rand_core-0.5.1 \
+		rand_core-0.6.3 \
+		rand_hc-0.2.0 \
+		rayon-1.5.1 \
+		rayon-core-1.9.1 \
+		redox_syscall-0.2.11 \
+		regex-1.5.5 \
+		regex-automata-0.1.10 \
+		regex-syntax-0.6.25 \
+		remove_dir_all-0.5.3 \
+		rsa-0.4.1 \
+		rustc-demangle-0.1.21 \
+		rustc_version-0.3.3 \
+		rustc_version-0.4.0 \
+		ryu-1.0.9 \
+		same-file-1.0.6 \
+		scopeguard-1.1.0 \
+		semver-0.9.0 \
+		semver-0.11.0 \
+		semver-1.0.6 \
+		semver-parser-0.7.0 \
+		semver-parser-0.10.2 \
+		serde-1.0.136 \
+		serde_bytes-0.11.5 \
+		serde_cbor-0.11.2 \
+		serde_derive-1.0.136 \
+		serde_json-1.0.79 \
+		sha-1-0.9.8 \
+		sha2-0.9.9 \
+		sha3-0.9.1 \
+		simple_asn1-0.5.4 \
+		slab-0.4.5 \
+		smallvec-1.8.0 \
+		snow-0.8.0 \
+		spin-0.5.2 \
+		static_assertions-1.1.0 \
+		subtle-2.4.1 \
+		syn-1.0.80 \
+		syn-mid-0.5.3 \
+		synstructure-0.12.6 \
+		tempfile-3.3.0 \
+		textwrap-0.11.0 \
+		thiserror-1.0.30 \
+		thiserror-impl-1.0.30 \
+		time-0.1.43 \
+		tinytemplate-1.2.1 \
+		toml-0.5.8 \
+		typenum-1.15.0 \
+		ucd-trie-0.1.3 \
+		unicode-segmentation-1.9.0 \
+		unicode-width-0.1.9 \
+		unicode-xid-0.2.2 \
+		universal-hash-0.4.1 \
+		unzip3-1.0.0 \
+		uuid-0.8.2 \
+		vcpkg-0.2.15 \
+		version_check-0.9.4 \
+		walkdir-2.3.2 \
+		wasi-0.9.0+wasi-snapshot-preview1 \
+		wasi-0.10.2+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.79 \
+		wasm-bindgen-backend-0.2.79 \
+		wasm-bindgen-macro-0.2.79 \
+		wasm-bindgen-macro-support-0.2.79 \
+		wasm-bindgen-shared-0.2.79 \
+		web-sys-0.3.56 \
+		which-4.2.4 \
+		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 \
+		x25519-dalek-1.1.1 \
+		zeroize-1.3.0 \
+		zeroize_derive-1.3.2 \
+		num-bigint-dig@git+https://github.com/dignifiedquire/num-bigint?rev=56576b592fea6341b7e1711a1629e4cc1bfc419c\#56576b592fea6341b7e1711a1629e4cc1bfc419c \
+		curve25519-dalek@git+https://github.com/signalapp/curve25519-dalek?branch=3.0.0-lizard2\#b3329ed05ce7ffae5b7c18b9b6e1fd3588eaf468
+
+MAKE_ENV=	ELECTRON_OVERRIDE_DIST_PATH=${LOCALBASE}/share/electron18 \
+		ELECTRON_SKIP_BINARY_DOWNLOAD=1 \
+		HOME=${WRKDIR} \
+		PYTHON=${PYTHON_CMD} \
+		XDG_CACHE_HOME=${WRKDIR}/.cache
+
+USE_LDCONFIG=		yes
+
+PLIST_FILES=	lib/libsignal_node.so
+
+post-patch:
+	${REINPLACE_CMD} "s#python3#${PYTHON_CMD}#" \
+		${WRKSRC}/node/binding.gyp
+
+do-build:
+	${ECHO} 'yarn-offline-mirror "../yarn-cache"' > ${WRKSRC}/.yarnrc
+	cd ${WRKSRC}/node && \
+		${SETENV} ${MAKE_ENV} yarn install --frozen-lockfile --ignore-optional --offline
+	cd ${WRKSRC}/node && \
+		${SETENV} ${MAKE_ENV} yarn tsc
+
+do-install:
+	${INSTALL_DATA} ${WRKSRC}/node/build/Release/obj.target/libsignal_client_freebsd_x64.node/geni/rust/x86_64-unknown-freebsd/release/libsignal_node.so \
+		${STAGEDIR}${PREFIX}/lib/
+
+create-caches-tarball:
+	# do some cleanup first
+	${RM} -r  ${WRKDIR}/.cache/yarn/v6/.tmp
+	${FIND} ${WRKDIR}/.cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
+
+	cd ${WRKDIR} && \
+		${TAR} czf libsignal-node-${DISTVERSION}-yarn-cache.tar.gz .cache yarn-cache
+
+.include <bsd.port.mk>
diff --git a/net-im/libsignal-node/distinfo b/net-im/libsignal-node/distinfo
new file mode 100644
index 000000000000..1446f7bbfb9c
--- /dev/null
+++ b/net-im/libsignal-node/distinfo
@@ -0,0 +1,429 @@
+TIMESTAMP = 1655479681
+SHA256 (libsignal-node-0.16.0-yarn-cache.tar.gz) = d84d1c703410983b8dc1e73a7df75741b868e9810d96c08850eb1f72490dff7a
+SIZE (libsignal-node-0.16.0-yarn-cache.tar.gz) = 74236179
+SHA256 (rust/crates/addr2line-0.17.0.crate) = b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b
+SIZE (rust/crates/addr2line-0.17.0.crate) = 32260
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/aead-0.4.3.crate) = 0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877
+SIZE (rust/crates/aead-0.4.3.crate) = 14717
+SHA256 (rust/crates/aes-0.7.5.crate) = 9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8
+SIZE (rust/crates/aes-0.7.5.crate) = 128544
+SHA256 (rust/crates/aes-gcm-0.9.4.crate) = df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6
+SIZE (rust/crates/aes-gcm-0.9.4.crate) = 148477
+SHA256 (rust/crates/aes-gcm-siv-0.10.3.crate) = 589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc
+SIZE (rust/crates/aes-gcm-siv-0.10.3.crate) = 26809
+SHA256 (rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
+SIZE (rust/crates/aho-corasick-0.7.18.crate) = 112923
+SHA256 (rust/crates/anyhow-1.0.56.crate) = 4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27
+SIZE (rust/crates/anyhow-1.0.56.crate) = 44780
+SHA256 (rust/crates/arrayref-0.3.6.crate) = a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
+SIZE (rust/crates/arrayref-0.3.6.crate) = 10035
+SHA256 (rust/crates/async-trait-0.1.52.crate) = 061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3
+SIZE (rust/crates/async-trait-0.1.52.crate) = 25913
+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.64.crate) = 5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f
+SIZE (rust/crates/backtrace-0.3.64.crate) = 74311
+SHA256 (rust/crates/base64-0.13.0.crate) = 904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd
+SIZE (rust/crates/base64-0.13.0.crate) = 62070
+SHA256 (rust/crates/bincode-1.3.3.crate) = b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad
+SIZE (rust/crates/bincode-1.3.3.crate) = 28958
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/blake2-0.9.2.crate) = 0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174
+SIZE (rust/crates/blake2-0.9.2.crate) = 48035
+SHA256 (rust/crates/block-buffer-0.9.0.crate) = 4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
+SIZE (rust/crates/block-buffer-0.9.0.crate) = 7108
+SHA256 (rust/crates/block-modes-0.8.1.crate) = 2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e
+SIZE (rust/crates/block-modes-0.8.1.crate) = 16961
+SHA256 (rust/crates/block-padding-0.2.1.crate) = 8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae
+SIZE (rust/crates/block-padding-0.2.1.crate) = 7672
+SHA256 (rust/crates/bstr-0.2.17.crate) = ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223
+SIZE (rust/crates/bstr-0.2.17.crate) = 330350
+SHA256 (rust/crates/bumpalo-3.7.1.crate) = d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538
+SIZE (rust/crates/bumpalo-3.7.1.crate) = 78573
+SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610
+SIZE (rust/crates/byteorder-1.4.3.crate) = 22512
+SHA256 (rust/crates/bytes-1.1.0.crate) = c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8
+SIZE (rust/crates/bytes-1.1.0.crate) = 49640
+SHA256 (rust/crates/cast-0.2.7.crate) = 4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a
+SIZE (rust/crates/cast-0.2.7.crate) = 11222
+SHA256 (rust/crates/cc-1.0.73.crate) = 2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11
+SIZE (rust/crates/cc-1.0.73.crate) = 57880
+SHA256 (rust/crates/cesu8-1.1.0.crate) = 6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c
+SIZE (rust/crates/cesu8-1.1.0.crate) = 10555
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chacha20-0.7.3.crate) = f08493fa7707effc63254c66c6ea908675912493cd67952eda23c09fae2610b1
+SIZE (rust/crates/chacha20-0.7.3.crate) = 26579
+SHA256 (rust/crates/chacha20poly1305-0.8.2.crate) = b6547abe025f4027edacd9edaa357aded014eecec42a5070d9b885c3c334aba2
+SIZE (rust/crates/chacha20poly1305-0.8.2.crate) = 68373
+SHA256 (rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (rust/crates/cipher-0.3.0.crate) = 7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7
+SIZE (rust/crates/cipher-0.3.0.crate) = 12756
+SHA256 (rust/crates/clap-2.34.0.crate) = a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c
+SIZE (rust/crates/clap-2.34.0.crate) = 202210
+SHA256 (rust/crates/combine-4.6.3.crate) = 50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062
+SIZE (rust/crates/combine-4.6.3.crate) = 132015
+SHA256 (rust/crates/cpufeatures-0.2.2.crate) = 59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b
+SIZE (rust/crates/cpufeatures-0.2.2.crate) = 10655
+SHA256 (rust/crates/criterion-0.3.5.crate) = 1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10
+SIZE (rust/crates/criterion-0.3.5.crate) = 110662
+SHA256 (rust/crates/criterion-plot-0.4.4.crate) = d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57
+SIZE (rust/crates/criterion-plot-0.4.4.crate) = 22546
+SHA256 (rust/crates/crossbeam-channel-0.5.4.crate) = 5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53
+SIZE (rust/crates/crossbeam-channel-0.5.4.crate) = 88237
+SHA256 (rust/crates/crossbeam-deque-0.8.1.crate) = 6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e
+SIZE (rust/crates/crossbeam-deque-0.8.1.crate) = 20852
+SHA256 (rust/crates/crossbeam-epoch-0.9.8.crate) = 1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c
+SIZE (rust/crates/crossbeam-epoch-0.9.8.crate) = 46012
+SHA256 (rust/crates/crossbeam-utils-0.8.8.crate) = 0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38
+SIZE (rust/crates/crossbeam-utils-0.8.8.crate) = 39681
+SHA256 (rust/crates/crypto-mac-0.8.0.crate) = b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab
+SIZE (rust/crates/crypto-mac-0.8.0.crate) = 9115
+SHA256 (rust/crates/crypto-mac-0.11.1.crate) = b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714
+SIZE (rust/crates/crypto-mac-0.11.1.crate) = 9551
+SHA256 (rust/crates/csv-1.1.6.crate) = 22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1
+SIZE (rust/crates/csv-1.1.6.crate) = 886999
+SHA256 (rust/crates/csv-core-0.1.10.crate) = 2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90
+SIZE (rust/crates/csv-core-0.1.10.crate) = 25668
+SHA256 (rust/crates/ctr-0.8.0.crate) = 049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea
+SIZE (rust/crates/ctr-0.8.0.crate) = 17740
+SHA256 (rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (rust/crates/displaydoc-0.2.3.crate) = 3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886
+SIZE (rust/crates/displaydoc-0.2.3.crate) = 17060
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/fastrand-1.7.0.crate) = c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf
+SIZE (rust/crates/fastrand-1.7.0.crate) = 11265
+SHA256 (rust/crates/fixedbitset-0.4.1.crate) = 279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e
+SIZE (rust/crates/fixedbitset-0.4.1.crate) = 15551
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/futures-core-0.3.21.crate) = 0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3
+SIZE (rust/crates/futures-core-0.3.21.crate) = 14601
+SHA256 (rust/crates/futures-macro-0.3.21.crate) = 33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512
+SIZE (rust/crates/futures-macro-0.3.21.crate) = 11250
+SHA256 (rust/crates/futures-task-0.3.21.crate) = 57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a
+SIZE (rust/crates/futures-task-0.3.21.crate) = 11815
+SHA256 (rust/crates/futures-util-0.3.21.crate) = d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a
+SIZE (rust/crates/futures-util-0.3.21.crate) = 153768
+SHA256 (rust/crates/generic-array-0.14.5.crate) = fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803
+SIZE (rust/crates/generic-array-0.14.5.crate) = 28915
+SHA256 (rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce
+SIZE (rust/crates/getrandom-0.1.16.crate) = 25077
+SHA256 (rust/crates/getrandom-0.2.5.crate) = d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77
+SIZE (rust/crates/getrandom-0.2.5.crate) = 27719
+SHA256 (rust/crates/ghash-0.4.4.crate) = 1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99
+SIZE (rust/crates/ghash-0.4.4.crate) = 9005
+SHA256 (rust/crates/gimli-0.26.1.crate) = 78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4
+SIZE (rust/crates/gimli-0.26.1.crate) = 716168
+SHA256 (rust/crates/half-1.8.2.crate) = eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7
+SIZE (rust/crates/half-1.8.2.crate) = 41874
+SHA256 (rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e
+SIZE (rust/crates/hashbrown-0.11.2.crate) = 85713
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (rust/crates/hkdf-0.11.0.crate) = 01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b
+SIZE (rust/crates/hkdf-0.11.0.crate) = 171707
+SHA256 (rust/crates/hmac-0.11.0.crate) = 2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b
+SIZE (rust/crates/hmac-0.11.0.crate) = 11385
+SHA256 (rust/crates/indexmap-1.8.0.crate) = 282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223
+SIZE (rust/crates/indexmap-1.8.0.crate) = 52583
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/itertools-0.10.3.crate) = a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3
+SIZE (rust/crates/itertools-0.10.3.crate) = 118661
+SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
+SIZE (rust/crates/itoa-0.4.8.crate) = 11926
+SHA256 (rust/crates/itoa-1.0.1.crate) = 1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35
+SIZE (rust/crates/itoa-1.0.1.crate) = 11059
+SHA256 (rust/crates/jni-0.19.0.crate) = c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec
+SIZE (rust/crates/jni-0.19.0.crate) = 65890
+SHA256 (rust/crates/jni-sys-0.3.0.crate) = 8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130
+SIZE (rust/crates/jni-sys-0.3.0.crate) = 10232
+SHA256 (rust/crates/js-sys-0.3.56.crate) = a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04
+SIZE (rust/crates/js-sys-0.3.56.crate) = 70520
+SHA256 (rust/crates/keccak-0.1.0.crate) = 67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7
+SIZE (rust/crates/keccak-0.1.0.crate) = 5849
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.121.crate) = efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f
+SIZE (rust/crates/libc-0.2.121.crate) = 574702
+SHA256 (rust/crates/libloading-0.6.7.crate) = 351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883
+SIZE (rust/crates/libloading-0.6.7.crate) = 25037
+SHA256 (rust/crates/libm-0.2.2.crate) = 33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db
+SIZE (rust/crates/libm-0.2.2.crate) = 113226
+SHA256 (rust/crates/linkme-0.2.10.crate) = edd4ad156b9934dc21cad96fd17278a7cb6f30a5657a9d976cd7b71d6d49c02c
+SIZE (rust/crates/linkme-0.2.10.crate) = 12525
+SHA256 (rust/crates/linkme-impl-0.2.10.crate) = 73fd9dc7072de7168cbdaba9125e8f742cd3a965aa12bde994b4611a174488d8
+SIZE (rust/crates/linkme-impl-0.2.10.crate) = 6202
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/log-panics-2.0.0.crate) = ae0136257df209261daa18d6c16394757c63e032e27aafd8b07788b051082bef
+SIZE (rust/crates/log-panics-2.0.0.crate) = 6781
+SHA256 (rust/crates/memchr-2.4.1.crate) = 308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a
+SIZE (rust/crates/memchr-2.4.1.crate) = 64977
+SHA256 (rust/crates/memoffset-0.6.5.crate) = 5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce
+SIZE (rust/crates/memoffset-0.6.5.crate) = 7686
+SHA256 (rust/crates/miniz_oxide-0.4.4.crate) = a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b
+SIZE (rust/crates/miniz_oxide-0.4.4.crate) = 49938
+SHA256 (rust/crates/multimap-0.8.3.crate) = e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a
+SIZE (rust/crates/multimap-0.8.3.crate) = 13518
+SHA256 (rust/crates/neon-0.10.0.crate) = 544694d02bbff81f78dba5ef7d29341cc6d256edcae4fbb2d684491d5755c748
+SIZE (rust/crates/neon-0.10.0.crate) = 269317
+SHA256 (rust/crates/neon-build-0.10.0.crate) = cd4ec682b1a7837c84d9866c342ac6ffe2ce9712e844e4015f31d01bdeb73608
+SIZE (rust/crates/neon-build-0.10.0.crate) = 7844
+SHA256 (rust/crates/neon-macros-0.10.0.crate) = 040746ef4e65edca7cd35597ad0ff7d8ad3b3f6018316d31a30b4afc23b0e548
+SIZE (rust/crates/neon-macros-0.10.0.crate) = 6834
+SHA256 (rust/crates/neon-runtime-0.10.0.crate) = 5c4b1a7f8f569b4e43feff04931924cebe40a630fa258d2a28147525d247defe
+SIZE (rust/crates/neon-runtime-0.10.0.crate) = 27672
+SHA256 (rust/crates/num-bigint-0.4.3.crate) = f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f
+SIZE (rust/crates/num-bigint-0.4.3.crate) = 97799
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-iter-0.1.42.crate) = b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59
+SIZE (rust/crates/num-iter-0.1.42.crate) = 10450
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/num_cpus-1.13.1.crate) = 19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1
+SIZE (rust/crates/num_cpus-1.13.1.crate) = 14752
+SHA256 (rust/crates/num_enum-0.5.7.crate) = cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9
+SIZE (rust/crates/num_enum-0.5.7.crate) = 15199
+SHA256 (rust/crates/num_enum_derive-0.5.7.crate) = 3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce
+SIZE (rust/crates/num_enum_derive-0.5.7.crate) = 12225
+SHA256 (rust/crates/object-0.27.1.crate) = 67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9
+SIZE (rust/crates/object-0.27.1.crate) = 228030
+SHA256 (rust/crates/oid-0.2.1.crate) = 9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2
+SIZE (rust/crates/oid-0.2.1.crate) = 12533
+SHA256 (rust/crates/once_cell-1.10.0.crate) = 87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9
+SIZE (rust/crates/once_cell-1.10.0.crate) = 30414
+SHA256 (rust/crates/oorandom-11.1.3.crate) = 0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575
+SIZE (rust/crates/oorandom-11.1.3.crate) = 10068
+SHA256 (rust/crates/opaque-debug-0.3.0.crate) = 624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5
+SIZE (rust/crates/opaque-debug-0.3.0.crate) = 5767
+SHA256 (rust/crates/openssl-0.10.38.crate) = 0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95
+SIZE (rust/crates/openssl-0.10.38.crate) = 207436
+SHA256 (rust/crates/openssl-sys-0.9.72.crate) = 7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb
+SIZE (rust/crates/openssl-sys-0.9.72.crate) = 56510
+SHA256 (rust/crates/paste-1.0.6.crate) = 0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5
+SIZE (rust/crates/paste-1.0.6.crate) = 17808
+SHA256 (rust/crates/pem-0.8.3.crate) = fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb
+SIZE (rust/crates/pem-0.8.3.crate) = 9395
+SHA256 (rust/crates/pest-2.1.3.crate) = 10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53
+SIZE (rust/crates/pest-2.1.3.crate) = 77986
+SHA256 (rust/crates/petgraph-0.6.0.crate) = 4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f
+SIZE (rust/crates/petgraph-0.6.0.crate) = 182063
+SHA256 (rust/crates/picky-6.3.0.crate) = fd6b25b296bb2a45678748f61c51f5a548ea56b25b0ad4966183709b386eaecf
+SIZE (rust/crates/picky-6.3.0.crate) = 68293
+SHA256 (rust/crates/picky-asn1-0.3.3.crate) = 889bbb26c80acf919e89980dfc8e04eb19df272d8a9893ec9b748d3a1675abde
+SIZE (rust/crates/picky-asn1-0.3.3.crate) = 13584
+SHA256 (rust/crates/picky-asn1-der-0.2.5.crate) = acbbd5390ab967396cc7473e6e0848684aec7166e657c6088604e07b54a73dbe
+SIZE (rust/crates/picky-asn1-der-0.2.5.crate) = 14606
+SHA256 (rust/crates/picky-asn1-x509-0.6.1.crate) = f3033675030de806aba1d5470949701b7c9f1dbf77e3bb17bd12e5f945e560ba
+SIZE (rust/crates/picky-asn1-x509-0.6.1.crate) = 46922
+SHA256 (rust/crates/pin-project-lite-0.2.8.crate) = e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c
+SIZE (rust/crates/pin-project-lite-0.2.8.crate) = 27847
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pkg-config-0.3.24.crate) = 58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe
+SIZE (rust/crates/pkg-config-0.3.24.crate) = 16489
+SHA256 (rust/crates/plotters-0.3.1.crate) = 32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a
+SIZE (rust/crates/plotters-0.3.1.crate) = 8595577
+SHA256 (rust/crates/plotters-backend-0.3.2.crate) = d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c
+SIZE (rust/crates/plotters-backend-0.3.2.crate) = 13524
+SHA256 (rust/crates/plotters-svg-0.3.1.crate) = 521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9
+SIZE (rust/crates/plotters-svg-0.3.1.crate) = 7596
+SHA256 (rust/crates/poly1305-0.7.2.crate) = 048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede
+SIZE (rust/crates/poly1305-0.7.2.crate) = 31868
+SHA256 (rust/crates/polyval-0.5.3.crate) = 8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1
+SIZE (rust/crates/polyval-0.5.3.crate) = 17368
+SHA256 (rust/crates/ppv-lite86-0.2.16.crate) = eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872
+SIZE (rust/crates/ppv-lite86-0.2.16.crate) = 22245
+SHA256 (rust/crates/proc-macro-crate-1.1.3.crate) = e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a
+SIZE (rust/crates/proc-macro-crate-1.1.3.crate) = 8758
+SHA256 (rust/crates/proc-macro2-1.0.29.crate) = b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d
+SIZE (rust/crates/proc-macro2-1.0.29.crate) = 38772
+SHA256 (rust/crates/prost-0.9.0.crate) = 444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001
+SIZE (rust/crates/prost-0.9.0.crate) = 25584
+SHA256 (rust/crates/prost-build-0.9.0.crate) = 62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5
+SIZE (rust/crates/prost-build-0.9.0.crate) = 9947797
+SHA256 (rust/crates/prost-derive-0.9.0.crate) = f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe
+SIZE (rust/crates/prost-derive-0.9.0.crate) = 15266
+SHA256 (rust/crates/prost-types-0.9.0.crate) = 534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a
+SIZE (rust/crates/prost-types-0.9.0.crate) = 27403
+SHA256 (rust/crates/quote-1.0.10.crate) = 38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05
+SIZE (rust/crates/quote-1.0.10.crate) = 29960
+SHA256 (rust/crates/rand-0.7.3.crate) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
+SIZE (rust/crates/rand-0.7.3.crate) = 112246
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.2.2.crate) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
+SIZE (rust/crates/rand_chacha-0.2.2.crate) = 13267
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.5.1.crate) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
+SIZE (rust/crates/rand_core-0.5.1.crate) = 21116
+SHA256 (rust/crates/rand_core-0.6.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/rand_hc-0.2.0.crate) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
+SIZE (rust/crates/rand_hc-0.2.0.crate) = 11670
+SHA256 (rust/crates/rayon-1.5.1.crate) = c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90
+SIZE (rust/crates/rayon-1.5.1.crate) = 160424
+SHA256 (rust/crates/rayon-core-1.9.1.crate) = d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e
+SIZE (rust/crates/rayon-core-1.9.1.crate) = 64961
+SHA256 (rust/crates/redox_syscall-0.2.11.crate) = 8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c
+SIZE (rust/crates/redox_syscall-0.2.11.crate) = 24032
+SHA256 (rust/crates/regex-1.5.5.crate) = 1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286
+SIZE (rust/crates/regex-1.5.5.crate) = 238119
+SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
+SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
+SHA256 (rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (rust/crates/remove_dir_all-0.5.3.crate) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
+SIZE (rust/crates/remove_dir_all-0.5.3.crate) = 9184
+SHA256 (rust/crates/rsa-0.4.1.crate) = 7b0aeddcca1082112a6eeb43bf25fd7820b066aaf6eaef776e19d0a1febe38fe
+SIZE (rust/crates/rsa-0.4.1.crate) = 45830
+SHA256 (rust/crates/rustc-demangle-0.1.21.crate) = 7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342
+SIZE (rust/crates/rustc-demangle-0.1.21.crate) = 27920
+SHA256 (rust/crates/rustc_version-0.3.3.crate) = f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee
+SIZE (rust/crates/rustc_version-0.3.3.crate) = 12119
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/ryu-1.0.9.crate) = 73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f
+SIZE (rust/crates/ryu-1.0.9.crate) = 48391
+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.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/semver-0.9.0.crate) = 1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403
+SIZE (rust/crates/semver-0.9.0.crate) = 17344
+SHA256 (rust/crates/semver-0.11.0.crate) = f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6
+SIZE (rust/crates/semver-0.11.0.crate) = 20826
+SHA256 (rust/crates/semver-1.0.6.crate) = a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d
+SIZE (rust/crates/semver-1.0.6.crate) = 29941
+SHA256 (rust/crates/semver-parser-0.7.0.crate) = 388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3
+SIZE (rust/crates/semver-parser-0.7.0.crate) = 10268
+SHA256 (rust/crates/semver-parser-0.10.2.crate) = 00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7
+SIZE (rust/crates/semver-parser-0.10.2.crate) = 23176
+SHA256 (rust/crates/serde-1.0.136.crate) = ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789
+SIZE (rust/crates/serde-1.0.136.crate) = 76158
+SHA256 (rust/crates/serde_bytes-0.11.5.crate) = 16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9
+SIZE (rust/crates/serde_bytes-0.11.5.crate) = 11067
+SHA256 (rust/crates/serde_cbor-0.11.2.crate) = 2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5
+SIZE (rust/crates/serde_cbor-0.11.2.crate) = 44570
+SHA256 (rust/crates/serde_derive-1.0.136.crate) = 08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9
+SIZE (rust/crates/serde_derive-1.0.136.crate) = 54776
+SHA256 (rust/crates/serde_json-1.0.79.crate) = 8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95
+SIZE (rust/crates/serde_json-1.0.79.crate) = 144451
+SHA256 (rust/crates/sha-1-0.9.8.crate) = 99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6
+SIZE (rust/crates/sha-1-0.9.8.crate) = 14029
+SHA256 (rust/crates/sha2-0.9.9.crate) = 4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800
+SIZE (rust/crates/sha2-0.9.9.crate) = 22247
+SHA256 (rust/crates/sha3-0.9.1.crate) = f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809
+SIZE (rust/crates/sha3-0.9.1.crate) = 523403
+SHA256 (rust/crates/simple_asn1-0.5.4.crate) = 8eb4ea60fb301dc81dfc113df680571045d375ab7345d171c5dc7d7e13107a80
+SIZE (rust/crates/simple_asn1-0.5.4.crate) = 15679
+SHA256 (rust/crates/slab-0.4.5.crate) = 9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5
+SIZE (rust/crates/slab-0.4.5.crate) = 15888
+SHA256 (rust/crates/smallvec-1.8.0.crate) = f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83
+SIZE (rust/crates/smallvec-1.8.0.crate) = 27992
+SHA256 (rust/crates/snow-0.8.0.crate) = 6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7
+SIZE (rust/crates/snow-0.8.0.crate) = 609966
+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/subtle-2.4.1.crate) = 6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601
+SIZE (rust/crates/subtle-2.4.1.crate) = 12630
+SHA256 (rust/crates/syn-1.0.80.crate) = d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194
+SIZE (rust/crates/syn-1.0.80.crate) = 234102
+SHA256 (rust/crates/syn-mid-0.5.3.crate) = baa8e7560a164edb1621a55d18a0c59abf49d360f47aa7b821061dd7eea7fac9
+SIZE (rust/crates/syn-mid-0.5.3.crate) = 12758
+SHA256 (rust/crates/synstructure-0.12.6.crate) = f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f
+SIZE (rust/crates/synstructure-0.12.6.crate) = 18429
+SHA256 (rust/crates/tempfile-3.3.0.crate) = 5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4
+SIZE (rust/crates/tempfile-3.3.0.crate) = 27578
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thiserror-1.0.30.crate) = 854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417
+SIZE (rust/crates/thiserror-1.0.30.crate) = 17748
+SHA256 (rust/crates/thiserror-impl-1.0.30.crate) = aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b
+SIZE (rust/crates/thiserror-impl-1.0.30.crate) = 15230
+SHA256 (rust/crates/time-0.1.43.crate) = ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438
+SIZE (rust/crates/time-0.1.43.crate) = 28653
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (rust/crates/typenum-1.15.0.crate) = dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987
+SIZE (rust/crates/typenum-1.15.0.crate) = 40741
+SHA256 (rust/crates/ucd-trie-0.1.3.crate) = 56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c
+SIZE (rust/crates/ucd-trie-0.1.3.crate) = 44615
+SHA256 (rust/crates/unicode-segmentation-1.9.0.crate) = 7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99
+SIZE (rust/crates/unicode-segmentation-1.9.0.crate) = 93241
+SHA256 (rust/crates/unicode-width-0.1.9.crate) = 3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973
+SIZE (rust/crates/unicode-width-0.1.9.crate) = 16745
+SHA256 (rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/universal-hash-0.4.1.crate) = 9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05
+SIZE (rust/crates/universal-hash-0.4.1.crate) = 8503
+SHA256 (rust/crates/unzip3-1.0.0.crate) = 99c0ec316ab08201476c032feb2f94a5c8ece5b209765c1fbc4430dd6e931ad6
+SIZE (rust/crates/unzip3-1.0.0.crate) = 1459
+SHA256 (rust/crates/uuid-0.8.2.crate) = bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7
+SIZE (rust/crates/uuid-0.8.2.crate) = 37909
+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.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
+SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
+SHA256 (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
+SIZE (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = 31521
+SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (rust/crates/wasm-bindgen-0.2.79.crate) = 25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06
+SIZE (rust/crates/wasm-bindgen-0.2.79.crate) = 164276
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.79.crate) = 8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca
+SIZE (rust/crates/wasm-bindgen-backend-0.2.79.crate) = 25776
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.79.crate) = 2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01
+SIZE (rust/crates/wasm-bindgen-macro-0.2.79.crate) = 11806
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.79.crate) = bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.79.crate) = 17861
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.79.crate) = 3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2
+SIZE (rust/crates/wasm-bindgen-shared-0.2.79.crate) = 7204
+SHA256 (rust/crates/web-sys-0.3.56.crate) = c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb
+SIZE (rust/crates/web-sys-0.3.56.crate) = 666465
+SHA256 (rust/crates/which-4.2.4.crate) = 2a5a7e487e921cf220206864a94a89b6c6905bfc19f1057fa26a4cb360e5c1d2
+SIZE (rust/crates/which-4.2.4.crate) = 9259
+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/x25519-dalek-1.1.1.crate) = 5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f
+SIZE (rust/crates/x25519-dalek-1.1.1.crate) = 84499
+SHA256 (rust/crates/zeroize-1.3.0.crate) = 4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd
+SIZE (rust/crates/zeroize-1.3.0.crate) = 15913
+SHA256 (rust/crates/zeroize_derive-1.3.2.crate) = 3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17
+SIZE (rust/crates/zeroize_derive-1.3.2.crate) = 10299
+SHA256 (dignifiedquire-num-bigint-56576b592fea6341b7e1711a1629e4cc1bfc419c_GH0.tar.gz) = 25d549854243616957a95e016bcc6b0326384315f048c5dd4ced2ca39a39600e
+SIZE (dignifiedquire-num-bigint-56576b592fea6341b7e1711a1629e4cc1bfc419c_GH0.tar.gz) = 131335
+SHA256 (signalapp-curve25519-dalek-b3329ed05ce7ffae5b7c18b9b6e1fd3588eaf468_GH0.tar.gz) = 9fc304f167c7bfdacab11459b816d346a138acc82bb2a0587adf717445dc29fd
+SIZE (signalapp-curve25519-dalek-b3329ed05ce7ffae5b7c18b9b6e1fd3588eaf468_GH0.tar.gz) = 517635
+SHA256 (signalapp-libsignal-v0.16.0_GH0.tar.gz) = 98cff75cec917960cd51fe38dcd2d003cc260257949c69d6e614dee584b53a7e
+SIZE (signalapp-libsignal-v0.16.0_GH0.tar.gz) = 566453
diff --git a/net-im/libsignal-node/files/patch-node_binding.gyp b/net-im/libsignal-node/files/patch-node_binding.gyp
new file mode 100644
index 000000000000..91d53cc550e5
--- /dev/null
+++ b/net-im/libsignal-node/files/patch-node_binding.gyp
@@ -0,0 +1,10 @@
+--- node/binding.gyp.orig	2022-02-25 14:33:26 UTC
++++ node/binding.gyp
+@@ -6,6 +6,7 @@
+ {
+     'conditions': [
+         ['OS=="mac"', {'variables': {'NODE_OS_NAME': 'darwin', 'CARGO_TARGET_SUFFIX': 'apple-darwin'}},
++         'OS=="freebsd"', {'variables': {'NODE_OS_NAME': 'freebsd', 'CARGO_TARGET_SUFFIX': 'unknown-freebsd'}},
+          'OS=="win"', {'variables': {'NODE_OS_NAME': 'win32', 'CARGO_TARGET_SUFFIX': 'pc-windows-msvc'}},
+          'OS=="linux"', {'variables': {'NODE_OS_NAME': 'linux', 'CARGO_TARGET_SUFFIX': 'unknown-linux-gnu'}},
+          {'variables': {'NODE_OS_NAME': '<(OS)'}}],
diff --git a/net-im/libsignal-node/pkg-descr b/net-im/libsignal-node/pkg-descr
new file mode 100644
index 000000000000..120b5a64a2e2
--- /dev/null
+++ b/net-im/libsignal-node/pkg-descr
@@ -0,0 +1,19 @@
+libsignal contains platform-agnostic APIs used by the official Signal clients
+and servers, exposed as a Java, Swift, or TypeScript library.
+The underlying implementations are written in Rust:
+
+ - libsignal-protocol: Implements the Signal protocol, including the
+   Double Ratchet algorithm. A replacement for libsignal-protocol-java and
+   libsignal-metadata-java.
+ - signal-crypto: Cryptographic primitives such as AES-GCM. We use RustCrypto's
+   where we can but sometimes have differing needs.
+ - device-transfer: Support logic for Signal's device-to-device transfer
+   feature.
+ - attest: Functionality for remote attestation of SGX enclaves and
+   server-side HSMs.
+ - zkgroup: Functionality for zero-knowledge groups and related features
+   available in Signal.
+ - poksho: Utilities for implementing zero-knowledge proofs (such as those used
+   by zkgroup); stands for "proof-of-knowledge, stateful-hash-object".
+
+WWW: https://github.com/signalapp/libsignal