From 153428fb73617658a3a9aab9f5d8e996fa1dc05f Mon Sep 17 00:00:00 2001 From: Markus Sabadello Date: Mon, 30 Mar 2020 16:48:08 +0200 Subject: [PATCH 01/14] Add initial content for DID Resolution. Co-Authored-By: Brent --- diagrams/binding-local.png | Bin 0 -> 17024 bytes diagrams/binding-remote.png | Bin 0 -> 17327 bytes index.html | 509 +++++++++++++++++++++++++++++++++++- terms.html | 23 +- 4 files changed, 514 insertions(+), 18 deletions(-) create mode 100644 diagrams/binding-local.png create mode 100644 diagrams/binding-remote.png diff --git a/diagrams/binding-local.png b/diagrams/binding-local.png new file mode 100644 index 0000000000000000000000000000000000000000..122f31aecd7b2973118ee66d6e1d0cf5f4f0cf2e GIT binary patch literal 17024 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 literal 0 HcmV?d00001 diff --git a/diagrams/binding-remote.png b/diagrams/binding-remote.png new file mode 100644 index 0000000000000000000000000000000000000000..ef26f164ced8beee7c5884ce9fb3c409e9b75613 GIT binary patch literal 17327 zcmb`uWmpwZ*DXp2NFyL3ASER&-Hj++n{Mgu4(aah5a~v`r9?^v+;n$$ZQ?Gz@4Vl+ z=ij-{bAN1d$BH?}9Am7x!WHGEFwuz6;NajeKYf%?hJ$;C0e)6{jtsuav^+b9gF_+n zRMl`+HgqGmceFFLur?ug_OLf0H*vQxg@bdStxUCYT<5|Fdfdb3MS#cgCJ7xcn*(|M=`Tn}o_yaji>Y??YVeayT2!F9Eeb^SBQZF-zU8#HJ?g&gjZpI$yq+K1 zvpdqf)Eht4lI@PmkrSk-inVaB4NO?*#dX^pzsWgjb4>mHBaYCNFy9Hgw7|$vCduPd zB9jcwI7J}m2i**hGOUKSN{xSIy#e9J=R|{Cv~2coKq7sjvch zNrM-1x8`#{hu-CQB#1y5PQq$eWE%j%#&$ILel}!c}cBfL&+QDK3&?# zN%NHDqP(|8>@>soRjon?g=lxp)Wh~Fm7;1*LMcA4$EXaZeWtmx3V z-+92U7>eZVNas7+;I{g{=}psG9Jj{q%M~bKOVb zd0EthglEAH;kPN=Zn-1(Y<90S9*OO48AfzNTOa*-J5uh0o9r|)2T=z{rxSxwCJc<1 z#ugX|@DCE$)RN+jH1lJU=0;YBf1Q6%uc^+VWU%IhXWUaly&g}4`>NJ!NiF$2N*y0V zvGT(DGoH9+5tE~JEbhej4$n%jl}C3x7FFE^REpVQkFIJpx9JV~87sL%hw9gRBV2Bm z#&|Nx7Oma(s*4J`q&`S$9hDW$w7AEOjj=m>8G3)PbeFezwG;G=zfuOZ}aUx*#z6);g5H`;7SjvLsh-{_)2A*(>xoq zUs3{HwI~<)?!|P6o2HM$E20b6Z&CN&lNc zsfEp3sFv0me1a3AG%Dv3grWt}vuX(RAf zY;T1x1L?&ur-@ziq+abI#!%f*XR@-zmTEV>Nde}&#PgK0_p!XEOtC2YY27AN&6zea z|BRGc5&M#xm9R}Vs7s{e&+`@(bg$S`tI%~_NPMdhnj0)LBpEAhXirAe$ArvCk=tY7 z*u;!HV>k-SC8o1{L~L6XA&Md|U8C^nbyPRSK59!LMDd!A@SCK4sqkg!pkhi|XI=Xg zBrV;~koP^ovEQ~Lj^oYEqX0(a0nb#0)heFcr(uG!B&tFSQKEaTL43F#FFRDU@^rNr zRucm60y4fAdtw@>y^{1AjJClfj(fGzWQ*S4JuOH=k;Y^^@xO+K!%eqgpMQ`|Afg>` zJj=FGX*Z(6wCHF1DQ#?1^6<-3@T@>Ix{K8@mVdB^B5Du%InNS_r9svqG@|p@g_DYH0b-K ziqh0$o=nt28!_#kj7SILD69Awmq5jTl0&N>-MPXmgtK=&wWl%)e_8jRVCNGkQIzBn z@8^H|*;_027b~>>Ac=>9-duAw=&OF?l)g=eVt!K?#tEB!ai#mk{9oW|tPiwp;=#5qSIXz0 zUyF}AwouMZk9n6KN$-{y#*G`K>VxAVZh^lqKb#jJrp#B5LQ(uv=hsP<{7?*PDK_LU z<}6_cPSM*JIu2i7{M6_i`WLibBTS)$OjC`&XPVu*k>$R7L5LT4BlVVywrkWM_2!fV zadX0fn@r)R>c}(t#z*k7^t36$9~9)M9i+z29Fk{r zmRUVxwNzQN8nH0cWLJ~`hhMMpe8XoUWQ_3f1^DBi3e2$dk_e|>>s1O7yhQi=b{D2- z0iYypJDKJ@Y9XUCU}=vuW$aVQu3(~3>?z}gpcoI+d&>RtjOhGnlwP*g|R{tgAjjaH)Nt3O*2$1WgDNh=)>H$uy~ za8c+`b#utsShzB~c;}G_FXZo@vJ)cNE-KJrv6FQb{-fF8VY{qI zESQIB-_OFW@V9+pwSgO0rqtrpIg~N)%0ApYR1BkSF^yS%8_>F1XTjKNNH(dOh@cFY zWE2g8d(D}o=D_6Xaa zwFj{;$iJg=>^0u|SkH~(kso8|SlIYAz>jz*=-FA-zRmL^Zf>@1@Mm_)RB6fSLZe%tCGP)z zp2Q1O!vDMkry$I=;_#aPs9l^2H{MP$tk?K-eP|L2m5~e^&t7PAtN%QRRr;I)D={O3 zh(cBp&N@s|$mTjm_yOnnM}}F_$a?@~Ts5 zZEgHixw?$xbB8q9EFLBBx3nggJ+(%=CFYkDeTJ(i?$XE@#vcRzXA%(~yG8zIaFYL* zQ+S5)pIJXwl0ZQIp9P_#gh%{eYl9<(AOFSw|K?*dRC`V;^Yi`F+0EFTw-rgSP=<^X zii&82?vBM9Z5PnG-xX*5&@{{LN5mEok&=>9di_o4$hSJlnQv6^YF?#Ahml}Sz3cYn zjx%3Z7Ibf8Zs~!GL9N1|CjjZ5RL0ATA6w`;&%0DCY`iiDI^fJF$4Kz?+qYmQ?Z)-$ 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 Documents
@@ -940,8 +1004,9 @@

Generic DID URL Parameters

Adding a DID parameter to a DID URL means that the parameter becomes part of an identifier for a resource (the DID document or other). Alternatively, the - DID resolution and the DID URL dereferencing processes can also be influenced - by passing options to a DID resolver that are not part of the DID URL. + DID resolution and the DID URL dereferencing processes can also + be influenced by passing input options to a DID resolver that are not + part of the DID URL (see Section ). Such options could for example control caching or the desired encoding of a resolution result. This is comparable to HTTP, where certain parameters could either be included in an HTTP URL, or alternatively passed as HTTP headers @@ -1076,9 +1141,9 @@

Fragment

document to identify a component of the document (for example, a unique public key description or service endpoint). DID fragment syntax and semantics are identical to a generic URI fragment and MUST conform - to RFC 3986, section 3.5. To resolve + to RFC 3986, section 3.5. To dereference a DID fragment reference, the complete DID URL including the - DID fragment MUST be used as input to the DID URL dereferencing + DID fragment MUST be used as input to the DID URL dereferencing algorithm for the target component in the DID document object. For more information, see [[?DID-RESOLUTION]].

@@ -2543,18 +2608,434 @@

Resolution

-

-A DID resolver is a software or hardware component with an API for -resolving DIDs of at least one DID method. It executes the read -operation for the DID method corresponding to the DID being -resolved to obtain the authoritative DID document. For more information, -see Section . +

