| -rw-r--r-- | LICENSE | 190L |
| -rw-r--r-- | README.md | 25L |
| -rw-r--r-- | admins.json | 3L |
| -rw-r--r-- | clients.json | 9L |
| -rw-r--r-- | deno.jsonc | 32L |
| -rw-r--r-- | deno.lock | 784L |
| -rw-r--r-- | docs/.gitignore | 3L |
| -rw-r--r-- | docs/build/defense.pdf | 14061629B |
| -rw-r--r-- | docs/build/thesis.pdf | 10715883B |
| -rw-r--r-- | docs/contents/1.introduction.tex | 157L |
| -rw-r--r-- | docs/contents/2.architecture.tex | 64L |
| -rw-r--r-- | docs/contents/3.security.tex | 102L |
| -rw-r--r-- | docs/contents/4.design.tex | 72L |
| -rw-r--r-- | docs/contents/5.testing.tex | 68L |
| -rw-r--r-- | docs/contents/6.results.tex | 15L |
| -rw-r--r-- | docs/contents/7.conclusion.tex | 17L |
| -rw-r--r-- | docs/contents/_abstract.tex | 17L |
| -rw-r--r-- | docs/contents/_acknowledgement.tex | 17L |
| -rw-r--r-- | docs/contents/_glossary.tex | 60L |
| -rw-r--r-- | docs/contents/appendix-user-manual.tex | 156L |
| -rw-r--r-- | docs/defense.ltx | 324L |
| -rw-r--r-- | docs/figures/DiamondTesting.png | 63917B |
| -rw-r--r-- | docs/figures/authorize-process.pdf | 20677B |
| -rw-r--r-- | docs/figures/connection-process.pdf | 23771B |
| -rw-r--r-- | docs/figures/design.drawio | 67L |
| -rw-r--r-- | docs/figures/ekyc-process.pdf | 25068B |
| -rw-r--r-- | docs/figures/ekyc.png | 2803561B |
| -rw-r--r-- | docs/figures/face-challenge.png | 4549680B |
| -rw-r--r-- | docs/figures/id-doc-ekyc-doc-back.png | 354659B |
| -rw-r--r-- | docs/figures/id-doc-ekyc-doc-front.png | 419240B |
| -rw-r--r-- | docs/figures/id-doc-ekyc-face-front.png | 411131B |
| -rw-r--r-- | docs/figures/id-doc-ekyc-face-left.png | 410072B |
| -rw-r--r-- | docs/figures/id-doc-ekyc-face-right.png | 402269B |
| -rw-r--r-- | docs/figures/kyc-exemple-alcohol.png | 2512603B |
| -rw-r--r-- | docs/figures/kyc-exemple-aviation.png | 2374569B |
| -rw-r--r-- | docs/figures/kyc-exemple-casino.png | 2326743B |
| -rw-r--r-- | docs/figures/mrz.png | 322092B |
| -rw-r--r-- | docs/figures/oauth2-example.pdf | 65464B |
| -rw-r--r-- | docs/figures/oauth2-flow.pdf | 105189B |
| -rw-r--r-- | docs/figures/old/DepositWithKYC.bpmn | 2047L |
| -rw-r--r-- | docs/figures/old/DomainModel.mocodo.net | 20L |
| -rw-r--r-- | docs/figures/old/DomainModel.svg | 260L |
| -rw-r--r-- | docs/figures/old/context-map.drawio.svg | 4L |
| -rw-r--r-- | docs/figures/old/context-map.png | 36088B |
| -rw-r--r-- | docs/figures/old/detail-context-map.png | 151629B |
| -rw-r--r-- | docs/figures/old/general-taler-working.png | 35898B |
| -rw-r--r-- | docs/figures/old/seq.mermaid | 32L |
| -rw-r--r-- | docs/figures/old/toplevel-architecture.png | 118918B |
| -rw-r--r-- | docs/figures/old/wallpaper.png | 1495547B |
| -rw-r--r-- | docs/figures/phone-ekyc-process.pdf | 11074B |
| -rw-r--r-- | docs/figures/phone-ekyc-step-1.png | 29934B |
| -rw-r--r-- | docs/figures/phone-ekyc-step-2.png | 37937B |
| -rw-r--r-- | docs/figures/phone-ekyc-step-3.png | 37388B |
| -rw-r--r-- | docs/figures/phone-ekyc-steps.png | 254895B |
| -rw-r--r-- | docs/figures/phone-ekyc.pdf | 388563B |
| -rw-r--r-- | docs/figures/project-arch.drawio | 886L |
| -rw-r--r-- | docs/figures/sigdoydy1.jpeg | 15732B |
| -rw-r--r-- | docs/figures/software-layer.pdf | 98306B |
| -rw-r--r-- | docs/figures/strategical-vs-tactical.pdf | 29321B |
| -rw-r--r-- | docs/figures/system.pdf | 423292B |
| -rw-r--r-- | docs/figures/tdd-cycle.pdf | 10018B |
| -rw-r--r-- | docs/figures/toplevel-sequence.pdf | 376239B |
| -rw-r--r-- | docs/figures/toplevel.pdf | 359357B |
| -rw-r--r-- | docs/figures/wallpaper.png | 1262007B |
| -rw-r--r-- | docs/references.bib | 87L |
| -rw-r--r-- | docs/thesis.ltx | 170L |
| -rw-r--r-- | flake.lock | 26L |
| -rw-r--r-- | flake.nix | 72L |
| -rw-r--r-- | media/book.pdf | 310470B |
| -rw-r--r-- | media/demo.php | 92L |
| -rw-r--r-- | media/poster.pdf | 1117388B |
| -rw-r--r-- | media/poster.pptx | 5384807B |
| -rw-r--r-- | media/presentation.pptx | 8626228B |
| -rw-r--r-- | media/video.mp4 | 87134631B |
| -rw-r--r-- | media/video.pptx | 7640412B |
| -rw-r--r-- | nessie.config.ts | 16L |
| -rw-r--r-- | planning.xlsx | 15541B |
| -rw-r--r-- | src/core/application/authn/auth_repository.ts | 11L |
| -rw-r--r-- | src/core/application/authn/email_challenge.ts | 56L |
| -rw-r--r-- | src/core/application/authn/exists.ts | 44L |
| -rw-r--r-- | src/core/application/authn/login.ts | 45L |
| -rw-r--r-- | src/core/application/authn/logout.ts | 29L |
| -rw-r--r-- | src/core/application/authn/register.ts | 51L |
| -rw-r--r-- | src/core/application/authn/session.ts | 44L |
| -rw-r--r-- | src/core/application/authn/verify_email.ts | 47L |
| -rw-r--r-- | src/core/application/customer_info.ts | 26L |
| -rw-r--r-- | src/core/application/id_document/admin_repository.ts | 6L |
| -rw-r--r-- | src/core/application/id_document/approve.ts | 45L |
| -rw-r--r-- | src/core/application/id_document/capture.ts | 74L |
| -rw-r--r-- | src/core/application/id_document/decline.ts | 42L |
| -rw-r--r-- | src/core/application/id_document/id_document_repository.ts | 7L |
| -rw-r--r-- | src/core/application/id_document/is_admin.ts | 20L |
| -rw-r--r-- | src/core/application/id_document/list.ts | 21L |
| -rw-r--r-- | src/core/application/id_document/mrzscan.ts | 12L |
| -rw-r--r-- | src/core/application/oauth2/authorize.ts | 51L |
| -rw-r--r-- | src/core/application/oauth2/client_repository.ts | 6L |
| -rw-r--r-- | src/core/application/oauth2/flow_repository.ts | 9L |
| -rw-r--r-- | src/core/application/oauth2/initiate.ts | 60L |
| -rw-r--r-- | src/core/application/oauth2/ratelimit_repository.ts | 6L |
| -rw-r--r-- | src/core/application/oauth2/token.ts | 70L |
| -rw-r--r-- | src/core/application/oauth2/user_info.ts | 95L |
| -rw-r--r-- | src/core/application/oauth2/validate.ts | 44L |
| -rw-r--r-- | src/core/application/phone/phone_repository.ts | 7L |
| -rw-r--r-- | src/core/application/phone/register.ts | 65L |
| -rw-r--r-- | src/core/application/phone/verify_sms.ts | 50L |
| -rw-r--r-- | src/core/application/repository_error.ts | 17L |
| -rw-r--r-- | src/core/composer.ts | 31L |
| -rw-r--r-- | src/core/domain/admin.ts | 6L |
| -rw-r--r-- | src/core/domain/auth.ts | 68L |
| -rw-r--r-- | src/core/domain/client.ts | 51L |
| -rw-r--r-- | src/core/domain/code.ts | 20L |
| -rw-r--r-- | src/core/domain/code_challenge.ts | 94L |
| -rw-r--r-- | src/core/domain/constants.ts | 54L |
| -rw-r--r-- | src/core/domain/crypto.ts | 179L |
| -rw-r--r-- | src/core/domain/email.ts | 20L |
| -rw-r--r-- | src/core/domain/email_challenge.ts | 56L |
| -rw-r--r-- | src/core/domain/ephemeral.ts | 33L |
| -rw-r--r-- | src/core/domain/error.ts | 5L |
| -rw-r--r-- | src/core/domain/id_document.ts | 134L |
| -rw-r--r-- | src/core/domain/id_info.ts | 11L |
| -rw-r--r-- | src/core/domain/limiter.ts | 49L |
| -rw-r--r-- | src/core/domain/logger.ts | 22L |
| -rw-r--r-- | src/core/domain/oauth2flow.ts | 83L |
| -rw-r--r-- | src/core/domain/password.ts | 53L |
| -rw-r--r-- | src/core/domain/personal_phone_number.ts | 40L |
| -rw-r--r-- | src/core/domain/phone_ekyc.ts | 30L |
| -rw-r--r-- | src/core/domain/picture.ts | 22L |
| -rw-r--r-- | src/core/domain/rate_limit.ts | 15L |
| -rw-r--r-- | src/core/domain/scope.ts | 34L |
| -rw-r--r-- | src/core/domain/session_token.ts | 31L |
| -rw-r--r-- | src/core/domain/sms_challenge.ts | 41L |
| -rw-r--r-- | src/core/domain/tests/code_challenge.test.ts | 101L |
| -rw-r--r-- | src/core/domain/tests/crypto.test.ts | 90L |
| -rw-r--r-- | src/core/domain/tests/email.test.ts | 44L |
| -rw-r--r-- | src/core/domain/tests/ephemeral.test.ts | 62L |
| -rw-r--r-- | src/core/domain/tests/limiter.test.ts | 58L |
| -rw-r--r-- | src/core/domain/tests/personal_phone_number.test.ts | 38L |
| -rw-r--r-- | src/core/domain/token.ts | 20L |
| -rw-r--r-- | src/core/domain/uuid.ts | 20L |
| -rw-r--r-- | src/core/factory.ts | 103L |
| -rw-r--r-- | src/http/.gitignore | 11L |
| -rw-r--r-- | src/http/README.md | 16L |
| -rw-r--r-- | src/http/app.ts | 19L |
| -rw-r--r-- | src/http/ca-cert.dev.pem | 22L |
| -rw-r--r-- | src/http/ca-key.dev.pem | 27L |
| -rwxr-xr-x | src/http/dev.ts | 7L |
| -rw-r--r-- | src/http/form.ts | 128L |
| -rw-r--r-- | src/http/fresh.config.ts | 22L |
| -rw-r--r-- | src/http/fresh.gen.ts | 70L |
| -rw-r--r-- | src/http/islands/code_input.tsx | 30L |
| -rw-r--r-- | src/http/islands/delayed_button.tsx | 39L |
| -rw-r--r-- | src/http/islands/email_input.tsx | 29L |
| -rw-r--r-- | src/http/islands/password_input.tsx | 70L |
| -rw-r--r-- | src/http/islands/phone_number_input.tsx | 35L |
| -rw-r--r-- | src/http/islands/photo_capture_input.tsx | 116L |
| -rw-r--r-- | src/http/main.ts | 11L |
| -rw-r--r-- | src/http/routes/(admin)/verify/id-document.tsx | 171L |
| -rw-r--r-- | src/http/routes/(customer)/_layout.tsx | 9L |
| -rw-r--r-- | src/http/routes/(customer)/connect.tsx | 83L |
| -rw-r--r-- | src/http/routes/(customer)/login.tsx | 75L |
| -rw-r--r-- | src/http/routes/(customer)/logout.tsx | 17L |
| -rw-r--r-- | src/http/routes/(customer)/register/email.tsx | 69L |
| -rw-r--r-- | src/http/routes/(customer)/register/id-document.tsx | 234L |
| -rw-r--r-- | src/http/routes/(customer)/register/phone.tsx | 83L |
| -rw-r--r-- | src/http/routes/(customer)/verify/email.tsx | 76L |
| -rw-r--r-- | src/http/routes/(customer)/verify/id-document.tsx | 80L |
| -rw-r--r-- | src/http/routes/(customer)/verify/sms.tsx | 134L |
| -rw-r--r-- | src/http/routes/_404.tsx | 18L |
| -rw-r--r-- | src/http/routes/_500.tsx | 23L |
| -rw-r--r-- | src/http/routes/_app.tsx | 16L |
| -rw-r--r-- | src/http/routes/_layout.tsx | 65L |
| -rw-r--r-- | src/http/routes/_middleware.ts | 24L |
| -rw-r--r-- | src/http/routes/index.tsx | 31L |
| -rw-r--r-- | src/http/routes/oauth2/authorize.tsx | 103L |
| -rw-r--r-- | src/http/routes/oauth2/callback.tsx | 31L |
| -rw-r--r-- | src/http/routes/oauth2/token.tsx | 36L |
| -rw-r--r-- | src/http/routes/oauth2/userinfo.tsx | 21L |
| -rw-r--r-- | src/http/static/favicon.ico | 22382B |
| -rw-r--r-- | src/http/static/logo.svg | 6L |
| -rw-r--r-- | src/http/static/pico.min.css | 4L |
| -rw-r--r-- | src/infrastructure/boot/environment.ts | 60L |
| -rw-r--r-- | src/infrastructure/boot/mailer.ts | 17L |
| -rw-r--r-- | src/infrastructure/boot/persistance.ts | 19L |
| -rw-r--r-- | src/infrastructure/boot/sms.ts | 16L |
| -rw-r--r-- | src/infrastructure/config/admin.ts | 20L |
| -rw-r--r-- | src/infrastructure/config/client.ts | 35L |
| -rw-r--r-- | src/infrastructure/config/factory.ts | 20L |
| -rw-r--r-- | src/infrastructure/fake/mailer.ts | 19L |
| -rw-r--r-- | src/infrastructure/fake/sms.ts | 18L |
| -rw-r--r-- | src/infrastructure/memory/auth.ts | 63L |
| -rw-r--r-- | src/infrastructure/memory/customer_info.ts | 43L |
| -rw-r--r-- | src/infrastructure/memory/factory.ts | 53L |
| -rw-r--r-- | src/infrastructure/memory/id_document.ts | 32L |
| -rw-r--r-- | src/infrastructure/memory/id_document_list.ts | 40L |
| -rw-r--r-- | src/infrastructure/memory/mapper/auth.ts | 73L |
| -rw-r--r-- | src/infrastructure/memory/mapper/id_document.ts | 98L |
| -rw-r--r-- | src/infrastructure/memory/mapper/oauth2flow.ts | 44L |
| -rw-r--r-- | src/infrastructure/memory/mapper/phone.ts | 54L |
| -rw-r--r-- | src/infrastructure/memory/mapper/ratelimit.ts | 27L |
| -rw-r--r-- | src/infrastructure/memory/oauth2_flow.ts | 45L |
| -rw-r--r-- | src/infrastructure/memory/phone.ts | 32L |
| -rw-r--r-- | src/infrastructure/memory/ratelimit.ts | 32L |
| -rw-r--r-- | src/infrastructure/postgres/auth.ts | 143L |
| -rw-r--r-- | src/infrastructure/postgres/customer_info.ts | 80L |
| -rw-r--r-- | src/infrastructure/postgres/error.ts | 27L |
| -rw-r--r-- | src/infrastructure/postgres/factory.ts | 29L |
| -rw-r--r-- | src/infrastructure/postgres/iddocument.ts | 103L |
| -rw-r--r-- | src/infrastructure/postgres/iddocument_list.ts | 46L |
| -rw-r--r-- | src/infrastructure/postgres/migrations/20240531140741_create_auth.ts | 42L |
| -rw-r--r-- | src/infrastructure/postgres/migrations/20240606001232_create_phone.ts | 30L |
| -rw-r--r-- | src/infrastructure/postgres/migrations/20240617195959_create_oauth2flow.ts | 28L |
| -rw-r--r-- | src/infrastructure/postgres/migrations/20240618073559_create_ratelimit.ts | 23L |
| -rw-r--r-- | src/infrastructure/postgres/migrations/20240619101025_create_iddocument.ts | 34L |
| -rw-r--r-- | src/infrastructure/postgres/oauth2_flow.ts | 120L |
| -rw-r--r-- | src/infrastructure/postgres/phone.ts | 109L |
| -rw-r--r-- | src/infrastructure/postgres/ratelimit.ts | 94L |
| -rw-r--r-- | src/infrastructure/postgres/seeds/.gitkeep | 0B |
| -rw-r--r-- | src/infrastructure/smtp/auth.ts | 49L |
| -rw-r--r-- | src/infrastructure/smtp/factory.ts | 20L |
| -rw-r--r-- | src/infrastructure/swisscom/ekyc_send_sms_challenge.ts | 59L |
| -rw-r--r-- | src/infrastructure/swisscom/factory.ts | 16L |
| -rw-r--r-- | src/infrastructure/tesseract/factory.ts | 17L |
| -rw-r--r-- | src/infrastructure/tesseract/models/ocrb.traineddata | 11397113B |
| -rw-r--r-- | src/infrastructure/tesseract/mrz_scan.ts | 71L |
| -rw-r--r-- | src/tests/acceptance.ts | 13L |
| -rw-r--r-- | src/tests/auth_email_challenge.test.ts | 130L |
| -rw-r--r-- | src/tests/auth_email_verify.test.ts | 111L |
| -rw-r--r-- | src/tests/auth_register.test.ts | 68L |
| -rw-r--r-- | src/tests/auth_repository.test.ts | 126L |
| -rw-r--r-- | src/tests/phone_repository.test.ts | 121L |