[web/native] Retrieve and encode the ed25519 key in the QR code
Summary:
The second key we need to encode into the QR code during secondary device login is the ed25519 key, identified as the device id.
After speaking with @marcin and @kamil (and office hours yesterday), accessing this via the commCoreModule on native is done by making a commCoreModule.getUserPublicKey() call, returning both a ed25519 and curve25519 keypair - the first is the one we need.
On web, it's a little different. @kamil pointed out the way we currently do it is by accessing it through Redux, and it seems like the only way to access the keys for now. I won't need to worry about running the key generation protocol since key generation occurs when the login form is rendered. Since the QR code login screen is accessed by clicking a button on the login form, we know the keys should exist.
Depends on D9093
Addresses ENG-4800
Test Plan:
On native and web:
- Opened the QR code login screen and console.log(url)
- Copied the string
- Used the same RegEx in links.js to parse out the keys
- Confirmed that the ed25519 key was encoded correctly
const url = 'comm://qr-code/%7B%22aes256%22%3A%7B%220%22%3A213%2C%221%22%3A43%2C%222%22%3A225%2C%223%22%3A116%2C%224%22%3A29%2C%225%22%3A212%2C%226%22%3A144%2C%227%22%3A175%2C%228%22%3A227%2C%229%22%3A166%2C%2210%22%3A225%2C%2211%22%3A42%2C%2212%22%3A77%2C%2213%22%3A29%2C%2214%22%3A189%2C%2215%22%3A156%2C%2216%22%3A93%2C%2217%22%3A204%2C%2218%22%3A38%2C%2219%22%3A3%2C%2220%22%3A246%2C%2221%22%3A18%2C%2222%22%3A139%2C%2223%22%3A50%2C%2224%22%3A220%2C%2225%22%3A238%2C%2226%22%3A64%2C%2227%22%3A24%2C%2228%22%3A149%2C%2229%22%3A191%2C%2230%22%3A7%2C%2231%22%3A229%7D%2C%22ed25519%22%3A%228dKa0Z7j4P4cs1FRGj%2BHvXDzwiaylxqa90PgLM0Muzg%22%7D'; const qrCodeKeysRegex = /qr-code\/(\S+)$/; const qrCodeKeysMatch = qrCodeKeysRegex.exec(url)[1]; const keys = JSON.parse(decodeURIComponent(qrCodeKeysMatch)); console.log(keys);
Output:
{ aes256: { '0': 213, '1': 43, '2': 225, '3': 116, '4': 29, '5': 212, '6': 144, '7': 175, '8': 227, '9': 166, '10': 225, '11': 42, '12': 77, '13': 29, '14': 189, '15': 156, '16': 93, '17': 204, '18': 38, '19': 3, '20': 246, '21': 18, '22': 139, '23': 50, '24': 220, '25': 238, '26': 64, '27': 24, '28': 149, '29': 191, '30': 7, '31': 229 }, ed25519: '8dKa0Z7j4P4cs1FRGj+HvXDzwiaylxqa90PgLM0Muzg' }
Two additional testing plans:
- I deleted Comm on the simulator then reinstalled and opened it up to confirm that the keys would be generated before the QR code screen is shown
- Opened Comm on a separate browser to confirm that the key generation occurred before reaching the QR code page on web
Reviewers: atul, varun, kamil, marcin
Reviewed By: marcin
Subscribers: ashoat, tomek, marcin, kamil
Differential Revision: https://phab.comm.dev/D9096