The steps involved in signing up are:
Register the username
- Hash the password and username through scrypt to get the auth key pair, and symmetric root key.
- Generate a random identity keypair
- Generate a signed username claim including an expiry, and the ipfs node id of the storage server (the server we are signing up through) This is just identity.sign(username, expiry, [storage id])
- Send this claim to the pki node for confirmation
Set up your identity
- Write the public identity key to ipfs
- Write the public following key to ipfs
- Create a WriterData for the identity key pair with the two resulting public key hashes
- Generate a random key pair to control writes to the users filesystem. Add this key pair as an owned key to the identity WriterData.
- Commit the identity WriterData (write it to ipfs and set the mutable pointer for the identity key pair to the resulting hash).
Set up your filesystem
- Create a DirAccess cryptree node for the user's root directory, and add this to the champ of the filesystem key pair.
- Add a write capability to your root dir to your login data (encrypted with the symmetric root key, and only retrievable with the auth key pair)
- Create the /username/shared directory which is used when sending follow requests