Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Raise error when status list size does not meet minimum threshold. #115

Merged
merged 3 commits into from
Jan 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 28 additions & 9 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -245,17 +245,18 @@ <h3>Conceptual Framework</h3>
data format since, in the average case, large numbers of credentials will
remain unrevoked. This will ensure long sections of bits that are the same
value and thus highly compressible using run-length compression techniques
such as GZIP [[RFC1952]]. The default bitstring size is 16KB (131,072 entries),
and when only a handful of <a>verifiable credentials</a> are revoked, the
compressed bitstring size is reduced down to a few hundred bytes.
such as GZIP [[RFC1952]]. The default status list size is 131,072 entries,
equivalent to 16&nbsp;KB of single bit values. When only a handful of
<a>verifiable credentials</a> are revoked, GZIP compresses the bitstring
to a few hundred bytes.
</p>

<p>
Another benefit of using a bitstring is that it enables large numbers of
<a>verifiable credential</a> statuses to be placed in the same list.
This specification utilizes a minimum bitstring length of 131,072 (16KB). This
population size ensures an adequate amount of herd privacy in the average case.
If better herd privacy is required, the bitstring can be made to be larger.
<a>verifiable credential</a> statuses to be placed in the same list.
This specification uses a minimum list length of 131,072. This
size ensures an adequate amount of herd privacy in the average case.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The suggestion has been to replace "herd" with "group" everywhere as friendlier terminology.

Suggested change
size ensures an adequate amount of herd privacy in the average case.
size ensures an adequate amount of group privacy in the average case.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I was thinking the same thing while processing these PRs. I was going to raise an entirely separate PR to do the "herd" -> "group" renaming.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change raised in PR #121.

If better herd privacy is required, the bitstring can be made larger.
</p>

<figure id="bitstring">
Expand Down Expand Up @@ -746,6 +747,10 @@ <h3>Validate Algorithm</h3>
<a href="#bitstringstatuslistentry">BitstringStatusListEntry</a>.
</li>
<li>
Let |minimumNumberOfEntries| be 131,072 unless a different lower bound is
established by a specific ecosystem specification.
</li>
<li>
Let |status purpose| be the value of `statusPurpose`
in the `credentialStatus` entry in the
|credentialToValidate|.
Expand Down Expand Up @@ -779,15 +784,20 @@ <h3>Validate Algorithm</h3>
<a href="#bitstring-expansion-algorithm">Bitstring Expansion Algorithm</a>.
</li>
<li>
If the length of the |revocation bitstring| divided by
<a href="#statusSize">`statusSize`</a> is less than |minimumNumberOfEntries|,
raise a <a href="#STATUS_LIST_LENGTH_ERROR">STATUS_LIST_LENGTH_ERROR</a>
</li>
<li>
Let |status| be the value in the |bitstring| at the position indicated
by the |credentialIndex| multiplied by the |size|. If the |credentialIndex|
multiplied by the |size| is a value outside of the range of the |bitstring|, a
<a data-cite="VC-DATA-MODEL-2.0#RANGE_ERROR">RANGE_ERROR</a> MUST be
raised.
</li>
<li>
</li>
Let |result| be an empty [=map=].
</li>
<li>
Set the `status` key in |result| to |status|, and set the `purpose` key in
|result| to the value of `statusPurpose`.
Expand Down Expand Up @@ -929,7 +939,9 @@ <h3>Processing Errors</h3>
</ul>

<dl>
<dt id="STATUS_RETRIEVAL_ERROR">STATUS_RETRIEVAL_ERROR (-128)</dt>
<dt id="STATUS_RETRIEVAL_ERROR">
STATUS_RETRIEVAL_ERROR (-128)
</dt>
<dd>
Retrieval of the status list failed. See Section
<a href="#validate-algorithm"></a>.
Expand All @@ -939,6 +951,13 @@ <h3>Processing Errors</h3>
Validation of the status entry failed. See Section
<a href="#validate-algorithm"></a>.
</dd>
<dt id="STATUS_LIST_LENGTH_ERROR">
STATUS_LIST_LENGTH_ERROR (-130)
</dt>
<dd>
The status list length does not satisfy the minimum length required for
herd privacy. See Section <a href="#validate-algorithm"></a>.
</dd>
</dl>
</section>
</section>
Expand Down
Loading