Skip to content

Class: DidRegistry

modules/did-registry.DidRegistry

Service responsible for handling the DID Document management. See more information about DID in IAM stack here.

const { connectToCacheServer } = await initWithPrivateKeySigner(privateKey, rpcUrl);
const { connectToDidRegistry } = await connectToCacheServer();
const { didRegistry } = await connectToDidRegistry();
didRegistry.getDidDocument();

Table of contents

Constructors

Accessors

Methods

Constructors

constructor

new DidRegistry(_signerService, _cacheClient, _assetsService, _ipfsConfig)

Parameters

Name Type
_signerService SignerService
_cacheClient CacheClient
_assetsService AssetsService
_ipfsConfig IpfsConfig

Accessors

identityOwner

get identityOwner(): EwSigner

Returns

EwSigner


ipfsStore

get ipfsStore(): DidStore

Returns

DidStore


jwt

get jwt(): JWT

Returns

JWT


registrySettings

get registrySettings(): RegistrySettings

Returns

RegistrySettings

Methods

createDocument

createDocument(): Promise<boolean>

Create DID document of the current user if not exists.

didRegistry.createDocument();

Returns

Promise<boolean>

true if document was created successfully


createPublicClaim

createPublicClaim(options): Promise<string>

Create a public claim with provided data.

didRegistry.createPublicClaim({
    data: {
        claimType: 'root.roles.energyweb.iam.ewc',
        claimTypeVersion: 1,
    },
    subject: 'did:ethr:volta:0x00...0',
});

Parameters

Name Type Description
options CreatePublicClaimOptions object with options

Returns

Promise<string>

JWT token of created claim


decodeJWTToken

decodeJWTToken(options): Promise<unknown>

Decode JWT token of the public claim.

didRegistry.decodeJWTToken({
    token: 'eyJh...VCJ9.ey...IyfQ.SflK...sw5c',
});

Parameters

Name Type Description
options DecodeJWTTokenOptions object with options

Returns

Promise<unknown>

payload of the JWT token


getDidDelegates

getDidDelegates(options?): Promise<undefined | string[]>

Gets delegates from DID document of the given DID.

didRegistry.getDidDelegates({
    did: 'did:ethr:volta:0x00...0',
});

Parameters

Name Type Description
options GetDidDelegatesOptions object with options

Returns

Promise<undefined | string[]>

list of delegates


getDidDocument

getDidDocument(options?): Promise<IDIDDocument>

Retrieve DID Document of the given DID from SSI-Hub if possible, otherwise from blockchain. Optionally include claims object within services in the document.

didRegistry.getDidDocument({
    did: 'did:ethr:volta:0x00...0',
    includeClaims: true,
});

Parameters

Name Type Description
options GetDIDDocumentOptions object with options

Returns

Promise<IDIDDocument>

DID document


getDidPublicKeys

getDidPublicKeys(options?): Promise<IPublicKey[]>

Gets public keys from DID document of the given DID.

didRegistry.getDidPublicKeys({
    did: 'did:ethr:volta:0x00...0',
});

Parameters

Name Type Description
options GetDidPublicKeysOptions object with options

Returns

Promise<IPublicKey[]>

list of public keys


getServices

getServices(options?): Promise<IServiceEndpoint[]>

Gets services from DID document of the given DID.

didRegistry.getServices({
    did: 'did:ethr:volta:0x00...0',
});

Parameters

Name Type Description
options GetServicesOptions object with options

Returns

Promise<IServiceEndpoint[]>

list of claims


init

init(): Promise<void>

Returns

Promise<void>


isClaim

isClaim(claim): claim is Object

Validate that claim contains issuer and claimData.

didRegistry.isClaim(token: Record<string, string | number | object>);

Parameters

Name Type
claim any

Returns

claim is Object

boolean


issuePublicClaim

issuePublicClaim(options): Promise<string>

If token provided issue new token signed by issuer, otherwise create a new claim token based on provided public claim data.

didRegistry.issuePublicClaim({
    token: 'eyJh...VCJ9.ey...IyfQ.SflK...sw5c',
    publicClaim: {
        did: 'did:ethr:volta:0x00...0',
        signer: 'did:ethr:volta:0x00...1',
        claimData: {
            claimType: 'root.roles.energyweb.iam.ewc',
        },
    },
});

Parameters

Name Type Description
options IssuePublicClaimOptions object with options

Returns

Promise<string>

JWT token of created claim


revokeDidDocument

revokeDidDocument(): Promise<boolean>

Revoke DID document of the current user.

didRegistry.revokeDidDocument();

Returns

Promise<boolean>

true if document was revoked successfully


updateDocument

updateDocument(«destructured»): Promise<boolean>

Update DID document of the given DID with provided data.

didRegistry.updateDocument({
    didAttribute: DIDAttribute.PublicKey,
    data: publicKey,
    validity: 60 * 60 * 1000,
    did: 'did:ethr:volta:0x00...0',
});

@param {UpdateDocumentOptions} options object with options
@return true if document was updated successfully

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | [`UpdateDocumentOptions`](../interfaces/modules_did_registry.UpdateDocumentOptions.md) |

#### Returns

`Promise`<`boolean`\>

___

### updateSignedDidDelegate

▸ **updateSignedDidDelegate**(`«destructured»`): `Promise`<`boolean`\>

Updates delegate of the DID document of given DID.

```typescript
didRegistry.updateSignedDidDelegate({
    did: 'did:ethr:volta:0x00...0',
    delegatePublicKey: delegatePublicKey,
    validity: 60 * 60 * 1000,
    algo: KeyType.Secp256k1,
    type: PubKeyType.SignatureAuthentication2018,
});

@param {UpdateSignedDidDelegateOptions} options object with options
@return true if document was updated successfully

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | [`UpdateSignedDidDelegateOptions`](../interfaces/modules_did_registry.UpdateSignedDidDelegateOptions.md) |

#### Returns

`Promise`<`boolean`\>

___

### updateSignedDidPublicKey

▸ **updateSignedDidPublicKey**(`«destructured»`): `Promise`<`boolean`\>

Adds public key to the DID document of given DID.

```typescript
didRegistry.updateSignedDidPublicKey({
    did: 'did:ethr:volta:0x00...0',
    publicKey: publicKey,
    validity: 60 * 60 * 1000,
    algo: KeyType.Secp256k1,
    type: PubKeyType.SignatureAuthentication2018,
    tag: '#main-key',
});

@param {UpdateSignedDidPublicKeyOptions} options object with options
@return true if document was updated successfully

#### Parameters

| Name | Type |
| :------ | :------ |
| `«destructured»` | [`UpdateSignedDidPublicKeyOptions`](../interfaces/modules_did_registry.UpdateSignedDidPublicKeyOptions.md) |

#### Returns

`Promise`<`boolean`\>

___

### verifyPublicClaim

▸ **verifyPublicClaim**(`token`, `iss`): `Promise`<``null`` \| `string`\>

Verifies issued token of the public claim.

```typescript
didRegistry.verifyPublicClaim({
    token: 'eyJh...VCJ9.ey...IyfQ.SflK...sw5c',
    iss: 'did:ethr:volta:0x00...0',
});

Parameters

Name Type Description
token string JWT token of the public claim
iss string DID of the issuer

Returns

Promise<null | string>

DID of the authenticated identity on successful verification or null otherwise


connect

Static connect(signerService, cacheClient, assetsService, ipfsConfig): Promise<DidRegistry>

Parameters

Name Type
signerService SignerService
cacheClient CacheClient
assetsService AssetsService
ipfsConfig IpfsConfig

Returns

Promise<DidRegistry>