
Implementazione della libreria Zero-Knowledge di Google per i protocolli Identity.
La libreria Longfellow consente la costruzione di protocolli a conoscenza zero relativi a standard legacy di verifica dell'identità come lo standard ISO MDOC, lo standard JWT e le W3 Verifiable Credentials. Questa implementazione è descritta in:
Prende il nome dal ponte situato fuori dall'ufficio Google di Cambridge.
Questo progetto ha completato diverse revisioni di sicurezza indipendenti da parte di panel di esperti accademici e del settore. I loro report sono disponibili nella pagina Documentazione del progetto/Revisioni.
Questo repository contiene i file di lavoro per una specifica di Longfellow e dei suoi componenti. Se sei interessato a contribuire, crea una Issue o una Pull Request. Le nostre discussioni avvengono sotto le Issues.
Puoi testare la nostra libreria utilizzando il devcontainer associato per creare il suo ambiente. Seleziona Code → Codespaces → Create codespace on main per iniziare. Questo crea un container su GitHub che include le dipendenze e fornisce un'interfaccia VS Code basata su browser. Puoi compilare ed eseguire i nostri benchmark lì, anche se la VM potrebbe essere più lenta rispetto alle misurazioni riportate.
Questo pacchetto dipende da 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
Le versioni più recenti di fedora sembrano richiedere libpfm-devel:
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel libpfm-devel
Assicurati che siano installati gli strumenti da riga di comando di Xcode come clang e cmake.
$ brew install googletest google-benchmark zstd
Esegui prima il passo di inizializzazione di cmake
$ CXX=clang++ cmake -D CMAKE_BUILD_TYPE=Release -S lib -B clang-build-release --install-prefix ${PWD}/install
Poi:
$ cd clang-build-release && make -j 16 && ctest -j 16
Abbiamo definito diversi benchmark unit, sumcheck e zk. Eccone alcuni:
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128