{-# LANGUAGE RecordWildCards, MultiWayIf, NamedFieldPuns #-}
module Bulletproofs.RangeProof.Verifier (
verifyProof,
verifyTPoly,
verifyLRCommitment,
) where
import Protolude
import qualified Crypto.PubKey.ECC.Types as Crypto
import Bulletproofs.RangeProof.Internal
import Bulletproofs.Curve
import Bulletproofs.Utils
import qualified Bulletproofs.MultiRangeProof.Verifier as MRP
verifyProof
:: (AsInteger f, Eq f, Field f, Show f)
=> Integer
-> Crypto.Point
-> RangeProof f
-> Bool
verifyProof upperBound vCommit proof@RangeProof{..}
= MRP.verifyProof upperBound [vCommit] proof
verifyTPoly
:: (AsInteger f, Eq f, Field f, Show f)
=> Integer
-> Crypto.Point
-> RangeProof f
-> f
-> f
-> f
-> Bool
verifyTPoly n vCommit
= MRP.verifyTPoly n [vCommit]
verifyLRCommitment
:: (AsInteger f, Eq f, Field f, Show f)
=> Integer
-> RangeProof f
-> f
-> f
-> f
-> Bool
verifyLRCommitment n
= MRP.verifyLRCommitment n 1