Skip to main content
Version: 1.3

Class: IotaDocument

identity_wasm.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.

Table of contents

Constructors

Methods

Constructors

constructor

new IotaDocument(network)

Constructs an empty IOTA DID Document with a placeholder identifier for the given network.

Parameters

NameType
networkstring

Methods

toJSON

toJSON(): Object

  • Return copy of self without private attributes.

Returns

Object

toJSON(): any

Serializes to a plain JS representation.

Returns

any


toString

toString(): string

Return stringified version of self.

Returns

string


newWithId

Static newWithId(id): IotaDocument

Constructs an empty DID Document with the given identifier.

Parameters

NameType
idIotaDID

Returns

IotaDocument


id

id(): IotaDID

Returns a copy of the DID Document id.

Returns

IotaDID


controller

controller(): 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.

Returns

IotaDID[]


setController

setController(controller): void

Sets the controllers of the document.

Note: Duplicates will be ignored. Use null to remove all controllers.

Parameters

NameType
controllernull | IotaDID[]

Returns

void


alsoKnownAs

alsoKnownAs(): string[]

Returns a copy of the document's alsoKnownAs set.

Returns

string[]


setAlsoKnownAs

setAlsoKnownAs(urls): void

Sets the alsoKnownAs property in the DID document.

Parameters

NameType
urlsnull | string | string[]

Returns

void


properties

properties(): Map\<string, any>

Returns a copy of the custom DID Document properties.

Returns

Map\<string, any>


setPropertyUnchecked

setPropertyUnchecked(key, value): void

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.

Parameters

NameType
keystring
valueany

Returns

void


service

service(): Service[]

Return a set of all Service in the document.

Returns

Service[]


insertService

insertService(service): void

Add a new Service to the document.

Returns true if the service was added.

Parameters

NameType
serviceService

Returns

void


removeService

removeService(did): undefined | Service

Remove a Service identified by the given DIDUrl from the document.

Returns true if a service was removed.

Parameters

NameType
didDIDUrl

Returns

undefined | Service


resolveService

resolveService(query): undefined | Service

Returns the first Service with an id property matching the provided query, if present.

Parameters

NameType
querystring | DIDUrl

Returns

undefined | Service


methods

methods(scope?): VerificationMethod[]

Returns a list of all VerificationMethod in the DID Document, whose verification relationship matches scope.

If scope is not set, a list over the embedded methods is returned.

Parameters

NameType
scope?MethodScope

Returns

VerificationMethod[]


insertMethod

insertMethod(method, scope): void

Adds a new method to the document in the given scope.

Parameters

NameType
methodVerificationMethod
scopeMethodScope

Returns

void


removeMethod

removeMethod(did): undefined | VerificationMethod

Removes all references to the specified Verification Method.

Parameters

NameType
didDIDUrl

Returns

undefined | VerificationMethod


resolveMethod

resolveMethod(query, scope?): undefined | VerificationMethod

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.

Parameters

NameType
querystring | DIDUrl
scope?MethodScope

Returns

undefined | VerificationMethod


attachMethodRelationship

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.

Parameters

NameType
didUrlDIDUrl
relationshipMethodRelationship

Returns

boolean


detachMethodRelationship

detachMethodRelationship(didUrl, relationship): boolean

Detaches the given relationship from the given method, if the method exists.

Parameters

NameType
didUrlDIDUrl
relationshipMethodRelationship

Returns

boolean


verifyJws

verifyJws(jws, options, signatureVerifier?, detachedPayload?): DecodedJws

Decodes and verifies the provided JWS according to the passed options and signatureVerifier. If a signatureVerifier is provided it will be used when verifying decoded JWS signatures, otherwise a default verifier capable of handling the EdDSA, ES256, ES256K algorithms will be used.

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.

Parameters

NameType
jwsJws
optionsJwsVerificationOptions
signatureVerifier?IJwsVerifier
detachedPayload?string

Returns

DecodedJws


pack

pack(): Uint8Array

Serializes the document for inclusion in an Alias Output's state metadata with the default StateMetadataEncoding.

Returns

Uint8Array


packWithEncoding

packWithEncoding(encoding): Uint8Array

Serializes the document for inclusion in an Alias Output's state metadata.

Parameters

NameType
encodingJson

Returns

Uint8Array


unpackFromOutput

Static unpackFromOutput(did, aliasOutput, allowEmpty): 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.

Parameters

NameType
didIotaDID
aliasOutputAliasOutputBuilderParams
allowEmptyboolean

Returns

IotaDocument


unpackFromBlock

Static unpackFromBlock(network, block): 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.

Parameters

NameType
networkstring
blockBlock

Returns

IotaDocument[]


metadata

metadata(): 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.

Returns

IotaDocumentMetadata


metadataCreated

metadataCreated(): undefined | Timestamp

Returns a copy of the timestamp of when the DID document was created.

Returns

undefined | Timestamp


setMetadataCreated

setMetadataCreated(timestamp): void

Sets the timestamp of when the DID document was created.

Parameters

NameType
timestampundefined | Timestamp

Returns

void


metadataUpdated

metadataUpdated(): undefined | Timestamp

Returns a copy of the timestamp of the last DID document update.

Returns

undefined | Timestamp


setMetadataUpdated