+This section defines the interfaces (or the "contracts") of the DID resolution +and the DID URL dereferencing functions, including their inputs and results. +For information about architectures, see Section .

-

-The interfaces and algorithms for resolving DIDs and dereferencing -DID URLs are specified in [[?DID-RESOLUTION]]. -

+
+

+Resolving a DID +

+ +

+This section defines the inputs and results of the DID resolution function. +This function relies on the "Read" operation of the applicable DID method +(see Section ). +

+

+The abstract interface to this function is:

+

+ + resolve ( did, options ) --> ( did-document, did-document-metadata, did-resolution-metadata ) + +
+

+Inputs +

+ +

+The inputs of the DID resolution function are: +

+
    +
  1. +An input DID. +
  2. +
  3. +A set of input options (see Section ). +
  4. +
+

+The following rules apply to the above inputs: +

+
    +
  1. +The input DID is REQUIRED for the DID resolution function. +
  2. +
  3. +The input options are OPTIONAL for the DID resolution function. +
  4. +
  5. +The `method-name` component of the input DID is called the input DID method. +
  6. +
+ +
+ +
+

+Results +

+ +

+The results of the DID resolution function are: +

+
    +
  1. +The authoritative DID document associated with the input DID. +
  2. +
  3. +Optional DID document metadata (see Section ). +
  4. +
  5. +Optional DID resolution metadata (see Section ). +
  6. +
+ +

+Implementation details and a concrete algorithm for this function can be found +in [[DID-RESOLUTION]]. +

+ +
+ +
+ +
+

+Dereferencing a DID URL +

+ +

+This section defines the inputs and results of the DID URL dereferencing function. +This function relies on DID resolution (see Section ). +

+

+The abstract interface to this function is:

+

+ + dereference ( did-url, options ) --> ( content, did-document-metadata, did-resolution-metadata ) + +
+

+Inputs +

+ +

+The inputs of the DID URL dereferencing function are: +

+
    +
  1. +An input DID URL. +
  2. +
  3. +A set of input options (see Section ). +
  4. +
+

+The following rules apply to the above inputs: +

+
    +
  1. +The input DID URL is REQUIRED for the DID URL dereferencing function. +
  2. +
  3. +The input options are OPTIONAL for the DID URL dereferencing function. +
  4. +
  5. +The `did` component of the input DID URL is called the input DID. +
  6. +
  7. +The `method-name` component of the input DID is called the input DID method. +
  8. +
+ +
+ +
+

+Results +

+ +

+The results of the DID URL dereferencing function are: +

+
    +
  1. +A representation of the resource identified by the input DID URL, e.g.: + +
  2. +
  3. +Optional DID document metadata (see Section ). +
  4. +
  5. +Optional DID resolution metadata (see Section ). +
  6. +
+ +

+The following table lists example input DID URLs with the corresponding results +of the DID URL dereferencing function: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Example Input DID URL + +Example Result +
+did:example:1234 + +A DID document. +
+did:example:1234#key-1 + +A part of a DID document. +
+did:example:1234;service=agent + +A service endpoint URL selected from a DID document. +
+did:example:1234/path
+did:example:1234?query=value +did:example:1234/path?query=value
+
+Another resource as determined by the input DID method and/or DID controller. +
+ +

+Implementation details and a concrete algorithm for this function can be found +in [[DID-RESOLUTION]]. +

+ +
+ +
+ +
+

+Input Options +

+ +

+The DID resolution and DID URL dereferencing functions can +OPTIONALLY support input options that control how the functions are executed. +Input options are different from DID parameters (see Section +) insofar as they are not part of +the input DID or input DID URL syntax. +Input options can for example be used to control caching or content negotiation. +

+ +

+Input options are expressed as a map of name-value string pairs. +

+

+Input options MAY be method-independent or method-specific. +

+

+The concrete representation of input options MUST be defined by the applicable binding of +the DID resolution or DID URL dereferencing function. +

+ +

+For example, a concrete binding of the DID resolution or DID URL +dereferencing function might define how input options are represented in the form +of headers of a network protocol. +

+ +

+This specification defines a single concrete input option: +

+
    +
  • +The accept input option can be used to indicate the requested +MIME type of the representation of the resource that is returned by the DID resolution +or DID URL dereferencing function. +
      +
    • +This input option is OPTIONAL. +
    • +
    • +If this input option is supplied to the DID resolution function, +or if it is supplied to the DID URL dereferencing function and the result is expected +to be a DID document, then the value of this input option SHOULD be a +MIME type associated with a compliant representation of the abstract data model for +DID documents (see Section ). +
    • +
    +
  • +
+ +

+A DID resolver MAY support additional input options. +

+ +
+ +
+

+Metadata +

+ +

+The DID resolution and DID URL dereferencing functions can OPTIONALLY +return DID document metadata as well as DID resolution metadata. +

+

+These sets of metadata are expressed as maps of name-value string pairs, referred +to as metadata properties. +

+

+Metadata properties MAY be method-independent or method-specific. +

+

+The concrete representation of metadata MAY be defined by the applicable binding of +the DID resolution or DID URL dereferencing function. It MAY +also be defined by a compliant representation of the abstract data model for DID +documents (see Section ). +

+ +

+For example, a concrete binding of the DID resolution or DID URL +dereferencing function might define how metadata is represented in the form +of headers of a network protocol. Or, a compliant representation of the abstract +data model for DID documents might define a special section of a document +structure that can contain metadata. +

+ +
+

+DID Document Metadata +

+ +

+DID document metadata contains information about the input +DID and its associated DID document. This metadata typically +does not change between multiple DID resolution processes, for example: +

+
    +
  1. +Timestamps when the DID and DID document were created or last updated (see +Sections and ). +
  2. +
  3. +A version identifier of the DID document. +
  4. +
  5. +One or more DID controller(s) (see ). +
  6. +
  7. +Information related to authorization, delegation, capabilities (see ). +
  8. +
  9. +Proofs added by a DID controller and/or the DID registry, e.g. to establish +control authority (see ). +
  10. +
+ +

+The authoritative sources of this metadata are the DID controller and/or the DID registry. +

+ +

+The following sections should be moved here: , , . +These properties are not part of the abstract data model for DID documents, but rather constitute DID document metadata. +

+ +
+ +
+

+DID Resolution Metadata +

+ +

+DID resolution metadata contains information about the resolution process. +This metadata is typically different between multiple DID resolution +processes, for example: +

+
    +
  1. +A timestamp when the input DID was resolved. +
  2. +
  3. +Duration of the DID resolution or DID URL dereferencing process. +
  4. +
  5. +Flags that indicate whether caching was used during resolution. +
  6. +
  7. +Information about third-party services that were used for resolution. +
  8. +
  9. +Version and other information of the DID resolver software and/or hardware. +
  10. +
  11. +Proofs added by a DID resolver, e.g. to establish trusted resolution. +
  12. +
+ +

+The authoritative source of this metadata is the DID resolver. +

+ +

+This specification defines a single concrete metadata property for DID resolution metadata: +

+
    +
  • +The content-type metadata property indicates the MIME type +of the representation of the resource that is returned by the DID resolution +or DID URL dereferencing function. +
      +
    • +This metadata property is OPTIONAL. +
    • +
    • +If the result of the DID resolution function or the DID URL dereferencing +function and the resource is a DID document, then the value of this +metadata property SHOULD be a MIME type associated with a compliant +representation of the abstract data model for DID documents (see Section +). +
    • +
    +
  • +
+ +
+ +
diff --git a/terms.html b/terms.html index ee418f5f..f852c51c 100644 --- a/terms.html +++ b/terms.html @@ -123,12 +123,19 @@ verifiable data registry. For more information, see [[VC-DATA-MODEL]]. -
DID resolver
+
DID resolution
-A system that is capable of retrieving a DID document for a given -DID. These systems are specified in the DID Resolution specification -[[DID-RESOLUTION]]. +A function that takes a DID plus additional options as input and returns a DID document, +plus optional metadata, as output. This function relies on the "Read" operation of the applicable +DID method. +
+ +
DID resolver
+ +
+Software and/or hardware that is capable of executing the DID resolution and +optionally the DID URL dereferencing functions for at least one DID method.
DID scheme
@@ -154,6 +161,14 @@ by a DID fragment. +
DID URL dereferencing
+ +
+A function that takes a DID URL plus additional options as input and returns a DID document, +a part of a DID document, a service endpoint URL, or another resource, plus optional metadata, as output. +This function relies on DID resolution. +
+
distributed ledger (DLT)
From 1e352bbdfad86276f30fcf992aed862796602f79 Mon Sep 17 00:00:00 2001 From: Markus Sabadello Date: Thu, 2 Apr 2020 16:29:49 +0200 Subject: [PATCH 02/14] Apply suggestions by @brentzundel. Co-Authored-By: Brent --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index c80a6349..40f3a57b 100644 --- a/index.html +++ b/index.html @@ -2685,7 +2685,7 @@

