This library generally follows the DAC-from-EQS paper where possible.
There are a few notable difference or absences from the paper:
-
Public Parameter Generators: In the paper, the Group 1 and Group 2 Generators are kept in the state variables. In our implementation, we have decided to use the convention as constants.
-
Public Paramters Verification Key: The Verification Key can become quite long if the credential has many Entries available to it. However, by usinga key derivation function (
kdf
, likeblastkids
library), we can compress this down to a single G1 and G2. DelanocredsIssuerPublic
has ato_compact
function which will compact a VK to just these 2 Group points, making the JSON or QR Code smaller.
In the end, this gives us four values to identify an Issuer
:
Value | Each Size (bytes) | Number |
---|---|---|
G1 Commits |
48 | Cardinality + 1 |
G2 Commits |
96 | Cardinality + 1 |
G1 Verification Key |
48 | MaxEntries |
G2 Verification Key |
96 | MaxEntries |
This is new technology, so there is no standard for encoding these values. So far, this is the only library offering a practical usabel solution. We have decided to use the following formats until we need to standardize:
-
When a credential is passed to a Nym for acceptance/use, it must be serialized and transmitted somehow. Possibly using a QR Code, URL Link, SMS Text message, email, chat, or anything else.
-
When the value is serialized to bytes, the values are CBOR bytes of the Object (for passing Credentials around).
This should allow users to import/export the bytes in a reasonably short and convenient manner.
- TODO: Presentation proof format.
- See JSON Web Proofs spec