UNPKG

@sybil-center/zkc-preparator

Version:
105 lines (92 loc) 6.21 kB
# ZK Credentials Preparator Zero Knowledge Credentials (ZKC) Preparator is a library designed to assist developers in getting Zero Knowledge Credentials ready for use with Zero Knowledge Proof (ZKP) functions according to [ZKC protocol](https://www.craft.me/s/fP61xnwdZ9GZmg) (see `ZK Credential: Preparation` & `Transformation Graph`sections ). --- ## API ### Prepare ZK Credential ```typescript const zkCredential: ZKCredential = { isr: { id: { t: 1, k: "123456" } }, sch: 1, isd: new Date().getTime(), exd: new Date().getTime(), sbj: { id: { k: "2345678", t: 2, }, eth: "0x2...3", alias: "Test", } }; const transSchema: TransCredSchema = { isr: { id: { t: ["uint32-bytes", "bytes-uint32", "uint32-boolean"], k: ["utf8-bytes"] }, }, sch: ["uint32-bytes", "bytes-base16"], isd: ["uint64-bytes", "bytes-base32"], exd: ["uint64-bytes", "bytes-utf8"], sbj: { id: { t: ["uint32-bytes"], k: ["utf8-bytes", "bytes-base16"] }, alias: ["ascii-bytes", "bytes-uint128"], eth: ["utf8-bytes", "bytes-uint256"] } }; const preparator = new Preparator(); const [ isr_id_t, // boolean type isr_id_k, // Uint8Array sch, // string as base16 isd, // string as base32 exd, // string as utf8 sbj_id_t, // Uint8Array sbj_id_k, // string as base16 alias, // bigint eth // bigint ] = preparator.prepare(zkCredential, transSchema); ``` ### Extend transformation graph ```typescript const preparator = new Preparator(); preparator.extendGraph([{ // extend transformation nodes name: "newNode", isType: (value: any) => value === "hello ZKCredentials" }], [{ // extend transformation links inputType: "bytes", outputType: "bytes", name: "bytes.reverse", transform: (bytes: Uint8Array) => bytes.reverse() }]); ``` --- ## Match between `Transformation Graph` types (nodes) and `JS` types | Name | Description | JS Types | |-----------|-------------------------------------------------------------------------------------------------|---------------------------------------------------------------------| | utf8 | UTF-8 encoded string, according to https://datatracker.ietf.org/doc/html/rfc3629 | string | | base64 | Base64 encoded string, according to https://datatracker.ietf.org/doc/html/rfc3629 | string | | base32 | Base32 encoded string, according to https://datatracker.ietf.org/doc/html/rfc3629 | string | | base16 | Base16 encoded string, according to https://datatracker.ietf.org/doc/html/rfc3629 | string | | base64url | Base64url encoded string, according to https://datatracker.ietf.org/doc/html/rfc7515#appendix-C | string | | base58 | Base58 encoded string, according to https://en.bitcoin.it/wiki/Base58Check_encoding | string | | ascii | ACSII encoded string, according to https://datatracker.ietf.org/doc/html/rfc20 | string | | int16 | Integer 16 bits size | number or bigint as input type for link, only bigint as output type | | int32 | Integer 32 bits size | number or bigint as input type for link, only bigint as output type | | int64 | Integer 64 bits size | number or bigint as input type for link, only bigint as output type | | int128 | Integer 128 bits size | number or bigint as input type for link, only bigint as output type | | int256 | Integer 256 bits size | number or bigint as input type for link, only bigint as output type | | uint16 | Unsigned integer 16 bits size | number or bigint as input type for link, only bigint as output type | | uint32 | Unsigned integer 32 bits size | number or bigint as input type for link, only bigint as output type | | uint64 | Unsigned integer 64 bits size | number or bigint as input type for link, only bigint as output type | | uint128 | Unsigned integer 128 bits size | number or bigint as input type for link, only bigint as output type | | uint256 | Unsigned integer 256 bits size | number or bigint as input type for link, only bigint as output type | | uint | Unsigned integer withoout limits | number or bigint as input type for link, only bigint as output type | | float32 | Float according to IEEE 754 | number | | boolean | Boolean | boolean | | bytes | bytes array | Uint8Array |