├── .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 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /src/frontend/src/lib/components/icons/PulsatingCircleIcon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 30 | -------------------------------------------------------------------------------- /src/frontend/src/lib/components/illustrations/MigrationIllustration.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | -------------------------------------------------------------------------------- /src/frontend/src/lib/components/illustrations/MigrationSuccessIllustration.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 10 | 11 |
12 | -------------------------------------------------------------------------------- /src/frontend/src/lib/components/layout/LandingHeader.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
16 |
17 | 18 |

19 | Internet Identity 20 |

21 |
22 | {@render children?.()} 23 |
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 |
9 | 10 |
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 |
9 | 10 |
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`
12 | 13 |

Internet Identity:

14 | ${userNumber} 22 |
`; 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 |
17 |
© Internet Identity
18 | 21 |
22 | -------------------------------------------------------------------------------- /src/try-ii/src/try-ii-frontend/src/lib/components/Header.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
14 | 15 |
16 | 17 |

18 | Internet Identity 19 |

20 |
21 |
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 | --------------------------------------------------------------------------------