# DID Management Platform

A DID Platform provides tools to manage decentralized identities, keys, attributes, and rights associated with an entity (person, organization, or device). Each DID contains a **DID Document**, which holds public keys, verification methods, services, and permissions.

All onboarding steps should first be performed on the **Testnet environment** for testing, and once validated, the same steps can be applied on **Mainnet** for production use:

* **Testnet:** <https://identity-sandbox.zetrix.com/>
* **Mainnet:** <https://identity.zetrix.com/>

<figure><img src="/files/FIlLINOe8e29pbHMjCtx" alt=""><figcaption></figcaption></figure>

The following functionalities represent the core operations in a DID Management Console:

### Change Owner

**Purpose:**\
Transfer ownership or administrative rights of a DID to another entity.

**How it works:**

* Every DID has an **owner** (often defined via controller DID).
* The owner can be changed by updating the DID Document’s **controller** field.
* After update, the new owner gains full control of:
  * key creation/removal
  * delegation management
  * attribute management
  * credential signing rights (if applicable)

**Use cases:**

* Organization transferring DID ownership to a new department.
* Rotating root level admin keys.
* Enforcing governance or recovering compromised ownership.

#### Steps:

The **Issuer** will login Zetrix Wallet and log in to website to change the owner. The steps are as follows:&#x20;

1. Click on **Change Owner.**
2. Fill up the new owner DID.
3. Update.
4. Submit sign using pop up wallet.

<figure><img src="/files/qegEzclDKMbCJZEECB5p" alt=""><figcaption></figcaption></figure>

### Manage Attribute

**Purpose:**\
Add or remove metadata linked to a DID.

**Common DID Attributes include:**

* service entries (API endpoints, VC endpoints)
* cryptographic fingerprint

**Attribute Management includes:**

* **Add attribute** – Insert a new attribute (e.g., service endpoint).
* **Delete attribute** – Remove outdated or invalid attributes.

**Use cases:**

* Add an Issuer’s Verification endpoint (`/verify`).
* Adding a DIDComm messaging endpoint.
* Storing public profile (organization name, logo URL, contact email).

#### Steps:

The **Issuer** will login Zetrix Wallet and log in to website to manage the attribute. The steps are as follows:&#x20;

1. Click on **Manage Attribute**.
2. Click on **Add Attribute**.
3. Please select Algorithms and Encoding needed.
   1. The **algorithm** specifies the cryptographic algorithm used by the public key you are adding.
      1. **Ed25519** – general signing, authentication
      2. **X25519** – encryption / key agreement
      3. **BBS+** – zero knowledge proof credentials
   2. Encoding describes **how the public key is formatted** when stored in the DID Document.
      1. **Hex** – Public key shown in raw hexadecimal bytes.\
         Example field: `publicKeyHex`
      2. **Base64** – Common web safe format used in WebCrypto.\
         Example field: `publicKeyBase64`
      3. **Base58** – Human friendly Base58 format.\
         Example field: `publicKeyBase58`
      4. **Multibase** – Base58 or Base64 but with a prefix (like `z`) telling the system which encoding is used.\
         Example field: `publicKeyMultibase`
      5. **PEM** – RSA key format with `-----BEGIN PUBLIC KEY-----`.\
         Example field: `publicKeyPem`
4. Enter Public Key Value in the input textbox.
5. Update.
6. Submit sign using pop up wallet.

<figure><img src="/files/FNmgKNXMFByOOMskSKUG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/L2tm2dcrnpw55ecY7qA0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/GQVX5VnWePE94vfJkXMK" alt=""><figcaption></figcaption></figure>

### **Update Delegation**

**Purpose:**\
Assign or modify **delegated permissions** for another DID or key.

There are two common types:

#### **Authentication Delegation**

Allows another DID or key to authenticate as the DID owner (e.g., login or signing).

#### **Authorization Delegation**

Allows a delegate to perform specific actions such as:

* issuing credentials
* managing sub-identities
* signing VC metadata
* administering services

**Operations include:**

* Add delegation (assign delegate DID)
* Revoke delegation (remove delegate rights)

**Use cases:**

* Company CEO DID delegating signing authority to HR manager DID.
* An IoT hub delegating actions to child IoT devices.
* Rotating delegated keys without changing DID ownership.

#### Steps:

The **Issuer** will login Zetrix Wallet and log in to website to update delegation. The steps are as follows:&#x20;

1. Click on **Update Delegation**.
2. Click on **Add Delegation**.
3. Enter delegate DID for delegation.
4. Choose type of delegation for&#x20;
   1. Signature Authentication
   2. Verification Key
5. Add validity for use case.
6. Update.
7. Submit sign using pop up wallet.

<figure><img src="/files/5nOcckPTM03h7jOyh6Xr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ABHrEKtDZYSbHXqDF2MC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1U0PEoS5J0HBYyEA8KXf" alt=""><figcaption></figcaption></figure>

### **Create BBS+ Key**

**Purpose:**\
Generate a **BBS+ signing key pair**, used for **Zero-Knowledge Proof (ZKP)** credentials.

**BBS+ Capabilities:**

* Multi-message signatures
* Selective disclosure
* Privacy preserving Verifiable Credentials
* Support for W3C VC ZKP formats

**Where BBS+ is used:**

* Issuers create BBS+ keys to sign credentials such as:
  * education certificates
  * IDs with ZKP support
  * medical or employment credentials
* Holders can generate proofs revealing only required fields.

**Example:**\
If a VC contains *(Name, DOB, Nationality, Address),* BBS+ allows revealing only *(Nationality)* without exposing the rest.

#### Steps:

The **Issuer** will login Zetrix Wallet and log in to website to create a **BBS+ Key**. The steps are as follows:&#x20;

1. Create **BBS++ Key**.
2. Generate Key.
3. Add Validity for use case.
4. Submit/Update.
5. Submit sign using pop up wallet.

<figure><img src="/files/re9ClZ8erCIthW3zj43j" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/NO23hqnjThjcNz7GN4c0" alt=""><figcaption></figcaption></figure>

The **BBS+ public key** will be displayed in your ZID document after it is created.

<figure><img src="/files/WIO1xXQSIjXN07wMZTqb" alt=""><figcaption></figcaption></figure>

### **Create X25519 Key**

**Purpose:**\
Generate an **X25519 key pair** for secure encryption and key exchange.

**X25519 is used for:**

* DIDComm v2 messaging
* Encrypted communication
* Secure session key negotiation
* Holder ↔ Verifier secure data exchange

**Why X25519?**

* Lightweight and fast
* Modern elliptic curve cryptography
* Strong forward secrecy
* Recommended for DID secure messaging protocols

**Use cases:**

* Establish encrypted channels for Verifiable Presentation (VP).
* Encrypt wallet to server communication.
* DID-based encrypted chat systems.

#### Steps:

The **Issuer** will login Zetrix Wallet and log in to website to create X25519 key. The steps are as follows:&#x20;

1. Click on **Create X25519 Key**.
2. Click on **Generate Key** and will auto generated below.
3. Add validity date for use case.
4. Update.
5. Submit sign using pop up wallet.

<figure><img src="/files/kWwib8JX5ausQlm5jWKY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KfdtqGipE4lfaIW49uCa" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zetrix.com/en/developer-resources/did-management-platform.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
