Skip to content

Add ability to export/import DIDs#49

Draft
rmccue wants to merge 26 commits intomainfrom
add-import-export
Draft

Add ability to export/import DIDs#49
rmccue wants to merge 26 commits intomainfrom
add-import-export

Conversation

@rmccue
Copy link
Member

@rmccue rmccue commented Sep 12, 2025

Introduces an "export" button on DIDs, which gives a JSON document that can be reimported. This document contains the private keys stored in the database (in multibase multikey encoded format).

Fixes #7. This is based off the #14 PR, so that needs to be merged before this is - I can rebase afterwards.

Example export, did-abc123def456abc123def456.json:

{
    "@context": "https:\/\/fair.pm\/did-export",
    "_warning": "WARNING: This file contains your private keys for your DID. Do not share it publicly, as it will lead to your DID being PERMANENTLY COMPROMISED and UNRECOVERABLE.",
    "id": "did:plc:abc123def456abc123def456",
    "rotation": [
        "z6Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    ],
    "verification": [
        "z6Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "z2bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "zruxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    ]
}

rmccue added 26 commits June 13, 2025 01:56
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Retains the decoding ability for prior badly-encoded keys.

Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
These are a list, rather than a map with significant indexes.

Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Signed-off-by: Ryan McCue <me@ryanmccue.info>
Base automatically changed from use-ed25519-for-signing to main September 21, 2025 13:27
@afragen afragen mentioned this pull request Nov 20, 2025
@jdevalk
Copy link
Member

jdevalk commented Nov 24, 2025

When importing an exported file, I get this error:

Uncaught Error: MiniFAIR\PLC\DID::import(): Argument #1 ($data) must be of type stdClass, array given, called in /home/customer/www/fair.example.com/public_html/wp-content/plugins/mini-fair/inc/admin/namespace.php on line 194
in /home/customer/www/fair.example.com/public_html/wp-content/plugins/mini-fair/inc/plc/class-did.php on line 317

If I fix that error, by removing , true on line 179 of inc/admin/namespace.php, I get a white screen of death.

@afragen
Copy link
Contributor

afragen commented Dec 22, 2025

In theory should fix #7

@toderash toderash moved this to Backlog in FAIR Beacon Jan 2, 2026
@toderash toderash removed this from FAIR Beacon Jan 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Transfer DID to another repo

4 participants