A method-agnostic Decentralized Identifier (DID).
+A method-agnostic DID Document.
+Note: All methods that involve reading from this class may potentially raise an error +if the object is being concurrently modified.
+A method agnostic DID Url.
+A cryptographically verified decoded token from a JWS.
+Contains the decoded headers and the raw claims.
+A cryptographically verified and decoded Credential.
+Note that having an instance of this type only means the JWS it was constructed from was verified. +It does not imply anything about a potentially present proof property on the credential itself.
+A cryptographically verified and decoded presentation.
+Note that having an instance of this type only means the JWS it was constructed from was verified. +It does not imply anything about a potentially present proof property on the presentation itself.
+Represents an elements constructing a disclosure. +Object properties and array elements disclosures are supported.
+See: https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-07.html#name-disclosures
+DID Configuration Resource which contains Domain Linkage Credentials.
+It can be placed in an origin's .well-known
directory to prove linkage between the origin and a DID.
+See: https://identity.foundation/.well-known/resources/did-configuration/#did-configuration-resource
Note:
+A span of time.
+An implementor of IJwsVerifier
that can handle the
+EdDSA
algorithm.
A DID conforming to the IOTA DID method specification.
+A DID Document adhering to the IOTA DID method specification.
+Note: All methods that involve reading from this class may potentially raise an error +if the object is being concurrently modified.
+Additional attributes related to an IOTA DID Document.
+An extension interface that provides helper functions for publication +and resolution of DID documents in Alias Outputs.
+The result of a key generation in JwkStorage
.
A wrapper around a JSON Web Signature (JWS).
+A wrapper around a JSON Web Token (JWK).
+Options to declare validation criteria when validating credentials.
+A type for decoding and validating Credential.
+A validator for a Domain Linkage Configuration and Credentials.
+Options to declare validation criteria when validating presentation.
+Options to declare validation criteria when validating credentials.
+Claims set for key binding JWT.
+Supported verification method data formats.
+Unique identifier of a VerificationMethod.
+NOTE:
+This class does not have a JSON representation,
+use the methods pack
and unpack
instead.
Supported verification method types.
+Supported verification method types.
+Represents a cryptographic proof that can be used to validate verifiable credentials and +presentations.
+This representation does not inherently implement any standard; instead, it
+can be utilized to implement standards or user-defined proofs. The presence of the
+type
field is necessary to accommodate different types of cryptographic proofs.
Note that this proof is not related to JWT and can be used in combination or as an alternative +to it.
+Convenience type for resolving DID documents from different DID methods.
+Also provides methods for resolving DID Documents associated with +verifiable Credentials and Presentations.
+The resolver will only be able to resolve DID documents for methods it has been configured for in the constructor.
+A compressed bitmap for managing credential revocation.
+Representation of an SD-JWT of the format
+<Issuer-signed JWT>~<Disclosure 1>~<Disclosure 2>~...~<Disclosure N>~<optional KB-JWT>
.
A type for decoding and validating Credential.
+Substitutes digests in an SD-JWT object by their corresponding plaintext values provided by disclosures.
+Transforms a JSON object into an SD-JWT object by substituting selected values +with their corresponding disclosure digests.
+Note: digests are created using the sha-256 algorithm.
+A DID Document Service used to enable trusted interactions associated with a DID subject.
+StatusList2021 data structure as described in W3C's VC status list 2021.
+A parsed StatusList2021Credential.
+Builder type to construct valid StatusList2021Credential istances.
+StatusList2021Entry implementation.
+A type wrapping a JwkStorage
and KeyIdStorage
that should always be used together when
+working with storage backed DID documents.
A DID Document Verification Method.
+Purpose of a StatusList2021.
+Controls validation behaviour when checking whether or not a credential has been revoked by its
+credentialStatus
.
Validate the status if supported, reject any unsupported
+credentialStatus
types.
Only RevocationBitmap2022
is currently supported.
This is the default.
+Validate the status if supported, skip any unsupported
+credentialStatus
types.
Skip all status checks.
+Declares how credential subjects must relate to the presentation holder.
+See also the Subject-Holder Relationship section of the specification.
+The holder must always match the subject on all credentials, regardless of their nonTransferable
property.
+This variant is the default.
The holder must match the subject only for credentials where the nonTransferable
property is true
.
The holder is not required to have any kind of relationship to any credential subject.
+Declares when validation should return if an error occurs.
+Return all errors that occur during validation.
+Return after the first error occurs.
+Verify a JWS signature secured with the EdDSA
algorithm and curve Ed25519
.
This function is useful when one is composing a IJwsVerifier
that delegates
+EdDSA
verification with curve Ed25519
to this function.
This function does not check whether alg = EdDSA
in the protected header. Callers are expected to assert this
+prior to calling the function.
string
Encode the given bytes in url-safe base64.
+Uint8Array
Decode the given url-safe base64-encoded slice into its raw bytes.
+Initializes the console error panic hook for better error messages
+string
+ * [.authority()](#CoreDID+authority) ⇒ string
+ * [.method()](#CoreDID+method) ⇒ string
+ * [.methodId()](#CoreDID+methodId) ⇒ string
+ * [.join(segment)](#CoreDID+join) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toUrl()](#CoreDID+toUrl) ⇒ [DIDUrl
](#DIDUrl)
+ * [.intoUrl()](#CoreDID+intoUrl) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toString()](#CoreDID+toString) ⇒ string
+ * [.toCoreDid()](#CoreDID+toCoreDid) ⇒ [CoreDID
](#CoreDID)
+ * [.toJSON()](#CoreDID+toJSON) ⇒ any
+ * [.clone()](#CoreDID+clone) ⇒ [CoreDID
](#CoreDID)
+ * _static_
+ * [.parse(input)](#CoreDID.parse) ⇒ [CoreDID
](#CoreDID)
+ * [.validMethodName(value)](#CoreDID.validMethodName) ⇒ boolean
+ * [.validMethodId(value)](#CoreDID.validMethodId) ⇒ boolean
+ * [.fromJSON(json)](#CoreDID.fromJSON) ⇒ [CoreDID
](#CoreDID)
+
+
+
+### coreDID.setMethodName(value)
+Set the method name of the [CoreDID](#CoreDID).
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### coreDID.setMethodId(value)
+Set the method-specific-id of the `DID`.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### coreDID.scheme() ⇒ string
+Returns the [CoreDID](#CoreDID) scheme.
+
+E.g.
+- `"did:example:12345678" -> "did"`
+- `"did:iota:smr:12345678" -> "did"`
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.authority() ⇒ string
+Returns the [CoreDID](#CoreDID) authority: the method name and method-id.
+
+E.g.
+- `"did:example:12345678" -> "example:12345678"`
+- `"did:iota:smr:12345678" -> "iota:smr:12345678"`
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.method() ⇒ string
+Returns the [CoreDID](#CoreDID) method name.
+
+E.g.
+- `"did:example:12345678" -> "example"`
+- `"did:iota:smr:12345678" -> "iota"`
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.methodId() ⇒ string
+Returns the [CoreDID](#CoreDID) method-specific ID.
+
+E.g.
+- `"did:example:12345678" -> "12345678"`
+- `"did:iota:smr:12345678" -> "smr:12345678"`
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.join(segment) ⇒ [DIDUrl
](#DIDUrl)
+Construct a new [DIDUrl](#DIDUrl) by joining with a relative DID Url string.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| segment | string
|
+
+
+
+### coreDID.toUrl() ⇒ [DIDUrl
](#DIDUrl)
+Clones the [CoreDID](#CoreDID) into a [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.intoUrl() ⇒ [DIDUrl
](#DIDUrl)
+Converts the [CoreDID](#CoreDID) into a [DIDUrl](#DIDUrl), consuming it.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.toString() ⇒ string
+Returns the [CoreDID](#CoreDID) as a string.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.toCoreDid() ⇒ [CoreDID
](#CoreDID)
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### coreDID.clone() ⇒ [CoreDID
](#CoreDID)
+Deep clones the object.
+
+**Kind**: instance method of [CoreDID
](#CoreDID)
+
+
+### CoreDID.parse(input) ⇒ [CoreDID
](#CoreDID)
+Parses a [CoreDID](#CoreDID) from the given `input`.
+
+### Errors
+
+Throws an error if the input is not a valid [CoreDID](#CoreDID).
+
+**Kind**: static method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| input | string
|
+
+
+
+### CoreDID.validMethodName(value) ⇒ boolean
+Validates whether a string is a valid DID method name.
+
+**Kind**: static method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### CoreDID.validMethodId(value) ⇒ boolean
+Validates whether a string is a valid `DID` method-id.
+
+**Kind**: static method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### CoreDID.fromJSON(json) ⇒ [CoreDID
](#CoreDID)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [CoreDID
](#CoreDID)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## CoreDocument
+A method-agnostic DID Document.
+
+Note: All methods that involve reading from this class may potentially raise an error
+if the object is being concurrently modified.
+
+**Kind**: global class
+
+* [CoreDocument](#CoreDocument)
+ * [new CoreDocument(values)](#new_CoreDocument_new)
+ * _instance_
+ * [.id()](#CoreDocument+id) ⇒ [CoreDID
](#CoreDID)
+ * [.setId(id)](#CoreDocument+setId)
+ * [.controller()](#CoreDocument+controller) ⇒ [Array.<CoreDID>
](#CoreDID)
+ * [.setController(controllers)](#CoreDocument+setController)
+ * [.alsoKnownAs()](#CoreDocument+alsoKnownAs) ⇒ Array.<string>
+ * [.setAlsoKnownAs(urls)](#CoreDocument+setAlsoKnownAs)
+ * [.verificationMethod()](#CoreDocument+verificationMethod) ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+ * [.authentication()](#CoreDocument+authentication) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.assertionMethod()](#CoreDocument+assertionMethod) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.keyAgreement()](#CoreDocument+keyAgreement) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.capabilityDelegation()](#CoreDocument+capabilityDelegation) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.capabilityInvocation()](#CoreDocument+capabilityInvocation) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.properties()](#CoreDocument+properties) ⇒ Map.<string, any>
+ * [.setPropertyUnchecked(key, value)](#CoreDocument+setPropertyUnchecked)
+ * [.service()](#CoreDocument+service) ⇒ [Array.<Service>
](#Service)
+ * [.insertService(service)](#CoreDocument+insertService)
+ * [.removeService(didUrl)](#CoreDocument+removeService) ⇒ [Service
](#Service) \| undefined
+ * [.resolveService(query)](#CoreDocument+resolveService) ⇒ [Service
](#Service) \| undefined
+ * [.methods(scope)](#CoreDocument+methods) ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+ * [.verificationRelationships()](#CoreDocument+verificationRelationships) ⇒ Array.<(DIDUrl\|VerificationMethod)>
+ * [.insertMethod(method, scope)](#CoreDocument+insertMethod)
+ * [.removeMethod(did)](#CoreDocument+removeMethod) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+ * [.resolveMethod(query, scope)](#CoreDocument+resolveMethod) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+ * [.attachMethodRelationship(didUrl, relationship)](#CoreDocument+attachMethodRelationship) ⇒ boolean
+ * [.detachMethodRelationship(didUrl, relationship)](#CoreDocument+detachMethodRelationship) ⇒ boolean
+ * [.verifyJws(jws, options, signatureVerifier, detachedPayload)](#CoreDocument+verifyJws) ⇒ [DecodedJws
](#DecodedJws)
+ * [.revokeCredentials(serviceQuery, indices)](#CoreDocument+revokeCredentials)
+ * [.unrevokeCredentials(serviceQuery, indices)](#CoreDocument+unrevokeCredentials)
+ * [.clone()](#CoreDocument+clone) ⇒ [CoreDocument
](#CoreDocument)
+ * [._shallowCloneInternal()](#CoreDocument+_shallowCloneInternal) ⇒ [CoreDocument
](#CoreDocument)
+ * [._strongCountInternal()](#CoreDocument+_strongCountInternal) ⇒ number
+ * [.toJSON()](#CoreDocument+toJSON) ⇒ any
+ * [.generateMethod(storage, keyType, alg, fragment, scope)](#CoreDocument+generateMethod) ⇒ Promise.<string>
+ * [.purgeMethod(storage, id)](#CoreDocument+purgeMethod) ⇒ Promise.<void>
+ * [.createJws(storage, fragment, payload, options)](#CoreDocument+createJws) ⇒ [Promise.<Jws>
](#Jws)
+ * [.createCredentialJwt(storage, fragment, credential, options, custom_claims)](#CoreDocument+createCredentialJwt) ⇒ [Promise.<Jwt>
](#Jwt)
+ * [.createPresentationJwt(storage, fragment, presentation, signature_options, presentation_options)](#CoreDocument+createPresentationJwt) ⇒ [Promise.<Jwt>
](#Jwt)
+ * _static_
+ * [.fromJSON(json)](#CoreDocument.fromJSON) ⇒ [CoreDocument
](#CoreDocument)
+
+
+
+### new CoreDocument(values)
+Creates a new [CoreDocument](#CoreDocument) with the given properties.
+
+
+| Param | Type |
+| --- | --- |
+| values | ICoreDocument
|
+
+
+
+### coreDocument.id() ⇒ [CoreDID
](#CoreDID)
+Returns a copy of the DID Document `id`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.setId(id)
+Sets the DID of the document.
+
+### Warning
+
+Changing the identifier can drastically alter the results of
+`resolve_method`, `resolve_service` and the related
+[DID URL dereferencing](https://w3c-ccg.github.io/did-resolution/#dereferencing) algorithm.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| id | [CoreDID
](#CoreDID) |
+
+
+
+### coreDocument.controller() ⇒ [Array.<CoreDID>
](#CoreDID)
+Returns a copy of the document controllers.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.setController(controllers)
+Sets the controllers of the DID Document.
+
+Note: Duplicates will be ignored.
+Use `null` to remove all controllers.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| controllers | [CoreDID
](#CoreDID) \| [Array.<CoreDID>
](#CoreDID) \| null
|
+
+
+
+### coreDocument.alsoKnownAs() ⇒ Array.<string>
+Returns a copy of the document's `alsoKnownAs` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.setAlsoKnownAs(urls)
+Sets the `alsoKnownAs` property in the DID document.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| urls | string
\| Array.<string>
\| null
|
+
+
+
+### coreDocument.verificationMethod() ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+Returns a copy of the document's `verificationMethod` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.authentication() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns a copy of the document's `authentication` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.assertionMethod() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns a copy of the document's `assertionMethod` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.keyAgreement() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns a copy of the document's `keyAgreement` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.capabilityDelegation() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns a copy of the document's `capabilityDelegation` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.capabilityInvocation() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns a copy of the document's `capabilityInvocation` set.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.properties() ⇒ Map.<string, any>
+Returns a copy of the custom DID Document properties.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.setPropertyUnchecked(key, value)
+Sets a custom property in the DID Document.
+If the value is set to `null`, the custom property will be removed.
+
+### WARNING
+
+This method can overwrite existing properties like `id` and result in an invalid document.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| key | string
|
+| value | any
|
+
+
+
+### coreDocument.service() ⇒ [Array.<Service>
](#Service)
+Returns a set of all [Service](#Service) in the document.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.insertService(service)
+Add a new [Service](#Service) to the document.
+
+Errors if there already exists a service or verification method with the same id.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| service | [Service
](#Service) |
+
+
+
+### coreDocument.removeService(didUrl) ⇒ [Service
](#Service) \| undefined
+Remove a [Service](#Service) identified by the given [DIDUrl](#DIDUrl) from the document.
+
+Returns `true` if the service was removed.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| didUrl | [DIDUrl
](#DIDUrl) |
+
+
+
+### coreDocument.resolveService(query) ⇒ [Service
](#Service) \| undefined
+Returns the first [Service](#Service) with an `id` property matching the provided `query`,
+if present.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| query | [DIDUrl
](#DIDUrl) \| string
|
+
+
+
+### coreDocument.methods(scope) ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+Returns a list of all [VerificationMethod](#VerificationMethod) in the DID Document,
+whose verification relationship matches `scope`.
+
+If `scope` is not set, a list over the **embedded** methods is returned.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| scope | [MethodScope
](#MethodScope) \| undefined
|
+
+
+
+### coreDocument.verificationRelationships() ⇒ Array.<(DIDUrl\|VerificationMethod)>
+Returns an array of all verification relationships.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.insertMethod(method, scope)
+Adds a new `method` to the document in the given `scope`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| method | [VerificationMethod
](#VerificationMethod) |
+| scope | [MethodScope
](#MethodScope) |
+
+
+
+### coreDocument.removeMethod(did) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+Removes all references to the specified Verification Method.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| did | [DIDUrl
](#DIDUrl) |
+
+
+
+### coreDocument.resolveMethod(query, scope) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+Returns a copy of the first verification method with an `id` property
+matching the provided `query` and the verification relationship
+specified by `scope`, if present.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| query | [DIDUrl
](#DIDUrl) \| string
|
+| scope | [MethodScope
](#MethodScope) \| undefined
|
+
+
+
+### coreDocument.attachMethodRelationship(didUrl, relationship) ⇒ boolean
+Attaches the relationship to the given method, if the method exists.
+
+Note: The method needs to be in the set of verification methods,
+so it cannot be an embedded one.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| didUrl | [DIDUrl
](#DIDUrl) |
+| relationship | number
|
+
+
+
+### coreDocument.detachMethodRelationship(didUrl, relationship) ⇒ boolean
+Detaches the given relationship from the given method, if the method exists.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| didUrl | [DIDUrl
](#DIDUrl) |
+| relationship | number
|
+
+
+
+### coreDocument.verifyJws(jws, options, signatureVerifier, detachedPayload) ⇒ [DecodedJws
](#DecodedJws)
+Decodes and verifies the provided JWS according to the passed `options` and `signatureVerifier`.
+ If no `signatureVerifier` argument is provided a default verifier will be used that is (only) capable of
+verifying EdDSA signatures.
+
+Regardless of which options are passed the following conditions must be met in order for a verification attempt to
+take place.
+- The JWS must be encoded according to the JWS compact serialization.
+- The `kid` value in the protected header must be an identifier of a verification method in this DID document,
+or set explicitly in the `options`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| jws | [Jws
](#Jws) |
+| options | [JwsVerificationOptions
](#JwsVerificationOptions) |
+| signatureVerifier | IJwsVerifier
|
+| detachedPayload | string
\| undefined
|
+
+
+
+### coreDocument.revokeCredentials(serviceQuery, indices)
+If the document has a [RevocationBitmap](#RevocationBitmap) service identified by `serviceQuery`,
+revoke all specified `indices`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| serviceQuery | [DIDUrl
](#DIDUrl) \| string
|
+| indices | number
\| Array.<number>
|
+
+
+
+### coreDocument.unrevokeCredentials(serviceQuery, indices)
+If the document has a [RevocationBitmap](#RevocationBitmap) service identified by `serviceQuery`,
+unrevoke all specified `indices`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| serviceQuery | [DIDUrl
](#DIDUrl) \| string
|
+| indices | number
\| Array.<number>
|
+
+
+
+### coreDocument.clone() ⇒ [CoreDocument
](#CoreDocument)
+Deep clones the [CoreDocument](#CoreDocument).
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.\_shallowCloneInternal() ⇒ [CoreDocument
](#CoreDocument)
+### Warning
+This is for internal use only. Do not rely on or call this method.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.\_strongCountInternal() ⇒ number
+### Warning
+This is for internal use only. Do not rely on or call this method.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.toJSON() ⇒ any
+Serializes to a plain JS representation.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+
+### coreDocument.generateMethod(storage, keyType, alg, fragment, scope) ⇒ Promise.<string>
+Generate new key material in the given `storage` and insert a new verification method with the corresponding
+public key material into the DID document.
+
+- If no fragment is given the `kid` of the generated JWK is used, if it is set, otherwise an error is returned.
+- The `keyType` must be compatible with the given `storage`. `Storage`s are expected to export key type constants
+for that use case.
+
+The fragment of the generated method is returned.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| keyType | string
|
+| alg | JwsAlgorithm
|
+| fragment | string
\| undefined
|
+| scope | [MethodScope
](#MethodScope) |
+
+
+
+### coreDocument.purgeMethod(storage, id) ⇒ Promise.<void>
+Remove the method identified by the `fragment` from the document and delete the corresponding key material in
+the `storage`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| id | [DIDUrl
](#DIDUrl) |
+
+
+
+### coreDocument.createJws(storage, fragment, payload, options) ⇒ [Promise.<Jws>
](#Jws)
+Sign the `payload` according to `options` with the storage backed private key corresponding to the public key
+material in the verification method identified by the given `fragment.
+
+Upon success a string representing a JWS encoded according to the Compact JWS Serialization format is returned.
+See [RFC7515 section 3.1](https://www.rfc-editor.org/rfc/rfc7515#section-3.1).
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| payload | string
|
+| options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+
+
+
+### coreDocument.createCredentialJwt(storage, fragment, credential, options, custom_claims) ⇒ [Promise.<Jwt>
](#Jwt)
+Produces a JWT where the payload is produced from the given `credential`
+in accordance with [VC Data Model v1.1](https://www.w3.org/TR/vc-data-model/#json-web-token).
+
+Unless the `kid` is explicitly set in the options, the `kid` in the protected header is the `id`
+of the method identified by `fragment` and the JWS signature will be produced by the corresponding
+private key backed by the `storage` in accordance with the passed `options`.
+
+The `custom_claims` can be used to set additional claims on the resulting JWT.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| credential | [Credential
](#Credential) |
+| options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+| custom_claims | Record.<string, any>
\| undefined
|
+
+
+
+### coreDocument.createPresentationJwt(storage, fragment, presentation, signature_options, presentation_options) ⇒ [Promise.<Jwt>
](#Jwt)
+Produces a JWT where the payload is produced from the given presentation.
+in accordance with [VC Data Model v1.1](https://www.w3.org/TR/vc-data-model/#json-web-token).
+
+Unless the `kid` is explicitly set in the options, the `kid` in the protected header is the `id`
+of the method identified by `fragment` and the JWS signature will be produced by the corresponding
+private key backed by the `storage` in accordance with the passed `options`.
+
+**Kind**: instance method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| presentation | [Presentation
](#Presentation) |
+| signature_options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+| presentation_options | [JwtPresentationOptions
](#JwtPresentationOptions) |
+
+
+
+### CoreDocument.fromJSON(json) ⇒ [CoreDocument
](#CoreDocument)
+Deserializes an instance from a plain JS representation.
+
+**Kind**: static method of [CoreDocument
](#CoreDocument)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Credential
+**Kind**: global class
+
+* [Credential](#Credential)
+ * [new Credential(values)](#new_Credential_new)
+ * _instance_
+ * [.context()](#Credential+context) ⇒ Array.<(string\|Record.<string, any>)>
+ * [.id()](#Credential+id) ⇒ string
\| undefined
+ * [.type()](#Credential+type) ⇒ Array.<string>
+ * [.credentialSubject()](#Credential+credentialSubject) ⇒ Array.<Subject>
+ * [.issuer()](#Credential+issuer) ⇒ string
\| Issuer
+ * [.issuanceDate()](#Credential+issuanceDate) ⇒ [Timestamp
](#Timestamp)
+ * [.expirationDate()](#Credential+expirationDate) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.credentialStatus()](#Credential+credentialStatus) ⇒ Array.<Status>
+ * [.credentialSchema()](#Credential+credentialSchema) ⇒ Array.<Schema>
+ * [.refreshService()](#Credential+refreshService) ⇒ Array.<RefreshService>
+ * [.termsOfUse()](#Credential+termsOfUse) ⇒ Array.<Policy>
+ * [.evidence()](#Credential+evidence) ⇒ Array.<Evidence>
+ * [.nonTransferable()](#Credential+nonTransferable) ⇒ boolean
\| undefined
+ * [.proof()](#Credential+proof) ⇒ [Proof
](#Proof) \| undefined
+ * [.properties()](#Credential+properties) ⇒ Map.<string, any>
+ * [.setProof(proof)](#Credential+setProof)
+ * [.toJwtClaims(custom_claims)](#Credential+toJwtClaims) ⇒ Record.<string, any>
+ * [.toJSON()](#Credential+toJSON) ⇒ any
+ * [.clone()](#Credential+clone) ⇒ [Credential
](#Credential)
+ * _static_
+ * [.BaseContext()](#Credential.BaseContext) ⇒ string
+ * [.BaseType()](#Credential.BaseType) ⇒ string
+ * [.createDomainLinkageCredential(values)](#Credential.createDomainLinkageCredential) ⇒ [Credential
](#Credential)
+ * [.fromJSON(json)](#Credential.fromJSON) ⇒ [Credential
](#Credential)
+
+
+
+### new Credential(values)
+Constructs a new [Credential](#Credential).
+
+
+| Param | Type |
+| --- | --- |
+| values | ICredential
|
+
+
+
+### credential.context() ⇒ Array.<(string\|Record.<string, any>)>
+Returns a copy of the JSON-LD context(s) applicable to the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.id() ⇒ string
\| undefined
+Returns a copy of the unique `URI` identifying the [Credential](#Credential) .
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.type() ⇒ Array.<string>
+Returns a copy of the URIs defining the type of the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.credentialSubject() ⇒ Array.<Subject>
+Returns a copy of the [Credential](#Credential) subject(s).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.issuer() ⇒ string
\| Issuer
+Returns a copy of the issuer of the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.issuanceDate() ⇒ [Timestamp
](#Timestamp)
+Returns a copy of the timestamp of when the [Credential](#Credential) becomes valid.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.expirationDate() ⇒ [Timestamp
](#Timestamp) \| undefined
+Returns a copy of the timestamp of when the [Credential](#Credential) should no longer be considered valid.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.credentialStatus() ⇒ Array.<Status>
+Returns a copy of the information used to determine the current status of the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.credentialSchema() ⇒ Array.<Schema>
+Returns a copy of the information used to assist in the enforcement of a specific [Credential](#Credential) structure.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.refreshService() ⇒ Array.<RefreshService>
+Returns a copy of the service(s) used to refresh an expired [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.termsOfUse() ⇒ Array.<Policy>
+Returns a copy of the terms-of-use specified by the [Credential](#Credential) issuer.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.evidence() ⇒ Array.<Evidence>
+Returns a copy of the human-readable evidence used to support the claims within the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.nonTransferable() ⇒ boolean
\| undefined
+Returns whether or not the [Credential](#Credential) must only be contained within a [Presentation](#Presentation)
+with a proof issued from the [Credential](#Credential) subject.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.proof() ⇒ [Proof
](#Proof) \| undefined
+Optional cryptographic proof, unrelated to JWT.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.properties() ⇒ Map.<string, any>
+Returns a copy of the miscellaneous properties on the [Credential](#Credential).
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.setProof(proof)
+Sets the `proof` property of the [Credential](#Credential).
+
+Note that this proof is not related to JWT.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+| Param | Type |
+| --- | --- |
+| proof | [Proof
](#Proof) \| undefined
|
+
+
+
+### credential.toJwtClaims(custom_claims) ⇒ Record.<string, any>
+Serializes the `Credential` as a JWT claims set
+in accordance with [VC Data Model v1.1](https://www.w3.org/TR/vc-data-model/#json-web-token).
+
+The resulting object can be used as the payload of a JWS when issuing the credential.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+| Param | Type |
+| --- | --- |
+| custom_claims | Record.<string, any>
\| undefined
|
+
+
+
+### credential.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### credential.clone() ⇒ [Credential
](#Credential)
+Deep clones the object.
+
+**Kind**: instance method of [Credential
](#Credential)
+
+
+### Credential.BaseContext() ⇒ string
+Returns the base JSON-LD context.
+
+**Kind**: static method of [Credential
](#Credential)
+
+
+### Credential.BaseType() ⇒ string
+Returns the base type.
+
+**Kind**: static method of [Credential
](#Credential)
+
+
+### Credential.createDomainLinkageCredential(values) ⇒ [Credential
](#Credential)
+**Kind**: static method of [Credential
](#Credential)
+
+| Param | Type |
+| --- | --- |
+| values | IDomainLinkageCredential
|
+
+
+
+### Credential.fromJSON(json) ⇒ [Credential
](#Credential)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Credential
](#Credential)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## DIDUrl
+A method agnostic DID Url.
+
+**Kind**: global class
+
+* [DIDUrl](#DIDUrl)
+ * _instance_
+ * [.did()](#DIDUrl+did) ⇒ [CoreDID
](#CoreDID)
+ * [.urlStr()](#DIDUrl+urlStr) ⇒ string
+ * [.fragment()](#DIDUrl+fragment) ⇒ string
\| undefined
+ * [.setFragment(value)](#DIDUrl+setFragment)
+ * [.path()](#DIDUrl+path) ⇒ string
\| undefined
+ * [.setPath(value)](#DIDUrl+setPath)
+ * [.query()](#DIDUrl+query) ⇒ string
\| undefined
+ * [.setQuery(value)](#DIDUrl+setQuery)
+ * [.join(segment)](#DIDUrl+join) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toString()](#DIDUrl+toString) ⇒ string
+ * [.toJSON()](#DIDUrl+toJSON) ⇒ any
+ * [.clone()](#DIDUrl+clone) ⇒ [DIDUrl
](#DIDUrl)
+ * _static_
+ * [.parse(input)](#DIDUrl.parse) ⇒ [DIDUrl
](#DIDUrl)
+ * [.fromJSON(json)](#DIDUrl.fromJSON) ⇒ [DIDUrl
](#DIDUrl)
+
+
+
+### didUrl.did() ⇒ [CoreDID
](#CoreDID)
+Return a copy of the [CoreDID](#CoreDID) section of the [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.urlStr() ⇒ string
+Return a copy of the relative DID Url as a string, including only the path, query, and fragment.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.fragment() ⇒ string
\| undefined
+Returns a copy of the [DIDUrl](#DIDUrl) method fragment, if any. Excludes the leading '#'.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.setFragment(value)
+Sets the `fragment` component of the [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| value | string
\| undefined
|
+
+
+
+### didUrl.path() ⇒ string
\| undefined
+Returns a copy of the [DIDUrl](#DIDUrl) path.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.setPath(value)
+Sets the `path` component of the [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| value | string
\| undefined
|
+
+
+
+### didUrl.query() ⇒ string
\| undefined
+Returns a copy of the [DIDUrl](#DIDUrl) method query, if any. Excludes the leading '?'.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.setQuery(value)
+Sets the `query` component of the [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| value | string
\| undefined
|
+
+
+
+### didUrl.join(segment) ⇒ [DIDUrl
](#DIDUrl)
+Append a string representing a path, query, and/or fragment, returning a new [DIDUrl](#DIDUrl).
+
+Must begin with a valid delimiter character: '/', '?', '#'. Overwrites the existing URL
+segment and any following segments in order of path, query, then fragment.
+
+I.e.
+- joining a path will clear the query and fragment.
+- joining a query will clear the fragment.
+- joining a fragment will only overwrite the fragment.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| segment | string
|
+
+
+
+### didUrl.toString() ⇒ string
+Returns the [DIDUrl](#DIDUrl) as a string.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### didUrl.clone() ⇒ [DIDUrl
](#DIDUrl)
+Deep clones the object.
+
+**Kind**: instance method of [DIDUrl
](#DIDUrl)
+
+
+### DIDUrl.parse(input) ⇒ [DIDUrl
](#DIDUrl)
+Parses a [DIDUrl](#DIDUrl) from the input string.
+
+**Kind**: static method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| input | string
|
+
+
+
+### DIDUrl.fromJSON(json) ⇒ [DIDUrl
](#DIDUrl)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [DIDUrl
](#DIDUrl)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## DecodedJws
+A cryptographically verified decoded token from a JWS.
+
+Contains the decoded headers and the raw claims.
+
+**Kind**: global class
+
+* [DecodedJws](#DecodedJws)
+ * [.claims()](#DecodedJws+claims) ⇒ string
+ * [.claimsBytes()](#DecodedJws+claimsBytes) ⇒ Uint8Array
+ * [.protectedHeader()](#DecodedJws+protectedHeader) ⇒ [JwsHeader
](#JwsHeader)
+ * [.clone()](#DecodedJws+clone) ⇒ [DecodedJws
](#DecodedJws)
+ * [.toJSON()](#DecodedJws+toJSON) ⇒ any
+
+
+
+### decodedJws.claims() ⇒ string
+Returns a copy of the parsed claims represented as a string.
+
+# Errors
+An error is thrown if the claims cannot be represented as a string.
+
+This error can only occur if the Token was decoded from a detached payload.
+
+**Kind**: instance method of [DecodedJws
](#DecodedJws)
+
+
+### decodedJws.claimsBytes() ⇒ Uint8Array
+Return a copy of the parsed claims represented as an array of bytes.
+
+**Kind**: instance method of [DecodedJws
](#DecodedJws)
+
+
+### decodedJws.protectedHeader() ⇒ [JwsHeader
](#JwsHeader)
+Returns a copy of the protected header.
+
+**Kind**: instance method of [DecodedJws
](#DecodedJws)
+
+
+### decodedJws.clone() ⇒ [DecodedJws
](#DecodedJws)
+Deep clones the object.
+
+**Kind**: instance method of [DecodedJws
](#DecodedJws)
+
+
+### decodedJws.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [DecodedJws
](#DecodedJws)
+
+
+## DecodedJwtCredential
+A cryptographically verified and decoded Credential.
+
+Note that having an instance of this type only means the JWS it was constructed from was verified.
+It does not imply anything about a potentially present proof property on the credential itself.
+
+**Kind**: global class
+
+* [DecodedJwtCredential](#DecodedJwtCredential)
+ * [.credential()](#DecodedJwtCredential+credential) ⇒ [Credential
](#Credential)
+ * [.protectedHeader()](#DecodedJwtCredential+protectedHeader) ⇒ [JwsHeader
](#JwsHeader)
+ * [.customClaims()](#DecodedJwtCredential+customClaims) ⇒ Record.<string, any>
\| undefined
+ * [.intoCredential()](#DecodedJwtCredential+intoCredential) ⇒ [Credential
](#Credential)
+
+
+
+### decodedJwtCredential.credential() ⇒ [Credential
](#Credential)
+Returns a copy of the credential parsed to the [Verifiable Credentials Data model](https://www.w3.org/TR/vc-data-model/).
+
+**Kind**: instance method of [DecodedJwtCredential
](#DecodedJwtCredential)
+
+
+### decodedJwtCredential.protectedHeader() ⇒ [JwsHeader
](#JwsHeader)
+Returns a copy of the protected header parsed from the decoded JWS.
+
+**Kind**: instance method of [DecodedJwtCredential
](#DecodedJwtCredential)
+
+
+### decodedJwtCredential.customClaims() ⇒ Record.<string, any>
\| undefined
+The custom claims parsed from the JWT.
+
+**Kind**: instance method of [DecodedJwtCredential
](#DecodedJwtCredential)
+
+
+### decodedJwtCredential.intoCredential() ⇒ [Credential
](#Credential)
+Consumes the object and returns the decoded credential.
+
+### Warning
+
+This destroys the [DecodedJwtCredential](#DecodedJwtCredential) object.
+
+**Kind**: instance method of [DecodedJwtCredential
](#DecodedJwtCredential)
+
+
+## DecodedJwtPresentation
+A cryptographically verified and decoded presentation.
+
+Note that having an instance of this type only means the JWS it was constructed from was verified.
+It does not imply anything about a potentially present proof property on the presentation itself.
+
+**Kind**: global class
+
+* [DecodedJwtPresentation](#DecodedJwtPresentation)
+ * [.presentation()](#DecodedJwtPresentation+presentation) ⇒ [Presentation
](#Presentation)
+ * [.protectedHeader()](#DecodedJwtPresentation+protectedHeader) ⇒ [JwsHeader
](#JwsHeader)
+ * [.intoPresentation()](#DecodedJwtPresentation+intoPresentation) ⇒ [Presentation
](#Presentation)
+ * [.expirationDate()](#DecodedJwtPresentation+expirationDate) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.issuanceDate()](#DecodedJwtPresentation+issuanceDate) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.audience()](#DecodedJwtPresentation+audience) ⇒ string
\| undefined
+ * [.customClaims()](#DecodedJwtPresentation+customClaims) ⇒ Record.<string, any>
\| undefined
+
+
+
+### decodedJwtPresentation.presentation() ⇒ [Presentation
](#Presentation)
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.protectedHeader() ⇒ [JwsHeader
](#JwsHeader)
+Returns a copy of the protected header parsed from the decoded JWS.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.intoPresentation() ⇒ [Presentation
](#Presentation)
+Consumes the object and returns the decoded presentation.
+
+### Warning
+This destroys the [DecodedJwtPresentation](#DecodedJwtPresentation) object.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.expirationDate() ⇒ [Timestamp
](#Timestamp) \| undefined
+The expiration date parsed from the JWT claims.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.issuanceDate() ⇒ [Timestamp
](#Timestamp) \| undefined
+The issuance date parsed from the JWT claims.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.audience() ⇒ string
\| undefined
+The `aud` property parsed from JWT claims.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+### decodedJwtPresentation.customClaims() ⇒ Record.<string, any>
\| undefined
+The custom claims parsed from the JWT.
+
+**Kind**: instance method of [DecodedJwtPresentation
](#DecodedJwtPresentation)
+
+
+## Disclosure
+Represents an elements constructing a disclosure.
+Object properties and array elements disclosures are supported.
+
+See: https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-07.html#name-disclosures
+
+**Kind**: global class
+
+* [Disclosure](#Disclosure)
+ * [new Disclosure(salt, claim_name, claim_value)](#new_Disclosure_new)
+ * _instance_
+ * [.disclosure()](#Disclosure+disclosure) ⇒ string
+ * [.toEncodedString()](#Disclosure+toEncodedString) ⇒ string
+ * [.toString()](#Disclosure+toString) ⇒ string
+ * [.salt()](#Disclosure+salt) ⇒ string
+ * [.claimName()](#Disclosure+claimName) ⇒ string
\| undefined
+ * [.claimValue()](#Disclosure+claimValue) ⇒ any
+ * [.toJSON()](#Disclosure+toJSON) ⇒ any
+ * _static_
+ * [.parse(disclosure)](#Disclosure.parse) ⇒ [Disclosure
](#Disclosure)
+ * [.fromJSON(json)](#Disclosure.fromJSON) ⇒ [Disclosure
](#Disclosure)
+
+
+
+### new Disclosure(salt, claim_name, claim_value)
+
+| Param | Type |
+| --- | --- |
+| salt | string
|
+| claim_name | string
\| undefined
|
+| claim_value | any
|
+
+
+
+### disclosure.disclosure() ⇒ string
+Returns a copy of the base64url-encoded string.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.toEncodedString() ⇒ string
+Returns a copy of the base64url-encoded string.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.toString() ⇒ string
+Returns a copy of the base64url-encoded string.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.salt() ⇒ string
+Returns a copy of the salt value.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.claimName() ⇒ string
\| undefined
+Returns a copy of the claim name, optional for array elements.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.claimValue() ⇒ any
+Returns a copy of the claim Value which can be of any type.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### disclosure.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Disclosure
](#Disclosure)
+
+
+### Disclosure.parse(disclosure) ⇒ [Disclosure
](#Disclosure)
+Parses a Base64 encoded disclosure into a `Disclosure`.
+
+## Error
+
+Returns an `InvalidDisclosure` if input is not a valid disclosure.
+
+**Kind**: static method of [Disclosure
](#Disclosure)
+
+| Param | Type |
+| --- | --- |
+| disclosure | string
|
+
+
+
+### Disclosure.fromJSON(json) ⇒ [Disclosure
](#Disclosure)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Disclosure
](#Disclosure)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## DomainLinkageConfiguration
+DID Configuration Resource which contains Domain Linkage Credentials.
+It can be placed in an origin's `.well-known` directory to prove linkage between the origin and a DID.
+See: Array.<Jwt>
](#Jwt)
+ * [.issuers()](#DomainLinkageConfiguration+issuers) ⇒ [Array.<CoreDID>
](#CoreDID)
+ * [.toJSON()](#DomainLinkageConfiguration+toJSON) ⇒ any
+ * [.clone()](#DomainLinkageConfiguration+clone) ⇒ [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+ * _static_
+ * [.fromJSON(json)](#DomainLinkageConfiguration.fromJSON) ⇒ [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+
+
+### new DomainLinkageConfiguration(linkedDids)
+Constructs a new [DomainLinkageConfiguration](#DomainLinkageConfiguration).
+
+
+| Param | Type |
+| --- | --- |
+| linkedDids | [Array.<Jwt>
](#Jwt) |
+
+
+
+### domainLinkageConfiguration.linkedDids() ⇒ [Array.<Jwt>
](#Jwt)
+List of the Domain Linkage Credentials.
+
+**Kind**: instance method of [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+
+### domainLinkageConfiguration.issuers() ⇒ [Array.<CoreDID>
](#CoreDID)
+List of the issuers of the Domain Linkage Credentials.
+
+**Kind**: instance method of [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+
+### domainLinkageConfiguration.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+
+### domainLinkageConfiguration.clone() ⇒ [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+Deep clones the object.
+
+**Kind**: instance method of [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+
+### DomainLinkageConfiguration.fromJSON(json) ⇒ [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [DomainLinkageConfiguration
](#DomainLinkageConfiguration)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Duration
+A span of time.
+
+**Kind**: global class
+
+* [Duration](#Duration)
+ * _instance_
+ * [.toJSON()](#Duration+toJSON) ⇒ any
+ * _static_
+ * [.seconds(seconds)](#Duration.seconds) ⇒ [Duration
](#Duration)
+ * [.minutes(minutes)](#Duration.minutes) ⇒ [Duration
](#Duration)
+ * [.hours(hours)](#Duration.hours) ⇒ [Duration
](#Duration)
+ * [.days(days)](#Duration.days) ⇒ [Duration
](#Duration)
+ * [.weeks(weeks)](#Duration.weeks) ⇒ [Duration
](#Duration)
+ * [.fromJSON(json)](#Duration.fromJSON) ⇒ [Duration
](#Duration)
+
+
+
+### duration.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Duration
](#Duration)
+
+
+### Duration.seconds(seconds) ⇒ [Duration
](#Duration)
+Create a new [Duration](#Duration) with the given number of seconds.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| seconds | number
|
+
+
+
+### Duration.minutes(minutes) ⇒ [Duration
](#Duration)
+Create a new [Duration](#Duration) with the given number of minutes.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| minutes | number
|
+
+
+
+### Duration.hours(hours) ⇒ [Duration
](#Duration)
+Create a new [Duration](#Duration) with the given number of hours.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| hours | number
|
+
+
+
+### Duration.days(days) ⇒ [Duration
](#Duration)
+Create a new [Duration](#Duration) with the given number of days.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| days | number
|
+
+
+
+### Duration.weeks(weeks) ⇒ [Duration
](#Duration)
+Create a new [Duration](#Duration) with the given number of weeks.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| weeks | number
|
+
+
+
+### Duration.fromJSON(json) ⇒ [Duration
](#Duration)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Duration
](#Duration)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## EdDSAJwsVerifier
+An implementor of `IJwsVerifier` that can handle the
+`EdDSA` algorithm.
+
+**Kind**: global class
+
+* [EdDSAJwsVerifier](#EdDSAJwsVerifier)
+ * [new EdDSAJwsVerifier()](#new_EdDSAJwsVerifier_new)
+ * [.verify(alg, signingInput, decodedSignature, publicKey)](#EdDSAJwsVerifier+verify)
+
+
+
+### new EdDSAJwsVerifier()
+Constructs an EdDSAJwsVerifier.
+
+
+
+### edDSAJwsVerifier.verify(alg, signingInput, decodedSignature, publicKey)
+Verify a JWS signature secured with the `EdDSA` algorithm.
+Only the `Ed25519` curve is supported for now.
+
+This function is useful when one is building an `IJwsVerifier` that extends the default provided by
+the IOTA Identity Framework.
+
+# Warning
+
+This function does not check whether `alg = EdDSA` in the protected header. Callers are expected to assert this
+prior to calling the function.
+
+**Kind**: instance method of [EdDSAJwsVerifier
](#EdDSAJwsVerifier)
+
+| Param | Type |
+| --- | --- |
+| alg | JwsAlgorithm
|
+| signingInput | Uint8Array
|
+| decodedSignature | Uint8Array
|
+| publicKey | [Jwk
](#Jwk) |
+
+
+
+## IotaDID
+A DID conforming to the IOTA DID method specification.
+
+**Kind**: global class
+
+* [IotaDID](#IotaDID)
+ * [new IotaDID(bytes, network)](#new_IotaDID_new)
+ * _instance_
+ * [.network()](#IotaDID+network) ⇒ string
+ * [.tag()](#IotaDID+tag) ⇒ string
+ * [.toCoreDid()](#IotaDID+toCoreDid) ⇒ [CoreDID
](#CoreDID)
+ * [.scheme()](#IotaDID+scheme) ⇒ string
+ * [.authority()](#IotaDID+authority) ⇒ string
+ * [.method()](#IotaDID+method) ⇒ string
+ * [.methodId()](#IotaDID+methodId) ⇒ string
+ * [.join(segment)](#IotaDID+join) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toUrl()](#IotaDID+toUrl) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toAliasId()](#IotaDID+toAliasId) ⇒ string
+ * [.intoUrl()](#IotaDID+intoUrl) ⇒ [DIDUrl
](#DIDUrl)
+ * [.toString()](#IotaDID+toString) ⇒ string
+ * [.toJSON()](#IotaDID+toJSON) ⇒ any
+ * [.clone()](#IotaDID+clone) ⇒ [IotaDID
](#IotaDID)
+ * _static_
+ * [.METHOD](#IotaDID.METHOD) ⇒ string
+ * [.DEFAULT_NETWORK](#IotaDID.DEFAULT_NETWORK) ⇒ string
+ * [.fromAliasId(aliasId, network)](#IotaDID.fromAliasId) ⇒ [IotaDID
](#IotaDID)
+ * [.placeholder(network)](#IotaDID.placeholder) ⇒ [IotaDID
](#IotaDID)
+ * [.parse(input)](#IotaDID.parse) ⇒ [IotaDID
](#IotaDID)
+ * [.fromJSON(json)](#IotaDID.fromJSON) ⇒ [IotaDID
](#IotaDID)
+
+
+
+### new IotaDID(bytes, network)
+Constructs a new [IotaDID](#IotaDID) from a byte representation of the tag and the given
+network name.
+
+See also [placeholder](#IotaDID.placeholder).
+
+
+| Param | Type |
+| --- | --- |
+| bytes | Uint8Array
|
+| network | string
|
+
+
+
+### did.network() ⇒ string
+Returns the Tangle network name of the [IotaDID](#IotaDID).
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.tag() ⇒ string
+Returns a copy of the unique tag of the [IotaDID](#IotaDID).
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.toCoreDid() ⇒ [CoreDID
](#CoreDID)
+Returns the DID represented as a [CoreDID](#CoreDID).
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.scheme() ⇒ string
+Returns the `DID` scheme.
+
+E.g.
+- `"did:example:12345678" -> "did"`
+- `"did:iota:main:12345678" -> "did"`
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.authority() ⇒ string
+Returns the `DID` authority: the method name and method-id.
+
+E.g.
+- `"did:example:12345678" -> "example:12345678"`
+- `"did:iota:main:12345678" -> "iota:main:12345678"`
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.method() ⇒ string
+Returns the `DID` method name.
+
+E.g.
+- `"did:example:12345678" -> "example"`
+- `"did:iota:main:12345678" -> "iota"`
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.methodId() ⇒ string
+Returns the `DID` method-specific ID.
+
+E.g.
+- `"did:example:12345678" -> "12345678"`
+- `"did:iota:main:12345678" -> "main:12345678"`
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.join(segment) ⇒ [DIDUrl
](#DIDUrl)
+Construct a new [DIDUrl](#DIDUrl) by joining with a relative DID Url string.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+| Param | Type |
+| --- | --- |
+| segment | string
|
+
+
+
+### did.toUrl() ⇒ [DIDUrl
](#DIDUrl)
+Clones the `DID` into a [DIDUrl](#DIDUrl).
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.toAliasId() ⇒ string
+Returns the hex-encoded AliasId with a '0x' prefix, from the DID tag.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.intoUrl() ⇒ [DIDUrl
](#DIDUrl)
+Converts the `DID` into a [DIDUrl](#DIDUrl), consuming it.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.toString() ⇒ string
+Returns the `DID` as a string.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### did.clone() ⇒ [IotaDID
](#IotaDID)
+Deep clones the object.
+
+**Kind**: instance method of [IotaDID
](#IotaDID)
+
+
+### IotaDID.METHOD ⇒ string
+The IOTA DID method name (`"iota"`).
+
+**Kind**: static property of [IotaDID
](#IotaDID)
+
+
+### IotaDID.DEFAULT\_NETWORK ⇒ string
+The default Tangle network (`"iota"`).
+
+**Kind**: static property of [IotaDID
](#IotaDID)
+
+
+### IotaDID.fromAliasId(aliasId, network) ⇒ [IotaDID
](#IotaDID)
+Constructs a new [IotaDID](#IotaDID) from a hex representation of an Alias Id and the given
+network name.
+
+**Kind**: static method of [IotaDID
](#IotaDID)
+
+| Param | Type |
+| --- | --- |
+| aliasId | string
|
+| network | string
|
+
+
+
+### IotaDID.placeholder(network) ⇒ [IotaDID
](#IotaDID)
+Creates a new placeholder [IotaDID](#IotaDID) with the given network name.
+
+E.g. `did:iota:smr:0x0000000000000000000000000000000000000000000000000000000000000000`.
+
+**Kind**: static method of [IotaDID
](#IotaDID)
+
+| Param | Type |
+| --- | --- |
+| network | string
|
+
+
+
+### IotaDID.parse(input) ⇒ [IotaDID
](#IotaDID)
+Parses a [IotaDID](#IotaDID) from the input string.
+
+**Kind**: static method of [IotaDID
](#IotaDID)
+
+| Param | Type |
+| --- | --- |
+| input | string
|
+
+
+
+### IotaDID.fromJSON(json) ⇒ [IotaDID
](#IotaDID)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [IotaDID
](#IotaDID)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## IotaDocument
+A DID Document adhering to the IOTA DID method specification.
+
+Note: All methods that involve reading from this class may potentially raise an error
+if the object is being concurrently modified.
+
+**Kind**: global class
+
+* [IotaDocument](#IotaDocument)
+ * [new IotaDocument(network)](#new_IotaDocument_new)
+ * _instance_
+ * [.id()](#IotaDocument+id) ⇒ [IotaDID
](#IotaDID)
+ * [.controller()](#IotaDocument+controller) ⇒ [Array.<IotaDID>
](#IotaDID)
+ * [.alsoKnownAs()](#IotaDocument+alsoKnownAs) ⇒ Array.<string>
+ * [.setAlsoKnownAs(urls)](#IotaDocument+setAlsoKnownAs)
+ * [.properties()](#IotaDocument+properties) ⇒ Map.<string, any>
+ * [.setPropertyUnchecked(key, value)](#IotaDocument+setPropertyUnchecked)
+ * [.service()](#IotaDocument+service) ⇒ [Array.<Service>
](#Service)
+ * [.insertService(service)](#IotaDocument+insertService)
+ * [.removeService(did)](#IotaDocument+removeService) ⇒ [Service
](#Service) \| undefined
+ * [.resolveService(query)](#IotaDocument+resolveService) ⇒ [Service
](#Service) \| undefined
+ * [.methods(scope)](#IotaDocument+methods) ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+ * [.insertMethod(method, scope)](#IotaDocument+insertMethod)
+ * [.removeMethod(did)](#IotaDocument+removeMethod) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+ * [.resolveMethod(query, scope)](#IotaDocument+resolveMethod) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+ * [.attachMethodRelationship(didUrl, relationship)](#IotaDocument+attachMethodRelationship) ⇒ boolean
+ * [.detachMethodRelationship(didUrl, relationship)](#IotaDocument+detachMethodRelationship) ⇒ boolean
+ * [.verifyJws(jws, options, signatureVerifier, detachedPayload)](#IotaDocument+verifyJws) ⇒ [DecodedJws
](#DecodedJws)
+ * [.pack()](#IotaDocument+pack) ⇒ Uint8Array
+ * [.packWithEncoding(encoding)](#IotaDocument+packWithEncoding) ⇒ Uint8Array
+ * [.metadata()](#IotaDocument+metadata) ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+ * [.metadataCreated()](#IotaDocument+metadataCreated) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.setMetadataCreated(timestamp)](#IotaDocument+setMetadataCreated)
+ * [.metadataUpdated()](#IotaDocument+metadataUpdated) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.setMetadataUpdated(timestamp)](#IotaDocument+setMetadataUpdated)
+ * [.metadataDeactivated()](#IotaDocument+metadataDeactivated) ⇒ boolean
\| undefined
+ * [.setMetadataDeactivated(deactivated)](#IotaDocument+setMetadataDeactivated)
+ * [.metadataStateControllerAddress()](#IotaDocument+metadataStateControllerAddress) ⇒ string
\| undefined
+ * [.metadataGovernorAddress()](#IotaDocument+metadataGovernorAddress) ⇒ string
\| undefined
+ * [.setMetadataPropertyUnchecked(key, value)](#IotaDocument+setMetadataPropertyUnchecked)
+ * [.revokeCredentials(serviceQuery, indices)](#IotaDocument+revokeCredentials)
+ * [.unrevokeCredentials(serviceQuery, indices)](#IotaDocument+unrevokeCredentials)
+ * [.clone()](#IotaDocument+clone) ⇒ [IotaDocument
](#IotaDocument)
+ * [._shallowCloneInternal()](#IotaDocument+_shallowCloneInternal) ⇒ [IotaDocument
](#IotaDocument)
+ * [._strongCountInternal()](#IotaDocument+_strongCountInternal) ⇒ number
+ * [.toJSON()](#IotaDocument+toJSON) ⇒ any
+ * [.toCoreDocument()](#IotaDocument+toCoreDocument) ⇒ [CoreDocument
](#CoreDocument)
+ * [.generateMethod(storage, keyType, alg, fragment, scope)](#IotaDocument+generateMethod) ⇒ Promise.<string>
+ * [.purgeMethod(storage, id)](#IotaDocument+purgeMethod) ⇒ Promise.<void>
+ * ~~[.createJwt(storage, fragment, payload, options)](#IotaDocument+createJwt) ⇒ [Promise.<Jws>
](#Jws)~~
+ * [.createJws(storage, fragment, payload, options)](#IotaDocument+createJws) ⇒ [Promise.<Jws>
](#Jws)
+ * [.createCredentialJwt(storage, fragment, credential, options, custom_claims)](#IotaDocument+createCredentialJwt) ⇒ [Promise.<Jwt>
](#Jwt)
+ * [.createPresentationJwt(storage, fragment, presentation, signature_options, presentation_options)](#IotaDocument+createPresentationJwt) ⇒ [Promise.<Jwt>
](#Jwt)
+ * _static_
+ * [.newWithId(id)](#IotaDocument.newWithId) ⇒ [IotaDocument
](#IotaDocument)
+ * [.unpackFromOutput(did, aliasOutput, allowEmpty)](#IotaDocument.unpackFromOutput) ⇒ [IotaDocument
](#IotaDocument)
+ * [.unpackFromBlock(network, block)](#IotaDocument.unpackFromBlock) ⇒ [Array.<IotaDocument>
](#IotaDocument)
+ * [.fromJSON(json)](#IotaDocument.fromJSON) ⇒ [IotaDocument
](#IotaDocument)
+
+
+
+### new IotaDocument(network)
+Constructs an empty IOTA DID Document with a [placeholder](#IotaDID.placeholder) identifier
+for the given `network`.
+
+
+| Param | Type |
+| --- | --- |
+| network | string
|
+
+
+
+### iotaDocument.id() ⇒ [IotaDID
](#IotaDID)
+Returns a copy of the DID Document `id`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.controller() ⇒ [Array.<IotaDID>
](#IotaDID)
+Returns a copy of the list of document controllers.
+
+NOTE: controllers are determined by the `state_controller` unlock condition of the output
+during resolution and are omitted when publishing.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.alsoKnownAs() ⇒ Array.<string>
+Returns a copy of the document's `alsoKnownAs` set.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setAlsoKnownAs(urls)
+Sets the `alsoKnownAs` property in the DID document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| urls | string
\| Array.<string>
\| null
|
+
+
+
+### iotaDocument.properties() ⇒ Map.<string, any>
+Returns a copy of the custom DID Document properties.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setPropertyUnchecked(key, value)
+Sets a custom property in the DID Document.
+If the value is set to `null`, the custom property will be removed.
+
+### WARNING
+
+This method can overwrite existing properties like `id` and result in an invalid document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| key | string
|
+| value | any
|
+
+
+
+### iotaDocument.service() ⇒ [Array.<Service>
](#Service)
+Return a set of all [Service](#Service) in the document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.insertService(service)
+Add a new [Service](#Service) to the document.
+
+Returns `true` if the service was added.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| service | [Service
](#Service) |
+
+
+
+### iotaDocument.removeService(did) ⇒ [Service
](#Service) \| undefined
+Remove a [Service](#Service) identified by the given [DIDUrl](#DIDUrl) from the document.
+
+Returns `true` if a service was removed.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| did | [DIDUrl
](#DIDUrl) |
+
+
+
+### iotaDocument.resolveService(query) ⇒ [Service
](#Service) \| undefined
+Returns the first [Service](#Service) with an `id` property matching the provided `query`,
+if present.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| query | [DIDUrl
](#DIDUrl) \| string
|
+
+
+
+### iotaDocument.methods(scope) ⇒ [Array.<VerificationMethod>
](#VerificationMethod)
+Returns a list of all [VerificationMethod](#VerificationMethod) in the DID Document,
+whose verification relationship matches `scope`.
+
+If `scope` is not set, a list over the **embedded** methods is returned.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| scope | [MethodScope
](#MethodScope) \| undefined
|
+
+
+
+### iotaDocument.insertMethod(method, scope)
+Adds a new `method` to the document in the given `scope`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| method | [VerificationMethod
](#VerificationMethod) |
+| scope | [MethodScope
](#MethodScope) |
+
+
+
+### iotaDocument.removeMethod(did) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+Removes all references to the specified Verification Method.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| did | [DIDUrl
](#DIDUrl) |
+
+
+
+### iotaDocument.resolveMethod(query, scope) ⇒ [VerificationMethod
](#VerificationMethod) \| undefined
+Returns a copy of the first verification method with an `id` property
+matching the provided `query` and the verification relationship
+specified by `scope`, if present.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| query | [DIDUrl
](#DIDUrl) \| string
|
+| scope | [MethodScope
](#MethodScope) \| undefined
|
+
+
+
+### iotaDocument.attachMethodRelationship(didUrl, relationship) ⇒ boolean
+Attaches the relationship to the given method, if the method exists.
+
+Note: The method needs to be in the set of verification methods,
+so it cannot be an embedded one.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| didUrl | [DIDUrl
](#DIDUrl) |
+| relationship | number
|
+
+
+
+### iotaDocument.detachMethodRelationship(didUrl, relationship) ⇒ boolean
+Detaches the given relationship from the given method, if the method exists.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| didUrl | [DIDUrl
](#DIDUrl) |
+| relationship | number
|
+
+
+
+### iotaDocument.verifyJws(jws, options, signatureVerifier, detachedPayload) ⇒ [DecodedJws
](#DecodedJws)
+Decodes and verifies the provided JWS according to the passed `options` and `signatureVerifier`.
+ If no `signatureVerifier` argument is provided a default verifier will be used that is (only) capable of
+verifying EdDSA signatures.
+
+Regardless of which options are passed the following conditions must be met in order for a verification attempt to
+take place.
+- The JWS must be encoded according to the JWS compact serialization.
+- The `kid` value in the protected header must be an identifier of a verification method in this DID document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| jws | [Jws
](#Jws) |
+| options | [JwsVerificationOptions
](#JwsVerificationOptions) |
+| signatureVerifier | IJwsVerifier
|
+| detachedPayload | string
\| undefined
|
+
+
+
+### iotaDocument.pack() ⇒ Uint8Array
+Serializes the document for inclusion in an Alias Output's state metadata
+with the default [StateMetadataEncoding](#StateMetadataEncoding).
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.packWithEncoding(encoding) ⇒ Uint8Array
+Serializes the document for inclusion in an Alias Output's state metadata.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| encoding | number
|
+
+
+
+### iotaDocument.metadata() ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+Returns a copy of the metadata associated with this document.
+
+NOTE: Copies all the metadata. See also `metadataCreated`, `metadataUpdated`,
+`metadataPreviousMessageId`, `metadataProof` if only a subset of the metadata required.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.metadataCreated() ⇒ [Timestamp
](#Timestamp) \| undefined
+Returns a copy of the timestamp of when the DID document was created.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setMetadataCreated(timestamp)
+Sets the timestamp of when the DID document was created.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| timestamp | [Timestamp
](#Timestamp) \| undefined
|
+
+
+
+### iotaDocument.metadataUpdated() ⇒ [Timestamp
](#Timestamp) \| undefined
+Returns a copy of the timestamp of the last DID document update.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setMetadataUpdated(timestamp)
+Sets the timestamp of the last DID document update.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| timestamp | [Timestamp
](#Timestamp) \| undefined
|
+
+
+
+### iotaDocument.metadataDeactivated() ⇒ boolean
\| undefined
+Returns a copy of the deactivated status of the DID document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setMetadataDeactivated(deactivated)
+Sets the deactivated status of the DID document.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| deactivated | boolean
\| undefined
|
+
+
+
+### iotaDocument.metadataStateControllerAddress() ⇒ string
\| undefined
+Returns a copy of the Bech32-encoded state controller address, if present.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.metadataGovernorAddress() ⇒ string
\| undefined
+Returns a copy of the Bech32-encoded governor address, if present.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.setMetadataPropertyUnchecked(key, value)
+Sets a custom property in the document metadata.
+If the value is set to `null`, the custom property will be removed.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| key | string
|
+| value | any
|
+
+
+
+### iotaDocument.revokeCredentials(serviceQuery, indices)
+If the document has a [RevocationBitmap](#RevocationBitmap) service identified by `serviceQuery`,
+revoke all specified `indices`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| serviceQuery | [DIDUrl
](#DIDUrl) \| string
|
+| indices | number
\| Array.<number>
|
+
+
+
+### iotaDocument.unrevokeCredentials(serviceQuery, indices)
+If the document has a [RevocationBitmap](#RevocationBitmap) service identified by `serviceQuery`,
+unrevoke all specified `indices`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| serviceQuery | [DIDUrl
](#DIDUrl) \| string
|
+| indices | number
\| Array.<number>
|
+
+
+
+### iotaDocument.clone() ⇒ [IotaDocument
](#IotaDocument)
+Returns a deep clone of the [IotaDocument](#IotaDocument).
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.\_shallowCloneInternal() ⇒ [IotaDocument
](#IotaDocument)
+### Warning
+This is for internal use only. Do not rely on or call this method.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.\_strongCountInternal() ⇒ number
+### Warning
+This is for internal use only. Do not rely on or call this method.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.toJSON() ⇒ any
+Serializes to a plain JS representation.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.toCoreDocument() ⇒ [CoreDocument
](#CoreDocument)
+Transforms the [IotaDocument](#IotaDocument) to its [CoreDocument](#CoreDocument) representation.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+
+### iotaDocument.generateMethod(storage, keyType, alg, fragment, scope) ⇒ Promise.<string>
+Generate new key material in the given `storage` and insert a new verification method with the corresponding
+public key material into the DID document.
+
+- If no fragment is given the `kid` of the generated JWK is used, if it is set, otherwise an error is returned.
+- The `keyType` must be compatible with the given `storage`. `Storage`s are expected to export key type constants
+for that use case.
+
+The fragment of the generated method is returned.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| keyType | string
|
+| alg | JwsAlgorithm
|
+| fragment | string
\| undefined
|
+| scope | [MethodScope
](#MethodScope) |
+
+
+
+### iotaDocument.purgeMethod(storage, id) ⇒ Promise.<void>
+Remove the method identified by the given fragment from the document and delete the corresponding key material in
+the given `storage`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| id | [DIDUrl
](#DIDUrl) |
+
+
+
+### ~~iotaDocument.createJwt(storage, fragment, payload, options) ⇒ [Promise.<Jws>
](#Jws)~~
+***Deprecated***
+
+Sign the `payload` according to `options` with the storage backed private key corresponding to the public key
+material in the verification method identified by the given `fragment.
+
+Upon success a string representing a JWS encoded according to the Compact JWS Serialization format is returned.
+See [RFC7515 section 3.1](https://www.rfc-editor.org/rfc/rfc7515#section-3.1).
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| payload | string
|
+| options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+
+
+
+### iotaDocument.createJws(storage, fragment, payload, options) ⇒ [Promise.<Jws>
](#Jws)
+Sign the `payload` according to `options` with the storage backed private key corresponding to the public key
+material in the verification method identified by the given `fragment.
+
+Upon success a string representing a JWS encoded according to the Compact JWS Serialization format is returned.
+See [RFC7515 section 3.1](https://www.rfc-editor.org/rfc/rfc7515#section-3.1).
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| payload | string
|
+| options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+
+
+
+### iotaDocument.createCredentialJwt(storage, fragment, credential, options, custom_claims) ⇒ [Promise.<Jwt>
](#Jwt)
+Produces a JWS where the payload is produced from the given `credential`
+in accordance with [VC Data Model v1.1](https://www.w3.org/TR/vc-data-model/#json-web-token).
+
+Unless the `kid` is explicitly set in the options, the `kid` in the protected header is the `id`
+of the method identified by `fragment` and the JWS signature will be produced by the corresponding
+private key backed by the `storage` in accordance with the passed `options`.
+
+The `custom_claims` can be used to set additional claims on the resulting JWT.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| credential | [Credential
](#Credential) |
+| options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+| custom_claims | Record.<string, any>
\| undefined
|
+
+
+
+### iotaDocument.createPresentationJwt(storage, fragment, presentation, signature_options, presentation_options) ⇒ [Promise.<Jwt>
](#Jwt)
+Produces a JWT where the payload is produced from the given presentation.
+in accordance with [VC Data Model v1.1](https://www.w3.org/TR/vc-data-model/#json-web-token).
+
+Unless the `kid` is explicitly set in the options, the `kid` in the protected header is the `id`
+of the method identified by `fragment` and the JWS signature will be produced by the corresponding
+private key backed by the `storage` in accordance with the passed `options`.
+
+**Kind**: instance method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| storage | [Storage
](#Storage) |
+| fragment | string
|
+| presentation | [Presentation
](#Presentation) |
+| signature_options | [JwsSignatureOptions
](#JwsSignatureOptions) |
+| presentation_options | [JwtPresentationOptions
](#JwtPresentationOptions) |
+
+
+
+### IotaDocument.newWithId(id) ⇒ [IotaDocument
](#IotaDocument)
+Constructs an empty DID Document with the given identifier.
+
+**Kind**: static method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| id | [IotaDID
](#IotaDID) |
+
+
+
+### IotaDocument.unpackFromOutput(did, aliasOutput, allowEmpty) ⇒ [IotaDocument
](#IotaDocument)
+Deserializes the document from an Alias Output.
+
+If `allowEmpty` is true, this will return an empty DID document marked as `deactivated`
+if `stateMetadata` is empty.
+
+The `tokenSupply` must be equal to the token supply of the network the DID is associated with.
+
+NOTE: `did` is required since it is omitted from the serialized DID Document and
+cannot be inferred from the state metadata. It also indicates the network, which is not
+encoded in the `AliasId` alone.
+
+**Kind**: static method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| did | [IotaDID
](#IotaDID) |
+| aliasOutput | AliasOutputBuilderParams
|
+| allowEmpty | boolean
|
+
+
+
+### IotaDocument.unpackFromBlock(network, block) ⇒ [Array.<IotaDocument>
](#IotaDocument)
+Returns all DID documents of the Alias Outputs contained in the block's transaction payload
+outputs, if any.
+
+Errors if any Alias Output does not contain a valid or empty DID Document.
+
+**Kind**: static method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| network | string
|
+| block | Block
|
+
+
+
+### IotaDocument.fromJSON(json) ⇒ [IotaDocument
](#IotaDocument)
+Deserializes an instance from a plain JS representation.
+
+**Kind**: static method of [IotaDocument
](#IotaDocument)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## IotaDocumentMetadata
+Additional attributes related to an IOTA DID Document.
+
+**Kind**: global class
+
+* [IotaDocumentMetadata](#IotaDocumentMetadata)
+ * _instance_
+ * [.created()](#IotaDocumentMetadata+created) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.updated()](#IotaDocumentMetadata+updated) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.deactivated()](#IotaDocumentMetadata+deactivated) ⇒ boolean
\| undefined
+ * [.stateControllerAddress()](#IotaDocumentMetadata+stateControllerAddress) ⇒ string
\| undefined
+ * [.governorAddress()](#IotaDocumentMetadata+governorAddress) ⇒ string
\| undefined
+ * [.properties()](#IotaDocumentMetadata+properties) ⇒ Map.<string, any>
+ * [.toJSON()](#IotaDocumentMetadata+toJSON) ⇒ any
+ * [.clone()](#IotaDocumentMetadata+clone) ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+ * _static_
+ * [.fromJSON(json)](#IotaDocumentMetadata.fromJSON) ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+
+### iotaDocumentMetadata.created() ⇒ [Timestamp
](#Timestamp) \| undefined
+Returns a copy of the timestamp of when the DID document was created.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.updated() ⇒ [Timestamp
](#Timestamp) \| undefined
+Returns a copy of the timestamp of the last DID document update.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.deactivated() ⇒ boolean
\| undefined
+Returns a copy of the deactivated status of the DID document.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.stateControllerAddress() ⇒ string
\| undefined
+Returns a copy of the Bech32-encoded state controller address, if present.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.governorAddress() ⇒ string
\| undefined
+Returns a copy of the Bech32-encoded governor address, if present.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.properties() ⇒ Map.<string, any>
+Returns a copy of the custom metadata properties.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### iotaDocumentMetadata.clone() ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+Deep clones the object.
+
+**Kind**: instance method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+
+### IotaDocumentMetadata.fromJSON(json) ⇒ [IotaDocumentMetadata
](#IotaDocumentMetadata)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [IotaDocumentMetadata
](#IotaDocumentMetadata)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## IotaIdentityClientExt
+An extension interface that provides helper functions for publication
+and resolution of DID documents in Alias Outputs.
+
+**Kind**: global class
+
+* [IotaIdentityClientExt](#IotaIdentityClientExt)
+ * [.newDidOutput(client, address, document, rentStructure)](#IotaIdentityClientExt.newDidOutput) ⇒ Promise.<AliasOutputBuilderParams>
+ * [.updateDidOutput(client, document)](#IotaIdentityClientExt.updateDidOutput) ⇒ Promise.<AliasOutputBuilderParams>
+ * [.deactivateDidOutput(client, did)](#IotaIdentityClientExt.deactivateDidOutput) ⇒ Promise.<AliasOutputBuilderParams>
+ * [.resolveDid(client, did)](#IotaIdentityClientExt.resolveDid) ⇒ [Promise.<IotaDocument>
](#IotaDocument)
+ * [.resolveDidOutput(client, did)](#IotaIdentityClientExt.resolveDidOutput) ⇒ Promise.<AliasOutputBuilderParams>
+
+
+
+### IotaIdentityClientExt.newDidOutput(client, address, document, rentStructure) ⇒ Promise.<AliasOutputBuilderParams>
+Create a DID with a new Alias Output containing the given `document`.
+
+The `address` will be set as the state controller and governor unlock conditions.
+The minimum required token deposit amount will be set according to the given
+`rent_structure`, which will be fetched from the node if not provided.
+The returned Alias Output can be further customised before publication, if desired.
+
+NOTE: this does *not* publish the Alias Output.
+
+**Kind**: static method of [IotaIdentityClientExt
](#IotaIdentityClientExt)
+
+| Param | Type |
+| --- | --- |
+| client | IIotaIdentityClient
|
+| address | Address
|
+| document | [IotaDocument
](#IotaDocument) |
+| rentStructure | IRent
\| undefined
|
+
+
+
+### IotaIdentityClientExt.updateDidOutput(client, document) ⇒ Promise.<AliasOutputBuilderParams>
+Fetches the associated Alias Output and updates it with `document` in its state metadata.
+The storage deposit on the output is left unchanged. If the size of the document increased,
+the amount should be increased manually.
+
+NOTE: this does *not* publish the updated Alias Output.
+
+**Kind**: static method of [IotaIdentityClientExt
](#IotaIdentityClientExt)
+
+| Param | Type |
+| --- | --- |
+| client | IIotaIdentityClient
|
+| document | [IotaDocument
](#IotaDocument) |
+
+
+
+### IotaIdentityClientExt.deactivateDidOutput(client, did) ⇒ Promise.<AliasOutputBuilderParams>
+Removes the DID document from the state metadata of its Alias Output,
+effectively deactivating it. The storage deposit on the output is left unchanged,
+and should be reallocated manually.
+
+Deactivating does not destroy the output. Hence, it can be re-activated by publishing
+an update containing a DID document.
+
+NOTE: this does *not* publish the updated Alias Output.
+
+**Kind**: static method of [IotaIdentityClientExt
](#IotaIdentityClientExt)
+
+| Param | Type |
+| --- | --- |
+| client | IIotaIdentityClient
|
+| did | [IotaDID
](#IotaDID) |
+
+
+
+### IotaIdentityClientExt.resolveDid(client, did) ⇒ [Promise.<IotaDocument>
](#IotaDocument)
+Resolve a [IotaDocument](#IotaDocument). Returns an empty, deactivated document if the state metadata
+of the Alias Output is empty.
+
+**Kind**: static method of [IotaIdentityClientExt
](#IotaIdentityClientExt)
+
+| Param | Type |
+| --- | --- |
+| client | IIotaIdentityClient
|
+| did | [IotaDID
](#IotaDID) |
+
+
+
+### IotaIdentityClientExt.resolveDidOutput(client, did) ⇒ Promise.<AliasOutputBuilderParams>
+Fetches the `IAliasOutput` associated with the given DID.
+
+**Kind**: static method of [IotaIdentityClientExt
](#IotaIdentityClientExt)
+
+| Param | Type |
+| --- | --- |
+| client | IIotaIdentityClient
|
+| did | [IotaDID
](#IotaDID) |
+
+
+
+## Jwk
+**Kind**: global class
+
+* [Jwk](#Jwk)
+ * [new Jwk(jwk)](#new_Jwk_new)
+ * _instance_
+ * [.kty()](#Jwk+kty) ⇒ JwkType
+ * [.use()](#Jwk+use) ⇒ JwkUse
\| undefined
+ * [.keyOps()](#Jwk+keyOps) ⇒ Array.<JwkOperation>
+ * [.alg()](#Jwk+alg) ⇒ JwsAlgorithm
\| undefined
+ * [.kid()](#Jwk+kid) ⇒ string
\| undefined
+ * [.x5u()](#Jwk+x5u) ⇒ string
\| undefined
+ * [.x5c()](#Jwk+x5c) ⇒ Array.<string>
+ * [.x5t()](#Jwk+x5t) ⇒ string
\| undefined
+ * [.x5t256()](#Jwk+x5t256) ⇒ string
\| undefined
+ * [.paramsEc()](#Jwk+paramsEc) ⇒ JwkParamsEc
\| undefined
+ * [.paramsOkp()](#Jwk+paramsOkp) ⇒ JwkParamsOkp
\| undefined
+ * [.paramsOct()](#Jwk+paramsOct) ⇒ JwkParamsOct
\| undefined
+ * [.paramsRsa()](#Jwk+paramsRsa) ⇒ JwkParamsRsa
\| undefined
+ * [.toPublic()](#Jwk+toPublic) ⇒ [Jwk
](#Jwk) \| undefined
+ * [.isPublic()](#Jwk+isPublic) ⇒ boolean
+ * [.isPrivate()](#Jwk+isPrivate) ⇒ boolean
+ * [.toJSON()](#Jwk+toJSON) ⇒ any
+ * [.clone()](#Jwk+clone) ⇒ [Jwk
](#Jwk)
+ * _static_
+ * [.fromJSON(json)](#Jwk.fromJSON) ⇒ [Jwk
](#Jwk)
+
+
+
+### new Jwk(jwk)
+
+| Param | Type |
+| --- | --- |
+| jwk | IJwkParams
|
+
+
+
+### jwk.kty() ⇒ JwkType
+Returns the value for the key type parameter (kty).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.use() ⇒ JwkUse
\| undefined
+Returns the value for the use property (use).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.keyOps() ⇒ Array.<JwkOperation>
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.alg() ⇒ JwsAlgorithm
\| undefined
+Returns the value for the algorithm property (alg).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.kid() ⇒ string
\| undefined
+Returns the value of the key ID property (kid).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.x5u() ⇒ string
\| undefined
+Returns the value of the X.509 URL property (x5u).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.x5c() ⇒ Array.<string>
+Returns the value of the X.509 certificate chain property (x5c).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.x5t() ⇒ string
\| undefined
+Returns the value of the X.509 certificate SHA-1 thumbprint property (x5t).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.x5t256() ⇒ string
\| undefined
+Returns the value of the X.509 certificate SHA-256 thumbprint property (x5t#S256).
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.paramsEc() ⇒ JwkParamsEc
\| undefined
+If this JWK is of kty EC, returns those parameters.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.paramsOkp() ⇒ JwkParamsOkp
\| undefined
+If this JWK is of kty OKP, returns those parameters.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.paramsOct() ⇒ JwkParamsOct
\| undefined
+If this JWK is of kty OCT, returns those parameters.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.paramsRsa() ⇒ JwkParamsRsa
\| undefined
+If this JWK is of kty RSA, returns those parameters.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.toPublic() ⇒ [Jwk
](#Jwk) \| undefined
+Returns a clone of the [Jwk](#Jwk) with _all_ private key components unset.
+Nothing is returned when `kty = oct` as this key type is not considered public by this library.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.isPublic() ⇒ boolean
+Returns `true` if _all_ private key components of the key are unset, `false` otherwise.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.isPrivate() ⇒ boolean
+Returns `true` if _all_ private key components of the key are set, `false` otherwise.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### jwk.clone() ⇒ [Jwk
](#Jwk)
+Deep clones the object.
+
+**Kind**: instance method of [Jwk
](#Jwk)
+
+
+### Jwk.fromJSON(json) ⇒ [Jwk
](#Jwk)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Jwk
](#Jwk)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwkGenOutput
+The result of a key generation in `JwkStorage`.
+
+**Kind**: global class
+
+* [JwkGenOutput](#JwkGenOutput)
+ * [new JwkGenOutput(key_id, jwk)](#new_JwkGenOutput_new)
+ * _instance_
+ * [.jwk()](#JwkGenOutput+jwk) ⇒ [Jwk
](#Jwk)
+ * [.keyId()](#JwkGenOutput+keyId) ⇒ string
+ * [.toJSON()](#JwkGenOutput+toJSON) ⇒ any
+ * [.clone()](#JwkGenOutput+clone) ⇒ [JwkGenOutput
](#JwkGenOutput)
+ * _static_
+ * [.fromJSON(json)](#JwkGenOutput.fromJSON) ⇒ [JwkGenOutput
](#JwkGenOutput)
+
+
+
+### new JwkGenOutput(key_id, jwk)
+
+| Param | Type |
+| --- | --- |
+| key_id | string
|
+| jwk | [Jwk
](#Jwk) |
+
+
+
+### jwkGenOutput.jwk() ⇒ [Jwk
](#Jwk)
+Returns the generated public [Jwk](#Jwk).
+
+**Kind**: instance method of [JwkGenOutput
](#JwkGenOutput)
+
+
+### jwkGenOutput.keyId() ⇒ string
+Returns the key id of the generated [Jwk](#Jwk).
+
+**Kind**: instance method of [JwkGenOutput
](#JwkGenOutput)
+
+
+### jwkGenOutput.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwkGenOutput
](#JwkGenOutput)
+
+
+### jwkGenOutput.clone() ⇒ [JwkGenOutput
](#JwkGenOutput)
+Deep clones the object.
+
+**Kind**: instance method of [JwkGenOutput
](#JwkGenOutput)
+
+
+### JwkGenOutput.fromJSON(json) ⇒ [JwkGenOutput
](#JwkGenOutput)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwkGenOutput
](#JwkGenOutput)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Jws
+A wrapper around a JSON Web Signature (JWS).
+
+**Kind**: global class
+
+* [Jws](#Jws)
+ * [new Jws(jws_string)](#new_Jws_new)
+ * [.toString()](#Jws+toString) ⇒ string
+
+
+
+### new Jws(jws_string)
+Creates a new [Jws](#Jws) from the given string.
+
+
+| Param | Type |
+| --- | --- |
+| jws_string | string
|
+
+
+
+### jws.toString() ⇒ string
+Returns a clone of the JWS string.
+
+**Kind**: instance method of [Jws
](#Jws)
+
+
+## JwsHeader
+**Kind**: global class
+
+* [JwsHeader](#JwsHeader)
+ * [new JwsHeader()](#new_JwsHeader_new)
+ * _instance_
+ * [.alg()](#JwsHeader+alg) ⇒ JwsAlgorithm
\| undefined
+ * [.setAlg(value)](#JwsHeader+setAlg)
+ * [.b64()](#JwsHeader+b64) ⇒ boolean
\| undefined
+ * [.setB64(value)](#JwsHeader+setB64)
+ * [.custom()](#JwsHeader+custom) ⇒ Record.<string, any>
\| undefined
+ * [.has(claim)](#JwsHeader+has) ⇒ boolean
+ * [.isDisjoint(other)](#JwsHeader+isDisjoint) ⇒ boolean
+ * [.jku()](#JwsHeader+jku) ⇒ string
\| undefined
+ * [.setJku(value)](#JwsHeader+setJku)
+ * [.jwk()](#JwsHeader+jwk) ⇒ [Jwk
](#Jwk) \| undefined
+ * [.setJwk(value)](#JwsHeader+setJwk)
+ * [.kid()](#JwsHeader+kid) ⇒ string
\| undefined
+ * [.setKid(value)](#JwsHeader+setKid)
+ * [.x5u()](#JwsHeader+x5u) ⇒ string
\| undefined
+ * [.setX5u(value)](#JwsHeader+setX5u)
+ * [.x5c()](#JwsHeader+x5c) ⇒ Array.<string>
+ * [.setX5c(value)](#JwsHeader+setX5c)
+ * [.x5t()](#JwsHeader+x5t) ⇒ string
\| undefined
+ * [.setX5t(value)](#JwsHeader+setX5t)
+ * [.x5tS256()](#JwsHeader+x5tS256) ⇒ string
\| undefined
+ * [.setX5tS256(value)](#JwsHeader+setX5tS256)
+ * [.typ()](#JwsHeader+typ) ⇒ string
\| undefined
+ * [.setTyp(value)](#JwsHeader+setTyp)
+ * [.cty()](#JwsHeader+cty) ⇒ string
\| undefined
+ * [.setCty(value)](#JwsHeader+setCty)
+ * [.crit()](#JwsHeader+crit) ⇒ Array.<string>
+ * [.setCrit(value)](#JwsHeader+setCrit)
+ * [.url()](#JwsHeader+url) ⇒ string
\| undefined
+ * [.setUrl(value)](#JwsHeader+setUrl)
+ * [.nonce()](#JwsHeader+nonce) ⇒ string
\| undefined
+ * [.setNonce(value)](#JwsHeader+setNonce)
+ * [.toJSON()](#JwsHeader+toJSON) ⇒ any
+ * [.clone()](#JwsHeader+clone) ⇒ [JwsHeader
](#JwsHeader)
+ * _static_
+ * [.fromJSON(json)](#JwsHeader.fromJSON) ⇒ [JwsHeader
](#JwsHeader)
+
+
+
+### new JwsHeader()
+Create a new empty [JwsHeader](#JwsHeader).
+
+
+
+### jwsHeader.alg() ⇒ JwsAlgorithm
\| undefined
+Returns the value for the algorithm claim (alg).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setAlg(value)
+Sets a value for the algorithm claim (alg).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | JwsAlgorithm
|
+
+
+
+### jwsHeader.b64() ⇒ boolean
\| undefined
+Returns the value of the base64url-encode payload claim (b64).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setB64(value)
+Sets a value for the base64url-encode payload claim (b64).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | boolean
|
+
+
+
+### jwsHeader.custom() ⇒ Record.<string, any>
\| undefined
+Additional header parameters.
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.has(claim) ⇒ boolean
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| claim | string
|
+
+
+
+### jwsHeader.isDisjoint(other) ⇒ boolean
+Returns `true` if none of the fields are set in both `self` and `other`.
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| other | [JwsHeader
](#JwsHeader) |
+
+
+
+### jwsHeader.jku() ⇒ string
\| undefined
+Returns the value of the JWK Set URL claim (jku).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setJku(value)
+Sets a value for the JWK Set URL claim (jku).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.jwk() ⇒ [Jwk
](#Jwk) \| undefined
+Returns the value of the JWK claim (jwk).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setJwk(value)
+Sets a value for the JWK claim (jwk).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | [Jwk
](#Jwk) |
+
+
+
+### jwsHeader.kid() ⇒ string
\| undefined
+Returns the value of the key ID claim (kid).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setKid(value)
+Sets a value for the key ID claim (kid).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.x5u() ⇒ string
\| undefined
+Returns the value of the X.509 URL claim (x5u).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setX5u(value)
+Sets a value for the X.509 URL claim (x5u).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.x5c() ⇒ Array.<string>
+Returns the value of the X.509 certificate chain claim (x5c).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setX5c(value)
+Sets values for the X.509 certificate chain claim (x5c).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | Array.<string>
|
+
+
+
+### jwsHeader.x5t() ⇒ string
\| undefined
+Returns the value of the X.509 certificate SHA-1 thumbprint claim (x5t).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setX5t(value)
+Sets a value for the X.509 certificate SHA-1 thumbprint claim (x5t).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.x5tS256() ⇒ string
\| undefined
+Returns the value of the X.509 certificate SHA-256 thumbprint claim
+(x5t#S256).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setX5tS256(value)
+Sets a value for the X.509 certificate SHA-256 thumbprint claim
+(x5t#S256).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.typ() ⇒ string
\| undefined
+Returns the value of the token type claim (typ).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setTyp(value)
+Sets a value for the token type claim (typ).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.cty() ⇒ string
\| undefined
+Returns the value of the content type claim (cty).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setCty(value)
+Sets a value for the content type claim (cty).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.crit() ⇒ Array.<string>
+Returns the value of the critical claim (crit).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setCrit(value)
+Sets values for the critical claim (crit).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | Array.<string>
|
+
+
+
+### jwsHeader.url() ⇒ string
\| undefined
+Returns the value of the url claim (url).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setUrl(value)
+Sets a value for the url claim (url).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.nonce() ⇒ string
\| undefined
+Returns the value of the nonce claim (nonce).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.setNonce(value)
+Sets a value for the nonce claim (nonce).
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsHeader.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### jwsHeader.clone() ⇒ [JwsHeader
](#JwsHeader)
+Deep clones the object.
+
+**Kind**: instance method of [JwsHeader
](#JwsHeader)
+
+
+### JwsHeader.fromJSON(json) ⇒ [JwsHeader
](#JwsHeader)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwsHeader
](#JwsHeader)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwsSignatureOptions
+**Kind**: global class
+
+* [JwsSignatureOptions](#JwsSignatureOptions)
+ * [new JwsSignatureOptions(options)](#new_JwsSignatureOptions_new)
+ * _instance_
+ * [.setAttachJwk(value)](#JwsSignatureOptions+setAttachJwk)
+ * [.setB64(value)](#JwsSignatureOptions+setB64)
+ * [.setTyp(value)](#JwsSignatureOptions+setTyp)
+ * [.setCty(value)](#JwsSignatureOptions+setCty)
+ * [.serUrl(value)](#JwsSignatureOptions+serUrl)
+ * [.setNonce(value)](#JwsSignatureOptions+setNonce)
+ * [.setKid(value)](#JwsSignatureOptions+setKid)
+ * [.setDetachedPayload(value)](#JwsSignatureOptions+setDetachedPayload)
+ * [.setCustomHeaderParameters(value)](#JwsSignatureOptions+setCustomHeaderParameters)
+ * [.toJSON()](#JwsSignatureOptions+toJSON) ⇒ any
+ * [.clone()](#JwsSignatureOptions+clone) ⇒ [JwsSignatureOptions
](#JwsSignatureOptions)
+ * _static_
+ * [.fromJSON(json)](#JwsSignatureOptions.fromJSON) ⇒ [JwsSignatureOptions
](#JwsSignatureOptions)
+
+
+
+### new JwsSignatureOptions(options)
+
+| Param | Type |
+| --- | --- |
+| options | IJwsSignatureOptions
\| undefined
|
+
+
+
+### jwsSignatureOptions.setAttachJwk(value)
+Replace the value of the `attachJwk` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | boolean
|
+
+
+
+### jwsSignatureOptions.setB64(value)
+Replace the value of the `b64` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | boolean
|
+
+
+
+### jwsSignatureOptions.setTyp(value)
+Replace the value of the `typ` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsSignatureOptions.setCty(value)
+Replace the value of the `cty` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsSignatureOptions.serUrl(value)
+Replace the value of the `url` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsSignatureOptions.setNonce(value)
+Replace the value of the `nonce` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsSignatureOptions.setKid(value)
+Replace the value of the `kid` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsSignatureOptions.setDetachedPayload(value)
+Replace the value of the `detached_payload` field.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | boolean
|
+
+
+
+### jwsSignatureOptions.setCustomHeaderParameters(value)
+Add additional header parameters.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| value | Record.<string, any>
|
+
+
+
+### jwsSignatureOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+
+### jwsSignatureOptions.clone() ⇒ [JwsSignatureOptions
](#JwsSignatureOptions)
+Deep clones the object.
+
+**Kind**: instance method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+
+### JwsSignatureOptions.fromJSON(json) ⇒ [JwsSignatureOptions
](#JwsSignatureOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwsSignatureOptions
](#JwsSignatureOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwsVerificationOptions
+**Kind**: global class
+
+* [JwsVerificationOptions](#JwsVerificationOptions)
+ * [new JwsVerificationOptions(options)](#new_JwsVerificationOptions_new)
+ * _instance_
+ * [.setNonce(value)](#JwsVerificationOptions+setNonce)
+ * [.setMethodScope(value)](#JwsVerificationOptions+setMethodScope)
+ * [.setMethodId(value)](#JwsVerificationOptions+setMethodId)
+ * [.toJSON()](#JwsVerificationOptions+toJSON) ⇒ any
+ * [.clone()](#JwsVerificationOptions+clone) ⇒ [JwsVerificationOptions
](#JwsVerificationOptions)
+ * _static_
+ * [.fromJSON(json)](#JwsVerificationOptions.fromJSON) ⇒ [JwsVerificationOptions
](#JwsVerificationOptions)
+
+
+
+### new JwsVerificationOptions(options)
+Creates a new [JwsVerificationOptions](#JwsVerificationOptions) from the given fields.
+
+
+| Param | Type |
+| --- | --- |
+| options | IJwsVerificationOptions
\| undefined
|
+
+
+
+### jwsVerificationOptions.setNonce(value)
+Set the expected value for the `nonce` parameter of the protected header.
+
+**Kind**: instance method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+| Param | Type |
+| --- | --- |
+| value | string
|
+
+
+
+### jwsVerificationOptions.setMethodScope(value)
+Set the scope of the verification methods that may be used to verify the given JWS.
+
+**Kind**: instance method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+| Param | Type |
+| --- | --- |
+| value | [MethodScope
](#MethodScope) |
+
+
+
+### jwsVerificationOptions.setMethodId(value)
+Set the DID URl of the method, whose JWK should be used to verify the JWS.
+
+**Kind**: instance method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+| Param | Type |
+| --- | --- |
+| value | [DIDUrl
](#DIDUrl) |
+
+
+
+### jwsVerificationOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+
+### jwsVerificationOptions.clone() ⇒ [JwsVerificationOptions
](#JwsVerificationOptions)
+Deep clones the object.
+
+**Kind**: instance method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+
+### JwsVerificationOptions.fromJSON(json) ⇒ [JwsVerificationOptions
](#JwsVerificationOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwsVerificationOptions
](#JwsVerificationOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Jwt
+A wrapper around a JSON Web Token (JWK).
+
+**Kind**: global class
+
+* [Jwt](#Jwt)
+ * [new Jwt(jwt_string)](#new_Jwt_new)
+ * _instance_
+ * [.toString()](#Jwt+toString) ⇒ string
+ * [.toJSON()](#Jwt+toJSON) ⇒ any
+ * [.clone()](#Jwt+clone) ⇒ [Jwt
](#Jwt)
+ * _static_
+ * [.fromJSON(json)](#Jwt.fromJSON) ⇒ [Jwt
](#Jwt)
+
+
+
+### new Jwt(jwt_string)
+Creates a new [Jwt](#Jwt) from the given string.
+
+
+| Param | Type |
+| --- | --- |
+| jwt_string | string
|
+
+
+
+### jwt.toString() ⇒ string
+Returns a clone of the JWT string.
+
+**Kind**: instance method of [Jwt
](#Jwt)
+
+
+### jwt.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Jwt
](#Jwt)
+
+
+### jwt.clone() ⇒ [Jwt
](#Jwt)
+Deep clones the object.
+
+**Kind**: instance method of [Jwt
](#Jwt)
+
+
+### Jwt.fromJSON(json) ⇒ [Jwt
](#Jwt)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Jwt
](#Jwt)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwtCredentialValidationOptions
+Options to declare validation criteria when validating credentials.
+
+**Kind**: global class
+
+* [JwtCredentialValidationOptions](#JwtCredentialValidationOptions)
+ * [new JwtCredentialValidationOptions(options)](#new_JwtCredentialValidationOptions_new)
+ * _instance_
+ * [.toJSON()](#JwtCredentialValidationOptions+toJSON) ⇒ any
+ * [.clone()](#JwtCredentialValidationOptions+clone) ⇒ [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+ * _static_
+ * [.fromJSON(json)](#JwtCredentialValidationOptions.fromJSON) ⇒ [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+
+
+
+### new JwtCredentialValidationOptions(options)
+
+| Param | Type |
+| --- | --- |
+| options | IJwtCredentialValidationOptions
\| undefined
|
+
+
+
+### jwtCredentialValidationOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+
+
+### jwtCredentialValidationOptions.clone() ⇒ [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+Deep clones the object.
+
+**Kind**: instance method of [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+
+
+### JwtCredentialValidationOptions.fromJSON(json) ⇒ [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwtCredentialValidator
+A type for decoding and validating [Credential](#Credential).
+
+**Kind**: global class
+
+* [JwtCredentialValidator](#JwtCredentialValidator)
+ * [new JwtCredentialValidator(signatureVerifier)](#new_JwtCredentialValidator_new)
+ * _instance_
+ * [.validate(credential_jwt, issuer, options, fail_fast)](#JwtCredentialValidator+validate) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+ * [.verifySignature(credential, trustedIssuers, options)](#JwtCredentialValidator+verifySignature) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+ * _static_
+ * [.checkExpiresOnOrAfter(credential, timestamp)](#JwtCredentialValidator.checkExpiresOnOrAfter)
+ * [.checkIssuedOnOrBefore(credential, timestamp)](#JwtCredentialValidator.checkIssuedOnOrBefore)
+ * [.checkSubjectHolderRelationship(credential, holder, relationship)](#JwtCredentialValidator.checkSubjectHolderRelationship)
+ * [.checkStatus(credential, trustedIssuers, statusCheck)](#JwtCredentialValidator.checkStatus)
+ * [.checkStatusWithStatusList2021(credential, status_list, status_check)](#JwtCredentialValidator.checkStatusWithStatusList2021)
+ * [.extractIssuer(credential)](#JwtCredentialValidator.extractIssuer) ⇒ [CoreDID
](#CoreDID)
+ * [.extractIssuerFromJwt(credential)](#JwtCredentialValidator.extractIssuerFromJwt) ⇒ [CoreDID
](#CoreDID)
+
+
+
+### new JwtCredentialValidator(signatureVerifier)
+Creates a new [JwtCredentialValidator](#JwtCredentialValidator). If a `signatureVerifier` is provided it will be used when
+verifying decoded JWS signatures, otherwise the default which is only capable of handling the `EdDSA`
+algorithm will be used.
+
+
+| Param | Type |
+| --- | --- |
+| signatureVerifier | IJwsVerifier
|
+
+
+
+### jwtCredentialValidator.validate(credential_jwt, issuer, options, fail_fast) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+Decodes and validates a [Credential](#Credential) issued as a JWS. A [DecodedJwtCredential](#DecodedJwtCredential) is returned upon
+success.
+
+The following properties are validated according to `options`:
+- the issuer's signature on the JWS,
+- the expiration date,
+- the issuance date,
+- the semantic structure.
+
+# Warning
+The lack of an error returned from this method is in of itself not enough to conclude that the credential can be
+trusted. This section contains more information on additional checks that should be carried out before and after
+calling this method.
+
+## The state of the issuer's DID Document
+The caller must ensure that `issuer` represents an up-to-date DID Document.
+
+## Properties that are not validated
+ There are many properties defined in [The Verifiable Credentials Data Model](https://www.w3.org/TR/vc-data-model/) that are **not** validated, such as:
+`proof`, `credentialStatus`, `type`, `credentialSchema`, `refreshService` **and more**.
+These should be manually checked after validation, according to your requirements.
+
+# Errors
+An error is returned whenever a validated condition is not satisfied.
+
+**Kind**: instance method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential_jwt | [Jwt
](#Jwt) |
+| issuer | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| options | [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions) |
+| fail_fast | number
|
+
+
+
+### jwtCredentialValidator.verifySignature(credential, trustedIssuers, options) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+Decode and verify the JWS signature of a [Credential](#Credential) issued as a JWT using the DID Document of a trusted
+issuer.
+
+A [DecodedJwtCredential](#DecodedJwtCredential) is returned upon success.
+
+# Warning
+The caller must ensure that the DID Documents of the trusted issuers are up-to-date.
+
+## Proofs
+ Only the JWS signature is verified. If the [Credential](#Credential) contains a `proof` property this will not be
+verified by this method.
+
+# Errors
+This method immediately returns an error if
+the credential issuer' url cannot be parsed to a DID belonging to one of the trusted issuers. Otherwise an attempt
+to verify the credential's signature will be made and an error is returned upon failure.
+
+**Kind**: instance method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Jwt
](#Jwt) |
+| trustedIssuers | Array.<(CoreDocument\|IToCoreDocument)>
|
+| options | [JwsVerificationOptions
](#JwsVerificationOptions) |
+
+
+
+### JwtCredentialValidator.checkExpiresOnOrAfter(credential, timestamp)
+Validate that the credential expires on or after the specified timestamp.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| timestamp | [Timestamp
](#Timestamp) |
+
+
+
+### JwtCredentialValidator.checkIssuedOnOrBefore(credential, timestamp)
+Validate that the credential is issued on or before the specified timestamp.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| timestamp | [Timestamp
](#Timestamp) |
+
+
+
+### JwtCredentialValidator.checkSubjectHolderRelationship(credential, holder, relationship)
+Validate that the relationship between the `holder` and the credential subjects is in accordance with
+`relationship`. The `holder` parameter is expected to be the URL of the holder.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| holder | string
|
+| relationship | number
|
+
+
+
+### JwtCredentialValidator.checkStatus(credential, trustedIssuers, statusCheck)
+Checks whether the credential status has been revoked.
+
+Only supports `RevocationBitmap2022`.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| trustedIssuers | Array.<(CoreDocument\|IToCoreDocument)>
|
+| statusCheck | number
|
+
+
+
+### JwtCredentialValidator.checkStatusWithStatusList2021(credential, status_list, status_check)
+Checks wheter the credential status has been revoked using `StatusList2021`.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| status_list | [StatusList2021Credential
](#StatusList2021Credential) |
+| status_check | number
|
+
+
+
+### JwtCredentialValidator.extractIssuer(credential) ⇒ [CoreDID
](#CoreDID)
+Utility for extracting the issuer field of a [Credential](#Credential) as a DID.
+
+### Errors
+
+Fails if the issuer field is not a valid DID.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+
+
+
+### JwtCredentialValidator.extractIssuerFromJwt(credential) ⇒ [CoreDID
](#CoreDID)
+Utility for extracting the issuer field of a credential in JWT representation as DID.
+
+# Errors
+
+If the JWT decoding fails or the issuer field is not a valid DID.
+
+**Kind**: static method of [JwtCredentialValidator
](#JwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [Jwt
](#Jwt) |
+
+
+
+## JwtDomainLinkageValidator
+A validator for a Domain Linkage Configuration and Credentials.
+
+**Kind**: global class
+
+* [JwtDomainLinkageValidator](#JwtDomainLinkageValidator)
+ * [new JwtDomainLinkageValidator(signatureVerifier)](#new_JwtDomainLinkageValidator_new)
+ * [.validateLinkage(issuer, configuration, domain, options)](#JwtDomainLinkageValidator+validateLinkage)
+ * [.validateCredential(issuer, credentialJwt, domain, options)](#JwtDomainLinkageValidator+validateCredential)
+
+
+
+### new JwtDomainLinkageValidator(signatureVerifier)
+Creates a new [JwtDomainLinkageValidator](#JwtDomainLinkageValidator). If a `signatureVerifier` is provided it will be used when
+verifying decoded JWS signatures, otherwise the default which is only capable of handling the `EdDSA`
+algorithm will be used.
+
+
+| Param | Type |
+| --- | --- |
+| signatureVerifier | IJwsVerifier
|
+
+
+
+### jwtDomainLinkageValidator.validateLinkage(issuer, configuration, domain, options)
+Validates the linkage between a domain and a DID.
+[DomainLinkageConfiguration](#DomainLinkageConfiguration) is validated according to [DID Configuration Resource Verification](https://identity.foundation/.well-known/resources/did-configuration/#did-configuration-resource-verification).
+
+Linkage is valid if no error is thrown.
+
+# Note:
+- Only the [JSON Web Token Proof Format](https://identity.foundation/.well-known/resources/did-configuration/#json-web-token-proof-format)
+ is supported.
+- Only the Credential issued by `issuer` is verified.
+
+# Errors
+
+ - Semantic structure of `configuration` is invalid.
+ - `configuration` includes multiple credentials issued by `issuer`.
+ - Validation of the matched Domain Linkage Credential fails.
+
+**Kind**: instance method of [JwtDomainLinkageValidator
](#JwtDomainLinkageValidator)
+
+| Param | Type |
+| --- | --- |
+| issuer | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| configuration | [DomainLinkageConfiguration
](#DomainLinkageConfiguration) |
+| domain | string
|
+| options | [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions) |
+
+
+
+### jwtDomainLinkageValidator.validateCredential(issuer, credentialJwt, domain, options)
+Validates a [Domain Linkage Credential](https://identity.foundation/.well-known/resources/did-configuration/#domain-linkage-credential).
+
+Error will be thrown in case the validation fails.
+
+**Kind**: instance method of [JwtDomainLinkageValidator
](#JwtDomainLinkageValidator)
+
+| Param | Type |
+| --- | --- |
+| issuer | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| credentialJwt | [Jwt
](#Jwt) |
+| domain | string
|
+| options | [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions) |
+
+
+
+## JwtPresentationOptions
+**Kind**: global class
+
+* [JwtPresentationOptions](#JwtPresentationOptions)
+ * [new JwtPresentationOptions(options)](#new_JwtPresentationOptions_new)
+ * _instance_
+ * [.toJSON()](#JwtPresentationOptions+toJSON) ⇒ any
+ * [.clone()](#JwtPresentationOptions+clone) ⇒ [JwtPresentationOptions
](#JwtPresentationOptions)
+ * _static_
+ * [.fromJSON(json)](#JwtPresentationOptions.fromJSON) ⇒ [JwtPresentationOptions
](#JwtPresentationOptions)
+
+
+
+### new JwtPresentationOptions(options)
+Creates a new [JwtPresentationOptions](#JwtPresentationOptions) from the given fields.
+
+Throws an error if any of the options are invalid.
+
+
+| Param | Type |
+| --- | --- |
+| options | IJwtPresentationOptions
\| undefined
|
+
+
+
+### jwtPresentationOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwtPresentationOptions
](#JwtPresentationOptions)
+
+
+### jwtPresentationOptions.clone() ⇒ [JwtPresentationOptions
](#JwtPresentationOptions)
+Deep clones the object.
+
+**Kind**: instance method of [JwtPresentationOptions
](#JwtPresentationOptions)
+
+
+### JwtPresentationOptions.fromJSON(json) ⇒ [JwtPresentationOptions
](#JwtPresentationOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwtPresentationOptions
](#JwtPresentationOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwtPresentationValidationOptions
+Options to declare validation criteria when validating presentation.
+
+**Kind**: global class
+
+* [JwtPresentationValidationOptions](#JwtPresentationValidationOptions)
+ * [new JwtPresentationValidationOptions(options)](#new_JwtPresentationValidationOptions_new)
+ * _instance_
+ * [.toJSON()](#JwtPresentationValidationOptions+toJSON) ⇒ any
+ * [.clone()](#JwtPresentationValidationOptions+clone) ⇒ [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+ * _static_
+ * [.fromJSON(json)](#JwtPresentationValidationOptions.fromJSON) ⇒ [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+
+
+
+### new JwtPresentationValidationOptions(options)
+Creates a new [JwtPresentationValidationOptions](#JwtPresentationValidationOptions) from the given fields.
+
+Throws an error if any of the options are invalid.
+
+
+| Param | Type |
+| --- | --- |
+| options | IJwtPresentationValidationOptions
\| undefined
|
+
+
+
+### jwtPresentationValidationOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+
+
+### jwtPresentationValidationOptions.clone() ⇒ [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+Deep clones the object.
+
+**Kind**: instance method of [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+
+
+### JwtPresentationValidationOptions.fromJSON(json) ⇒ [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## JwtPresentationValidator
+**Kind**: global class
+
+* [JwtPresentationValidator](#JwtPresentationValidator)
+ * [new JwtPresentationValidator(signatureVerifier)](#new_JwtPresentationValidator_new)
+ * _instance_
+ * [.validate(presentationJwt, holder, validation_options)](#JwtPresentationValidator+validate) ⇒ [DecodedJwtPresentation
](#DecodedJwtPresentation)
+ * _static_
+ * [.checkStructure(presentation)](#JwtPresentationValidator.checkStructure)
+ * [.extractHolder(presentation)](#JwtPresentationValidator.extractHolder) ⇒ [CoreDID
](#CoreDID)
+
+
+
+### new JwtPresentationValidator(signatureVerifier)
+Creates a new [JwtPresentationValidator](#JwtPresentationValidator). If a `signatureVerifier` is provided it will be used when
+verifying decoded JWS signatures, otherwise the default which is only capable of handling the `EdDSA`
+algorithm will be used.
+
+
+| Param | Type |
+| --- | --- |
+| signatureVerifier | IJwsVerifier
|
+
+
+
+### jwtPresentationValidator.validate(presentationJwt, holder, validation_options) ⇒ [DecodedJwtPresentation
](#DecodedJwtPresentation)
+Validates a [Presentation](#Presentation) encoded as a [Jwt](#Jwt).
+
+The following properties are validated according to `options`:
+- the JWT can be decoded into a semantically valid presentation.
+- the expiration and issuance date contained in the JWT claims.
+- the holder's signature.
+
+Validation is done with respect to the properties set in `options`.
+
+# Warning
+
+* This method does NOT validate the constituent credentials and therefore also not the relationship between the
+credentials' subjects and the presentation holder. This can be done with [JwtCredentialValidationOptions](#JwtCredentialValidationOptions).
+* The lack of an error returned from this method is in of itself not enough to conclude that the presentation can
+be trusted. This section contains more information on additional checks that should be carried out before and
+after calling this method.
+
+## The state of the supplied DID Documents.
+
+The caller must ensure that the DID Documents in `holder` are up-to-date.
+
+# Errors
+
+An error is returned whenever a validated condition is not satisfied or when decoding fails.
+
+**Kind**: instance method of [JwtPresentationValidator
](#JwtPresentationValidator)
+
+| Param | Type |
+| --- | --- |
+| presentationJwt | [Jwt
](#Jwt) |
+| holder | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| validation_options | [JwtPresentationValidationOptions
](#JwtPresentationValidationOptions) |
+
+
+
+### JwtPresentationValidator.checkStructure(presentation)
+Validates the semantic structure of the [Presentation](#Presentation).
+
+**Kind**: static method of [JwtPresentationValidator
](#JwtPresentationValidator)
+
+| Param | Type |
+| --- | --- |
+| presentation | [Presentation
](#Presentation) |
+
+
+
+### JwtPresentationValidator.extractHolder(presentation) ⇒ [CoreDID
](#CoreDID)
+Attempt to extract the holder of the presentation.
+
+# Errors:
+* If deserialization/decoding of the presentation fails.
+* If the holder can't be parsed as DIDs.
+
+**Kind**: static method of [JwtPresentationValidator
](#JwtPresentationValidator)
+
+| Param | Type |
+| --- | --- |
+| presentation | [Jwt
](#Jwt) |
+
+
+
+## KeyBindingJWTValidationOptions
+Options to declare validation criteria when validating credentials.
+
+**Kind**: global class
+
+* [KeyBindingJWTValidationOptions](#KeyBindingJWTValidationOptions)
+ * [new KeyBindingJWTValidationOptions(options)](#new_KeyBindingJWTValidationOptions_new)
+ * _instance_
+ * [.toJSON()](#KeyBindingJWTValidationOptions+toJSON) ⇒ any
+ * [.clone()](#KeyBindingJWTValidationOptions+clone) ⇒ [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+ * _static_
+ * [.fromJSON(json)](#KeyBindingJWTValidationOptions.fromJSON) ⇒ [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+
+
+
+### new KeyBindingJWTValidationOptions(options)
+
+| Param | Type |
+| --- | --- |
+| options | IKeyBindingJWTValidationOptions
\| undefined
|
+
+
+
+### keyBindingJWTValidationOptions.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+
+
+### keyBindingJWTValidationOptions.clone() ⇒ [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+Deep clones the object.
+
+**Kind**: instance method of [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+
+
+### KeyBindingJWTValidationOptions.fromJSON(json) ⇒ [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## KeyBindingJwtClaims
+Claims set for key binding JWT.
+
+**Kind**: global class
+
+* [KeyBindingJwtClaims](#KeyBindingJwtClaims)
+ * [new KeyBindingJwtClaims(jwt, disclosures, nonce, aud, issued_at, custom_properties)](#new_KeyBindingJwtClaims_new)
+ * _instance_
+ * [.toString()](#KeyBindingJwtClaims+toString) ⇒ string
+ * [.iat()](#KeyBindingJwtClaims+iat) ⇒ bigint
+ * [.aud()](#KeyBindingJwtClaims+aud) ⇒ string
+ * [.nonce()](#KeyBindingJwtClaims+nonce) ⇒ string
+ * [.sdHash()](#KeyBindingJwtClaims+sdHash) ⇒ string
+ * [.customProperties()](#KeyBindingJwtClaims+customProperties) ⇒ Record.<string, any>
+ * [.toJSON()](#KeyBindingJwtClaims+toJSON) ⇒ any
+ * [.clone()](#KeyBindingJwtClaims+clone) ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+ * _static_
+ * [.keyBindingJwtHeaderTyp()](#KeyBindingJwtClaims.keyBindingJwtHeaderTyp) ⇒ string
+ * [.fromJSON(json)](#KeyBindingJwtClaims.fromJSON) ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+
+### new KeyBindingJwtClaims(jwt, disclosures, nonce, aud, issued_at, custom_properties)
+Creates a new [`KeyBindingJwtClaims`].
+When `issued_at` is left as None, it will automatically default to the current time.
+
+# Error
+When `issued_at` is set to `None` and the system returns time earlier than `SystemTime::UNIX_EPOCH`.
+
+
+| Param | Type |
+| --- | --- |
+| jwt | string
|
+| disclosures | Array.<string>
|
+| nonce | string
|
+| aud | string
|
+| issued_at | [Timestamp
](#Timestamp) \| undefined
|
+| custom_properties | Record.<string, any>
\| undefined
|
+
+
+
+### keyBindingJwtClaims.toString() ⇒ string
+Returns a string representation of the claims.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.iat() ⇒ bigint
+Returns a copy of the issued at `iat` property.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.aud() ⇒ string
+Returns a copy of the audience `aud` property.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.nonce() ⇒ string
+Returns a copy of the `nonce` property.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.sdHash() ⇒ string
+Returns a copy of the `sd_hash` property.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.customProperties() ⇒ Record.<string, any>
+Returns a copy of the custom properties.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### keyBindingJwtClaims.clone() ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+Deep clones the object.
+
+**Kind**: instance method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### KeyBindingJwtClaims.keyBindingJwtHeaderTyp() ⇒ string
+Returns the value of the `typ` property of the JWT header according to
+https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-07.html#name-key-binding-jwt
+
+**Kind**: static method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+### KeyBindingJwtClaims.fromJSON(json) ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## LinkedDomainService
+**Kind**: global class
+
+* [LinkedDomainService](#LinkedDomainService)
+ * [new LinkedDomainService(options)](#new_LinkedDomainService_new)
+ * _instance_
+ * [.domains()](#LinkedDomainService+domains) ⇒ Array.<string>
+ * [.toService()](#LinkedDomainService+toService) ⇒ [Service
](#Service)
+ * [.clone()](#LinkedDomainService+clone) ⇒ [LinkedDomainService
](#LinkedDomainService)
+ * _static_
+ * [.fromService(service)](#LinkedDomainService.fromService) ⇒ [LinkedDomainService
](#LinkedDomainService)
+ * [.isValid(service)](#LinkedDomainService.isValid) ⇒ boolean
+
+
+
+### new LinkedDomainService(options)
+Constructs a new [LinkedDomainService](#LinkedDomainService) that wraps a spec compliant [Linked Domain Service Endpoint](https://identity.foundation/.well-known/resources/did-configuration/#linked-domain-service-endpoint).
+
+Domain URLs must include the `https` scheme in order to pass the domain linkage validation.
+
+
+| Param | Type |
+| --- | --- |
+| options | ILinkedDomainService
|
+
+
+
+### linkedDomainService.domains() ⇒ Array.<string>
+Returns the domains contained in the Linked Domain Service.
+
+**Kind**: instance method of [LinkedDomainService
](#LinkedDomainService)
+
+
+### linkedDomainService.toService() ⇒ [Service
](#Service)
+Returns the inner service which can be added to a DID Document.
+
+**Kind**: instance method of [LinkedDomainService
](#LinkedDomainService)
+
+
+### linkedDomainService.clone() ⇒ [LinkedDomainService
](#LinkedDomainService)
+Deep clones the object.
+
+**Kind**: instance method of [LinkedDomainService
](#LinkedDomainService)
+
+
+### LinkedDomainService.fromService(service) ⇒ [LinkedDomainService
](#LinkedDomainService)
+Creates a new [LinkedDomainService](#LinkedDomainService) from a [Service](#Service).
+
+# Error
+
+Errors if `service` is not a valid Linked Domain Service.
+
+**Kind**: static method of [LinkedDomainService
](#LinkedDomainService)
+
+| Param | Type |
+| --- | --- |
+| service | [Service
](#Service) |
+
+
+
+### LinkedDomainService.isValid(service) ⇒ boolean
+Returns `true` if a [Service](#Service) is a valid Linked Domain Service.
+
+**Kind**: static method of [LinkedDomainService
](#LinkedDomainService)
+
+| Param | Type |
+| --- | --- |
+| service | [Service
](#Service) |
+
+
+
+## MethodData
+Supported verification method data formats.
+
+**Kind**: global class
+
+* [MethodData](#MethodData)
+ * _instance_
+ * [.tryDecode()](#MethodData+tryDecode) ⇒ Uint8Array
+ * [.tryPublicKeyJwk()](#MethodData+tryPublicKeyJwk) ⇒ [Jwk
](#Jwk)
+ * [.toJSON()](#MethodData+toJSON) ⇒ any
+ * [.clone()](#MethodData+clone) ⇒ [MethodData
](#MethodData)
+ * _static_
+ * [.newBase58(data)](#MethodData.newBase58) ⇒ [MethodData
](#MethodData)
+ * [.newMultibase(data)](#MethodData.newMultibase) ⇒ [MethodData
](#MethodData)
+ * [.newJwk(key)](#MethodData.newJwk) ⇒ [MethodData
](#MethodData)
+ * [.fromJSON(json)](#MethodData.fromJSON) ⇒ [MethodData
](#MethodData)
+
+
+
+### methodData.tryDecode() ⇒ Uint8Array
+Returns a `Uint8Array` containing the decoded bytes of the [MethodData](#MethodData).
+
+This is generally a public key identified by a [MethodData](#MethodData) value.
+
+### Errors
+Decoding can fail if [MethodData](#MethodData) has invalid content or cannot be
+represented as a vector of bytes.
+
+**Kind**: instance method of [MethodData
](#MethodData)
+
+
+### methodData.tryPublicKeyJwk() ⇒ [Jwk
](#Jwk)
+Returns the wrapped [Jwk](#Jwk) if the format is `PublicKeyJwk`.
+
+**Kind**: instance method of [MethodData
](#MethodData)
+
+
+### methodData.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [MethodData
](#MethodData)
+
+
+### methodData.clone() ⇒ [MethodData
](#MethodData)
+Deep clones the object.
+
+**Kind**: instance method of [MethodData
](#MethodData)
+
+
+### MethodData.newBase58(data) ⇒ [MethodData
](#MethodData)
+Creates a new [MethodData](#MethodData) variant with Base58-BTC encoded content.
+
+**Kind**: static method of [MethodData
](#MethodData)
+
+| Param | Type |
+| --- | --- |
+| data | Uint8Array
|
+
+
+
+### MethodData.newMultibase(data) ⇒ [MethodData
](#MethodData)
+Creates a new [MethodData](#MethodData) variant with Multibase-encoded content.
+
+**Kind**: static method of [MethodData
](#MethodData)
+
+| Param | Type |
+| --- | --- |
+| data | Uint8Array
|
+
+
+
+### MethodData.newJwk(key) ⇒ [MethodData
](#MethodData)
+Creates a new [MethodData](#MethodData) variant consisting of the given `key`.
+
+### Errors
+An error is thrown if the given `key` contains any private components.
+
+**Kind**: static method of [MethodData
](#MethodData)
+
+| Param | Type |
+| --- | --- |
+| key | [Jwk
](#Jwk) |
+
+
+
+### MethodData.fromJSON(json) ⇒ [MethodData
](#MethodData)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [MethodData
](#MethodData)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## MethodDigest
+Unique identifier of a [VerificationMethod](#VerificationMethod).
+
+NOTE:
+This class does not have a JSON representation,
+use the methods `pack` and `unpack` instead.
+
+**Kind**: global class
+
+* [MethodDigest](#MethodDigest)
+ * [new MethodDigest(verification_method)](#new_MethodDigest_new)
+ * _instance_
+ * [.pack()](#MethodDigest+pack) ⇒ Uint8Array
+ * [.clone()](#MethodDigest+clone) ⇒ [MethodDigest
](#MethodDigest)
+ * _static_
+ * [.unpack(bytes)](#MethodDigest.unpack) ⇒ [MethodDigest
](#MethodDigest)
+
+
+
+### new MethodDigest(verification_method)
+
+| Param | Type |
+| --- | --- |
+| verification_method | [VerificationMethod
](#VerificationMethod) |
+
+
+
+### methodDigest.pack() ⇒ Uint8Array
+Packs [MethodDigest](#MethodDigest) into bytes.
+
+**Kind**: instance method of [MethodDigest
](#MethodDigest)
+
+
+### methodDigest.clone() ⇒ [MethodDigest
](#MethodDigest)
+Deep clones the object.
+
+**Kind**: instance method of [MethodDigest
](#MethodDigest)
+
+
+### MethodDigest.unpack(bytes) ⇒ [MethodDigest
](#MethodDigest)
+Unpacks bytes into [MethodDigest](#MethodDigest).
+
+**Kind**: static method of [MethodDigest
](#MethodDigest)
+
+| Param | Type |
+| --- | --- |
+| bytes | Uint8Array
|
+
+
+
+## MethodScope
+Supported verification method types.
+
+**Kind**: global class
+
+* [MethodScope](#MethodScope)
+ * _instance_
+ * [.toString()](#MethodScope+toString) ⇒ string
+ * [.toJSON()](#MethodScope+toJSON) ⇒ any
+ * [.clone()](#MethodScope+clone) ⇒ [MethodScope
](#MethodScope)
+ * _static_
+ * [.VerificationMethod()](#MethodScope.VerificationMethod) ⇒ [MethodScope
](#MethodScope)
+ * [.Authentication()](#MethodScope.Authentication) ⇒ [MethodScope
](#MethodScope)
+ * [.AssertionMethod()](#MethodScope.AssertionMethod) ⇒ [MethodScope
](#MethodScope)
+ * [.KeyAgreement()](#MethodScope.KeyAgreement) ⇒ [MethodScope
](#MethodScope)
+ * [.CapabilityDelegation()](#MethodScope.CapabilityDelegation) ⇒ [MethodScope
](#MethodScope)
+ * [.CapabilityInvocation()](#MethodScope.CapabilityInvocation) ⇒ [MethodScope
](#MethodScope)
+ * [.fromJSON(json)](#MethodScope.fromJSON) ⇒ [MethodScope
](#MethodScope)
+
+
+
+### methodScope.toString() ⇒ string
+Returns the [MethodScope](#MethodScope) as a string.
+
+**Kind**: instance method of [MethodScope
](#MethodScope)
+
+
+### methodScope.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [MethodScope
](#MethodScope)
+
+
+### methodScope.clone() ⇒ [MethodScope
](#MethodScope)
+Deep clones the object.
+
+**Kind**: instance method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.VerificationMethod() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.Authentication() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.AssertionMethod() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.KeyAgreement() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.CapabilityDelegation() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.CapabilityInvocation() ⇒ [MethodScope
](#MethodScope)
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+
+### MethodScope.fromJSON(json) ⇒ [MethodScope
](#MethodScope)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [MethodScope
](#MethodScope)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## MethodType
+Supported verification method types.
+
+**Kind**: global class
+
+* [MethodType](#MethodType)
+ * _instance_
+ * [.toString()](#MethodType+toString) ⇒ string
+ * [.toJSON()](#MethodType+toJSON) ⇒ any
+ * [.clone()](#MethodType+clone) ⇒ [MethodType
](#MethodType)
+ * _static_
+ * [.Ed25519VerificationKey2018()](#MethodType.Ed25519VerificationKey2018) ⇒ [MethodType
](#MethodType)
+ * [.X25519KeyAgreementKey2019()](#MethodType.X25519KeyAgreementKey2019) ⇒ [MethodType
](#MethodType)
+ * [.JsonWebKey()](#MethodType.JsonWebKey) ⇒ [MethodType
](#MethodType)
+ * [.fromJSON(json)](#MethodType.fromJSON) ⇒ [MethodType
](#MethodType)
+
+
+
+### methodType.toString() ⇒ string
+Returns the [MethodType](#MethodType) as a string.
+
+**Kind**: instance method of [MethodType
](#MethodType)
+
+
+### methodType.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [MethodType
](#MethodType)
+
+
+### methodType.clone() ⇒ [MethodType
](#MethodType)
+Deep clones the object.
+
+**Kind**: instance method of [MethodType
](#MethodType)
+
+
+### MethodType.Ed25519VerificationKey2018() ⇒ [MethodType
](#MethodType)
+**Kind**: static method of [MethodType
](#MethodType)
+
+
+### MethodType.X25519KeyAgreementKey2019() ⇒ [MethodType
](#MethodType)
+**Kind**: static method of [MethodType
](#MethodType)
+
+
+### MethodType.JsonWebKey() ⇒ [MethodType
](#MethodType)
+A verification method for use with JWT verification as prescribed by the [Jwk](#Jwk)
+in the `publicKeyJwk` entry.
+
+**Kind**: static method of [MethodType
](#MethodType)
+
+
+### MethodType.fromJSON(json) ⇒ [MethodType
](#MethodType)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [MethodType
](#MethodType)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Presentation
+**Kind**: global class
+
+* [Presentation](#Presentation)
+ * [new Presentation(values)](#new_Presentation_new)
+ * _instance_
+ * [.context()](#Presentation+context) ⇒ Array.<(string\|Record.<string, any>)>
+ * [.id()](#Presentation+id) ⇒ string
\| undefined
+ * [.type()](#Presentation+type) ⇒ Array.<string>
+ * [.verifiableCredential()](#Presentation+verifiableCredential) ⇒ [Array.<UnknownCredential>
](#UnknownCredential)
+ * [.holder()](#Presentation+holder) ⇒ string
+ * [.refreshService()](#Presentation+refreshService) ⇒ Array.<RefreshService>
+ * [.termsOfUse()](#Presentation+termsOfUse) ⇒ Array.<Policy>
+ * [.proof()](#Presentation+proof) ⇒ [Proof
](#Proof) \| undefined
+ * [.setProof(proof)](#Presentation+setProof)
+ * [.properties()](#Presentation+properties) ⇒ Map.<string, any>
+ * [.toJSON()](#Presentation+toJSON) ⇒ any
+ * [.clone()](#Presentation+clone) ⇒ [Presentation
](#Presentation)
+ * _static_
+ * [.BaseContext()](#Presentation.BaseContext) ⇒ string
+ * [.BaseType()](#Presentation.BaseType) ⇒ string
+ * [.fromJSON(json)](#Presentation.fromJSON) ⇒ [Presentation
](#Presentation)
+
+
+
+### new Presentation(values)
+Constructs a new presentation.
+
+
+| Param | Type |
+| --- | --- |
+| values | IPresentation
|
+
+
+
+### presentation.context() ⇒ Array.<(string\|Record.<string, any>)>
+Returns a copy of the JSON-LD context(s) applicable to the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.id() ⇒ string
\| undefined
+Returns a copy of the unique `URI` identifying the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.type() ⇒ Array.<string>
+Returns a copy of the URIs defining the type of the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.verifiableCredential() ⇒ [Array.<UnknownCredential>
](#UnknownCredential)
+Returns the JWT credentials expressing the claims of the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.holder() ⇒ string
+Returns a copy of the URI of the entity that generated the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.refreshService() ⇒ Array.<RefreshService>
+Returns a copy of the service(s) used to refresh an expired [Credential](#Credential) in the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.termsOfUse() ⇒ Array.<Policy>
+Returns a copy of the terms-of-use specified by the presentation holder
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.proof() ⇒ [Proof
](#Proof) \| undefined
+Optional cryptographic proof, unrelated to JWT.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.setProof(proof)
+Sets the proof property of the [Presentation](#Presentation).
+
+Note that this proof is not related to JWT.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+| Param | Type |
+| --- | --- |
+| proof | [Proof
](#Proof) \| undefined
|
+
+
+
+### presentation.properties() ⇒ Map.<string, any>
+Returns a copy of the miscellaneous properties on the presentation.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### presentation.clone() ⇒ [Presentation
](#Presentation)
+Deep clones the object.
+
+**Kind**: instance method of [Presentation
](#Presentation)
+
+
+### Presentation.BaseContext() ⇒ string
+Returns the base JSON-LD context.
+
+**Kind**: static method of [Presentation
](#Presentation)
+
+
+### Presentation.BaseType() ⇒ string
+Returns the base type.
+
+**Kind**: static method of [Presentation
](#Presentation)
+
+
+### Presentation.fromJSON(json) ⇒ [Presentation
](#Presentation)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Presentation
](#Presentation)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Proof
+Represents a cryptographic proof that can be used to validate verifiable credentials and
+presentations.
+
+This representation does not inherently implement any standard; instead, it
+can be utilized to implement standards or user-defined proofs. The presence of the
+`type` field is necessary to accommodate different types of cryptographic proofs.
+
+Note that this proof is not related to JWT and can be used in combination or as an alternative
+to it.
+
+**Kind**: global class
+
+* [Proof](#Proof)
+ * [new Proof(type_, properties)](#new_Proof_new)
+ * _instance_
+ * [.type()](#Proof+type) ⇒ string
+ * [.properties()](#Proof+properties) ⇒ any
+ * [.toJSON()](#Proof+toJSON) ⇒ any
+ * [.clone()](#Proof+clone) ⇒ [Proof
](#Proof)
+ * _static_
+ * [.fromJSON(json)](#Proof.fromJSON) ⇒ [Proof
](#Proof)
+
+
+
+### new Proof(type_, properties)
+
+| Param | Type |
+| --- | --- |
+| type_ | string
|
+| properties | any
|
+
+
+
+### proof.type() ⇒ string
+Returns the type of proof.
+
+**Kind**: instance method of [Proof
](#Proof)
+
+
+### proof.properties() ⇒ any
+Returns the properties of the proof.
+
+**Kind**: instance method of [Proof
](#Proof)
+
+
+### proof.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Proof
](#Proof)
+
+
+### proof.clone() ⇒ [Proof
](#Proof)
+Deep clones the object.
+
+**Kind**: instance method of [Proof
](#Proof)
+
+
+### Proof.fromJSON(json) ⇒ [Proof
](#Proof)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Proof
](#Proof)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Resolver
+Convenience type for resolving DID documents from different DID methods.
+
+Also provides methods for resolving DID Documents associated with
+verifiable [Credential](#Credential)s and [Presentation](#Presentation)s.
+
+# Configuration
+
+The resolver will only be able to resolve DID documents for methods it has been configured for in the constructor.
+
+**Kind**: global class
+
+* [Resolver](#Resolver)
+ * [new Resolver(config)](#new_Resolver_new)
+ * [.resolve(did)](#Resolver+resolve) ⇒ Promise.<(CoreDocument\|IToCoreDocument)>
+ * [.resolveMultiple(dids)](#Resolver+resolveMultiple) ⇒ Promise.<Array.<(CoreDocument\|IToCoreDocument)>>
+
+
+
+### new Resolver(config)
+Constructs a new [Resolver](#Resolver).
+
+# Errors
+If both a `client` is given and the `handlers` map contains the "iota" key the construction process
+will throw an error because the handler for the "iota" method then becomes ambiguous.
+
+
+| Param | Type |
+| --- | --- |
+| config | ResolverConfig
|
+
+
+
+### resolver.resolve(did) ⇒ Promise.<(CoreDocument\|IToCoreDocument)>
+Fetches the DID Document of the given DID.
+
+### Errors
+
+Errors if the resolver has not been configured to handle the method
+corresponding to the given DID or the resolution process itself fails.
+
+**Kind**: instance method of [Resolver
](#Resolver)
+
+| Param | Type |
+| --- | --- |
+| did | string
|
+
+
+
+### resolver.resolveMultiple(dids) ⇒ Promise.<Array.<(CoreDocument\|IToCoreDocument)>>
+Concurrently fetches the DID Documents of the multiple given DIDs.
+
+# Errors
+* If the resolver has not been configured to handle the method of any of the given DIDs.
+* If the resolution process of any DID fails.
+
+## Note
+* The order of the documents in the returned array matches that in `dids`.
+* If `dids` contains duplicates, these will be resolved only once and the resolved document
+is copied into the returned array to match the order of `dids`.
+
+**Kind**: instance method of [Resolver
](#Resolver)
+
+| Param | Type |
+| --- | --- |
+| dids | Array.<string>
|
+
+
+
+## RevocationBitmap
+A compressed bitmap for managing credential revocation.
+
+**Kind**: global class
+
+* [RevocationBitmap](#RevocationBitmap)
+ * [new RevocationBitmap()](#new_RevocationBitmap_new)
+ * _instance_
+ * [.isRevoked(index)](#RevocationBitmap+isRevoked) ⇒ boolean
+ * [.revoke(index)](#RevocationBitmap+revoke) ⇒ boolean
+ * [.unrevoke(index)](#RevocationBitmap+unrevoke) ⇒ boolean
+ * [.len()](#RevocationBitmap+len) ⇒ number
+ * [.toService(serviceId)](#RevocationBitmap+toService) ⇒ [Service
](#Service)
+ * _static_
+ * [.type()](#RevocationBitmap.type) ⇒ string
+ * [.fromEndpoint(service)](#RevocationBitmap.fromEndpoint) ⇒ [RevocationBitmap
](#RevocationBitmap)
+
+
+
+### new RevocationBitmap()
+Creates a new [RevocationBitmap](#RevocationBitmap) instance.
+
+
+
+### revocationBitmap.isRevoked(index) ⇒ boolean
+Returns `true` if the credential at the given `index` is revoked.
+
+**Kind**: instance method of [RevocationBitmap
](#RevocationBitmap)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+
+
+
+### revocationBitmap.revoke(index) ⇒ boolean
+Mark the given index as revoked.
+
+Returns true if the index was absent from the set.
+
+**Kind**: instance method of [RevocationBitmap
](#RevocationBitmap)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+
+
+
+### revocationBitmap.unrevoke(index) ⇒ boolean
+Mark the index as not revoked.
+
+Returns true if the index was present in the set.
+
+**Kind**: instance method of [RevocationBitmap
](#RevocationBitmap)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+
+
+
+### revocationBitmap.len() ⇒ number
+Returns the number of revoked credentials.
+
+**Kind**: instance method of [RevocationBitmap
](#RevocationBitmap)
+
+
+### revocationBitmap.toService(serviceId) ⇒ [Service
](#Service)
+Return a `Service` with:
+- the service's id set to `serviceId`,
+- of type `RevocationBitmap2022`,
+- and with the bitmap embedded in a data url in the service's endpoint.
+
+**Kind**: instance method of [RevocationBitmap
](#RevocationBitmap)
+
+| Param | Type |
+| --- | --- |
+| serviceId | [DIDUrl
](#DIDUrl) |
+
+
+
+### RevocationBitmap.type() ⇒ string
+The name of the service type.
+
+**Kind**: static method of [RevocationBitmap
](#RevocationBitmap)
+
+
+### RevocationBitmap.fromEndpoint(service) ⇒ [RevocationBitmap
](#RevocationBitmap)
+Try to construct a [RevocationBitmap](#RevocationBitmap) from a service
+if it is a valid Revocation Bitmap Service.
+
+**Kind**: static method of [RevocationBitmap
](#RevocationBitmap)
+
+| Param | Type |
+| --- | --- |
+| service | [Service
](#Service) |
+
+
+
+## SdJwt
+Representation of an SD-JWT of the format
+`string
+ * [.toString()](#SdJwt+toString) ⇒ string
+ * [.jwt()](#SdJwt+jwt) ⇒ string
+ * [.disclosures()](#SdJwt+disclosures) ⇒ Array.<string>
+ * [.keyBindingJwt()](#SdJwt+keyBindingJwt) ⇒ string
\| undefined
+ * [.toJSON()](#SdJwt+toJSON) ⇒ any
+ * [.clone()](#SdJwt+clone) ⇒ [SdJwt
](#SdJwt)
+ * _static_
+ * [.parse(sd_jwt)](#SdJwt.parse) ⇒ [SdJwt
](#SdJwt)
+ * [.fromJSON(json)](#SdJwt.fromJSON) ⇒ [SdJwt
](#SdJwt)
+
+
+
+### new SdJwt(jwt, disclosures, key_binding_jwt)
+Creates a new `SdJwt` from its components.
+
+
+| Param | Type |
+| --- | --- |
+| jwt | string
|
+| disclosures | Array.<string>
|
+| key_binding_jwt | string
\| undefined
|
+
+
+
+### sdJwt.presentation() ⇒ string
+Serializes the components into the final SD-JWT.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.toString() ⇒ string
+Serializes the components into the final SD-JWT.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.jwt() ⇒ string
+The JWT part.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.disclosures() ⇒ Array.<string>
+The disclosures part.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.keyBindingJwt() ⇒ string
\| undefined
+The optional key binding JWT.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### sdJwt.clone() ⇒ [SdJwt
](#SdJwt)
+Deep clones the object.
+
+**Kind**: instance method of [SdJwt
](#SdJwt)
+
+
+### SdJwt.parse(sd_jwt) ⇒ [SdJwt
](#SdJwt)
+Parses an SD-JWT into its components as [`SdJwt`].
+
+## Error
+Returns `DeserializationError` if parsing fails.
+
+**Kind**: static method of [SdJwt
](#SdJwt)
+
+| Param | Type |
+| --- | --- |
+| sd_jwt | string
|
+
+
+
+### SdJwt.fromJSON(json) ⇒ [SdJwt
](#SdJwt)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [SdJwt
](#SdJwt)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## SdJwtCredentialValidator
+A type for decoding and validating [Credential](#Credential).
+
+**Kind**: global class
+
+* [SdJwtCredentialValidator](#SdJwtCredentialValidator)
+ * [new SdJwtCredentialValidator(signatureVerifier)](#new_SdJwtCredentialValidator_new)
+ * [.validateCredential(sd_jwt, issuer, options, fail_fast)](#SdJwtCredentialValidator+validateCredential) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+ * [.verifySignature(credential, trustedIssuers, options)](#SdJwtCredentialValidator+verifySignature) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+ * [.validateKeyBindingJwt(sdJwt, holder, options)](#SdJwtCredentialValidator+validateKeyBindingJwt) ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+
+
+
+### new SdJwtCredentialValidator(signatureVerifier)
+Creates a new `SdJwtCredentialValidator`. If a `signatureVerifier` is provided it will be used when
+verifying decoded JWS signatures, otherwise the default which is only capable of handling the `EdDSA`
+algorithm will be used.
+
+
+| Param | Type |
+| --- | --- |
+| signatureVerifier | IJwsVerifier
|
+
+
+
+### sdJwtCredentialValidator.validateCredential(sd_jwt, issuer, options, fail_fast) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+Decodes and validates a `Credential` issued as an SD-JWT. A `DecodedJwtCredential` is returned upon success.
+The credential is constructed by replacing disclosures following the
+[`Selective Disclosure for JWTs (SD-JWT)`](https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-07.html) standard.
+
+The following properties are validated according to `options`:
+- the issuer's signature on the JWS,
+- the expiration date,
+- the issuance date,
+- the semantic structure.
+
+# Warning
+* The key binding JWT is not validated. If needed, it must be validated separately using
+`SdJwtValidator::validate_key_binding_jwt`.
+* The lack of an error returned from this method is in of itself not enough to conclude that the credential can be
+trusted. This section contains more information on additional checks that should be carried out before and after
+calling this method.
+
+## The state of the issuer's DID Document
+The caller must ensure that `issuer` represents an up-to-date DID Document.
+
+## Properties that are not validated
+ There are many properties defined in [The Verifiable Credentials Data Model](https://www.w3.org/TR/vc-data-model/) that are **not** validated, such as:
+`proof`, `credentialStatus`, `type`, `credentialSchema`, `refreshService` **and more**.
+These should be manually checked after validation, according to your requirements.
+
+# Errors
+An error is returned whenever a validated condition is not satisfied.
+
+**Kind**: instance method of [SdJwtCredentialValidator
](#SdJwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| sd_jwt | [SdJwt
](#SdJwt) |
+| issuer | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| options | [JwtCredentialValidationOptions
](#JwtCredentialValidationOptions) |
+| fail_fast | number
|
+
+
+
+### sdJwtCredentialValidator.verifySignature(credential, trustedIssuers, options) ⇒ [DecodedJwtCredential
](#DecodedJwtCredential)
+Decode and verify the JWS signature of a `Credential` issued as an SD-JWT using the DID Document of a trusted
+issuer and replaces the disclosures.
+
+A `DecodedJwtCredential` is returned upon success.
+
+# Warning
+The caller must ensure that the DID Documents of the trusted issuers are up-to-date.
+
+## Proofs
+ Only the JWS signature is verified. If the `Credential` contains a `proof` property this will not be verified
+by this method.
+
+# Errors
+* If the issuer' URL cannot be parsed.
+* If Signature verification fails.
+* If SD decoding fails.
+
+**Kind**: instance method of [SdJwtCredentialValidator
](#SdJwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| credential | [SdJwt
](#SdJwt) |
+| trustedIssuers | Array.<(CoreDocument\|IToCoreDocument)>
|
+| options | [JwsVerificationOptions
](#JwsVerificationOptions) |
+
+
+
+### sdJwtCredentialValidator.validateKeyBindingJwt(sdJwt, holder, options) ⇒ [KeyBindingJwtClaims
](#KeyBindingJwtClaims)
+Validates a Key Binding JWT (KB-JWT) according to `https://www.ietf.org/archive/id/draft-ietf-oauth-selective-disclosure-jwt-07.html#name-key-binding-jwt`.
+The Validation process includes:
+ * Signature validation using public key materials defined in the `holder` document.
+ * `typ` value in KB-JWT header.
+ * `sd_hash` claim value in the KB-JWT claim.
+ * Optional `nonce`, `aud` and issuance date validation.
+
+**Kind**: instance method of [SdJwtCredentialValidator
](#SdJwtCredentialValidator)
+
+| Param | Type |
+| --- | --- |
+| sdJwt | [SdJwt
](#SdJwt) |
+| holder | [CoreDocument
](#CoreDocument) \| IToCoreDocument
|
+| options | [KeyBindingJWTValidationOptions
](#KeyBindingJWTValidationOptions) |
+
+
+
+## SdObjectDecoder
+Substitutes digests in an SD-JWT object by their corresponding plaintext values provided by disclosures.
+
+**Kind**: global class
+
+* [SdObjectDecoder](#SdObjectDecoder)
+ * [new SdObjectDecoder()](#new_SdObjectDecoder_new)
+ * [.decode(object, disclosures)](#SdObjectDecoder+decode) ⇒ Record.<string, any>
+
+
+
+### new SdObjectDecoder()
+Creates a new `SdObjectDecoder` with `sha-256` hasher.
+
+
+
+### sdObjectDecoder.decode(object, disclosures) ⇒ Record.<string, any>
+Decodes an SD-JWT `object` containing by Substituting the digests with their corresponding
+plaintext values provided by `disclosures`.
+
+## Notes
+* Claims like `exp` or `iat` are not validated in the process of decoding.
+* `_sd_alg` property will be removed if present.
+
+**Kind**: instance method of [SdObjectDecoder
](#SdObjectDecoder)
+
+| Param | Type |
+| --- | --- |
+| object | Record.<string, any>
|
+| disclosures | Array.<string>
|
+
+
+
+## SdObjectEncoder
+Transforms a JSON object into an SD-JWT object by substituting selected values
+with their corresponding disclosure digests.
+
+Note: digests are created using the sha-256 algorithm.
+
+**Kind**: global class
+
+* [SdObjectEncoder](#SdObjectEncoder)
+ * [new SdObjectEncoder(object)](#new_SdObjectEncoder_new)
+ * [.conceal(path, salt)](#SdObjectEncoder+conceal) ⇒ [Disclosure
](#Disclosure)
+ * [.addSdAlgProperty()](#SdObjectEncoder+addSdAlgProperty)
+ * [.encodeToString()](#SdObjectEncoder+encodeToString) ⇒ string
+ * [.toString()](#SdObjectEncoder+toString) ⇒ string
+ * [.encodeToObject()](#SdObjectEncoder+encodeToObject) ⇒ Record.<string, any>
+ * [.toJSON()](#SdObjectEncoder+toJSON) ⇒ any
+ * [.addDecoys(path, number_of_decoys)](#SdObjectEncoder+addDecoys)
+
+
+
+### new SdObjectEncoder(object)
+Creates a new `SdObjectEncoder` with `sha-256` hash function.
+
+
+| Param | Type |
+| --- | --- |
+| object | any
|
+
+
+
+### sdObjectEncoder.conceal(path, salt) ⇒ [Disclosure
](#Disclosure)
+Substitutes a value with the digest of its disclosure.
+If no salt is provided, the disclosure will be created with a random salt value.
+
+`path` indicates the pointer to the value that will be concealed using the syntax of
+[JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).
+
+For the following object:
+
+ ```
+{
+ "id": "did:value",
+ "claim1": {
+ "abc": true
+ },
+ "claim2": ["val_1", "val_2"]
+}
+```
+
+Path "/id" conceals `"id": "did:value"`
+Path "/claim1/abc" conceals `"abc": true`
+Path "/claim2/0" conceals `val_1`
+```
+
+## Errors
+* `InvalidPath` if pointer is invalid.
+* `DataTypeMismatch` if existing SD format is invalid.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+| Param | Type |
+| --- | --- |
+| path | string
|
+| salt | string
\| undefined
|
+
+
+
+### sdObjectEncoder.addSdAlgProperty()
+Adds the `_sd_alg` property to the top level of the object, with
+its value set to "sha-256".
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+
+### sdObjectEncoder.encodeToString() ⇒ string
+Returns the modified object as a string.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+
+### sdObjectEncoder.toString() ⇒ string
+Returns the modified object as a string.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+
+### sdObjectEncoder.encodeToObject() ⇒ Record.<string, any>
+Returns the modified object.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+
+### sdObjectEncoder.toJSON() ⇒ any
+Returns the modified object.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+
+### sdObjectEncoder.addDecoys(path, number_of_decoys)
+Adds a decoy digest to the specified path.
+If path is an empty slice, decoys will be added to the top level.
+
+**Kind**: instance method of [SdObjectEncoder
](#SdObjectEncoder)
+
+| Param | Type |
+| --- | --- |
+| path | string
|
+| number_of_decoys | number
|
+
+
+
+## Service
+A DID Document Service used to enable trusted interactions associated with a DID subject.
+
+**Kind**: global class
+
+* [Service](#Service)
+ * [new Service(service)](#new_Service_new)
+ * _instance_
+ * [.id()](#Service+id) ⇒ [DIDUrl
](#DIDUrl)
+ * [.type()](#Service+type) ⇒ Array.<string>
+ * [.serviceEndpoint()](#Service+serviceEndpoint) ⇒ string
\| Array.<string>
\| Map.<string, Array.<string>>
+ * [.properties()](#Service+properties) ⇒ Map.<string, any>
+ * [.toJSON()](#Service+toJSON) ⇒ any
+ * [.clone()](#Service+clone) ⇒ [Service
](#Service)
+ * _static_
+ * [.fromJSON(json)](#Service.fromJSON) ⇒ [Service
](#Service)
+
+
+
+### new Service(service)
+
+| Param | Type |
+| --- | --- |
+| service | IService
|
+
+
+
+### service.id() ⇒ [DIDUrl
](#DIDUrl)
+Returns a copy of the [Service](#Service) id.
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### service.type() ⇒ Array.<string>
+Returns a copy of the [Service](#Service) type.
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### service.serviceEndpoint() ⇒ string
\| Array.<string>
\| Map.<string, Array.<string>>
+Returns a copy of the [Service](#Service) endpoint.
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### service.properties() ⇒ Map.<string, any>
+Returns a copy of the custom properties on the [Service](#Service).
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### service.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### service.clone() ⇒ [Service
](#Service)
+Deep clones the object.
+
+**Kind**: instance method of [Service
](#Service)
+
+
+### Service.fromJSON(json) ⇒ [Service
](#Service)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Service
](#Service)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## StatusList2021
+StatusList2021 data structure as described in [W3C's VC status list 2021](https://www.w3.org/TR/2023/WD-vc-status-list-20230427/).
+
+**Kind**: global class
+
+* [StatusList2021](#StatusList2021)
+ * [new StatusList2021(size)](#new_StatusList2021_new)
+ * _instance_
+ * [.clone()](#StatusList2021+clone) ⇒ [StatusList2021
](#StatusList2021)
+ * [.len()](#StatusList2021+len) ⇒ number
+ * [.get(index)](#StatusList2021+get) ⇒ boolean
+ * [.set(index, value)](#StatusList2021+set)
+ * [.intoEncodedStr()](#StatusList2021+intoEncodedStr) ⇒ string
+ * _static_
+ * [.fromEncodedStr(s)](#StatusList2021.fromEncodedStr) ⇒ [StatusList2021
](#StatusList2021)
+
+
+
+### new StatusList2021(size)
+Creates a new [StatusList2021](#StatusList2021) of `size` entries.
+
+
+| Param | Type |
+| --- | --- |
+| size | number
\| undefined
|
+
+
+
+### statusList2021.clone() ⇒ [StatusList2021
](#StatusList2021)
+Deep clones the object.
+
+**Kind**: instance method of [StatusList2021
](#StatusList2021)
+
+
+### statusList2021.len() ⇒ number
+Returns the number of entries in this [StatusList2021](#StatusList2021).
+
+**Kind**: instance method of [StatusList2021
](#StatusList2021)
+
+
+### statusList2021.get(index) ⇒ boolean
+Returns whether the entry at `index` is set.
+
+**Kind**: instance method of [StatusList2021
](#StatusList2021)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+
+
+
+### statusList2021.set(index, value)
+Sets the value of the `index`-th entry.
+
+**Kind**: instance method of [StatusList2021
](#StatusList2021)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+| value | boolean
|
+
+
+
+### statusList2021.intoEncodedStr() ⇒ string
+Encodes this [StatusList2021](#StatusList2021) into its compressed
+base64 string representation.
+
+**Kind**: instance method of [StatusList2021
](#StatusList2021)
+
+
+### StatusList2021.fromEncodedStr(s) ⇒ [StatusList2021
](#StatusList2021)
+Attempts to decode a [StatusList2021](#StatusList2021) from a string.
+
+**Kind**: static method of [StatusList2021
](#StatusList2021)
+
+| Param | Type |
+| --- | --- |
+| s | string
|
+
+
+
+## StatusList2021Credential
+A parsed [StatusList2021Credential](https://www.w3.org/TR/2023/WD-vc-status-list-20230427/#statuslist2021credential).
+
+**Kind**: global class
+
+* [StatusList2021Credential](#StatusList2021Credential)
+ * [new StatusList2021Credential(credential)](#new_StatusList2021Credential_new)
+ * _instance_
+ * [.id()](#StatusList2021Credential+id) ⇒ string
+ * [.setCredentialStatus(credential, index, revoked_or_suspended)](#StatusList2021Credential+setCredentialStatus) ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+ * [.purpose()](#StatusList2021Credential+purpose) ⇒ number
+ * [.entry(index)](#StatusList2021Credential+entry) ⇒ number
+ * [.clone()](#StatusList2021Credential+clone) ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+ * [.toJSON()](#StatusList2021Credential+toJSON) ⇒ any
+ * _static_
+ * [.fromJSON(json)](#StatusList2021Credential.fromJSON) ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+
+
+
+### new StatusList2021Credential(credential)
+Creates a new [StatusList2021Credential](#StatusList2021Credential).
+
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+
+
+
+### statusList2021Credential.id() ⇒ string
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+
+### statusList2021Credential.setCredentialStatus(credential, index, revoked_or_suspended) ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+Sets the given credential's status using the `index`-th entry of this status list.
+Returns the created `credentialStatus`.
+
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+| Param | Type |
+| --- | --- |
+| credential | [Credential
](#Credential) |
+| index | number
|
+| revoked_or_suspended | boolean
|
+
+
+
+### statusList2021Credential.purpose() ⇒ number
+Returns the [StatusPurpose](#StatusPurpose) of this [StatusList2021Credential](#StatusList2021Credential).
+
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+
+### statusList2021Credential.entry(index) ⇒ number
+Returns the state of the `index`-th entry, if any.
+
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+| Param | Type |
+| --- | --- |
+| index | number
|
+
+
+
+### statusList2021Credential.clone() ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+
+### statusList2021Credential.toJSON() ⇒ any
+**Kind**: instance method of [StatusList2021Credential
](#StatusList2021Credential)
+
+
+### StatusList2021Credential.fromJSON(json) ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+**Kind**: static method of [StatusList2021Credential
](#StatusList2021Credential)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## StatusList2021CredentialBuilder
+Builder type to construct valid [StatusList2021Credential](#StatusList2021Credential) istances.
+
+**Kind**: global class
+
+* [StatusList2021CredentialBuilder](#StatusList2021CredentialBuilder)
+ * [new StatusList2021CredentialBuilder(status_list)](#new_StatusList2021CredentialBuilder_new)
+ * [.purpose(purpose)](#StatusList2021CredentialBuilder+purpose) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.subjectId(id)](#StatusList2021CredentialBuilder+subjectId) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.expirationDate(time)](#StatusList2021CredentialBuilder+expirationDate) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.issuer(issuer)](#StatusList2021CredentialBuilder+issuer) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.context(context)](#StatusList2021CredentialBuilder+context) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.type(t)](#StatusList2021CredentialBuilder+type) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.proof(proof)](#StatusList2021CredentialBuilder+proof) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+ * [.build()](#StatusList2021CredentialBuilder+build) ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+
+
+
+### new StatusList2021CredentialBuilder(status_list)
+Creates a new [StatusList2021CredentialBuilder](#StatusList2021CredentialBuilder).
+
+
+| Param | Type |
+| --- | --- |
+| status_list | [StatusList2021
](#StatusList2021) \| undefined
|
+
+
+
+### statusList2021CredentialBuilder.purpose(purpose) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Sets the purpose of the [StatusList2021Credential](#StatusList2021Credential) that is being created.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| purpose | number
|
+
+
+
+### statusList2021CredentialBuilder.subjectId(id) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Sets `credentialSubject.id`.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| id | string
|
+
+
+
+### statusList2021CredentialBuilder.expirationDate(time) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Sets the expiration date of the credential.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| time | [Timestamp
](#Timestamp) |
+
+
+
+### statusList2021CredentialBuilder.issuer(issuer) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Sets the issuer of the credential.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| issuer | string
|
+
+
+
+### statusList2021CredentialBuilder.context(context) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Sets the context of the credential.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| context | string
|
+
+
+
+### statusList2021CredentialBuilder.type(t) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Adds a credential type.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| t | string
|
+
+
+
+### statusList2021CredentialBuilder.proof(proof) ⇒ [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+Adds a credential's proof.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+| Param | Type |
+| --- | --- |
+| proof | [Proof
](#Proof) |
+
+
+
+### statusList2021CredentialBuilder.build() ⇒ [StatusList2021Credential
](#StatusList2021Credential)
+Attempts to build a valid [StatusList2021Credential](#StatusList2021Credential) with the previously provided data.
+
+**Kind**: instance method of [StatusList2021CredentialBuilder
](#StatusList2021CredentialBuilder)
+
+
+## StatusList2021Entry
+[StatusList2021Entry](https://www.w3.org/TR/2023/WD-vc-status-list-20230427/#statuslist2021entry) implementation.
+
+**Kind**: global class
+
+* [StatusList2021Entry](#StatusList2021Entry)
+ * [new StatusList2021Entry(status_list, purpose, index, id)](#new_StatusList2021Entry_new)
+ * _instance_
+ * [.id()](#StatusList2021Entry+id) ⇒ string
+ * [.purpose()](#StatusList2021Entry+purpose) ⇒ number
+ * [.index()](#StatusList2021Entry+index) ⇒ number
+ * [.statusListCredential()](#StatusList2021Entry+statusListCredential) ⇒ string
+ * [.toStatus()](#StatusList2021Entry+toStatus) ⇒ Status
+ * [.clone()](#StatusList2021Entry+clone) ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+ * [.toJSON()](#StatusList2021Entry+toJSON) ⇒ any
+ * _static_
+ * [.fromJSON(json)](#StatusList2021Entry.fromJSON) ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+
+
+
+### new StatusList2021Entry(status_list, purpose, index, id)
+Creates a new [StatusList2021Entry](#StatusList2021Entry).
+
+
+| Param | Type |
+| --- | --- |
+| status_list | string
|
+| purpose | number
|
+| index | number
|
+| id | string
\| undefined
|
+
+
+
+### statusList2021Entry.id() ⇒ string
+Returns this `credentialStatus`'s `id`.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.purpose() ⇒ number
+Returns the purpose of this entry.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.index() ⇒ number
+Returns the index of this entry.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.statusListCredential() ⇒ string
+Returns the referenced [StatusList2021Credential](#StatusList2021Credential)'s url.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.toStatus() ⇒ Status
+Downcasts [this](this) to [Status](Status)
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.clone() ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+Deep clones the object.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### statusList2021Entry.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [StatusList2021Entry
](#StatusList2021Entry)
+
+
+### StatusList2021Entry.fromJSON(json) ⇒ [StatusList2021Entry
](#StatusList2021Entry)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [StatusList2021Entry
](#StatusList2021Entry)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## Storage
+A type wrapping a `JwkStorage` and `KeyIdStorage` that should always be used together when
+working with storage backed DID documents.
+
+**Kind**: global class
+
+* [Storage](#Storage)
+ * [new Storage(jwkStorage, keyIdStorage)](#new_Storage_new)
+ * [.keyIdStorage()](#Storage+keyIdStorage) ⇒ KeyIdStorage
+ * [.keyStorage()](#Storage+keyStorage) ⇒ JwkStorage
+
+
+
+### new Storage(jwkStorage, keyIdStorage)
+Constructs a new `Storage`.
+
+
+| Param | Type |
+| --- | --- |
+| jwkStorage | JwkStorage
|
+| keyIdStorage | KeyIdStorage
|
+
+
+
+### storage.keyIdStorage() ⇒ KeyIdStorage
+Obtain the wrapped `KeyIdStorage`.
+
+**Kind**: instance method of [Storage
](#Storage)
+
+
+### storage.keyStorage() ⇒ JwkStorage
+Obtain the wrapped `JwkStorage`.
+
+**Kind**: instance method of [Storage
](#Storage)
+
+
+## Timestamp
+**Kind**: global class
+
+* [Timestamp](#Timestamp)
+ * [new Timestamp()](#new_Timestamp_new)
+ * _instance_
+ * [.toRFC3339()](#Timestamp+toRFC3339) ⇒ string
+ * [.checkedAdd(duration)](#Timestamp+checkedAdd) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.checkedSub(duration)](#Timestamp+checkedSub) ⇒ [Timestamp
](#Timestamp) \| undefined
+ * [.toJSON()](#Timestamp+toJSON) ⇒ any
+ * _static_
+ * [.parse(input)](#Timestamp.parse) ⇒ [Timestamp
](#Timestamp)
+ * [.nowUTC()](#Timestamp.nowUTC) ⇒ [Timestamp
](#Timestamp)
+ * [.fromJSON(json)](#Timestamp.fromJSON) ⇒ [Timestamp
](#Timestamp)
+
+
+
+### new Timestamp()
+Creates a new [Timestamp](#Timestamp) with the current date and time.
+
+
+
+### timestamp.toRFC3339() ⇒ string
+Returns the [Timestamp](#Timestamp) as an RFC 3339 `String`.
+
+**Kind**: instance method of [Timestamp
](#Timestamp)
+
+
+### timestamp.checkedAdd(duration) ⇒ [Timestamp
](#Timestamp) \| undefined
+Computes `self + duration`
+
+Returns `null` if the operation leads to a timestamp not in the valid range for [RFC 3339](https://tools.ietf.org/html/rfc3339).
+
+**Kind**: instance method of [Timestamp
](#Timestamp)
+
+| Param | Type |
+| --- | --- |
+| duration | [Duration
](#Duration) |
+
+
+
+### timestamp.checkedSub(duration) ⇒ [Timestamp
](#Timestamp) \| undefined
+Computes `self - duration`
+
+Returns `null` if the operation leads to a timestamp not in the valid range for [RFC 3339](https://tools.ietf.org/html/rfc3339).
+
+**Kind**: instance method of [Timestamp
](#Timestamp)
+
+| Param | Type |
+| --- | --- |
+| duration | [Duration
](#Duration) |
+
+
+
+### timestamp.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [Timestamp
](#Timestamp)
+
+
+### Timestamp.parse(input) ⇒ [Timestamp
](#Timestamp)
+Parses a [Timestamp](#Timestamp) from the provided input string.
+
+**Kind**: static method of [Timestamp
](#Timestamp)
+
+| Param | Type |
+| --- | --- |
+| input | string
|
+
+
+
+### Timestamp.nowUTC() ⇒ [Timestamp
](#Timestamp)
+Creates a new [Timestamp](#Timestamp) with the current date and time.
+
+**Kind**: static method of [Timestamp
](#Timestamp)
+
+
+### Timestamp.fromJSON(json) ⇒ [Timestamp
](#Timestamp)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [Timestamp
](#Timestamp)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## UnknownCredential
+**Kind**: global class
+
+* [UnknownCredential](#UnknownCredential)
+ * _instance_
+ * [.tryIntoJwt()](#UnknownCredential+tryIntoJwt) ⇒ [Jwt
](#Jwt) \| undefined
+ * [.tryIntoCredential()](#UnknownCredential+tryIntoCredential) ⇒ [Credential
](#Credential) \| undefined
+ * [.tryIntoRaw()](#UnknownCredential+tryIntoRaw) ⇒ Record.<string, any>
\| undefined
+ * [.toJSON()](#UnknownCredential+toJSON) ⇒ any
+ * [.clone()](#UnknownCredential+clone) ⇒ [UnknownCredential
](#UnknownCredential)
+ * _static_
+ * [.fromJSON(json)](#UnknownCredential.fromJSON) ⇒ [UnknownCredential
](#UnknownCredential)
+
+
+
+### unknownCredential.tryIntoJwt() ⇒ [Jwt
](#Jwt) \| undefined
+Returns a [Jwt](#Jwt) if the credential is of type string, `undefined` otherwise.
+
+**Kind**: instance method of [UnknownCredential
](#UnknownCredential)
+
+
+### unknownCredential.tryIntoCredential() ⇒ [Credential
](#Credential) \| undefined
+Returns a [Credential](#Credential) if the credential is of said type, `undefined` otherwise.
+
+**Kind**: instance method of [UnknownCredential
](#UnknownCredential)
+
+
+### unknownCredential.tryIntoRaw() ⇒ Record.<string, any>
\| undefined
+Returns the contained value as an Object, if it can be converted, `undefined` otherwise.
+
+**Kind**: instance method of [UnknownCredential
](#UnknownCredential)
+
+
+### unknownCredential.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [UnknownCredential
](#UnknownCredential)
+
+
+### unknownCredential.clone() ⇒ [UnknownCredential
](#UnknownCredential)
+Deep clones the object.
+
+**Kind**: instance method of [UnknownCredential
](#UnknownCredential)
+
+
+### UnknownCredential.fromJSON(json) ⇒ [UnknownCredential
](#UnknownCredential)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [UnknownCredential
](#UnknownCredential)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## VerificationMethod
+A DID Document Verification Method.
+
+**Kind**: global class
+
+* [VerificationMethod](#VerificationMethod)
+ * _instance_
+ * [.id()](#VerificationMethod+id) ⇒ [DIDUrl
](#DIDUrl)
+ * [.setId(id)](#VerificationMethod+setId)
+ * [.controller()](#VerificationMethod+controller) ⇒ [CoreDID
](#CoreDID)
+ * [.setController(did)](#VerificationMethod+setController)
+ * [.type()](#VerificationMethod+type) ⇒ [MethodType
](#MethodType)
+ * [.setType(type_)](#VerificationMethod+setType)
+ * [.data()](#VerificationMethod+data) ⇒ [MethodData
](#MethodData)
+ * [.setData(data)](#VerificationMethod+setData)
+ * [.properties()](#VerificationMethod+properties) ⇒ Map.<string, any>
+ * [.setPropertyUnchecked(key, value)](#VerificationMethod+setPropertyUnchecked)
+ * [.toJSON()](#VerificationMethod+toJSON) ⇒ any
+ * [.clone()](#VerificationMethod+clone) ⇒ [VerificationMethod
](#VerificationMethod)
+ * _static_
+ * [.newFromJwk(did, key, fragment)](#VerificationMethod.newFromJwk) ⇒ [VerificationMethod
](#VerificationMethod)
+ * [.fromJSON(json)](#VerificationMethod.fromJSON) ⇒ [VerificationMethod
](#VerificationMethod)
+
+
+
+### verificationMethod.id() ⇒ [DIDUrl
](#DIDUrl)
+Returns a copy of the [DIDUrl](#DIDUrl) of the [VerificationMethod](#VerificationMethod)'s `id`.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.setId(id)
+Sets the id of the [VerificationMethod](#VerificationMethod).
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| id | [DIDUrl
](#DIDUrl) |
+
+
+
+### verificationMethod.controller() ⇒ [CoreDID
](#CoreDID)
+Returns a copy of the `controller` `DID` of the [VerificationMethod](#VerificationMethod).
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.setController(did)
+Sets the `controller` `DID` of the [VerificationMethod](#VerificationMethod) object.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| did | [CoreDID
](#CoreDID) |
+
+
+
+### verificationMethod.type() ⇒ [MethodType
](#MethodType)
+Returns a copy of the [VerificationMethod](#VerificationMethod) type.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.setType(type_)
+Sets the [VerificationMethod](#VerificationMethod) type.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| type_ | [MethodType
](#MethodType) |
+
+
+
+### verificationMethod.data() ⇒ [MethodData
](#MethodData)
+Returns a copy of the [VerificationMethod](#VerificationMethod) public key data.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.setData(data)
+Sets [VerificationMethod](#VerificationMethod) public key data.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| data | [MethodData
](#MethodData) |
+
+
+
+### verificationMethod.properties() ⇒ Map.<string, any>
+Get custom properties of the Verification Method.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.setPropertyUnchecked(key, value)
+Adds a custom property to the Verification Method.
+If the value is set to `null`, the custom property will be removed.
+
+### WARNING
+This method can overwrite existing properties like `id` and result
+in an invalid Verification Method.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| key | string
|
+| value | any
|
+
+
+
+### verificationMethod.toJSON() ⇒ any
+Serializes this to a JSON object.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### verificationMethod.clone() ⇒ [VerificationMethod
](#VerificationMethod)
+Deep clones the object.
+
+**Kind**: instance method of [VerificationMethod
](#VerificationMethod)
+
+
+### VerificationMethod.newFromJwk(did, key, fragment) ⇒ [VerificationMethod
](#VerificationMethod)
+Creates a new [VerificationMethod](#VerificationMethod) from the given `did` and [Jwk](#Jwk). If `fragment` is not given
+the `kid` value of the given `key` will be used, if present, otherwise an error is returned.
+
+### Recommendations
+The following recommendations are essentially taken from the `publicKeyJwk` description from the [DID specification](https://www.w3.org/TR/did-core/#dfn-publickeyjwk):
+- It is recommended that verification methods that use `Jwks` to represent their public keys use the value of
+ `kid` as their fragment identifier. This is
+done automatically if `None` is passed in as the fragment.
+- It is recommended that [Jwk](#Jwk) kid values are set to the public key fingerprint.
+
+**Kind**: static method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| did | [CoreDID
](#CoreDID) \| IToCoreDID
|
+| key | [Jwk
](#Jwk) |
+| fragment | string
\| undefined
|
+
+
+
+### VerificationMethod.fromJSON(json) ⇒ [VerificationMethod
](#VerificationMethod)
+Deserializes an instance from a JSON object.
+
+**Kind**: static method of [VerificationMethod
](#VerificationMethod)
+
+| Param | Type |
+| --- | --- |
+| json | any
|
+
+
+
+## CredentialStatus
+**Kind**: global variable
+
+
+## StatusPurpose
+Purpose of a [StatusList2021](#StatusList2021).
+
+**Kind**: global variable
+
+
+## StateMetadataEncoding
+**Kind**: global variable
+
+
+## MethodRelationship
+**Kind**: global variable
+
+
+## StatusCheck
+Controls validation behaviour when checking whether or not a credential has been revoked by its
+[`credentialStatus`](https://www.w3.org/TR/vc-data-model/#status).
+
+**Kind**: global variable
+
+
+## Strict
+Validate the status if supported, reject any unsupported
+[`credentialStatus`](https://www.w3.org/TR/vc-data-model/#status) types.
+
+Only `RevocationBitmap2022` is currently supported.
+
+This is the default.
+
+**Kind**: global variable
+
+
+## SkipUnsupported
+Validate the status if supported, skip any unsupported
+[`credentialStatus`](https://www.w3.org/TR/vc-data-model/#status) types.
+
+**Kind**: global variable
+
+
+## SkipAll
+Skip all status checks.
+
+**Kind**: global variable
+
+
+## SubjectHolderRelationship
+Declares how credential subjects must relate to the presentation holder.
+
+See also the [Subject-Holder Relationship](https://www.w3.org/TR/vc-data-model/#subject-holder-relationships) section of the specification.
+
+**Kind**: global variable
+
+
+## AlwaysSubject
+The holder must always match the subject on all credentials, regardless of their [`nonTransferable`](https://www.w3.org/TR/vc-data-model/#nontransferable-property) property.
+This variant is the default.
+
+**Kind**: global variable
+
+
+## SubjectOnNonTransferable
+The holder must match the subject only for credentials where the [`nonTransferable`](https://www.w3.org/TR/vc-data-model/#nontransferable-property) property is `true`.
+
+**Kind**: global variable
+
+
+## Any
+The holder is not required to have any kind of relationship to any credential subject.
+
+**Kind**: global variable
+
+
+## FailFast
+Declares when validation should return if an error occurs.
+
+**Kind**: global variable
+
+
+## AllErrors
+Return all errors that occur during validation.
+
+**Kind**: global variable
+
+
+## FirstError
+Return after the first error occurs.
+
+**Kind**: global variable
+
+
+## verifyEd25519(alg, signingInput, decodedSignature, publicKey)
+Verify a JWS signature secured with the `EdDSA` algorithm and curve `Ed25519`.
+
+This function is useful when one is composing a `IJwsVerifier` that delegates
+`EdDSA` verification with curve `Ed25519` to this function.
+
+# Warning
+
+This function does not check whether `alg = EdDSA` in the protected header. Callers are expected to assert this
+prior to calling the function.
+
+**Kind**: global function
+
+| Param | Type |
+| --- | --- |
+| alg | JwsAlgorithm
|
+| signingInput | Uint8Array
|
+| decodedSignature | Uint8Array
|
+| publicKey | [Jwk
](#Jwk) |
+
+
+
+## encodeB64(data) ⇒ string
+Encode the given bytes in url-safe base64.
+
+**Kind**: global function
+
+| Param | Type |
+| --- | --- |
+| data | Uint8Array
|
+
+
+
+## decodeB64(data) ⇒ Uint8Array
+Decode the given url-safe base64-encoded slice into its raw bytes.
+
+**Kind**: global function
+
+| Param | Type |
+| --- | --- |
+| data | Uint8Array
|
+
+
+
+## start()
+Initializes the console error panic hook for better error messages
+
+**Kind**: global function
diff --git a/docs/build/identity.rs/1.1/docs/references/specifications/iota-did-method-spec.mdx b/docs/build/identity.rs/1.1/docs/references/specifications/iota-did-method-spec.mdx
new file mode 100644
index 00000000000..684653b175f
--- /dev/null
+++ b/docs/build/identity.rs/1.1/docs/references/specifications/iota-did-method-spec.mdx
@@ -0,0 +1,263 @@
+---
+title: IOTA DID Method Specification v1.0
+sidebar_label: DID Method
+description: How IOTA Identity implements the Decentralized Identifiers Standard on the IOTA Tangle.
+image: /img/Identity_icon.png
+keywords:
+ - DID
+ - specs
+ - specifications
+ - Decentralized Identifiers
+ - Tangle
+ - format
+---
+
+# IOTA DID Method Specification v1.0
+
+2023-08-23
+
+## Abstract
+
+The IOTA DID Method Specification describes a method of implementing the [Decentralized Identifiers](https://www.w3.org/TR/did-core/) (DID) standard on [IOTA](https://iota.org), a Distributed Ledger Technology (DLT). It conforms to the [DID specification v1.0](https://www.w3.org/TR/did-core/) and describes how to perform Create, Read, Update and Delete (CRUD) operations for IOTA DID Documents using unspent transaction outputs (_UTXO_) on the IOTA and [Shimmer](https://shimmer.network/) networks, introduced with the [Stardust upgrade](https://blog.shimmer.network/stardust-upgrade-in-a-nutshell/).
+
+## Data Types & Subschema Notation
+
+Data types and subschemas used throughout this TIP are defined in [TIP-21](https://github.com/iotaledger/tips/blob/v1.1.0/tips/TIP-0021/tip-0021.md).
+
+## Introduction
+
+### UTXO Ledger
+
+The unspent transaction output ([UTXO](/tips/tips/TIP-0020/)) model defines a ledger state which is comprised of unspent outputs. Outputs are created by a transaction consuming outputs of previous transactions as inputs. The Stardust version of the protocol defines several output types, the relevant ones for the IOTA DID Method are: Basic Outputs for _value transactions_, and Alias Outputs for storage of DID Documents.
+
+All outputs must hold a minimum amount of tokens to be stored on the ledger. For output types that can hold arbitrary data, for instance the Alias Output, the amount of tokens held by the output must cover the byte cost of the data stored. This prevents the ledger size from growing uncontrollably while guaranteeing that the data is not pruned from the nodes, which is important for resolving DID Documents. This deposit is fully refundable and can be reclaimed when the output is destroyed.
+
+Data stored in an output and covered by the storage deposit will be stored in _all_ nodes on the network and can be retrieved from any node. This provides strong guarantees for any data stored in the ledger.
+
+### Alias Output
+
+The [Alias Output](https://github.com/iotaledger/tips/blob/v1.1.0/tips/TIP-0018/tip-0018.md#alias-output) is a specific implementation of the [UTXO state machine](https://github.com/iotaledger/tips/blob/v1.1.0/tips/TIP-0018/tip-0018.md#chain-constraint-in-utxo). Some of its relevant properties are:
+
+- **Amount**: the amount of IOTA coins held by the output.
+- **Alias ID**: 32 byte array, a unique identifier of the alias, which is the BLAKE2b-256 hash
+ of the Output ID that created it.
+- **State Index**: A counter that must increase by 1 every time the alias is state transitioned.
+- **State Metadata**: Dynamically sized array of arbitrary bytes with a length up to `Max Metadata Length`, as defined in [TIP-22](https://github.com/iotaledger/tips/blob/v1.1.0/tips/TIP-0022/tip-0022.md). Can only be changed by the state controller.
+- **Unlock Conditions**:
+ - State Controller Address Unlock Condition
+ - Governor Address Unlock Condition
+
+Consuming an Alias Output in a transaction may transition it into the next state. The current state is defined as the consumed Alias Output, while the next state is defined as the **Alias Output with the same explicit `Alias ID` on the output side**. There are two types of transitions: `state transition` and `governance transition`.
+
+All outputs include an `Unlock Conditions` property. This feature defines how the output can be unlocked and spent. The Alias Output supports two types of unlock conditions that can be set: the state controller and governor. Each of these can be either an Ed25519 Address, Alias Address or an NFT Address. An Alias Output can have at most one of each unlock condition.
+
+The state controller can unlock a state transition. It is identified by an incremented `State Index` and can change the fields `Amount`, `State Index`, `State Metadata` among other properties.
+
+The governor, on the other hand, can unlock a governance transition indicated by an unchanged `State Index`. A governance transition can change the addresses of the state controller and governor. It also allows destroying the Alias Output.
+
+### Ledger and DID
+
+Storing DID Documents in the ledger state means they inherently benefit from the guarantees the ledger provides.
+
+1. Conflicts among nodes are resolved and dealt with by the ledger.
+2. Replay attacks are mitigated since transactions need to be confirmed by the ledger.
+3. Through the `State Index` a linear history for updates of a DID Document is provided.
+
+## DID Method Name
+
+The `method-name` to identify this DID method is: `iota`.
+
+A DID that uses this method MUST begin with the following prefix: `did:iota`. Following the generic DID specification, this string MUST be lowercase.
+
+## DID Format
+
+The DIDs that follow this method have the following ABNF syntax. It uses the syntax in [RFC5234](https://www.rfc-editor.org/rfc/rfc5234) and the corresponding definition for `digit`.
+
+```
+iota-did = "did:iota:" iota-specific-idstring
+iota-specific-idstring = [ iota-network ":" ] iota-tag
+iota-network = 1*6network-char
+iota-tag = "0x" 64lowercase-hex
+lowercase-hex = digit / "a" / "b" / "c" / "d" / "e" / "f"
+network-char = %x61-7A / digit ; corresponds to the character range from "a" to "z" and "0" to "9".
+```
+
+It starts with the string "did:iota:", followed by an optional network name (1 to 6 lowercase alpha characters) and a colon, then the tag.
+The tag starts with "0x" followed by a hex-encoded `Alias ID` with lower case a-f.
+
+### IOTA-Network
+
+The iota-network is an identifier of the network where the DID is stored. This network must be an IOTA Ledger, but can either be a public or private network, permissionless or permissioned.
+
+The following values are reserved and cannot reference other networks:
+
+1. `iota` references the main network which refers to the ledger known to host the IOTA cryptocurrency.
+2. `atoi` references the development network of IOTA.
+3. `smr` references the shimmer network.
+4. `rms` references the development network of Shimmer.
+
+When no IOTA network is specified, it is assumed that the DID is located on the `iota` network. This means that the following DIDs will resolve to the same DID Document:
+
+```
+did:iota:iota:0xe4edef97da1257e83cbeb49159cfdd2da6ac971ac447f233f8439cf29376ebfe
+did:iota:0xe4edef97da1257e83cbeb49159cfdd2da6ac971ac447f233f8439cf29376ebfe
+```
+
+### IOTA-Tag
+
+An IOTA-tag is a hex-encoded `Alias ID`. The `Alias ID` itself is a unique identifier of the alias, which is the BLAKE2b-256 hash of the Output ID that created it.
+This tag identifies the Alias Output where the DID Document is stored, and it will not be known before the generation of the DID since it will be assigned when the Alias Output is created.
+
+### Anatomy of the State Metadata
+
+In the `State Metadata` of the Alias Output must be a byte packed payload with header fields as follows:
+
+| Name | Type | Description |
+| ------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Document Type | ByteArray[3] | Set to value **DID** to denote a DID Document. |
+| Version | uint8 | Set value **1** to denote the version number of this method |
+| Encoding | uint8 | Set to value to **0** to denote JSON encoding without compression. |
+| Payload | (uint16)ByteArray | A DID Document and its metadata, where every occurrence of the DID in the document is replaced by `did:0:0`. It must be encoded according to `Encoding`. |
+
+The types are defined in [TIP-21](/tips/tips/TIP-0021/#data-types).
+
+#### Payload
+
+The payload must contain the following fields:
+
+- `meta`: contains metadata about the DID Document. For example, `created` to indicate the time of
+ creation, and `updated` to indicate the time of the last update to the document. It may also include other properties.
+- `doc`: contains the DID Document. In the example below, the document only contains one verification method. The `id` and `controller` is specified by `did:0:0` which references the DID of the document itself, since the DID is unknown at the time of publishing. It also deduplicates the DID of the document to reduce the size of the state metadata, in turn reducing the required storage deposit.
+
+Example State Metadata Document:
+
+```json
+{
+ "doc": {
+ "id": "did:0:0",
+ "verificationMethod": [
+ {
+ "id": "did:0:0#jkGOGVO3Te7ADpvlplr47eP9ucLt41zm",
+ "controller": "did:0:0",
+ "type": "JsonWebKey",
+ "publicKeyJwk": {
+ "kty": "OKP",
+ "alg": "EdDSA",
+ "kid": "jkGOGVO3Te7ADpvlplr47eP9ucLt41zm",
+ "crv": "Ed25519",
+ "x": "D5w8vG6tKEnpBAia5J4vNgLID8k0BspHz-cVMBCC3RQ"
+ }
+ }
+ ],
+ "authentication": ["did:0:0#jkGOGVO3Te7ADpvlplr47eP9ucLt41zm"]
+ },
+ "meta": {
+ "created": "2023-08-28T14:49:37Z",
+ "updated": "2023-08-28T14:50:27Z"
+ }
+}
+```
+
+## Controllers
+
+A state controller can directly update the DID Document and the amount of tokens held by the Alias Output, but it cannot destroy the output. A governor, on the other hand, can indirectly update the DID Document by updating the state controller. The governor can also destroy the output by performing a governance transition without producing an Alias Output with the same `Alias ID`.
+
+As of now, only one state controller and one governor can be set for an Alias Output. Support for multiple controllers may be possible depending on future updates of the protocol.
+
+## CRUD Operations
+
+Create, Read, Update and Delete (CRUD) operations that change the DID Documents are done through state or governance transitions of the Alias Output.
+
+**These operations require fund transfer to cover byte cost. Transactions must be carefully done in order to avoid fund loss.** For example, the amount of funds in the inputs should equal these in the outputs. Additionally, private keys of controllers must be stored securely.
+
+### Create
+
+In order to create a simple self controlled DID two things are required:
+
+1. An Ed25519 Address for which the private key is available, or control over an Alias or NFT Output.
+2. A Basic, Alias or NFT Output with enough coins to cover the byte cost.
+
+Creation steps:
+
+1. Create the content of the DID Document like verification methods, services, etc.
+2. Create the payload and the headers as described in the [Anatomy of the State Metadata](#anatomy-of-the-state-metadata).
+3. Create a new Alias Output with the payload and the headers stored in its `State Metadata`.
+4. Set the state controller and the governor unlock conditions to the addresses that should control state and governance transitions, respectively.
+5. Set enough tokens in the output to cover the byte cost.
+6. Publish a new transaction with an existing output that contains at least the storage deposit from step 6 as input, and the newly created Alias Output as output.
+
+Once the transaction is confirmed, the DID is published and can be formatted by using the `Alias ID` as the tag in [DID Format](#did-format).
+
+### Read
+
+The following steps can be used to read the latest DID Document associated with a DID.
+
+1. Obtain the `Alias ID` from the DID by extracting the `iota-tag` from the DID, see [DID Format](#did-format).
+2. Obtain the network of the DID by extracting the `iota-network` from the DID, see [DID Format](#did-format).
+3. Query the Alias Output corresponding to the `Alias ID` using a node running the [inx indexer](https://github.com/iotaledger/inx-indexer). Nodes usually include this indexer by default.
+4. Assert that the extracted network matches the one returned from the node. Return an error otherwise.
+5. Assert that the `Alias ID` of the returned output matches the `Alias ID` extracted from the DID. Return an error otherwise.
+6. Retrieve the value of the `State Metadata` field from the returned output.
+7. Validate the contents match the structure described in [Anatomy of the State Metadata](#anatomy-of-the-state-metadata). Return an error otherwise.
+8. Decode the DID Document from the `State Metadata`.
+9. Replace the placeholder `did:0:0` with the DID given as input.
+
+### Update
+
+Updating a DID Document can be achieved by the state controller performing a state transition of the Alias Output with the updated content:
+
+1. Create a copy of the Alias Output with the `Alias ID` set explicitly.
+2. Pack the updated DID Document, as described in the [Anatomy of the State Metadata](#anatomy-of-the-state-metadata), into the `State Metadata` of the output.
+3. Increment the `State Index`.
+4. Set the `amount` of coins sufficient to cover the byte cost.
+5. Publish a new transaction that includes the current Alias Output as input (along with any required Basic Outputs to consume to cover the `amount`, if increased) and the updated one as output. If the state controller unlock of the Alias Output references other Alias or NFT Outputs, those outputs must be unlocked in the same transaction, recursively.
+
+### Delete
+
+#### Deactivate
+
+Temporarily deactivating a DID can be done by deleting the contents of the `State Meadata` in the Alias Output, setting it to an empty byte array, and publishing an [update](#update).
+
+Another option is to [update](#update) the DID Document and set the `deactivated` property in its `metadata` to true. In both cases, the deactivated DID Document will be marked as `deactivated` when resolved.
+
+#### Destroy
+
+In order to permanently destroy a DID, a new transaction can be published by the governor that consumes the Alias Output without having a corresponding Alias Output on the output side with the same explicit `Alias ID`. This results in destroying the Alias Output and the DID.
+
+Note that this operation irreversibly and irrecoverably deletes the DID. This is because the `Alias ID` from which an IOTA DID is derived (see [IOTA-Tag](#iota-tag)) is generated from the hash of the input transaction that created it, which cannot generally be replicated.
+
+## IOTA Identity standards
+
+The `did:iota` method is implemented in the [IOTA Identity framework](https://github.com/iotaledger/identity.rs). This framework supports a number of operations that are standardized, some are standardized across the SSI community, and some are the invention of the IOTA Foundation.
+
+### Revocation
+
+Revocation of verifiable credentials and signatures can be achieved using the [Revocation Bitmap 2022](./revocation-bitmap-2022.mdx) where issuers store a bitmap of indices in the DID Document. These indices correspond to verifiable credentials they have issued. If the binary value of the index in the bitmap is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.
+
+### Standardized Services
+
+The IOTA Identity framework also standardized certain `services` that are embedded in the DID Document. It is RECOMMENDED to implement these when implementing the `did:iota` method.
+
+Currently standardized `services`:
+
+- [Revocation Bitmap Service](./revocation-bitmap-2022.mdx#revocation-bitmap-service)
+
+## Security Considerations
+
+The `did:iota` method is implemented on the [IOTA](https://iota.org), a public permissionless and feeless Distributed Ledger Technology (DLT), making it resistant against almost all censorship attack vectors. Up until the `Coordicide` update for the IOTA network, a dependency on the coordinator exists for resolving ordering conflicts. This has a minor censorship possibility, that, in the worst case, can prevent transactions from getting confirmed.
+
+### Private Key Management
+
+All private keys or seeds used for the `did:iota` method should be equally well protected by the users. Private keys of the state controller and the governor are especially important as they control how keys are added or removed, providing full control over the identity. The IOTA Identity framework utilizes the [Stronghold project](https://github.com/iotaledger/stronghold.rs), a secure software implementation isolating digital secrets from exposure to hacks or leaks. Developers may choose to add other ways to manage the private keys in a different manner.
+
+## Privacy Considerations
+
+### Personal Identifiable Information
+
+The public IOTA and Shimmer networks are immutable. This means that once something is included, it can never be completely removed. For example, destroying an Alias Output will remove it from the ledger state, but it can still be stored in permanodes or by any party that records historical ledger states.
+
+That directly conflicts with certain privacy laws such as GDPR, which have a 'right-to-be-forgotten' for Personal Identifiable Information (PII). As such, users should NEVER upload any PII, including inside DID Documents. While verifiable credentials can be made public, this should only be utilized by Identity for Organisations and Identity for Things.
+
+### Correlation Risks
+
+As with any DID method, identities can be linked if they are used too often and their usage somehow becomes public. See [DID Correlation Risks](https://www.w3.org/TR/did-core/#did-correlation-risks). Additionally, a DID can be correlated with funds if the Alias Output used to store the DID Document or any of its controllers is used for holding, transferring or controlling coins or NFTs.
diff --git a/docs/build/identity.rs/1.1/docs/references/specifications/overview.mdx b/docs/build/identity.rs/1.1/docs/references/specifications/overview.mdx
new file mode 100644
index 00000000000..8ffb0951bd7
--- /dev/null
+++ b/docs/build/identity.rs/1.1/docs/references/specifications/overview.mdx
@@ -0,0 +1,15 @@
+---
+title: Specifications Overview
+sidebar_label: Overview
+description: Provide overview of the specifications
+image: /img/Identity_icon.png
+keywords:
+ - specifications
+---
+
+While IOTA Identity implements many existing standards, it also adds some additional features we would like to standardize ourselves. This section covers these features and how they work in great detail. These are not light reads and can be skipped.
+
+The current specifications are:
+
+- [IOTA DID](iota-did-method-spec.mdx): The specification for the IOTA DID Method implemented on the _Tangle_.
+- [Revocation Bitmap 2022](revocation-bitmap-2022.mdx): The specification for an on-Tangle credential revocation mechanism.
diff --git a/docs/build/identity.rs/1.1/docs/references/specifications/revocation-bitmap-2022.mdx b/docs/build/identity.rs/1.1/docs/references/specifications/revocation-bitmap-2022.mdx
new file mode 100644
index 00000000000..f559ce5f12a
--- /dev/null
+++ b/docs/build/identity.rs/1.1/docs/references/specifications/revocation-bitmap-2022.mdx
@@ -0,0 +1,201 @@
+---
+title: Revocation Bitmap
+sidebar_label: Revocation Bitmap
+description: The specification for the embedded revocation bitmap.
+image: /img/Identity_icon.png
+keywords:
+ - DID
+ - specs
+ - specifications
+ - revocation
+ - bitmap
+---
+
+# Revocation Bitmap 2022
+
+## Abstract
+
+This specification describes a mechanism for publishing the revocation status of [verifiable credentials](../../explanations/verifiable-credentials.mdx) embedded in an issuer's DID document.
+
+## Introduction
+
+Revocation gives an issuer the capability to invalidate a credential they issued before its natural expiration date. To achieve this, issuers can embed an identifier in the `credentialStatus` field of a credential. Verifiers can then lookup that identifier in a separate list, to check whether the credential is still valid. This document specifies a mechanism of embedding such a list, in form of a bitmap, in the DID document of the issuer, where each bitmap index corresponds to a credential they have issued. This mechanism is space-efficient and enables a verifier to check a credential's status in a privacy-preserving manner and without requiring additional lookups or external resources.
+
+## Revocation Bitmap Concept
+
+The revocation status of a verifiable credential is expressed as a binary value. The issuer keeps a bitmap of indices corresponding to verifiable credentials they have issued. If the binary value of the index in the bitmap is 1 (one), the verifiable credential is revoked, if it is 0 (zero) it is not revoked.
+
+## Data Model
+
+### Revocation Bitmap Status
+
+For an issuer to enable verifiers to check the status of a verifiable credential, the [`credentialStatus`](https://www.w3.org/TR/vc-data-model/#status) property MUST be specified with the following properties:
+
+| Property | Description |
+| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `id` | The constraints on the `id` property are listed in the [Verifiable Credentials Data Model specification](https://www.w3.org/TR/vc-data-model/). The `id` MUST be a [DID URL](https://www.w3.org/TR/did-core/#did-url-syntax) that is the URL to a [Revocation Bitmap Service](#revocation-bitmap-service) in the DID Document of the issuer. It SHOULD include an `index` query set to the same value as `revocationBitmapIndex`, to uniquely identify the `credentialStatus`. If the `index` query is present, implementations SHOULD reject statuses where the `index` query's value does not match `revocationBitmapIndex`. |
+| `type` | The `type` property MUST be `"RevocationBitmap2022"`. |
+| `revocationBitmapIndex` | The `revocationBitmapIndex` property MUST be an unsigned, 32-bit integer expressed as a string. This is the index of the credential in the issuer's revocation bitmap. Each index SHOULD be unique among all credentials linking to the same [Revocation Bitmap Service](#revocation-bitmap-service). |
+
+#### Example
+
+An example of a verifiable credential with a `credentialStatus` of type `RevocationBitmap2022`.
+
+```json
+{
+ "@context": "https://www.w3.org/2018/credentials/v1",
+ "id": "https://example.edu/credentials/3732",
+ "type": ["VerifiableCredential", "UniversityDegreeCredential"],
+ "credentialSubject": {
+ "id": "did:iota:B8DucnzULJ9E8cmaReYoePU2b7UKE9WKxyEVov8tQA7H",
+ "GPA": "4.0",
+ "degree": "Bachelor of Science and Arts",
+ "name": "Alice"
+ },
+ "issuer": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw",
+ "issuanceDate": "2022-06-13T08:04:36Z",
+ "credentialStatus": {
+ "id": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw?index=5#revocation",
+ "type": "RevocationBitmap2022",
+ "revocationBitmapIndex": "5"
+ },
+ "proof": {
+ "type": "JcsEd25519Signature2020",
+ "verificationMethod": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw#key-1",
+ "signatureValue": "2eHdbDumMrer4pNVkaiYMqsVqVp2adq7bRcgTJZiw17Zeghk2ZT49YHwLwCCg35YKganBhxP6YSbzYoBK1AuCUv"
+ }
+}
+```
+
+### Revocation Bitmap Service
+
+To allow verifiers to check the status of a [Revocation Bitmap Status](#revocation-bitmap-status), the DID document of the credential issuer MUST contain a [service](https://www.w3.org/TR/did-core/#services) with the following properties:
+
+| Property | Description |
+| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `id` | The constraints on the `id` property are listed in the [DID Core service specification](https://www.w3.org/TR/did-core/#services). The `id` property MUST be a DID URL uniquely identifying the revocation bitmap. |
+| `type` | The `type` property MUST be `"RevocationBitmap2022"`. |
+| `serviceEndpoint` | The `serviceEndpoint` MUST be generated according to the [service endpoint generation algorithm](#service-endpoint-generation-algorithm). |
+
+#### Example
+
+An example of an issuer's DID document where credential `"5"` in the `#revocation` service is revoked:
+
+```json
+{
+ "id": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw",
+ "verificationMethod": [
+ {
+ "id": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw#key-1",
+ "controller": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw",
+ "type": "Ed25519VerificationKey2018",
+ "publicKeyMultibase": "z3hgM9fNkhwgT5mECbj1HdKoFNZgpffwQYEV8WBVHphXq"
+ }
+ ],
+ "capabilityInvocation": [
+ {
+ "id": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw#sign-0",
+ "controller": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw",
+ "type": "Ed25519VerificationKey2018",
+ "publicKeyMultibase": "z83F6zbD3KqaxvQhqo25LvSXzoDdpZmp3EpPVonSVACwZ"
+ }
+ ],
+ "service": [
+ {
+ "id": "did:iota:EvaQhPXXsJsGgxSXGhZGMCvTt63KuAFtaGThx6a5nSpw#revocation",
+ "type": "RevocationBitmap2022",
+ "serviceEndpoint": "data:application/octet-stream;base64,ZUp5ek1tQmdZR1NBQUFFZ1ptVUFBQWZPQUlF"
+ }
+ ]
+}
+```
+
+## Algorithms
+
+The following algorithms define how to generate, expand and validate revocation bitmaps.
+
+### Service Endpoint Generation Algorithm
+
+The following process MUST be followed when producing a `RevocationBitmap2022` to embed in a service endpoint:
+
+1. Let **bitmap** be a [_roaring bitmap_](https://roaringbitmap.org/) where each bit is initialized to 0.
+2. For each revoked credential with an **index** not exceeding an unsigned, 32-bit integer, set the corresponding bit in **bitmap** at **index** to 1.
+3. Generate the **bitmap serialization** according to the [roaring bitmap serialization format](https://github.com/RoaringBitmap/RoaringFormatSpec/) using the **bitmap** as input.
+4. Generate a **compressed bitmap** by using the ZLIB compression algorithm [[RFC 1950](https://datatracker.ietf.org/doc/html/rfc1950)] on the **bitmap serialization** and base64-encoding [[RFC4648](https://datatracker.ietf.org/doc/html/rfc4648)] the result.
+5. Create the **service endpoint** by embedding the **compressed bitmap** in a data URL [[RFC2397](https://datatracker.ietf.org/doc/html/rfc2397)]. On the data url, the `