
Implementação da biblioteca Zero-Knowledge do Google para Protocolos de Identidade.
A biblioteca Longfellow permite a construção de protocolos de conhecimento zero relacionados a padrões legados de verificação de identidade, como o padrão ISO MDOC, o padrão JWT e as W3 Verifiable Credentials. Esta implementação é descrita em:
Seu nome é uma homenagem à ponte próxima ao escritório do Google em Cambridge.
Este projeto passou por várias revisões de segurança independentes realizadas por painéis de especialistas acadêmicos e da indústria na área. Seus relatórios estão disponíveis na página Documentação do projeto/Revisões.
Este repositório contém os arquivos de trabalho para uma especificação do Longfellow e de seus componentes. Se você estiver interessado em contribuir, crie uma Issue ou um Pull Request. Nossas discussões ocorrem nas Issues.
Você pode testar nossa biblioteca usando o devcontainer associado para criar seu ambiente. Selecione Code → Codespaces → Create codespace on main para começar. Isso cria um container no GitHub que inclui as dependências e fornece uma interface do VS Code baseada em navegador. Você pode compilar e executar nossos benchmarks ali, embora a VM possa ser mais lenta do que as medições relatadas.
Este pacote depende de cmake, openssl, zstd, clang, googletest e 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
Versões mais recentes do fedora parecem exigir libpfm-devel:
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel libpfm-devel
Certifique-se de que as ferramentas de linha de comando do Xcode, como clang e cmake, estejam instaladas.
$ brew install googletest google-benchmark zstd
Primeiro execute a etapa de inicialização do cmake
$ CXX=clang++ cmake -D CMAKE_BUILD_TYPE=Release -S lib -B clang-build-release --install-prefix ${PWD}/install
Em seguida:
$ cd clang-build-release && make -j 16 && ctest -j 16
Definimos vários benchmarks de unidade, sumcheck e zk. Aqui estão alguns deles:
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128