voting_schemes-dummy 0.21.2 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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