Skip to content

proofcarryingdata/pod-issuer

Repository files navigation

POD Issuer

Description

This is an implementation of a POD issuer compatible with the Zupass passport client.

Dependencies

This server requires the Deno JavaScript runtime. The relevant JS/TS dependencies may be downloaded and patched by running the following command in the project root:

make

Running

This server may be started by running the following command in the project root:

deno task dev

Admin interface

The admin interface may be accessed by navigating to /addPOD in the browser and using the credentials in credentials.json. By default, it will be available at http://localhost:4000/addPOD. The administrator may then specify the entries of a POD that users may claim. After adding a POD, a ‘mint link’ (as well as a QR code corresponding to it) will be presented; the link/code would then be distributed to eligible users to ‘mint’ their PODs, i.e. claim PODs with the entries specified earlier together with their identity commitment in the owner field. PODs may be removed from the list of ‘mintable’ PODs at any time.

Configuration

The server may be configured via the credentials.json and serverConfig.json files. The former should be a JSON mapping usernames (strings) to passwords (strings), whereas the latter is a JSON containing the following configuration parameters:

  • hostname: The hostname to listen on (string).
  • port: The port to listen on (number).
  • mintUrl: The URL of this server. In production, this should be the internet-facing address.
  • zupassUrl: The URL of the Zupass passport client.
  • defaultPrivateKey: The default (Baby Jubjub) private key to sign PODs with. This should be a hex or base64 string.