
Implementazione della libreria Zero-Knowledge di Google per i protocolli Identity.
La libreria Longfellow consente la costruzione di protocolli a conoscenza zero riguardanti standard legacy di verifica dell'identità come lo standard ISO MDOC, lo standard JWT e le credenziali verificabili W3. Questa implementazione è descritta in:
Prende il nome dal ponte fuori dall'ufficio di Google a Cambridge.
Questo progetto è attualmente sottoposto a due revisioni di sicurezza indipendenti da parte di gruppi di esperti accademici e industriali del settore. I loro rapporti 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 un Issue o una Pull Request. Le nostre discussioni avvengono nella sezione Issues.
Puoi testare rapidamente la nostra libreria utilizzando il devcontainer associato per creare il suo ambiente. Basta cliccare su Codice-->Codespaces-->Crea codespace su master qui sopra per iniziare. Questo crea un container Docker su un server Github che include tutte le dipendenze e fornisce un'interfaccia VScode basata sul web per il nostro attuale codebase. Puoi compilare ed eseguire i nostri benchmark in questo ambiente, ma alcuni potrebbero essere più lenti rispetto ai nostri valori riportati a causa della VM.
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 gli strumenti da riga di comando di Xcode come clang e cmake siano installati.
$ brew install googletest google-benchmark zstd
Prima esegui 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 di unità, sumcheck e zk. Ecco alcuni di essi:
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128