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
07408321
Commit
07408321
authored
Apr 24, 2013
by
Stephane Glondu
Browse files
Add public_keys to ELECTION_PARAMS
parent
c22d9c11
Changes
4
Hide whitespace changes
Inline
Side-by-side
lib/crypto.ml
View file @
07408321
...
@@ -263,10 +263,11 @@ module MakeElection (P : Crypto_sigs.ELECTION_PARAMS) = struct
...
@@ -263,10 +263,11 @@ module MakeElection (P : Crypto_sigs.ELECTION_PARAMS) = struct
let
result
=
Array
.
mmap
log
results
in
let
result
=
Array
.
mmap
log
results
in
{
nb_tallied
;
encrypted_tally
;
partial_decryptions
;
result
}
{
nb_tallied
;
encrypted_tally
;
partial_decryptions
;
result
}
let
check_result
ys
r
=
let
check_result
r
=
let
{
encrypted_tally
;
partial_decryptions
;
result
;
nb_tallied
}
=
r
in
let
{
encrypted_tally
;
partial_decryptions
;
result
;
nb_tallied
}
=
r
in
check_ciphertext
encrypted_tally
&&
check_ciphertext
encrypted_tally
&&
Array
.
forall2
(
check_factor
encrypted_tally
)
ys
partial_decryptions
&&
Array
.
forall2
(
check_factor
encrypted_tally
)
public_keys
partial_decryptions
&&
let
dummy
=
Array
.
mmap
(
fun
_
->
G
.
one
)
encrypted_tally
in
let
dummy
=
Array
.
mmap
(
fun
_
->
G
.
one
)
encrypted_tally
in
let
factors
=
Array
.
fold_left
(
fun
a
b
->
let
factors
=
Array
.
fold_left
(
fun
a
b
->
Array
.
mmap2
(
*~
)
a
b
.
decryption_factors
Array
.
mmap2
(
*~
)
a
b
.
decryption_factors
...
...
lib/crypto_sigs.mli
View file @
07408321
...
@@ -45,6 +45,9 @@ module type ELECTION_PARAMS = sig
...
@@ -45,6 +45,9 @@ module type ELECTION_PARAMS = sig
module
G
:
GROUP
module
G
:
GROUP
(** The group used for cryptography. *)
(** The group used for cryptography. *)
val
public_keys
:
G
.
t
array
(** Trustee public keys. *)
val
params
:
G
.
t
Serializable_t
.
election
val
params
:
G
.
t
Serializable_t
.
election
(** Other parameters. *)
(** Other parameters. *)
...
@@ -133,7 +136,7 @@ module type ELECTION = sig
...
@@ -133,7 +136,7 @@ module type ELECTION = sig
produce the election result. The first argument is the number of
produce the election result. The first argument is the number of
tallied ballots. May raise [Invalid_argument]. *)
tallied ballots. May raise [Invalid_argument]. *)
val
check_result
:
public_key
array
->
result
->
bool
val
check_result
:
result
->
bool
val
extract_tally
:
result
->
plaintext
val
extract_tally
:
result
->
plaintext
(** Extract the plaintext result of the election. *)
(** Extract the plaintext result of the election. *)
...
...
tests/sandbox.ml
View file @
07408321
...
@@ -80,6 +80,10 @@ let verbose_verify_election_test_data (e, ballots, signatures, private_data) =
...
@@ -80,6 +80,10 @@ let verbose_verify_election_test_data (e, ballots, signatures, private_data) =
let
{
g
;
p
;
q
;
y
}
=
e
.
election
.
e_public_key
in
let
{
g
;
p
;
q
;
y
}
=
e
.
election
.
e_public_key
in
let
module
P
=
struct
let
module
P
=
struct
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
let
public_keys
=
Array
.
map
(
fun
x
->
x
.
trustee_public_key
.
y
)
e
.
public_data
.
public_keys
let
params
=
Serializable_compat
.
of_election
e
.
election
let
params
=
Serializable_compat
.
of_election
e
.
election
let
fingerprint
=
e
.
fingerprint
let
fingerprint
=
e
.
fingerprint
end
in
end
in
...
@@ -166,6 +170,10 @@ let random_exponent =
...
@@ -166,6 +170,10 @@ let random_exponent =
module
P
=
struct
module
P
=
struct
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
let
public_keys
=
Array
.
map
(
fun
x
->
x
.
trustee_public_key
.
y
)
e
.
public_data
.
public_keys
let
params
=
Serializable_compat
.
of_election
e
.
election
let
params
=
Serializable_compat
.
of_election
e
.
election
let
fingerprint
=
e
.
fingerprint
let
fingerprint
=
e
.
fingerprint
end
end
...
@@ -213,5 +221,5 @@ let () =
...
@@ -213,5 +221,5 @@ let () =
nresult
.
nb_tallied
nresult
.
encrypted_tally
nresult
.
partial_decryptions
nresult
.
nb_tallied
nresult
.
encrypted_tally
nresult
.
partial_decryptions
in
in
assert
(
nresult'
.
result
=
nresult
.
result
);
assert
(
nresult'
.
result
=
nresult
.
result
);
assert
(
Election
.
check_result
ys
nresult'
);
assert
(
Election
.
check_result
nresult'
);
;;
;;
web/helios_registration.ml
View file @
07408321
...
@@ -186,6 +186,9 @@ let () = Eliom_registration.Html5.register
...
@@ -186,6 +186,9 @@ let () = Eliom_registration.Html5.register
let
{
g
;
p
;
q
;
y
}
=
election
.
Common
.
election
.
e_public_key
in
let
{
g
;
p
;
q
;
y
}
=
election
.
Common
.
election
.
e_public_key
in
let
module
P
=
struct
let
module
P
=
struct
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
module
G
=
(
val
Crypto
.
finite_field
~
p
~
q
~
g
:
Crypto_sigs
.
GROUP
with
type
t
=
Z
.
t
)
let
public_keys
=
Array
.
map
(
fun
x
->
x
.
trustee_public_key
.
y
)
election
.
Common
.
public_data
.
public_keys
let
params
=
Serializable_compat
.
of_election
election
.
Common
.
election
let
params
=
Serializable_compat
.
of_election
election
.
Common
.
election
let
fingerprint
=
assert
false
let
fingerprint
=
assert
false
end
in
end
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