12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- * 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 ZeroKnowledgeProofService = require('./service');
- var validator = require('./input-validator');
- module.exports = {
- /**
- * Creates a new ZeroKnowledgeProofService object, which encapsulates a
- * zero-knowledge proof service.
- *
- * @function newService
- * @global
- * @param {Object}
- * [options] An object containing optional arguments.
- * @param {Policy}
- * [options.policy=Default policy] The cryptographic policy to
- * use.
- * @param {MessageDigestService}
- * [options.messageDigestService=Created internally] The message
- * digest service to use.
- * @param {SecureRandomService}
- * [options.secureRandomService=Created internally] The secure
- * random service to use.
- * @param {MathematicalService}
- * [options.mathematicalService=Created internally] The
- * mathematical service to use.
- * @returns {ZeroKnowledgeProofService} The new ZeroKnowledgeProofService
- * object.
- * @throws {Error}
- * If the input data validation fails.
- * @example <caption> How to use a cryptographic policy that sets the
- * message digest algorithm to <code>SHA-512</code></caption>
- *
- * var cryptoPolicy = require('scytl-cryptopolicy');
- * var zkProof = require('scytl-zkproof');
- *
- * var myPolicy = cryptoPolicy.newInstance();
- *
- * myPolicy.proofs.messagedigest.algorithm =
- * cryptoPolicy.options.proofs.messageDigest.algorithm.SHA512_224;
- *
- * var proofService = zkProof.newService({policy: myPolicy});
- */
- newService: function(options) {
- checkData(options);
- return new ZeroKnowledgeProofService(options);
- }
- };
- function checkData(options) {
- options = options || {};
- if (typeof options.policy !== 'undefined') {
- validator.checkIsObjectWithProperties(
- options.policy,
- 'Cryptographic policy provided to zero-knowledge proof service');
- }
- if (typeof options.messageDigestService !== 'undefined') {
- validator.checkIsObjectWithProperties(
- options.messageDigestService,
- 'Message digest service object provided to zero-knowledge proof service');
- }
- if (typeof options.secureRandomService !== 'undefined') {
- validator.checkIsObjectWithProperties(
- options.secureRandomService,
- 'Secure random service object provided to zero-knowledge proof service');
- }
- if (typeof options.mathematicalService !== 'undefined') {
- validator.checkIsObjectWithProperties(
- options.mathematicalService,
- 'Mathematical service object provided to zero-knowledge proof service');
- }
- }
|