├── .config
└── nextest.toml
├── .didc-release
├── .dockerignore
├── .github
├── CODEOWNERS
├── PULL_REQUEST_TEMPLATE.md
├── actions
│ ├── bootstrap
│ │ └── action.yml
│ ├── check-build
│ │ └── action.yml
│ ├── file-size
│ │ ├── README.md
│ │ ├── action.yml
│ │ └── run.sh
│ ├── release
│ │ ├── README.md
│ │ ├── action.yml
│ │ └── run.sh
│ ├── setup-didc
│ │ └── action.yml
│ ├── setup-node
│ │ └── action.yml
│ └── slack
│ │ ├── README.md
│ │ └── action.yml
├── repo_policies
│ └── BOT_APPROVED_FILES
└── workflows
│ ├── canister-tests.yml
│ ├── deploy-rc.yml
│ ├── frontend-checks.yml
│ ├── pr-review-requested.yml
│ ├── release-build-check.yml
│ ├── rust.yml
│ ├── screenshots.yml
│ ├── update-dapps.yml
│ ├── update-dfx.yml
│ ├── update-didc.yml
│ ├── update-node.yml
│ ├── update-passkey-aaguid.yml
│ └── update-rust.yml
├── .gitignore
├── .node-version
├── .prettierignore
├── .prettierrc
├── CONTRIBUTING.md
├── Cargo.lock
├── Cargo.toml
├── Dockerfile
├── FLOWS.mdx
├── HACKING.md
├── LICENSE
├── LOCALIZING.md
├── README.md
├── boundary_node
└── error_page
│ ├── index.html
│ └── vite.config.ts
├── demos
├── test-app
│ ├── .gitignore
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── README.md
│ ├── build.sh
│ ├── canister_ids.json
│ ├── dfx.example.json
│ ├── lib.rs
│ ├── package.json
│ ├── rust-toolchain.toml
│ ├── src
│ │ ├── auth.ts
│ │ ├── index.html
│ │ ├── index.tsx
│ │ └── main.css
│ ├── test_app.did
│ ├── tsconfig.json
│ └── vite.config.ts
├── using-dev-build
│ ├── .prettierignore
│ ├── .prettierrc.json
│ ├── README.md
│ ├── dfx.json
│ ├── package-lock.json
│ ├── package.json
│ ├── specs
│ │ └── auth.e2e.ts
│ ├── test.ts
│ ├── tsconfig.json
│ ├── vite.config.ts
│ ├── vite.plugins.ts
│ ├── wdio.conf.ts
│ ├── webapp.png
│ ├── webapp
│ │ ├── index.html
│ │ └── index.ts
│ └── whoami.mo
└── vc_issuer
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── README.md
│ ├── app
│ ├── generated
│ │ ├── vc_issuer_idl.js
│ │ └── vc_issuer_types.d.ts
│ ├── index.html
│ ├── index.tsx
│ ├── issuer.ts
│ └── main.css
│ ├── build.sh
│ ├── dfx.example.json
│ ├── package.json
│ ├── provision
│ ├── src
│ ├── consent_message.rs
│ └── main.rs
│ ├── tests
│ └── issue_credential.rs
│ ├── tsconfig.json
│ ├── vc_demo_issuer.did
│ └── vite.config.ts
├── dfx.json
├── docs
├── README.md
├── ii-spec.mdx
└── vc-spec.md
├── eslint.config.js
├── ii-architecture.excalidraw
├── ii-architecture.png
├── ii-logo.png
├── lingui.config.ts
├── package-lock.json
├── package.json
├── playwright.config.ts
├── rust-toolchain.toml
├── screenshots
├── README.md
├── desktop
│ ├── addDeviceSuccess.png
│ ├── addPhrase.png
│ ├── addPhraseWarning.png
│ ├── authorizeNew.png
│ ├── authorizeNewAlt.png
│ ├── authorizeNewAlt_open.png
│ ├── authorizeNewKnown.png
│ ├── authorizeNewKnownAlt.png
│ ├── authorizeNewKnownAlt_open.png
│ ├── authorizeNewKnown_open.png
│ ├── authorizePick.png
│ ├── authorizePickAlt.png
│ ├── authorizePickAltOpen.png
│ ├── authorizePickMany.png
│ ├── authorizeUseExisting.png
│ ├── authorizeUseExistingKnown.png
│ ├── authorizeUseExistingKnownAlt.png
│ ├── authorizeUseExistingKnownAlt_open.png
│ ├── authorizeUseExistingKnown_open.png
│ ├── banner.png
│ ├── chooseRecoveryMechanism.png
│ ├── compatibilityNotice.png
│ ├── confirmSeedPhrase.png
│ ├── dappsExplorer.png
│ ├── deviceRegistrationDisabledInfo.png
│ ├── displayError.png
│ ├── displayManage.png
│ ├── displayManageSingle.png
│ ├── displaySeedPhrase.png
│ ├── displayUserNumber.png
│ ├── landing_1.png
│ ├── landing_2.png
│ ├── landing_3.png
│ ├── manageNew.png
│ ├── managePick.png
│ ├── manageUseExisting.png
│ ├── pickRecoveryDevice.png
│ ├── pollForTentativeDevicePage.png
│ ├── promptCaptcha.png
│ ├── promptCaptchaReady.png
│ ├── promptDeviceAlias.png
│ ├── promptUserNumber.png
│ ├── recoverWithDevice.png
│ ├── recoverWithPhrase.png
│ ├── registerDisabled.png
│ ├── savePasskey.png
│ ├── showMessage.png
│ ├── showSpinner.png
│ ├── showVerificationCode.png
│ ├── toasts.png
│ └── verifyTentativeDevice.png
└── mobile
│ ├── addDeviceSuccess.png
│ ├── addPhrase.png
│ ├── addPhraseWarning.png
│ ├── authorizeNew.png
│ ├── authorizeNewAlt.png
│ ├── authorizeNewAlt_open.png
│ ├── authorizeNewKnown.png
│ ├── authorizeNewKnownAlt.png
│ ├── authorizeNewKnownAlt_open.png
│ ├── authorizeNewKnown_open.png
│ ├── authorizePick.png
│ ├── authorizePickAlt.png
│ ├── authorizePickAltOpen.png
│ ├── authorizePickMany.png
│ ├── authorizeUseExisting.png
│ ├── authorizeUseExistingKnown.png
│ ├── authorizeUseExistingKnownAlt.png
│ ├── authorizeUseExistingKnownAlt_open.png
│ ├── authorizeUseExistingKnown_open.png
│ ├── banner.png
│ ├── chooseRecoveryMechanism.png
│ ├── compatibilityNotice.png
│ ├── confirmSeedPhrase.png
│ ├── dappsExplorer.png
│ ├── deviceRegistrationDisabledInfo.png
│ ├── displayError.png
│ ├── displayManage.png
│ ├── displayManageSingle.png
│ ├── displaySeedPhrase.png
│ ├── displayUserNumber.png
│ ├── landing_1.png
│ ├── landing_2.png
│ ├── landing_3.png
│ ├── landing_4.png
│ ├── manageNew.png
│ ├── managePick.png
│ ├── manageUseExisting.png
│ ├── pickRecoveryDevice.png
│ ├── pollForTentativeDevicePage.png
│ ├── promptCaptcha.png
│ ├── promptCaptchaReady.png
│ ├── promptDeviceAlias.png
│ ├── promptUserNumber.png
│ ├── recoverWithDevice.png
│ ├── recoverWithPhrase.png
│ ├── registerDisabled.png
│ ├── savePasskey.png
│ ├── showMessage.png
│ ├── showSpinner.png
│ ├── showVerificationCode.png
│ ├── toasts.png
│ └── verifyTentativeDevice.png
├── scripts
├── bootstrap
├── build
├── clap.bash
├── deploy-archive
├── docker-build
├── make-upgrade-proposal
├── release
├── test-canisters.sh
├── update-dapps
├── update-passkey-aaguid
├── verify-hash
└── version
├── src
├── archive
│ ├── Cargo.toml
│ ├── archive.did
│ ├── src
│ │ ├── anchor_index_key_tests.rs
│ │ └── main.rs
│ ├── stable_memory
│ │ └── archive_v1.bin.gz
│ └── tests
│ │ └── tests.rs
├── asset_util
│ ├── Cargo.toml
│ └── src
│ │ └── lib.rs
├── canister_tests
│ ├── Cargo.toml
│ └── src
│ │ ├── api.rs
│ │ ├── api
│ │ ├── archive.rs
│ │ ├── internet_identity.rs
│ │ └── internet_identity
│ │ │ ├── api_v2.rs
│ │ │ └── vc_mvp.rs
│ │ ├── flows.rs
│ │ ├── framework.rs
│ │ └── lib.rs
├── frontend
│ ├── screenshots.ts
│ ├── src
│ │ ├── app.html
│ │ ├── hooks.client.ts
│ │ ├── hooks.server.ts
│ │ ├── hooks.ts
│ │ ├── lib
│ │ │ ├── app.css
│ │ │ ├── components
│ │ │ │ ├── backgrounds
│ │ │ │ │ ├── FlairCanvas.d.ts
│ │ │ │ │ ├── FlairCanvas.svelte
│ │ │ │ │ ├── WaveCanvas.svelte
│ │ │ │ │ └── constants.ts
│ │ │ │ ├── icons
│ │ │ │ │ ├── GoogleIcon.svelte
│ │ │ │ │ ├── PasskeyIcon.svelte
│ │ │ │ │ └── PulsatingCircleIcon.svelte
│ │ │ │ ├── illustrations
│ │ │ │ │ ├── ConfirmDeviceIllustration.svelte
│ │ │ │ │ ├── FingerprintIllustration.svelte
│ │ │ │ │ ├── LogoLegacy.svelte
│ │ │ │ │ ├── MigrationIllustration.svelte
│ │ │ │ │ ├── MigrationSuccessIllustration.svelte
│ │ │ │ │ ├── PasscodeIllustration.svelte
│ │ │ │ │ ├── PasskeyIllustration.svelte
│ │ │ │ │ ├── ShieldIllustration.svelte
│ │ │ │ │ ├── SmileyWritingIllustration.svelte
│ │ │ │ │ ├── SquareSmileyIllustration.svelte
│ │ │ │ │ ├── SwitchDeviceIllustration.svelte
│ │ │ │ │ └── landing
│ │ │ │ │ │ ├── EasyAccessIllustration.svelte
│ │ │ │ │ │ ├── FullControlIllustration.svelte
│ │ │ │ │ │ └── PasswordFreeIllustration.svelte
│ │ │ │ ├── layout
│ │ │ │ │ ├── AuthPanel.svelte
│ │ │ │ │ ├── Footer.svelte
│ │ │ │ │ ├── Header.svelte
│ │ │ │ │ ├── LandingHeader.svelte
│ │ │ │ │ ├── MainContent.svelte
│ │ │ │ │ └── SideBarOrTabs.svelte
│ │ │ │ ├── locale
│ │ │ │ │ ├── LanguageSelector.svelte
│ │ │ │ │ ├── Trans.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── utils.test.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── ui
│ │ │ │ │ ├── AccessMethod.svelte
│ │ │ │ │ ├── Alert.svelte
│ │ │ │ │ ├── AuthorizeHeader.svelte
│ │ │ │ │ ├── Avatar.svelte
│ │ │ │ │ ├── Badge.svelte
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── ButtonCard.svelte
│ │ │ │ │ ├── Checkbox.svelte
│ │ │ │ │ ├── CodeInput.svelte
│ │ │ │ │ ├── Dialog.svelte
│ │ │ │ │ ├── FeaturedIcon.svelte
│ │ │ │ │ ├── Identicon.svelte
│ │ │ │ │ ├── IdentitySwitcher.svelte
│ │ │ │ │ ├── Input.svelte
│ │ │ │ │ ├── LandingCard.svelte
│ │ │ │ │ ├── ListItem.svelte
│ │ │ │ │ ├── Logo.svelte
│ │ │ │ │ ├── MarqueeBanner.svelte
│ │ │ │ │ ├── Panel.svelte
│ │ │ │ │ ├── PlaceHolder.svelte
│ │ │ │ │ ├── Popover.svelte
│ │ │ │ │ ├── ProgressRing.svelte
│ │ │ │ │ ├── QrCode.svelte
│ │ │ │ │ ├── Radiobox.svelte
│ │ │ │ │ ├── SideBar.svelte
│ │ │ │ │ ├── SideBarElement.svelte
│ │ │ │ │ ├── SideBarElementGroup.svelte
│ │ │ │ │ ├── TabElement.svelte
│ │ │ │ │ ├── TabElementGroup.svelte
│ │ │ │ │ ├── Tabs.svelte
│ │ │ │ │ ├── TextFade.svelte
│ │ │ │ │ ├── Toggle.svelte
│ │ │ │ │ └── Tooltip.svelte
│ │ │ │ ├── utils
│ │ │ │ │ ├── ButtonOrAnchor.svelte
│ │ │ │ │ ├── Ellipsis.svelte
│ │ │ │ │ ├── Flow.svelte
│ │ │ │ │ ├── SystemOverlayBackdrop.svelte
│ │ │ │ │ ├── TimedDisplay.svelte
│ │ │ │ │ ├── Toast.svelte
│ │ │ │ │ ├── Toaster.svelte
│ │ │ │ │ ├── error.ts
│ │ │ │ │ └── toaster.ts
│ │ │ │ ├── views
│ │ │ │ │ ├── AccessMethodsPanel.svelte
│ │ │ │ │ ├── AuthorizeError.svelte
│ │ │ │ │ ├── EditAccount.svelte
│ │ │ │ │ ├── IdentityInfoPanel.svelte
│ │ │ │ │ ├── RemoveOpenIdCredential.svelte
│ │ │ │ │ ├── RemovePasskeyDialog.svelte
│ │ │ │ │ └── RenamePasskeyDialog.svelte
│ │ │ │ └── wizards
│ │ │ │ │ ├── addAccessMethod
│ │ │ │ │ ├── AddAccessMethodWizard.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── views
│ │ │ │ │ │ ├── AddAccessMethod.svelte
│ │ │ │ │ │ └── AddPasskey.svelte
│ │ │ │ │ ├── auth
│ │ │ │ │ ├── AuthWizard.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── views
│ │ │ │ │ │ ├── CreateIdentity.svelte
│ │ │ │ │ │ ├── CreatePasskey.svelte
│ │ │ │ │ │ ├── PickAuthenticationMethod.svelte
│ │ │ │ │ │ ├── SetupOrUseExistingPasskey.svelte
│ │ │ │ │ │ └── SolveCaptcha.svelte
│ │ │ │ │ ├── confirmAccessMethod
│ │ │ │ │ ├── ConfirmAccessMethodWizard.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── views
│ │ │ │ │ │ ├── ContinueOnNewDevice.svelte
│ │ │ │ │ │ ├── EnterConfirmationCode.svelte
│ │ │ │ │ │ ├── FinishOnNewDevice.svelte
│ │ │ │ │ │ └── WaitingForNewDevice.svelte
│ │ │ │ │ ├── migration
│ │ │ │ │ ├── MigrationWizard.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── views
│ │ │ │ │ │ ├── AlreadyMigrated.svelte
│ │ │ │ │ │ ├── EnterIdentityNumber.svelte
│ │ │ │ │ │ └── UpgradePasskey.svelte
│ │ │ │ │ └── registerAccessMethod
│ │ │ │ │ ├── RegisterAccessMethodWizard.svelte
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── views
│ │ │ │ │ ├── ConfirmThisDevice.svelte
│ │ │ │ │ ├── ConfirmYourSignIn.svelte
│ │ │ │ │ ├── ContinueFromExistingDevice.svelte
│ │ │ │ │ └── WaitingForExistingDevice.svelte
│ │ │ ├── config.ts
│ │ │ ├── constants
│ │ │ │ ├── locale.constants.ts
│ │ │ │ └── store.constants.ts
│ │ │ ├── derived
│ │ │ │ ├── accessMethods.derived.svelte.test.ts
│ │ │ │ └── accessMethods.derived.svelte.ts
│ │ │ ├── flows
│ │ │ │ ├── addAccessMethodFlow.svelte.ts
│ │ │ │ ├── authFlow.svelte.ts
│ │ │ │ ├── authLastUsedFlow.svelte.ts
│ │ │ │ ├── confirmAccessMethodFlow.svelte.ts
│ │ │ │ ├── migrationFlow.svelte.ts
│ │ │ │ └── registerAccessMethodFlow.svelte.ts
│ │ │ ├── generated
│ │ │ │ ├── internet_identity_idl.js
│ │ │ │ ├── internet_identity_types.d.ts
│ │ │ │ └── vc_issuer_idl.js
│ │ │ ├── globals.ts
│ │ │ ├── icons
│ │ │ │ ├── Gate23_logo.png
│ │ │ │ ├── Optigames_logo.svg
│ │ │ │ ├── ReCheck_logo.svg
│ │ │ │ ├── accelar_logo.svg
│ │ │ │ ├── aegis-finance_logo.webp
│ │ │ │ ├── appic_logo.png
│ │ │ │ ├── asset-app_logo.png
│ │ │ │ ├── autoroyale_logo.png
│ │ │ │ ├── ava_logo.webp
│ │ │ │ ├── b3pay_logo.png
│ │ │ │ ├── b4b_logo.png
│ │ │ │ ├── bink_logo.svg
│ │ │ │ ├── bit10_logo.webp
│ │ │ │ ├── bitfinity_evm.svg
│ │ │ │ ├── bitomni_logo.svg
│ │ │ │ ├── blendsafe.svg
│ │ │ │ ├── blocklist.png
│ │ │ │ ├── bridge23_logo.svg
│ │ │ │ ├── caffeine_logo.svg
│ │ │ │ ├── canister-store_logo.png
│ │ │ │ ├── canistergeek_logo.webp
│ │ │ │ ├── canlista_logo.webp
│ │ │ │ ├── catalyze_logo.png
│ │ │ │ ├── chainkeyx_logo.png
│ │ │ │ ├── cipherAI_logo.webp
│ │ │ │ ├── cload_logo.png
│ │ │ │ ├── clpfinance_logo.png
│ │ │ │ ├── configeek_logo.webp
│ │ │ │ ├── cosmicrafts_logo.png
│ │ │ │ ├── cyqlio_logo.svg
│ │ │ │ ├── d-vote_logo.webp
│ │ │ │ ├── daoventure_logo.png
│ │ │ │ ├── dbox_logo.png
│ │ │ │ ├── decideai_logo.png
│ │ │ │ ├── dflow_logo.png
│ │ │ │ ├── distrikt_logo.webp
│ │ │ │ ├── dmail-network_logo.png
│ │ │ │ ├── doocoins_logo.webp
│ │ │ │ ├── dotmeet_logo.svg
│ │ │ │ ├── doxa_logo.webp
│ │ │ │ ├── dragginz_logo.png
│ │ │ │ ├── dscvr_logo.webp
│ │ │ │ ├── dsign_logo.webp
│ │ │ │ ├── dsocial_logo.webp
│ │ │ │ ├── estatedao_logo.png
│ │ │ │ ├── faceless_logo.png
│ │ │ │ ├── factland_logo.png
│ │ │ │ ├── fomowell_logo.png
│ │ │ │ ├── formify_logo.webp
│ │ │ │ ├── fpdao_logo.png
│ │ │ │ ├── funded_logo.webp
│ │ │ │ ├── gamebloc_logo.png
│ │ │ │ ├── gitcoin-client.png
│ │ │ │ ├── hamster_logo.svg
│ │ │ │ ├── helix_logo.svg
│ │ │ │ ├── hobbi_logo.svg
│ │ │ │ ├── ic-websocket_logo.webp
│ │ │ │ ├── ic_footprint_logo.svg
│ │ │ │ ├── icdex_logo.webp
│ │ │ │ ├── icecube_logo.png
│ │ │ │ ├── icevent_logo_112x112.png
│ │ │ │ ├── ichub_logo.png
│ │ │ │ ├── icme_logo.webp
│ │ │ │ ├── icpanda-dao_logo.webp
│ │ │ │ ├── icpex_logo.png
│ │ │ │ ├── icpp-logo.dracula-cyan.112x112.png
│ │ │ │ ├── icpsig_logo.png
│ │ │ │ ├── icpswap_logo.webp
│ │ │ │ ├── icptokens_logo.svg
│ │ │ │ ├── icrouter_logo.webp
│ │ │ │ ├── icspore_logo.png
│ │ │ │ ├── icto_logo.png
│ │ │ │ ├── ictoolkit_logo.png
│ │ │ │ ├── iknows_logo.png
│ │ │ │ ├── john-dao_logo.webp
│ │ │ │ ├── juno_logo.svg
│ │ │ │ ├── kinic_logo.webp
│ │ │ │ ├── konecta_logo.svg
│ │ │ │ ├── kong_logo.png
│ │ │ │ ├── kontribute_logo.webp
│ │ │ │ ├── lendfinity_logo.svg
│ │ │ │ ├── metaforo-icp_logo.png
│ │ │ │ ├── missionispossible_logo.webp
│ │ │ │ ├── moonshift_logo.png
│ │ │ │ ├── mora_logo.png
│ │ │ │ ├── motokopilot_logo.png
│ │ │ │ ├── neuronpool_logo.svg
│ │ │ │ ├── nfid_logo.webp
│ │ │ │ ├── nftanvil_logo.webp
│ │ │ │ ├── nnsfront-enddapp_logo-dark.webp
│ │ │ │ ├── nobleblocks_logo.webp
│ │ │ │ ├── nuance_logo.webp
│ │ │ │ ├── odoc_logo.png
│ │ │ │ ├── oisy_logo.svg
│ │ │ │ ├── oneblock.png
│ │ │ │ ├── open-internet-metaverse_logo.webp
│ │ │ │ ├── openchat_logo.webp
│ │ │ │ ├── pass_logo.svg
│ │ │ │ ├── ping_logo.webp
│ │ │ │ ├── pleximail_logo.png
│ │ │ │ ├── rakeoff_logo.webp
│ │ │ │ ├── redsteep_logo.png
│ │ │ │ ├── riide_logo.png
│ │ │ │ ├── rubaru_logo.png
│ │ │ │ ├── sagatarot_logo.webp
│ │ │ │ ├── signals_logo.webp
│ │ │ │ ├── solutio_logo.svg
│ │ │ │ ├── sonic-dex_logo.webp
│ │ │ │ ├── stoicwallet_logo.webp
│ │ │ │ ├── syron_logo.png
│ │ │ │ ├── taggr_logo.webp
│ │ │ │ ├── tipjar_logo.webp
│ │ │ │ ├── trax_logo.webp
│ │ │ │ ├── try-id-ai.svg
│ │ │ │ ├── uniswapfrontendontheic_logo.webp
│ │ │ │ ├── upas_logo.png
│ │ │ │ ├── usergeek_logo.webp
│ │ │ │ ├── virtuaseal.webp
│ │ │ │ ├── waterneuron_logo.png
│ │ │ │ ├── yuku_logo.png
│ │ │ │ ├── zkCross_logo.svg
│ │ │ │ └── zon_logo.webp
│ │ │ ├── legacy
│ │ │ │ ├── assets
│ │ │ │ │ ├── favicon.ico
│ │ │ │ │ ├── identityCardBackground.png
│ │ │ │ │ ├── passkey_aaguid_data.json
│ │ │ │ │ └── unknowndapp.png
│ │ │ │ ├── banner.ts
│ │ │ │ ├── callback-flow.ts
│ │ │ │ ├── constants.ts
│ │ │ │ ├── crypto
│ │ │ │ │ ├── ed25519.test.ts
│ │ │ │ │ ├── ed25519.ts
│ │ │ │ │ ├── mnemonic.test.ts
│ │ │ │ │ ├── mnemonic.ts
│ │ │ │ │ ├── pinIdentity.test.ts
│ │ │ │ │ └── pinIdentity.ts
│ │ │ │ ├── environment.ts
│ │ │ │ ├── features.ts
│ │ │ │ ├── flows
│ │ │ │ │ ├── addDevice
│ │ │ │ │ │ ├── addDeviceSuccess.json
│ │ │ │ │ │ ├── addDeviceSuccess.test.ts
│ │ │ │ │ │ ├── addDeviceSuccess.ts
│ │ │ │ │ │ ├── manage
│ │ │ │ │ │ │ ├── addCurrentDevice.ts
│ │ │ │ │ │ │ ├── addDevice.ts
│ │ │ │ │ │ │ ├── pollForTentativeDevice.json
│ │ │ │ │ │ │ ├── pollForTentativeDevice.ts
│ │ │ │ │ │ │ └── verifyTentativeDevice.ts
│ │ │ │ │ │ ├── registerCurrentDeviceCurrentOrigin.json
│ │ │ │ │ │ ├── registerCurrentDeviceCurrentOrigin.ts
│ │ │ │ │ │ ├── stepper.ts
│ │ │ │ │ │ └── welcomeView
│ │ │ │ │ │ │ ├── deviceRegistrationModeDisabled.ts
│ │ │ │ │ │ │ ├── promptDeviceTrusted.json
│ │ │ │ │ │ │ ├── promptDeviceTrusted.ts
│ │ │ │ │ │ │ ├── registerTentativeDevice.ts
│ │ │ │ │ │ │ └── showVerificationCode.ts
│ │ │ │ │ ├── authorize
│ │ │ │ │ │ ├── fetchDelegation.ts
│ │ │ │ │ │ ├── index.json
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── postMessageInterface.ts
│ │ │ │ │ ├── compatibilityNotice.ts
│ │ │ │ │ ├── dappsExplorer
│ │ │ │ │ │ ├── copy.json
│ │ │ │ │ │ ├── dapps.json
│ │ │ │ │ │ ├── dapps.test.ts
│ │ │ │ │ │ ├── dapps.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── teaser.ts
│ │ │ │ │ ├── iframeWebAuthn.ts
│ │ │ │ │ ├── manage
│ │ │ │ │ │ ├── authenticatorsSection.json
│ │ │ │ │ │ ├── authenticatorsSection.ts
│ │ │ │ │ │ ├── confirmRemoveDevice.json
│ │ │ │ │ │ ├── confirmRemoveDevice.ts
│ │ │ │ │ │ ├── confirmUnlinkAccount.json
│ │ │ │ │ │ ├── confirmUnlinkAccount.ts
│ │ │ │ │ │ ├── deviceSettings.json
│ │ │ │ │ │ ├── deviceSettings.ts
│ │ │ │ │ │ ├── devicesFromDevicesWithUsage.test.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── linkedAccountsSection.json
│ │ │ │ │ │ ├── linkedAccountsSection.ts
│ │ │ │ │ │ ├── migration.test.ts
│ │ │ │ │ │ ├── recoveryMethodsSection.json
│ │ │ │ │ │ ├── recoveryMethodsSection.ts
│ │ │ │ │ │ ├── settingsDropdown.ts
│ │ │ │ │ │ ├── tempKeys.json
│ │ │ │ │ │ ├── tempKeys.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── pin
│ │ │ │ │ │ ├── confirmPin.json
│ │ │ │ │ │ ├── confirmPin.ts
│ │ │ │ │ │ ├── idb.ts
│ │ │ │ │ │ ├── pinInfo.json
│ │ │ │ │ │ ├── pinInfo.ts
│ │ │ │ │ │ ├── setPin.json
│ │ │ │ │ │ ├── setPin.ts
│ │ │ │ │ │ ├── usePin.json
│ │ │ │ │ │ └── usePin.ts
│ │ │ │ │ ├── recovery
│ │ │ │ │ │ ├── confirmSeedPhrase.json
│ │ │ │ │ │ ├── confirmSeedPhrase.test.ts
│ │ │ │ │ │ ├── confirmSeedPhrase.ts
│ │ │ │ │ │ ├── displaySeedPhrase.json
│ │ │ │ │ │ ├── displaySeedPhrase.ts
│ │ │ │ │ │ ├── forgotNumber.ts
│ │ │ │ │ │ ├── promptRecovery.ts
│ │ │ │ │ │ ├── recoverWith
│ │ │ │ │ │ │ ├── device.ts
│ │ │ │ │ │ │ ├── phrase.test.ts
│ │ │ │ │ │ │ └── phrase.ts
│ │ │ │ │ │ ├── recoveryWizard.json
│ │ │ │ │ │ ├── recoveryWizard.test.ts
│ │ │ │ │ │ ├── recoveryWizard.ts
│ │ │ │ │ │ ├── setupRecovery.ts
│ │ │ │ │ │ ├── stepper.ts
│ │ │ │ │ │ └── useRecovery.ts
│ │ │ │ │ ├── redirect.ts
│ │ │ │ │ ├── register
│ │ │ │ │ │ ├── captcha.json
│ │ │ │ │ │ ├── captcha.ts
│ │ │ │ │ │ ├── finish.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── passkey.json
│ │ │ │ │ │ └── passkey.ts
│ │ │ │ │ ├── registerDisabled.ts
│ │ │ │ │ └── verifiableCredentials
│ │ │ │ │ │ ├── abortedCredentials.json
│ │ │ │ │ │ ├── abortedCredentials.ts
│ │ │ │ │ │ ├── allowCredentials.json
│ │ │ │ │ │ ├── allowCredentials.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── postMessageInterface.ts
│ │ │ │ │ │ └── vcIssuer.ts
│ │ │ │ ├── i18n.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── repositories
│ │ │ │ │ ├── identityMetadata.test.ts
│ │ │ │ │ └── identityMetadata.ts
│ │ │ │ ├── spa.ts
│ │ │ │ ├── storage
│ │ │ │ │ ├── index.test.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── styles
│ │ │ │ │ ├── CircularXXWeb-Bold.woff2
│ │ │ │ │ ├── CircularXXWeb-Medium.woff2
│ │ │ │ │ ├── CircularXXWeb-Regular.woff2
│ │ │ │ │ ├── dots.woff2
│ │ │ │ │ └── main.css
│ │ │ │ ├── vc-flow.ts
│ │ │ │ └── version.ts
│ │ │ ├── locales
│ │ │ │ ├── de.po
│ │ │ │ ├── en.po
│ │ │ │ ├── es.po
│ │ │ │ └── id.po
│ │ │ ├── state
│ │ │ │ ├── UI
│ │ │ │ │ └── isMobile.ts
│ │ │ │ └── featureFlags.ts
│ │ │ ├── stores
│ │ │ │ ├── authentication.store.ts
│ │ │ │ ├── authorization.store.ts
│ │ │ │ ├── identity-info.state.svelte.ts
│ │ │ │ ├── last-used-identities.store.test.ts
│ │ │ │ ├── last-used-identities.store.ts
│ │ │ │ ├── locale.store.ts
│ │ │ │ ├── session.store.test.ts
│ │ │ │ ├── session.store.ts
│ │ │ │ ├── writable.store.test.ts
│ │ │ │ └── writable.store.ts
│ │ │ ├── templates
│ │ │ │ ├── alias
│ │ │ │ │ ├── alias.test.ts
│ │ │ │ │ ├── index.json
│ │ │ │ │ └── index.ts
│ │ │ │ ├── anchorInput.ts
│ │ │ │ ├── anchorPicker.test.ts
│ │ │ │ ├── anchorPicker.ts
│ │ │ │ ├── authenticateBox
│ │ │ │ │ ├── authenticateBox.test.ts
│ │ │ │ │ ├── authnTemplatesCopy.json
│ │ │ │ │ ├── errorToast.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── displayError.ts
│ │ │ │ ├── footer.ts
│ │ │ │ ├── icons.ts
│ │ │ │ ├── identityCard.ts
│ │ │ │ ├── infoScreen.ts
│ │ │ │ ├── infoToast
│ │ │ │ │ ├── copy.json
│ │ │ │ │ └── index.ts
│ │ │ │ ├── landingPage.json
│ │ │ │ ├── landingPage.ts
│ │ │ │ ├── loader.png
│ │ │ │ ├── loader.svg
│ │ │ │ ├── loader.ts
│ │ │ │ ├── logout.ts
│ │ │ │ ├── mainWindow.ts
│ │ │ │ ├── message.ts
│ │ │ │ ├── modal.ts
│ │ │ │ ├── pinInput.test.ts
│ │ │ │ ├── pinInput.ts
│ │ │ │ ├── promptUserNumber.ts
│ │ │ │ ├── spinner.ts
│ │ │ │ ├── toast.ts
│ │ │ │ └── warnBox.ts
│ │ │ └── utils
│ │ │ │ ├── UI
│ │ │ │ ├── backgrounds
│ │ │ │ │ ├── perlinNoise3d.ts
│ │ │ │ │ └── waveBackground.ts
│ │ │ │ └── deviceDetection.ts
│ │ │ │ ├── accessMethods.test.ts
│ │ │ │ ├── accessMethods.ts
│ │ │ │ ├── addDeviceLink.test.ts
│ │ │ │ ├── addDeviceLink.ts
│ │ │ │ ├── analytics
│ │ │ │ ├── Funnel.test.ts
│ │ │ │ ├── Funnel.ts
│ │ │ │ ├── analytics.ts
│ │ │ │ ├── authenticationV2Funnel.ts
│ │ │ │ ├── authorizeClientFunnel.ts
│ │ │ │ ├── loginFunnel.ts
│ │ │ │ ├── registrationFunnel.ts
│ │ │ │ ├── upgradeIdentityFunnel.ts
│ │ │ │ └── webauthnAuthenticationFunnel.ts
│ │ │ │ ├── animation-dispatcher.test.ts
│ │ │ │ ├── animation-dispatcher.ts
│ │ │ │ ├── authentication
│ │ │ │ ├── index.ts
│ │ │ │ ├── jwt.ts
│ │ │ │ ├── passkey.ts
│ │ │ │ └── session.ts
│ │ │ │ ├── authenticatorAttachment.ts
│ │ │ │ ├── authnMethodData.ts
│ │ │ │ ├── canisterIdResolution.test.ts
│ │ │ │ ├── canisterIdResolution.ts
│ │ │ │ ├── countdown.ts
│ │ │ │ ├── credential-devices.test.ts
│ │ │ │ ├── credential-devices.ts
│ │ │ │ ├── discoverableDummyIdentity.ts
│ │ │ │ ├── discoverablePasskeyIdentity.ts
│ │ │ │ ├── domainUtils.test.ts
│ │ │ │ ├── domainUtils.ts
│ │ │ │ ├── featureDetection.ts
│ │ │ │ ├── featureFlags
│ │ │ │ ├── index.test.ts
│ │ │ │ └── index.ts
│ │ │ │ ├── fetchCredentials.ts
│ │ │ │ ├── findWebAuthnFlows.test.ts
│ │ │ │ ├── findWebAuthnFlows.ts
│ │ │ │ ├── html.ts
│ │ │ │ ├── i18n.ts
│ │ │ │ ├── iiConnection.test.ts
│ │ │ │ ├── iiConnection.ts
│ │ │ │ ├── init.ts
│ │ │ │ ├── internalPostMessage.ts
│ │ │ │ ├── isRegistrationAllowed.test.ts
│ │ │ │ ├── isRegistrationAllowed.ts
│ │ │ │ ├── keyboard.utils.ts
│ │ │ │ ├── lastUsedIdentity.spec.ts
│ │ │ │ ├── lastUsedIdentity.ts
│ │ │ │ ├── lit-html.ts
│ │ │ │ ├── multiWebAuthnIdentity.ts
│ │ │ │ ├── openID.test.ts
│ │ │ │ ├── openID.ts
│ │ │ │ ├── postMessageInterface.ts
│ │ │ │ ├── preLoadImage.ts
│ │ │ │ ├── recoveryDevice.ts
│ │ │ │ ├── rorSupport.test.ts
│ │ │ │ ├── rorSupport.ts
│ │ │ │ ├── time.test.ts
│ │ │ │ ├── time.ts
│ │ │ │ ├── trackWindowSession.test.ts
│ │ │ │ ├── trackWindowSession.ts
│ │ │ │ ├── urlUtils.test.ts
│ │ │ │ ├── urlUtils.ts
│ │ │ │ ├── userAgent.test.ts
│ │ │ │ ├── userAgent.ts
│ │ │ │ ├── userNumber.ts
│ │ │ │ ├── utils.ts
│ │ │ │ ├── validateDerivationOrigin.test.ts
│ │ │ │ ├── validateDerivationOrigin.ts
│ │ │ │ ├── webAuthn.test.ts
│ │ │ │ ├── webAuthn.ts
│ │ │ │ ├── webAuthnErrorUtils.json
│ │ │ │ ├── webAuthnErrorUtils.ts
│ │ │ │ └── webAuthnIdentity.ts
│ │ └── routes
│ │ │ ├── (new-styling)
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.svelte
│ │ │ ├── +page.ts
│ │ │ ├── activate
│ │ │ │ └── +page.svelte
│ │ │ ├── authorize
│ │ │ │ ├── (panel)
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ ├── +page.ts
│ │ │ │ │ └── continue
│ │ │ │ │ │ └── +page.svelte
│ │ │ │ ├── +layout.svelte
│ │ │ │ ├── +layout.ts
│ │ │ │ └── upgrade-success
│ │ │ │ │ ├── +layout.ts
│ │ │ │ │ └── +page.svelte
│ │ │ ├── callback
│ │ │ │ └── +page.svelte
│ │ │ ├── direct-authorize-protocol
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ ├── legacy-authorize-protocol
│ │ │ │ └── +page.ts
│ │ │ ├── login
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ ├── manage
│ │ │ │ └── (authenticated)
│ │ │ │ │ ├── +layout.svelte
│ │ │ │ │ ├── +layout.ts
│ │ │ │ │ ├── +page.svelte
│ │ │ │ │ └── +page.ts
│ │ │ ├── pair
│ │ │ │ └── +page.svelte
│ │ │ └── unsupported
│ │ │ │ └── +page.svelte
│ │ │ ├── +layout.svelte
│ │ │ ├── +layout.ts
│ │ │ ├── faq
│ │ │ └── +page.ts
│ │ │ ├── iframe
│ │ │ └── webauthn
│ │ │ │ └── +page.svelte
│ │ │ ├── legacy
│ │ │ ├── +page.svelte
│ │ │ └── authorize
│ │ │ │ └── +page.svelte
│ │ │ ├── register
│ │ │ └── device
│ │ │ │ └── +page.svelte
│ │ │ └── vc-flow
│ │ │ └── index
│ │ │ └── +page.svelte
│ ├── static
│ │ ├── faq.html
│ │ ├── favicon.ico
│ │ ├── robots.txt
│ │ ├── sitemap.xml
│ │ └── social-image.png
│ ├── tests
│ │ ├── e2e-playwright
│ │ │ ├── authorize
│ │ │ │ ├── account.spec.ts
│ │ │ │ ├── alternativeOrigins.spec.ts
│ │ │ │ ├── continue.spec.ts
│ │ │ │ ├── delegationTtl.spec.ts
│ │ │ │ ├── index.spec.ts
│ │ │ │ ├── migration.spec.ts
│ │ │ │ └── postMessages.spec.ts
│ │ │ ├── dashboard
│ │ │ │ ├── addPasskeys.spec.ts
│ │ │ │ ├── index.spec.ts
│ │ │ │ ├── migration.spec.ts
│ │ │ │ ├── removePasskey.spec.ts
│ │ │ │ └── renamePasskeys.spec.ts
│ │ │ ├── index.spec.ts
│ │ │ └── utils.ts
│ │ ├── e2e-setup.ts
│ │ └── e2e
│ │ │ ├── addDevice.test.ts
│ │ │ ├── alternativeOrigin
│ │ │ ├── endpointFormat.test.ts
│ │ │ └── ingressFormat.test.ts
│ │ │ ├── authData.test.ts
│ │ │ ├── constants.ts
│ │ │ ├── delegationTtl.test.ts
│ │ │ ├── featureFlagRerouting.test.ts
│ │ │ ├── flows.ts
│ │ │ ├── knownPrincipal.test.ts
│ │ │ ├── misc.test.ts
│ │ │ ├── pinAuth.test.ts
│ │ │ ├── pinAuthDisabled.test.ts
│ │ │ ├── principals.test.ts
│ │ │ ├── recovery
│ │ │ ├── index.test.ts
│ │ │ ├── protected
│ │ │ │ ├── index.test.ts
│ │ │ │ └── reset.test.ts
│ │ │ └── reset.test.ts
│ │ │ ├── register.test.ts
│ │ │ ├── relatedOrigins.test.ts
│ │ │ ├── removeDevice.test.ts
│ │ │ ├── util.ts
│ │ │ ├── verifiableCredentials
│ │ │ ├── alternativeOrigins.test.ts
│ │ │ ├── index.test.ts
│ │ │ └── utils.ts
│ │ │ └── views.ts
│ └── types
│ │ ├── borc.d.ts
│ │ └── index.d.ts
├── internet_identity
│ ├── Cargo.toml
│ ├── internet_identity.did
│ ├── src
│ │ ├── account_management.rs
│ │ ├── anchor_management.rs
│ │ ├── anchor_management
│ │ │ ├── registration.rs
│ │ │ ├── registration
│ │ │ │ ├── captcha.rs
│ │ │ │ ├── rate_limit.rs
│ │ │ │ └── registration_flow_v2.rs
│ │ │ └── tentative_device_registration.rs
│ │ ├── archive.rs
│ │ ├── assets.rs
│ │ ├── authz_utils.rs
│ │ ├── conversions.rs
│ │ ├── conversions
│ │ │ └── api_errors.rs
│ │ ├── delegation.rs
│ │ ├── http.rs
│ │ ├── http
│ │ │ └── metrics.rs
│ │ ├── ii_domain.rs
│ │ ├── lib.rs
│ │ ├── main.rs
│ │ ├── openid.rs
│ │ ├── openid
│ │ │ ├── generic.rs
│ │ │ └── google.rs
│ │ ├── state.rs
│ │ ├── state
│ │ │ ├── flow_states.rs
│ │ │ └── temp_keys.rs
│ │ ├── stats.rs
│ │ ├── stats
│ │ │ ├── activity_stats.rs
│ │ │ ├── activity_stats
│ │ │ │ ├── activity_counter.rs
│ │ │ │ ├── activity_counter
│ │ │ │ │ ├── active_anchor_counter.rs
│ │ │ │ │ ├── authn_method_counter.rs
│ │ │ │ │ └── domain_active_anchor_counter.rs
│ │ │ │ └── maintenance.rs
│ │ │ ├── event_stats.rs
│ │ │ └── event_stats
│ │ │ │ ├── event_aggregations.rs
│ │ │ │ ├── event_aggregations
│ │ │ │ └── tests.rs
│ │ │ │ └── tests.rs
│ │ ├── storage.rs
│ │ ├── storage
│ │ │ ├── account.rs
│ │ │ ├── account
│ │ │ │ └── tests.rs
│ │ │ ├── anchor.rs
│ │ │ ├── anchor
│ │ │ │ └── tests.rs
│ │ │ ├── registration_rates.rs
│ │ │ ├── storable.rs
│ │ │ ├── storable
│ │ │ │ ├── account.rs
│ │ │ │ ├── account_number.rs
│ │ │ │ ├── account_reference.rs
│ │ │ │ ├── account_reference_list.rs
│ │ │ │ ├── accounts_counter.rs
│ │ │ │ ├── anchor.rs
│ │ │ │ ├── anchor_application_config.rs
│ │ │ │ ├── anchor_number.rs
│ │ │ │ ├── anchor_number_list.rs
│ │ │ │ ├── application.rs
│ │ │ │ ├── application_number.rs
│ │ │ │ ├── credential_id.rs
│ │ │ │ ├── discrepancy_counter.rs
│ │ │ │ ├── fixed_anchor.rs
│ │ │ │ ├── metadata_v2.rs
│ │ │ │ ├── openid_credential.rs
│ │ │ │ ├── openid_credential_key.rs
│ │ │ │ └── storable_persistent_state.rs
│ │ │ └── tests.rs
│ │ ├── vc_mvp.rs
│ │ └── wasm_get_random.rs
│ ├── stable_memory
│ │ ├── README.md
│ │ ├── buffered_archive_entries_v9.bin.gz
│ │ ├── genesis-layout-migrated-to-v9.bin.gz
│ │ ├── genesis-memory-layout.bin
│ │ ├── multiple-recovery-phrases-v9.bin.gz
│ │ ├── persistent_state_archive_v9.bin.gz
│ │ ├── persistent_state_no_archive_v9.bin.gz
│ │ └── stats_incident_v9.bin.gz
│ └── tests
│ │ ├── README.md
│ │ └── integration
│ │ ├── accounts.rs
│ │ ├── activity_stats
│ │ ├── all_domains.rs
│ │ ├── authn_methods.rs
│ │ ├── ii_domains.rs
│ │ └── mod.rs
│ │ ├── aggregation_stats.rs
│ │ ├── anchor_management
│ │ ├── device_management.rs
│ │ ├── last_usage_timestamp.rs
│ │ ├── mod.rs
│ │ ├── registration
│ │ │ ├── mod.rs
│ │ │ └── temp_keys.rs
│ │ └── remote_device_registration.rs
│ │ ├── archive_integration.rs
│ │ ├── config.rs
│ │ ├── config
│ │ ├── analytics_config.rs
│ │ ├── archive_config.rs
│ │ ├── assigned_user_number_range.rs
│ │ ├── canister_creation_cycles_cost.rs
│ │ ├── captcha_config.rs
│ │ ├── enable_dapps_explorer.rs
│ │ ├── fetch_root_key.rs
│ │ ├── is_production.rs
│ │ ├── new_flow_origins.rs
│ │ ├── openid_configs.rs
│ │ ├── openid_google.rs
│ │ ├── register_rate_limit.rs
│ │ └── related_origins.rs
│ │ ├── delegation.rs
│ │ ├── google.rs
│ │ ├── http.rs
│ │ ├── main.rs
│ │ ├── openid.rs
│ │ ├── rollback.rs
│ │ ├── stable_memory.rs
│ │ ├── upgrade.rs
│ │ ├── v2_api
│ │ ├── authn_method_add.rs
│ │ ├── authn_method_metadata.rs
│ │ ├── authn_method_registration.rs
│ │ ├── authn_method_remove.rs
│ │ ├── authn_method_replace.rs
│ │ ├── authn_method_security_settings.rs
│ │ ├── authn_method_session_registration.rs
│ │ ├── authn_method_test_helpers.rs
│ │ ├── identity_authn_info.rs
│ │ ├── identity_info.rs
│ │ ├── identity_metadata.rs
│ │ ├── identity_properties.rs
│ │ ├── identity_register.rs
│ │ ├── identity_register
│ │ │ └── dynamic_captcha.rs
│ │ └── mod.rs
│ │ └── vc_mvp.rs
├── internet_identity_interface
│ ├── Cargo.toml
│ └── src
│ │ ├── archive.rs
│ │ ├── archive
│ │ ├── conversions.rs
│ │ └── types.rs
│ │ ├── http_gateway.rs
│ │ ├── internet_identity.rs
│ │ ├── internet_identity
│ │ ├── authn_method.rs
│ │ ├── conversions.rs
│ │ ├── conversions
│ │ │ └── test.rs
│ │ ├── device_data.rs
│ │ ├── types.rs
│ │ └── types
│ │ │ ├── api_v2.rs
│ │ │ ├── openid.rs
│ │ │ └── vc_mvp.rs
│ │ └── lib.rs
├── lingui-svelte
│ ├── extractor.test.ts
│ ├── extractor.ts
│ ├── index.ts
│ ├── preprocessor.test.ts
│ ├── preprocessor.ts
│ └── utils.ts
├── showcase
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── astro.config.ts
│ ├── src
│ │ ├── components
│ │ │ ├── ChoosePin.astro
│ │ │ ├── PickAnchor.astro
│ │ │ ├── Styleguide.astro
│ │ │ ├── ToastExample.astro
│ │ │ └── lit.ts
│ │ ├── constants.ts
│ │ ├── flows.ts
│ │ ├── i18n.ts
│ │ ├── layouts
│ │ │ ├── Layout.astro
│ │ │ └── Screen.astro
│ │ ├── pages
│ │ │ ├── 404.astro
│ │ │ ├── abortedCredentialsInternalError.astro
│ │ │ ├── addDeviceSuccess.astro
│ │ │ ├── addDeviceSuccessStepper.astro
│ │ │ ├── addDeviceWarningOnePasskey.astro
│ │ │ ├── addDeviceWarningOnlyPin.astro
│ │ │ ├── addPhrase.astro
│ │ │ ├── addPhraseWarning.astro
│ │ │ ├── allowCredentials.astro
│ │ │ ├── allowCredentialsLongMessage.astro
│ │ │ ├── allowCredentialsLongOrigins.astro
│ │ │ ├── allowCredentialsNoAnchor.astro
│ │ │ ├── authorizeNew.astro
│ │ │ ├── authorizeNewAlt.astro
│ │ │ ├── authorizeNewKnown.astro
│ │ │ ├── authorizeNewKnownAlt.astro
│ │ │ ├── authorizePick.astro
│ │ │ ├── authorizePickMany.astro
│ │ │ ├── authorizeUseExisting.astro
│ │ │ ├── authorizeUseExistingKnown.astro
│ │ │ ├── authorizeUseExistingKnownAlt.astro
│ │ │ ├── banner.astro
│ │ │ ├── compatibilityNotice.astro
│ │ │ ├── components
│ │ │ │ ├── index.astro
│ │ │ │ ├── pick-anchor.astro
│ │ │ │ ├── pin.astro
│ │ │ │ └── toasts.astro
│ │ │ ├── confirmPin.astro
│ │ │ ├── confirmRemoveCurrentDevice.astro
│ │ │ ├── confirmRemoveDevice.astro
│ │ │ ├── confirmRemoveRecoveryDevice.astro
│ │ │ ├── confirmSeedPhrase.astro
│ │ │ ├── confirmUnlinkAccount.astro
│ │ │ ├── confirmUnlinkCurrentAccount.astro
│ │ │ ├── dappsExplorer.astro
│ │ │ ├── deviceRegistrationDisabledInfo.astro
│ │ │ ├── displayError.astro
│ │ │ ├── displayManage.astro
│ │ │ ├── displayManageCredentialsMultiple.astro
│ │ │ ├── displayManageCredentialsSingle.astro
│ │ │ ├── displayManageMaxDevices.astro
│ │ │ ├── displayManageSingle.astro
│ │ │ ├── displayManageTempKey.astro
│ │ │ ├── displaySeedPhrase.astro
│ │ │ ├── displayUserNumber.astro
│ │ │ ├── displayUserNumberTempKey.astro
│ │ │ ├── flows
│ │ │ │ ├── [flow].astro
│ │ │ │ └── index.astro
│ │ │ ├── forgotNumber.astro
│ │ │ ├── index.astro
│ │ │ ├── loader.astro
│ │ │ ├── loaderTakingForever.astro
│ │ │ ├── manageNew.astro
│ │ │ ├── managePick.astro
│ │ │ ├── managePickMany.astro
│ │ │ ├── manageUseExisting.astro
│ │ │ ├── pinInfo.astro
│ │ │ ├── pollForTentativeDevicePage.astro
│ │ │ ├── promptCaptcha.astro
│ │ │ ├── promptDeviceAlias.astro
│ │ │ ├── promptDeviceTrusted.astro
│ │ │ ├── promptRecovery.astro
│ │ │ ├── promptUserNumber.astro
│ │ │ ├── protectDeviceInfo.astro
│ │ │ ├── recoverWithDevice.astro
│ │ │ ├── recoverWithPhrase.astro
│ │ │ ├── registerCurrentDeviceCurrentOrigin.astro
│ │ │ ├── registerDisabled.astro
│ │ │ ├── resetPhraseInfo.astro
│ │ │ ├── savePasskey.astro
│ │ │ ├── savePasskeyWithPin.astro
│ │ │ ├── setPin.astro
│ │ │ ├── showMessage.astro
│ │ │ ├── showSpinner.astro
│ │ │ ├── showVerificationCode.astro
│ │ │ ├── toasts.astro
│ │ │ ├── unprotectDeviceInfo.astro
│ │ │ ├── usePin.astro
│ │ │ └── verifyTentativeDevice.astro
│ │ └── templates.ts
│ └── tsconfig.json
├── sig-verifier-js
│ ├── Cargo.toml
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── lib.rs
│ ├── tests.ts
│ ├── tsconfig.json
│ └── vitest.config.ts
├── test_openid_provider
│ ├── index.js
│ ├── package-lock.json
│ └── package.json
├── try-ii
│ ├── .gitignore
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── README.md
│ ├── canister_ids.json
│ ├── dfx.example.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ └── try-ii-frontend
│ │ │ ├── package.json
│ │ │ ├── src
│ │ │ ├── app.css
│ │ │ ├── app.d.ts
│ │ │ ├── app.html
│ │ │ ├── lib
│ │ │ │ ├── authFunctions.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── Badge.svelte
│ │ │ │ │ ├── Button.svelte
│ │ │ │ │ ├── ButtonOrAnchor.svelte
│ │ │ │ │ ├── Footer.svelte
│ │ │ │ │ ├── Header.svelte
│ │ │ │ │ ├── Logo.svelte
│ │ │ │ │ ├── ProgressRing.svelte
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── Alert.svelte
│ │ │ │ │ │ ├── Toast.svelte
│ │ │ │ │ │ ├── Toaster.svelte
│ │ │ │ │ │ └── toaster.ts
│ │ │ │ ├── config.ts
│ │ │ │ └── state
│ │ │ │ │ └── identity.ts
│ │ │ ├── routes
│ │ │ │ ├── +layout.js
│ │ │ │ ├── +layout.svelte
│ │ │ │ └── +page.svelte
│ │ │ └── vite-env.d.ts
│ │ │ ├── static
│ │ │ ├── .ic-assets.json5
│ │ │ ├── .well-known
│ │ │ │ └── ic-domains
│ │ │ ├── favicon.ico
│ │ │ └── logo2.svg
│ │ │ ├── svelte.config.js
│ │ │ ├── tsconfig.json
│ │ │ └── vite.config.js
│ └── tsconfig.json
├── vc-api
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── generated
│ │ │ └── vc_issuer_types.ts
│ │ └── index.ts
│ └── tsconfig.json
└── vite-plugins
│ ├── package.json
│ ├── src
│ ├── index.ts
│ └── utils.ts
│ └── tsconfig.json
├── svelte.config.js
├── tsconfig.all.json
├── tsconfig.base.json
├── tsconfig.json
├── vite.config.ts
└── vitest.config.ts
/.config/nextest.toml:
--------------------------------------------------------------------------------
1 | # Nextest configuration for Internet Identity canister tests
2 | # This configuration helps manage PocketIC load by adding delays and retries
3 |
4 | # https://nexte.st/docs/configuration/reference/
5 | [profile.ci]
6 | test-threads = 1
7 | slow-timeout = { period = "180s", terminate-after = 3 }
8 | retries = { backoff = "exponential", count = 2, delay = "2s", max-delay = "10s" }
9 | leak-timeout = "2s"
10 |
--------------------------------------------------------------------------------
/.didc-release:
--------------------------------------------------------------------------------
1 | # the release used to pull the didc executable
2 | # see frontend-checks for more info
3 | 2025-10-16
4 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | # These are all the files and directories that are _not_ included in the docker
2 | # build. They are not used in the docker build and including them would simply
3 | # invalidate the layer cache.
4 | backend-tests
5 | node_modules
6 | demos
7 | docs
8 | dist
9 | screenshots
10 | target
11 | out
12 | arg.in
13 | Dockerfile
14 | *.wasm
15 | *.swp
16 |
17 | # filter out all "hidden" files and directories
18 | # (.git, .dfx, .*ignore, etc)
19 | .*
20 |
21 | # except for the ones we really want
22 | !.node-version
23 |
24 | # Scripts are added explicitly as needed
25 | scripts/
26 | !scripts/build
27 | !scripts/bootstrap
28 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # The codebase is owned by the Identity team at DFINITY
2 |
3 | - @dfinity/identity
4 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Motivation
4 |
5 |
6 |
7 | # Changes
8 |
9 |
10 |
11 | # Tests
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.github/actions/file-size/action.yml:
--------------------------------------------------------------------------------
1 | name: 'File Size'
2 | description: 'Record the file size in git notes'
3 | inputs:
4 | file:
5 | description: 'File of which to compute the size'
6 | required: true
7 | save:
8 | description: 'When true (default), the size is uploaded to origin in a git note.'
9 | required: true
10 | default: true
11 | outputs:
12 | size:
13 | description: "The size of the file, in bytes"
14 | value: ${{ steps.run-script.outputs.size }}
15 | runs:
16 | using: "composite"
17 | steps:
18 | - id: run-script
19 | run: ${{ github.action_path }}/run.sh
20 | shell: bash
21 | env:
22 | INPUT_FILE: ${{ inputs.file }}
23 | INPUT_SAVE: ${{ inputs.save }}
24 |
--------------------------------------------------------------------------------
/.github/actions/setup-didc/action.yml:
--------------------------------------------------------------------------------
1 | name: 'Setup didc'
2 | description: Setup didc
3 | runs:
4 | using: "composite"
5 | steps:
6 | - name: Install didc
7 | shell: bash
8 | run: |
9 | didc_release=$(sed <.didc-release 's/#.*$//' | sed '/^$/d')
10 |
11 | # Actual install
12 | mkdir -p ~/.local/bin
13 | curl --location --silent --show-error \
14 | https://github.com/dfinity/candid/releases/download/$didc_release/didc-linux64 \
15 | -o ~/.local/bin/didc
16 | chmod +x ~/.local/bin/didc
17 | ~/.local/bin/didc --version
18 | echo "$HOME/.local/bin" >> $GITHUB_PATH
19 |
--------------------------------------------------------------------------------
/.github/actions/setup-node/action.yml:
--------------------------------------------------------------------------------
1 | name: 'Setup nodejs'
2 | description: Setup nodejs and other frontend tools used in the frontend build
3 | runs:
4 | using: "composite"
5 | steps:
6 | - name: Read .node-version
7 | shell: bash
8 | id: read-node-version
9 | run: echo "version=$(cat .node-version)" >> "$GITHUB_OUTPUT"
10 |
11 | - name: Install wasm-pack
12 | shell: bash
13 | run: |
14 | curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
15 | cargo --version
16 | wasm-pack --version
17 |
18 | - uses: actions/setup-node@v4
19 | with:
20 | node-version: ${{ steps.read-node-version.outputs.version }}
21 |
--------------------------------------------------------------------------------
/.github/actions/slack/README.md:
--------------------------------------------------------------------------------
1 | # Slack
2 |
3 | A GitHub Action for sending slack notifications. For more information, see slack's [documentation](https://api.slack.com/messaging/webhooks). In particular, note that the channel and workspace are set by the webhook URL, not directly by this action.
4 |
5 | ## Usage
6 |
7 | ```yaml
8 | name: My Action
9 |
10 | on:
11 | push:
12 |
13 | jobs:
14 | share-love:
15 | runs-on: ubuntu-22.04
16 | steps:
17 | - uses: ./.github/actions/slack
18 | with:
19 | WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
20 | MESSAGE: "I love you guys."
21 | ```
22 |
--------------------------------------------------------------------------------
/.github/actions/slack/action.yml:
--------------------------------------------------------------------------------
1 | name: "Slack"
2 | description: "A simple action that sends a slack message to a channel."
3 | inputs:
4 | message:
5 | description: "The message to send. A link to the action run will be appended."
6 | required: true
7 | webhook_url:
8 | description: "The webhook URL as described here: https://api.slack.com/messaging/webhooks"
9 | required: true
10 | runs:
11 | using: "composite"
12 | steps:
13 | - run: |
14 | echo '{}' | jq --arg text "$MESSAGE" '.text = $text' | \
15 | curl -X POST -H 'Content-Type: application/json' --data @- "$WEBHOOK_URL"
16 | shell: bash
17 | env:
18 | WEBHOOK_URL: ${{ inputs.WEBHOOK_URL }}
19 | MESSAGE: ${{ inputs.MESSAGE }}
20 |
--------------------------------------------------------------------------------
/.github/repo_policies/BOT_APPROVED_FILES:
--------------------------------------------------------------------------------
1 | # List of approved files that can be changed by a bot via an automated PR
2 | # This is to increase security and prevent accidentally updating files that shouldn't be changed by a bot
3 | src/frontend/src/flows/dappsExplorer/dapps.json
4 | README.md
5 | src/frontend/src/assets/icons/*.svg
6 | src/frontend/src/assets/icons/*.png
7 | src/frontend/src/assets/icons/*.jpg
8 | src/frontend/src/assets/icons/*.webp
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Various IDEs and Editors
2 | .vscode/
3 | .idea/
4 | **/*~
5 | .windsurf/
6 |
7 | # Mac OSX temporary files
8 | .DS_Store
9 | **/.DS_Store
10 |
11 | # dfx temporary files
12 | .dfx/
13 |
14 | # frontend code
15 | node_modules/
16 | dist/
17 | dist-showcase/
18 | .env
19 | lib
20 | !src/frontend/src/lib
21 | !src/try-ii/src/try-ii-frontend/src/lib
22 | /.svelte-kit
23 |
24 | # Cargo build output
25 | target/
26 |
27 | # End-to-end test artifacts
28 | test-failures/
29 |
30 | # built canisters
31 | *.wasm
32 | *.wasm.gz
33 | ic-test-state-machine
34 | pocket-ic
35 |
36 | *.tsbuildinfo
37 |
38 | # Proposals
39 | release*.json
40 | arg.bin
41 | args.txt
42 | proposal.md
43 |
44 | # Playwright
45 | /test-results/
46 | /playwright-report/
47 | /blob-report/
48 | /playwright/.cache/
49 |
--------------------------------------------------------------------------------
/.node-version:
--------------------------------------------------------------------------------
1 | 20.19.4
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Various IDEs and Editors
2 | .vscode/
3 | .idea/
4 | **/*~
5 |
6 | # Mac OSX temporary files
7 | .DS_Store
8 | **/.DS_Store
9 |
10 | # dfx temporary files
11 | .dfx/
12 |
13 | # frontend code
14 | node_modules/
15 | src/frontend/generated/
16 | src/vc-api/src/generated/
17 | dist/
18 | .env
19 | lib
20 | !src/frontend/src/lib
21 | src/frontend/src/lib/generated
22 | demos/vc_issuer/app/generated/
23 |
24 | # Cargo build output
25 | target/
26 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
3 | "overrides": [
4 | {
5 | "files": "*.svelte",
6 | "options": {
7 | "parser": "svelte"
8 | }
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/boundary_node/error_page/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 |
3 | export default defineConfig({
4 | root: __dirname,
5 | server: {
6 | port: 5174, // Using a different port than the main app
7 | },
8 | });
9 |
--------------------------------------------------------------------------------
/demos/test-app/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | target/
--------------------------------------------------------------------------------
/demos/test-app/Cargo.toml:
--------------------------------------------------------------------------------
1 | [workspace]
2 |
3 | [package]
4 | name = "test_app"
5 | version = "0.1.0"
6 | edition = "2021"
7 |
8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
9 |
10 | [lib]
11 | path = "lib.rs"
12 | crate-type = ["cdylib"]
13 |
14 | [dependencies]
15 | asset_util = { path = "../../src/asset_util" }
16 | candid = "0.10"
17 | ic-cdk = "0.16"
18 | ic-cdk-macros = "0.16"
19 | serde = "1"
20 | serde_bytes = "0.11"
21 | include_dir = "0.7"
22 |
--------------------------------------------------------------------------------
/demos/test-app/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | set -euo pipefail
3 |
4 | # Try to run from the script location
5 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6 | cd "$SCRIPT_DIR"
7 |
8 | pushd ../../
9 | npm run --workspace ./demos/test-app build
10 | popd
11 |
12 | cargo build --release --target wasm32-unknown-unknown
13 | ic-wasm "target/wasm32-unknown-unknown/release/test_app.wasm" -o "./test_app.wasm" shrink
14 | ic-wasm test_app.wasm -o test_app.wasm metadata candid:service -f test_app.did -v public
15 | # indicate support for certificate version 1 and 2 in the canister metadata
16 | ic-wasm test_app.wasm -o test_app.wasm metadata supported_certificate_versions -d "1,2" -v public
17 |
--------------------------------------------------------------------------------
/demos/test-app/canister_ids.json:
--------------------------------------------------------------------------------
1 | {
2 | "test_app": {
3 | "ic": "kvusz-kaaaa-aaaad-aabwa-cai"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/demos/test-app/dfx.example.json:
--------------------------------------------------------------------------------
1 | {
2 | "canisters": {
3 | "test_app": {
4 | "type": "custom",
5 | "candid": "test_app.did",
6 | "wasm": "test_app.wasm",
7 | "build": "./build.sh"
8 | }
9 | },
10 | "defaults": {
11 | "build": {
12 | "packtool": ""
13 | }
14 | },
15 | "version": 1
16 | }
17 |
--------------------------------------------------------------------------------
/demos/test-app/rust-toolchain.toml:
--------------------------------------------------------------------------------
1 | ../../rust-toolchain.toml
--------------------------------------------------------------------------------
/demos/test-app/test_app.did:
--------------------------------------------------------------------------------
1 | type HeaderField = record { text; text; };
2 |
3 | type HttpRequest = record {
4 | method: text;
5 | url: text;
6 | headers: vec HeaderField;
7 | body: blob;
8 | certificate_version: opt nat16;
9 | };
10 |
11 | type HttpResponse = record {
12 | status_code: nat16;
13 | headers: vec HeaderField;
14 | body: blob;
15 | };
16 |
17 | type AlternativeOriginsMode = variant {
18 | CertifiedContent;
19 | UncertifiedContent;
20 | Redirect: record { location: text; };
21 | }
22 |
23 | service : {
24 | whoami: () -> (principal) query;
25 | update_alternative_origins: (text, AlternativeOriginsMode) -> ();
26 | http_request: (request: HttpRequest) -> (HttpResponse) query;
27 | }
28 |
--------------------------------------------------------------------------------
/demos/test-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "include": ["vite.config.ts", "./src"],
4 | "compilerOptions": {
5 | "jsx": "react-jsx",
6 | "types": ["node", "vite/client"],
7 | "composite": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/demos/using-dev-build/.prettierignore:
--------------------------------------------------------------------------------
1 | .dfx/
2 | dist/
3 |
--------------------------------------------------------------------------------
/demos/using-dev-build/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/demos/using-dev-build/specs/auth.e2e.ts:
--------------------------------------------------------------------------------
1 | import { browser } from "@wdio/globals";
2 |
3 | describe("authentication", () => {
4 | it("works without webauthn", async () => {
5 | await browser.url("/");
6 |
7 | await browser.$("h1").waitForExist();
8 |
9 | // Click on "Create an Internet Identity Anchor"
10 | await browser.$("#registerButton").click();
11 |
12 | await browser.$("h1").waitForExist();
13 | const title = await browser.$("h1");
14 |
15 | await browser.waitUntil(
16 | async () => {
17 | return (
18 | (await title.getText()) === "You’ve created an Internet Identity!"
19 | );
20 | },
21 | { timeout: 20_000 },
22 | );
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/demos/using-dev-build/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "types": ["@wdio/globals/types", "@types/mocha"]
22 | },
23 | "include": ["webapp"]
24 | }
25 |
--------------------------------------------------------------------------------
/demos/using-dev-build/webapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/demos/using-dev-build/webapp.png
--------------------------------------------------------------------------------
/demos/using-dev-build/whoami.mo:
--------------------------------------------------------------------------------
1 | import Principal "mo:base/Principal";
2 |
3 | persistent actor Whoami {
4 | public query (message) func whoami() : async Principal {
5 | message.caller;
6 | };
7 | };
8 |
--------------------------------------------------------------------------------
/demos/vc_issuer/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | VC Issuer
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/demos/vc_issuer/dfx.example.json:
--------------------------------------------------------------------------------
1 | {
2 | "canisters": {
3 | "internet_identity": {
4 | "type": "custom",
5 | "candid": "../../src/internet_identity/internet_identity.did",
6 | "wasm": "../../internet_identity.wasm.gz",
7 |
8 | "remote": {
9 | "id": {
10 | "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai"
11 | }
12 | }
13 | },
14 |
15 | "issuer": {
16 | "type": "custom",
17 | "candid": "vc_demo_issuer.did",
18 | "wasm": "vc_demo_issuer.wasm.gz",
19 | "build": "./build.sh"
20 | }
21 | },
22 | "defaults": {
23 | "build": {
24 | "packtool": ""
25 | }
26 | },
27 | "version": 1
28 | }
29 |
--------------------------------------------------------------------------------
/demos/vc_issuer/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "include": ["vite.config.ts", "./app"],
4 | "compilerOptions": {
5 | "composite": true,
6 | "jsx": "react-jsx"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Specification
2 |
3 | The Internet Identity specification is written in Markdown ([MDX]) and rendered through [docusaurus]. We strive for _some_ readability in the GitHub rendered file but ultimately focus on the official, docusaurus-rendered [page on internetcomputer.org](https://internetcomputer.org/docs/current/references/ii-spec/).
4 |
5 |
6 | [docusaurus]: http://docusaurus.io
7 | [MDX]: https://mdxjs.com
8 |
--------------------------------------------------------------------------------
/ii-architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/ii-architecture.png
--------------------------------------------------------------------------------
/ii-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/ii-logo.png
--------------------------------------------------------------------------------
/lingui.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "@lingui/cli";
2 | import { svelteExtractor } from "./src/lingui-svelte";
3 | import { availableLocales } from "./src/frontend/src/lib/constants/locale.constants";
4 |
5 | export default defineConfig({
6 | locales: availableLocales,
7 | sourceLocale: availableLocales[0],
8 | catalogs: [
9 | {
10 | path: "src/frontend/src/lib/locales/{locale}",
11 | include: ["src/frontend/src/lib", "src/frontend/src/routes"],
12 | },
13 | ],
14 | extractors: [svelteExtractor],
15 | });
16 |
--------------------------------------------------------------------------------
/rust-toolchain.toml:
--------------------------------------------------------------------------------
1 | [toolchain]
2 | channel = "1.90.0"
3 | targets = ["wasm32-unknown-unknown"]
4 |
--------------------------------------------------------------------------------
/screenshots/README.md:
--------------------------------------------------------------------------------
1 | # Screenshots
2 |
3 | These screenshots are generated by running the following commands:
4 |
5 | ``` bash
6 | npm run showcase&
7 | npm run screenshots
8 | ```
9 |
10 | That will generate screenshots in `screenshots/custom/`.
11 |
12 | We commit these screenshots (generated on CI in `desktop/` and `mobile/`) so that changes
13 | to the UI can be reviewed nicely in the PR.
14 |
--------------------------------------------------------------------------------
/screenshots/desktop/addDeviceSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/addDeviceSuccess.png
--------------------------------------------------------------------------------
/screenshots/desktop/addPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/addPhrase.png
--------------------------------------------------------------------------------
/screenshots/desktop/addPhraseWarning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/addPhraseWarning.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNew.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNew.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewAlt.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewAlt_open.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewKnown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewKnown.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewKnownAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewKnownAlt.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewKnownAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewKnownAlt_open.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeNewKnown_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeNewKnown_open.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizePick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizePick.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizePickAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizePickAlt.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizePickAltOpen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizePickAltOpen.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizePickMany.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizePickMany.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeUseExisting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeUseExisting.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeUseExistingKnown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeUseExistingKnown.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeUseExistingKnownAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeUseExistingKnownAlt.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeUseExistingKnownAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeUseExistingKnownAlt_open.png
--------------------------------------------------------------------------------
/screenshots/desktop/authorizeUseExistingKnown_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/authorizeUseExistingKnown_open.png
--------------------------------------------------------------------------------
/screenshots/desktop/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/banner.png
--------------------------------------------------------------------------------
/screenshots/desktop/chooseRecoveryMechanism.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/chooseRecoveryMechanism.png
--------------------------------------------------------------------------------
/screenshots/desktop/compatibilityNotice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/compatibilityNotice.png
--------------------------------------------------------------------------------
/screenshots/desktop/confirmSeedPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/confirmSeedPhrase.png
--------------------------------------------------------------------------------
/screenshots/desktop/dappsExplorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/dappsExplorer.png
--------------------------------------------------------------------------------
/screenshots/desktop/deviceRegistrationDisabledInfo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/deviceRegistrationDisabledInfo.png
--------------------------------------------------------------------------------
/screenshots/desktop/displayError.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/displayError.png
--------------------------------------------------------------------------------
/screenshots/desktop/displayManage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/displayManage.png
--------------------------------------------------------------------------------
/screenshots/desktop/displayManageSingle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/displayManageSingle.png
--------------------------------------------------------------------------------
/screenshots/desktop/displaySeedPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/displaySeedPhrase.png
--------------------------------------------------------------------------------
/screenshots/desktop/displayUserNumber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/displayUserNumber.png
--------------------------------------------------------------------------------
/screenshots/desktop/landing_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/landing_1.png
--------------------------------------------------------------------------------
/screenshots/desktop/landing_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/landing_2.png
--------------------------------------------------------------------------------
/screenshots/desktop/landing_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/landing_3.png
--------------------------------------------------------------------------------
/screenshots/desktop/manageNew.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/manageNew.png
--------------------------------------------------------------------------------
/screenshots/desktop/managePick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/managePick.png
--------------------------------------------------------------------------------
/screenshots/desktop/manageUseExisting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/manageUseExisting.png
--------------------------------------------------------------------------------
/screenshots/desktop/pickRecoveryDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/pickRecoveryDevice.png
--------------------------------------------------------------------------------
/screenshots/desktop/pollForTentativeDevicePage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/pollForTentativeDevicePage.png
--------------------------------------------------------------------------------
/screenshots/desktop/promptCaptcha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/promptCaptcha.png
--------------------------------------------------------------------------------
/screenshots/desktop/promptCaptchaReady.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/promptCaptchaReady.png
--------------------------------------------------------------------------------
/screenshots/desktop/promptDeviceAlias.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/promptDeviceAlias.png
--------------------------------------------------------------------------------
/screenshots/desktop/promptUserNumber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/promptUserNumber.png
--------------------------------------------------------------------------------
/screenshots/desktop/recoverWithDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/recoverWithDevice.png
--------------------------------------------------------------------------------
/screenshots/desktop/recoverWithPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/recoverWithPhrase.png
--------------------------------------------------------------------------------
/screenshots/desktop/registerDisabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/registerDisabled.png
--------------------------------------------------------------------------------
/screenshots/desktop/savePasskey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/savePasskey.png
--------------------------------------------------------------------------------
/screenshots/desktop/showMessage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/showMessage.png
--------------------------------------------------------------------------------
/screenshots/desktop/showSpinner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/showSpinner.png
--------------------------------------------------------------------------------
/screenshots/desktop/showVerificationCode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/showVerificationCode.png
--------------------------------------------------------------------------------
/screenshots/desktop/toasts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/toasts.png
--------------------------------------------------------------------------------
/screenshots/desktop/verifyTentativeDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/desktop/verifyTentativeDevice.png
--------------------------------------------------------------------------------
/screenshots/mobile/addDeviceSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/addDeviceSuccess.png
--------------------------------------------------------------------------------
/screenshots/mobile/addPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/addPhrase.png
--------------------------------------------------------------------------------
/screenshots/mobile/addPhraseWarning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/addPhraseWarning.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNew.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNew.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewAlt.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewAlt_open.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewKnown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewKnown.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewKnownAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewKnownAlt.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewKnownAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewKnownAlt_open.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeNewKnown_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeNewKnown_open.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizePick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizePick.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizePickAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizePickAlt.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizePickAltOpen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizePickAltOpen.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizePickMany.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizePickMany.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeUseExisting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeUseExisting.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeUseExistingKnown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeUseExistingKnown.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeUseExistingKnownAlt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeUseExistingKnownAlt.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeUseExistingKnownAlt_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeUseExistingKnownAlt_open.png
--------------------------------------------------------------------------------
/screenshots/mobile/authorizeUseExistingKnown_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/authorizeUseExistingKnown_open.png
--------------------------------------------------------------------------------
/screenshots/mobile/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/banner.png
--------------------------------------------------------------------------------
/screenshots/mobile/chooseRecoveryMechanism.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/chooseRecoveryMechanism.png
--------------------------------------------------------------------------------
/screenshots/mobile/compatibilityNotice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/compatibilityNotice.png
--------------------------------------------------------------------------------
/screenshots/mobile/confirmSeedPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/confirmSeedPhrase.png
--------------------------------------------------------------------------------
/screenshots/mobile/dappsExplorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/dappsExplorer.png
--------------------------------------------------------------------------------
/screenshots/mobile/deviceRegistrationDisabledInfo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/deviceRegistrationDisabledInfo.png
--------------------------------------------------------------------------------
/screenshots/mobile/displayError.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/displayError.png
--------------------------------------------------------------------------------
/screenshots/mobile/displayManage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/displayManage.png
--------------------------------------------------------------------------------
/screenshots/mobile/displayManageSingle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/displayManageSingle.png
--------------------------------------------------------------------------------
/screenshots/mobile/displaySeedPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/displaySeedPhrase.png
--------------------------------------------------------------------------------
/screenshots/mobile/displayUserNumber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/displayUserNumber.png
--------------------------------------------------------------------------------
/screenshots/mobile/landing_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/landing_1.png
--------------------------------------------------------------------------------
/screenshots/mobile/landing_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/landing_2.png
--------------------------------------------------------------------------------
/screenshots/mobile/landing_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/landing_3.png
--------------------------------------------------------------------------------
/screenshots/mobile/landing_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/landing_4.png
--------------------------------------------------------------------------------
/screenshots/mobile/manageNew.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/manageNew.png
--------------------------------------------------------------------------------
/screenshots/mobile/managePick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/managePick.png
--------------------------------------------------------------------------------
/screenshots/mobile/manageUseExisting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/manageUseExisting.png
--------------------------------------------------------------------------------
/screenshots/mobile/pickRecoveryDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/pickRecoveryDevice.png
--------------------------------------------------------------------------------
/screenshots/mobile/pollForTentativeDevicePage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/pollForTentativeDevicePage.png
--------------------------------------------------------------------------------
/screenshots/mobile/promptCaptcha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/promptCaptcha.png
--------------------------------------------------------------------------------
/screenshots/mobile/promptCaptchaReady.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/promptCaptchaReady.png
--------------------------------------------------------------------------------
/screenshots/mobile/promptDeviceAlias.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/promptDeviceAlias.png
--------------------------------------------------------------------------------
/screenshots/mobile/promptUserNumber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/promptUserNumber.png
--------------------------------------------------------------------------------
/screenshots/mobile/recoverWithDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/recoverWithDevice.png
--------------------------------------------------------------------------------
/screenshots/mobile/recoverWithPhrase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/recoverWithPhrase.png
--------------------------------------------------------------------------------
/screenshots/mobile/registerDisabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/registerDisabled.png
--------------------------------------------------------------------------------
/screenshots/mobile/savePasskey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/savePasskey.png
--------------------------------------------------------------------------------
/screenshots/mobile/showMessage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/showMessage.png
--------------------------------------------------------------------------------
/screenshots/mobile/showSpinner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/showSpinner.png
--------------------------------------------------------------------------------
/screenshots/mobile/showVerificationCode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/showVerificationCode.png
--------------------------------------------------------------------------------
/screenshots/mobile/toasts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/toasts.png
--------------------------------------------------------------------------------
/screenshots/mobile/verifyTentativeDevice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/screenshots/mobile/verifyTentativeDevice.png
--------------------------------------------------------------------------------
/src/archive/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "archive"
3 | description = "Internet Identity Archive Canister"
4 | version = "0.1.0"
5 | edition = "2021"
6 |
7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8 |
9 | [dependencies]
10 | # local dependencies
11 | internet_identity_interface.workspace = true
12 | # ic dependencies
13 | candid.workspace = true
14 | ic-cdk.workspace = true
15 | ic-cdk-macros.workspace = true
16 | ic-cdk-timers.workspace = true
17 | ic-metrics-encoder.workspace = true
18 | ic-stable-structures.workspace = true
19 | # other
20 | serde.workspace = true
21 | serde_bytes.workspace = true
22 |
23 | [dev-dependencies]
24 | candid_parser.workspace = true
25 | canister_tests.workspace = true
26 | hex.workspace = true
27 | pocket-ic.workspace = true
28 | regex.workspace = true
29 |
--------------------------------------------------------------------------------
/src/archive/stable_memory/archive_v1.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/archive/stable_memory/archive_v1.bin.gz
--------------------------------------------------------------------------------
/src/asset_util/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "asset_util"
3 | description = "Asset certification utility library for asset serving canisters"
4 | version = "0.1.0"
5 | edition = "2021"
6 |
7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8 |
9 | [dependencies]
10 | base64.workspace = true
11 | candid.workspace = true
12 | ic-cdk.workspace = true
13 | ic-cdk-macros.workspace = true
14 | ic-certification.workspace = true
15 | ic-representation-independent-hash.workspace = true
16 | include_dir.workspace = true
17 | internet_identity_interface.workspace = true
18 | lazy_static.workspace = true
19 | serde.workspace = true
20 | serde_cbor.workspace = true
21 | sha2.workspace = true
22 |
--------------------------------------------------------------------------------
/src/canister_tests/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "canister_tests"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | [dependencies]
7 | base64.workspace = true
8 | flate2 = "1.0"
9 | hex.workspace = true
10 | lazy_static.workspace = true
11 | regex.workspace = true
12 | serde.workspace = true
13 | serde_cbor.workspace = true
14 | serde_bytes.workspace = true
15 | sha2.workspace = true
16 |
17 | internet_identity_interface.workspace = true
18 | identity_jose = { git = "https://github.com/dfinity/identity.rs.git", rev = "aa510ef7f441848d6c78058fe51ad4ad1d9bd5d8", default-features = false}
19 |
20 | # All IC deps
21 | candid.workspace = true
22 | ic-cdk.workspace = true
23 | ic-representation-independent-hash.workspace = true
24 | ic-verifiable-credentials.workspace = true
25 | pocket-ic.workspace = true
26 | url = "2.5"
27 |
--------------------------------------------------------------------------------
/src/canister_tests/src/api.rs:
--------------------------------------------------------------------------------
1 | use ic_cdk::api::management_canister::main::CanisterId;
2 | use internet_identity_interface::http_gateway::{HttpRequest, HttpResponse};
3 | use pocket_ic::{query_candid, PocketIc, RejectResponse};
4 |
5 | pub mod archive;
6 | pub mod internet_identity;
7 |
8 | // api methods common to all canisters
9 |
10 | pub fn http_request(
11 | env: &PocketIc,
12 | canister_id: CanisterId,
13 | http_request: &HttpRequest,
14 | ) -> Result {
15 | query_candid(env, canister_id, "http_request", (http_request,)).map(|(x,)| x)
16 | }
17 |
--------------------------------------------------------------------------------
/src/canister_tests/src/lib.rs:
--------------------------------------------------------------------------------
1 | //! Here you'll find modules related to testing the canisters:
2 | //! * `api`: Rust-bindings for the II and archive canisters
3 | //! * `flows`: Reusable flows consisting of multiple canister interactions
4 | //! * `framework`: Helpers of various kinds for writing tests.
5 | //!
6 | //! Most changes should happen in the canister specific `tests` folders. The split was done this way so that `tests` is as simple
7 | //! as possible to make tests easy to read and write.
8 | //!
9 | pub mod api;
10 | pub mod flows;
11 | pub mod framework;
12 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/backgrounds/constants.ts:
--------------------------------------------------------------------------------
1 | import { FlairAnimationOptions } from "./FlairCanvas";
2 |
3 | export const DROP_WAVE_ANIMATION: FlairAnimationOptions = {
4 | location: "center",
5 | target: ["motion"],
6 | motionType: "omni",
7 | intensity: "medium",
8 | speed: "slow",
9 | nImpulses: "single",
10 | size: "large",
11 | impulseEasing: "cubicIn",
12 | };
13 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/icons/GoogleIcon.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 |
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/icons/PulsatingCircleIcon.svelte:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
30 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/illustrations/MigrationIllustration.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/illustrations/MigrationSuccessIllustration.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/layout/LandingHeader.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
24 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/locale/index.ts:
--------------------------------------------------------------------------------
1 | import Trans from "$lib/components/locale/Trans.svelte";
2 | import LanguageSelector from "$lib/components/locale/LanguageSelector.svelte";
3 |
4 | export { Trans, LanguageSelector };
5 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/Avatar.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 |
24 | {@render children?.()}
25 |
26 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/Panel.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 | {@render children?.()}
15 |
16 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/PlaceHolder.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
14 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/SideBar.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
22 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/SideBarElement.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
16 | {@render children?.()}
17 |
18 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/TabElement.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
16 | {@render children?.()}
17 |
18 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/ui/Tabs.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/utils/Flow.svelte:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/utils/SystemOverlayBackdrop.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/utils/TimedDisplay.svelte:
--------------------------------------------------------------------------------
1 |
27 |
28 | {#if renderChildren}
29 | {@render children?.()}
30 | {/if}
31 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/utils/Toaster.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 | {#each api.getToasts() as toast, index (toast.id)}
18 |
19 | {/each}
20 |
21 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/utils/toaster.ts:
--------------------------------------------------------------------------------
1 | import * as toast from "@zag-js/toast";
2 |
3 | export const toaster = toast.createStore({
4 | placement: "top-end",
5 | overlap: false,
6 | offsets: { top: "4rem", left: "1rem", bottom: "1rem", right: "1rem" },
7 | });
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/addAccessMethod/index.ts:
--------------------------------------------------------------------------------
1 | export { default as AddAccessMethodWizard } from "./AddAccessMethodWizard.svelte";
2 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/auth/index.ts:
--------------------------------------------------------------------------------
1 | export { default as AuthWizard } from "./AuthWizard.svelte";
2 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/confirmAccessMethod/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ConfirmAccessMethodWizard } from "./ConfirmAccessMethodWizard.svelte";
2 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/confirmAccessMethod/views/FinishOnNewDevice.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 | {$t`Continue on your new device`}
11 |
12 |
13 |
14 | To finish setting up your passkey, follow the instructions shown on your
15 | new device.
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/confirmAccessMethod/views/WaitingForNewDevice.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
11 |
12 | {$t`Waiting for your new device`}
13 |
14 |
17 |
18 | The new device is preparing to continue.
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/migration/index.ts:
--------------------------------------------------------------------------------
1 | export { default as MigrationWizard } from "./MigrationWizard.svelte";
2 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/registerAccessMethod/index.ts:
--------------------------------------------------------------------------------
1 | export { default as RegisterAccessMethodWizard } from "./RegisterAccessMethodWizard.svelte";
2 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/components/wizards/registerAccessMethod/views/WaitingForExistingDevice.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
11 |
12 | {$t`Waiting for your existing device`}
13 |
14 |
17 |
18 | The existing device is preparing to continue.
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/constants/locale.constants.ts:
--------------------------------------------------------------------------------
1 | // First locale is default directly defined in svelte components
2 | export const availableLocales = ["en", "de", "es", "id"];
3 |
4 | // List of languages that are actually enabled
5 | export const enabledLocales = ["en"];
6 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/constants/store.constants.ts:
--------------------------------------------------------------------------------
1 | export const storeLocalStorageKey = {
2 | LastUsedIdentities: "ii-last-used-identities",
3 | Locale: "ii-locale",
4 | } as const;
5 |
6 | export type StoreLocalStorageKey =
7 | (typeof storeLocalStorageKey)[keyof typeof storeLocalStorageKey];
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/Gate23_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/Gate23_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/aegis-finance_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/aegis-finance_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/appic_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/appic_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/asset-app_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/asset-app_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/autoroyale_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/autoroyale_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/ava_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/ava_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/b3pay_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/b3pay_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/b4b_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/b4b_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/bink_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/bit10_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/bit10_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/blocklist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/blocklist.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/canister-store_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/canister-store_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/canistergeek_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/canistergeek_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/canlista_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/canlista_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/catalyze_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/catalyze_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/chainkeyx_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/chainkeyx_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/cipherAI_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/cipherAI_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/cload_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/cload_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/clpfinance_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/clpfinance_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/configeek_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/configeek_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/cosmicrafts_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/cosmicrafts_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/cyqlio_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/d-vote_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/d-vote_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/daoventure_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/daoventure_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dbox_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dbox_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/decideai_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/decideai_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dflow_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dflow_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/distrikt_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/distrikt_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dmail-network_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dmail-network_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/doocoins_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/doocoins_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/doxa_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/doxa_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dragginz_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dragginz_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dscvr_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dscvr_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dsign_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dsign_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/dsocial_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/dsocial_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/estatedao_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/estatedao_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/faceless_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/faceless_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/factland_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/factland_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/fomowell_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/fomowell_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/formify_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/formify_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/fpdao_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/fpdao_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/funded_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/funded_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/gamebloc_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/gamebloc_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/gitcoin-client.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/gitcoin-client.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/hobbi_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/ic-websocket_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/ic-websocket_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icdex_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icdex_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icecube_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icecube_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icevent_logo_112x112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icevent_logo_112x112.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/ichub_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/ichub_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icme_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icme_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icpanda-dao_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icpanda-dao_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icpex_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icpex_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icpp-logo.dracula-cyan.112x112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icpp-logo.dracula-cyan.112x112.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icpsig_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icpsig_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icpswap_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icpswap_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icrouter_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icrouter_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icspore_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icspore_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/icto_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/icto_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/ictoolkit_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/ictoolkit_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/iknows_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/iknows_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/john-dao_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/john-dao_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/juno_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/kinic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/kinic_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/kong_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/kong_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/kontribute_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/kontribute_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/metaforo-icp_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/metaforo-icp_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/missionispossible_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/missionispossible_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/moonshift_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/moonshift_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/mora_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/mora_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/motokopilot_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/motokopilot_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/nfid_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/nfid_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/nftanvil_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/nftanvil_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/nnsfront-enddapp_logo-dark.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/nnsfront-enddapp_logo-dark.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/nobleblocks_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/nobleblocks_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/nuance_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/nuance_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/odoc_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/odoc_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/oneblock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/oneblock.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/open-internet-metaverse_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/open-internet-metaverse_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/openchat_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/openchat_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/ping_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/ping_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/pleximail_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/pleximail_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/rakeoff_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/rakeoff_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/redsteep_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/redsteep_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/riide_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/riide_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/rubaru_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/rubaru_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/sagatarot_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/sagatarot_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/signals_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/signals_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/sonic-dex_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/sonic-dex_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/stoicwallet_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/stoicwallet_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/syron_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/syron_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/taggr_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/taggr_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/tipjar_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/tipjar_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/trax_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/trax_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/uniswapfrontendontheic_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/uniswapfrontendontheic_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/upas_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/upas_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/usergeek_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/usergeek_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/virtuaseal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/virtuaseal.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/waterneuron_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/waterneuron_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/yuku_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/yuku_logo.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/icons/zon_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/icons/zon_logo.webp
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/assets/favicon.ico
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/assets/identityCardBackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/assets/identityCardBackground.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/assets/unknowndapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/assets/unknowndapp.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/callback-flow.ts:
--------------------------------------------------------------------------------
1 | import { callbackFlow } from "$lib/legacy/flows/redirect";
2 | import { analytics, initAnalytics } from "$lib/utils/analytics/analytics";
3 | import { createSpa } from "./spa";
4 |
5 | void createSpa((connection) => {
6 | initAnalytics(connection.canisterConfig.analytics_config[0]?.[0]);
7 | analytics.pageView();
8 | analytics.event("page-redirect-callback");
9 | return callbackFlow();
10 | });
11 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/constants.ts:
--------------------------------------------------------------------------------
1 | // If credentials have no origin, it's because they were created in this domain
2 | export const II_LEGACY_ORIGIN = "https://identity.ic0.app";
3 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/crypto/pinIdentity.test.ts:
--------------------------------------------------------------------------------
1 | import { constructPinIdentity, reconstructPinIdentity } from "./pinIdentity";
2 |
3 | describe("pin identity", () => {
4 | test("identity can be reconstructed", async () => {
5 | const { identity, pinIdentityMaterial } = await constructPinIdentity({
6 | pin: "123456",
7 | });
8 | const reconstructed = await reconstructPinIdentity({
9 | pin: "123456",
10 | pinIdentityMaterial,
11 | });
12 |
13 | expect(reconstructed.getPrincipal().toText()).toBe(
14 | identity.getPrincipal().toText(),
15 | );
16 | expect(new Uint8Array(reconstructed.getPublicKey().toDer())).toStrictEqual(
17 | new Uint8Array(identity.getPublicKey().toDer()),
18 | );
19 | }, 30000 /* large timeout (in millis) because the crypto ops are heavy */);
20 | });
21 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/environment.ts:
--------------------------------------------------------------------------------
1 | export const BASE_URL = import.meta.env.BASE_URL;
2 |
3 | export const VERSION = import.meta.env.II_VERSION ?? "";
4 |
5 | export const FETCH_ROOT_KEY = import.meta.env.II_FETCH_ROOT_KEY === "1";
6 | export const DUMMY_AUTH = import.meta.env.II_DUMMY_AUTH === "1";
7 | export const DUMMY_CAPTCHA = import.meta.env.II_DUMMY_CAPTCHA === "1";
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/features.ts:
--------------------------------------------------------------------------------
1 | import {
2 | DUMMY_AUTH,
3 | DUMMY_CAPTCHA,
4 | FETCH_ROOT_KEY,
5 | } from "$lib/legacy/environment";
6 |
7 | // Contains code related to the "build features". Features should be accessed
8 | // from the `features` object below. This file also contains helper functions
9 | // for displaying a banner if features are enabled.
10 | export const features = {
11 | FETCH_ROOT_KEY,
12 | DUMMY_AUTH,
13 | DUMMY_CAPTCHA,
14 | };
15 |
16 | export const anyFeatures = (): boolean => {
17 | return Object.values(features).indexOf(true) >= 0;
18 | };
19 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/addDevice/addDeviceSuccess.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title": "You successfully added a new Passkey!",
4 | "continue_to_home": "Continue to Internet Identity",
5 | "explore": "Your new Passkey:",
6 | "internet_identity": "Internet Identity"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/addDevice/addDeviceSuccess.test.ts:
--------------------------------------------------------------------------------
1 | import { I18n } from "$lib/legacy/i18n";
2 | import { vi } from "vitest";
3 | import { addDeviceSuccessPage } from "./addDeviceSuccess";
4 |
5 | describe("addDeviceSuccess", () => {
6 | it("should resolve promise on click to continue", () => {
7 | const onContinue = vi.fn();
8 |
9 | addDeviceSuccessPage(
10 | {
11 | userNumber: BigInt(123456),
12 | i18n: new I18n(),
13 | deviceAlias: "Test device alias",
14 | onContinue,
15 | },
16 | document.body,
17 | );
18 |
19 | document.querySelector('[data-action="next"]')?.click();
20 |
21 | expect(onContinue).toHaveBeenCalledTimes(1);
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/addDevice/manage/pollForTentativeDevice.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "identity_anchor": "Internet Identity",
4 | "add_trusted_device": "Add Passkey",
5 | "follow_steps_on_new_device": "Follow these steps on a trusted device",
6 | "copy_to_clipboard": "Copy to clipboard",
7 | "scan_qr_or_visit_link": "Scan the QR code with your device’s camera or visit the link.",
8 | "sign_in_using_device": "Sign in using your device.",
9 | "or_use_fido": "or add passkey from this device",
10 | "time_remaining": "Time remaining",
11 |
12 | "cancel": "Cancel",
13 | "could_not_copy_link": "Could not copy link to clipboard"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/addDevice/registerCurrentDeviceCurrentOrigin.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title": "Add Current Device",
4 | "paragraph": "Add this device to your Internet Identity to enhance your login experience.",
5 | "skip": "Skip",
6 | "add": "Add",
7 | "label_icon": "Recommended Action"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/addDevice/welcomeView/promptDeviceTrusted.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "internet_identity": "Internet Identity",
4 | "activate_passkey": "Activate Passkey on this device",
5 | "trust_this_device": "Do you trust this device to connect to your Internet Identity?",
6 | "yes": "Yes",
7 | "no": "No"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/dappsExplorer/copy.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "dapps_explorer": "Dapps Explorer",
4 | "try_these_dapps": "Try these dapps",
5 | "back_to_the_previous_page": "Back to the previous page",
6 |
7 | "add_your_dapp": "Want to see your dapp here?",
8 | "get_in_touch": "Get in touch!"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/dappsExplorer/dapps.test.ts:
--------------------------------------------------------------------------------
1 | import { iconFiles } from "$lib/legacy/flows/dappsExplorer/dapps";
2 |
3 | describe("dapps", () => {
4 | it("all logos are present", async () => {
5 | (await import("./dapps.json")).default.forEach((dapp) => {
6 | expect(
7 | Object.keys(iconFiles).find((path) => path.endsWith(dapp.logo)),
8 | `The file ${dapp.logo} is missing`,
9 | ).toBeDefined();
10 | });
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/manage/authenticatorsSection.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "some_passkeys_may_be_outdated_and": "Some of your passkeys may be outdated, and",
4 | "safely_cleaning_them_up": "safely cleaning them up",
5 | "can_improve_sign_in": "can improve your sign-in experience."
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/manage/confirmRemoveDevice.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "confirm": "Remove Device",
4 | "cancel": "Cancel",
5 | "title_recovery_device": "Confirm Remove Recovery Device",
6 | "title_authenticator_device": "Confirm Remove Device",
7 | "label": "Security Warning",
8 | "irreversible_action": "This is an irreversible action.",
9 | "message_authenticator_device": "Confirm that you want to remove the device by entering the passkey nickname:",
10 | "message_recovery_device": "Please, confirm that you want to remove the recovery device.",
11 | "current_device_warning": "You will be logged out after removing this device.",
12 | "label_nickname": "Nickname:",
13 | "label_last_used": "Last used:",
14 | "label_origin": "Registered in:"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/manage/confirmUnlinkAccount.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "confirm": "Unlink Account",
4 | "cancel": "Cancel",
5 | "title": "Confirm Unlink Account",
6 | "label": "Security Warning",
7 | "message": "Please, confirm that you want to unlink the following account:",
8 | "current_credential_warning": "You will be logged out after unlinking this account."
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/manage/recoveryMethodsSection.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "security_warning": "Security Warning",
4 | "recovery_phrase_enabled": "You enabled a recovery phrase.",
5 | "recovery_key_enabled": "You enabled a recovery device.",
6 | "enable_recovery_to_make_secure": "Enable recovery methods to make your Internet Identity more secure."
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/manage/tempKeys.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "temporary_key": "Temporary Keys",
4 | "key_stored_in_browser": "These keys are stored in browser cache, clearing your browser storage will erase them.",
5 |
6 | "security_warning": "Security Warning",
7 | "you_are_using_temporary_key": "You are using a temporary key. Do not hold any assets with this identity.",
8 | "set_up_recovery_and_passkey": "Clearing your browser storage will erase this key. Set up a recovery method to avoid losing access to your identity. Add a passkey to securely hold assets with this identity.",
9 | "add_recovery_phrase": "Add Recovery Phrase",
10 | "add_new_passkey": "Add new Passkey"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/pin/confirmPin.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "confirm_pin": "Confirm PIN for Internet Identity on this Device",
4 | "cancel": "Cancel",
5 | "retry": "Retry"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/pin/setPin.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "set_pin_for_ii": "Set a PIN for Internet Identity on this Device",
4 | "cancel": "Cancel"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/pin/usePin.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "enter_pin_for_ii": "Enter PIN for Internet Identity on this Device",
4 | "or_use_passkey": "or Continue with Passkey",
5 | "cancel": "Cancel"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/recovery/confirmSeedPhrase.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title": "Confirm your Recovery Phrase",
4 | "header": "To ensure you properly stored your recovery phrase, please fill in the specific words below.",
5 | "continue": "Finish",
6 | "back": "Back"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/recovery/recoverWith/phrase.test.ts:
--------------------------------------------------------------------------------
1 | import { vi } from "vitest";
2 | import { recoverWithPhrasePage } from "./phrase";
3 |
4 | test("user number is set", () => {
5 | const f = vi.fn();
6 |
7 | recoverWithPhrasePage(
8 | {
9 | confirm: () => {
10 | /**/
11 | },
12 | back: () => {
13 | /**/
14 | },
15 | verify: ({ userNumber }) => {
16 | f(userNumber);
17 | return Promise.resolve({
18 | ok: false,
19 | err: "this is a test",
20 | });
21 | },
22 | message: "",
23 | },
24 | document.body,
25 | );
26 |
27 | document.querySelectorAll("input")[0].value = "12345";
28 | (document.querySelector('[data-action="next"]') as HTMLButtonElement).click();
29 | expect(f).toHaveBeenCalledWith(BigInt(12345));
30 | });
31 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/register/captcha.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title": "Prove you're not a robot",
4 | "retry": "retry",
5 | "instructions": "Type the characters you see",
6 | "cancel": "Cancel",
7 | "verifying": "Verifying...",
8 | "next": "Next",
9 | "incorrect": "Try one more time."
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/flows/verifiableCredentials/allowCredentials.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title": "Present Credential",
4 | "allow_start": "Allow verifying credential",
5 | "label_ii_input": "Your Internet Identity",
6 | "allow_sep_with": "with",
7 | "cancel": "Cancel",
8 | "present_credential": "Present Credential",
9 | "issued_by": "Attested by",
10 | "relying_party": "To relying party",
11 | "note": "The issuer is unaware that you are sharing this information with the relying party."
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/i18n.ts:
--------------------------------------------------------------------------------
1 | /** The copy and internationalization used in Internet Identity, based on
2 | * the officially supported languages */
3 |
4 | import { I18n as BaseI18n } from "$lib/utils/i18n";
5 |
6 | export type { DynamicKey } from "$lib/utils/i18n";
7 |
8 | const _supportedLanguages = ["en"] as const;
9 | export type SupportedLanguage = (typeof _supportedLanguages)[number];
10 |
11 | // A class derived from the more generic I18n which requires II-supported languages to be implemented.
12 | export class I18n extends BaseI18n {
13 | constructor() {
14 | super("en");
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/styles/CircularXXWeb-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/styles/CircularXXWeb-Bold.woff2
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/styles/CircularXXWeb-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/styles/CircularXXWeb-Medium.woff2
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/styles/CircularXXWeb-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/styles/CircularXXWeb-Regular.woff2
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/styles/dots.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/legacy/styles/dots.woff2
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/vc-flow.ts:
--------------------------------------------------------------------------------
1 | import { vcFlow } from "$lib/legacy/flows/verifiableCredentials";
2 | import { createSpa } from "./spa";
3 | import { analytics, initAnalytics } from "$lib/utils/analytics/analytics";
4 |
5 | void createSpa((connection) => {
6 | initAnalytics(connection.canisterConfig.analytics_config[0]?.[0]);
7 | analytics.pageView();
8 | return vcFlow({ connection });
9 | });
10 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/legacy/version.ts:
--------------------------------------------------------------------------------
1 | import { VERSION } from "$lib/legacy/environment";
2 |
3 | /** parse the II_VERSION, see ./scripts/version for more information */
4 | const versionList = VERSION.split(",");
5 |
6 | export type VersionInfo = {
7 | commit: string;
8 | release?: string;
9 | dirty: boolean;
10 | };
11 |
12 | export const version: VersionInfo = {
13 | commit: versionList[0],
14 | release: versionList[1] === "" ? undefined : versionList[1],
15 | dirty: versionList[2] === "dirty",
16 | };
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/state/UI/isMobile.ts:
--------------------------------------------------------------------------------
1 | // stores/device.ts
2 | import { writable } from "svelte/store";
3 |
4 | function createDeviceStore() {
5 | const { subscribe, set } = writable(false);
6 |
7 | function checkDevice() {
8 | if (typeof window === "undefined") return false;
9 | const isMobile =
10 | window.innerWidth <= 480 && matchMedia("(pointer:coarse)").matches;
11 | set(isMobile);
12 | }
13 |
14 | if (typeof window !== "undefined") {
15 | // Initial check
16 | checkDevice();
17 | // Update on resize
18 | window.addEventListener("resize", checkDevice);
19 | }
20 |
21 | return {
22 | subscribe,
23 | };
24 | }
25 |
26 | export const isMobile = createDeviceStore();
27 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/alias/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "specify_alias": "What device are you using?",
4 | "placeholder": "Example: my phone",
5 | "cancel": "Cancel",
6 | "next": "Next"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/authenticateBox/authnTemplatesCopy.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "continue": "Continue",
4 | "continue_with_another_device": "Continue with another device",
5 | "continue_with_google": "Continue with Google",
6 | "create_new": "Create New",
7 | "lost_access": "Lost Access?"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/identityCard.ts:
--------------------------------------------------------------------------------
1 | import { PreLoadImage } from "$lib/utils/preLoadImage";
2 | import { html, TemplateResult } from "lit-html";
3 |
4 | export const identityCard = ({
5 | userNumber,
6 | identityBackground,
7 | }: {
8 | userNumber: bigint;
9 | identityBackground: PreLoadImage;
10 | }): TemplateResult => {
11 | return html``;
23 | };
24 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/infoToast/index.ts:
--------------------------------------------------------------------------------
1 | import { DynamicKey } from "$lib/legacy/i18n";
2 | import { html } from "lit-html";
3 |
4 | export const infoToastTemplate = ({
5 | title,
6 | messages,
7 | }: {
8 | title: string | DynamicKey;
9 | messages: string[] | DynamicKey[];
10 | }) => html`
11 | ${title}
12 | ${messages.map(
13 | (message) =>
14 | html`${message}
`,
15 | )}
16 | `;
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/landingPage.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "title_1": "Safe. Private.",
4 | "title_2": "Decentralized.",
5 | "subtitle": "Pioneering passkey based identity since May 2021",
6 | "landing_title_1": "Manage your Internet Identity",
7 | "landing_title_2": "",
8 | "landing_subtitle": "Add, rename, remove passkeys"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/templates/loader.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/src/lib/templates/loader.png
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/analytics/webauthnAuthenticationFunnel.ts:
--------------------------------------------------------------------------------
1 | import { Funnel } from "./Funnel";
2 |
3 | /**
4 | * Webauthn Authorization flow events:
5 | *
6 | * start-webauthn-authentication (INIT)
7 | * failed-webauthn-authentication
8 | * cancelled-webauthn-authentication
9 | * successful-webauthn-authentication
10 | */
11 | export enum WebauthnAuthenticationEvents {
12 | Failed = "failed-webauthn-authentication",
13 | Cancelled = "cancelled-webauthn-authentication",
14 | Success = "successful-webauthn-authentication",
15 | }
16 |
17 | export const webauthnAuthenticationFunnel = new Funnel<
18 | typeof WebauthnAuthenticationEvents
19 | >("webauthn-authentication");
20 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/authentication/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./passkey";
2 | export * from "./jwt";
3 | export * from "./session";
4 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/authentication/session.ts:
--------------------------------------------------------------------------------
1 | import {
2 | DelegationChain,
3 | DelegationIdentity,
4 | ECDSAKeyIdentity,
5 | } from "@icp-sdk/core/identity";
6 | import { Session } from "$lib/stores/session.store";
7 |
8 | export const authenticateWithSession = async ({
9 | session,
10 | expiration = 30 * 60 * 1000,
11 | }: {
12 | session: Pick;
13 | expiration?: number;
14 | }): Promise => {
15 | const targetIdentity = await ECDSAKeyIdentity.generate({
16 | extractable: false,
17 | });
18 | const delegation = await DelegationChain.create(
19 | session.identity,
20 | targetIdentity.getPublicKey(),
21 | new Date(Date.now() + expiration),
22 | );
23 | return DelegationIdentity.fromDelegation(targetIdentity, delegation);
24 | };
25 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/authenticatorAttachment.ts:
--------------------------------------------------------------------------------
1 | import type { KeyType } from "$lib/generated/internet_identity_types";
2 |
3 | /**
4 | * Converts a WebAuthn authenticator attachment to an II key type
5 | */
6 | export function authenticatorAttachmentToKeyType(
7 | authenticatorAttachment: AuthenticatorAttachment | undefined,
8 | ): KeyType {
9 | if (authenticatorAttachment === "cross-platform") {
10 | return { cross_platform: null };
11 | } else if (authenticatorAttachment === "platform") {
12 | return { platform: null };
13 | } else {
14 | return { unknown: null };
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/featureDetection.ts:
--------------------------------------------------------------------------------
1 | import { features } from "$lib/legacy/features";
2 | import { isNullish } from "@dfinity/utils";
3 |
4 | export const supportsWebAuthn = (): boolean => {
5 | if (features.DUMMY_AUTH) {
6 | // do not check for webauthn compatibility if DUMMY_AUTH is enabled
7 | return true;
8 | }
9 |
10 | if (isNullish(window.PublicKeyCredential)) return false;
11 |
12 | return true;
13 | };
14 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/keyboard.utils.ts:
--------------------------------------------------------------------------------
1 | export const handleKeyPress = ({
2 | e: { code },
3 | callback,
4 | }: {
5 | e: KeyboardEvent;
6 | callback: () => void;
7 | }) => {
8 | if (!["Enter", "Space"].includes(code)) {
9 | return;
10 | }
11 |
12 | callback();
13 | };
14 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/preLoadImage.ts:
--------------------------------------------------------------------------------
1 | // A wrapper around HTMLImageElement, to trigger loading an image before before it's in the DOM.
2 | export class PreLoadImage {
3 | // The image element created in order for the browser to load the image.
4 | private img: HTMLImageElement;
5 |
6 | constructor(imageSrc: string) {
7 | const img = new Image();
8 | img.src = imageSrc; // Setting the src kicks off the fetching
9 | this.img = img;
10 | }
11 |
12 | // Return the same source as the one passed to the constructor.
13 | // By now, the image has been loaded by the browser.
14 | getSrc(): string {
15 | return this.img.src;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/userNumber.ts:
--------------------------------------------------------------------------------
1 | // We check that the user has entered a sequence of digits only,
2 | // before attempting to parse
3 | export const parseUserNumber = (s: string): bigint | null => {
4 | if (isUserNumber(s)) {
5 | try {
6 | return BigInt(s);
7 | } catch {
8 | return null;
9 | }
10 | } else {
11 | return null;
12 | }
13 | };
14 |
15 | // This makes sure `s` is a viable user number; naively using BigInt
16 | // on any string would also accept the following values, which are
17 | // _not_ valid user numbers:
18 | // - BigInt(whitespace) == 0
19 | // - Hex/Octal formatted numbers
20 | // - Scientific notation
21 | export const isUserNumber = (s: string): boolean => {
22 | return /^\d+$/.test(s);
23 | };
24 |
--------------------------------------------------------------------------------
/src/frontend/src/lib/utils/webAuthnErrorUtils.json:
--------------------------------------------------------------------------------
1 | {
2 | "en": {
3 | "duplicate_device_title": "Duplicate Passkey credential",
4 | "duplicate_device_message": "This Passkey has already been added to your Internet Identity. Try signing in directly.",
5 | "duplicate_device_detail": "Passkeys may be synchronized across devices automatically (e.g. Apple Passkeys) and do not need to be manually added to your Internet Identity.",
6 | "cancel_title": "Operation canceled",
7 | "cancel_message": "The interaction with your security device was canceled or timed out. Please try again."
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/+layout.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 | {@render children()}
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/+page.ts:
--------------------------------------------------------------------------------
1 | export const ssr = true;
2 | export const prerender = true;
3 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/authorize/(panel)/+page.ts:
--------------------------------------------------------------------------------
1 | import { get } from "svelte/store";
2 | import { lastUsedIdentitiesStore } from "$lib/stores/last-used-identities.store";
3 | import { redirect } from "@sveltejs/kit";
4 | import { nonNullish } from "@dfinity/utils";
5 | import { PageLoad } from "./$types";
6 |
7 | let firstVisit = true;
8 |
9 | export const load: PageLoad = ({ url }) => {
10 | const lastUsedIdentityAvailable = nonNullish(
11 | get(lastUsedIdentitiesStore).selected,
12 | );
13 |
14 | if (firstVisit) {
15 | firstVisit = false;
16 |
17 | if (lastUsedIdentityAvailable) {
18 | // Copy and modify URL path to retain other data e.g. search params
19 | const next = new URL(url);
20 | next.pathname = "/authorize/continue";
21 | throw redirect(307, next);
22 | }
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/authorize/+layout.ts:
--------------------------------------------------------------------------------
1 | import { LayoutLoad } from "./$types";
2 |
3 | export const load: LayoutLoad = ({ url }) => {
4 | return {
5 | legacyProtocol: url.searchParams.has("legacyProtocol"),
6 | };
7 | };
8 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/authorize/upgrade-success/+layout.ts:
--------------------------------------------------------------------------------
1 | import type { LayoutLoad } from "./$types";
2 | import { redirect } from "@sveltejs/kit";
3 | import { get } from "svelte/store";
4 | import { isAuthenticatedStore } from "$lib/stores/authentication.store";
5 |
6 | export const load: LayoutLoad = () => {
7 | // Go back to /authorize if not authenticated
8 | if (!get(isAuthenticatedStore)) {
9 | throw redirect(307, "/authorize");
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/direct-authorize-protocol/+page.ts:
--------------------------------------------------------------------------------
1 | import { redirect } from "@sveltejs/kit";
2 | import { canisterConfig } from "$lib/globals";
3 | import { isNullish, nonNullish } from "@dfinity/utils";
4 | import { PageLoad } from "./$types";
5 |
6 | export const load: PageLoad = ({ url }) => {
7 | const openid = url.searchParams.get("openid");
8 | const config = canisterConfig.openid_configs[0]?.find(
9 | (config) =>
10 | nonNullish(openid) && config.name.toLowerCase() === openid.toLowerCase(),
11 | );
12 | if (isNullish(config)) {
13 | // If OpenID config can't be found, fallback to ICRC-29 authorization flow
14 | throw redirect(307, "/authorize");
15 | }
16 | return { config };
17 | };
18 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/legacy-authorize-protocol/+page.ts:
--------------------------------------------------------------------------------
1 | import { redirect } from "@sveltejs/kit";
2 |
3 | export const load = () => {
4 | throw redirect(307, "/authorize?legacyProtocol");
5 | };
6 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/login/+page.ts:
--------------------------------------------------------------------------------
1 | import type { PageLoad } from "./$types";
2 |
3 | export const load: PageLoad = ({ url }) => {
4 | return { next: url.searchParams.get("next") };
5 | };
6 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/(new-styling)/manage/(authenticated)/+page.ts:
--------------------------------------------------------------------------------
1 | import type { PageLoad } from "./$types";
2 |
3 | export const load: PageLoad = ({ url }) => {
4 | return { pendingRegistrationId: url.searchParams.get("activate") };
5 | };
6 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/+layout.ts:
--------------------------------------------------------------------------------
1 | export const ssr = false;
2 | export const prerender = true;
3 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/faq/+page.ts:
--------------------------------------------------------------------------------
1 | import { redirect } from "@sveltejs/kit";
2 | import type { PageLoad } from "./$types";
3 |
4 | export const load: PageLoad = () => {
5 | // Redirect FAQ to external support site using SvelteKit's redirect
6 | throw redirect(307, "https://identitysupport.dfinity.org/hc/en-us");
7 | };
8 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/iframe/webauthn/+page.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/frontend/src/routes/vc-flow/index/+page.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/frontend/static/faq.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 | Internet Identity
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/frontend/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/static/favicon.ico
--------------------------------------------------------------------------------
/src/frontend/static/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
3 | Sitemap: https://id.ai/sitemap.xml
4 |
--------------------------------------------------------------------------------
/src/frontend/static/sitemap.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 | https://id.ai/
11 | weekly
12 | 1.0
13 |
14 |
15 | https://id.ai/login/
16 | weekly
17 | 0.7
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/frontend/static/social-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/frontend/static/social-image.png
--------------------------------------------------------------------------------
/src/frontend/types/borc.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable @typescript-eslint/no-explicit-any */
2 | /**
3 | * Copied from agent-js package along WebAuthnIdentity.
4 | *
5 | * This can be removed once we import `WebAuthnIdentity` from agent-js again.
6 | */
7 | declare module "borc" {
8 | class Decoder {
9 | constructor(opts: {
10 | size: number;
11 | tags: Record any>;
12 | });
13 |
14 | decodeFirst(input: ArrayBuffer): any;
15 | }
16 |
17 | export function decodeFirst(input: ArrayBuffer): any;
18 |
19 | export function encode(o: any): Uint8Array;
20 |
21 | class Tagged {
22 | tag: number;
23 | value: any;
24 | constructor(tag: number, value: any);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/frontend/types/index.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace globalThis {
2 | void any;
3 | }
4 |
5 | declare module "kjua";
6 | declare module "biguintle";
7 | declare module "borc";
8 |
--------------------------------------------------------------------------------
/src/internet_identity/src/conversions.rs:
--------------------------------------------------------------------------------
1 | //! A module to provide type conversions between internal and external types.
2 |
3 | /// Type conversion for internal error types to exposed API errors.
4 | mod api_errors;
5 |
--------------------------------------------------------------------------------
/src/internet_identity/src/lib.rs:
--------------------------------------------------------------------------------
1 | /// A small module that makes get_random work on wasm32-unknown-unknown.
2 | /// The dependency on get_random comes from the captcha library.
3 | #[cfg(all(
4 | target_arch = "wasm32",
5 | target_vendor = "unknown",
6 | target_os = "unknown"
7 | ))]
8 | mod wasm_get_random;
9 |
--------------------------------------------------------------------------------
/src/internet_identity/src/stats.rs:
--------------------------------------------------------------------------------
1 | /// Coarse-grained activity statistics for the Internet Identity.
2 | /// These stats are deduplicated by identity, based on the last usage timestamp.
3 | pub mod activity_stats;
4 |
5 | /// Fine-grained statistics for the Internet Identity.
6 | /// These stats track single events. In order to not keep any privacy-sensitive data in the stats,
7 | /// the individual events cannot be attributed to specific identities. As such they are not
8 | /// deduplicated and multiple actions by the same identity will be counted multiple times.
9 | pub mod event_stats;
10 |
--------------------------------------------------------------------------------
/src/internet_identity/src/storage/storable.rs:
--------------------------------------------------------------------------------
1 | pub mod account;
2 | pub mod account_number;
3 | pub mod account_reference;
4 | pub mod account_reference_list;
5 | pub mod accounts_counter;
6 | pub mod anchor;
7 | pub mod anchor_application_config;
8 | pub mod anchor_number;
9 | pub mod anchor_number_list;
10 | pub mod application;
11 | pub mod application_number;
12 | pub mod credential_id;
13 | pub mod discrepancy_counter;
14 | pub mod fixed_anchor;
15 | pub mod metadata_v2;
16 | pub mod openid_credential;
17 | pub mod openid_credential_key;
18 | pub mod storable_persistent_state;
19 |
--------------------------------------------------------------------------------
/src/internet_identity/src/storage/storable/account_number.rs:
--------------------------------------------------------------------------------
1 | pub type StorableAccountNumber = u64;
2 |
--------------------------------------------------------------------------------
/src/internet_identity/src/storage/storable/anchor_number.rs:
--------------------------------------------------------------------------------
1 | pub type StorableAnchorNumber = u64;
2 |
--------------------------------------------------------------------------------
/src/internet_identity/src/storage/storable/application_number.rs:
--------------------------------------------------------------------------------
1 | pub type StorableApplicationNumber = u64;
2 |
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/buffered_archive_entries_v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/buffered_archive_entries_v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/genesis-layout-migrated-to-v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/genesis-layout-migrated-to-v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/genesis-memory-layout.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/genesis-memory-layout.bin
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/multiple-recovery-phrases-v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/multiple-recovery-phrases-v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/persistent_state_archive_v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/persistent_state_archive_v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/persistent_state_no_archive_v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/persistent_state_no_archive_v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/stable_memory/stats_incident_v9.bin.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/internet_identity/stable_memory/stats_incident_v9.bin.gz
--------------------------------------------------------------------------------
/src/internet_identity/tests/README.md:
--------------------------------------------------------------------------------
1 | # Internet Identity Tests
2 |
3 | This is a test suite for the Internet Identity canister. To run the tests:
4 |
5 | ```bash
6 | ./scripts/test-canisters.sh -p internet_identity
7 | ```
8 |
9 | _NOTE: you can also run the tests with `cargo test -p internet_identity --release` which takes much longer to build, but the tests are then orders of magnitude faster._
10 |
--------------------------------------------------------------------------------
/src/internet_identity/tests/integration/activity_stats/mod.rs:
--------------------------------------------------------------------------------
1 | //! Module for activity statistics
2 |
3 | /// Tests for the general (domain independent) active anchor statistics
4 | mod all_domains;
5 |
6 | /// Tests for the active anchor statistics that are specific to the II domains.
7 | mod ii_domains;
8 |
9 | /// Tests for the active authn method statistics on the II domains.
10 | mod authn_methods;
11 |
--------------------------------------------------------------------------------
/src/internet_identity/tests/integration/anchor_management/mod.rs:
--------------------------------------------------------------------------------
1 | //! Tests for the anchor management functionality of the Internet Identity.
2 |
3 | mod device_management;
4 | mod last_usage_timestamp;
5 | mod registration;
6 | mod remote_device_registration;
7 |
--------------------------------------------------------------------------------
/src/internet_identity/tests/integration/config.rs:
--------------------------------------------------------------------------------
1 | mod analytics_config;
2 | mod archive_config;
3 | mod assigned_user_number_range;
4 | mod canister_creation_cycles_cost;
5 | mod captcha_config;
6 | mod enable_dapps_explorer;
7 | mod fetch_root_key;
8 | mod new_flow_origins;
9 | mod openid_configs;
10 | mod openid_google;
11 | mod register_rate_limit;
12 | mod related_origins;
13 |
--------------------------------------------------------------------------------
/src/internet_identity/tests/integration/main.rs:
--------------------------------------------------------------------------------
1 | //! Having a single integration test binary has advantages:
2 | //! - It's faster to compile.
3 | //! - All tests are run in parallel by default.
4 | //!
5 | //! See https://matklad.github.io/2021/02/27/delete-cargo-integration-tests.html#Implications for more details.
6 |
7 | mod accounts;
8 | mod activity_stats;
9 | mod aggregation_stats;
10 | mod anchor_management;
11 | mod archive_integration;
12 | mod config;
13 | mod delegation;
14 | mod google;
15 | mod http;
16 | mod openid;
17 | mod rollback;
18 | mod stable_memory;
19 | mod upgrade;
20 | mod v2_api;
21 | mod vc_mvp;
22 |
--------------------------------------------------------------------------------
/src/internet_identity/tests/integration/v2_api/mod.rs:
--------------------------------------------------------------------------------
1 | mod authn_method_add;
2 | mod authn_method_metadata;
3 | mod authn_method_registration;
4 | mod authn_method_remove;
5 | mod authn_method_replace;
6 | mod authn_method_security_settings;
7 | mod authn_method_session_registration;
8 | pub mod authn_method_test_helpers;
9 | mod identity_authn_info;
10 | mod identity_info;
11 | mod identity_metadata;
12 | mod identity_properties;
13 | mod identity_register;
14 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "internet_identity_interface"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7 |
8 | [dependencies]
9 | serde_bytes.workspace = true
10 | candid.workspace = true
11 | serde.workspace = true
12 | ic-cdk.workspace = true
13 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/src/archive.rs:
--------------------------------------------------------------------------------
1 | /// II archive types compatible on the candid interface.
2 | /// The compatibility is maintained manually.
3 | /// Once the support for generating rust types from candid is improved (see https://github.com/dfinity/candid/issues/255)
4 | /// this module will be generated from the candid interface.
5 | pub mod types;
6 |
7 | /// Helpful data conversions for the types.
8 | pub mod conversions;
9 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/src/archive/conversions.rs:
--------------------------------------------------------------------------------
1 | use crate::archive::types::DeviceDataWithoutAlias;
2 | use crate::internet_identity::types::DeviceData;
3 |
4 | impl From for DeviceDataWithoutAlias {
5 | fn from(device_data: DeviceData) -> Self {
6 | Self {
7 | pubkey: device_data.pubkey,
8 | credential_id: device_data.credential_id,
9 | purpose: device_data.purpose,
10 | key_type: device_data.key_type,
11 | protection: device_data.protection,
12 | origin: device_data.origin,
13 | metadata_keys: device_data
14 | .metadata
15 | .as_ref()
16 | .map(|m| m.keys().cloned().collect()),
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/src/internet_identity.rs:
--------------------------------------------------------------------------------
1 | /// Internet Identity types compatible on the candid interface.
2 | /// The compatibility is maintained manually.
3 | /// Once the support for generating rust types from candid is improved (see https://github.com/dfinity/candid/issues/255)
4 | /// this module will be generated from the candid interface.
5 | pub mod types;
6 |
7 | /// Helpful data conversions for the types.
8 | pub mod conversions;
9 |
10 | /// Helpful implementations on the authentication method data type.
11 | pub mod authn_method;
12 | /// Helpful implementations on the device data type.
13 | pub mod device_data;
14 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/src/internet_identity/device_data.rs:
--------------------------------------------------------------------------------
1 | use crate::internet_identity::types::{DeviceData, DeviceProtection, KeyType, Purpose};
2 | use candid::Principal;
3 | use serde_bytes::ByteBuf;
4 |
5 | impl DeviceData {
6 | pub fn principal(&self) -> Principal {
7 | Principal::self_authenticating(&self.pubkey)
8 | }
9 |
10 | /// Creates a new device that can be used for test purposes.
11 | pub fn auth_test_device() -> Self {
12 | Self {
13 | pubkey: ByteBuf::from([0; 32]),
14 | alias: "test device".to_string(),
15 | credential_id: None,
16 | purpose: Purpose::Authentication,
17 | key_type: KeyType::Unknown,
18 | protection: DeviceProtection::Unprotected,
19 | origin: None,
20 | metadata: None,
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/internet_identity_interface/src/lib.rs:
--------------------------------------------------------------------------------
1 | /// types related to the archive
2 | pub mod archive;
3 | /// types as specified by the HTTP gateway protocol.
4 | /// See https://internetcomputer.org/docs/current/references/ic-interface-spec/#http-gateway
5 | pub mod http_gateway;
6 | /// types and implementations related to Internet Identity
7 | pub mod internet_identity;
8 |
--------------------------------------------------------------------------------
/src/lingui-svelte/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./extractor";
2 | export * from "./preprocessor";
3 |
--------------------------------------------------------------------------------
/src/showcase/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": { "project": ["./tsconfig.json"] }
3 | }
4 |
--------------------------------------------------------------------------------
/src/showcase/.gitignore:
--------------------------------------------------------------------------------
1 | # build output
2 | dist/
3 |
4 | # generated types
5 | .astro/
6 | src/env.d.ts
7 |
8 | # dependencies
9 | node_modules/
10 |
11 | # logs
12 | npm-debug.log*
13 | yarn-debug.log*
14 | yarn-error.log*
15 | pnpm-debug.log*
16 |
17 | # environment variables
18 | .env
19 | .env.production
20 |
21 | # macOS-specific files
22 | .DS_Store
23 |
--------------------------------------------------------------------------------
/src/showcase/src/components/lit.ts:
--------------------------------------------------------------------------------
1 | import { TemplateResult, html, render } from "lit-html";
2 |
3 | /** A wrapper for lit-html components, so that they can be used
4 | * as webcomponents.
5 | *
6 | * To create a component, make the new class extend LitComponent and define the render() method
7 | * to return a TemplateResult.
8 | *
9 | * Then, add it to the browser's custom elements (customElements.define("my-com", ClassExtendingThis))
10 | */
11 | export class LitComponent extends HTMLElement {
12 | constructor() {
13 | super();
14 | render(this.render(), this);
15 | }
16 |
17 | render(): TemplateResult {
18 | return html`Nothing to show`;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/showcase/src/i18n.ts:
--------------------------------------------------------------------------------
1 | import { I18n } from "$lib/utils/i18n";
2 |
3 | export const i18n = new I18n("en");
4 |
--------------------------------------------------------------------------------
/src/showcase/src/layouts/Layout.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | title: string;
4 | }
5 |
6 | const { title }: { title: string } = Astro.props;
7 | ---
8 |
9 |
10 |
11 |
12 |
13 |
14 | II - {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/showcase/src/layouts/Screen.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from "../layouts/Layout.astro";
3 |
4 | type Props = {
5 | title: string;
6 | pageName: string;
7 | // This means that the children prop is required
8 | // https://docs.astro.build/en/guides/typescript/#common-prop-type-patterns
9 | children: any;
10 | }
11 |
12 | const { title, pageName } = Astro.props;
13 | ---
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/404.astro:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 |
5 |
14 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/abortedCredentialsInternalError.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addDeviceSuccess.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addDeviceSuccessStepper.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
21 |
22 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addDeviceWarningOnePasskey.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addDeviceWarningOnlyPin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addPhrase.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/addPhraseWarning.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/allowCredentials.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
22 |
23 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/allowCredentialsLongOrigins.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
22 |
23 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/allowCredentialsNoAnchor.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
21 |
22 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeNew.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeNewAlt.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeNewKnown.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeNewKnownAlt.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizePick.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizePickMany.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
21 |
22 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeUseExisting.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeUseExistingKnown.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/authorizeUseExistingKnownAlt.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/banner.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/compatibilityNotice.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/components/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | const allComponents = await Astro.glob("./*.astro");
3 | ---
4 |
5 |
6 |
7 | II - Components
8 |
9 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/components/pick-anchor.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from "../../layouts/Layout.astro";
3 | import PickAnchor from "../../components/PickAnchor.astro";
4 | ---
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/components/pin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from "../../layouts/Layout.astro";
3 | import ChoosePin from "../../components/ChoosePin.astro";
4 | ---
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/components/toasts.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from "../../layouts/Layout.astro";
3 | import ToastExample from "../../components/ToastExample.astro";
4 | ---
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/confirmPin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/confirmSeedPhrase.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
23 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/dappsExplorer.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
14 |
15 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/deviceRegistrationDisabledInfo.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/displayError.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
16 |
17 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/displaySeedPhrase.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
22 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/displayUserNumber.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
21 |
22 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/flows/[flow].astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Layout from "../../layouts/Layout.astro";
3 |
4 | export const iiFlowNames = ["loginManage", "register", "registerWithPin"];
5 | export function getStaticPaths() {
6 | return iiFlowNames.map((flow) => ({ params: { flow } }));
7 | }
8 |
9 | const { flow } = Astro.params;
10 | ---
11 |
12 |
13 |
14 |
15 |
25 |
26 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/flows/index.astro:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/forgotNumber.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/loader.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
12 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/loaderTakingForever.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
12 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/manageNew.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
15 |
16 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/managePick.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/managePickMany.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/manageUseExisting.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/pinInfo.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/pollForTentativeDevicePage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
24 |
25 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/promptDeviceAlias.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
18 |
19 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/promptDeviceTrusted.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/promptRecovery.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/promptUserNumber.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/protectDeviceInfo.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/recoverWithDevice.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
15 |
16 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/recoverWithPhrase.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
22 |
23 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/registerCurrentDeviceCurrentOrigin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
19 |
20 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/registerDisabled.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/resetPhraseInfo.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/savePasskey.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
20 |
21 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/savePasskeyWithPin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
24 |
25 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/setPin.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/showMessage.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
13 |
14 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/showSpinner.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
13 |
14 |
--------------------------------------------------------------------------------
/src/showcase/src/pages/unprotectDeviceInfo.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Screen from "../layouts/Screen.astro";
3 | ---
4 |
5 |
6 |
17 |
18 |
--------------------------------------------------------------------------------
/src/showcase/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["../frontend/src", "src"],
4 | "compilerOptions": {
5 | "baseUrl": "../..",
6 | "paths": {
7 | "$lib/*": ["src/frontend/src/lib/*"]
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/sig-verifier-js/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "sig_verifier_js"
3 | description = "JavaScript Wasm wrapper for verifying signatures"
4 | version = "1.0.0"
5 | edition = "2021"
6 |
7 | [lib]
8 | crate-type = ["cdylib", "rlib"]
9 |
10 | [dependencies]
11 | ic-canister-sig-creation.workspace = true
12 | ic-signature-verification = "0.2"
13 | candid.workspace = true
14 | hex = { version = "0.4", features = ["serde"] }
15 | serde = { version = "1.0", features = ["derive"] }
16 | serde_json = { version = "1.0", features = ["std"] }
17 | wasm-bindgen = "0.2"
18 |
19 | [dev-dependencies]
20 | assert_matches = "1.5"
21 |
22 | [lints.rust]
23 | # Needed to solve a clippy issue with `#[wasm_bindgen(js_name = validateDelegationAndGetPrincipal)]`
24 | unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wasm_bindgen_unstable_test_coverage)'] }
25 |
--------------------------------------------------------------------------------
/src/sig-verifier-js/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "include": ["vitests.config.ts", "tests.ts"],
4 | "compilerOptions": {
5 | "outDir": "./dist",
6 | "composite": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/sig-verifier-js/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { UserConfig } from "vite";
2 | import wasm from "vite-plugin-wasm";
3 | import { defineConfig } from "vitest/config";
4 |
5 | export default defineConfig(
6 | ({ mode }: UserConfig): UserConfig => ({
7 | plugins: [wasm()],
8 | test: {
9 | environment: "node",
10 | include: "./tests.ts",
11 | globals: true /* globals like 'test' and 'describe' */,
12 | watch: false,
13 | },
14 | }),
15 | );
16 |
--------------------------------------------------------------------------------
/src/test_openid_provider/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test_openid_provider",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node ./index.js"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/dfinity/internet-identity"
12 | },
13 | "type": "module",
14 | "devDependencies": {
15 | "oidc-provider": "^9.4.2",
16 | "express": "^5.1.0"
17 | },
18 | "private": true
19 | }
20 |
--------------------------------------------------------------------------------
/src/try-ii/.gitignore:
--------------------------------------------------------------------------------
1 | # Various IDEs and Editors
2 | .vscode/
3 | .idea/
4 | **/*~
5 |
6 | # Mac OSX temporary files
7 | .DS_Store
8 | **/.DS_Store
9 |
10 | # dfx temporary files
11 | .dfx/
12 |
13 | # generated files
14 | **/declarations/
15 |
16 | # rust
17 | target/
18 |
19 | # frontend code
20 | node_modules/
21 | dist/
22 | .svelte-kit/
23 |
24 | # environment variables
25 | .env
26 |
--------------------------------------------------------------------------------
/src/try-ii/Cargo.toml:
--------------------------------------------------------------------------------
1 | [workspace]
2 | members = [
3 | "src/try-ii-backend"
4 | ]
5 | resolver = "2"
6 |
--------------------------------------------------------------------------------
/src/try-ii/canister_ids.json:
--------------------------------------------------------------------------------
1 | {
2 | "try-ii-frontend": {
3 | "ic": "5d2zc-diaaa-aaaad-aaoeq-cai"
4 | }
5 | }
--------------------------------------------------------------------------------
/src/try-ii/dfx.example.json:
--------------------------------------------------------------------------------
1 | {
2 | "canisters": {
3 | "try-ii-frontend": {
4 | "source": ["src/try-ii-frontend/dist"],
5 | "type": "assets",
6 | "workspace": "try-ii-frontend"
7 | }
8 | },
9 | "defaults": {
10 | "build": {
11 | "args": "",
12 | "packtool": ""
13 | }
14 | },
15 | "output_env_file": ".env",
16 | "version": 1
17 | }
18 |
--------------------------------------------------------------------------------
/src/try-ii/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "engines": {
3 | "node": ">=16.0.0",
4 | "npm": ">=7.0.0"
5 | },
6 | "name": "try-ii",
7 | "scripts": {
8 | "build": "npm run build --workspaces --if-present",
9 | "prebuild": "npm run prebuild --workspaces --if-present",
10 | "pretest": "npm run prebuild --workspaces --if-present",
11 | "dev": "npm run dev --workspaces --if-present",
12 | "start": "npm start --workspaces --if-present",
13 | "test": "npm test --workspaces --if-present"
14 | },
15 | "type": "module",
16 | "workspaces": [
17 | "src/try-ii-frontend"
18 | ],
19 | "dependencies": {}
20 | }
21 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://kit.svelte.dev/docs/types#app
2 | // for information about these interfaces
3 | declare global {
4 | namespace App {
5 | // interface Error {}
6 | // interface Locals {}
7 | // interface PageData {}
8 | // interface Platform {}
9 | }
10 | }
11 |
12 | export {};
13 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Internet Identity v2
8 | %sveltekit.head%
9 |
10 |
11 |
12 | %sveltekit.body%
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/components/Footer.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
22 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/components/Header.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
22 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/components/utils/Toaster.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 | {#each api.getToasts() as toast, index (toast.id)}
18 |
19 | {/each}
20 |
21 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/components/utils/toaster.ts:
--------------------------------------------------------------------------------
1 | import * as toast from "@zag-js/toast";
2 |
3 | export const toaster = toast.createStore({
4 | placement: "top-end",
5 | overlap: false,
6 | });
7 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/config.ts:
--------------------------------------------------------------------------------
1 | // Default support page URL
2 | export const SUPPORT_URL = "https://identitysupport.dfinity.org";
3 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/lib/state/identity.ts:
--------------------------------------------------------------------------------
1 | import { SignIdentity } from "@icp-sdk/core/agent";
2 | import { Ed25519KeyIdentity, type DelegationIdentity } from "@icp-sdk/core/identity";
3 | import { writable } from "svelte/store";
4 |
5 | export let identity = writable(undefined);
6 | export let localIdentity = writable(
7 | Ed25519KeyIdentity.generate()
8 | );
9 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/routes/+layout.js:
--------------------------------------------------------------------------------
1 | export const prerender = true;
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/static/.well-known/ic-domains:
--------------------------------------------------------------------------------
1 | try.id.ai
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dfinity/internet-identity/33b73956f38b41e5ee6c53d26871c7d375f226ef/src/try-ii/src/try-ii-frontend/static/favicon.ico
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-static';
2 |
3 | /** @type {import('@sveltejs/kit').Config} */
4 | const config = {
5 | kit: {
6 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
7 | // If your environment is not supported or you settled on a specific environment, switch out the adapter.
8 | // See https://kit.svelte.dev/docs/adapters for more information about adapters.
9 | adapter: adapter({
10 | pages: 'dist',
11 | assets: 'dist',
12 | fallback: undefined,
13 | precompress: false,
14 | strict: true,
15 | }),
16 | },
17 | };
18 |
19 | export default config;
20 |
--------------------------------------------------------------------------------
/src/try-ii/src/try-ii-frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "target": "ESNext",
5 | "useDefineForClassFields": true,
6 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
7 | "allowJs": false,
8 | "skipLibCheck": true,
9 | "esModuleInterop": false,
10 | "allowSyntheticDefaultImports": true,
11 | "strict": true,
12 | "forceConsistentCasingInFileNames": true,
13 | "module": "ESNext",
14 | "moduleResolution": "Node",
15 | "resolveJsonModule": true,
16 | "isolatedModules": true,
17 | "noEmit": true,
18 | "jsx": "react-jsx",
19 | "types": ["vite/client"]
20 | },
21 | "include": ["src"]
22 | }
23 |
--------------------------------------------------------------------------------
/src/try-ii/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "target": "ES2020",
5 | "experimentalDecorators": true,
6 | "strictPropertyInitialization": false,
7 | "moduleResolution": "node",
8 | "allowJs": true,
9 | "outDir": "HACK_BECAUSE_OF_ALLOW_JS"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/vc-api/README.md:
--------------------------------------------------------------------------------
1 | # VC Issuer API
2 |
3 | A small TypeScript library with type & [zod](https://zod.dev) definitions for the [issuer API](../../demos/vc_issuer/README.md).
4 |
5 | ## Usage
6 |
7 | Build from the root directory:
8 |
9 | ```bash
10 | $ npm run --workspace ./src/vc-api build
11 | ```
12 |
--------------------------------------------------------------------------------
/src/vc-api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@dfinity/internet-identity-vc-api",
3 | "main": "dist/index.js",
4 | "scripts": {
5 | "build": "tsc --build",
6 | "check": "tsc --noEmit",
7 | "postinstall": "npm run build"
8 | },
9 | "license": "SEE LICENSE IN LICENSE.md",
10 | "dependencies": {
11 | "zod": "*",
12 | "@dfinity/principal": "*",
13 | "@dfinity/utils": "*"
14 | },
15 | "devDependencies": {
16 | "typescript": "*"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/vc-api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "rootDir": "./src",
6 | "outDir": "./dist",
7 | "composite": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/vite-plugins/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.base.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "rootDir": "./src",
6 | "outDir": "./dist",
7 | "composite": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tsconfig.all.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["src/frontend"],
4 | "exclude": ["src/frontend/src/lib/generated/*"],
5 | "references": [
6 | {
7 | "path": "./src/vc-api"
8 | },
9 | {
10 | "path": "./src/sig-verifier-js"
11 | },
12 | {
13 | "path": "./demos/test-app"
14 | },
15 | {
16 | "path": "./demos/vc_issuer"
17 | },
18 | {
19 | "path": "./src/vite-plugins"
20 | }
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/tsconfig.base.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": ["src/showcase", "src/frontend"],
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": false,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "lib": ["ES2021", "DOM"],
9 | "module": "esnext",
10 | "strict": true,
11 | "target": "es2018",
12 | "skipLibCheck": true,
13 | "allowSyntheticDefaultImports": true,
14 | "noFallthroughCasesInSwitch": true,
15 | "moduleResolution": "bundler",
16 | "resolveJsonModule": true,
17 | "isolatedModules": true,
18 | "verbatimModuleSyntax": false,
19 | "types": ["node", "vite/client", "vitest/globals"]
20 | },
21 | "exclude": ["src/frontend/src/lib/generated/*"]
22 | }
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["./.svelte-kit/tsconfig.json", "./tsconfig.base.json"]
3 | }
4 |
--------------------------------------------------------------------------------