Profiles can prove ownership of social media accounts and websites by establishing two-way cryptographic links.
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!
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.