- Added weight to the voter session expectation. DBB has also been expanded to provide weights for the session.
- Replace proof-of-private-key with proof-of-election-codes
- Move authorizationMode under voterAuthorizer and rename values:
- proof-of-identity and proof-of-private-key
- Allow registering as a voter by proof of identity or proof of private key
- Allow submitting blank if dbb config allows.
- Have voter registration fetch and sign latest config item rather than latest VA config item.
- Increase poll time
- Added nist parser
- Updated the BallotBoxReceipt
- Breaking changes to contest config marking type
- Complex votes encoding added
- Packing payloads to DBB
- Customizable URL in Verifier-POC
- Encrypted commitment openings
- Added tests
- Introduced Base58 short codes
- Usage of env variables for various services
- Export verifier as part of av-client
- Use of contest references
- Remove jsonwebtoken package
- Verifier UX improvements
- Support new DBB structure
- Auth token replaces registration token and session token.
- Expose getElectionConfig() as a public method. Can be used for debugging, testing and enumerating ballots.
- Add initial NIST 1500-103 converter
- Export type IAVClient
- Added IAVClient interface for easier mocking by consumers.
- Fix problem with 3rd party libs not being contained in package.
- Documentation updates
- Exporting error types for improved error handling in consuming code
- Upgrading 3rd party libraries, including security patching
- Improved error handling
- Transpilation target downgraded from ES2020 to ES2018
- Type
Receipt
renamed toBallotBoxReceipt
. Content is unchanged. - Method
generateTestCode()
marked as deprecated. This will be replaced when the new Benaloh challenge is in place.
We are introducing two new methods on the client library.
Motivation: This is allows fetching the initial election configuration, but without relying on an asynchronous constructor.
Motivation: This makes it more clear to the consumer when exactly the actual voter registration is done.
Adding the two new methods means the call sequence should now follow this pattern:
1. initialize
2. requestAccessCode
3. validateAccessCode
4. registerVoter
5. constructBallotCryptograms
6. spoilBallotCryptograms (optional)
7. submitBallotCryptograms
8. purgeData
We have identified two design issues that has led us to change the signature of two existing methods.
# Before
requestAccessCode(opaqueVoterId: string): Promise<void>
# After
requestAccessCode(opaqueVoterId: string, email: string): Promise<void>
Motivation:
- Avoid providing an interface to spam voters based on a potentially guessable opaque voter IDs.
- By making the consumer state the email where the OTP code is expected to arrive, we can provide an error instead of leaving a voter in a wait-forever state.
# Before
validateAccessCode(code: string | string[], email: string): Promise<void>
# After
validateAccessCode(code: string): Promise<void>
Motivation:
- We are only supporting a single OTP provider at the moment, thus we don't need an array of codes.
- We no longer need the email parameter, as the client library now gets this when requestAccessCode is called.