Keyspace 
Docs
GitHub

Identity Proofs

Profiles can prove ownership of social media accounts and websites by establishing two-way cryptographic links.

Proving an identity

keyspace prove hackernews alice

Begin by creating an identity claim and signing it with the DID's public key.

{
  "type": "claim",
  "service": "hackernews",
  "username": "alice"
}
BLS.sign(claim, key) -> 8b3c4eff49da861d8a457f642e41d4f42468e4a8bb870f82f1a72cf86075eace39e4f30eea612ad3c5dfad22b0c82bd10c1f8e730da0d9a7f095ed73decf6fee586b9f826d6e0692cfb3383528e354165e2c17649c4d379d3c1c9e2b59a572eb

Next, post the DID and signature on the claimed account:

[my decentralized id] https://keyspace.app/1rgflssfqcatuflhj8dqge8mnlfmkwwtrtuhd2s3g5p2vgyf6sxvqj0s8sc
[my proof] 8b3c4eff49da861d8a457f642e41d4f42468e4a8bb870f82f1a72cf86075eace39e4f30eea612ad3c5dfad22b0c82bd10c1f8e730da0d9a7f095ed73decf6fee586b9f826d6e0692cfb3383528e354165e2c17649c4d379d3c1c9e2b59a572eb

Once the client verifies the posted proof, it announces the claim on chain. We now have a publicly verifiable claim!

Verifying an identity claim

keyspace id alice@hackernews

To verify a claim, fetch the proof and DID from the web:

GET https://hacker-news.firebaseio.com/v0/user/alice.json
{
  "about": "…[my decentralized id] https://keyspace.app/1rgf… [my proof] 8b3c…",
}

load the DID from the chain:

{
  key: "pk…",
  claims: [
    {
      "service": "hackernews",
      "username": "alice"
    }
  ]
}

and validate the signature:

BLS.verify(claim, signature, key)

If the signature matches, we can be assured that the claim is valid.