val ffdhe_compute_exp (a: S.ffdhe_alg) : DH.ffdhe_compute_exp_st t_limbs a (DH.ffdhe_len a) (ke a)
let ffdhe_compute_exp (a:S.ffdhe_alg) : DH.ffdhe_compute_exp_st t_limbs a (DH.ffdhe_len a) (ke a) =
  DH.ffdhe_compute_exp a (DH.ffdhe_len a) (ke a)
val ffdhe_compute_exp (a: S.ffdhe_alg) : DH.ffdhe_compute_exp_st t_limbs a (DH.ffdhe_len a) (ke a)
let ffdhe_compute_exp (a: S.ffdhe_alg) : DH.ffdhe_compute_exp_st t_limbs a (DH.ffdhe_len a) (ke a) =
DH.ffdhe_compute_exp a (DH.ffdhe_len a) (ke a)
Hacl.FFDHE.fst.checked
Spec.FFDHE.fst.checked prims.fst.checked Lib.IntTypes.fsti.checked Hacl.Impl.FFDHE.fst.checked Hacl.Bignum.Exponentiation.fsti.checked Hacl.Bignum.Definitions.fst.checked FStar.Pervasives.fsti.checked
Hacl.FFDHE.fst
Spec.FFDHE.ffdhe_alg Hacl.Impl.FFDHE.ffdhe_compute_exp Hacl.FFDHE.t_limbs Hacl.Impl.FFDHE.ffdhe_len Hacl.FFDHE.ke Hacl.Impl.FFDHE.ffdhe_compute_exp_st
module Hacl.FFDHE

open Lib.IntTypes

module S = Spec.FFDHE
module DH = Hacl.Impl.FFDHE
module BD = Hacl.Bignum.Definitions
module BE = Hacl.Bignum.Exponentiation

#set-options "--z3rlimit 50 --fuel 0 --ifuel 0"

inline_for_extraction noextract
let t_limbs = U64

inline_for_extraction noextract
let ke (a:S.ffdhe_alg) =
  BE.mk_runtime_exp #t_limbs (BD.blocks (DH.ffdhe_len a) (size (numbytes t_limbs)))

private
[@CInline]
let ffdhe_precomp_p (a:S.ffdhe_alg) : DH.ffdhe_precomp_p_st t_limbs a (DH.ffdhe_len a) (ke a) =
  DH.ffdhe_precomp_p a (DH.ffdhe_len a) (ke a)

private
[@CInline]
let ffdhe_check_pk (a:S.ffdhe_alg) : DH.ffdhe_check_pk_st t_limbs a (DH.ffdhe_len a) =
  DH.ffdhe_check_pk #t_limbs a (DH.ffdhe_len a)

private
[@CInline]
val ffdhe_compute_exp (a: S.ffdhe_alg) : DH.ffdhe_compute_exp_st t_limbs a (DH.ffdhe_len a) (ke a)
a: Spec.FFDHE.ffdhe_alg
  -> Hacl.Impl.FFDHE.ffdhe_compute_exp_st Hacl.FFDHE.t_limbs
      a
      (Hacl.Impl.FFDHE.ffdhe_len a)
      (Hacl.FFDHE.ke a)