MCPcopy Index your code
hub / github.com/facebook/akd

github.com/facebook/akd @v0.12.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.12.0 ↗ · + Follow
685 symbols 1,990 edges 80 files 187 documented · 27%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

akd Build Status

An implementation of an auditable key directory (also known as a verifiable registry or authenticated dictionary).

Auditable key directories can be used to help provide key transparency for end-to-end encrypted messaging.

This implementation is based off of the protocols described in SEEMless, with ideas incorporated from Parakeet.

This library provides a stateless API for an auditable key directory, meaning that a consumer of this library must provide their own solution for the storage of the entries of the directory.

Documentation

The API can be found here along with an example for usage. To learn more about the technical details behind how the directory is constructed, see here.

Installation

Add the following line to the dependencies of your Cargo.toml:

akd = "0.12.0"

Minimum Supported Rust Version

Rust 1.51 or higher.

Top-Level Directory Organization

Subfolder On crates.io? Description
akd Main implementation of AKD which a service provider that manages the underlying directory would need to run. A good starting point for diving into this implementation.
akd_core Minimal library consisting of core operations in AKD.
examples Contains various examples for using AKD, along with utilities such as locally verifying audit proofs that are produced by WhatsApp's key transparency deployment. More details are contained here.
xtask Used for running the code coverage pipeline.

Audit

This library was audited by NCC Group in August of 2023. The audit was sponsored by Meta for its use in WhatsApp's key transparency deployment.

The audit found issues in release v0.9.0, and the fixes were subsequently incorporated into release v0.11.0. See the full audit report here.

Contributors

The original authors of this code are Evan Au (@afterdusk), Alex Chernyak (@alexme22), Dillon George (@dillonrg), Sean Lawlor (@slawlor), Kevin Lewi (@kevinlewi), Jasleen Malvai (@jasleen1), and Ercan Ozturk (@eozturk1). To learn more about contributing to this project, see this document.

License

This project is dual-licensed under either the MIT license or the Apache License, Version 2.0. You may select, at your option, one of the above-listed licenses.

Extension points exported contracts — how you extend this code

SizeOf (Interface)
Retrieve the in-memory size of a structure [13 implementers]
akd_core/src/types/mod.rs
Reader (Interface)
Interface for reading output generated by the tool. [1 implementers]
examples/src/fixture_generator/reader/mod.rs
Storable (Interface)
(no doc) [3 implementers]
akd/src/storage/mod.rs
Configuration (Interface)
Trait for customizing the directory's cryptographic operations [2 implementers]
akd_core/src/configuration/traits.rs
Writer (Interface)
Interface for writing output generated by the tool. [1 implementers]
examples/src/fixture_generator/writer/mod.rs
Database (Interface)
(no doc) [2 implementers]
akd/src/storage/mod.rs
Uniform (Interface)
A type family for schemes which know how to generate key material from a cryptographically-secure [`CryptoRng`][::rand:: [2 …
akd_core/src/ecvrf/tests.rs
MySqlStorable (Interface)
(no doc) [1 implementers]
examples/src/mysql_demo/mysql_storables.rs

Core symbols most depended-on inside this repo

clone
called by 89
akd/src/storage/types.rs
clone
called by 72
akd/src/directory.rs
clone
called by 52
examples/src/mysql_demo/mysql.rs
byte_arr_from_u64
called by 46
akd/src/utils.rs
publish
called by 44
akd/src/directory.rs
write_to_storage
called by 41
akd/src/tree_node.rs
hash
called by 27
akd/src/helper_structs.rs
set_child
called by 26
akd/src/tree_node.rs

Shape

Method 331
Function 233
Class 71
Enum 38
Interface 12

Languages

Rust100%

Modules by API surface

akd/src/append_only_zks.rs61 symbols
akd/src/tree_node.rs34 symbols
akd_core/src/types/node_label/tests.rs30 symbols
examples/src/mysql_demo/mysql.rs27 symbols
akd_core/src/types/mod.rs27 symbols
akd/src/storage/manager/mod.rs27 symbols
akd/src/directory.rs22 symbols
akd_core/src/ecvrf/tests.rs20 symbols
akd_core/src/ecvrf/ecvrf_impl.rs20 symbols
akd_core/src/types/node_label/mod.rs18 symbols
akd_core/src/proto/tests.rs18 symbols
akd/src/storage/types.rs18 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add akd \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact