@verii/verifgen
v1.2.1
Published
A tool for creating verifiable credentials and verifiable presentations.
Downloads
1,644
Readme
verifgen
Generates credentials and presentations
Creating Credentials
Veifgen allows you to create self signed credentials.
Options
|flag|description| |---|---| |-o|specify output file| |-s|self sign| |-t|credential type to set|
Creating an identity credential (self signed)
$ node ./src/verifgen.js credential IdentityAndContact-Adam-Smith -o adamsmith-id -s
Creating an a regular credential (self signed)
$ node ./src/verifgen.js credential CurrentEmploymentPosition-2015-Programme-Manager -s -t CurrentEmploymentPosition -o adam-currentemployment
$ node ./src/verifgen.js credential Degree -s -t EducationDegree -o adam-educationdegree
Creating Presentations
Now that you have a set of credentials then you can create presentations for sending to an agent.
Options
| flag | description | |------|------------------------------------------------------------------------------------------------| | -o | specify output file | | -r | specify the presentation request or credential manifest containing the presentation definition | | -i | specify issuer persona (See "Using personas" section below) | | -p | specify x-vnf-protocol-version for presentation (issuer persona is required for v2) | | -c | specify all input credential files | | -v | specify a vendorOriginContext value |
Creating a identity presentation (for issuing)
$ node ./src/verifgen.js presentation -c adamsmith-id -r credential-manifest.json -o adam-id-presentation
Creating a credentials presentation with a vendor origin context(for a disclosure)
$ node ./src/verifgen.js presentation -r presentation-request.json -v eyj!143PRrs -c adamsmith-id adam-currentemployment adam-educationdegree -o adam-creds-presentation.v1
Future Dev
- Support organization signed credentials
Generating Keys
$ node ./src/verifgen.js keys --public-key-file pub.key.json --private-key-file prv.key.json
The key files are written as JSON Web Keys. The private key file contains a private JWK and must be stored securely.
Creating agent jwt token
$ node ./src/verifgen agent-jwt --secret 'cc7e0d44fd473002f1c42167459001140ec6389b7353f8088f4d9a95f2f596f2' --email [email protected] --groupId 123654
Verifgen proof command
This command is used to generate a proof JWT.
How to Use
verifgen proof [options] Options
| -c, --challenge Directly specify the challenge used in the JWT. If not provided, it will be loaded from the generate-offers response.
| -r, --response The filename containing the generate-offers response. Defaults to generate-offers-response.json.
| -a, --audience (required) Specifies the audience which must be present in the payload. (Usually the issuer url the proof is being generated for)
| -p, --persona (required) Specifies the persona private key used to sign the JWT. (See "Using personas" section below)
node ./src/verifgen proof -c someChallengeValue -a https://example.com/audience -p <persona>
Using "personas"
Whatever is passed in as the -p value, is what the documentation calls "a persona".
In practice, what this means, is that it will look for certain files that are expected to be present
for the persona to be used properly. The CLI first checks the current working directory, then falls back to the package data/ directory (in this repository, that directory lives at tools/verifgen/data/).
With a persona of johndoe, the following files would be expected.
A did document named
johndoe.did, with JSON contents like:{ "id":"did:jwk:..." }The important thing here is that the
idproperty is present, and represents the identity of the personaA private JWK in a file named
johndoe.prv.key.json, with JSON contents like:{ "kty": "...", "crv": "...", "d": "...", "x": "...", "y": "..." }This private key will be used to sign whatever JWTs are relevant to the CLI tool being used. So using
verifgen presentation, this key will be used to sign the presentation. And usingverifgen proof, this key will be used to sign the proof. And same goes for other instances where the-p <persona>option is specified.
