module RSA::ACC::PoE
Non-Interactive Proof of Exponentiation
Public Instance Methods
prove(base, exp, result, modulus)
click to toggle source
Computes a proof base
^ H(exp
) was performed to derive result
. @param [Integer] base The known base. @param [Integer] exp The exponentiation. @param [Integer] result such as result = base^exp. @param [Integer] modulus modulus using computation.
# File lib/rsa/acc/poe.rb, line 19 def prove(base, exp, result, modulus) l = compute_challenge(base, exp, result) q = exp / l base.pow(q, modulus) end
verify(base, exp, result, proof, modulus)
click to toggle source
Verifies that base^exp = result using the given proof to avoid computation. @param [Integer] base The known base. @param [Integer] exp The exponentiation. @param [Integer] result such as result = base^exp. @param [Integer] proof an proof. @param [Integer] modulus modulus using computation.
# File lib/rsa/acc/poe.rb, line 31 def verify(base, exp, result, proof, modulus) l = compute_challenge(base, exp, result) r = exp % l w = (proof.pow(l, modulus) * base.pow(r, modulus)) % modulus w == result end