Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit a46dd7a

Browse files
authored
Apply suggestions from code review
1 parent 8dcf242 commit a46dd7a

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

config/versionedConfig.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ exports.buildPluginsConfig = [
5151
{
5252
label: '1.3',
5353
badges: ['IOTA', 'Shimmer'],
54-
}
54+
},
5555
],
5656
},
5757
{

docs/build/identity.rs/1.4/docs/how-tos/verifiable-credentials/zero-knowledge-selective-disclosure.mdx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,35 @@ import Tabs from '@theme/Tabs';
1313
import TabItem from '@theme/TabItem';
1414

1515
# Zero Knowledge Selective Disclosure (ZK-SD-VCs)
16+
1617
ZK-SD-VCs allow holders to verify their VCs without having to disclose the entire VC's claim set to verifiers.
1718
This is done through the creation of a Zero Knowledge Proof (ZKP) that guarantees the integrity and authenticity
1819
of the VC, even when only partially disclosed to the verifier.
1920

2021
:::note
22+
2123
Although ZK-SD-VCs offer similar functionalities to [SD-JWT VCs](../selective-disclosure) - at least on a high level - they rely on completely different
2224
concepts and security concerns. For a user, the most notable difference is the shifted capability of choosing which fields can
2325
be concealed from a verifier. For ZK-SD-VCs it's the holder that has total control over which parts of the credential can be
2426
undisclosed, whereas for SD-JWT VCs it's the issuer that decides which fields may be concealed by the holder.
27+
2528
:::
2629

2730
## Concepts
31+
2832
### Issuance
33+
2934
The issuer of a ZK-SD-VC creates the credential, signs it using the [BBS+](https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-05.html) signature scheme
3035
and sends both the credential and the signature to the holder. To facilitate this process, the credential is first encoded
3136
as a [JSON Proof Token](https://www.ietf.org/archive/id/draft-ietf-jose-json-proof-token-02.html) (JPT), which is then used as the payload of a
3237
[JSON Web Proof](https://www.ietf.org/archive/id/draft-ietf-jose-json-web-proof-02.html) (JWP) and sent to the holder as JPT.
38+
3339
:::note
40+
3441
JWPs and JPTs can be reasoned about as the Zero Knowledge (ZK) based counterparts of JWSs and JWTs.
42+
3543
:::
44+
3645
In code, this process would look like the following snippet:
3746
<Tabs groupId="language" queryString>
3847
<TabItem value="rust" label="Rust">
@@ -51,7 +60,6 @@ https://github.com/iotaledger/identity.rs/blob/v1.4.0/bindings/wasm/examples/src
5160
</TabItem>
5261
</Tabs>
5362

54-
5563
Note how the VC issuer makes no prescription whatsoever regarding the disclosability of the VC's fields.
5664

5765
### Holder presentation
@@ -62,7 +70,6 @@ to conceal any fields from the credentials claims through the creation of a Zero
6270
The proof value depends on the selected [JSON Proof Algorithm](https://www.ietf.org/archive/id/draft-ietf-jose-json-proof-algorithms-02.html) (JPA).
6371

6472
<Tabs groupId="language" queryString>
65-
6673
<TabItem value="rust" label="Rust">
6774

6875
```rust reference
@@ -114,7 +121,6 @@ The verifier decodes the received JPT presentation and asserts the validity of t
114121
authenticity and integrity of the presented credential, without knowledge of any of the undisclosed fields and of the issuer signature.
115122

116123
<Tabs groupId="language" queryString>
117-
118124
<TabItem value="rust" label="Rust">
119125

120126
```rust reference

0 commit comments

Comments
 (0)