Store passkey metadata in extension storage
Title: Store passkey metadata in extension storage
Description:
After successful registration, persist the passkey (private key + metadata) to chrome.storage.local so it can be retrieved later for authentication.
Acceptance Criteria:
Storage Structure:
Location: background.js (handle chrome.storage operations)
Store this data:
{
[credentialId]: {
rpId: "webauthn.io", // Relying party ID
userName: "user@example.com", // User identifier
publicKey: "base64_public_key", // Public key (base64)
privateKey: "base64_private_key", // Private key (base64) - UNENCRYPTED for now
created: "2025-10-28T12:00:00Z" // ISO timestamp
}
}
Required Fields:
rpId — Website domain (from options.rp.id)
userName — User email/name (from options.user.name)
publicKey — Base64-encoded public key
privateKey — Base64-encoded private key
created — ISO timestamp
Implementation:
- Receive passkey data from
inject.js via content.js
- In
background.js: Store to chrome.storage.local
- Log storage confirmation to console
- Handle errors gracefully
Testing:
- Load extension
- Visit https://webauthn.io → Register
- Complete registration flow
- Open DevTools → Application tab → Storage → Local Storage (extension ID)
- Verify passkey is stored with all fields
Blocked by: Format and return proper WebAuthn attestation response
Blocks: Add master password encryption to stored private keys
Store passkey metadata in extension storage
Title: Store passkey metadata in extension storage
Description:
After successful registration, persist the passkey (private key + metadata) to
chrome.storage.localso it can be retrieved later for authentication.Acceptance Criteria:
chrome.storage.localafter response is sent to websiteStorage Structure:
Location:
background.js(handle chrome.storage operations)Store this data:
Required Fields:
rpId— Website domain (from options.rp.id)userName— User email/name (from options.user.name)publicKey— Base64-encoded public keyprivateKey— Base64-encoded private keycreated— ISO timestampImplementation:
inject.jsviacontent.jsbackground.js: Store tochrome.storage.localTesting:
Blocked by: Format and return proper WebAuthn attestation response
Blocks: Add master password encryption to stored private keys