Documentation
¶
Overview ¶
Package did is a set of tools to work with Decentralized Identifiers (DIDs) as described in the DID spec https://w3c.github.io/did-core/
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DID ¶
type DID struct { // DID Method // https://w3c.github.io/did-core/#method-specific-syntax Method string // The method-specific-id component of a DID // method-specific-id = *idchar *( ":" *idchar ) ID string // method-specific-id may be composed of multiple `:` separated idstrings IDStrings []string // DID URL // did-url = did *( ";" param ) path-abempty [ "?" query ] [ "#" fragment ] // did-url may contain multiple params, a path, query, and fragment Params []Param // DID Path, the portion of a DID reference that follows the first forward slash character. // https://w3c.github.io/did-core/#path Path string // Path may be composed of multiple `/` separated segments // path-abempty = *( "/" segment ) PathSegments []string // DID Query // https://w3c.github.io/did-core/#query // query = *( pchar / "/" / "?" ) Query string // DID Fragment, the portion of a DID reference that follows the first hash sign character ("#") // https://w3c.github.io/did-core/#fragment Fragment string }
A DID represents a parsed DID or a DID URL
func Parse ¶
Parse parses the input string into a DID structure.
Example ¶
d, err := did.Parse("did:example:q7ckgxeq1lxmra0r") if err != nil { log.Fatal(err) } fmt.Printf("Method - %s, ID - %s", d.Method, d.ID)
Output: Method - example, ID - q7ckgxeq1lxmra0r
Example (WithFragment) ¶
d, err := did.Parse("did:example:q7ckgxeq1lxmra0r#keys-1") if err != nil { log.Fatal(err) } fmt.Printf("Method - %s, ID - %s, Fragment - %s", d.Method, d.ID, d.Fragment)
Output: Method - example, ID - q7ckgxeq1lxmra0r, Fragment - keys-1
Example (WithPath) ¶
d, err := did.Parse("did:example:q7ckgxeq1lxmra0r/a/b") if err != nil { log.Fatal(err) } fmt.Printf("Method - %s, ID - %s, Path - %s", d.Method, d.ID, d.Path)
Output: Method - example, ID - q7ckgxeq1lxmra0r, Path - a/b
Example (WithQuery) ¶
d, err := did.Parse("did:example:q7ckgxeq1lxmra0r?dskjsdjj") if err != nil { log.Fatal(err) } fmt.Printf("Method - %s, ID - %s, Query - %s", d.Method, d.ID, d.Query)
Output: Method - example, ID - q7ckgxeq1lxmra0r, Query - dskjsdjj
func (*DID) IsURL ¶
IsURL returns true if a DID has a Path, a Query or a Fragment https://w3c-ccg.github.io/did-spec/#dfn-did-reference
Example (NoPathOrFragment) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r"} fmt.Println(d.IsURL())
Output: false
Example (WithFragment) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", Fragment: "keys-1"} fmt.Println(d.IsURL())
Output: true
Example (WithPath) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", Path: "a/b"} fmt.Println(d.IsURL())
Output: true
func (*DID) String ¶
String encodes a DID struct into a valid DID string. nolint: gocyclo
Example ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r"} fmt.Println(d.String())
Output: did:example:q7ckgxeq1lxmra0r
Example (WithFragment) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", Fragment: "keys-1"} fmt.Println(d.String())
Output: did:example:q7ckgxeq1lxmra0r#keys-1
Example (WithPath) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", Path: "a/b"} fmt.Println(d.String())
Output: did:example:q7ckgxeq1lxmra0r/a/b
Example (WithPathSegments) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", PathSegments: []string{"a", "b"}} fmt.Println(d.String())
Output: did:example:q7ckgxeq1lxmra0r/a/b
Example (WithQuery) ¶
d := &did.DID{Method: "example", ID: "q7ckgxeq1lxmra0r", Query: "abc"} fmt.Println(d.String())
Output: did:example:q7ckgxeq1lxmra0r?abc
type Param ¶
type Param struct { // param-name = 1*param-char // Name may include a method name and param name separated by a colon Name string // param-value = *param-char Value string }
Param represents a parsed DID param, which contains a name and value. A generic param is defined as a param name and value separated by a colon. generic-param-name:param-value A param may also be method specific, which requires the method name to prefix the param name separated by a colon method-name:param-name. param = param-name [ "=" param-value ] https://w3c.github.io/did-core/#generic-did-parameter-names https://w3c.github.io/did-core/#method-specific-did-parameter-names