Checkpoint the party/runtime stack before share-program and malicious-mode work.

Ship the TLS mesh, composer, Beaver/Yao/leaf MPC, prep/online paths, apps, and docs so the tree is pushable before elevating share_expr, security_mode, and prep resume.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-28 05:59:19 -06:00
parent 695f8e84f7
commit 0d22946a0e
1835 changed files with 170291 additions and 2849 deletions

43
examples/mwe/shamir.cpp Normal file
View file

@ -0,0 +1,43 @@
#include <array>
#include <cstdint>
#include <iostream>
#include <tuple>
#include <type_traits>
#include "dpf.hpp"
// (K,N) Shamir. The secret is the constant term of a degree K-1 polynomial.
// Party i holds that polynomial at x = i+1. Any K shares open it. (2,3) is
// shamir_share: make_shamir_shares(secret, slope) is deal<T, 2, 3>.
// fp61 and gf2n both open. For gf2n, N must be less than 2^k.
//
// c++ -std=c++17 -march=native -I include -I thirdparty examples/mwe/shamir.cpp
int main()
{
using F = dpf::fp61;
const F secret{10};
// p(x) = 10 + 2x + 3x^2. Parties 0, 2, and 4 are enough.
const std::array<F, 2> coeff{{F{2}, F{3}}};
auto shares = dpf::make_shamir_shares<3, 5>(secret, coeff);
const F opened = dpf::shamir::reconstruct(
std::get<0>(shares), std::get<2>(shares), std::get<4>(shares));
const F slope{3};
auto [s0, s1, s2] = dpf::make_shamir_shares(secret, slope);
static_assert(std::is_same_v<decltype(s0), dpf::shamir::share<F, 0, 2, 3>>);
const F opened23 = dpf::reconstruct(s1, s2);
const bool on_line = s0.raw() == secret + slope * F{1}
&& s2.raw() == secret + slope * F{3};
using G = dpf::gf28;
auto [g0, g1, g2] = dpf::make_shamir_shares(G{0x1b}, G{0x5a});
const G gopen = dpf::reconstruct(g0, g2);
const G gopen13 = dpf::reconstruct(g1, g2);
std::cout << opened.raw() << " " << opened23.raw() << " "
<< static_cast<unsigned>(gopen.raw()) << "\n";
return (opened == secret && opened23 == secret && on_line
&& gopen == G{0x1b} && gopen13 == G{0x1b})
? 0 : 1;
}