
Implementação da biblioteca Zero-Knowledge do Google para Protocolos de Identidade.
A biblioteca Longfellow permite a construção de protocolos de conhecimento zero relativos a padrões legados de verificação de identidade, como o padrão ISO MDOC, o padrão JWT e as Credenciais Verificáveis do W3. Esta implementação é descrita em:
Recebeu o nome da ponte em frente ao escritório do Google em Cambridge.
Este projeto está atualmente passando por duas revisões de segurança independentes 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 seus componentes. Se você estiver interessado em contribuir, crie uma Issue ou um Pull Request. Nossas discussões ocorrem em Issues.
Você pode testar rapidamente nossa biblioteca usando o devcontainer associado para criar seu ambiente. Basta clicar em Code-->Codespaces-->Create codespace on master acima para começar. Isso cria um contêiner docker em um servidor Github que inclui todas as dependências e fornece uma interface web VScode para nossa base de código atual. Você pode compilar e executar nossos benchmarks neste ambiente, mas alguns deles podem ser mais lentos do que nossos valores relatados devido à máquina virtual.
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