summaryrefslogtreecommitdiff
path: root/hjugement-protocol.cabal
blob: 8d708698c753675ba4136199b215dc382e835c3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
name: hjugement-protocol
-- PVP:  +-+------- breaking API changes
--       | | +----- non-breaking API additions
--       | | | +--- code changes with no API change
version: 0.0.0.20190519
category: Politic
synopsis: A cryptographic protocol for the Majority Judgment.
description:
  This work-in-progress library aims at implementing an online voting protocol
  named <https://eprint.iacr.org/2013/177.pdf Helios-C> (Helios with Credentials)
  by its authors from the <https://www.cnrs.fr/ CNRS>,
  the <http://www.loria.fr INRIA>
  and the <https://www.univ-lorraine.fr/ Université de Lorraine>:
  <http://www.loria.fr/~cortier/ Véronique Cortier>,
  <https://dgalindo.es/ David Galindo>,
  <http://www.loria.fr/~gaudry/ Pierrick Gaudry>,
  <http://stephane.glondu.net/ Stéphane Glondu>
  and Malika Izabachène.
  .
  * A large-public introduction (in french) to Helios-C is available here:
    <https://members.loria.fr/VCortier/files/Papers/Bulletin1024-2016.pdf Bulletin de la société informatique de France – numéro 9, novembre 2016>.
  * A more scientific (yet understandable) introduction (in english) to Belenios
    (an implementation of Helios-C) is available here:
    <https://hal.inria.fr/hal-02066930/document Belenios: a simple private and verifiable electronic voting system>.
  .
  The main properties of this protocol are:
  .
  * /fully correct/: the published result are proven to correspond
    to the (sum of) intended votes of the voters,
    while accounting for a malicious bulletin board (BB) (adding fake ballots)
    by requiring a registration authority (RA)
    (responsible for generating and sending voters' credentials).
    Assuming that the BB and the RA are not simultaneously dishonest.
  .
  * /verifiable/: each voter is able to check that:
    his\/her ballot did contribute to the outcome (/individual verifiability/),
    and that the tallying authorities did their job properly (/universal verifiability/).
  .
  * /private/: the identities of the voters who cast a vote are not publicly revealed.
extra-doc-files: README.md
license: GPL-3
license-file: COPYING
stability: experimental
author:      Julien Moutinho <julm+hjugement@autogeree.net>
maintainer:  Julien Moutinho <julm+hjugement@autogeree.net>
bug-reports: Julien Moutinho <julm+hjugement@autogeree.net>
-- homepage:

build-type: Simple
cabal-version: 1.24
tested-with: GHC==8.4.4
extra-source-files:
  stack.yaml
extra-tmp-files:

Source-Repository head
 location: git://git.autogeree.net/hjugement
 type:     git

Library
  hs-source-dirs: src
  exposed-modules:
    Voting.Protocol
    Voting.Protocol.FFC
    Voting.Protocol.Credential
    Voting.Protocol.Election
    Voting.Protocol.Tally
    Voting.Protocol.Trustee
    Voting.Protocol.Trustee.Indispensable
    Voting.Protocol.Utils
  default-language: Haskell2010
  default-extensions:
    AllowAmbiguousTypes
    ConstraintKinds
    DefaultSignatures
    FlexibleContexts
    FlexibleInstances
    GeneralizedNewtypeDeriving
    LambdaCase
    MonoLocalBinds
    MultiParamTypeClasses
    NamedFieldPuns
    NoImplicitPrelude
    NoMonomorphismRestriction
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
  ghc-options:
    -Wall
    -Wincomplete-uni-patterns
    -Wincomplete-record-updates
    -fno-warn-tabs
    -- -fhide-source-paths
  build-depends:
      base >= 4.6 && < 5
    , aeson >= 1.3
    , base64-bytestring >= 1.0
    , binary >= 0.8
    , bytestring >= 0.10
    , containers >= 0.5
    , cryptonite >= 0.25
    -- , fixed-vector >= 1.1
    -- , hashable >= 1.2.6
    , memory >= 0.14
    -- , mmorph >= 1.1
    -- , monad-classes >= 0.3
    , deepseq >= 1.4
    , random >= 1.1
    , reflection >= 2.1
    , text >= 1.2
    , transformers >= 0.5
    , unordered-containers >= 0.2.8

Test-Suite hjugement-protocol-test
  type: exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is: Main.hs
  other-modules:
    HUnit
    HUnit.FFC
    HUnit.Credential
    HUnit.Election
    HUnit.Trustee
    HUnit.Trustee.Indispensable
    QuickCheck
    QuickCheck.Election
    QuickCheck.Trustee
    Utils
  default-language: Haskell2010
  default-extensions:
    AllowAmbiguousTypes
    ConstraintKinds
    DefaultSignatures
    FlexibleContexts
    FlexibleInstances
    GeneralizedNewtypeDeriving
    LambdaCase
    MonoLocalBinds
    MultiParamTypeClasses
    NamedFieldPuns
    NoImplicitPrelude
    NoMonomorphismRestriction
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
  ghc-options:
    -Wall
    -Wincomplete-uni-patterns
    -Wincomplete-record-updates
    -fno-warn-tabs
    -- -fhide-source-paths
  build-depends:
      hjugement-protocol
    , base >= 4.6 && < 5
    , aeson >= 1.3
    , containers >= 0.5
    -- , hashable >= 1.2.6
    , QuickCheck >= 2.11
    -- , monad-classes >= 0.3
    , random >= 1.1
    -- , reflection >= 2.1
    , tasty >= 0.11
    , tasty-hunit >= 0.9
    , tasty-quickcheck
    , text >= 1.2
    , transformers >= 0.5
    -- , unordered-containers >= 0.2.8

Benchmark hjugement-protocol-benchmark
  type: exitcode-stdio-1.0
  hs-source-dirs: benchmarks
  main-is: Main.hs
  default-language: Haskell2010
  other-modules:
    Election
    Utils
  default-extensions:
    AllowAmbiguousTypes
    ConstraintKinds
    DefaultSignatures
    FlexibleContexts
    FlexibleInstances
    GeneralizedNewtypeDeriving
    LambdaCase
    MonoLocalBinds
    MultiParamTypeClasses
    NamedFieldPuns
    NoImplicitPrelude
    NoMonomorphismRestriction
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
  ghc-options:
    -Wall
    -Wincomplete-uni-patterns
    -Wincomplete-record-updates
    -fno-warn-tabs
  build-depends:
    base >= 4.6 && < 5
    , hjugement-protocol
    , containers >= 0.5
    , criterion >= 1.4
    , QuickCheck >= 2.11
    , random >= 1.1
    , text >= 1.2
    , transformers >= 0.5