setMetadataUpdated(timestamp): void

Sets the timestamp of the last DID document update.

Parameters

NameType
timestampundefined | Timestamp

Returns

void


metadataDeactivated

metadataDeactivated(): undefined | boolean

Returns a copy of the deactivated status of the DID document.

Returns

undefined | boolean


setMetadataDeactivated

setMetadataDeactivated(deactivated?): void

Sets the deactivated status of the DID document.

Parameters

NameType
deactivated?boolean

Returns

void


metadataStateControllerAddress

metadataStateControllerAddress(): undefined | string

Returns a copy of the Bech32-encoded state controller address, if present.

Returns

undefined | string


metadataGovernorAddress

metadataGovernorAddress(): undefined | string

Returns a copy of the Bech32-encoded governor address, if present.

Returns

undefined | string


setMetadataPropertyUnchecked

setMetadataPropertyUnchecked(key, value): void

Sets a custom property in the document metadata. If the value is set to null, the custom property will be removed.

Parameters

NameType
keystring
valueany

Returns

void


revokeCredentials

revokeCredentials(serviceQuery, indices): void

If the document has a RevocationBitmap service identified by serviceQuery, revoke all specified indices.

Parameters

NameType
serviceQuerystring | DIDUrl
indicesnumber | number[]

Returns

void


unrevokeCredentials

unrevokeCredentials(serviceQuery, indices): void

If the document has a RevocationBitmap service identified by serviceQuery, unrevoke all specified indices.

Parameters

NameType
serviceQuerystring | DIDUrl
indicesnumber | number[]

Returns

void


clone

clone(): IotaDocument

Returns a deep clone of the IotaDocument.

Returns

IotaDocument


_shallowCloneInternal

_shallowCloneInternal(): IotaDocument

Warning

This is for internal use only. Do not rely on or call this method.

Returns

IotaDocument


_strongCountInternal

_strongCountInternal(): number

Warning

This is for internal use only. Do not rely on or call this method.

Returns

number


fromJSON

Static fromJSON(json): IotaDocument

Deserializes an instance from a plain JS representation.

Parameters

NameType
jsonany

Returns

IotaDocument


toCoreDocument

toCoreDocument(): CoreDocument

Transforms the IotaDocument to its CoreDocument representation.

Returns

CoreDocument


generateMethod

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. Storages are expected to export key type constants for that use case.

The fragment of the generated method is returned.

Parameters

NameType
storageStorage
keyTypestring
algJwsAlgorithm
fragmentundefined | string
scopeMethodScope

Returns

Promise\<string>


purgeMethod

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.

Parameters

NameType
storageStorage
idDIDUrl

Returns

Promise\<void>


createJwt

createJwt(storage, fragment, payload, options): Promise\<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.

@deprecated Use createJws() instead.

Parameters

NameType
storageStorage
fragmentstring
payloadstring
optionsJwsSignatureOptions

Returns

Promise\<Jws>


createJws

createJws(storage, fragment, payload, options): Promise\<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.

Parameters

NameType
storageStorage
fragmentstring
payloadstring
optionsJwsSignatureOptions

Returns

Promise\<Jws>


createCredentialJwt

createCredentialJwt(storage, fragment, credential, options, custom_claims?): Promise\<Jwt>

Produces a JWS where the payload is produced from the given credential in accordance with VC Data Model v1.1.

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.

Parameters

NameType
storageStorage
fragmentstring
credentialCredential
optionsJwsSignatureOptions
custom_claims?Record\<string, any>

Returns

Promise\<Jwt>


createPresentationJwt

createPresentationJwt(storage, fragment, presentation, signature_options, presentation_options): Promise\<Jwt>

Produces a JWT where the payload is produced from the given presentation. in accordance with VC Data Model v1.1.

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.

Parameters

NameType
storageStorage
fragmentstring
presentationPresentation
signature_optionsJwsSignatureOptions
presentation_optionsJwtPresentationOptions

Returns

Promise\<Jwt>


generateMethodJwp

generateMethodJwp(storage, alg, fragment, scope): Promise\<string>

Parameters

NameType
storageStorage
algProofAlgorithm
fragmentundefined | string
scopeMethodScope

Returns

Promise\<string>


createIssuedJwp

createIssuedJwp(storage, fragment, jpt_claims, options): Promise\<string>

Parameters

NameType
storageStorage
fragmentstring
jpt_claimsJptClaims
optionsJwpCredentialOptions

Returns

Promise\<string>


createPresentedJwp

createPresentedJwp(presentation, method_id, options): Promise\<string>

Parameters

NameType
presentationSelectiveDisclosurePresentation
method_idstring
optionsJwpPresentationOptions

Returns

Promise\<string>


createCredentialJpt

createCredentialJpt(credential, storage, fragment, options, custom_claims?): Promise\<Jpt>

Parameters

NameType
credentialCredential
storageStorage
fragmentstring
optionsJwpCredentialOptions
custom_claims?Map\<string, any>

Returns

Promise\<Jpt>


createPresentationJpt

createPresentationJpt(presentation, method_id, options): Promise\<Jpt>

Parameters

NameType
presentationSelectiveDisclosurePresentation
method_idstring
optionsJwpPresentationOptions

Returns

Promise\<Jpt>