# Self-issued Account Credentials I have a keypair, so I have a `did:key`, and I can create capability certificates as [UCANs](https://ucan.xyz). But I don't trust my ability to keep the private key safe forever, especially if I try to use it across many devices. I'll probalby mess something up and leak the key, and if I don't do that, I'll probalby lose my devices before long. I do trust trust.storage though. I want to authorize trust.storage to help me recover access to stuff if I lose all the other ways I can prove control over my stuff. ## Create To create a DID Account, you first need an asymmetric keypair. The public key of the keypair will correspond to the account id. Create an AccountCredential creating a Verifiable Credential ("VC") describing the Account. The VC's proof MUST have a root of trust in the private key corresponding to the account id's public key. ``` { "credentialSubject": { "type": "Account", "id": "did:key:zAccountPublicKey", "verificationMethod": [ { "type": "EmailVerifier", "id": "#primary-email-verifier", "issuer": ["did:web:web3.storage"] } ], "authentication": [ "#primary-email-verifier" ], "capabilityDelegation": [ "#primary-email-verifier" ] } "proof": { "verificationMethod": "did:key:zAccountPublicKey", "proofPurpose": "assertionMethod", "jws": "{signature}" } } ``` Register the account with web3.storage using the ucan `account/put` capability ``` { "iss": "did:key:zAccountPublicKey", "aud": "did:web:web3.storage", "att": [ { "can": "account/put", "with": "ipfs://{cid-of-account-credential}"} ] } ```