Skip to content

Commit 0ed0919

Browse files
David-Chadwickmsporny
authored andcommitted
Discuss delegation in a non-normative way.
1 parent a6cbe50 commit 0ed0919

File tree

2 files changed

+3531
-150
lines changed

2 files changed

+3531
-150
lines changed

index.html

Lines changed: 128 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -2017,16 +2017,58 @@ <h4>Subject is the Holder</h4>
20172017
<a>holder</a> and all contained <a>verifiable credentials</a> are about a
20182018
<a>subject</a> that can be identified to be the same as the <a>holder</a>.
20192019
</p>
2020+
<p>
2021+
If only the credentialSubject is allowed to insert a verifiable credential
2022+
into a verifiable presentation the issuer MAY insert the "subjectOnly" property
2023+
into the verifiable credential, as defined below.
2024+
2025+
<span class="issue">
2026+
This feature is at risk and is likely to be removed due to lack of consensus.
2027+
</span>
2028+
</p>
2029+
2030+
<section>
2031+
2032+
<h5> 'Subject Only' Property </h5>
2033+
2034+
<p>
2035+
The Subject Only property states that a verifiable credential MUST only be
2036+
encapsulated into a verifiable presentation whose proof was issued by the
2037+
credentialSubject. A verifiable presentation that contains a verifiable credential
2038+
containing the subjectOnly property whose proof creator is not
2039+
the credentialSubject is invalid.
2040+
</p>
2041+
2042+
<pre class="example nohighlight" title="Subject Only Property">
2043+
{
2044+
"id": "http://dmv.example.gov/credentials/3732",
2045+
"type": ["VerifiableCredential", "ProofOfAgeCredential"],
2046+
"issuer": "https://dmv.example.gov/issuers/14",
2047+
"issued": "2010-01-01T19:73:24Z",
2048+
"claim": {
2049+
"credentialSubject": "did:example:ebfeb1f712ebc6f1c276e12ec21",
2050+
"ageOver": 21
2051+
},
2052+
"SubjectOnly": "True",
2053+
"proof": { ..
2054+
"creator": "did:example:ebfeb1f712ebc6f1c276e12ec21",
2055+
... }
2056+
}
2057+
</pre>
2058+
2059+
</section>
2060+
20202061

20212062
</section>
20222063

20232064
<section>
2065+
20242066
<h4>Credential Uniquely Identifies a Subject</h4>
20252067

20262068
<p>
20272069
In this case, the <code>credentialSubject</code> property might contain
20282070
multiple properties that each provide an aspect of the identity of the
2029-
<a>subject</a>, and which together, unambiguously identifies the subject. Some
2071+
<a>subject</a>, and which together, unambiguously identify the subject. Some
20302072
use cases might not require the <a>holder</a> to be identified at all, such as
20312073
checking to see if a doctor (the <a>subject</a>) is board certified. Other use
20322074
cases might require the <a>verifier</a> to use out-of-band knowledge to
@@ -2061,162 +2103,30 @@ <h4>Credential Uniquely Identifies a Subject</h4>
20612103
address, and birth date of the individual.
20622104
</p>
20632105

2106+
20642107
</section>
20652108

