123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- /*
- * Copyright 2018 Scytl Secure Electronic Voting SA
- *
- * All rights reserved
- *
- * See our extended copyright notice in *file 'Copyright.txt' which is part of this source code package
- */
- /* jshint node:true */
- 'use strict';
- var CommonTestData = require('./common-data');
- var elGamal = require('scytl-elgamal');
- module.exports = PlaintextEqualityProofTestData;
- /**
- * Provides the data needed by the plaintext equality zero-knowledge proof of
- * knowledge unit tests.
- */
- function PlaintextEqualityProofTestData() {
- var NUM_PLAINTEXT_ELEMENTS = 3;
- var PLAINTEXT_EQUALITY_PROOF_STRING_DATA =
- 'Test Plaintext Equality Proof Auxilary Data';
- var OTHER_PLAINTEXT_EQUALITY_PROOF_STRING_DATA =
- PLAINTEXT_EQUALITY_PROOF_STRING_DATA + '0';
- var NUM_PLAINTEXT_EQUALITY_PROOF_PROGRESS_CHECKS =
- (NUM_PLAINTEXT_ELEMENTS * 2) + 2;
- var elGamalEncrypter = elGamal.newService().newEncrypter();
- var commonTestData = new CommonTestData();
- var group_ = commonTestData.getGroup();
- var anotherGroup_ = commonTestData.getAnotherGroup();
- var primaryPublicKey_ =
- commonTestData.generateKeyPair(group_, NUM_PLAINTEXT_ELEMENTS).publicKey;
- var secondaryPublicKey_ =
- commonTestData.generateKeyPair(group_, NUM_PLAINTEXT_ELEMENTS).publicKey;
- var anotherPrimaryPublicKey_;
- do {
- anotherPrimaryPublicKey_ =
- commonTestData.generateKeyPair(group_, NUM_PLAINTEXT_ELEMENTS)
- .publicKey;
- } while (
- anotherPrimaryPublicKey_.elements.equals(primaryPublicKey_.elements));
- var anotherSecondaryPublicKey_;
- do {
- anotherSecondaryPublicKey_ =
- commonTestData.generateKeyPair(group_, NUM_PLAINTEXT_ELEMENTS)
- .publicKey;
- } while (
- anotherSecondaryPublicKey_.elements.equals(secondaryPublicKey_.elements));
- var publicKeyWithLessElements_ =
- commonTestData.generateKeyPair(group_, (NUM_PLAINTEXT_ELEMENTS - 1))
- .publicKey;
- var publicKeyFromAnotherGroup_ =
- commonTestData.generateKeyPair(anotherGroup_, NUM_PLAINTEXT_ELEMENTS)
- .publicKey;
- var plaintext = commonTestData.generateRandomGroupElements(
- group_, NUM_PLAINTEXT_ELEMENTS);
- var anotherPlaintext;
- do {
- anotherPlaintext = commonTestData.generateRandomGroupElements(
- group_, NUM_PLAINTEXT_ELEMENTS);
- } while (anotherPlaintext.equals(plaintext));
- var plaintextWithLessElements = commonTestData.generateRandomGroupElements(
- group_, (NUM_PLAINTEXT_ELEMENTS - 1));
- var plaintextFromAnotherGroup = commonTestData.generateRandomGroupElements(
- anotherGroup_, NUM_PLAINTEXT_ELEMENTS);
- var primaryEncryptedElements_ =
- elGamalEncrypter.init(primaryPublicKey_).encrypt(plaintext, {
- saveSecret: true
- });
- var secondaryEncryptedElements_ =
- elGamalEncrypter.init(secondaryPublicKey_).encrypt(plaintext, {
- saveSecret: true
- });
- var otherPrimaryEncryptedElements_;
- do {
- otherPrimaryEncryptedElements_ =
- elGamalEncrypter.init(primaryPublicKey_).encrypt(plaintext, {
- saveSecret: true
- });
- } while (otherPrimaryEncryptedElements_.secret.equals(
- primaryEncryptedElements_.secret) ||
- otherPrimaryEncryptedElements_.phis.equals(
- primaryEncryptedElements_.phis));
- var otherSecondaryEncryptedElements_;
- do {
- otherSecondaryEncryptedElements_ =
- elGamalEncrypter.init(secondaryPublicKey_).encrypt(plaintext, {
- saveSecret: true
- });
- } while (otherSecondaryEncryptedElements_.secret.equals(
- secondaryEncryptedElements_.secret) ||
- otherSecondaryEncryptedElements_.phis.equals(
- secondaryEncryptedElements_.phis));
- var encryptedElementsWithLessElements_ =
- elGamalEncrypter.init(publicKeyWithLessElements_)
- .encrypt(plaintextWithLessElements, {saveSecret: true});
- var encryptedElementsFromAnotherGroup_ =
- elGamalEncrypter.init(publicKeyFromAnotherGroup_)
- .encrypt(plaintextFromAnotherGroup, {saveSecret: true});
- this.getGroup = function() {
- return group_;
- };
- this.getAnotherGroup = function() {
- return anotherGroup_;
- };
- this.getPrimaryPublicKey = function() {
- return primaryPublicKey_;
- };
- this.getSecondaryPublicKey = function() {
- return secondaryPublicKey_;
- };
- this.getAnotherPrimaryPublicKey = function() {
- return anotherPrimaryPublicKey_;
- };
- this.getAnotherSecondaryPublicKey = function() {
- return anotherSecondaryPublicKey_;
- };
- this.getPublicKeyWithLessElements = function() {
- return publicKeyWithLessElements_;
- };
- this.getPublicKeyFromAnotherGroup = function() {
- return publicKeyFromAnotherGroup_;
- };
- this.getPrimaryEncryptedElements = function() {
- return primaryEncryptedElements_;
- };
- this.getSecondaryEncryptedElements = function() {
- return secondaryEncryptedElements_;
- };
- this.getOtherPrimaryEncryptedElements = function() {
- return otherPrimaryEncryptedElements_;
- };
- this.getOtherSecondaryEncryptedElements = function() {
- return otherSecondaryEncryptedElements_;
- };
- this.getEncryptedElementsWithLessElements = function() {
- return encryptedElementsWithLessElements_;
- };
- this.getEncryptedElementsFromAnotherGroup = function() {
- return encryptedElementsFromAnotherGroup_;
- };
- this.getStringData = function() {
- return PLAINTEXT_EQUALITY_PROOF_STRING_DATA;
- };
- this.getOtherStringData = function() {
- return OTHER_PLAINTEXT_EQUALITY_PROOF_STRING_DATA;
- };
- this.getNumProgressChecks = function() {
- return NUM_PLAINTEXT_EQUALITY_PROOF_PROGRESS_CHECKS;
- };
- }
|