User stories are incomplete, but they cover the main features of MSQ with main guarantees that it provides.

1 Authorization

1.1 Login to a website via MSQ

I want to be able to log in to any website having nothing more than my regular MetaMask extension.

I don’t want any website to know my identity on other websites.

I don’t want any third party to track me across websites I use.

I don’t want any website to know my other identities from the same website, if I want to log in another account.

I don’t want any website to be able to sign messages with key pairs I use for other websites.

Pre-requisites

I have a web browser with MetaMask extension installed and set up (meaning, I have a wallet).

1.1.1 I don’t have MSQ extension yet, this is my first time logging in to website X

  1. I navigate to website X and click on Login with MetaMask button.
  2. MetaMask popup is shown, it requests me to connect MetaMask with this website. I click “Connect”.
  3. Another MetaMask popup is shown, it requests me to connect to a snap called MSQ - Safe ICP Wallet. I approve.
  4. Another browser window opens up at https://msq.tech. It also requests me to connect to a snap called MSQ - Safe ICP Wallet. I Approve.
  5. A webpage is shown, which says “Choose a mask to wear” and lists one pre-created mask for me to select.
  6. I click on that mask.
  7. The webpage with MSQ is closed immediately and I’m again at the website X. But now I’m authorized.
  8. My principal ID on website X is the same as was shown by the mask I selected at MSQ.
  9. After that website X can sign messages with my key pair, that corresponds to the principal ID of the selected identity (mask) on my behalf, without me noticing it.