diff --git a/sxt/cbindings/backend/BUILD b/sxt/cbindings/backend/BUILD index a4a2e1b4..68e7860d 100644 --- a/sxt/cbindings/backend/BUILD +++ b/sxt/cbindings/backend/BUILD @@ -10,6 +10,7 @@ sxt_cc_component( with_test = False, deps = [ "//sxt/proof/sumcheck:sumcheck_transcript", + "//sxt/proof/sumcheck2:sumcheck_transcript", ], ) diff --git a/sxt/cbindings/backend/callback_sumcheck_transcript.h b/sxt/cbindings/backend/callback_sumcheck_transcript.h index 8f4c9c90..ba72f7bd 100644 --- a/sxt/cbindings/backend/callback_sumcheck_transcript.h +++ b/sxt/cbindings/backend/callback_sumcheck_transcript.h @@ -17,6 +17,7 @@ #pragma once #include "sxt/proof/sumcheck/sumcheck_transcript.h" +#include "sxt/proof/sumcheck2/sumcheck_transcript.h" namespace sxt::cbnbck { //-------------------------------------------------------------------------------------------------- @@ -35,6 +36,24 @@ class callback_sumcheck_transcript final : public prfsk::sumcheck_transcript { f_(&r, context_, polynomial.data(), static_cast(polynomial.size())); } +private: + callback_t f_; + void* context_; +}; + +template +class callback_sumcheck_transcript2 final : public prfsk2::sumcheck_transcript { +public: + using callback_t = void (*)(T* r, void* context, T* polynomial, unsigned polynomial_len); + + callback_sumcheck_transcript2(callback_t f, void* context) noexcept : f_{f}, context_{context} {} + + void init(size_t /*num_variables*/, size_t /*round_degree*/) noexcept override {} + + void round_challenge(T& r, basct::cspan polynomial) noexcept override { + f_(&r, context_, polynomial.data(), static_cast(polynomial.size())); + } + private: callback_t f_; void* context_;