diff --git a/index.html b/index.html index 53d42641..3647d4e2 100644 --- a/index.html +++ b/index.html @@ -2684,16 +2684,97 @@

-This section defines the inputs and outputs of 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]]. +This section defines the inputs and outputs of DID resolution and +DID URL dereferencing. These functions are defined in an abstract way. +Their exact implementation is out of scope for this specification, but some considerations for +implementors are discussed in [[?DID-RESOLUTION]]. +

+ +

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

DID Resolution

+

+The DID resolution function resolves a DID into a DID document +by using the "Read" operation of the applicable DID method. (See .) +The details of how this process is accomplished are outside the scope of this +specification, but all conformant implementations MUST implement a function which has the following abstract form: +

+ +

+resolve ( did, did-resolution-input-metadata )
+     -> ( did-resolution-metadata, did-document-stream, did-document-metadata ) +

+ +

+The input variables of this function MUST be as follows: +

+ +
+
+did +
+
+A conformant DID as a single string. This is the DID to resolve. +This input is REQUIRED. +
+
+did-resolution-input-metadata +
+
+A metadata structure consisting of input options to the resolve +function in addition to the did itself. +This input is REQUIRED, but the structure MAY be empty. +
+
+ +

+The output variables of this function MUST be as follows: +

+ +
+
+did-resolution-metadata +
+
+A metadata structure consisting of values relating to the results of the DID resolution process. +This structure is REQUIRED and MUST NOT be empty. +This metadata typically changes between invocations of the resolve function as it represents data about the resolution process itself. +
+
+did-document-stream +
+
+If the resolution is successful, this MUST be a byte stream of the resolved DID document in a single conformant representation. +The byte stream MAY then be parsed by the caller of the resolve function into a DID document abstract data model, which +can in turn be validated and processed. +If the resolution is unsuccessful, this value MUST be an empty stream. +
+
+did-document-metadata +
+
+If the resolution is successful, this MUST be a metadata structure. +This structure contains metadata about the DID document contained in the did-document-stream. +This metadata typically does not change between invocations of the resolve function unless +the DID document changes, as it represents data about the DID document. +If the resolution is unsuccessful, this output MUST be an empty metadata structure. +
+
+ +

+DID resolver implementations MUST NOT alter the signature of this function in any way. DID resolver +implementations MAY map the resolve function to a method-specific internal function to perform the +actual DID resolution process. DID resolver implementations DID resolver implementations MAY implement +and expose additional functions with different signatures in addition to the resolve function specified here. +

+