Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
belenios
belenios
Commits
da4a0a30
Commit
da4a0a30
authored
May 19, 2017
by
Stephane Glondu
Browse files
Add step[135]_check
parent
a8af9c7c
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/signatures.mli
View file @
da4a0a30
...
@@ -245,10 +245,13 @@ module type PEDERSEN = sig
...
@@ -245,10 +245,13 @@ module type PEDERSEN = sig
type
elt
type
elt
val
step1
:
unit
->
(
string
*
cert
)
m
val
step1
:
unit
->
(
string
*
cert
)
m
val
step1_check
:
cert
->
bool
val
step2
:
certs
->
unit
val
step2
:
certs
->
unit
val
step3
:
certs
->
string
->
int
->
polynomial
m
val
step3
:
certs
->
string
->
int
->
polynomial
m
val
step3_check
:
certs
->
int
->
polynomial
->
bool
val
step4
:
certs
->
polynomial
array
->
vinput
array
val
step4
:
certs
->
polynomial
array
->
vinput
array
val
step5
:
certs
->
string
->
vinput
->
elt
voutput
m
val
step5
:
certs
->
string
->
vinput
->
elt
voutput
m
val
step5_check
:
certs
->
int
->
polynomial
array
->
elt
voutput
->
bool
val
step6
:
certs
->
polynomial
array
->
elt
voutput
array
->
elt
threshold_parameters
val
step6
:
certs
->
polynomial
array
->
elt
voutput
array
->
elt
threshold_parameters
val
check
:
elt
threshold_parameters
->
bool
val
check
:
elt
threshold_parameters
->
bool
...
...
src/lib/trustees.ml
View file @
da4a0a30
...
@@ -283,6 +283,8 @@ module MakePedersen (G : GROUP) (M : RANDOM)
...
@@ -283,6 +283,8 @@ module MakePedersen (G : GROUP) (M : RANDOM)
P
.
make_cert
~
sk
~
dk
>>=
fun
cert
->
P
.
make_cert
~
sk
~
dk
>>=
fun
cert
->
M
.
return
(
seed
,
cert
)
M
.
return
(
seed
,
cert
)
let
step1_check
cert
=
P
.
verify_cert
cert
let
step2
{
certs
}
=
let
step2
{
certs
}
=
Array
.
iteri
(
fun
i
cert
->
Array
.
iteri
(
fun
i
cert
->
if
P
.
verify_cert
cert
then
()
if
P
.
verify_cert
cert
then
()
...
@@ -339,6 +341,10 @@ module MakePedersen (G : GROUP) (M : RANDOM)
...
@@ -339,6 +341,10 @@ module MakePedersen (G : GROUP) (M : RANDOM)
in
fill_secrets
0
>>=
fun
()
->
in
fill_secrets
0
>>=
fun
()
->
M
.
return
{
p_polynomial
;
p_secrets
;
p_coefexps
}
M
.
return
{
p_polynomial
;
p_secrets
;
p_coefexps
}
let
step3_check
certs
i
polynomial
=
let
certs
=
Array
.
map
(
fun
x
->
cert_keys_of_string
G
.
read
x
.
s_message
)
certs
.
certs
in
P
.
verify
certs
.
(
i
)
.
cert_verification
polynomial
.
p_coefexps
let
step4
certs
polynomials
=
let
step4
certs
polynomials
=
let
n
=
Array
.
length
certs
.
certs
in
let
n
=
Array
.
length
certs
.
certs
in
let
()
=
step2
certs
in
let
()
=
step2
certs
in
...
@@ -412,6 +418,22 @@ module MakePedersen (G : GROUP) (M : RANDOM)
...
@@ -412,6 +418,22 @@ module MakePedersen (G : GROUP) (M : RANDOM)
)
)
)
)
let
step5_check
certs
i
polynomials
voutput
=
let
n
=
Array
.
length
certs
.
certs
in
let
certs
=
Array
.
map
(
fun
x
->
cert_keys_of_string
G
.
read
x
.
s_message
)
certs
.
certs
in
assert
(
n
=
Array
.
length
polynomials
);
let
coefexps
=
Array
.
init
n
(
fun
i
->
let
x
=
polynomials
.
(
i
)
.
p_coefexps
in
if
not
(
P
.
verify
certs
.
(
i
)
.
cert_verification
x
)
then
raise
(
PedersenFailure
(
Printf
.
sprintf
"coefexps %d does not validate"
(
i
+
1
)));
(
raw_coefexps_of_string
G
.
read
x
.
s_message
)
.
coefexps
)
in
let
computed_vk
=
(
compute_verification_keys
coefexps
)
.
(
i
)
in
K
.
check
voutput
.
vo_public_key
&&
voutput
.
vo_public_key
.
trustee_public_key
=~
computed_vk
let
step6
certs
polynomials
voutputs
=
let
step6
certs
polynomials
voutputs
=
let
n
=
Array
.
length
certs
.
certs
in
let
n
=
Array
.
length
certs
.
certs
in
let
()
=
step2
certs
in
let
()
=
step2
certs
in
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment