parametrize sectorsblock and querylen

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2021-09-27 10:37:17 +02:00 committed by Dmitriy Ryajov
parent b08901c73c
commit 0c5a581c5a
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4
2 changed files with 9 additions and 10 deletions

View File

@ -80,9 +80,7 @@ import blscurve
import blscurve/blst/blst_abi
import ../rng
const sectorsperblock = 1024.int64
const bytespersector = 31 # r is 255 bits long
const querylen = 22
type ZChar = array[bytespersector, byte]
@ -214,9 +212,8 @@ proc generateAuthenticator(i: int64, s: int64, t: TauZero, ubase: openArray[blst
# doAssert(a.blst_p1_is_equal(b).bool)
return b
proc st*(ssk: SecretKey, filename: string): (Tau, seq[blst_p1]) =
proc setup*(ssk: SecretKey, s:int64, filename: string): (Tau, seq[blst_p1]) =
let file = open(filename)
let s = sectorsperblock
let n = split(file, s)
var t = TauZero(n: n)
@ -249,7 +246,7 @@ type QElement = object
proc generateQuery*(
tau: Tau,
spk: PublicKey,
l: int = querylen # query elements
l: int # query elements
): seq[QElement] =
# verify signature on Tau
@ -261,9 +258,8 @@ proc generateQuery*(
q.V = rndScalar() #TODO: fix range
result.add(q)
proc generateProof*(q: openArray[QElement], authenticators: openArray[blst_p1], spk: PublicKey, filename: string): (seq[blst_scalar], blst_p1) =
proc generateProof*(q: openArray[QElement], authenticators: openArray[blst_p1], spk: PublicKey, s: int64, filename: string): (seq[blst_scalar], blst_p1) =
let file = open(filename)
let s = sectorsperblock
var mu: seq[blst_scalar]
for j in 0 ..< s :

View File

@ -11,20 +11,23 @@ import bls
import benchmark
import strutils
const sectorsperblock = 1024.int64
const querylen = 22
proc testbls() : bool =
benchmark "Key generation":
let (spk, ssk) = bls.keygen()
benchmark "Auth generation":
let (tau, authenticators) = bls.st(ssk, "example.txt")
let (tau, authenticators) = bls.setup(ssk, sectorsperblock, "example.txt")
#echo "Auth: ", authenticators
benchmark "Generating challenge...":
let q = bls.generateQuery(tau, spk)
let q = bls.generateQuery(tau, spk, querylen)
#echo "Generated!" #, " q:", q
benchmark "Issuing proof...":
let (mu, sigma) = bls.generateProof(q, authenticators, spk, "example.txt")
let (mu, sigma) = bls.generateProof(q, authenticators, spk, sectorsperblock, "example.txt")
#echo "Issued!" #, " mu:", mu, " sigma:", sigma
benchmark "Verifying proof...":