
Implementación de la biblioteca Zero-Knowledge de Google para Protocolos de Identidad.
La biblioteca Longfellow permite la construcción de protocolos de conocimiento cero relacionados con estándares heredados de verificación de identidad, como el estándar ISO MDOC, el estándar JWT y las Credenciales Verificables del W3. Esta implementación está descrita en:
Debe su nombre al puente situado frente a la oficina de Google en Cambridge.
Este proyecto está siendo sometido actualmente a dos revisiones de seguridad independientes por parte de paneles de expertos académicos y de la industria en el campo. Sus informes están disponibles en la página Documentación del proyecto/Revisiones.
Este repositorio contiene los archivos de trabajo para una especificación de Longfellow y sus componentes. Si está interesado en contribuir, cree un Issue o una Pull Request. Nuestras discusiones tienen lugar en los Issues.
Puede probar rápidamente nuestra biblioteca usando el devcontainer asociado para crear su entorno. Simplemente haga clic en Code-->Codespaces-->Create codespace on master arriba para comenzar. Esto crea un contenedor Docker en un servidor de Github que incluye todas las dependencias y proporciona una interfaz VScode basada en web a nuestro código base actual. Puede compilar y ejecutar nuestros benchmarks en este entorno, pero algunos pueden ser más lentos que nuestros valores reportados debido a la VM.
Este paquete depende de cmake, openssl, zstd, clang, googletest y googlebenchmark.
$ sudo apt install -y build-essential clang cmake libssl-dev libzstd-dev libgtest-dev libbenchmark-dev zlib1g-dev
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel
Las versiones más recientes de Fedora parecen requerir libpfm-devel:
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel libpfm-devel
Asegúrese de que las herramientas de línea de comandos de Xcode, como clang y cmake, estén instaladas.
$ brew install googletest google-benchmark zstd
Primero ejecute el paso de inicialización de cmake:
$ CXX=clang++ cmake -D CMAKE_BUILD_TYPE=Release -S lib -B clang-build-release --install-prefix ${PWD}/install
A continuación:
$ cd clang-build-release && make -j 16 && ctest -j 16
Hemos definido varios benchmarks de unitarias, sumcheck y zk. Aquí algunos de ellos:
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128