You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"html": "The following process, or one generating the exact output, <em class=\"rfc2119\">MUST</em> be followed\nwhen producing a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistcredential\">BitstringStatusListCredential</a>.\nThe algorithm takes a list of <var>issued credentials</var> as input and either throws\nan error or returns a status list credential as output.",
9
+
"rationale": ".algorithm",
10
+
"steps": [
11
+
{
12
+
"html": "Let <var>issued credentials</var> be a list of all issued\n<a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential\">verifiable credentials</a>."
13
+
},
14
+
{
15
+
"html": "Let <var>statusListCredential</var> be an unsigned\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistcredential\">BitstringStatusListCredential</a>\nwithout the <code>encodedList</code> property set."
16
+
},
17
+
{
18
+
"html": "Generate a <var>compressed bitstring</var> by passing\n<var>issued credentials</var> to the\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstring-generation-algorithm\">Bitstring Generation Algorithm</a>."
19
+
},
20
+
{
21
+
"html": "Set the <code>encodedList</code> to <var>compressed bitstring</var>."
22
+
},
23
+
{
24
+
"html": "Generate a proof for the <var>statusListCredential</var> and publish it to the\nendpoint listed in the <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential\">verifiable credential</a>."
25
+
}
26
+
]
27
+
},
28
+
{
29
+
"html": "The following process, or one generating the exact output, <em class=\"rfc2119\">MUST</em> be followed\nwhen validating a <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential\">verifiable credential</a> that is contained in a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistcredential\">BitstringStatusListCredential</a>.\nThe algorithm takes a status list <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential\">verifiable credential</a> as input\nand either throws an error or returns a status list credential as output.",
30
+
"rationale": ".algorithm",
31
+
"steps": [
32
+
{
33
+
"html": "Let <var>credentialToValidate</var> be a <a data-link-type=\"dfn\" href=\"https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential\">verifiable credential</a>\ncontaining a <code>credentialStatus</code> entry that is a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistentry\">BitstringStatusListEntry</a>."
34
+
},
35
+
{
36
+
"html": "Let <var>minimumNumberOfEntries</var> be 131,072 unless a different lower bound is\nestablished by a specific ecosystem specification."
37
+
},
38
+
{
39
+
"html": "Let <var>status purpose</var> be the value of <code>statusPurpose</code>\nin the <code>credentialStatus</code> entry in the\n<var>credentialToValidate</var>."
40
+
},
41
+
{
42
+
"html": "Dereference the <code>statusListCredential</code> URL, and ensure that all\nproofs verify successfully. If the dereference fails, raise a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#STATUS_RETRIEVAL_ERROR\">STATUS_RETRIEVAL_ERROR</a>. If any of the\nproof verifications fail, raise a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#STATUS_VERIFICATION_ERROR\">STATUS_VERIFICATION_ERROR</a>."
43
+
},
44
+
{
45
+
"html": "Verify that the <var>status purpose</var> is equal to a <code>statusPurpose</code> value in the\n<var>statusListCredential</var>. Note: The <var>statusListCredential</var> might contain multiple\nstatus purposes in a single list. If the values are not\nequal, raise a\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#STATUS_VERIFICATION_ERROR\">STATUS_VERIFICATION_ERROR</a>."
46
+
},
47
+
{
48
+
"html": "Let <var>compressed bitstring</var> be the value of the\n<code>encodedList</code> property of the\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistcredential\">BitstringStatusListCredential</a>."
49
+
},
50
+
{
51
+
"html": "Let <var>credentialIndex</var> be the value of the\n<code>statusListIndex</code> property of the\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstringstatuslistentry\">BitstringStatusListEntry</a>."
52
+
},
53
+
{
54
+
"html": "Generate a <var>revocation bitstring</var> by passing\n<var>compressed bitstring</var> to the\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bitstring-expansion-algorithm\">Bitstring Expansion Algorithm</a>."
55
+
},
56
+
{
57
+
"html": "If the length of the <var>revocation bitstring</var> divided by\n<a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#statusSize\"><code>statusSize</code></a> is less than <var>minimumNumberOfEntries</var>,\nraise a <a href=\"https://www.w3.org/TR/vc-bitstring-status-list/#STATUS_LIST_LENGTH_ERROR\">STATUS_LIST_LENGTH_ERROR</a>."
58
+
},
59
+
{
60
+
"html": "Let <var>status</var> be the value in the <var>bitstring</var> at the position indicated\nby the <var>credentialIndex</var> multiplied by the <var>size</var>. If the <var>credentialIndex</var>\nmultiplied by the <var>size</var> is a value outside of the range of the <var>bitstring</var>, a\n<a href=\"https://www.w3.org/TR/vc-data-model-2.0/#RANGE_ERROR\">RANGE_ERROR</a> <em class=\"rfc2119\">MUST</em> be\nraised."
61
+
},
62
+
{
63
+
"html": "Let <var>result</var> be an empty <a data-link-type=\"dfn\" href=\"https://infra.spec.whatwg.org/#ordered-map\">map</a>."
64
+
},
65
+
{
66
+
"html": "Set the <code>status</code> key in <var>result</var> to <var>status</var>, and set the <code>purpose</code> key in\n<var>result</var> to the value of <code>statusPurpose</code>."
67
+
},
68
+
{
69
+
"html": "If <var>status</var> is <code>0</code>, set the <code>valid</code> key in <var>result</var> to <code>true</code>; otherwise, set it\nto <code>false</code>."
70
+
},
71
+
{
72
+
"html": "If the <code>statusPurpose</code> is <code>message</code>, set the <code>message</code> key in <var>result</var> to the\ncorresponding <code>message</code> of the <code>value</code> as indicated in the <code>statusMessages</code>\narray."
73
+
},
74
+
{
75
+
"html": "Return <var>result</var>."
76
+
}
77
+
]
78
+
},
79
+
{
80
+
"html": "The following process, or one generating the exact output, <em class=\"rfc2119\">MUST</em> be followed\nwhen generating a status list bitstring. The algorithm takes an\n<var>issuedCredentials</var> list as input and either throws an error or returns a\n<var>compressed bitstring</var> as output.",
81
+
"rationale": ".algorithm",
82
+
"steps": [
83
+
{
84
+
"html": "Let <var>bitstring</var> be a list of bits with a minimum size of 16KB,\nwhere each bit is initialized to 0 (zero)."
85
+
},
86
+
{
87
+
"html": "For each value in <code>bitstring</code>, if there is a\ncorresponding <code>statusListIndex</code> value in\na credential in <code>issuedCredentials</code>, set the value to the\nappropriate status. The position of the value is computed as <code>statusListIndex</code>\ntimes the <code>statusSize</code>."
88
+
},
89
+
{
90
+
"html": "Generate a <var>compressed bitstring</var> by using the GZIP\ncompression algorithm [<cite><a class=\"bibref\" data-link-type=\"biblio\" href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bib-rfc1952\" title=\"GZIP file format specification version 4.3\">RFC1952</a></cite>] on the <var>bitstring</var>\nand then <a href=\"https://www.w3.org/TR/cid-1.0/#multibase-0\">Multibase-encode</a> the result using base64url (with no padding)."
91
+
},
92
+
{
93
+
"html": "Return the <var>compressed bitstring</var>."
94
+
}
95
+
]
96
+
},
97
+
{
98
+
"html": "The following process, or one generating the exact output, <em class=\"rfc2119\">MUST</em> be followed\nwhen expanding a compressed status list bitstring. The algorithm takes a\n<var>compressed bitstring</var> as input and either throws an error or returns a\n<var>uncompressed bitstring</var> as output.",
99
+
"rationale": ".algorithm",
100
+
"steps": [
101
+
{
102
+
"html": "Let <var>compressed bitstring</var> be a compressed status list\nbitstring."
103
+
},
104
+
{
105
+
"html": "Generate an <var>uncompressed bitstring</var> by using the\n<a href=\"https://www.w3.org/TR/cid-1.0/#multibase-0\">Multibase-decode</a> algorithm on the\n<var>compressed bitstring</var> and then expanding the output using\nthe GZIP decompression algorithm [<cite><a class=\"bibref\" data-link-type=\"biblio\" href=\"https://www.w3.org/TR/vc-bitstring-status-list/#bib-rfc1952\" title=\"GZIP file format specification version 4.3\">RFC1952</a></cite>]."
106
+
},
107
+
{
108
+
"html": "Return the <var>uncompressed bitstring</var>."
0 commit comments