20662109
<section>
2067-
<h4>Subject Passes the Verifiable Credential to a Holder</h4>
2068-
2110+
<h4>Subject Passes the Verifiable Credential to a Holder</h4>
20692111
<p>
2070-
<a>Verifiable credentials</a> are usually presented to <a>verifiers</a> by the
2071-
<a>subject</a>. In some cases, the <a>subject</a> might need to pass the whole
2072-
or part of a <a>verifiable credential</a> to another <a>holder</a>. The data
2073-
model allows for both cases, as outlined below.
2074-
</p>
2075-
2076-
<p>
2077-
If only the <a>subject</a> is allowed to present the
2078-
<a>verifiable credential</a> to a <a>verifier</a>, the <a>issuer</a> MUST
2079-
insert the <code>SubjectOnly</code> <code>termsOfUse</code> property into the
2080-
<a>verifiable credential</a>, as defined below. <span class="issue">
2081-
This feature is at risk and is likely to be removed due to lack of consensus.
2082-
</span>
2083-
</p>
2084-
2085-
<p>
2086-
If the <a>issuer</a> permits the <a>subject</a> to pass the whole or part of a
2087-
<a>verifiable credential</a> to a <a>holder</a> (for example, a patient might
2088-
pass a prescription <a>verifiable credential</a> to a relative for
2089-
presentation to a pharmacist for dispensing), the <a>subject</a> MUST issue a
2090-
<a>verifiable credential</a> to the <a>holder</a> containing the
2091-
<code>credentialSubject</code> properties being passed on, as described below.
2092-
<span class="issue">This feature is at risk and is likely to be removed and
2093-
replaced with another solution, possibly created by another Working Group
2094-
focusing on delegation of authority instead of delegation of attributes.
2095-
</span>
2096-
</p>
2097-
2098-
<section>
2099-
2100-
<h5> SubjectOnly Terms of Use </h5>
2101-
2102-
<p class="issue" data-number=204>
2103-
The group is currently debating the best security model for delegation. Readers
2104-
should treat this entire section as at-risk and currently under debate.
2105-
</p>
2106-
2107-
<p>
2108-
The <code>SubjectOnly</code> <code>termsOfUse</code> property states that a
2109-
<a>verifiable credential</a> MUST be presented to a <a>verifier</a> by the
2110-
<a>subject</a> only. If a <a>verifier</a> is presented with a
2111-
<a>verifiable credential</a> containing the <code>SubjectOnly</code>
2112-
<code>termsOfUse</code> property by anyone other than the <a>subject</a>, the
2113-
<a>verifier</a> MUST refuse to accept it.
2114-
</p>
2115-
2116-
<pre class="example nohighlight" title="Subject Only termsOfUse property by an Issuer">
2117-
{
2118-
"id": "http://example.edu/credentials/3732",
2119-
"type": ["VerifiableCredential", "UniversityDegreeCredential"],
2120-
"issuer": "https://example.edu/issuers/14",
2121-
"issued": "2010-01-01T19:73:24Z",
2122-
"credentialSubject": {
2123-
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
2124-
"degree": {
2125-
"type": "BachelorDegree",
2126-
"name": "Bachelor of Science in Mechanical Engineering"
2127-
}
2128-
},
2129-
<span class="highlight">"termsOfUse": [{
2130-
"type": "SubjectOnly",
2131-
}]
2132-
}</span>,
2133-
"proof": { ... }
2134-
}
2135-
</pre>
2136-
2137-
</section>
2138-
2139-
<section>
2140-
<h5> Passing on a Verifiable Credential </h5>
2141-
2142-
<p class="issue" data-number=204>
2143-
The group is currently debating the best security model for delegation. Readers
2144-
should treat this entire section as at-risk and currently under debate.
2145-
<p>
2146-
2147-
<p>
2148-
When a <a>subject</a> passes a <a>verifiable credential</a> to a
2149-
<a>holder</a>, the <a>subject</a> SHOULD issue a new
2150-
<a>verifiable credential</a> to the <a>holder</a> in which the:
2151-
2152-
<ul>
2153-
<li>
2154-
<a>Issuer</a> is the <a>subject</a>.
2155-
</li>
2156-
<li>
2157-
<a>Subject</a> is the <a>holder</a> to whom the <a>verifiable credential</a>
2158-
is being passed.
2159-
</li>
2160-
<li>
2161-
<code>credentialSubject</code> property contains the data being passed on.
2162-
</li>
2163-
</ul>
2112+
Normally verifiable credentials will be presented to verifiers by the
2113+
subject. However in some cases, the subject may need to pass the whole or
2114+
part of a verifiable credential to another holder. For example, a patient
2115+
(the subject) may be too ill to take a prescription (the verifiable credential)
2116+
to the pharmacist (the verifier), and so may ask a friend to take the
2117+
prescription for him/her in order to pick up the medication.
2118+
</p>
21642119

2165-
As well, the <a>holder</a> creates a <a>verifiable presentation</a> containing
2166-
these two <a>verifiable credentials</a>.
2120+
<p>
2121+
The data model allows for this, by the subject issuing a new verifiable
2122+
credential and giving it to the new holder, so that the holder can present
2123+
both verifiable credentials to the verifier. However, the content of this
2124+
second verifiable credential is likely to be application specific, and therefore
2125+
this specification does not standardise the contents of this second verifiable
2126+
credential. Nevertheless a non-normative example is given in Appendix A.2
21672127
</p>
2168-
2169-
<pre class="example nohighlight" title="An example of a holder presenting verifiable
2170-
credential properties that have been passed to it by the subject">
2171-
{
2172-
"id": "did:example:76e12ec21ebhyu1f712ebc6f1z2",
2173-
"type": ["VerifiablePresentation"],
2174-
"verifiableCredential": [{
2175-
"id": "http://example.gov/credentials/3732",
2176-
"type": ["VerifiableCredential", "PrescriptionCredential"],
2177-
"issuer": "https://example.edu",
2178-
"issued": "2010-01-01",
2179-
"credentialSubject": {
2180-
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
2181-
"prescription": {....}
2182-
},
2183-
"revocation": {
2184-
"id": "http://example.gov/revocations/738",
2185-
"type": "SimpleRevocationList2017"
2186-
},
2187-
"proof": {....}
2188-
},
2189-
{
2190-
"id": "https://example.com/VC/123456789",
2191-
"type": ["VerifiableCredential", "PrescriptionCredential"],
2192-
"issuer": "did:example:ebfeb1f712ebc6f1c276e12ec21",
2193-
"issued": "2010-01-03",
2194-
"credentialSubject": {
2195-
"id": "did:example:76e12ec21ebhyu1f712ebc6f1z2",
2196-
"prescription": {....}
2197-
},
2198-
"proof": {
2199-
"type": "RsaSignature2018",
2200-
"created": "2017-06-17T10:03:48Z",
2201-
"creator": "did:example:ebfeb1f712ebc6f1c276e12ec21/keys/234",
2202-
"nonce": "d61c4599-0cc2-4479-9efc-c63add3a43b2",
2203-
"signatureValue": "pYw8XNi1..Cky6Ed = "
2204-
}
2205-
}
2206-
],
2207-
"proof": [{
2208-
"type": "RsaSignature2018",
2209-
"created": "2017-06-18T21:19:10Z",
2210-
"creator": "did:example:76e12ec21ebhyu1f712ebc6f1z2/keys/2",
2211-
"nonce": "c0ae1c8e-c7e7-469f-b252-86e6a0e7387e",
2212-
"signatureValue": "BavEll0/I1..W3JT24 = "
2213-
}]
2214-
}
2215-
</pre>
2216-
2217-
2128+
22182129
</section>
2219-
</section>
22202130

