Commit 6bb0a7e
committed
feat(week7): add Heka Web Wallet extension and contributor onboarding UI
Chrome Extension (heka-chrome-extension/):
- Manifest V3 Chrome extension: service worker, popup, and content script
- WebCrypto ECDSA P-256 non-extractable key pair in IndexedDB (key-store.ts)
- did:jwk DID derivation from holder public key (did.ts)
- SD-JWT VC credential store in chrome.storage.local (credential-store.ts)
- Full OID4VCI Pre-Authorized Code Flow (oid4vci/receive.ts):
- Parses openid-credential-offer:// URIs (by-value and by-reference)
- Fetches /.well-known/openid-credential-issuer metadata
- Discovers token endpoint from issuer or authorization server metadata
- Exchanges pre-authorized_code for an access token
- Builds JWT proof of possession signed with holder's WebCrypto P-256 key
- Requests and stores the resulting SD-JWT VC
- Background service worker: holder key generation on install, badge
management, PING/RECEIVE_OFFER/GET_STATUS message routing (service-worker.ts)
- Content script bridge: source-tag-validated message forwarding from Heka
web pages to the extension SW (heka-bridge.ts)
- Popup UI (React + inline styles, no Tailwind):
- WalletStatus: displays holder DID (truncated, copyable), credential count
- CredentialList: renders held SD-JWT VC cards with vct, issuer, date
- ReceiveCredential: textarea + status feedback for the OID4VCI flow
- App: tab navigation (Wallet / Receive), auto-opens Receive on pending URI
Web UI Contributor Onboarding (heka-identity-service-web-ui/):
- ContributorBinding Redux slice with typed async thunks and selectors
- 4-step onboarding wizard (ContributorOnboarding.tsx):
- Step 0 GithubLoginStep: OAuth redirect via getGithubAuthorizationUrl
- Step 1 ChallengeStep: requests GPG nonce from /v2/gpg-challenge/request
- Step 2 SignStep: displays nonce, terminal command, signature textarea
- Step 3 VerifyStep: submits signature, shows credential offer URI and QR
- ContributorHub page wired into the sidebar nav and app router
- GitHub OAuth callback handler (ContributorGithubCallback.tsx)
- Shared API error utility and endpoint constants
Depends on: feat/gpg-challenge-module (PR #184),
feat/github-auth-contributor-binding (PR #186),
feat/contributor-credential-issuance (PR #192)
Signed-off-by: darshit2308 <darshit2308@gmail.com>1 parent 00049c7 commit 6bb0a7e
43 files changed
Lines changed: 6411 additions & 15 deletions
File tree
- heka-chrome-extension
- icons
- src
- background
- content-scripts
- oid4vci
- popup
- components
- wallet
- heka-identity-service-web-ui/src
- app
- providers/StoreProvider/config
- routes
- entities
- Contributor/model
- User/model/types
- pages/Contributor
- Onboarding
- steps
- components
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
Loading
Loading
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
0 commit comments