Implementation details and a concrete algorithm for this function can be found -in [[DID-RESOLUTION]]. +in [[?DID-RESOLUTION]].

@@ -2836,7 +2836,7 @@

Implementation details and a concrete algorithm for this function can be found -in [[DID-RESOLUTION]]. +in [[?DID-RESOLUTION]].

From 7ae96d47c869645778d74ad4a642017ab58df9a6 Mon Sep 17 00:00:00 2001 From: Markus Sabadello Date: Sat, 4 Apr 2020 13:26:52 +0200 Subject: [PATCH 03/14] Rename "input options" to "resolver options". --- index.html | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/index.html b/index.html index 40f3a57b..8dbae48e 100644 --- a/index.html +++ b/index.html @@ -1005,8 +1005,8 @@

Generic DID URL Parameters

Adding a DID parameter to a DID URL means that the parameter becomes part of an identifier for a resource (the DID document or other). Alternatively, the DID resolution and the DID URL dereferencing processes can also - be influenced by passing input options to a DID resolver that are not - part of the DID URL (see Section ). + be influenced by passing resolver options to a DID resolver that are not + part of the DID URL (see Section ). Such options could for example control caching or the desired encoding of a resolution result. This is comparable to HTTP, where certain parameters could either be included in an HTTP URL, or alternatively passed as HTTP headers @@ -2643,7 +2643,7 @@

