DID

iOS Decentralized Identity APIs

DID login process:

  1. Get DID list. If the list is empty, register a decentralized identity. Otherwise, call pre_login in step 4 to log in to an existing DID.

  2. Create a DID document with the current wallet address by calling the DIDCreate method.

  3. Sign the message returned in step 2 and call the DIDSave method.

  4. Call pre_login to get the message to be signed.

  5. Sign the message returned in step 4 and use the signature to log in to DID with postLoginDID method.

Get DID list

client?.getDIDInfo(wallet, success: { <#MXDIDListInfoResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

address

string

Wallet address

true

Returns:

NameTypeDescriptionRequired

response

string array

User DID list

true

Get DID information

client?.getDIDInfo(wallet, success: { <#MXDIDListInfoResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

DID

string

DID string from the getDIDInfo(address)

true

Returns:

NameTypeDescriptionRequired

controllers

Json

controller information

true

current_public_key

string

current device's public key

true

public_keys

Json

public key information

true

controllers and public_keys type:

NameTypeDescription

type

string

EcdsaSecp256k1RecoveryMethod2020/``Ed25519VerificationKey2018

value

string

wallet address or public key

key_id

string

public key id

Create DID

client?.postCreateDID(address, success: { <#MXCreateDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

address

string

wallet address with blockchain information like eip155:1

true

Returns:

NameTypeDescriptionRequired

DID

string

user DID (existing or newly created)

true

message

string

message to be signed

true

updated

string

update time

true

Save DID information

client?.postSaveDID(did, withParameter: ["signature":"","operation":"create","updated":updateTime], success: { <#MXSaveDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

DID

string

DID string

true

Parameters:

NameTypeDescriptionRequired

signature

string

sign the message with web3.eth.personal.sign method

true

operation

string

create, link, unlink, link_key, unlink_key

true

ids

string array

the DID URL of unlink, unlink_key; unnecessary in create, link, link_publick operation

false

address

string

wallet address (with blockchain-specific prefix, e.g., eip155:1 ) in link, create operation

true

updated

string

updated time returned by postCreateDID(address)

true

Message Prefix

operationTypeMessage

create

string

Create an account\n

link

string

Add new address\n

link_key

string

Login with this account\n

unlink/unlin_key

string

Unlink this address\n

burn

string

Burn this account\n

Update DID

client?.postUpdateDID(did, withParameter: ["operation":"link"], success: { <#MXUpdateDIDResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

DID

string

DID string

true

POST Body

NameTypeDescriptionRequired

ids

string array

Wallet address ID that needs to be unbound

false

address

string

Wallet address that needs to be added. The address needs to be prefixed by blockchain specific strings like did:pkh:eip155:1

false

operation

string

link, unlink, link_key, unlink_key

true

Returns:

NameTypeDescriptionRequired

did

string

User DID (existing or newly created)

true

message

string

Message to be signed

true

updated

string

Update time

true

DID Pre-login

client?.postPreLoginDID(DID, success: { <#MXPreLoginResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

DID

string

DID string

true

Returns:

NameTypeDescriptionRequired

DID

string

User DID (existing or newly created)

true

message

string

Message to be signed

true

updated

string

Update time

true

Log in to DID

client?.postLoginDID(did, withParameter: ["type":" m.login.did.identity","updated":updateTime,], success: { <#MXDIDLoginResponse#> in
    <#code#>
}, failure: { <#Error#> in
    <#code#>
})

Parameters:

NameTypeDescriptionRequired

type

string

type of login (the type of the above example is m.login.did.identity)

true

updated

string

updated time returned by the pre_login method

true

identifier

json

login information

true

device_id

string

device id, not needed for new device

false

identifier type:

NameTypeDescription

DID

string

User DID

token

string

Sign the message returned by pre_login method and perform base16 encoding. The signature method is etherum.Sign(accounts.TextHash(message), privateKey) or personal_sign from Metamask.

Returns:

NameTypeDescriptionRequired

access_token

string

access token

true

user_id

string

user id

true

device_id

string

device id

true

Last updated