libdpf/doc/pages/which_dpf.md
2026-09-26 23:51:06 -06:00

1.6 KiB

Which DPF?

Click a card. The next question appears under it, and the last card is a complete program. Each program is also a file under examples/mwe/ and compiles from the repository root:

c++ -std=c++17 -march=native -I include -I thirdparty examples/mwe/point.cpp

The same choices are listed as links under the cards. Types in full are on [Input types](@ref input_types) and [Output types](@ref output_types).

\htmlinclude mwe/chooser.html

  • A dealer knows alpha and beta. Two parties each get a key: [dpf::make_dpf](@ref dpf/incremental.hpp).
  • The parties already share alpha and want a reusable key: [dpf::make_dpf_doerner_shelat](@ref dpf/doerner_shelat.hpp).
  • The parties want the answer and no key: [dpf::geneval_point](@ref dpf/geneval.hpp), [dpf::geneval_interval](@ref dpf/geneval.hpp), [dpf::geneval_cmp](@ref dpf/geneval.hpp).
  • Three evaluators: [dpf::make_dpf3](@ref dpf/dpf3.hpp) and [dpf::make_dpf3_doerner_shelat](@ref dpf/dpf3_ds.hpp).
  • One point, a comparison, or a public interval: [dpf::gt](@ref dpf/dcf.hpp) and the other predicates, and [dpf::ic](@ref dpf/interval.hpp).
  • Many secret points: [dpf::make_multipoint](@ref dpf/multipoint.hpp).
  • A vector whose hidden coordinate is chosen after the commitment: [point-programmable vector commitments](@ref ppvc_manual).
  • Several lanes at one leaf: [dpf::vec](@ref dpf/vec.hpp).
  • A payload filled in later: [dpf::wildcard_value](@ref dpf/wildcard.hpp).
  • A proof the key is well formed: [dpf::verifiable](@ref dpf/verifiable.hpp).

The call index, with one line each, is the [API reference](@ref api_reference).