Swisspost 460d0e0780 sVote source code publication | 5 ani în urmă | |
---|---|---|
.. | ||
lib | 5 ani în urmă | |
spec | 5 ani în urmă | |
test | 5 ani în urmă | |
.gitignore | 5 ani în urmă | |
.jshintrc | 5 ani în urmă | |
.npmrc | 5 ani în urmă | |
LICENSE | 5 ani în urmă | |
README.md | 5 ani în urmă | |
karma.conf.js | 5 ani în urmă | |
package-lock.json | 5 ani în urmă | |
package.json | 5 ani în urmă | |
pom.xml | 5 ani în urmă |
This module defines the cryptographic policy configuration for Scytl's JavaScript cryptographic library.
Start by git cloning the project comm/scytl-cryptolib
from Stash
.
The source code of this module will be found in the directory scytl-cryptolib/cryptolib-js-policy/lib
.
To build this module, change to the directory scytl-cryptolib/cryptolib-js-policy
and do the following:
npm install
--or--
mvn clean install -DskipTests
The unit tests of this module will be found in the directory scytl-cryptolib/cryptolib-js-policy/spec
. To run the tests, change to the directory scytl-cryptolib/cryptolib-js-policy
and do the following:
karma test
--or--
mvn test
To only run a chosen test suite, add an f
in front of the corresponding describe
statement. For example:
fdescribe('create a cryptographic policy instance that should be able to ..',
...
To only run a chosen test, add an f
in front of the corresponding it
statement. For example:
fit('provide access to policy options', function() {
...
Note: To build and test the entire scytl-cryptolib
project, change to the directory scytl-cryptolib
and do the following:
mvn clean install
To generate the JSDoc for this module, change to the directory scytl-cryptolib/cryptolib-js-policy
, build the module (if not already done) and do the following:
node_modules/.bin/jsdoc lib
This will generate a file called out
. Double click on the file out/index.html
to view the JSDoc.
npm
install this moduleTo npm
install this module in standalone mode, do the following:
npm install --registry https://nexus.scytl.net/content/groups/public-npm/ scytl-cryptopolicy
To npm
install this module as a dependency of your own module, do the following:
Add the following line to the dependencies
section of your module's package.json
file.
"scytl-cryptopolicy": "^2.1.0",
Make sure that the .npmrc
file of your module contains the following line.
registry=https://nexus.scytl.net/content/groups/public-npm/
Install all dependencies.
npm install
The following example shows how to create an instance of the default cryptographic policy.
var cryptoPolicy = require('scytl-cryptopolicy');
var policy = cryptoPolicy.newInstance();
This is the default policy that is used by all of the cryptographic services, if no customized policy is provided to them when they are instantiated.
The configuration for the default cryptographic policy can be found in the file default-policy.json
The following example shows how to use one's own customized cryptographic policy to instantiate an asymmetric cryptography service. The policy is provided as a JSON object.
var cryptoPolicy = require('scytl-cryptopolicy');
var asymmetric = require('scytl-cryptopolicy');
// Create a customized policy (you can use the default cryptographic policy as a template for this).
var myPolicy = cryptoPolicy.newInstance(<policy as JSON object>);
// Instantiate an asymmetric cryptography service object, providing the customized policy as input.
var asymmetricService = asymmetrics.newService({policy: myPolicy});
// Perform asymmetric cryptographic operations with the service object ...
The following example shows how to create a customized cryptographic policy for the asymmetric cryptography service that uses the 'RSA' signer algorithm, the 'SHA-512/224' hash algorithm and the 'F4' public exponent for digital signature operations, but uses default values for the other asymmetric cryptographic operations.
var cryptoPolicy = require('scytl-cryptopolicy');
var asymmetric = require('scytl-cryptopolicy');
// Create a new instance of the default cryptographic policy.
var myPolicy = cryptoPolicy.newInstance();
// Update the policy for use with digital signature operations.
myPolicy.asymmetric.signer = {
algorithm: cryptoPolicy.options.asymmetric.signer.algorithm.RSA,
hashAlgorithm: cryptoPolicy.options.asymmetric.signer.hashAlgorithm.SHA512_224,
publicExponent: cryptoPolicy.options.asymmetric.signer.publicExponent.F4
};
// Instantiate an asymmetric cryptography service object, providing the customized policy as input.
var asymmetricService = asymmetric.newService({policy: myPolicy});
// Perform asymmetric cryptographic operations with the service object ...
As shown above, a policy is customized by overriding one or more of its default values with the options available via the options
property of the Policy
object. It is highly recommended to use this nomenclature, rather than hard coded values, to override the default values, in order to ensure that one is only using values that have been approved by the research and security department. An exception to this rule is for testing purposes. For example, if one is testing key pair generation, one can increase the test speed by lowering the key size to a value smaller than that allowed by the cryptographic policy, while still sufficiently testing the desired functionality.
The following example shows how to create a customized cryptographic policy for the asymmetric cryptography service that uses the 'SHA-512/224' hash algorithm for digital signature operations but uses default values for the rest of the policy.
```javascript var cryptoPolicy = require('scytl-cryptopolicy'); var asymmetric = require('scytl-cryptopolicy');
// Create a new instance of the default cryptographic policy. var myPolicy = cryptoPolicy.newInstance();
// Update the policy for use with digital signature operations. myPolicy.asymmetric.signer.hashAlgorithm = cryptoPolicy.options.asymmetric.signer.hashAlgorithm.SHA512_224;
// Instatiate an asymmetric cryptography service object, providing the customized policy as input. var asymmetricService = asymmetric.newService({policy: myPolicy});
// Perform asymmetric cryptographic operations with the service object ...