voting_schemes-dummy 0.21.2 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37c9abcc9bb46cddf7233614eb2ffb8e6c7987d198c23588fdcad0b79b561fdf
4
- data.tar.gz: 7a1690d5c1889a5ed436558bfc44ac5e1564f94b1ab93da9bdf2ecee065594c7
3
+ metadata.gz: 8bc5884c8b1f6cdd179e94a957fe91e6590c84b673ecf662bcb06af34e8da708
4
+ data.tar.gz: 54fe58ff70d51a404bf26f369b6938b50a82476d3d86b66150775f7a39ea7576
5
5
  SHA512:
6
- metadata.gz: cae411e092b4bcd4f4911ede37b7eb4718c7776c01c905225c165fa31a695fe9a40ef0997cb37e56fbcfa88c0a5f35ada4221855e60ee62a36409244b1d07ad8
7
- data.tar.gz: 2b7ca23c2e2816ef5797dd3d267a2374a073206c5062090b4a12734fb1dcff7910619fb7163db1b6815d981f2e8ebb45d39b614c1777fb77b4ccbf5c10122a37
6
+ metadata.gz: 37c6b073ad2d60a4abd0cb50261fbaf23ebea865e3876cc87e404caaf448ec36056ca62f8667e6f66b0c0c7467d1b8707f2ebeabef528b22b540cd656aa7c27b
7
+ data.tar.gz: 882a25617e95e341e0ab1c828928fc78295e9056843324d8b234a9a5e6a874e87eaa3ecdc12c5d3bd1702b2c63637b833d99ec70e9f24d70bc7e1d9b2a3a91d2
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.6
data/Gemfile.lock CHANGED
@@ -1,66 +1,66 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- voting_schemes-dummy (0.21.2)
4
+ voting_schemes-dummy (0.22.0)
5
5
  rails (>= 5.0.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (6.1.3.2)
11
- actionpack (= 6.1.3.2)
12
- activesupport (= 6.1.3.2)
10
+ actioncable (6.1.4.1)
11
+ actionpack (= 6.1.4.1)
12
+ activesupport (= 6.1.4.1)
13
13
  nio4r (~> 2.0)
14
14
  websocket-driver (>= 0.6.1)
15
- actionmailbox (6.1.3.2)
16
- actionpack (= 6.1.3.2)
17
- activejob (= 6.1.3.2)
18
- activerecord (= 6.1.3.2)
19
- activestorage (= 6.1.3.2)
20
- activesupport (= 6.1.3.2)
15
+ actionmailbox (6.1.4.1)
16
+ actionpack (= 6.1.4.1)
17
+ activejob (= 6.1.4.1)
18
+ activerecord (= 6.1.4.1)
19
+ activestorage (= 6.1.4.1)
20
+ activesupport (= 6.1.4.1)
21
21
  mail (>= 2.7.1)
22
- actionmailer (6.1.3.2)
23
- actionpack (= 6.1.3.2)
24
- actionview (= 6.1.3.2)
25
- activejob (= 6.1.3.2)
26
- activesupport (= 6.1.3.2)
22
+ actionmailer (6.1.4.1)
23
+ actionpack (= 6.1.4.1)
24
+ actionview (= 6.1.4.1)
25
+ activejob (= 6.1.4.1)
26
+ activesupport (= 6.1.4.1)
27
27
  mail (~> 2.5, >= 2.5.4)
28
28
  rails-dom-testing (~> 2.0)
29
- actionpack (6.1.3.2)
30
- actionview (= 6.1.3.2)
31
- activesupport (= 6.1.3.2)
29
+ actionpack (6.1.4.1)
30
+ actionview (= 6.1.4.1)
31
+ activesupport (= 6.1.4.1)
32
32
  rack (~> 2.0, >= 2.0.9)
33
33
  rack-test (>= 0.6.3)
34
34
  rails-dom-testing (~> 2.0)
35
35
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
36
- actiontext (6.1.3.2)
37
- actionpack (= 6.1.3.2)
38
- activerecord (= 6.1.3.2)
39
- activestorage (= 6.1.3.2)
40
- activesupport (= 6.1.3.2)
36
+ actiontext (6.1.4.1)
37
+ actionpack (= 6.1.4.1)
38
+ activerecord (= 6.1.4.1)
39
+ activestorage (= 6.1.4.1)
40
+ activesupport (= 6.1.4.1)
41
41
  nokogiri (>= 1.8.5)
42
- actionview (6.1.3.2)
43
- activesupport (= 6.1.3.2)
42
+ actionview (6.1.4.1)
43
+ activesupport (= 6.1.4.1)
44
44
  builder (~> 3.1)
45
45
  erubi (~> 1.4)
46
46
  rails-dom-testing (~> 2.0)
47
47
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
48
- activejob (6.1.3.2)
49
- activesupport (= 6.1.3.2)
48
+ activejob (6.1.4.1)
49
+ activesupport (= 6.1.4.1)
50
50
  globalid (>= 0.3.6)
51
- activemodel (6.1.3.2)
52
- activesupport (= 6.1.3.2)
53
- activerecord (6.1.3.2)
54
- activemodel (= 6.1.3.2)
55
- activesupport (= 6.1.3.2)
56
- activestorage (6.1.3.2)
57
- actionpack (= 6.1.3.2)
58
- activejob (= 6.1.3.2)
59
- activerecord (= 6.1.3.2)
60
- activesupport (= 6.1.3.2)
51
+ activemodel (6.1.4.1)
52
+ activesupport (= 6.1.4.1)
53
+ activerecord (6.1.4.1)
54
+ activemodel (= 6.1.4.1)
55
+ activesupport (= 6.1.4.1)
56
+ activestorage (6.1.4.1)
57
+ actionpack (= 6.1.4.1)
58
+ activejob (= 6.1.4.1)
59
+ activerecord (= 6.1.4.1)
60
+ activesupport (= 6.1.4.1)
61
61
  marcel (~> 1.0.0)
62
- mini_mime (~> 1.0.2)
63
- activesupport (6.1.3.2)
62
+ mini_mime (>= 1.1.0)
63
+ activesupport (6.1.4.1)
64
64
  concurrent-ruby (~> 1.0, >= 1.0.2)
65
65
  i18n (>= 1.6, < 2)
66
66
  minitest (>= 5.1)
@@ -74,25 +74,25 @@ GEM
74
74
  erubi (1.10.0)
75
75
  faker (2.15.1)
76
76
  i18n (>= 1.6, < 2)
77
- globalid (0.4.2)
78
- activesupport (>= 4.2.0)
77
+ globalid (0.5.2)
78
+ activesupport (>= 5.0)
79
79
  i18n (1.8.10)
80
80
  concurrent-ruby (~> 1.0)
81
- loofah (2.9.1)
81
+ loofah (2.12.0)
82
82
  crass (~> 1.0.2)
83
83
  nokogiri (>= 1.5.9)
84
84
  mail (2.7.1)
85
85
  mini_mime (>= 0.1.1)
86
86
  marcel (1.0.1)
87
87
  method_source (1.0.0)
88
- mini_mime (1.0.3)
89
- mini_portile2 (2.5.1)
88
+ mini_mime (1.1.1)
89
+ mini_portile2 (2.6.1)
90
90
  minitest (5.14.4)
91
- nio4r (2.5.7)
92
- nokogiri (1.11.6)
93
- mini_portile2 (~> 2.5.0)
91
+ nio4r (2.5.8)
92
+ nokogiri (1.12.4)
93
+ mini_portile2 (~> 2.6.1)
94
94
  racc (~> 1.4)
95
- nokogiri (1.11.6-x86_64-linux)
95
+ nokogiri (1.12.4-x86_64-linux)
96
96
  racc (~> 1.4)
97
97
  parallel (1.20.1)
98
98
  parser (3.0.0.0)
@@ -101,31 +101,31 @@ GEM
101
101
  rack (2.2.3)
102
102
  rack-test (1.1.0)
103
103
  rack (>= 1.0, < 3)
104
- rails (6.1.3.2)
105
- actioncable (= 6.1.3.2)
106
- actionmailbox (= 6.1.3.2)
107
- actionmailer (= 6.1.3.2)
108
- actionpack (= 6.1.3.2)
109
- actiontext (= 6.1.3.2)
110
- actionview (= 6.1.3.2)
111
- activejob (= 6.1.3.2)
112
- activemodel (= 6.1.3.2)
113
- activerecord (= 6.1.3.2)
114
- activestorage (= 6.1.3.2)
115
- activesupport (= 6.1.3.2)
104
+ rails (6.1.4.1)
105
+ actioncable (= 6.1.4.1)
106
+ actionmailbox (= 6.1.4.1)
107
+ actionmailer (= 6.1.4.1)
108
+ actionpack (= 6.1.4.1)
109
+ actiontext (= 6.1.4.1)
110
+ actionview (= 6.1.4.1)
111
+ activejob (= 6.1.4.1)
112
+ activemodel (= 6.1.4.1)
113
+ activerecord (= 6.1.4.1)
114
+ activestorage (= 6.1.4.1)
115
+ activesupport (= 6.1.4.1)
116
116
  bundler (>= 1.15.0)
117
- railties (= 6.1.3.2)
117
+ railties (= 6.1.4.1)
118
118
  sprockets-rails (>= 2.0.0)
119
119
  rails-dom-testing (2.0.3)
120
120
  activesupport (>= 4.2.0)
121
121
  nokogiri (>= 1.6)
122
- rails-html-sanitizer (1.3.0)
122
+ rails-html-sanitizer (1.4.2)
123
123
  loofah (~> 2.3)
124
- railties (6.1.3.2)
125
- actionpack (= 6.1.3.2)
126
- activesupport (= 6.1.3.2)
124
+ railties (6.1.4.1)
125
+ actionpack (= 6.1.4.1)
126
+ activesupport (= 6.1.4.1)
127
127
  method_source
128
- rake (>= 0.8.7)
128
+ rake (>= 0.13)
129
129
  thor (~> 1.0)
130
130
  rainbow (3.0.0)
131
131
  rake (13.0.3)
@@ -173,7 +173,7 @@ GEM
173
173
  tzinfo (2.0.4)
174
174
  concurrent-ruby (~> 1.0)
175
175
  unicode-display_width (1.7.0)
176
- websocket-driver (0.7.4)
176
+ websocket-driver (0.7.5)
177
177
  websocket-extensions (>= 0.1.0)
178
178
  websocket-extensions (0.1.5)
179
179
  zeitwerk (2.4.2)
@@ -191,4 +191,4 @@ DEPENDENCIES
191
191
  voting_schemes-dummy!
192
192
 
193
193
  BUNDLED WITH
194
- 2.2.15
194
+ 2.2.27
@@ -1 +1 @@
1
- (()=>{"use strict";var e={d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{TrusteeWrapperAdapter:()=>r,VoterWrapperAdapter:()=>i});class s{constructor({trusteeId:e}){this.trusteeId=e,this.status=0,this.electionPublicKey=0}processMessage(e,t){switch(this.status){case 0:if("start_key_ceremony"===e)return this.status=1,this.electionPublicKey=2*Math.floor(50+200*Math.random())+1,{messageType:"key_ceremony.step_1",content:JSON.stringify({election_public_key:this.electionPublicKey,owner_id:this.trusteeId})};break;case 1:"end_key_ceremony"===e&&(this.status=2);break;case 2:"start_tally"===e&&(this.status=3);break;case 3:if("tally.cast"===e){const e=JSON.parse(t.content);for(const[t,s]of Object.entries(e))for(const[r,n]of Object.entries(s))e[t][r]=n%this.electionPublicKey*this.electionPublicKey;return{messageType:"tally.share",content:JSON.stringify({owner_id:this.trusteeId,contests:e})}}"end_tally"===e&&(this.status=4)}}isFresh(){return 0===this.status}backup(){return JSON.stringify(this)}restore(e){if(!this.isFresh())return console.warn("Restore not needed"),!1;const t=JSON.parse(e);if(t.trusteeId!==this.trusteeId)return console.warn("Invalid trustee id"),!1;if(0===t.status)return console.warn("Invalid restored status"),!1;try{Object.assign(this,t)}catch(e){return console.error(e),!1}return!0}isKeyCeremonyDone(){return this.status>=2}isTallyDone(){return this.status>=4}}class r{constructor({trusteeId:e}){this.trusteeId=e,this.wrapper=new s({trusteeId:e})}setup(){}processMessage(e,t){return this.wrapper.processMessage(e,t)}isFresh(){return this.wrapper.isFresh()}backup(){return this.wrapper.backup()}restore(e){return this.wrapper.restore(e)}isKeyCeremonyDone(){return this.wrapper.isKeyCeremonyDone()}isTallyDone(){return this.wrapper.isTallyDone()}}class n{constructor({voterId:e,waitTime:t}){this.voterId=e,this.jointElectionKey=null,this.contests={},this.waitTime=t??500}processMessage(e,t){switch(e){case"create_election":this.contests=t.description.contests;break;case"end_key_ceremony":{const e=JSON.parse(t.content);this.jointElectionKey=e.joint_election_key;break}}}async encrypt(e,t){return new Promise((e=>setTimeout(e,500))).then((()=>{if(!this.jointElectionKey)return void console.warn("Invalid election status.");const t=this.createAuditableBallot(e);return{auditableData:t,encryptedData:JSON.stringify(this.createEncryptedData(JSON.parse(JSON.stringify(t))))}}))}createAuditableBallot(e){return{ballot_style:"ballot-style",contests:this.contests.map((({object_id:t,ballot_selections:s})=>({object_id:t,ballot_selections:s.map((s=>{const r=Math.random(),n=e[t]&&e[t].includes(s.object_id)?1:0;return{object_id:s.object_id,ciphertext:n+Math.floor(500*r)*this.jointElectionKey,random:r,plaintext:n}}))})))}}createEncryptedData(e){return this.removeAuditInformation(e)}removeAuditInformation(e){return e.contests.map((e=>e.ballot_selections.map((e=>(delete e.random,delete e.plaintext,e))))),e}}class i{constructor({voterId:e,waitTime:t}){this.voterId=e,this.wrapper=new n({voterId:e,waitTime:t})}setup(){}processMessage(e,t){return this.wrapper.processMessage(e,t)}encrypt(e,t){return this.wrapper.encrypt(e,t)}}window.dummyVotingScheme=t})();
1
+ (()=>{"use strict";var e={d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{TrusteeWrapperAdapter:()=>r,VoterWrapperAdapter:()=>n});class s{constructor({trusteeId:e}){this.trusteeId=e,this.status=0,this.electionPublicKey=0,this.jointElectionKey=0,this.tallyCastMessage=null}processMessage(e,t){switch(this.status){case 0:if("start_key_ceremony"===e)return this.status=1,this.electionPublicKey=2*Math.floor(50+200*Math.random())+1,{messageType:"key_ceremony.step_1",content:JSON.stringify({election_public_key:this.electionPublicKey,owner_id:this.trusteeId})};break;case 1:if("end_key_ceremony"===e){const e=JSON.parse(t.content);this.jointElectionKey=e.joint_election_key,this.status=2}break;case 2:"start_tally"===e&&(this.status=3);break;case 3:if("tally.cast"===e){this.tallyCastMessage=t.content;const e=JSON.parse(this.tallyCastMessage);for(const[t,s]of Object.entries(e))for(const[r,i]of Object.entries(s))e[t][r]=i%this.electionPublicKey*this.electionPublicKey;return{messageType:"tally.share",content:JSON.stringify({owner_id:this.trusteeId,contests:e})}}if("tally.missing_trustee"===e){const e=JSON.parse(this.tallyCastMessage);for(const[t,s]of Object.entries(e))for(const[r,i]of Object.entries(s))e[t][r]=i%this.electionPublicKey*1*this.jointElectionKey/this.electionPublicKey/this.electionPublicKey;return{messageType:"tally.compensation",content:JSON.stringify({owner_id:this.trusteeId,trustee_id:t.trustee_id,contests:e})}}"end_tally"===e&&(this.status=4)}}isFresh(){return 0===this.status}backup(){return JSON.stringify(this)}restore(e){if(!this.isFresh())return console.warn("Restore not needed"),!1;const t=JSON.parse(e);if(t.trusteeId!==this.trusteeId)return console.warn("Invalid trustee id"),!1;if(0===t.status)return console.warn("Invalid restored status"),!1;try{Object.assign(this,t)}catch(e){return console.error(e),!1}return!0}isKeyCeremonyDone(){return this.status>=2}isTallyDone(){return this.status>=4}}class r{constructor({trusteeId:e}){this.trusteeId=e,this.wrapper=new s({trusteeId:e})}setup(){}processMessage(e,t){return this.wrapper.processMessage(e,t)}isFresh(){return this.wrapper.isFresh()}backup(){return this.wrapper.backup()}restore(e){return this.wrapper.restore(e)}isKeyCeremonyDone(){return this.wrapper.isKeyCeremonyDone()}isTallyDone(){return this.wrapper.isTallyDone()}}class i{constructor({voterId:e,waitTime:t}){this.voterId=e,this.jointElectionKey=null,this.contests={},this.waitTime=t??500}processMessage(e,t){switch(e){case"create_election":this.contests=t.description.contests;break;case"end_key_ceremony":{const e=JSON.parse(t.content);this.jointElectionKey=e.joint_election_key;break}}}async encrypt(e,t){return new Promise((e=>setTimeout(e,500))).then((()=>{if(!this.jointElectionKey)return void console.warn("Invalid election status.");const t=this.createAuditableBallot(e);return{auditableData:t,encryptedData:JSON.stringify(this.createEncryptedData(JSON.parse(JSON.stringify(t))))}}))}createAuditableBallot(e){return{ballot_style:"ballot-style",contests:this.contests.map((({object_id:t,ballot_selections:s})=>({object_id:t,ballot_selections:s.map((s=>{const r=Math.random(),i=e[t]&&e[t].includes(s.object_id)?1:0;return{object_id:s.object_id,ciphertext:i+Math.floor(500*r)*this.jointElectionKey,random:r,plaintext:i}}))})))}}createEncryptedData(e){return this.removeAuditInformation(e)}removeAuditInformation(e){return e.contests.map((e=>e.ballot_selections.map((e=>(delete e.random,delete e.plaintext,e))))),e}}class n{constructor({voterId:e,waitTime:t}){this.voterId=e,this.wrapper=new i({voterId:e,waitTime:t})}setup(){}processMessage(e,t){return this.wrapper.processMessage(e,t)}encrypt(e,t){return this.wrapper.encrypt(e,t)}}window.dummyVotingScheme=t})();
@@ -2,6 +2,6 @@
2
2
 
3
3
  module VotingSchemes
4
4
  module Dummy
5
- VERSION = "0.21.2"
5
+ VERSION = "0.22.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voting_schemes-dummy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.2
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Morcillo
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-05-28 00:00:00.000000000 Z
14
+ date: 2021-09-06 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -68,6 +68,7 @@ files:
68
68
  - ".gitignore"
69
69
  - ".rspec"
70
70
  - ".rubocop.yml"
71
+ - ".ruby-version"
71
72
  - CHANGELOG.md
72
73
  - Gemfile
73
74
  - Gemfile.lock