How To Call It
Crypto is a global table: call its functions with a dot (Crypto.<method>(...)), not a colon.
Compares two strings in constant time, avoiding timing leaks when checking signatures.
Documented for app version 1.0.51Updated:
Crypto is a global table: call its functions with a dot (Crypto.<method>(...)), not a colon.
In security and licensing flow, re-check the result at critical checkpoints instead of trusting a single early validation.
Required: a, b. Returns a boolean (true or false).
When paired with License and Runtime/System checks, it gives you stronger premium, trial, and security decisions.
The snippet below is a starter pattern that can be applied directly in runtime flow.
local ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))From foundation to combined usage, each level is provided as a separate code block so you can copy the level you need and adapt it directly.
local ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))local stepOk = true
local ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))
if stepOk then
wait(200)
endlocal ok, err = pcall(function()
local ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))
end)
if not ok then
print("API step failed: Crypto.constantTimeEquals: " .. tostring(err))
requestStop()
end-- In security and licensing flow, re-check the result at critical checkpoints instead of trusting a single early validation.
local function run_constanttimeequals_step()
local ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))
end
local ok, err = pcall(run_constanttimeequals_step)
if not ok then
toast("Step failed")
print(err)
endlocal ok = Crypto.constantTimeEquals(Crypto.sha256("payload"), Crypto.sha256("payload"))
wait(200)
print("Combined with logging and flow control")