22212131
<section>
22222132
<h4>Holder Acts on Behalf of the Subject</h4>
@@ -3961,7 +3871,75 @@ <h3>Device Theft and Impersonation</h3>
39613871
</ul>
39623872

39633873
</section>
3874+
<section>
3875+
<h2> Appendix A.2 Subject passes a verifiable credential to someone else</h2>
3876+
3877+
<em>This section is non-normative.</em>
3878+
3879+
<p>
3880+
When the subject passes a verifiable credential to another
3881+
holder, the subject may issue a new verifiable credential to the holder in which:
3882+
the issuer is the subject,
3883+
the subject is the holder to whom the verifiable credential is being passed,
3884+
and the claim contains the properties that are being passed on.
3885+
The holder may now create a verifiable presentation that contains these two
3886+
verifiable credentials, so that the verifier can verify that the subject gave
3887+
the original verifiable credential to the holder.
3888+
3889+
<pre class="example nohighlight" title="An example of a holder presenting
3890+
a verifiable credential that has been passed to it by the subject">
3891+
{
3892+
"id": "did:example:76e12ec21ebhyu1f712ebc6f1z2",
3893+
"type": ["VerifiablePresentation"],
3894+
"credential": [{
3895+
"id": "http://example.gov/credentials/3732",
3896+
"type": ["VerifiableCredential", "PrescriptionCredential"],
3897+
"issuer": "https://dmv.example.gov",
3898+
"issued": "2010-01-01",
3899+
"claim": {
3900+
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
3901+
"prescription": {....}
3902+
},
3903+
"revocation": {
3904+
"id": "http://example.gov/revocations/738",
3905+
"type": "SimpleRevocationList2017"
3906+
},
3907+
"proof": {....}
3908+
},
3909+
{
3910+
"id": "https://example.com/VC/123456789",
3911+
"type": ["VerifiableCredential", "PrescriptionCredential"],
3912+
"issuer": "did:example:ebfeb1f712ebc6f1c276e12ec21",
3913+
"issued": "2010-01-03",
3914+
"claim": {
3915+
"id": "did:example:76e12ec21ebhyu1f712ebc6f1z2",
3916+
"prescription": {....}
3917+
},
3918+
"proof": {
3919+
"type": "RsaSignature2018",
3920+
"created": "2017-06-17T10:03:48Z",
3921+
"creator": "did:example:ebfeb1f712ebc6f1c276e12ec21/keys/234",
3922+
"nonce": "d61c4599-0cc2-4479-9efc-c63add3a43b2",
3923+
"signatureValue": "pYw8XNi1..Cky6Ed = "
3924+
}
3925+
}
3926+
],
3927+
"proof": [{
3928+
"type": "RsaSignature2018",
3929+
"created": "2017-06-18T21:19:10Z",
3930+
"creator": "did:example:76e12ec21ebhyu1f712ebc6f1z2/keys/2",
3931+
"nonce": "c0ae1c8e-c7e7-469f-b252-86e6a0e7387e",
3932+
"signatureValue": "BavEll0/I1..W3JT24 = "
3933+
}]
3934+
}
3935+
</pre>
39643936

3937+
<p>
3938+
In the above example, a patient (the original subject) has passed a prescription
3939+
(the original verifiable credential) to a friend, and has issued a new verifiable
3940+
credential to the friend, in which the friend is the subject, the original subject is
3941+
the issuer, and the credential is a copy of the original prescription.
3942+
</p>
39653943
</body>
39663944
</html>
39673945

0 commit comments

Comments
 (0)