An input DID.
  • -A set of input options (see Section ). +A set of resolver options (see Section ).
  • @@ -2654,7 +2654,7 @@

    The input DID is REQUIRED for the DID resolution function.
  • -The input options are OPTIONAL for the DID resolution function. +The resolver options are OPTIONAL for the DID resolution function.
  • The `method-name` component of the input DID is called the input DID method. @@ -2720,7 +2720,7 @@

    An input DID URL.

  • -A set of input options (see Section ). +A set of resolver options (see Section ).
  • @@ -2731,7 +2731,7 @@

    The input DID URL is REQUIRED for the DID URL dereferencing function.
  • -The input options are OPTIONAL for the DID URL dereferencing function. +The resolver options are OPTIONAL for the DID URL dereferencing function.
  • The `did` component of the input DID URL is called the input DID. @@ -2845,51 +2845,51 @@

    -Input Options +Resolver Options

    The DID resolution and DID URL dereferencing functions can -OPTIONALLY support input options that control how the functions are executed. -Input options are different from DID parameters (see Section +OPTIONALLY support resolver options that control how the functions are executed. +Resolver options are different from DID parameters (see Section ) insofar as they are not part of the input DID or input DID URL syntax. -Input options can for example be used to control caching or content negotiation. +Resolver options can for example be used to control caching or content negotiation.

    -Input options are expressed as a map of name-value string pairs. +Resolver options are expressed as a map of name-value string pairs.

    -Input options MAY be method-independent or method-specific. +Resolver options MAY be method-independent or method-specific.

    -The concrete representation of input options MUST be defined by the applicable binding of +The concrete representation of resolver options MUST be defined by the applicable binding of the DID resolution or DID URL dereferencing function.

    For example, a concrete binding of the DID resolution or DID URL -dereferencing function might define how input options are represented in the form +dereferencing function might define how resolver options are represented in the form of headers of a network protocol.

    -This specification defines a single concrete input option: +This specification defines a single concrete resolver option:

    • -The accept input option can be used to indicate the requested +The accept resolver option can be used to indicate the requested MIME type of the representation of the resource that is returned by the DID resolution or DID URL dereferencing function.
      • -This input option is OPTIONAL. +This resolver option is OPTIONAL.
      • -If this input option is supplied to the DID resolution function, +If this resolver option is supplied to the DID resolution function, or if it is supplied to the DID URL dereferencing function and the result is expected -to be a DID document, then the value of this input option SHOULD be a +to be a DID document, then the value of this resolver option SHOULD be a MIME type associated with a compliant representation of the abstract data model for DID documents (see Section ).
      • @@ -2898,7 +2898,7 @@

      -A DID resolver MAY support additional input options. +A DID resolver MAY support additional resolver options.

    From e36700c436abb752747f84038e4112f61bbfd71a Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Mon, 6 Apr 2020 10:59:04 -0400 Subject: [PATCH 04/14] Make structures required, specify formats. --- index.html | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/index.html b/index.html index 8dbae48e..7d4c1dd6 100644 --- a/index.html +++ b/index.html @@ -2643,7 +2643,7 @@

    An input DID.

  • -A set of resolver options (see Section ). +A set of resolver options (see Section ). This component MAY be empty.
  • @@ -2676,10 +2676,10 @@

    The authoritative DID document associated with the input DID.
  • -Optional DID document metadata (see Section ). +DID document metadata (see Section ). This component MAY be empty.
  • -Optional DID resolution metadata (see Section ). +DID resolution metadata (see Section ).
  • @@ -2720,7 +2720,7 @@

    An input DID URL.
  • -A set of resolver options (see Section ). +A set of resolver options (see Section ). This component MAY be empty.
  • @@ -2770,10 +2770,10 @@

  • -Optional DID document metadata (see Section ). +DID document metadata (see Section ), if a DID document or a part of a DID document is returned. This component MAY be empty.
  • -Optional DID resolution metadata (see Section ). +DID resolution metadata (see Section ).
  • @@ -2861,7 +2861,7 @@

    Resolver options are expressed as a map of name-value string pairs.

    -Resolver options MAY be method-independent or method-specific. +Common fields are included here. Additional resolver options MAY be method-independent or method-specific.

    The concrete representation of resolver options MUST be defined by the applicable binding of @@ -2889,7 +2889,7 @@

  • If this resolver option is supplied to the DID resolution function, or if it is supplied to the DID URL dereferencing function and the result is expected -to be a DID document, then the value of this resolver option SHOULD be a +to be a DID document, then the value of this resolver option MUST be a MIME type associated with a compliant representation of the abstract data model for DID documents (see Section ).
  • @@ -2909,21 +2909,23 @@

    -The DID resolution and DID URL dereferencing functions can OPTIONALLY +In addition to DID documents, the DID resolution and DID URL dereferencing functions return DID document metadata as well as DID resolution metadata.

    These sets of metadata are expressed as maps of name-value string pairs, referred -to as metadata properties. +to as metadata properties. The keys of the map are unique and MUST NOT +be repeated.

    -Metadata properties MAY be method-independent or method-specific. +Common fields are included here. Additional metadata properties MAY be +method-independent or method-specific.

    -The concrete representation of metadata MAY be defined by the applicable binding of -the DID resolution or DID URL dereferencing function. It MAY -also be defined by a compliant representation of the abstract data model for DID -documents (see Section ). +While the concrete representation of metadata MAY be defined by the applicable binding of +the DID resolution or DID URL dereferencing function, the metadata +MUST be made available to the caller of the DID resolution or DID URL dereferencing +function as a map of associated plain string keys and values.

    @@ -2931,7 +2933,9 @@

    dereferencing function might define how metadata is represented in the form of headers of a network protocol. Or, a compliant representation of the abstract data model for DID documents might define a special section of a document -structure that can contain metadata. +structure that can contain metadata. In both cases, the DID resolver has to parse +whatever the representation is and make the metadata available as a map of associated +plain string keys and values.

    @@ -3020,12 +3024,12 @@

    or DID URL dereferencing function.
    • -This metadata property is OPTIONAL. +This metadata property is REQUIRED.
    • If the result of the DID resolution function or the DID URL dereferencing function and the resource is a DID document, then the value of this -metadata property SHOULD be a MIME type associated with a compliant +metadata property MUST be a MIME type associated with a compliant representation of the abstract data model for DID documents (see Section ).
    • From a27d4d448b1fb8da7f5d77ebab5f5e316fb32959 Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Fri, 1 May 2020 10:22:02 -0400 Subject: [PATCH 05/14] Prepare repo for @jricher's rewrite of DID Resolution. --- index.html | 513 ++--------------------------------------------------- 1 file changed, 14 insertions(+), 499 deletions(-) diff --git a/index.html b/index.html index 7d4c1dd6..fdb620e1 100644 --- a/index.html +++ b/index.html @@ -631,70 +631,6 @@

      DID Documents

      DID Resolvers and DID Resolution

      - -

      -A DID resolver is a software and/or hardware component that is capable -of executing the DID resolution and optionally the DID URL dereferencing -functions for at least one DID method. -

      -

      -DID resolution is the process of obtaining a DID document for a given DID. -

      -

      -Building on top of DID resolution, DID URL dereferencing is the process of retrieving a -representation of a resource for a given DID URL. -

      -

      -DID resolution and DID URL dereferencing are defined as abstract functions -(see Section and Section ). -

      -

      -These abstract functions are implemented by DID resolvers. A DID resolver is invoked -by a client via a binding. Bindings define how the abstract functions are realized -using concrete programming or communication interfaces. It is possible to distinguish between -local bindings and remote bindings. -

      -
      -
      binding
      -
      A concrete mechanism through which a client invokes a DID resolver. This could be a local binding such as a local command line tool or library API, or a remote binding such as an HTTP(S) binding.
      -
      -
      -
      client
      -
      Software and/or hardware that invokes a DID resolver in order to execute the DID resolution and/or DID URL dereferencing functions. This invocation is done via a binding. The term client does not imply any specific network topology.
      -
      -
      -
      local binding
      -
      A binding where the client invokes a DID resolver that runs on the same network host, e.g. via a local command line tool or library API. - In this case, the DID resolver is sometimes also called a "local DID resolver". -
      -
      -
      remote binding
      -
      A binding where the client invokes a DID resolver that runs on a different network host, e.g. via an HTTP(S) binding. - In this case, the DID resolver is sometimes also called a "remote DID resolver". -
      -

      -

      - Diagram showing a DID Resolver with a 'local binding'. -
      -A local binding for a DID resolver. -
      -
      -
      - Diagram showing a DID resolver with a 'remote binding'. -
      -A remote binding for a DID resolver. -
      -
      -

      - -

      -Additional considerations about architectures of the DID resolution and DID URL -dereferencing functions, including concepts such as "proxied resolution" or "client-side -dereferencing", can be found in [[?DID-RESOLUTION]]. -

      -
      @@ -1004,9 +940,8 @@

      Generic DID URL Parameters

      Adding a DID parameter to a DID URL means that the parameter becomes part of an identifier for a resource (the DID document or other). Alternatively, the - DID resolution and the DID URL dereferencing processes can also - be influenced by passing resolver options to a DID resolver that are not - part of the DID URL (see Section ). + DID resolution and the DID URL dereferencing processes can also be influenced + by passing options to a DID resolver that are not part of the DID URL. Such options could for example control caching or the desired encoding of a resolution result. This is comparable to HTTP, where certain parameters could either be included in an HTTP URL, or alternatively passed as HTTP headers @@ -1141,9 +1076,9 @@

      Fragment

      document to identify a component of the document (for example, a unique public key description or service endpoint). DID fragment syntax and semantics are identical to a generic URI fragment and MUST conform - to RFC 3986, section 3.5. To dereference + to RFC 3986, section 3.5. To resolve a DID fragment reference, the complete DID URL including the - DID fragment MUST be used as input to the DID URL dereferencing + DID fragment MUST be used as input to the DID URL dereferencing algorithm for the target component in the DID document object. For more information, see [[?DID-RESOLUTION]].

      @@ -2608,438 +2543,18 @@

      Resolution

      -

      -This section defines the interfaces (or the "contracts") of the DID resolution -and the DID URL dereferencing functions, including their inputs and results. -For information about architectures, see Section . +

      +A DID resolver is a software or hardware component with an API for +resolving DIDs of at least one DID method. It executes the read +operation for the DID method corresponding to the DID being +resolved to obtain the authoritative DID document. For more information, +see Section .

      -
      -

      -Resolving a DID -

      - -

      -This section defines the inputs and results of the DID resolution function. -This function relies on the "Read" operation of the applicable DID method -(see Section ). -

      -

      -The abstract interface to this function is:

      -

      - - resolve ( did, options ) --> ( did-document, did-document-metadata, did-resolution-metadata ) - -
      -

      -Inputs -

      - -

      -The inputs of the DID resolution function are: -

      -
        -
      1. -An input DID. -
      2. -
      3. -A set of resolver options (see Section ). This component MAY be empty. -
      4. -
      -

      -The following rules apply to the above inputs: -

      -
        -
      1. -The input DID is REQUIRED for the DID resolution function. -
      2. -
      3. -The resolver options are OPTIONAL for the DID resolution function. -
      4. -
      5. -The `method-name` component of the input DID is called the input DID method. -
      6. -
      - -
      - -
      -

      -Results -

      - -

      -The results of the DID resolution function are: -

      -
        -
      1. -The authoritative DID document associated with the input DID. -
      2. -
      3. -DID document metadata (see Section ). This component MAY be empty. -
      4. -
      5. -DID resolution metadata (see Section ). -
      6. -
      - -

      -Implementation details and a concrete algorithm for this function can be found -in [[?DID-RESOLUTION]]. -

      - -
      - -
      - -
      -

      -Dereferencing a DID URL -

      - -

      -This section defines the inputs and results of the DID URL dereferencing function. -This function relies on DID resolution (see Section ). -

      -

      -The abstract interface to this function is:

      -

      - - dereference ( did-url, options ) --> ( content, did-document-metadata, did-resolution-metadata ) - -
      -

      -Inputs -

      - -

      -The inputs of the DID URL dereferencing function are: -

      -
        -
      1. -An input DID URL. -
      2. -
      3. -A set of resolver options (see Section ). This component MAY be empty. -
      4. -
      -

      -The following rules apply to the above inputs: -

      -
        -
      1. -The input DID URL is REQUIRED for the DID URL dereferencing function. -
      2. -
      3. -The resolver options are OPTIONAL for the DID URL dereferencing function. -
      4. -
      5. -The `did` component of the input DID URL is called the input DID. -
      6. -
      7. -The `method-name` component of the input DID is called the input DID method. -
      8. -
      - -
      - -
      -

      -Results -

      - -

      -The results of the DID URL dereferencing function are: -

      -
        -
      1. -A representation of the resource identified by the input DID URL, e.g.: - -
      2. -
      3. -DID document metadata (see Section ), if a DID document or a part of a DID document is returned. This component MAY be empty. -
      4. -
      5. -DID resolution metadata (see Section ). -
      6. -
      - -

      -The following table lists example input DID URLs with the corresponding results -of the DID URL dereferencing function: -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -Example Input DID URL - -Example Result -
      -did:example:1234 - -A DID document. -
      -did:example:1234#key-1 - -A part of a DID document. -
      -did:example:1234;service=agent - -A service endpoint URL selected from a DID document. -
      -did:example:1234/path
      -did:example:1234?query=value -did:example:1234/path?query=value
      -
      -Another resource as determined by the input DID method and/or DID controller. -
      - -

      -Implementation details and a concrete algorithm for this function can be found -in [[?DID-RESOLUTION]]. -

      - -
      - -
      - -
      -

      -Resolver Options -

      - -

      -The DID resolution and DID URL dereferencing functions can -OPTIONALLY support resolver options that control how the functions are executed. -Resolver options are different from DID parameters (see Section -) insofar as they are not part of -the input DID or input DID URL syntax. -Resolver options can for example be used to control caching or content negotiation. -

      - -

      -Resolver options are expressed as a map of name-value string pairs. -

      -

      -Common fields are included here. Additional resolver options MAY be method-independent or method-specific. -

      -

      -The concrete representation of resolver options MUST be defined by the applicable binding of -the DID resolution or DID URL dereferencing function. -

      - -

      -For example, a concrete binding of the DID resolution or DID URL -dereferencing function might define how resolver options are represented in the form -of headers of a network protocol. -

      - -

      -This specification defines a single concrete resolver option: -

      -
        -
      • -The accept resolver option can be used to indicate the requested -MIME type of the representation of the resource that is returned by the DID resolution -or DID URL dereferencing function. -
          -
        • -This resolver option is OPTIONAL. -
        • -
        • -If this resolver option is supplied to the DID resolution function, -or if it is supplied to the DID URL dereferencing function and the result is expected -to be a DID document, then the value of this resolver option MUST be a -MIME type associated with a compliant representation of the abstract data model for -DID documents (see Section ). -
        • -
        -
      • -
      - -

      -A DID resolver MAY support additional resolver options. -

      - -
      - -
      -

      -Metadata -

      - -

      -In addition to DID documents, the DID resolution and DID URL dereferencing functions -return DID document metadata as well as DID resolution metadata. -

      -

      -These sets of metadata are expressed as maps of name-value string pairs, referred -to as metadata properties. The keys of the map are unique and MUST NOT -be repeated. -

      -

      -Common fields are included here. Additional metadata properties MAY be -method-independent or method-specific. -

      -

      -While the concrete representation of metadata MAY be defined by the applicable binding of -the DID resolution or DID URL dereferencing function, the metadata -MUST be made available to the caller of the DID resolution or DID URL dereferencing -function as a map of associated plain string keys and values. -

      - -

      -For example, a concrete binding of the DID resolution or DID URL -dereferencing function might define how metadata is represented in the form -of headers of a network protocol. Or, a compliant representation of the abstract -data model for DID documents might define a special section of a document -structure that can contain metadata. In both cases, the DID resolver has to parse -whatever the representation is and make the metadata available as a map of associated -plain string keys and values. -

      - -
      -

      -DID Document Metadata -

      - -

      -DID document metadata contains information about the input -DID and its associated DID document. This metadata typically -does not change between multiple DID resolution processes, for example: -

      -
        -
      1. -Timestamps when the DID and DID document were created or last updated (see -Sections and ). -
      2. -
      3. -A version identifier of the DID document. -
      4. -
      5. -One or more DID controller(s) (see ). -
      6. -
      7. -Information related to authorization, delegation, capabilities (see ). -
      8. -
      9. -Proofs added by a DID controller and/or the DID registry, e.g. to establish -control authority (see ). -
      10. -
      - -

      -The authoritative sources of this metadata are the DID controller and/or the DID registry. -

      - -

      -The following sections should be moved here: , , . -These properties are not part of the abstract data model for DID documents, but rather constitute DID document metadata. -

      - -
      - -
      -

      -DID Resolution Metadata -

      - -

      -DID resolution metadata contains information about the resolution process. -This metadata is typically different between multiple DID resolution -processes, for example: -

      -
        -
      1. -A timestamp when the input DID was resolved. -
      2. -
      3. -Duration of the DID resolution or DID URL dereferencing process. -
      4. -
      5. -Flags that indicate whether caching was used during resolution. -
      6. -
      7. -Information about third-party services that were used for resolution. -
      8. -
      9. -Version and other information of the DID resolver software and/or hardware. -
      10. -
      11. -Proofs added by a DID resolver, e.g. to establish trusted resolution. -
      12. -
      - -

      -The authoritative source of this metadata is the DID resolver. -

      - -

      -This specification defines a single concrete metadata property for DID resolution metadata: -

      -
        -
      • -The content-type metadata property indicates the MIME type -of the representation of the resource that is returned by the DID resolution -or DID URL dereferencing function. -
          -
        • -This metadata property is REQUIRED. -
        • -
        • -If the result of the DID resolution function or the DID URL dereferencing -function and the resource is a DID document, then the value of this -metadata property MUST be a MIME type associated with a compliant -representation of the abstract data model for DID documents (see Section -). -
        • -
        -
      • -
      - -
      - -
      +

      +The interfaces and algorithms for resolving DIDs and dereferencing +DID URLs are specified in [[DID-RESOLUTION]]. +

      From 1b944daeb11761eed42bd3330d3d80b5fac766b9 Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Wed, 8 Apr 2020 17:04:16 -0400 Subject: [PATCH 06/14] Add DID Resolution and Dereferencing to Architecture section. --- index.html | 145 ++++++++++++++++++++++++++++++++++++----------------- terms.html | 31 ++++++++++++ 2 files changed, 130 insertions(+), 46 deletions(-) diff --git a/index.html b/index.html index fdb620e1..9dc154b7 100644 --- a/index.html +++ b/index.html @@ -154,18 +154,18 @@ Decentralized identifiers (DIDs) are a new type of identifier that enables verifiable, decentralized digital identity. A DID identifies any subject (e.g., a person, organization, thing, data model, abstract entity, etc.) -that the controller of the DID decides that it -identifies. These new identifiers are designed to enable the controller -of a DID to prove control over it and to be implemented independently -of any centralized registry, identity provider, or certificate authority. -DIDs are URLs that associate a DID subject with a -DID document allowing trustable interactions associated with that subject. -Each DID document can express cryptographic material, verification methods, -or service endpoints, which provide a set of mechanisms enabling a -DID controller to prove control of the DID. Service -endpoints enable trusted interactions associated with the DID -subject. A DID document might contain semantics about the subject -that it identifies. A DID document might contain the DID subject +that the controller of the DID decides that it +identifies. These new identifiers are designed to enable the controller +of a DID to prove control over it and to be implemented independently +of any centralized registry, identity provider, or certificate authority. +DIDs are URLs that associate a DID subject with a +DID document allowing trustable interactions associated with that subject. +Each DID document can express cryptographic material, verification methods, +or service endpoints, which provide a set of mechanisms enabling a +DID controller to prove control of the DID. Service +endpoints enable trusted interactions associated with the DID +subject. A DID document might contain semantics about the subject +that it identifies. A DID document might contain the DID subject itself (e.g. a data model).

      @@ -630,7 +630,41 @@

      DID Documents

    -

    DID Resolvers and DID Resolution

    +

    DID Resolution and DID URL Dereferencing

    + +

    +DID resolution is the function of processing a DID as +defined by a DID method to return a DID document, +and additional metadata, in a conformant representation. +A DID resolver is a software and/or hardware component that is capable of +executing the DID resolution function for at least one +DID method. +

    + +

    +DID URL dereferencing is the function of processing a DID URL and returning +a resource, which might or might not be a DID document, along with additional +metadata. A DID URL dereferencer is a software and/or hardware component that +is capable of executing the DID URL dereferencing function. Generally, a +DID URL dereferencer executes DID resolution on the DID portion of a +DID URL to obtain a DID document. The DID URL dereferencer then can perform +additional dereferencing on the DID document using the full DID URL, +if necessary. +

    + +
    +
    binding
    +
    +A concrete mechanism through which a caller invokes a DID resolver or a DID URL dereferencer. +This could be a local command line tool, a library API, or a network call such as an HTTP(S) request. +
    +
    + +

    +The general inputs and outputs of the DID resolution and DID URL dereferencing functions +are specified in the section of this document. Additional considerations +for the implementation of these functions are covered in [[?DID-RESOLUTION]]. +

    @@ -808,8 +842,8 @@

    Persistence

    -To avoid these issues, developers should refer to the Decentralized Characteristics -Rubric [[?DID-RUBRIC]] to decide which DID method best addresses the needs of +To avoid these issues, developers should refer to the Decentralized Characteristics +Rubric [[?DID-RUBRIC]] to decide which DID method best addresses the needs of the use case.

    @@ -938,18 +972,19 @@

    Generic DID URL Parameters

    - Adding a DID parameter to a DID URL means that the parameter becomes part of - an identifier for a resource (the DID document or other). Alternatively, the - DID resolution and the DID URL dereferencing processes can also be influenced - by passing options to a DID resolver that are not part of the DID URL. + Adding a DID parameter to a DID URL means that the parameter becomes part of + an identifier for a resource (the DID document or other). Alternatively, the + DID resolution and the DID URL dereferencing functions can also be influenced + by passing input metadata to a DID resolver that are not part of the DID URL. + (See ). Such options could for example control caching or the desired encoding of a resolution result. This is comparable to HTTP, where certain parameters could either be included in an HTTP URL, or alternatively passed as HTTP headers during the dereferencing process. The important distinction is that DID parameters that are part of the DID URL should be used to specify - what resource is being identified, whereas DID resolver options + what resource is being identified, whereas DID resolution options that are not part of the DID URL should be use to control how that - resource is dereferenced. + resource is resolved or dereferenced.

    @@ -1076,11 +1111,11 @@

    Fragment

    document to identify a component of the document (for example, a unique public key description or service endpoint). DID fragment syntax and semantics are identical to a generic URI fragment and MUST conform - to RFC 3986, section 3.5. To resolve + to RFC 3986, section 3.5. To dereference a DID fragment reference, the complete DID URL including the - DID fragment MUST be used as input to the DID URL dereferencing - algorithm for the target component in the DID document object. For more - information, see [[?DID-RESOLUTION]]. + DID fragment MUST be used as input to the DID URL dereferencing + function for the target component in the DID document object. For more + information, see .

    @@ -1238,7 +1273,7 @@

    DID Subject

    DID method specifications can create intermediate representations of a DID document that do not contain the id key, such as when a -DID resolver is performing resolution. However, the fully resolved +DID resolver is performing DID resolution. However, the fully resolved DID document always contains a valid id property. The value of id in the resolved DID document is expected to match the DID that was resolved. @@ -1352,10 +1387,10 @@

    Public Keys

    -The value of the id property MAY be structured as a compound key. +The value of the id property MAY be structured as a compound key. This is especially useful for integrating with existing key management systems and key formats such as JWK. -It is RECOMMENDED that JWK kid values are set to the public key fingerprint. -It is RECOMMENDED that verification methods that use JWKs to represent their +It is RECOMMENDED that JWK kid values are set to the public key fingerprint. +It is RECOMMENDED that verification methods that use JWKs to represent their public keys utilize the value of kid as their fragment identifier. See the first key in EXAMPLE 12 for an example of a public key with a compound key identifier.

    @@ -1991,7 +2026,8 @@

    Core Representations

    Producers MUST indicate which representation of a document has been used via a media type in the document's metadata. Consumers MUST determine which representation a document is in -via a media type in the document's metadata. Consumers MUST NOT determine the representation +via the content-type DID resolver metadata field. (See ). +Consumers MUST NOT determine the representation of a document through its content alone.

    @@ -2019,8 +2055,8 @@

    -When producing and consuming DID documents that are in plain JSON (as noted by -the document metadata), the following rules MUST be followed. +When producing and consuming DID documents that are in plain JSON (as indicated by +a content-type of application/json+did in the resolver metadata), the following rules MUST be followed.

    @@ -2161,8 +2197,8 @@

    -When producing and consuming DID documents that are in JSON-LD (as noted by -the document metadata), the following rules MUST be followed. +When producing and consuming DID documents that are in JSON-LD (as indicated by +a content-type of application/jsonld+did in the resolver metadata), the following rules MUST be followed.

      @@ -2416,13 +2452,13 @@

      The DID method specification MUST specify how a client can update a DID document on the DID registry, including all cryptographic operations necessary to establish proof of control, or state that -updates are not possible. +updates are not possible.

      -An update to a DID is any change, after creation, in the data used to produce a DID document. -DID Method implementers are responsible for defining what constitutes an update, -and what properties of the DID document are supported by a given DID method. +An update to a DID is any change, after creation, in the data used to produce a DID document. +DID Method implementers are responsible for defining what constitutes an update, +and what properties of the DID document are supported by a given DID method. For example, an update operation which replaces key material without changing it could be a valid update that does not result in changes to the DID document.

    @@ -2544,18 +2580,35 @@

    -A DID resolver is a software or hardware component with an API for -resolving DIDs of at least one DID method. It executes the read -operation for the DID method corresponding to the DID being -resolved to obtain the authoritative DID document. For more information, -see Section . +This section defines the inputs and outputs of the +DID resolution and DID URL dereferencing functions. The +exact implementation of these functions is out of scope for this specification, +but some considerations for implementors are available in [[?DID-RESOLUTION]].

    The interfaces and algorithms for resolving DIDs and dereferencing -DID URLs are specified in [[DID-RESOLUTION]]. +DID URLs are specified in [[?DID-RESOLUTION]].

    +
    +

    +DID Resolution +

    +
    + +
    +

    +DID URL Dereferencing +

    +
    + +
    +

    +Resolution Metadata +

    +
    +
    @@ -2915,8 +2968,8 @@

    Encrypted Data in DID Documents

    -DID documents are typically publicly available. Encryption algorithms have been -known to fail due to advances in cryptography and computing power. +DID documents are typically publicly available. Encryption algorithms have been +known to fail due to advances in cryptography and computing power. Implementers are advised to assume that any encrypted data placed in a DID document might eventually be made available in clear text to the same audience to which the encrypted data is available. diff --git a/terms.html b/terms.html index f852c51c..7717d428 100644 --- a/terms.html +++ b/terms.html @@ -123,6 +123,16 @@ verifiable data registry. For more information, see [[VC-DATA-MODEL]].

    +
    DID resolution
    + +
    +The function that takes as its input a DID and a set of resolution +options and returns a DID document in a conforming representation +plus additional metadata. This function relies on the "Read" operation of the +applicable DID method. The contract of this function is defined +in . +
    +
    DID resolution
    @@ -169,6 +179,27 @@ This function relies on DID resolution.
    +
    DID URL dereferencing
    + +
    +The function that takes as its input a DID URL, a DID document, +and a set of dereferencing options and returns a resource, which might be +a DID document, plus additional metadata. This function can use the DID resolution +function to fetch a DID document indicated by the DID within the DID URL. +The dereferencing function then can perform additional processing on the DID document to return +the dereferenced resource indicated by the DID URL. The contract of this +function is defined in . +
    + +
    DID URL dereferencer
    + +
    +A software and/or hardware system that is capable of executing the DID URL dereferencing +function, retrieving some form of data, which might or might not be a DID document) for a given +DID URL. The details of systems are specified in the DID Resolution specification +[[?DID-RESOLUTION]]. +
    +
    distributed ledger (DLT)
    From 77d8765a1a82524753bf733ba05d954bc83780b2 Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Sun, 19 Apr 2020 22:08:44 -0400 Subject: [PATCH 07/14] Split Resolvers from Dereferencers. --- index.html | 19 ++++++++++++------- terms.html | 30 ++++++++++++------------------ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/index.html b/index.html index 9dc154b7..19ec046c 100644 --- a/index.html +++ b/index.html @@ -630,16 +630,21 @@

    DID Documents

    -

    DID Resolution and DID URL Dereferencing

    +

    DID Resolvers

    -DID resolution is the function of processing a DID as -defined by a DID method to return a DID document, -and additional metadata, in a conformant representation. -A DID resolver is a software and/or hardware component that is capable of -executing the DID resolution function for at least one -DID method. +A DID resolver is a software and/or hardware component that takes +a DID as input and produces a conforming DID document as output. +This process is called DID resolution and often includes +resolution input options and resolution output metadata. The general process of +DID Resolution is described in . The details of +implementing a DID resolver is described in the DID Resolution +specification [[?DID-RESOLUTION]].

    +
    + +
    +

    DID Dereferencers

    DID URL dereferencing is the function of processing a DID URL and returning diff --git a/terms.html b/terms.html index 7717d428..fb026ec8 100644 --- a/terms.html +++ b/terms.html @@ -124,28 +124,22 @@

    DID resolution
    - +
    The function that takes as its input a DID and a set of resolution options and returns a DID document in a conforming representation plus additional metadata. This function relies on the "Read" operation of the -applicable DID method. The contract of this function is defined +applicable DID method. The contract of this function is defined in .
    DID resolution
    -A function that takes a DID plus additional options as input and returns a DID document, -plus optional metadata, as output. This function relies on the "Read" operation of the applicable -DID method. -
    - -
    DID resolver
    - -
    -Software and/or hardware that is capable of executing the DID resolution and -optionally the DID URL dereferencing functions for at least one DID method. +A software and/or hardware system that is capable of executing the DID resolution +function, retrieving a DID document for a given +DID. The details of such systems are discussed in the DID Resolution specification +[[?DID-RESOLUTION]].
    DID scheme
    @@ -180,26 +174,26 @@
    DID URL dereferencing
    - +
    -The function that takes as its input a DID URL, a DID document, -and a set of dereferencing options and returns a resource, which might be +The function that takes as its input a DID URL, a DID document, +and a set of dereferencing options and returns a resource, which might be a DID document, plus additional metadata. This function can use the DID resolution function to fetch a DID document indicated by the DID within the DID URL. The dereferencing function then can perform additional processing on the DID document to return -the dereferenced resource indicated by the DID URL. The contract of this +the dereferenced resource indicated by the DID URL. The contract of this function is defined in .
    DID URL dereferencer
    - +
    A software and/or hardware system that is capable of executing the DID URL dereferencing function, retrieving some form of data, which might or might not be a DID document) for a given DID URL. The details of systems are specified in the DID Resolution specification [[?DID-RESOLUTION]].
    - +
    distributed ledger (DLT)
    From 72c3a3fb5585fa410df5f082200fe1aee78120db Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Sun, 19 Apr 2020 22:21:24 -0400 Subject: [PATCH 08/14] Editorial fixes for DID Dereferencing section. --- index.html | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/index.html b/index.html index 19ec046c..f1ad1347 100644 --- a/index.html +++ b/index.html @@ -633,11 +633,11 @@

    DID Documents

    DID Resolvers

    -A DID resolver is a software and/or hardware component that takes -a DID as input and produces a conforming DID document as output. -This process is called DID resolution and often includes -resolution input options and resolution output metadata. The general process of -DID Resolution is described in . The details of +A DID resolver is a software and/or hardware component that takes a +DID as input and produces a conforming DID document as output. +This process is called DID resolution and often includes resolution input +options and resolution output metadata. The general process of DID +resolution is described in . The details of implementing a DID resolver is described in the DID Resolution specification [[?DID-RESOLUTION]].

    @@ -647,28 +647,31 @@

    DID Resolvers

    DID Dereferencers

    -DID URL dereferencing is the function of processing a DID URL and returning -a resource, which might or might not be a DID document, along with additional -metadata. A DID URL dereferencer is a software and/or hardware component that -is capable of executing the DID URL dereferencing function. Generally, a -DID URL dereferencer executes DID resolution on the DID portion of a -DID URL to obtain a DID document. The DID URL dereferencer then can perform -additional dereferencing on the DID document using the full DID URL, -if necessary. +A DID URL dereferencer is a software and/or hardware component that takes +a DID URL as input and produces a resource, which might or might not be a +conforming DID Document as output. This process is called DID URL +dereferencing and often includes dereferencing input options and +dereferencing output metadata. Generally, a DID URL dereferencer uses a +DID resolver to execute DID resolution on the DID portion +of a DID URL to obtain a DID document. The DID URL +dereferencer can then perform additional dereferencing on the DID +document using the absolute DID URL.

    binding
    -A concrete mechanism through which a caller invokes a DID resolver or a DID URL dereferencer. -This could be a local command line tool, a library API, or a network call such as an HTTP(S) request. +A concrete mechanism through which a caller invokes a DID resolver or a +DID URL dereferencer. This could be a local command line tool, a +software library, or a network call such as an HTTPS request.

    -The general inputs and outputs of the DID resolution and DID URL dereferencing functions -are specified in the section of this document. Additional considerations -for the implementation of these functions are covered in [[?DID-RESOLUTION]]. +The general process of DID URL dereferencing is described in . The details of implementing a DID URL +dereferencer is described in the DID Resolution specification +[[?DID-RESOLUTION]].

    From bf7ef6ed645ecd365b9c3216237f9216ae8d6f11 Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Sun, 19 Apr 2020 22:24:16 -0400 Subject: [PATCH 09/14] Move definition of "binding" to terminology. --- index.html | 34 +++++++++++++++------------------- terms.html | 7 +++++++ 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/index.html b/index.html index f1ad1347..c29976f8 100644 --- a/index.html +++ b/index.html @@ -636,10 +636,13 @@

    DID Resolvers

    A DID resolver is a software and/or hardware component that takes a DID as input and produces a conforming DID document as output. This process is called DID resolution and often includes resolution input -options and resolution output metadata. The general process of DID -resolution is described in . The details of -implementing a DID resolver is described in the DID Resolution -specification [[?DID-RESOLUTION]]. +options and resolution output metadata. +

    +

    +The general process of DID resolution is described in +. The details of implementing a +DID resolver are described in the DID Resolution specification +[[?DID-RESOLUTION]].

    @@ -651,26 +654,17 @@

    DID Dereferencers

    a DID URL as input and produces a resource, which might or might not be a conforming DID Document as output. This process is called DID URL dereferencing and often includes dereferencing input options and -dereferencing output metadata. Generally, a DID URL dereferencer uses a +dereferencing output metadata. Generally, a DID URL dereferencer uses a DID resolver to execute DID resolution on the DID portion of a DID URL to obtain a DID document. The DID URL dereferencer can then perform additional dereferencing on the DID document using the absolute DID URL.

    -
    -
    binding
    -
    -A concrete mechanism through which a caller invokes a DID resolver or a -DID URL dereferencer. This could be a local command line tool, a -software library, or a network call such as an HTTPS request. -
    -
    -

    -The general process of DID URL dereferencing is described in . The details of implementing a DID URL -dereferencer is described in the DID Resolution specification +The general process of DID URL dereferencing is described in +. The details of implementing a DID URL +dereferencer are described in the DID Resolution specification [[?DID-RESOLUTION]].

    @@ -2595,8 +2589,10 @@

    -The interfaces and algorithms for resolving DIDs and dereferencing -DID URLs are specified in [[?DID-RESOLUTION]]. +All conformant DID resolvers MUST implement the DID resolution function +for at least one DID method and be able to return a DID document in +at least one conformant representation. All conformant DID URL dereferencers +MUST implement dereferencing for at least one conformant representation type.

    diff --git a/terms.html b/terms.html index fb026ec8..69ac86ec 100644 --- a/terms.html +++ b/terms.html @@ -18,6 +18,13 @@ ledger.

    +
    binding
    +
    +A concrete mechanism through which a caller invokes a DID resolver or a +DID URL dereferencer. This could be a local command line tool, a +software library, or a network call such as an HTTPS request. +
    +
    decentralized identifier (DID)
    From ab1b586596d498acaaa25d6b35bd4fc61b17286c Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Mon, 20 Apr 2020 20:58:39 -0400 Subject: [PATCH 10/14] Fix incorrect MIME Type usage. --- index.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index c29976f8..f79b8580 100644 --- a/index.html +++ b/index.html @@ -2057,8 +2057,9 @@

    -When producing and consuming DID documents that are in plain JSON (as indicated by -a content-type of application/json+did in the resolver metadata), the following rules MUST be followed. +When producing and consuming DID documents that are in plain JSON (as indicated +by a content-type of application/did+json in the +resolver metadata), the following rules MUST be followed.

    @@ -2200,7 +2201,8 @@

    When producing and consuming DID documents that are in JSON-LD (as indicated by -a content-type of application/jsonld+did in the resolver metadata), the following rules MUST be followed. +a content-type of application/did+ld+json in the +resolver metadata), the following rules MUST be followed.

      From 49c42b78930bb9091960590bf3e86990acc9e71a Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Thu, 23 Apr 2020 09:12:34 -0400 Subject: [PATCH 11/14] Apply non-normative DID Resolution suggestions from @jricher. Co-Authored-By: Justin Richer --- index.html | 36 +++++++++++++++++------------------- terms.html | 19 ++++++++++++------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/index.html b/index.html index f79b8580..5e33243e 100644 --- a/index.html +++ b/index.html @@ -634,15 +634,14 @@

      DID Resolvers

      A DID resolver is a software and/or hardware component that takes a -DID as input and produces a conforming DID document as output. -This process is called DID resolution and often includes resolution input -options and resolution output metadata. +DID (and associated options) as input and produces a conforming +DID document (and associated metadata) as output in a process +called DID resolution.

      -The general process of DID resolution is described in -. The details of implementing a -DID resolver are described in the DID Resolution specification -[[?DID-RESOLUTION]]. +The inputs and outputs of the DID resolution process are defined in +. Additional considerations for implementing a +DID resolver are discussed in [[?DID-RESOLUTION]].

    @@ -651,21 +650,20 @@

    DID Dereferencers

    A DID URL dereferencer is a software and/or hardware component that takes -a DID URL as input and produces a resource, which might or might not be a -conforming DID Document as output. This process is called DID URL -dereferencing and often includes dereferencing input options and -dereferencing output metadata. Generally, a DID URL dereferencer uses a +a DID URL as input (and associated options) and produces a resource (and +associated metadata) as output in a process called DID URL +dereferencing. The resource produced by DID URL dereferencing might or might not be a +conforming DID Document. Generally, a DID URL dereferencer uses a DID resolver to execute DID resolution on the DID portion of a DID URL to obtain a DID document. The DID URL dereferencer can then perform additional dereferencing on the DID -document using the absolute DID URL. +document using the complete DID URL.

    -The general process of DID URL dereferencing is described in -. The details of implementing a DID URL -dereferencer are described in the DID Resolution specification -[[?DID-RESOLUTION]]. +The inputs and outputs of the DID URL dereferencing process are defined in +. Additional considerations for implementing a +DID URL dereferencer are discussed in [[?DID-RESOLUTION]].

    @@ -1114,7 +1112,7 @@

    Fragment

    public key description or service endpoint). DID fragment syntax and semantics are identical to a generic URI fragment and MUST conform to RFC 3986, section 3.5. To dereference - a DID fragment reference, the complete DID URL including the + a DID fragment, the complete DID URL including the DID fragment MUST be used as input to the DID URL dereferencing function for the target component in the DID document object. For more information, see . @@ -2585,7 +2583,7 @@

    This section defines the inputs and outputs of the -DID resolution and DID URL dereferencing functions. The +DID resolution and DID URL dereferencing processes. The exact implementation of these functions is out of scope for this specification, but some considerations for implementors are available in [[?DID-RESOLUTION]].

    @@ -2611,7 +2609,7 @@

    -Resolution Metadata +Metadata Structure

    diff --git a/terms.html b/terms.html index 69ac86ec..225a260b 100644 --- a/terms.html +++ b/terms.html @@ -133,20 +133,26 @@
    DID resolution
    -The function that takes as its input a DID and a set of resolution -options and returns a DID document in a conforming representation +The function that takes as its input a DID and a set of input +metadata and returns a DID document in a conforming representation plus additional metadata. This function relies on the "Read" operation of the -applicable DID method. The contract of this function is defined +applicable DID method. The inputs and outputs of this function are defined in .
    DID resolution
    +<<<<<<< HEAD A software and/or hardware system that is capable of executing the DID resolution function, retrieving a DID document for a given DID. The details of such systems are discussed in the DID Resolution specification [[?DID-RESOLUTION]]. +======= +A DID resolver is a software and/or hardware component that takes +a DID as input and produces a conforming DID document as +output by performing DID resolution. +>>>>>>> Apply non-normative DID Resolution suggestions from @jricher.
    DID scheme
    @@ -188,8 +194,8 @@ a DID document, plus additional metadata. This function can use the DID resolution function to fetch a DID document indicated by the DID within the DID URL. The dereferencing function then can perform additional processing on the DID document to return -the dereferenced resource indicated by the DID URL. The contract of this -function is defined in . +the dereferenced resource indicated by the DID URL. The inputs and outputs of this +process are defined in .

    DID URL dereferencer
    @@ -197,8 +203,7 @@
    A software and/or hardware system that is capable of executing the DID URL dereferencing function, retrieving some form of data, which might or might not be a DID document) for a given -DID URL. The details of systems are specified in the DID Resolution specification -[[?DID-RESOLUTION]]. +DID URL by performing DID URL dereferencing.
    distributed ledger (DLT)
    From 74d77a660813081001a4dadbd2298789309999df Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Thu, 23 Apr 2020 12:56:52 -0400 Subject: [PATCH 12/14] Clarify language referring to DID Resolution. --- index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 5e33243e..6ed82832 100644 --- a/index.html +++ b/index.html @@ -634,8 +634,8 @@

    DID Resolvers

    A DID resolver is a software and/or hardware component that takes a -DID (and associated options) as input and produces a conforming -DID document (and associated metadata) as output in a process +DID (and associated options) as input and produces a conforming +DID document (and associated metadata) as output in a process called DID resolution.

    @@ -662,7 +662,7 @@

    DID Dereferencers

    The inputs and outputs of the DID URL dereferencing process are defined in -. Additional considerations for implementing a +. Additional considerations for implementing a DID URL dereferencer are discussed in [[?DID-RESOLUTION]].

    @@ -967,8 +967,8 @@

    Generic DID URL Parameters

    - The exact processing rules for these parameters are specified in - [[?DID-RESOLUTION]]. +Additional considerations for processing these parameters are provided +in [?DID-RESOLUTION].

    From d9833cb593444728194d9cb4dd6bb687ce12aace Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Fri, 1 May 2020 10:59:30 -0400 Subject: [PATCH 13/14] Fix broken references. --- index.html | 9 +-------- terms.html | 17 +---------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 6ed82832..5ddbfca4 100644 --- a/index.html +++ b/index.html @@ -976,7 +976,7 @@

    Generic DID URL Parameters

    an identifier for a resource (the DID document or other). Alternatively, the DID resolution and the DID URL dereferencing functions can also be influenced by passing input metadata to a DID resolver that are not part of the DID URL. - (See ). + (See ). Such options could for example control caching or the desired encoding of a resolution result. This is comparable to HTTP, where certain parameters could either be included in an HTTP URL, or alternatively passed as HTTP headers @@ -2588,13 +2588,6 @@

    but some considerations for implementors are available in [[?DID-RESOLUTION]].

    -

    -All conformant DID resolvers MUST implement the DID resolution function -for at least one DID method and be able to return a DID document in -at least one conformant representation. All conformant DID URL dereferencers -MUST implement dereferencing for at least one conformant representation type. -

    -

    DID Resolution diff --git a/terms.html b/terms.html index 225a260b..c717a318 100644 --- a/terms.html +++ b/terms.html @@ -140,19 +140,12 @@ in . -
    DID resolution
    +
    DID resolver
    -<<<<<<< HEAD -A software and/or hardware system that is capable of executing the DID resolution -function, retrieving a DID document for a given -DID. The details of such systems are discussed in the DID Resolution specification -[[?DID-RESOLUTION]]. -======= A DID resolver is a software and/or hardware component that takes a DID as input and produces a conforming DID document as output by performing DID resolution. ->>>>>>> Apply non-normative DID Resolution suggestions from @jricher.
    DID scheme
    @@ -180,14 +173,6 @@
    DID URL dereferencing
    -
    -A function that takes a DID URL plus additional options as input and returns a DID document, -a part of a DID document, a service endpoint URL, or another resource, plus optional metadata, as output. -This function relies on DID resolution. -
    - -
    DID URL dereferencing
    -
    The function that takes as its input a DID URL, a DID document, and a set of dereferencing options and returns a resource, which might be From e83669abc978cf377a612468136564f98aeb6f40 Mon Sep 17 00:00:00 2001 From: Manu Sporny Date: Fri, 1 May 2020 11:06:11 -0400 Subject: [PATCH 14/14] Apply provided/discussed suggestion from @jricher. Co-authored-by: Justin Richer --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 5ddbfca4..0160853c 100644 --- a/index.html +++ b/index.html @@ -967,7 +967,7 @@

    Generic DID URL Parameters

    -Additional considerations for processing these parameters are provided +Additional considerations for processing these parameters are discussed in [?DID-RESOLUTION].

    DID Resolvers and DID Resolution

    + +

    +A DID resolver is a software and/or hardware component that is capable +of executing the DID resolution and optionally the DID URL dereferencing +functions for at least one DID method. +

    +

    +DID resolution is the process of obtaining a DID document for a given DID. +

    +

    +Building on top of DID resolution, DID URL dereferencing is the process of retrieving a +representation of a resource for a given DID URL. +

    +

    +DID resolution and DID URL dereferencing are defined as abstract functions +(see Section and Section ). +

    +

    +These abstract functions are implemented by DID resolvers. A DID resolver is invoked +by a client via a binding. Bindings define how the abstract functions are realized +using concrete programming or communication interfaces. It is possible to distinguish between +local bindings and remote bindings. +

    +
    +
    binding
    +
    A concrete mechanism through which a client invokes a DID resolver. This could be a local binding such as a local command line tool or library API, or a remote binding such as an HTTP(S) binding.
    +
    +
    +
    client
    +
    Software and/or hardware that invokes a DID resolver in order to execute the DID resolution and/or DID URL dereferencing functions. This invocation is done via a binding. The term client does not imply any specific network topology.
    +
    +
    +
    local binding
    +
    A binding where the client invokes a DID resolver that runs on the same network host, e.g. via a local command line tool or library API. + In this case, the DID resolver is sometimes also called a "local DID resolver". +
    +
    +
    remote binding
    +
    A binding where the client invokes a DID resolver that runs on a different network host, e.g. via an HTTP(S) binding. + In this case, the DID resolver is sometimes also called a "remote DID resolver". +
    +

    +

    + Diagram showing a DID Resolver with a 'local binding'. +
    +A local binding for a DID resolver. +
    +
    +
    + Diagram showing a DID resolver with a 'remote binding'. +
    +A remote binding for a DID resolver. +
    +
    +

    + +

    +Additional considerations about architectures of the DID resolution and DID URL +dereferencing functions, including concepts such as "proxied resolution" or "client-side +dereferencing", can be found in [[?DID-RESOLUTION]]. +

    +