├── .buckconfig ├── .editorconfig ├── .env.template ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .prettierrc.js ├── .watchmanconfig ├── LICENSE.txt ├── README-fr.md ├── README.md ├── android ├── app │ ├── _BUCK │ ├── build.gradle │ ├── build_defs.bzl │ ├── debug.keystore │ ├── google-services.json │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── openverify │ │ │ │ └── replace │ │ │ │ └── me │ │ │ │ └── ReactNativeFlipper.java │ │ └── res │ │ │ └── xml │ │ │ └── network_security_config.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── fonts │ │ │ ├── OpenSans-Bold.ttf │ │ │ ├── OpenSans-Italic.ttf │ │ │ ├── OpenSans-LICENSE.txt │ │ │ ├── OpenSans-Regular.ttf │ │ │ ├── OpenSans-Semibold.ttf │ │ │ ├── raleway-modified-LICENSE.txt │ │ │ ├── raleway-modified-bold.ttf │ │ │ ├── raleway-modified-regular.ttf │ │ │ └── raleway-modified-semibold.ttf │ │ ├── java │ │ └── openverify │ │ │ └── replace │ │ │ └── me │ │ │ ├── AppPackage.java │ │ │ ├── MainActivity.java │ │ │ ├── MainApplication.java │ │ │ ├── NightModeModule.java │ │ │ └── SecureFlagModule.java │ │ └── res │ │ ├── drawable │ │ ├── bootsplash.xml │ │ └── bootsplash_dark.xml │ │ ├── mipmap-hdpi │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo_dark.png │ │ └── ic_launcher.png │ │ ├── mipmap-ldpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo_dark.png │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo_dark.png │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo_dark.png │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo_dark.png │ │ └── ic_launcher.png │ │ ├── raw │ │ └── beep.m4a │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-night │ │ └── styles.xml │ │ └── values │ │ ├── colors-icon.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── babel.config.js ├── firebase.json ├── index.js ├── ios ├── GoogleService-Info.plist ├── OpenVerify.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── OpenVerify.xcscheme ├── OpenVerify.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── OpenVerify │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── BootSplash.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── 1024.png │ │ │ ├── 114.png │ │ │ ├── 120.png │ │ │ ├── 128.png │ │ │ ├── 152.png │ │ │ ├── 16.png │ │ │ ├── 167.png │ │ │ ├── 180.png │ │ │ ├── 20.png │ │ │ ├── 256.png │ │ │ ├── 29.png │ │ │ ├── 32.png │ │ │ ├── 40.png │ │ │ ├── 512.png │ │ │ ├── 57.png │ │ │ ├── 58.png │ │ │ ├── 60.png │ │ │ ├── 64.png │ │ │ ├── 76.png │ │ │ ├── 80.png │ │ │ ├── 87.png │ │ │ └── Contents.json │ │ ├── BootSplashLogo.imageset │ │ │ ├── Contents.json │ │ │ ├── bootsplash_logo.png │ │ │ ├── bootsplash_logo@2x.png │ │ │ ├── bootsplash_logo@3x.png │ │ │ ├── bootsplash_logo_dark.png │ │ │ ├── bootsplash_logo_dark@2x.png │ │ │ └── bootsplash_logo_dark@3x.png │ │ └── Contents.json │ ├── Info.plist │ ├── RCTNightModeModule.h │ ├── RCTNightModeModule.m │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── fr.lproj │ │ └── InfoPlist.strings │ └── main.m ├── OpenVerifyTests │ ├── Info.plist │ └── OpenVerifyTests.m ├── Podfile └── Podfile.lock ├── metro.config.js ├── package.json ├── react-native.config.js ├── src ├── __mocks__ │ ├── qr-codes │ │ ├── misplacedCVX.json │ │ ├── missingCVX.json │ │ ├── oneDoseInvalid.json │ │ ├── oneDoseValid.json │ │ ├── oneDoseValidSCTMissingCVX.json │ │ ├── oneDoseValidSCTWrongCVX.json │ │ ├── threeDoseAllInvalid.json │ │ ├── threeDoseAllNonHC.json │ │ ├── threeDoseAllNonHCMissingCVX.json │ │ ├── threeDoseAllValid.json │ │ ├── threeDoseInvalidOneTwoNonHC.json │ │ ├── threeDoseInvalidTwoOnePfizer.json │ │ ├── threeDoseOneValidTwoNonHC.json │ │ ├── threeDoseTwoValidOneNonHC.json │ │ ├── twoDoseInvalidOne.json │ │ ├── twoDoseInvalidTwo.json │ │ ├── twoDoseValidAstrazeneca.json │ │ ├── twoDoseValidMix.json │ │ ├── twoDoseValidMixMissingCVX.json │ │ ├── twoDoseValidMixWrongCVX.json │ │ ├── twoDoseValidModerna.json │ │ ├── twoDoseValidOneNonHCOnePfizer.json │ │ ├── twoDoseValidOnePfizerOneNonHC.json │ │ ├── twoDoseValidPfizer.json │ │ └── vaccineExemption.json │ ├── react-native-config.js │ ├── react-native-localize.js │ ├── ruleset.json │ └── version.json ├── __tests__ │ ├── Bullet.test.tsx │ └── utils │ │ ├── camera.test.ts │ │ ├── rulesHelper.test.ts │ │ └── validate.test.ts ├── assets │ ├── audio │ │ └── beep.m4a │ ├── fonts │ │ ├── OpenSans-Bold.ttf │ │ ├── OpenSans-Italic.ttf │ │ ├── OpenSans-LICENSE.txt │ │ ├── OpenSans-Regular.ttf │ │ ├── OpenSans-Semibold.ttf │ │ ├── raleway-modified-LICENSE.txt │ │ ├── raleway-modified-bold.ttf │ │ ├── raleway-modified-regular.ttf │ │ └── raleway-modified-semibold.ttf │ ├── images │ │ ├── QRScannerFocus.png │ │ ├── QRScannerFocus@2x.png │ │ ├── QRScannerFocus@3x.png │ │ ├── arrow.svg │ │ ├── bootsplash_logo.png │ │ ├── bootsplash_logo@1,5x.png │ │ ├── bootsplash_logo@2x.png │ │ ├── bootsplash_logo@3x.png │ │ ├── bootsplash_logo@4x.png │ │ ├── bootsplash_logo_dark.png │ │ ├── bootsplash_logo_dark@1,5x.png │ │ ├── bootsplash_logo_dark@2x.png │ │ ├── bootsplash_logo_dark@3x.png │ │ ├── bootsplash_logo_dark@4x.png │ │ ├── checkbox.svg │ │ ├── checkbox_checked.svg │ │ ├── checkbox_checked_dark.svg │ │ ├── checkbox_dark.svg │ │ ├── error_icon.svg │ │ ├── flip_camera_android.svg │ │ ├── flip_camera_ios.svg │ │ ├── information_icon.svg │ │ ├── openverify-icon-alert-error.svg │ │ ├── openverify-icon-alert-warning.svg │ │ ├── openverify-icon-close.svg │ │ ├── openverify_back_blue.svg │ │ ├── openverify_base_logo.svg │ │ ├── openverify_base_logo_dark.svg │ │ ├── openverify_camera_logo.svg │ │ ├── radio-selected.dark.svg │ │ ├── radio-selected.svg │ │ ├── radio.dark.svg │ │ ├── radio.svg │ │ ├── success_icon.svg │ │ ├── timeout.svg │ │ ├── timeout_dark.svg │ │ ├── torch.svg │ │ ├── torch_selected.svg │ │ ├── unverified.svg │ │ ├── verified.svg │ │ ├── warning.svg │ │ ├── warning_icon.svg │ │ └── warning_icon_white.svg │ └── theme │ │ ├── base │ │ ├── Colors.ts │ │ ├── Typography.ts │ │ └── Variables.ts │ │ ├── dark.ts │ │ ├── index.ts │ │ ├── light.ts │ │ └── utils │ │ ├── get_theme.ts │ │ ├── index.ts │ │ └── use_theme.ts ├── components │ ├── banner │ │ ├── WarningBanner.tsx │ │ ├── index.ts │ │ └── styles.ts │ ├── core │ │ ├── alerts │ │ │ ├── Error │ │ │ │ └── index.tsx │ │ │ ├── Informational │ │ │ │ └── index.tsx │ │ │ ├── README.md │ │ │ ├── Success │ │ │ │ └── index.tsx │ │ │ ├── Warning │ │ │ │ └── index.tsx │ │ │ └── styles.ts │ │ ├── bullet │ │ │ ├── Bullet.tsx │ │ │ ├── index.ts │ │ │ └── styles.ts │ │ ├── button │ │ │ ├── Button.tsx │ │ │ ├── index.ts │ │ │ └── styles.ts │ │ ├── modal │ │ │ ├── Modal.tsx │ │ │ ├── index.ts │ │ │ └── styles.ts │ │ └── radio │ │ │ ├── index.tsx │ │ │ └── styles.ts │ ├── logo │ │ ├── index.tsx │ │ └── styles.ts │ ├── results │ │ ├── BeepSound.ts │ │ └── result │ │ │ ├── index.tsx │ │ │ └── styles.ts │ ├── scanner │ │ └── QRCodeScanner │ │ │ └── index.tsx │ └── settings │ │ ├── DisplaySetting │ │ ├── index.tsx │ │ └── styles.ts │ │ ├── Group │ │ ├── index.tsx │ │ └── styles.ts │ │ ├── Link │ │ ├── index.tsx │ │ └── styles.ts │ │ └── Row │ │ ├── index.tsx │ │ └── styles.ts ├── config │ ├── analytics.ts │ ├── constants.ts │ └── index.ts ├── containers │ ├── common │ │ ├── CameraMissingPermission.tsx │ │ ├── index.ts │ │ └── styles.ts │ ├── home │ │ ├── AppUpdate │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── DateTamper │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── HomeScreen.tsx │ │ ├── OverlayModal.tsx │ │ ├── Scanner.tsx │ │ ├── TermsUpdate │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── Update │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── index.ts │ │ └── styles.ts │ ├── onboarding │ │ ├── AppForBusinesses │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── AppNotMandatory │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── AppNotSupported │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── AutomaticUpdates │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── CameraPermissions.tsx │ │ ├── ReadyToScan.tsx │ │ ├── Terms │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── WhatAppDoes │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── WhatAppDoesNot │ │ │ ├── body.en.tsx │ │ │ ├── body.fr.tsx │ │ │ └── index.tsx │ │ ├── index.ts │ │ └── styles.ts │ ├── results │ │ ├── InvalidResult.tsx │ │ ├── ScannerTimedOut.tsx │ │ ├── UnverifiedResult.tsx │ │ ├── VerifiedResult.tsx │ │ ├── index.ts │ │ ├── styles.ts │ │ └── translations │ │ │ ├── error.en.tsx │ │ │ ├── error.fr.tsx │ │ │ ├── timeout.en.tsx │ │ │ ├── timeout.fr.tsx │ │ │ ├── warning.en.tsx │ │ │ ├── warning.fr.tsx │ │ │ ├── warning_thirdparty.en.tsx │ │ │ └── warning_thirdparty.fr.tsx │ ├── routes.ts │ └── settings │ │ ├── HelpUsImprove.tsx │ │ ├── HowItWorks │ │ ├── body.en.tsx │ │ ├── body.fr.tsx │ │ └── index.tsx │ │ ├── Language.tsx │ │ ├── SettingsScreen.tsx │ │ ├── UpdatesHelp │ │ ├── body.en.tsx │ │ ├── body.fr.tsx │ │ └── index.tsx │ │ ├── VisualAppearance.tsx │ │ ├── WhatResultsMean │ │ ├── body.en.tsx │ │ ├── body.fr.tsx │ │ └── index.tsx │ │ ├── index.ts │ │ └── styles.ts ├── controllers │ └── OrientationControler.tsx ├── declarations.d.ts ├── index.tsx ├── jest │ ├── Jest.utils.tsx │ ├── JestConfig.js │ └── index.ts ├── modules │ ├── NightMode │ │ ├── index.ts │ │ └── types.ts │ └── SecureFlag │ │ ├── index.android.ts │ │ ├── index.ts │ │ └── types.ts ├── navigation │ ├── AppNavigation.tsx │ ├── AppNotMandatoryNavigation.tsx │ ├── AppNotSupportedNavigation.tsx │ ├── HomeNavigation.tsx │ ├── OnboardingNavigation.tsx │ └── SettingsNavigation.tsx ├── redux │ ├── actions │ │ ├── api.ts │ │ ├── creators │ │ │ └── index.ts │ │ └── types │ │ │ └── index.ts │ ├── reducers │ │ └── index.ts │ ├── selectors.test.ts │ ├── selectors.ts │ └── store.ts ├── services │ ├── QRCodeValidator │ │ ├── QRCodeValidator.test.ts │ │ ├── QRCodeValidator.ts │ │ ├── README.md │ │ ├── docs │ │ │ └── QRCodeValidator-architecture.pdf │ │ ├── lib │ │ │ ├── decodeQR.test.ts │ │ │ ├── decodeQR.ts │ │ │ └── models │ │ │ │ ├── Jwks.ts │ │ │ │ ├── TrustedIssuersJWKS.ts │ │ │ │ └── VC.ts │ │ └── types.ts │ └── RulesetSignatureValidator │ │ ├── index.ts │ │ └── trustedKeys.ts ├── styled.d.ts ├── translations │ ├── en.json │ ├── fr.json │ └── i18n.tsx └── utils │ ├── analytics.ts │ ├── base64-binary.ts │ ├── base64-utils.ts │ ├── camera.ts │ ├── openURL.ts │ ├── rulesHelper.ts │ ├── screen.ts │ ├── types.ts │ ├── useAccessibilityFocusRef.ts │ ├── useForwardedRef.ts │ ├── useLinkIfSupported.ts │ ├── useTelLink.ts │ ├── useWhenChanged.ts │ ├── validate.ts │ ├── withinUnder12GracePeriod.test.ts │ └── withinUnder12GracePeriod.ts ├── test-data ├── LICENSE ├── README.md ├── badjwks │ └── .well-known │ │ └── jwks.json ├── cert_mismatch.public.json ├── example-00-a-fhirBundle.json ├── example-00-b-jws-payload-expanded.json ├── example-00-c-jws-payload-minified.json ├── example-00-d-jws.txt ├── example-00-e-file.smart-health-card ├── example-00-f-jws-payload-expanded-toobig.json ├── example-00-f-qr-code-numeric-value-0.txt ├── example-00-g-qr-code-0.bmp ├── example-00-g-qr-code-0.jpg ├── example-00-g-qr-code-0.png ├── example-00-g-qr-code-0.svg ├── example-01-a-fhirBundle.json ├── example-01-b-jws-payload-expanded.json ├── example-01-c-jws-payload-minified.json ├── example-01-d-jws.txt ├── example-01-e-file.smart-health-card ├── example-01-f-qr-code-numeric-value-0.txt ├── example-01-g-qr-code-0.bmp ├── example-01-g-qr-code-0.jpg ├── example-01-g-qr-code-0.png ├── example-01-g-qr-code-0.svg ├── example-02-a-fhirBundle.json ├── example-02-b-jws-payload-expanded.json ├── example-02-c-jws-payload-minified.json ├── example-02-d-jws.txt ├── example-02-e-file.smart-health-card ├── example-02-f-qr-code-numeric-value-0.txt ├── example-02-f-qr-code-numeric-value-1.txt ├── example-02-f-qr-code-numeric-value-2.txt ├── example-02-g-qr-code-0.bmp ├── example-02-g-qr-code-0.jpg ├── example-02-g-qr-code-0.png ├── example-02-g-qr-code-0.svg ├── example-02-g-qr-code-1.bmp ├── example-02-g-qr-code-1.jpg ├── example-02-g-qr-code-1.png ├── example-02-g-qr-code-1.svg ├── example-02-g-qr-code-2.bmp ├── example-02-g-qr-code-2.jpg ├── example-02-g-qr-code-2.png ├── example-02-g-qr-code-2.svg ├── invalid_DNS_SAN.public.json ├── invalid_chain.public.json ├── invalid_no_SAN.public.json ├── issuer.jwks.public.json ├── issuer.jwks.public.not.smart.json ├── private_key.json ├── test-example-00-a-fhirBundle-bad_meta_extra_key.json ├── test-example-00-a-fhirBundle-bad_meta_non_security.json ├── test-example-00-a-fhirBundle-bad_meta_wrong_security.json ├── test-example-00-a-fhirBundle-empty-values.json ├── test-example-00-a-fhirBundle-profile-usa.json ├── test-example-00-a-fhirBundle-trailing_chars.json ├── test-example-00-a-non-dm-properties.json ├── test-example-00-a-short-refs.json ├── test-example-00-b-jws-payload-expanded-missing-coding.json ├── test-example-00-b-jws-payload-expanded-missing-covid-vc-type.json ├── test-example-00-b-jws-payload-expanded-missing-imm-vc-type.json ├── test-example-00-b-jws-payload-expanded-missing-shc-vc-type.json ├── test-example-00-b-jws-payload-expanded-nbf_milliseconds.json ├── test-example-00-b-jws-payload-expanded-nbf_not_yet_valid.json ├── test-example-00-b-jws-payload-expanded-optional-vc-type.json ├── test-example-00-b-jws-payload-expanded-relative-resource.json ├── test-example-00-b-jws-payload-expanded-trailing_chars.json ├── test-example-00-b-jws-payload-expanded-unknown-vc-types.json ├── test-example-00-d-jws-der-signature-r-neg.txt ├── test-example-00-d-jws-der-signature-rs-neg.txt ├── test-example-00-d-jws-der-signature-s-neg.txt ├── test-example-00-d-jws-der-signature.txt ├── test-example-00-d-jws-invalid-signature.txt ├── test-example-00-d-jws-issuer-kid-mismatch.txt ├── test-example-00-d-jws-issuer-not-valid-with-smart-key.txt ├── test-example-00-d-jws-jws_too_long.txt ├── test-example-00-d-jws-no_deflate.txt ├── test-example-00-d-jws-no_jws_header_alg.txt ├── test-example-00-d-jws-no_jws_header_kid.txt ├── test-example-00-d-jws-no_jws_header_zip.txt ├── test-example-00-d-jws-trailing_chars.txt ├── test-example-00-d-jws-wrong_jws_header_kid.txt ├── test-example-00-e-file-bad_jwks.smart-health-card ├── test-example-00-e-file-invalid_deflate.smart-health-card ├── test-example-00-e-file-invalid_issuer_url.smart-health-card ├── test-example-00-e-file-invalid_issuer_url_http.smart-health-card ├── test-example-00-e-file-issuer_url_with_trailing_slash.smart-health-card ├── test-example-00-e-file-jws_too_long.smart-health-card ├── test-example-00-e-file-multi-jws-issues.smart-health-card ├── test-example-00-e-file-multi-jws.smart-health-card ├── test-example-00-e-file-no_deflate.smart-health-card ├── test-example-00-e-file-trailing_chars.smart-health-card ├── test-example-00-e-file.wrong-extension ├── test-example-00-f-qr-code-numeric-value-0-index-out-of-range.txt ├── test-example-00-f-qr-code-numeric-value-0-number-too-big.txt ├── test-example-00-f-qr-code-numeric-value-0-odd-count.txt ├── test-example-00-f-qr-code-numeric-value-0-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-0-trailing_chars.txt ├── test-example-00-f-qr-code-numeric-value-0-wrong-multi-chunk.txt ├── test-example-00-f-qr-code-numeric-value-0-wrong_qr_header.txt ├── test-example-00-f-qr-code-numeric-value-1-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-10-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-11-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-12-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-13-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-14-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-15-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-16-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-2-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-3-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-4-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-5-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-6-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-7-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-8-qr_chunk_too_small.txt ├── test-example-00-f-qr-code-numeric-value-9-qr_chunk_too_small.txt ├── test-example-00-fhirhealthcard-multi-jws.json ├── test-example-00-fhirhealthcard-with-resource-link.json ├── test-example-00-fhirhealthcard.json ├── test-example-00-g-qr-code-0-bad_qr_version.png ├── test-example-00-g-qr-code-0-corrupted.png ├── test-example-00-g-qr-code-0-qr_chunk_too_small.png ├── test-example-00-g-qr-code-0-single_qr_segment.png ├── test-example-00-g-qr-code-0-too_many_qr_segment.png ├── test-example-00-g-qr-code-1-qr_chunk_too_small.png ├── test-example-00-g-qr-code-inflated-to-v22.png ├── test-example-02-f-qr-code-numeric-value-0-qr_chunk_too_big.txt ├── test-example-02-f-qr-code-numeric-value-1-qr_chunk_too_big.txt ├── test-example-covid-lab-jwspayload-missing-lab-vc-type.json ├── test-invalid-jws-payload.png ├── test-issuers.json ├── trusted.issuers.jwks.json ├── valid_2_chain.public.json ├── valid_key.json ├── valid_key_with_x5c.json ├── valid_keys.json ├── wrong_alg_key.json ├── wrong_curve_key.json ├── wrong_kid_key.json ├── wrong_kty_key.json └── wrong_use_key.json ├── tsconfig.json └── yarn.lock /.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Windows files 2 | [*.bat] 3 | end_of_line = crlf 4 | -------------------------------------------------------------------------------- /.env.template: -------------------------------------------------------------------------------- 1 | ENV=dev 2 | API_URL=https://files.ontario.ca/apps/verify/ -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | module.exports = { 17 | root: true, 18 | extends: '@react-native-community', 19 | }; 20 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Windows files should use crlf line endings 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | *.bat text eol=crlf 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | build/ 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | *.hprof 32 | 33 | # node.js 34 | # 35 | node_modules/ 36 | npm-debug.log 37 | yarn-error.log 38 | 39 | # BUCK 40 | buck-out/ 41 | \.buckd/ 42 | *.keystore 43 | !debug.keystore 44 | 45 | # fastlane 46 | # 47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 48 | # screenshots whenever they are needed. 49 | # For more information about the recommended setup visit: 50 | # https://docs.fastlane.tools/best-practices/source-control/ 51 | 52 | */fastlane/report.xml 53 | */fastlane/Preview.html 54 | */fastlane/screenshots 55 | 56 | # Bundle artifact 57 | *.jsbundle 58 | 59 | # CocoaPods 60 | /ios/Pods/ 61 | 62 | # Env file 63 | .env 64 | /src/assets/images/.png-cache 65 | 66 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | module.exports = { 17 | bracketSpacing: false, 18 | jsxBracketSameLine: true, 19 | singleQuote: true, 20 | trailingComma: 'all', 21 | arrowParens: 'avoid', 22 | }; 23 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /android/app/_BUCK: -------------------------------------------------------------------------------- 1 | # To learn about Buck see [Docs](https://buckbuild.com/). 2 | # To run your application with Buck: 3 | # - install Buck 4 | # - `npm start` - to start the packager 5 | # - `cd android` 6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` 7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck 8 | # - `buck install -r android/app` - compile, install and run application 9 | # 10 | 11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") 12 | 13 | lib_deps = [] 14 | 15 | create_aar_targets(glob(["libs/*.aar"])) 16 | 17 | create_jar_targets(glob(["libs/*.jar"])) 18 | 19 | android_library( 20 | name = "all-libs", 21 | exported_deps = lib_deps, 22 | ) 23 | 24 | android_library( 25 | name = "app-code", 26 | srcs = glob([ 27 | "src/main/java/**/*.java", 28 | ]), 29 | deps = [ 30 | ":all-libs", 31 | ":build_config", 32 | ":res", 33 | ], 34 | ) 35 | 36 | android_build_config( 37 | name = "build_config", 38 | package = "openverify.replace.me", 39 | ) 40 | 41 | android_resource( 42 | name = "res", 43 | package = "openverify.replace.me", 44 | res = "src/main/res", 45 | ) 46 | 47 | android_binary( 48 | name = "app", 49 | keystore = "//android/keystores:debug", 50 | manifest = "src/main/AndroidManifest.xml", 51 | package_type = "debug", 52 | deps = [ 53 | ":app-code", 54 | ], 55 | ) 56 | -------------------------------------------------------------------------------- /android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/debug.keystore -------------------------------------------------------------------------------- /android/app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "", 4 | "firebase_url": "", 5 | "project_id": "", 6 | "storage_bucket": "" 7 | }, 8 | "client": [ 9 | { 10 | "client_info": { 11 | "mobilesdk_app_id": "1::android:", 12 | "android_client_info": { 13 | "package_name": "openverify.replace.me" 14 | } 15 | }, 16 | "oauth_client": [ 17 | { 18 | "client_id": "", 19 | "client_type": 3 20 | } 21 | ], 22 | "api_key": [ 23 | { 24 | "current_key": "" 25 | } 26 | ], 27 | "services": { 28 | "analytics_service": { 29 | "status": 0 30 | } 31 | } 32 | } 33 | ], 34 | "configuration_version": "1" 35 | } 36 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | -keep class openverify.replace.me.BuildConfig { *; } -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/app/src/debug/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | localhost 10 | 10.0.2.2 11 | 12 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/OpenSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/OpenSans-Italic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/raleway-modified-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/raleway-modified-bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/raleway-modified-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/raleway-modified-regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/raleway-modified-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/assets/fonts/raleway-modified-semibold.ttf -------------------------------------------------------------------------------- /android/app/src/main/java/openverify/replace/me/AppPackage.java: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | package openverify.replace.me; 17 | 18 | import com.facebook.react.ReactPackage; 19 | import com.facebook.react.bridge.NativeModule; 20 | import com.facebook.react.bridge.ReactApplicationContext; 21 | import com.facebook.react.uimanager.ViewManager; 22 | 23 | import java.util.ArrayList; 24 | import java.util.Collections; 25 | import java.util.List; 26 | 27 | public class AppPackage implements ReactPackage { 28 | @Override 29 | public List createViewManagers(ReactApplicationContext reactContext) { 30 | return Collections.emptyList(); 31 | } 32 | 33 | @Override 34 | public List createNativeModules(ReactApplicationContext reactContext) { 35 | List modules = new ArrayList<>(); 36 | modules.add(new SecureFlagModule(reactContext)); 37 | modules.add(new NightModeModule(reactContext)); 38 | return modules; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/bootsplash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/bootsplash_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-hdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-hdpi/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-mdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-mdpi/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xhdpi/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/raw/beep.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/app/src/main/res/raw/beep.m4a -------------------------------------------------------------------------------- /android/app/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | VérifOuverte 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/colors-icon.xml: -------------------------------------------------------------------------------- 1 | 2 | #39b54a 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | #FFFFFF 3 | #000000 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Open Verify 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = '30.0.2' 6 | minSdkVersion = 21 7 | compileSdkVersion = 30 8 | targetSdkVersion = 30 9 | ndkVersion = "21.4.7075529" 10 | // for react-native-inappbrowser-reborn 11 | androidXAnnotation = '1.2.0' 12 | androidXBrowser = '1.3.0' 13 | } 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | dependencies { 19 | classpath("com.android.tools.build:gradle:4.2.2") 20 | classpath 'com.google.gms:google-services:4.3.10' 21 | // NOTE: Do not place your application dependencies here; they belong 22 | // in the individual module build.gradle files 23 | } 24 | } 25 | 26 | allprojects { 27 | repositories { 28 | mavenCentral() 29 | mavenLocal() 30 | maven { 31 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 32 | url("$rootDir/../node_modules/react-native/android") 33 | } 34 | maven { 35 | // Android JSC is installed from npm 36 | url("$rootDir/../node_modules/jsc-android/dist") 37 | } 38 | 39 | google() 40 | maven { url 'https://www.jitpack.io' } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | # Automatically convert third-party libraries to use AndroidX 25 | android.enableJetifier=true 26 | 27 | # Version of flipper SDK to use with React Native 28 | FLIPPER_VERSION=0.99.0 29 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'OpenVerify' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenVerify", 3 | "displayName": "Open Verify" 4 | } 5 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | module.exports = (api /* :API */) => { 17 | const presets = ['module:metro-react-native-babel-preset']; 18 | const plugins = [ 19 | '@babel/plugin-transform-runtime', 20 | '@babel/plugin-proposal-numeric-separator', 21 | '@babel/plugin-transform-named-capturing-groups-regex', 22 | [ 23 | 'module-resolver', 24 | { 25 | root: ['./src'], 26 | extensions: ['.ios.js', '.android.js', '.js', '.ts', '.tsx', '.json'], 27 | alias: { 28 | tests: ['./tests/'], 29 | '@components': './src/components', 30 | }, 31 | }, 32 | ], 33 | ]; 34 | if (api.env() !== 'development') { 35 | plugins.push(['transform-remove-console', {exclude: ['error', 'warn']}]); 36 | } 37 | return { 38 | presets, 39 | plugins, 40 | }; 41 | }; 42 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "react-native": { 3 | "analytics_auto_collection_enabled": false 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /** 17 | * @format 18 | */ 19 | 20 | import {AppRegistry} from 'react-native'; 21 | import App from './src'; 22 | import {name as appName} from './app.json'; 23 | 24 | AppRegistry.registerComponent(appName, () => App); 25 | -------------------------------------------------------------------------------- /ios/GoogleService-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CLIENT_ID 6 | correct_api_key 7 | REVERSED_CLIENT_ID 8 | correct_reversed_client_id 9 | API_KEY 10 | AXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 11 | GCM_SENDER_ID 12 | correct_gcm_sender_id 13 | PLIST_VERSION 14 | 1 15 | BUNDLE_ID 16 | openverify.replace.me 17 | PROJECT_ID 18 | abc-xyz-123 19 | STORAGE_BUCKET 20 | 21 | IS_ADS_ENABLED 22 | 23 | IS_ANALYTICS_ENABLED 24 | 25 | IS_APPINVITE_ENABLED 26 | 27 | IS_GCM_ENABLED 28 | 29 | IS_SIGNIN_ENABLED 30 | 31 | GOOGLE_APP_ID 32 | 1:123:ios:123ab 33 | 34 | 35 | -------------------------------------------------------------------------------- /ios/OpenVerify.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/OpenVerify.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/OpenVerify.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/OpenVerify.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/OpenVerify/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | #import 17 | #import 18 | 19 | @interface AppDelegate : UIResponder 20 | 21 | @property (nonatomic, strong) UIWindow *window; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/16.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/32.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/512.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/57.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/64.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "bootsplash_logo.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "dark" 13 | } 14 | ], 15 | "filename" : "bootsplash_logo_dark.png", 16 | "idiom" : "universal", 17 | "scale" : "1x" 18 | }, 19 | { 20 | "filename" : "bootsplash_logo@2x.png", 21 | "idiom" : "universal", 22 | "scale" : "2x" 23 | }, 24 | { 25 | "appearances" : [ 26 | { 27 | "appearance" : "luminosity", 28 | "value" : "dark" 29 | } 30 | ], 31 | "filename" : "bootsplash_logo_dark@2x.png", 32 | "idiom" : "universal", 33 | "scale" : "2x" 34 | }, 35 | { 36 | "filename" : "bootsplash_logo@3x.png", 37 | "idiom" : "universal", 38 | "scale" : "3x" 39 | }, 40 | { 41 | "appearances" : [ 42 | { 43 | "appearance" : "luminosity", 44 | "value" : "dark" 45 | } 46 | ], 47 | "filename" : "bootsplash_logo_dark@3x.png", 48 | "idiom" : "universal", 49 | "scale" : "3x" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark@2x.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/ios/OpenVerify/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo_dark@3x.png -------------------------------------------------------------------------------- /ios/OpenVerify/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/OpenVerify/RCTNightModeModule.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | #ifndef RCTNightModeModule_h 17 | #define RCTNightModeModule_h 18 | 19 | #import 20 | 21 | @interface RCTNightModeModule : NSObject 22 | 23 | @end 24 | 25 | #endif /* RCTNightModeModule_h */ 26 | -------------------------------------------------------------------------------- /ios/OpenVerify/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /* 17 | InfoPlist.strings 18 | */ 19 | "CFBundleDisplayName" = "Open Verify"; 20 | "NSCameraUsageDescription" = "This app must access the camera to scan vaccine certificate QR codes."; 21 | -------------------------------------------------------------------------------- /ios/OpenVerify/fr.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /* 17 | InfoPlist.strings 18 | */ 19 | "CFBundleDisplayName" = "VérifOuverte"; 20 | "NSCameraUsageDescription" = "Cette application doit accéder à la caméra de votre appareil pour numériser les codes QR des certificats de vaccination."; 21 | -------------------------------------------------------------------------------- /ios/OpenVerify/main.m: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | #import 17 | 18 | #import "AppDelegate.h" 19 | 20 | int main(int argc, char * argv[]) { 21 | @autoreleasepool { 22 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ios/OpenVerifyTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../node_modules/react-native/scripts/react_native_pods' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | platform :ios, '11.0' 5 | 6 | $RNFirebaseAnalyticsWithoutAdIdSupport=true 7 | 8 | target 'OpenVerify' do 9 | config = use_native_modules! 10 | 11 | use_react_native!( 12 | :path => config[:reactNativePath], 13 | # to enable hermes on iOS, change `false` to `true` and then install pods 14 | :hermes_enabled => true 15 | ) 16 | 17 | permissions_path = '../node_modules/react-native-permissions/ios' 18 | pod 'Permission-Camera', :path => "#{permissions_path}/Camera" 19 | 20 | target 'OpenVerifyTests' do 21 | inherit! :complete 22 | # Pods for testing 23 | end 24 | 25 | # Enables Flipper. 26 | # 27 | # Note that if you have use_frameworks! enabled, Flipper will not work and 28 | # you should disable the next line. 29 | if !ENV['CI'] 30 | use_flipper!() 31 | end 32 | 33 | post_install do |installer| 34 | react_native_post_install(installer) 35 | __apply_Xcode_12_5_M1_post_install_workaround(installer) 36 | end 37 | end -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /** 17 | * Metro configuration for React Native 18 | * https://github.com/facebook/react-native 19 | * 20 | * @format 21 | */ 22 | module.exports = (async () => { 23 | return { 24 | transformer: { 25 | getTransformOptions: async () => ({ 26 | transform: { 27 | experimentalImportSupport: false, 28 | inlineRequires: false, 29 | }, 30 | }), 31 | assetPlugins: ['react-native-svg-asset-plugin'], 32 | }, 33 | }; 34 | })(); 35 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | module.exports = { 17 | project: { 18 | ios: {}, 19 | android: {}, 20 | }, 21 | assets: ['./src/assets/fonts'], 22 | }; 23 | -------------------------------------------------------------------------------- /src/__mocks__/react-native-config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | // __mocks__/react-native-config.js 17 | export default { 18 | ENV: 'development', 19 | }; 20 | -------------------------------------------------------------------------------- /src/__mocks__/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "minimumMandatoryVersion": "1.0", 3 | "effectiveDate": "" 4 | } 5 | -------------------------------------------------------------------------------- /src/__tests__/Bullet.test.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {render} from '../jest'; 18 | import {Bullet} from 'components/core/bullet'; 19 | 20 | it('renders correctly the title when passed as a prop', () => { 21 | const text = 'Test Title'; 22 | const {queryAllByText} = render({text}); 23 | expect(queryAllByText(text)).toBeDefined(); 24 | }); 25 | -------------------------------------------------------------------------------- /src/assets/audio/beep.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/audio/beep.m4a -------------------------------------------------------------------------------- /src/assets/fonts/OpenSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/OpenSans-Bold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/OpenSans-Italic.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /src/assets/fonts/OpenSans-Semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/OpenSans-Semibold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/raleway-modified-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/raleway-modified-bold.ttf -------------------------------------------------------------------------------- /src/assets/fonts/raleway-modified-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/raleway-modified-regular.ttf -------------------------------------------------------------------------------- /src/assets/fonts/raleway-modified-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/fonts/raleway-modified-semibold.ttf -------------------------------------------------------------------------------- /src/assets/images/QRScannerFocus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/QRScannerFocus.png -------------------------------------------------------------------------------- /src/assets/images/QRScannerFocus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/QRScannerFocus@2x.png -------------------------------------------------------------------------------- /src/assets/images/QRScannerFocus@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/QRScannerFocus@3x.png -------------------------------------------------------------------------------- /src/assets/images/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo@1,5x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo@1,5x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo@2x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo@3x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo@4x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo_dark.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo_dark@1,5x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo_dark@1,5x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo_dark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo_dark@2x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo_dark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo_dark@3x.png -------------------------------------------------------------------------------- /src/assets/images/bootsplash_logo_dark@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/assets/images/bootsplash_logo_dark@4x.png -------------------------------------------------------------------------------- /src/assets/images/checkbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/checkbox_checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /src/assets/images/checkbox_checked_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/images/checkbox_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/assets/images/error_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/flip_camera_android.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/images/flip_camera_ios.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/images/information_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/openverify-icon-alert-error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/openverify-icon-alert-warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/openverify-icon-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/openverify_back_blue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/radio-selected.dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 -------------------------------------------------------------------------------- /src/assets/images/radio-selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/radio.dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/assets/images/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/assets/images/success_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/images/timeout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/timeout_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/torch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/torch_selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/unverified.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/verified.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/images/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/warning_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/images/warning_icon_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/theme/base/Typography.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export const Typography = { 17 | fonts: { 18 | ralewayBold: 'raleway-modified-bold', 19 | ralewayRegular: 'raleway-modified-regular', 20 | ralewaySemiBold: 'raleway-modified-semibold', 21 | openSansRegular: 'OpenSans-Regular', 22 | openSansSemiBold: 'OpenSans-Semibold', 23 | openSansItalic: 'OpenSans-Italic', 24 | openSansBold: 'OpenSans-Bold', 25 | }, 26 | fontSizes: { 27 | title: 32, 28 | androidBullet: 7, 29 | tiny: 10, 30 | caption: 12, 31 | body: 16, 32 | regular: 18, 33 | header1: 24, 34 | header2: 32, 35 | header3: 23, 36 | header4: 20, 37 | }, 38 | lineHeights: { 39 | xsm: 4, 40 | sm: 8, 41 | md: 16, 42 | xmd: 24.51, 43 | lg: 25.6, 44 | h3: 32, 45 | h4: 30, 46 | xlg: 41, 47 | }, 48 | letterSpacing: { 49 | xxs: -0.08, 50 | xs: -0.41, 51 | title: 0.64, 52 | h3: 0.32, 53 | }, 54 | }; 55 | -------------------------------------------------------------------------------- /src/assets/theme/base/Variables.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {PixelRatio} from 'react-native'; 17 | 18 | export const Variables = { 19 | borders: { 20 | xsm: 1 / PixelRatio.get(), 21 | sm: 1, 22 | md: 2, 23 | }, 24 | roundness: { 25 | xxsm: 4, 26 | xsm: 6, 27 | sm: 8, 28 | md: 16, 29 | xmd: 20, 30 | lg: 24, 31 | xlg: 32, 32 | }, 33 | spacing: { 34 | xsm: 4, 35 | sm: 8, 36 | md: 12, 37 | xmd: 20, 38 | lg: 24, 39 | xlg: 32, 40 | xxlg: 40, 41 | xxxlg: 48, 42 | }, 43 | sizes: { 44 | xxsm: 4, 45 | xsm: 8, 46 | sm: 16, 47 | md: 24, 48 | lg: 32, 49 | xlg: 40, 50 | xxlg: 48, 51 | xxxlg: 60, 52 | }, 53 | }; 54 | -------------------------------------------------------------------------------- /src/assets/theme/dark.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Typography} from './base/Typography'; 17 | import {Variables} from './base/Variables'; 18 | import {Colors} from './base/Colors'; 19 | import {ITheme} from './'; 20 | 21 | export const Theme: ITheme = { 22 | dark: true, 23 | typography: Typography, 24 | variables: Variables, 25 | colors: { 26 | ...Colors, 27 | primary: '#FFFFFF', // react-navigation 28 | text: '#FFFFFF', 29 | background: '#000000', 30 | card: '#000000', 31 | checkBoxFillColor: '#000000', 32 | checkBoxCheckColor: '#FFFFFF', 33 | secondaryButtonTextColor: '#FFFFFF', 34 | linkColor: '#C2E0FF', 35 | checkBoxTintColor: '#FFFFFF', 36 | border: '#4D4D4D', 37 | timeoutText: '#FFFFFF', 38 | timeoutBackground: '#4D4D4D', 39 | textSecondary: '#FFFFFF', 40 | tertiaryButtonTextColor: '#FFFFFF', 41 | modalColor: '#1A1A1A', 42 | alertLightRed: '#502225', 43 | warningLightYellow: '#443D24', 44 | }, 45 | }; 46 | -------------------------------------------------------------------------------- /src/assets/theme/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Typography} from './base/Typography'; 17 | import {Variables} from './base/Variables'; 18 | import {Colors} from './base/Colors'; 19 | 20 | export type IColors = typeof Colors; 21 | export type IVariables = typeof Variables; 22 | export type ITypography = typeof Typography; 23 | 24 | export type ITheme = { 25 | dark: boolean; 26 | colors: IColors; 27 | variables: IVariables; 28 | typography: ITypography; 29 | }; 30 | 31 | export {useTheme, getTheme} from './utils'; 32 | -------------------------------------------------------------------------------- /src/assets/theme/light.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Typography} from './base/Typography'; 17 | import {Variables} from './base/Variables'; 18 | import {Colors} from './base/Colors'; 19 | import {ITheme} from './'; 20 | 21 | export const Theme: ITheme = { 22 | dark: false, 23 | typography: Typography, 24 | variables: Variables, 25 | colors: Colors, 26 | }; 27 | -------------------------------------------------------------------------------- /src/assets/theme/utils/get_theme.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {ITheme} from '../'; 17 | import {Theme as DarkTheme} from '../dark'; 18 | import {Theme as LightTheme} from '../light'; 19 | import {ColorSchemeName} from 'react-native'; 20 | 21 | /* 22 | Return theme based on passed in color scheme (i.e light or dark) 23 | */ 24 | export const getTheme = (colorScheme: ColorSchemeName = 'light'): ITheme => { 25 | return colorScheme === 'dark' ? DarkTheme : LightTheme; 26 | }; 27 | -------------------------------------------------------------------------------- /src/assets/theme/utils/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export * from './use_theme'; 17 | export * from './get_theme'; 18 | -------------------------------------------------------------------------------- /src/assets/theme/utils/use_theme.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {useTheme as useStyledTheme} from 'styled-components/native'; 17 | import {ITheme} from '../'; 18 | /* 19 | Wrapper around styled component useTheme hook to support 20 | our custom theme types 21 | */ 22 | export const useTheme = useStyledTheme as () => ITheme; 23 | -------------------------------------------------------------------------------- /src/components/banner/WarningBanner.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React, {FC} from 'react'; 17 | import {Image, StyleProp, ViewProps} from 'react-native'; 18 | import {useTranslation} from 'translations/i18n'; 19 | import {BodyText, ContentView, Container, B} from './styles'; 20 | 21 | interface Props { 22 | visible?: boolean; 23 | style?: StyleProp; 24 | } 25 | 26 | const WarningBanner: FC = ({visible = false, style}) => { 27 | const I18n = useTranslation(); 28 | 29 | if (!visible) { 30 | return null; 31 | } 32 | 33 | return ( 34 | 35 | 36 | 37 | 38 | {I18n.t('AppNotMandatory.Banner.Title')}{' '} 39 | {I18n.t('AppNotMandatory.Banner.Body')} 40 | 41 | 42 | 43 | ); 44 | }; 45 | 46 | export default WarningBanner; 47 | -------------------------------------------------------------------------------- /src/components/banner/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as WarningBanner} from './WarningBanner'; 17 | -------------------------------------------------------------------------------- /src/components/banner/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | import {SafeAreaView} from 'react-native-safe-area-context'; 18 | 19 | export const Container = styled(SafeAreaView)` 20 | padding: ${({theme}) => theme.variables.spacing.xmd}px; 21 | background-color: ${({theme}) => theme.colors.warningYellow}; 22 | `; 23 | 24 | export const ContentView = styled.View` 25 | flex-direction: row; 26 | `; 27 | 28 | export const BodyText = styled.Text` 29 | flex-shrink: 1; 30 | font-family: ${({theme}) => theme.typography.fonts.openSansRegular}; 31 | color: ${({theme}) => theme.colors.bannerText}; 32 | font-size: ${({theme}) => theme.typography.fontSizes.body}px; 33 | line-height: ${({theme}) => theme.typography.lineHeights.h4}px; 34 | margin-left: ${({theme}) => theme.variables.spacing.xmd}px; 35 | `; 36 | 37 | export const B = styled.Text` 38 | font-family: ${({theme}) => theme.typography.fonts.openSansBold}; 39 | `; 40 | -------------------------------------------------------------------------------- /src/components/core/alerts/README.md: -------------------------------------------------------------------------------- 1 | # Page alerts 2 | 3 | Use a page alert to notify users of important information or changes on a page. 4 | 5 | ## When to use this component 6 | 7 | Page alerts contain **time-sensitive** pieces of information and typically appear 8 | at the top of a page to capture the user’s attention. 9 | 10 | Use page alerts to: 11 | 12 | - bring a user’s attention to important page information or system status 13 | - communicate the result of a user action (for example, error or success) 14 | 15 | Do not use page alerts to simply add emphasis or highlight content – use 16 | callouts and asides instead. 17 | 18 | ## Design System 19 | 20 | For more details, see [Page Alerts](https://designsystem.ontario.ca/components/detail/page-alerts.html) in the Design System. 21 | -------------------------------------------------------------------------------- /src/components/core/bullet/Bullet.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {StyleProp, TextStyle} from 'react-native'; 18 | import {useTranslation} from 'translations/i18n'; 19 | 20 | import {BulletContainer, BulletTextBullet, BulletText} from './styles'; 21 | 22 | export interface Props { 23 | children: React.ReactNode; 24 | style?: StyleProp; 25 | } 26 | 27 | export const Bullet = ({children, style}: Props) => { 28 | const I18n = useTranslation(); 29 | return ( 30 | 31 | 32 | {'●'} 33 | 34 | {children} 35 | 36 | ); 37 | }; 38 | -------------------------------------------------------------------------------- /src/components/core/bullet/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export * from './Bullet'; 17 | -------------------------------------------------------------------------------- /src/components/core/button/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export * from './Button'; 17 | -------------------------------------------------------------------------------- /src/components/core/modal/Modal.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {Modal as RNModal} from 'react-native'; 18 | 19 | import { 20 | ModalContainer, 21 | ModalProgressSubcontainer, 22 | ModalBodyText, 23 | ModalTitleText, 24 | } from './styles'; 25 | 26 | type Props = { 27 | isVisible: boolean; 28 | transparent?: boolean; 29 | title?: string; 30 | body?: string; 31 | }; 32 | 33 | export const Modal = ({ 34 | title, 35 | body, 36 | isVisible = false, 37 | transparent = true, 38 | }: Props) => { 39 | return ( 40 | 41 | 42 | 43 | {!!title && {title}} 44 | {!!body && {body}} 45 | 46 | 47 | 48 | ); 49 | }; 50 | -------------------------------------------------------------------------------- /src/components/core/modal/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export * from './Modal'; 17 | -------------------------------------------------------------------------------- /src/components/core/radio/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | 18 | export const RadioTouchableOpacity = styled.TouchableOpacity` 19 | flex-direction: row; 20 | padding-vertical: ${({theme}) => theme.variables.spacing.sm - 2}px; 21 | `; 22 | export const RadioText = styled.Text` 23 | font-family: ${({theme}) => theme.typography.fonts.openSansRegular}; 24 | color: ${({theme}) => theme.colors.text}; 25 | font-size: ${({theme}) => theme.typography.fontSizes.body}px; 26 | padding-left: ${({theme}) => theme.variables.spacing.lg - 8}px; 27 | padding-vertical: ${({theme}) => theme.variables.spacing.xsm + 2}px; 28 | `; 29 | -------------------------------------------------------------------------------- /src/components/results/BeepSound.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import Sound from 'react-native-sound'; 17 | Sound.setCategory('Ambient'); 18 | const BeepSound = new Sound('beep.m4a', Sound.MAIN_BUNDLE, e => { 19 | if (e) { 20 | console.debug(e); 21 | } else { 22 | console.debug({ 23 | duration: BeepSound.getDuration(), 24 | channels: BeepSound.getNumberOfChannels(), 25 | }); 26 | } 27 | }); 28 | export default BeepSound; 29 | -------------------------------------------------------------------------------- /src/components/settings/DisplaySetting/index.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React, {FC} from 'react'; 17 | import {Container, Name, Value} from './styles'; 18 | 19 | interface Props { 20 | name: string; 21 | value: string; 22 | } 23 | 24 | const DisplaySetting: FC = ({name, value}) => ( 25 | 26 | {name} 27 | {value} 28 | 29 | ); 30 | export default DisplaySetting; 31 | -------------------------------------------------------------------------------- /src/components/settings/Group/index.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React, {FC} from 'react'; 17 | import {View} from 'react-native'; 18 | import {Title} from './styles'; 19 | 20 | interface Props { 21 | title: string; 22 | children: React.ReactNode; 23 | } 24 | 25 | const Group: FC = ({title, children}) => ( 26 | 27 | {title} 28 | {children} 29 | 30 | ); 31 | export default Group; 32 | -------------------------------------------------------------------------------- /src/components/settings/Group/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | 18 | export const Title = styled.Text` 19 | font-family: ${({theme}) => theme.typography.fonts.ralewayBold}; 20 | letter-spacing: ${({theme}) => theme.typography.letterSpacing.title}px; 21 | color: ${({theme}) => theme.colors.text}; 22 | font-size: ${({theme}) => theme.typography.fontSizes.regular}px; 23 | padding-top: ${({theme}) => theme.variables.spacing.xlg - 2}px; 24 | padding-horizontal: ${({theme}) => theme.variables.spacing.lg}px; 25 | padding-bottom: ${({theme}) => theme.variables.spacing.sm}px; 26 | `; 27 | -------------------------------------------------------------------------------- /src/components/settings/Link/index.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React, {FC} from 'react'; 17 | import {StyleProp, TextStyle, TouchableOpacity} from 'react-native'; 18 | import {LinkText} from './styles'; 19 | import openURL from 'utils/openURL'; 20 | 21 | interface Props { 22 | url: string; 23 | children: string; 24 | modal?: boolean; 25 | style?: StyleProp; 26 | } 27 | 28 | const Link: FC = ({url, children, style, modal = true}) => ( 29 | { 31 | openURL(url, modal, children); 32 | }} 33 | accessibilityRole="link"> 34 | {children} 35 | 36 | ); 37 | export default Link; 38 | -------------------------------------------------------------------------------- /src/components/settings/Link/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | 18 | export const LinkText = styled.Text` 19 | font-family: ${({theme}) => theme.typography.fonts.openSansRegular}; 20 | color: ${({theme}) => theme.colors.text}; 21 | font-size: ${({theme}) => theme.typography.fontSizes.body}px; 22 | text-decoration: underline; 23 | text-decoration-line: underline; 24 | text-decoration-style: solid; 25 | text-decoration-color: ${({theme}) => theme.colors.linkColor}; 26 | `; 27 | -------------------------------------------------------------------------------- /src/config/analytics.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export const verifyEvent = { 17 | VACCINE_SCAN: 'vaccine_scan', 18 | CONNECTION_PROMPT: 'connection_prompt', 19 | FLASHLIGHT_CLICK: 'flashlight_click', 20 | VERSION_UPDATE_PROMPT: 'version_update_prompt', 21 | VERSION_UPDATE_CLICK: 'version_update_click', 22 | SCANNER_TIMEOUT: 'scanner_timeout', 23 | VERIFIED_TIMEOUT: 'verified_timeout', 24 | VERIFIED_BACKGROUNDED: 'verified_backgrounded', 25 | LINK_CLICK: 'click', 26 | SWITCH_CAMERA: 'switch_camera', 27 | }; 28 | -------------------------------------------------------------------------------- /src/config/constants.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export const TERMS_VERSION = 1; 17 | -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export const LocalConfig = { 17 | API_URL: 'https://stage.files.ontariogovernment.ca/apps/verify/', 18 | RULES_FILE_PATH: 'verifyRulesetON.jws', 19 | APP_STORE_LINK_ID: '1584425317', 20 | WARNING_INTERVAL_MIN: '4', 21 | WARNING_INTERVAL_MAX: '5', 22 | ALERT_INTERVAL_MIN: '6', 23 | ALERT_INTERVAL_MAX: '6', 24 | EXPIRED_INTERVAL: '7', 25 | UPDATE_INTERVAL_CHECK: '24', 26 | SCANNER_TIMEOUT: 45_000, // 45 Seconds 27 | SCANNER_PROCESSING_ALERT_TIMEOUT: 3_000, // 3 Seconds 28 | }; 29 | -------------------------------------------------------------------------------- /src/containers/common/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as CameraMissingPermission} from './CameraMissingPermission'; 17 | -------------------------------------------------------------------------------- /src/containers/home/AppUpdate/body.en.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {CloseImage, TitleText, P, B} from 'containers/home/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyEn = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | return ( 23 | <> 24 | 25 | 26 | Connect to app store for update 27 |

There is a new version of Open Verify available in the app store.

28 |

29 | Your device needs to connect to the app store to update the application. 30 |

31 |

32 | This app will no longer scan QR codes until it has been updated. 33 |

34 | 35 | ); 36 | }); 37 | export default BodyEn; 38 | -------------------------------------------------------------------------------- /src/containers/home/DateTamper/body.en.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {CloseImage, TitleText, P} from 'containers/home/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyEn = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | return ( 23 | <> 24 | 25 | 26 | Update device date and time settings 27 |

28 | This app uses the device's date and time settings to work offline and 29 | keep technical requirements up-to date. 30 |

31 |

32 | Changing the date and time settings on this device may stop the app from 33 | working. 34 |

35 | 36 | ); 37 | }); 38 | export default BodyEn; 39 | -------------------------------------------------------------------------------- /src/containers/home/DateTamper/body.fr.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {CloseImage, TitleText, P} from 'containers/home/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyFr = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | return ( 23 | <> 24 | 25 | 26 | 27 | Mettre à jour les paramètres de date et d’heure de l’appareil 28 | 29 |

30 | Cette application utilise les paramètres de date et d’heure de 31 | l’appareil pour fonctionner hors ligne et maintenir à jour les exigences 32 | techniques. 33 |

34 |

35 | La modification des paramètres de date et d’heure de cet appareil peut 36 | empêcher le bon fonctionnement de l’application. 37 |

38 | 39 | ); 40 | }); 41 | export default BodyFr; 42 | -------------------------------------------------------------------------------- /src/containers/home/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as HomeScreen} from './HomeScreen'; 17 | export {default as Scanner} from './Scanner'; 18 | export {default as Update} from './Update'; 19 | export {default as AppUpdate} from './AppUpdate'; 20 | export {default as DateTamper} from './DateTamper'; 21 | export {default as TermsUpdate} from './TermsUpdate'; 22 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotMandatory/body.en.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyEn = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | 23 | return ( 24 | <> 25 | 26 | Proof of vaccination is not mandatory 27 | 28 | 29 | The Open Verify app will no longer be available as of June 24, 2022. The 30 | app will not scan QR codes and will not receive updates or support after 31 | this date. 32 | 33 | 34 | ); 35 | }); 36 | 37 | export default BodyEn; 38 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotMandatory/body.fr.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyFr = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | 23 | return ( 24 | <> 25 | 26 | La preuve de vaccination n’est pas obligatoire. 27 | 28 | 29 | L’application VérifOuverte ne sera plus offerte à partir du 24 juin 30 | 2022. L'application ne scannera pas les codes QR et ne sera plus mise à 31 | jour ni prise en charge après cette date. 32 | 33 | 34 | ); 35 | }); 36 | 37 | export default BodyFr; 38 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotMandatory/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | 18 | export const WarningImage = styled.Image.attrs(() => ({ 19 | source: require('assets/images/openverify-icon-alert-warning.svg'), 20 | }))` 21 | margin-top: ${({theme}) => theme.variables.spacing.lg}px; 22 | `; 23 | 24 | export const B = styled.Text` 25 | font-family: ${({theme}) => theme.typography.fonts.openSansBold}; 26 | font-size: ${({theme}) => theme.typography.fontSizes.body}px; 27 | margin-bottom: ${({theme}) => theme.variables.spacing.lg}px; 28 | color: ${({theme}) => theme.colors.text}; 29 | `; 30 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotSupported/body.en.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyEn = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | 23 | return ( 24 | <> 25 | Open Verify is no longer available 26 | 27 | The app will not scan QR codes and will not receive any more updates or 28 | support. 29 | 30 | 31 | ); 32 | }); 33 | 34 | export default BodyEn; 35 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotSupported/body.fr.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import useForwardedRef from 'utils/useForwardedRef'; 19 | 20 | const BodyFr = React.forwardRef((_, forwardedRef) => { 21 | const focusRef = useForwardedRef(forwardedRef); 22 | 23 | return ( 24 | <> 25 | VérifOuverte n'est plus offert 26 | 27 | L'application ne scannera pas les codes QR et ne sera plus mise à jour 28 | ni prise en charge. 29 | 30 | 31 | ); 32 | }); 33 | 34 | export default BodyFr; 35 | -------------------------------------------------------------------------------- /src/containers/onboarding/AppNotSupported/styles.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import styled from 'styled-components/native'; 17 | 18 | export const ErrorImage = styled.Image.attrs(() => ({ 19 | source: require('assets/images/openverify-icon-close.svg'), 20 | }))` 21 | margin-top: ${({theme}) => theme.variables.spacing.lg}px; 22 | `; 23 | -------------------------------------------------------------------------------- /src/containers/onboarding/AutomaticUpdates/body.en.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import {Bullet} from 'components/core/bullet'; 19 | import useForwardedRef from 'utils/useForwardedRef'; 20 | 21 | const BodyEn = React.forwardRef((_, forwardedRef) => { 22 | const focusRef = useForwardedRef(forwardedRef); 23 | return ( 24 | <> 25 | Automatic updates 26 | 27 | The app will need to connect to the internet weekly. 28 | 29 | When connected, it will: 30 | 31 | let you know if there is an updated version of the app available 32 | 33 | update technical requirements 34 | 35 | ); 36 | }); 37 | export default BodyEn; 38 | -------------------------------------------------------------------------------- /src/containers/onboarding/AutomaticUpdates/body.fr.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {TitleText, SubtitleText} from 'containers/onboarding/styles'; 18 | import {Bullet} from 'components/core/bullet'; 19 | import useForwardedRef from 'utils/useForwardedRef'; 20 | 21 | const BodyFr = React.forwardRef((_, forwardedRef) => { 22 | const focusRef = useForwardedRef(forwardedRef); 23 | return ( 24 | <> 25 | Mises à jour automatiques 26 | 27 | Cette application devra se connecter à l’Internet chaque semaine. 28 | 29 | Une fois connectée, elle{' '}: 30 | 31 | vous indique si une version à jour de l’application est disponible; 32 | 33 | met à jour les exigences techniques. 34 | 35 | ); 36 | }); 37 | export default BodyFr; 38 | -------------------------------------------------------------------------------- /src/containers/onboarding/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as AppForBusinesses} from './AppForBusinesses'; 17 | export {default as WhatAppDoes} from './WhatAppDoes'; 18 | export {default as WhatAppDoesNot} from './WhatAppDoesNot'; 19 | export {default as Terms} from './Terms'; 20 | export {default as CameraPermissions} from './CameraPermissions'; 21 | export {default as AutomaticUpdates} from './AutomaticUpdates'; 22 | export {default as ReadyToScan} from './ReadyToScan'; 23 | export {default as AppNotMandatory} from './AppNotMandatory'; 24 | export {default as AppNotSupported} from './AppNotSupported'; 25 | -------------------------------------------------------------------------------- /src/containers/results/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as InvalidResultScreen} from './InvalidResult'; 17 | export {default as UnverifiedResultScreen} from './UnverifiedResult'; 18 | export {default as VerifiedResultScreen} from './VerifiedResult'; 19 | export {default as ScannerTimedOut} from './ScannerTimedOut'; 20 | -------------------------------------------------------------------------------- /src/containers/settings/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export {default as SettingsScreen} from './SettingsScreen'; 17 | export {default as Language} from './Language'; 18 | export {default as UpdatesHelp} from './UpdatesHelp'; 19 | export {default as VisualAppearance} from './VisualAppearance'; 20 | export {default as HowItWorks} from './HowItWorks'; 21 | export {default as WhatResultsMean} from './WhatResultsMean'; 22 | export {default as HelpUsImprove} from './HelpUsImprove'; 23 | -------------------------------------------------------------------------------- /src/controllers/OrientationControler.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {FC, useEffect} from 'react'; 17 | import Orientation from 'react-native-orientation-locker'; 18 | import DeviceInfo from 'react-native-device-info'; 19 | 20 | export interface Props {} 21 | 22 | const OrientationController: FC = ({}) => { 23 | useEffect(() => { 24 | async function checkForTabletMode() { 25 | const isTablet = await DeviceInfo.isTablet(); 26 | if (!isTablet) { 27 | // https://github.com/wonday/react-native-orientation-locker/issues/198 28 | setTimeout(() => Orientation.lockToPortrait(), 10); 29 | } else { 30 | setTimeout(() => Orientation.unlockAllOrientations(), 10); 31 | } 32 | } 33 | checkForTabletMode(); 34 | }, []); 35 | 36 | return null; 37 | }; 38 | 39 | export default OrientationController; 40 | -------------------------------------------------------------------------------- /src/declarations.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | declare module '*.html' { 17 | const content: string; 18 | export default content; 19 | } 20 | -------------------------------------------------------------------------------- /src/jest/Jest.utils.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React, {ReactElement} from 'react'; 17 | import {render, RenderOptions} from '@testing-library/react-native'; 18 | import {ThemeProvider} from 'styled-components/native'; 19 | import {Theme as DefaultTheme} from '../assets/theme/light'; 20 | 21 | interface ProvidersProps { 22 | children: React.ReactNode | undefined; 23 | } 24 | 25 | const Providers = ({children}: ProvidersProps): ReactElement => { 26 | return {children}; 27 | }; 28 | 29 | const customRender = (ui: ReactElement, options: RenderOptions = {}) => { 30 | return render(ui, {wrapper: Providers, ...options}); 31 | }; 32 | 33 | export {customRender as render}; 34 | -------------------------------------------------------------------------------- /src/jest/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export * from './Jest.utils'; 17 | -------------------------------------------------------------------------------- /src/modules/NightMode/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /** 17 | * This exposes the native NightModeModule module as a JS module. This has 18 | * three functions: 19 | * 20 | * setLight() which enables light theme on iOS or Android 21 | * setDark() which enables dark theme on iOS or Android 22 | * setSystem() which follows system preference 23 | * 24 | */ 25 | import {NativeModules} from 'react-native'; 26 | import {NightModeModuleInterface} from './types'; 27 | const {NightModeModule} = NativeModules; 28 | export default NightModeModule as NightModeModuleInterface; 29 | -------------------------------------------------------------------------------- /src/modules/NightMode/types.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export interface NightModeModuleInterface { 17 | setLight(): void; 18 | setDark(): void; 19 | setSystem(): void; 20 | } 21 | -------------------------------------------------------------------------------- /src/modules/SecureFlag/index.android.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /** 17 | * This exposes the native SecureFlagModule module as a JS module. This has 18 | * two functions, enable() which enables FLAG_SECURE on the current activity 19 | * and disable() which clears the FLAG_SECURE flag. 20 | * 21 | * See FLAG_SECURE documentation at https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE 22 | */ 23 | import {NativeModules} from 'react-native'; 24 | import {SecureFlagModuleInterface} from './types'; 25 | const {SecureFlagModule} = NativeModules; 26 | export default SecureFlagModule as SecureFlagModuleInterface; 27 | -------------------------------------------------------------------------------- /src/modules/SecureFlag/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | /** 17 | * This is a no-op fallback for the SecureFlagModule module as a JS module. 18 | * This has two functions, enable() which on Android enables FLAG_SECURE 19 | * on the current activity and disable() which clears the FLAG_SECURE flag. 20 | * 21 | * See FLAG_SECURE documentation at https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE 22 | */ 23 | import {SecureFlagModuleInterface} from './types'; 24 | const SecureFlagModule: SecureFlagModuleInterface = { 25 | enable: () => {}, 26 | disable: () => {}, 27 | }; 28 | export default SecureFlagModule; 29 | -------------------------------------------------------------------------------- /src/modules/SecureFlag/types.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export interface SecureFlagModuleInterface { 17 | enable(): void; 18 | disable(): void; 19 | } 20 | -------------------------------------------------------------------------------- /src/navigation/AppNotSupportedNavigation.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import React from 'react'; 17 | import {createStackNavigator, TransitionPresets} from '@react-navigation/stack'; 18 | 19 | import * as OnboardingScreens from 'containers/onboarding'; 20 | import * as route from 'containers/routes'; 21 | import Logo from 'components/logo'; 22 | 23 | const Stack = createStackNavigator(); 24 | 25 | const AppNotSupportedNavigation = () => { 26 | return ( 27 | , 31 | headerMode: 'float', 32 | ...TransitionPresets.SlideFromRightIOS, 33 | }}> 34 | 38 | 39 | ); 40 | }; 41 | 42 | export default AppNotSupportedNavigation; 43 | -------------------------------------------------------------------------------- /src/redux/actions/types/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export const ONBOARD_USER = 'ONBOARD_USER'; 17 | export const SELECT_LANGUAGE = 'SELECT_LANGUAGE'; 18 | export const SET_VISUAL_APPEARANCE = 'SET_VISUAL_APPEARANCE'; 19 | export const SET_MANUAL_UPDATE = 'SET_MANUAL_UPDATE'; 20 | export const SET_APP_UPDATE_SETTING = 'SET_APP_UPDATE_SETTING'; 21 | 22 | export const FETCH_RULESET_REQUEST = 'FETCH_RULESET_REQUEST'; 23 | export const FETCH_RULESET_SUCCESS = 'FETCH_RULESET_SUCCESS'; 24 | export const FETCH_RULESET_FAILURE = 'FETCH_RULESET_FAILURE'; 25 | 26 | export const ACCEPT_TERMS = 'ACCEPT_TERMS'; 27 | -------------------------------------------------------------------------------- /src/services/QRCodeValidator/docs/QRCodeValidator-architecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/src/services/QRCodeValidator/docs/QRCodeValidator-architecture.pdf -------------------------------------------------------------------------------- /src/services/QRCodeValidator/lib/models/Jwks.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export interface Jwks { 17 | keys: Key[]; 18 | } 19 | 20 | export interface Key { 21 | alg?: string; 22 | crv?: string; 23 | kid: string; 24 | kty: string; 25 | use?: string; 26 | x?: string; 27 | y?: string; 28 | d?: string; 29 | x5c?: string[]; 30 | } 31 | -------------------------------------------------------------------------------- /src/services/QRCodeValidator/lib/models/TrustedIssuersJWKS.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Jwks} from './Jwks'; 17 | 18 | export interface TrustedIssuersJWKS { 19 | [iss: string]: Jwks; 20 | } 21 | -------------------------------------------------------------------------------- /src/services/RulesetSignatureValidator/trustedKeys.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | export default [ 17 | // Production 18 | { 19 | crv: 'Ed25519', 20 | x: 'J7OsTIwW3170D-S4Nt2IKUPoL3FCaF8qzF6fWUojA4c', 21 | kty: 'OKP', 22 | }, 23 | ]; 24 | -------------------------------------------------------------------------------- /src/styled.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import 'styled-components'; 17 | import {ITheme} from 'assets/theme'; 18 | 19 | declare module 'styled-components' { 20 | export interface DefaultTheme extends ITheme {} 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/analytics.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import analytics from '@react-native-firebase/analytics'; 17 | 18 | export const trackLogEvent = async (event: string, otherParams = {}) => { 19 | try { 20 | await analytics().logEvent(event, { 21 | ...otherParams, 22 | }); 23 | return true; 24 | } catch (e: unknown) { 25 | if (e instanceof Error) { 26 | console.log(`Error in the execution of trackLogEvent ${e?.message}`); 27 | } 28 | if (typeof e === 'string') { 29 | console.log(`Error in the execution of trackLogEvent ${e}`); 30 | } 31 | return false; 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /src/utils/base64-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {atob} from 'abab'; 17 | import {decode} from './base64-binary'; 18 | import {utils} from 'elliptic'; 19 | 20 | export function strToArrayOfBytes(str: string) { 21 | return utils.toArray(str); 22 | } 23 | 24 | export function toHex(arr: ArrayBuffer) { 25 | return utils.toHex(arr).toUpperCase(); 26 | } 27 | export function Base64URLtoString(input: string) { 28 | input = input.replace(/-/g, '+'); 29 | input = input.replace(/_/g, '/'); 30 | return atob(input); 31 | } 32 | export function Base64URLtoBuffer(input: string) { 33 | input = input.replace(/-/g, '+'); 34 | input = input.replace(/_/g, '/'); 35 | return decode(input); 36 | } 37 | -------------------------------------------------------------------------------- /src/utils/openURL.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Linking} from 'react-native'; 17 | import InAppBrowser from 'react-native-inappbrowser-reborn'; 18 | import {trackLogEvent} from 'utils/analytics'; 19 | import {verifyEvent} from 'config/analytics'; 20 | 21 | const openURL = async ( 22 | url: string, 23 | modal: boolean = true, 24 | linkText: string = '', 25 | ) => { 26 | try { 27 | trackLogEvent(verifyEvent.LINK_CLICK, { 28 | outbound: false, 29 | link_url: url, 30 | link_text: linkText, 31 | }); 32 | if (await InAppBrowser.isAvailable()) { 33 | await InAppBrowser.open(url, { 34 | dismissButtonStyle: 'done', 35 | animated: true, 36 | modalPresentationStyle: 'automatic', 37 | modalEnabled: modal, 38 | enableBarCollapsing: true, 39 | }); 40 | } else { 41 | Linking.openURL(url); 42 | } 43 | } catch (e) { 44 | console.error(e); 45 | } 46 | }; 47 | export default openURL; 48 | -------------------------------------------------------------------------------- /src/utils/screen.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {Home, Settings} from 'containers/routes'; 17 | 18 | export const shouldDisplayBanner = ( 19 | currentRouteName: string | undefined, 20 | ): boolean => { 21 | const bannerRoutes: string[] = [Home.HomeScreen, Settings.SettingsScreen]; 22 | 23 | const showBanner = bannerRoutes?.includes(currentRouteName ?? ''); 24 | return showBanner; 25 | }; 26 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import jsonLogic from 'json-logic-js'; 17 | import {TrustedIssuersJWKS} from '../services/QRCodeValidator/lib/models/TrustedIssuersJWKS'; 18 | 19 | export interface Ruleset { 20 | name?: string; 21 | date?: string; 22 | termsOfUse?: { 23 | en: [string]; 24 | fr: [string]; 25 | }; 26 | minimumVersion?: AppUpdateSetting; 27 | ruleset?: [Rule]; 28 | publicKeys?: TrustedIssuersJWKS; 29 | } 30 | 31 | export interface Rule { 32 | expiry: string; 33 | ruleDescription: { 34 | en: [string]; 35 | fr: [string]; 36 | }; 37 | rule: jsonLogic.RulesLogic; 38 | } 39 | 40 | export interface AppUpdateSetting { 41 | minimumMandatoryVersion?: string; 42 | effectiveDate?: string; 43 | } 44 | -------------------------------------------------------------------------------- /src/utils/useLinkIfSupported.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {useState, useEffect} from 'react'; 17 | import {Linking} from 'react-native'; 18 | 19 | const useLinkIfSupported = (link: string) => { 20 | const [supportedLink, setSupportedLink] = useState(null); 21 | useEffect(() => { 22 | (async () => { 23 | try { 24 | if (await Linking.canOpenURL(link)) { 25 | setSupportedLink(link); 26 | } 27 | } catch (e) { 28 | console.error(e); 29 | } 30 | })(); 31 | }, [link]); 32 | return supportedLink; 33 | }; 34 | export default useLinkIfSupported; 35 | -------------------------------------------------------------------------------- /src/utils/useTelLink.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {useState, useEffect} from 'react'; 17 | import {Linking} from 'react-native'; 18 | 19 | const useTelLink = (number: string) => { 20 | const [telLink, setTelLink] = useState(null); 21 | useEffect(() => { 22 | (async () => { 23 | try { 24 | if (await Linking.canOpenURL(`telprompt:${number}`)) { 25 | setTelLink(`telprompt:${number}`); 26 | } else if (await Linking.canOpenURL(`tel:${number}`)) { 27 | setTelLink(`tel:${number}`); 28 | } 29 | } catch (e) { 30 | console.error(e); 31 | } 32 | })(); 33 | }, [number]); 34 | return telLink; 35 | }; 36 | export default useTelLink; 37 | -------------------------------------------------------------------------------- /src/utils/useWhenChanged.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {useEffect, useRef, useState} from 'react'; 17 | 18 | // Based on an idea called "usePrevious" from the React team 19 | function useWhenChanged( 20 | callback: (current: typeof prop, previousValue: typeof prop) => void, 21 | prop: any, 22 | initialValue?: typeof prop, 23 | ): void { 24 | const [internalState, setInternalState] = useState(initialValue ?? prop); 25 | const previousValueRef = useRef(); 26 | const previousValue = previousValueRef.current; 27 | if (prop !== previousValue && prop !== internalState) { 28 | setInternalState(prop); 29 | callback(prop, previousValue); 30 | } 31 | useEffect(() => { 32 | previousValueRef.current = prop; 33 | }, [prop]); 34 | } 35 | export default useWhenChanged; 36 | -------------------------------------------------------------------------------- /src/utils/withinUnder12GracePeriod.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Queen’s Printer for Ontario 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | import {DateTime} from 'luxon'; 17 | 18 | export default function withinUnder12GracePeriod( 19 | birthDate: DateTime | undefined, 20 | ): boolean { 21 | if (birthDate === undefined) { 22 | return false; 23 | } 24 | const today = DateTime.now().startOf('day'); 25 | const age = today.diff(birthDate, ['years', 'weeks']); 26 | return ( 27 | age.years < 12 || 28 | (birthDate.year >= 2010 && age.years === 12 && age.weeks <= 12) 29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /test-data/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /test-data/README.md: -------------------------------------------------------------------------------- 1 | Contains data for tests: 2 | - examples downloaded from SMART Health Card spec site by `src/fetch-examples.ts` 3 | - generated by `src/generate-crypto-test-data.ts` and [this](https://github.com/microsoft/health-cards/blob/generate-test-files/generate-examples/src/index.ts) script. 4 | -------------------------------------------------------------------------------- /test-data/badjwks/.well-known/jwks.json: -------------------------------------------------------------------------------- 1 | This is not a valid JSON Web Key Set! 2 | -------------------------------------------------------------------------------- /test-data/example-00-c-jws-payload-minified.json: -------------------------------------------------------------------------------- 1 | {"iss":"https://spec.smarthealth.cards/examples/issuer","nbf":1630616666.128,"vc":{"type":["https://smarthealth.cards#health-card","https://smarthealth.cards#immunization","https://smarthealth.cards#covid19"],"credentialSubject":{"fhirVersion":"4.0.1","fhirBundle":{"resourceType":"Bundle","type":"collection","entry":[{"fullUrl":"resource:0","resource":{"resourceType":"Patient","name":[{"family":"Anyperson","given":["John","B."]}],"birthDate":"1951-01-20"}},{"fullUrl":"resource:1","resource":{"resourceType":"Immunization","status":"completed","vaccineCode":{"coding":[{"system":"http://hl7.org/fhir/sid/cvx","code":"207"}]},"patient":{"reference":"resource:0"},"occurrenceDateTime":"2021-01-01","performer":[{"actor":{"display":"ABC General Hospital"}}],"lotNumber":"0000001"}},{"fullUrl":"resource:2","resource":{"resourceType":"Immunization","status":"completed","vaccineCode":{"coding":[{"system":"http://hl7.org/fhir/sid/cvx","code":"207"}]},"patient":{"reference":"resource:0"},"occurrenceDateTime":"2021-01-29","performer":[{"actor":{"display":"ABC General Hospital"}}],"lotNumber":"0000007"}}]}}}} -------------------------------------------------------------------------------- /test-data/example-00-d-jws.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJPb9QwEMW_SjVcs0mcwm43N7ZIBQ4IicIF7cHrzG6M_CeynahLle_OjHcrCmp74oRvEz___N5z7kHHCC30KQ2xrao4oCqjlSH1KE3qSyVDFyu8k3YwGCtSjxigALfbQyuWl_VSLGmVorkqYFLQ3kM6Dgjt99_Mv3GvTsOCB0I9r9PWjk7_lEl796JQ-Ul3Yg3bAlTADl3S0nwZdz9QJba073X4hiEyp4XXZV0K4vHXzeg6g6wJGP0YFN5m-3DeKM5xQHljiHZyQheEI2Uk8mjM12BI8HC-rUnwMDwB_kxx6Dx3KC2eINJqQzx460gTYr7joCd03ONH3_O8KWE7U8CdpvDvZGKWWL8Ri1osmhrmuXjSjXjZzYc_K45JpjHmuPzgCfmBJqmUdnjtu0xQvtPukI3HY0xoz_8PvUxvVqUPh4qbraLuKjXdEUDlk9DUK5i3cwHDuYJsZ48BHXt73CCJvFJjyFsc9lbbE6LJgWuORVXtfbD0P7IXqZIPjOx0HIzMdW6uL27QYZDm4r2Pg07SUFFUovHp02h3fBTqvMSzDTb_ZYPN-l83uOKNmdYv.kgkuHWZAAE3DmgdR2-hydvXYEuBWMNYfiwGjEvgqqFWrUAIXWk81RpB5EuTTbr85ZQIctgZAO2ER2J4hltVJog -------------------------------------------------------------------------------- /test-data/example-00-e-file.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJPb9QwEMW_SjVcs0mcwm43N7ZIBQ4IicIF7cHrzG6M_CeynahLle_OjHcrCmp74oRvEz___N5z7kHHCC30KQ2xrao4oCqjlSH1KE3qSyVDFyu8k3YwGCtSjxigALfbQyuWl_VSLGmVorkqYFLQ3kM6Dgjt99_Mv3GvTsOCB0I9r9PWjk7_lEl796JQ-Ul3Yg3bAlTADl3S0nwZdz9QJba073X4hiEyp4XXZV0K4vHXzeg6g6wJGP0YFN5m-3DeKM5xQHljiHZyQheEI2Uk8mjM12BI8HC-rUnwMDwB_kxx6Dx3KC2eINJqQzx460gTYr7joCd03ONH3_O8KWE7U8CdpvDvZGKWWL8Ri1osmhrmuXjSjXjZzYc_K45JpjHmuPzgCfmBJqmUdnjtu0xQvtPukI3HY0xoz_8PvUxvVqUPh4qbraLuKjXdEUDlk9DUK5i3cwHDuYJsZ48BHXt73CCJvFJjyFsc9lbbE6LJgWuORVXtfbD0P7IXqZIPjOx0HIzMdW6uL27QYZDm4r2Pg07SUFFUovHp02h3fBTqvMSzDTb_ZYPN-l83uOKNmdYv.kgkuHWZAAE3DmgdR2-hydvXYEuBWMNYfiwGjEvgqqFWrUAIXWk81RpB5EuTTbr85ZQIctgZAO2ER2J4hltVJog" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/example-00-f-qr-code-numeric-value-0.txt: -------------------------------------------------------------------------------- 1 | shc:/5676290952432060346029243740446031222959532654603460292540772804336028702864716745222809286133314564376531415906402203064504590856435503414245413640370636654171372412363803043756220467374075323239254334433260573601064529355312367424324250386141547003645474640706331045282136072860542825105427697726093250225676655259316356503461275469226467100766377324775050503308771062272722220603303605756952660766226861633827043024066838764123257672116206447426227138617560582031575336767242635041383126644166696268442531360662320923586171121250327306267339703422210328126912354261621050632463101209293600406306445806532063392023630638036574455577123629535203100643075960247667074343454103300773274377565809580974292635034425330864000623563032087536276361602745763659562428054062116461320405212811272200694065743223742150627575092375063022055628332968367775070903583944691061662255030634332706503411304224104011225567732373452630424231113760046670645969647243613861436145774454503007082967612764723577582257642129686440556561717203753673713572622806274403756677501135734075734168403559076853695231723061435524402363621223403008600654742723724429704507112127437110062222297325296176257054126353532409312958427234374143715753230335102843684528356134750327287732554209723105103644452364076905355803103840252540667327670305590657213968733238772339535045443533006311067234303364554473016258627227424520202406236458553705005976557343442472214232334457607426612473586868254269402028434262110437672108247239395369110845362854715845203405243705290759637141296658 -------------------------------------------------------------------------------- /test-data/example-00-g-qr-code-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-00-g-qr-code-0.bmp -------------------------------------------------------------------------------- /test-data/example-00-g-qr-code-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-00-g-qr-code-0.jpg -------------------------------------------------------------------------------- /test-data/example-00-g-qr-code-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-00-g-qr-code-0.png -------------------------------------------------------------------------------- /test-data/example-01-c-jws-payload-minified.json: -------------------------------------------------------------------------------- 1 | {"iss":"https://spec.smarthealth.cards/examples/issuer","nbf":1630616666.277,"vc":{"type":["https://smarthealth.cards#health-card","https://smarthealth.cards#immunization","https://smarthealth.cards#covid19"],"credentialSubject":{"fhirVersion":"4.0.1","fhirBundle":{"resourceType":"Bundle","type":"collection","entry":[{"fullUrl":"resource:0","resource":{"resourceType":"Patient","name":[{"family":"Anyperson","given":["Jane","C."]}],"birthDate":"1961-01-20"}},{"fullUrl":"resource:1","resource":{"resourceType":"Immunization","status":"completed","vaccineCode":{"coding":[{"system":"http://hl7.org/fhir/sid/cvx","code":"208"}]},"patient":{"reference":"resource:0"},"occurrenceDateTime":"2021-01-01","performer":[{"actor":{"display":"ABC General Hospital"}}],"lotNumber":"0000002"}},{"fullUrl":"resource:2","resource":{"resourceType":"Immunization","status":"completed","vaccineCode":{"coding":[{"system":"http://hl7.org/fhir/sid/cvx","code":"208"}]},"patient":{"reference":"resource:0"},"occurrenceDateTime":"2021-01-29","performer":[{"actor":{"display":"ABC General Hospital"}}],"lotNumber":"0000008"}}]}}}} -------------------------------------------------------------------------------- /test-data/example-01-d-jws.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IkVCS09yNzJRUURjVEJVdVZ6QXprZkJUR2V3MFpBMTZHdVd0eTY0blMtc3cifQ.3ZJJb9swEIX_SjC9ytpS2LFujQsk6aEo0LSXwgeaGlssuAhchLiB_ntnaAddkOTUU3mj-Obje496BBUCdDDEOIauqsKIsgxG-Dig0HEopfB9qPBBmFFjqEid0EMBdreHrlle1stmSatsV6sCJgndI8TjiNB9-8X8G_fmtFnwhlAv65QxyaofIipnXxVKN6m-WcO2AOmxRxuV0J_T7jvKyJb2g_Jf0QfmdPC2rMuGePz1OtleI2s8Bpe8xPtsH84HxTkOSKc10U5O6AJ_pIxETlp_8ZoET_NdTYKnzTPgTxSH5rlDYfAEEUZp4sE7Sxof8h0HNaHlHj8Iyz42JWxnCrhTFP69iMxq1stmUTeLtoZ5Lp5107zu5u7PikMUMYUclx88Ij_QJKRUFjeuzwTpemUP2Xg4hojm_P_Qywx6VTp_qLjZKqi-ktMDAWSehLa-gnk7FzCeK8h29ujRsrffGySRkzL5fMRh75U5IdocuOZYVNXeeUP_I3sRMjrPyF6FUYtc5_Xm4gYteqEvbl0YVRSaiqIStYsfk9nxKNR5tS822P6XDbbrf93gFR_MtH4C.plovRahm_Kj4-ZG9Q9KEh9SAyZkZL1xJhwXcRfm4JXpS6ocYy2Y0R5OdXxmX-JNHMVjh3spNpS-vPgpyyeM-2g -------------------------------------------------------------------------------- /test-data/example-01-e-file.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IkVCS09yNzJRUURjVEJVdVZ6QXprZkJUR2V3MFpBMTZHdVd0eTY0blMtc3cifQ.3ZJJb9swEIX_SjC9ytpS2LFujQsk6aEo0LSXwgeaGlssuAhchLiB_ntnaAddkOTUU3mj-Obje496BBUCdDDEOIauqsKIsgxG-Dig0HEopfB9qPBBmFFjqEid0EMBdreHrlle1stmSatsV6sCJgndI8TjiNB9-8X8G_fmtFnwhlAv65QxyaofIipnXxVKN6m-WcO2AOmxRxuV0J_T7jvKyJb2g_Jf0QfmdPC2rMuGePz1OtleI2s8Bpe8xPtsH84HxTkOSKc10U5O6AJ_pIxETlp_8ZoET_NdTYKnzTPgTxSH5rlDYfAEEUZp4sE7Sxof8h0HNaHlHj8Iyz42JWxnCrhTFP69iMxq1stmUTeLtoZ5Lp5107zu5u7PikMUMYUclx88Ij_QJKRUFjeuzwTpemUP2Xg4hojm_P_Qywx6VTp_qLjZKqi-ktMDAWSehLa-gnk7FzCeK8h29ujRsrffGySRkzL5fMRh75U5IdocuOZYVNXeeUP_I3sRMjrPyF6FUYtc5_Xm4gYteqEvbl0YVRSaiqIStYsfk9nxKNR5tS822P6XDbbrf93gFR_MtH4C.plovRahm_Kj4-ZG9Q9KEh9SAyZkZL1xJhwXcRfm4JXpS6ocYy2Y0R5OdXxmX-JNHMVjh3spNpS-vPgpyyeM-2g" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/example-01-f-qr-code-numeric-value-0.txt: -------------------------------------------------------------------------------- 1 | shc:/5676290952432060346029243740446031222959532654603460292540772804336028702864716745222809286241223803127633772937404037614124294155414509364367694562294037054106322567213239452755415503563944035363327154065460573601064529295312707424284350386122127671673805312572613670620952246603313843745856522663707072205954593160215065716552205555623439404006646100345361560712092121402255232324342852726870302870587526002360580327246667572112683521216425256168246055032432215569562769636356047071643852717041097022295865552811396160332112001143112650576471256574596320730908367576526657286067654375413033096400425434052034647537757241032950391061733076295305585029570336576455352205693272265635770434716356280570112167561175357170271107277539623438305404034008340920295067287524396367501145662439503355394430657739355839753827086963234457202424404567077024103875665711590327335227632761112876770705294275652269593925350912603275680470716440395631716645083167080403107772087210356062324032444054637511112861503629303740256156727774396756644035054358075966616450355036767475094139675068316145306860006271322320423856593152005865621025772256301159051272613770695757267638376277310857323759100840082855665472344544413343565640355028067037326169357625092540447154085043640758447156682473536303444137385260682838714470576212657530333708713811050535094323535369571206582537503271270722016763667337525964503061070045261236123024591238207645624531047529597443543757640729436738096654447605440337083455437564430029332732416159067067336738007335586776765632000558 -------------------------------------------------------------------------------- /test-data/example-01-g-qr-code-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-01-g-qr-code-0.bmp -------------------------------------------------------------------------------- /test-data/example-01-g-qr-code-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-01-g-qr-code-0.jpg -------------------------------------------------------------------------------- /test-data/example-01-g-qr-code-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-01-g-qr-code-0.png -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-0.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-0.bmp -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-0.jpg -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-0.png -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-1.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-1.bmp -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-1.jpg -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-1.png -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-2.bmp -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-2.jpg -------------------------------------------------------------------------------- /test-data/example-02-g-qr-code-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/example-02-g-qr-code-2.png -------------------------------------------------------------------------------- /test-data/issuer.jwks.public.not.smart.json: -------------------------------------------------------------------------------- 1 | { 2 | "keys": [ 3 | { 4 | "kty": "EC", 5 | "kid": "ARrigjsh8mTqaVdihxO5cxkaRjpjXUg8ARET6IzhvaQ", 6 | "use": "sig", 7 | "alg": "ES256", 8 | "crv": "P-256", 9 | "x": "bvRiNLRBima85Q6U3jY2chbPQWX3Fyn0WvzDw_3VJWk", 10 | "y": "HlpuaCRfCfTjqR2ZLGVHgD54QQdL5R2t-9bH6SvEajc" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /test-data/private_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"d630duSMWmVfmOtrMKZX6izJfcampjK1h0D4jrXxJwU","use":"sig","alg":"ES256","crv":"P-256","x":"IpNzj8m7NEZdNG4mdEsTmDWFFyKLE7PmtBLWLGIoJuA","y":"mVqRexUnULniMBghiSfb8L3HDZSTxhdKWfIcP6Tvabs","d":"qYg7yrhjPYGJNHc0e9xYNodLaKQvVNG6cShRyhwtwHQ"}]} -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-der-signature-r-neg.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.MEUCIQCvejwlbwIaRmlL8NH-0kRnW_xOwmk8zFErIYJoAy_NMgIgJ4J1zgy58iWycFJc_oojUURr7SRzyCcA2Gpib2IOTfg -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-der-signature-rs-neg.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.MEYCIQCd2lvDmNmiHTxHC5vHUaZlNntXCKIedaHYloYJfDZ0QwIhANrHbCyIYSVqMP4ZmuK6O1ErEo5bZSAhzZoGQbG0LzY5 -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-der-signature-s-neg.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.MEUCID2lGtFskO3E7_ai9JEg2SXH-hL3tQbGbLmCWoGAlGwxAiEA38kYQ5XfOv7Z-7sj0lVs6ICxHRl29UGio1Ygyg2d1bk -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-der-signature.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.MEQCIDKJ8bCwdn8ZVhy1ZbWqGbuHjx12agrxX_gjzxBnRtvmAiARrudEoblB8xMXXma2zmP_1gh7Oo3MDxJHWk36WnFiCA -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-invalid-signature.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.Ma9Hatts9reee7DA7Sj8rfcIkH816fI1LkFSXj3s1aT6tdGmDiveDE2yNqi7ZHHKMViFInas_37Hi6mMrQW4BA -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-issuer-kid-mismatch.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IkFScmlnanNoOG1UcWFWZGloeE81Y3hrYVJqcGpYVWc4QVJFVDZJemh2YVEifQ.3ZJLb9swEIT_SrC9yhKlJHatW50CfRyKAk1zKXygqbXFgg-BpIS4gf57d2kHfSDJqafqtuLw48yQD6BjhBb6lIbYVlUcUJXRypB6lCb1pZKhixXeSzsYjBWpRwxQgNvtoa2Xl-JyeSWWr8vruilgUtA-QDoOCO23X8y_ca9Ow4IHQj2v09aOTv-QSXv3olD5SXf1GrYFqIAduqSl-TLuvqNKbGnf63CHITKnhatSlDXx-O9mdJ1B1gSMfgwKb7N9OC8U5zigvDFEOzmhA8KRMhJ5NOZrMCR43N8KEjwOT4A_Uxzazx1KiyeItNoQD9440oSYzzjoCR33-NH3PG9K2M4UcKcp_FuZmFWvr-uFqBeNgHkunnRTv-zmw58VxyTTGHNcvvCEfEGTVEo7vPFdJijfaXfIxuMxJrTn90M305tV6cOh4marqLtKTfcEUHknNGIF83YuYDhXkO3sMaBjb783SCKv1BjyEoe91faEaHJgwbGoqr0Plt4je5Eq-cDITsfByFzn5ubiHToM0ly893HQSRoqiko0Pn0a7Y63gshf_WyDzX_ZYLP-1w2ueGGm7yc.ppJ_XIPRcT4J4bLzLdBisVRqCcgJdhlWyTE85rFyw4Amvf2uuV6p6ZxeA9pHi24pIDFICMlEhl-Hk8ciBbK2BQ -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-issuer-not-valid-with-smart-key.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLb9swEIT_SrC9ynrFqWrd6hTo41AUaNpL4QNNrSwWfAgkJcQN9N-7SztBiyY55VTdVhx-nBnyDlQI0MIQ4xjaouidy4MRPg4odBxyKXwXCrwVZtQYChJP6CEDu--hrV5fllfry_pNkzfrOoNZQnsH8TgitD8ekP_gXp2GFQ-EelqnjJms-iWicvZZoXSz6qoN7DKQHju0UQn9ddr_RBnZUj8o_x19YE4L67zMK-Lx3-1kO42s8Rjc5CXeJPtwXsjOcUA6rYl2ckIH-CNlJPKk9TevSXC_vy1JcD88Av5CcWg_dygMniDCKE08eGtJ40M646BmtNzjJzfwvM1ht1DAvaLw70RkVrW5qlZltapLWJbsUTfV824-_l1xiCJOIcXlC4_IFzQLKZXFa9clgnSdsodkPBxDRHN-PnQzg25y5w8FN1sE1RVyviWATDuhLhtYdksG47mCZKdHj5a9_dkgiZyUk09LHPZGmROiToFLjkVV9c4beo_sRcjoPCM7FUYtUp3b64v3aNELffHBhVFFoakoKlG7-Hkye94KZfqqJxus_8sG681LN9jwwkLfbw.ZZJ6oBVioXmGwDDp8__jaCBLhsYnag7ghqmYIbN85a1iyaXAda8MnFiNzbv-YN0DBi47IajycvhcINILK9dLhw -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-jws_too_long.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3VRbb6M4GP0rI_c1TbikgeRpQ9LpNNvcRNJOZlUhxxhsMJC1DYSO8t_XJs3srDSptA_7sgYJ2T4-Pud8Nt8BFQKMAJHyIEa9nsgglwRDJkkXQR6KHj7C7MCw6ClgiTnoAAolGJkDsz_oO_2B0x1YVgdUCIy-g99QkUt8VPN__KCs67pb292Cxz3LMN0e4jjEuaSQiV5lgtcOkM0B6xXPmNOIwj3Dkx8Ytd9VbTc1L_L49jx0q4c-RNMsK3P6BiUt8g-BqKhoaA61tL_F-uU-wUhqlxGhXGkVmmcE-l2jayo-PeqVeciwxnAsipIjvGm9gfeJi1eACsYU21mJ2oA3KgDFXDK25UwBLutHhgJcOr8gXik7ar0C5TDDZxKYUab4wDhXGC7aPWJa4VyHPCuI7ntd8HpSBmOch6qqI5DBVt-eqjCmUGpuc3hn3hrmrWWA06nzS3Xmx-oe_xm5kFCWorWvz5TEumAVRIjmeFKELQMqQprHrRHRCImz99OpKkWY0x4jnXRP0LCHqqMiQO1KYBkOOL2eOuDwHkkrJ8Ic51rbz4kqUIFQydspbXZDszOF1Ro2tK0Dp-pkNP67N8lL3AGsQGcz18htTc4KuSizfZvrUyE_3RhtM6_GaP0vY7SG_0mMztUY7Y9jfLrserksYOxNPq0I5BlEzVXW_r9l3RAqAvXCoMK8CVhxaXkcaEiAjwhjXZ9A_XgCU92zACkVEEl1XQNGMyqDqOCBupuqKGEwe_GDBSWlcSCPKXFdWyQpS5PoJk2ICCOX2Gnih6oTuXGqPmFczfhd9Dax-95qNZ9Gc7JsUOjf2_fZ8c2fMQH73ng6drKHceKxOmGDyHJ3S-KYxWLhht_u7tcQfVlXokqwb7PZtDT77E_6_DBh5m5mrIW1eYYvd1-304UfOQcrcuZNY3nNNzN52zrrrSwnD5-bXWKbS_Flvfg93u9QRMXjSzGvpuvN08PWFSlJiTbxOa1JVDeOerzH5dbaLD2H7MnQjfOhO7TdJI-HbmIP8zjZ3u-iNXuiz5XhVaval9ncHwyrZep643GqCvh6Uu0v.WZZrR7E2e3pZgovfID3UdQoUeY7kQSpDsw_VrUJIqlIe4Ocs-ytVi-S3NY5ZQ9kmgrRmIA-aKLGu3UKvfNvtFA -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-no_jws_header_alg.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJraWQiOiIzS2ZkZy1Yd1AtN2dYeXl3dFVmVUFEd0J1bURPUEtNUXgtaUVMTDExVzlzIn0.3ZJLb9swEIT_SrC9yhIlNFGsW50CfRyKAk17CXygqbXFgg-BpIS4gf57d2kHfSDJqafqtuLw48yQD6BjhA6GlMbYVVUcUZXRypAGlCYNpZKhjxXeSzsajBWpJwxQgNvtoauvmuayvRZXbSmu1wXMCroHSMcRobv7xfwb9-o0rHgg1PM6be3k9A-ZtHcvCpWfdV-vYVuACtijS1qaL9PuO6rElvaDDt8wROZ08LoUZU08_ruZXG-QNQGjn4LC22wfzgvFOQ4obwzRTk7ogHCkjESejPkaDAke93eCBI_DE-DPFIf2c4fS4gkirTbEgzeONCHmMw56Rsc9fvQDz5sStgsF3GkK_1YmZtXry3ol6lUjYFmKJ93UL7v58GfFMck0xRyXLzwhX9AsldIOb3yfCcr32h2y8XiMCe35_dDNDKYtfThU3GwVdV-p-Z4AKu-ERrSwbJcCxnMF2c4eAzr29nuDJPJKTSEvcdhbbU-IJgcWHIuq2vtg6T2yF6mSD4zsdRyNzHVubi7eocMgzcV7H0edpKGiqETj06fJ7ngriPzVzzbY_JcNNut_3WDLCwt9PwE.9ricS3s_xR1fl7YndWq5q0mc4-VeFBJNWpsaJULhccl8QIUnwWxtXc8Ps0C-vU-w_vcsoTnRggW_dex7afcj5w -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-no_jws_header_kid.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiJ9.3ZJJb9swEIX_SjC9ytraVLFudQp0ORQFmuZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN6_b9rK7qrt1-fKqLWCW0N9DPE4I_bdfzL9xL07DigdCPa1TxiSrfoionH1WKN2shmYN2wKkxwFtVEJ_SbvvKCNb2o_K36IPzOnhVVmXDfH47ybZQSNrPAaXvMSbbB_OC8U5DkinNdFOTugAf6SMRE5af_WaBA_7-5oED8Mj4M8Uh_Zzh8LgCSKM0sSDN5Y0PuQzDmpGyz1-dCPPmxK2CwXcKQr_VkRmNevLZlU3q7aGZSkeddM87-bDnxWHKGIKOS5feES-oFlIqSxeuyETpBuUPWTj4RgimvP7oZsZdVc6f6i42SqooZLzHQFk3glt3cGyXQqYzhVkO3v0aNnb7w2SyEmZfF7isDfKnBBtDlxzLKpq77yh98hehIzOM3JQYdIi17m5vniHFr3QF-9dmFQUmoqiErWLn5LZ8Vao89c82WD7XzbYrv91gx0vLPT9BA.87iYe-m3TojgcTnaGfJLFlwWnV88Dbaw6E-Vpy3CdwEodoCJDdTaZvl_E_9YosrAkmjv32VxzBKvtvpn5yxqgA -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-no_jws_header_zip.txt: -------------------------------------------------------------------------------- 1 | eyJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ylqIOo51q1Ogy6Eo0LSXwAeaGlssuAgkJcQN9N87QzvogiSnnKLbiI8f33vkPegYoYU-pSG2VRUHVGW0MqQepUl9qWToYoV30g4GY0XqEQMU4HZ7aJtLIZarq3opyitxWcCkoL2HdBwQ2ts_zP9xb07DggdCPa3T1o5O_5JJe_esUPlJd80atgWogB26pKX5Nu5-okpsad_r8ANDZE4Lb8u6bIjHfzej6wyyJmD0Y1B4k-3DeaE4xwHljSHayQkdEI6UkcijMd-DIcHD_rYmwcPwCPgrxaH93KG0eIJIqw3x4J0jTYj5jIOe0HGPn33P86aE7UwBd5rCv5eJWc162SzqZiFqmOfiUTfN824-_VtxTDKNMcflC0_IFzRJpbTDa99lgvKddodsPB5jQnt-P3QzvVmVPhwqbraKuqvUdEcAlXeCqFcwb-cChnMF2c4eAzr29neDJPJKjSEvcdgbbU8IkQPXHIuq2vtg6T2yF6mSD4zsdByMzHVuri8-oMMgzcVHHwedpKGiqETj05fR7ngr1PlrnmxQvMoGxfqlG1zxwkzfbw.zJk9rUTuxesBy9tBi-BmkqhutomkHd0357Yp58Mgwz6xYphxnEPA6lxj2lDZv6h9IeLFQP506DHH0EeVUik0HQ -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-trailing_chars.txt: -------------------------------------------------------------------------------- 1 | 2 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLj9MwFIX_yuiyTZM4UEKzo4PEY4GQGNigLlzntjHyI7KdaMoo_5173Y54aGZWrMjuxsefzzn2HegYoYMhpTF2VRVHVGW0MqQBpUlDqWToY4W30o4GY0XqCQMU4PYH6MTLplm3r9r181K0BcwKujtIpxGh-_YL-Tft2XlY8UCkx3Xa2snpHzJp754UKj_rXmxgV4AK2KNLWprP0_47qsSWDoMOXzFE5nTwoqxLQTz-u51cb5A1AaOfgsKbbB8uC8UlDihvDNHOTuiAcKKMRJ6M-RIMCe73dzUJ7ocHwJ8oDu3nCqXFM0RabYgHrx1pQsxnHPWMjnv84AeetyXsFgq41xT-jUzMEpu1WNVi1dSwLMWDbsTTbt7_WXFMMk0xx-X7TsgXNEultMNr32eC8r12x2w8nmJCe3k-dDODaUsfjhU3W0XdV2q-JYDKO6GpW1h2SwHjpYJs54ABHXv7vUESeaWmkJc47I22Z0STA9cci6o6-GDpObIXqZIPjOx1HI3MdW6vr96iwyDN1TsfR52koaKoROPTx8nueSvU-ROPNtj8lw02m3_dYMsLC30_AQ.drW2nyE3vROTNI4SpQmIb2P1gp5jGRDqr_cnwZGmsZ3-Yl7WfpEO2lll_WrjjYO0IpDtFxkksyKIt3O3R7yvJA 3 | -------------------------------------------------------------------------------- /test-data/test-example-00-d-jws-wrong_jws_header_kid.txt: -------------------------------------------------------------------------------- 1 | eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifQ.3ZJLb9swEIT_SrC9ypIoxHGtW50CfRyKAk17CXygqbXFgg-BpIS4gf57d2kHfSDJKafotuLw48yQ96BjhBb6lIbYVlUcUJXRypB6lCb1pZKhixXeSTsYjBWpRwxQgNvtoRVXTbNcvRX1ZbkUVwVMCtp7SMcBob39w_wf9-Y0LHgg1NM6be3o9C-ZtHfPCpWfdCfWsC1ABezQJS3Nt3H3E1ViS_tehx8YInNauCzrUhCP_25G1xlkTcDox6DwJtuH80JxjgPKG0O0kxM6IBwpI5FHY74HQ4KH_W1NgofhEfBXikP7uUNp8QSRVhviwTtHmhDzGQc9oeMeP_ue500J25kC7jSFfy8Ts8R6KRa1WDQ1zHPxqBvxvJtP_1Yck0xjzHH5whPyBU1SKe3w2neZoHyn3SEbj8eY0J7fD91Mb1alD4eKm62i7io13RFA5Z3Q1CuYt3MBw7mCbGePAR17-7tBEnmlxpCXOOyNtidEkwPXHIuq2vtg6T2yF6mSD4zsdByMzHVuri8-oMMgzcVHHwedpKGiqETj05fR7ngr1PkTTzbYvMoGm_VLN7jihZm-3w.QqKxqmYHnXxtdGySTF6cfd3nAngHVk1AMbz_6RnvcjzLQPKKlyTren8kUgB_LQbu4ycG6oIsDmaLHd3tVIUbhQ -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-bad_jwks.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZLLbtswEEV_JZhuZb3a1JB2dQL0BRQFkmZTeEFRY4spHwI5UuoG-vcOaadIgSSrrsodyZk79x7yHlQI0MJANIa2KLy4y_eKhqmbAnrpLKGlXDpTGCW9C25HxYBC07CSwvdhNQutekHK2dXV5efCCGULwkB8JopO9Ld3PwJkYLsdtNXbuqybdVO-zs-bdQazhPYe6DAitN__WAhGeDrOyNOMV48GstTzdcqYyapfyc2LhdLNqq8a2GYgPfYcUQl9NXW3KCla2g3K36APUaeFN3mZV6wXTzeT7TXGGo_BTV7idbIPp4vsFAek05rVjk54gD9wRlaetP7mNRc89LclFzxsnhD-ynG4PzIUBo8iwijNevDOco0PacZezWgjx09uiPtNDtuFA3aKw18KilpVc16tympVl7As2ZNuqpfdfPwbcSBBU0hxzaiRMD7QLKRUFi9cnxSk65XdJ-PhEAjN6bvxywx6nTu_LyLZIqi-kPNPFpCpE-pyDct2yWA8IUh2dujRRm-PCXKRk3Ly6SqGvVbmKFGnwGWMxah2zhv0yYuQ5HyU7FUYtUg4Nxdn79GiF_rsgwujIqEZFEPUjr5MpoutUKZVPUuw_i8J1s2_JriOFwuv3w.mSgEsv1KogzkzSWbDNxpVS8-iPDtcKnWqVbgOxup2wal5BPgwsyvGmbMFochz335nA-GZGlImawLbsOyULOpqw" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-invalid_deflate.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.eJzdkklv2zAQhf9KML3K2tBUkG51CnQ5FAWa9lL4QFNjiwUXgYsQN9B_7wztoAuSnHqqbiM-fnzvkfegQoABphjnMFRVmFGWwQgfJxQ6TqUUfgwV3gkzawwVqRN6KMDuDzA0r9r2uuv6ui-7ti9gkTDcQzzNCMO3X8y_cS_Ow4YHQj2tU8Ykq36IqJx9Vijdosamh10B0uOINiqhP6f9d5SRLR0m5b-iD8wZ4GVZlw3x-O822VEjazwGl7zE22wfLgvFJQ5IpzXRzk7oAH-ijEROWn_xmgQP-4eaBA_DI-BPFIf2c4fC4BkijNLEg9eWND7kM45qQcs9fnATz9sSdisF3CsK_0ZEZjX9dbOpm01bw7oWj7ppnnfz_s-KQxQxhRyXLzwiX9AipFQWb9yYCdKNyh6z8XAKEc3l_dDNTLornT9W3GwV1FjJ5Y4AMu-Etu5g3a0FzJcKsp0DerTs7fcGSeSkTD4vcdhbZc6INgeuORZVdXDe0HtkL0JG5xk5qjBrkevc3ly9RYte6Kt3LswqCk1FUYnaxY_J7Hkr1Plrnmyw_S8bbPt_3WDHCyt9PwEOH3YA.QAeMpU7g7nqOJhJb3A1yIagMfOXKmILG6Sk269Tn_Lu-TfymQJNxGnrHPIyReyFqjf9eYGAYPYbWpdc2JCBBJQ" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-invalid_issuer_url.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytpaV7VudQp0ORQFmuZSGAFNji0WXAQuQtxA_71D2mkWJDn1VN5GM_PxvUfdgPQeehhCGH1fVX5EXnrNXBiQqTCUnDnhK7xmelToK5qO6KSZmJLiKjoFBZjtDvrmbdsuu3dNtyyX7esCJg79DYTDiND_vMM_Jr86FotUEOr5Oal1NPI3C9KaFwe5naRoVrApgDsUaIJk6nvc_kIekqTdIN0lOp84Pbwp67IhXvq6jkYoTDMOvY2O40WWD6dGcbID3CpFtKMSusAdyCORo1I_KJH-735f08Bt8QT4G9mh_ZQh03iEMC0V8eC9oRnn8x17OaFJOX6xQ6rXJWxmMriVZP4DC4nVrJbNom4WbQ3zXDyppnlZzeeHEfvAQvTZbnr7gOmBJsa5NHhuRSZwK6TZZ-H-4APq069ELzOorrRuX6VkKy9FxadrAvC8CW3dwbyZCxhPEWQ5O3Rokrb7CdKQ5Ty63EpmL6Q-ItpsuE62KKqddRpd1sJ4sC4hhfSjYjnO9fnZRzTomDr7ZP0oA1MUFIWobPga9TatQp1P82yC7X-ZYLv61wl2qTHT-QM.n-7E7wskNJhkAOYXABYDWeFtcpONEUAD4Vki2_Jlq33Z7mCDipbGVu25Z7AXRjkqCS04gewJoXkJNN6mXZgP7Q" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-invalid_issuer_url_http.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLb9swEIT_SrC9ynoQSV3rVqdAmxyKAk17KXygqbXFgg-BpIS4gf57d2kHTYIkp5yq24rDjzND3oGOEVroUxraqooDqjJaGVKP0qS-VDJ0scJbaQeDsSLxiAEKcNsdtM17IS6WH4RYlY04L2BS0N5BOgwI7a-MjMx8int3HBY8EOplnbZ2dPqPTNq7V4XKT7prVrApQAXs0CUtzfdx-xtVYku7XoefGCJzWjgv67IhHv9dj64zyJqA0Y9B4U22D6eF4hQHlDeGaEcndEA4UEYij8b8CIYE9_vbmgT3wzPgbxSH9nOH0uIRIq02xIOPjjQh5jP2ekLHPV77nud1CZuZAm41hf8kE7Oa1UWzqJuFqGGei2fdNK-7uXpccUwyjTHH5QtPyBc0SaW0w0vfZYLynXb7bDweYkL77_n0Zln6sK-42SrqrlLTLQFU3gmiXsK8mQsYThVkOzsM6NjbwwZJ5JUaQ17isDfaHhEiB645FlW188HSe2QvUiUfGNnpOBiZ61xfnn1Gh0Gasy8-DjpJQ0VRicanr6Pd8lao89e82KD4LxsUq7ducMkLM31_AQ.Pkz3ry_PGCZGPbCLispYVcaEbqi0DVJ6H2YAj5bGdD9lzQREVndlCyNm1EEmbl_EvCB1kjSyA08a4uDQv00TVQ" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-issuer_url_with_trailing_slash.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLb9swEIT_SrC9ypKoNHGtW50ASXsoCjTNpfCBptYWCz6EJSXEDfTfu6Qd9IEkp57K24rDjzNDPYIOAVroYxxCW1VhQFUGKyn2KE3sSyWpCxU-SDsYDBWrR6QKCnDbHbTismkulu8acVmK8wImBe0jxMOA0H77xfwb9-Y4LNLApJd12trR6R8yau9eFSo_6U6sYFOAIuzQRS3Nl3H7HVVMlna9pnukkDgtvC3rUjAvfV2PrjOYNITBj6TwLtuH00ZxigPKG8O0oxO-gA6ckcmjMV_JsODpfFuz4Gl4BvyZ4_D5VKG0eIRIqw3z4L1jDYV8x15P6FKPH32f5nUJm5kDbjWHv5YxscTqQixqsWhqmOfiWTfidTcf_qw4RBnHkOOmB4-YHmiSSmmHV77LBOU77fbZeDiEiPb0__DL9GZZetpXqdkq6K5S0wMDVD4JTb2EeTMXMJwqyHZ2SOiSt98bZJFXaqS8lcLeaXtENDlwnWJxVTtPFil7kSp6SshOh8HIXOf66uwGHZI0Z7c-DDpKw0VxicbHT6PdpqNQ5yVebLD5LxtsVv-6wWXamHn9BA.6eW7Pyvc42ozgCmGbPCTTOKreEyESKho_ChGJW_Z-HHA28HWG2e-7fOzcD_6u_BRS_R04cYL0j1tgmmZom5zaw" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-jws_too_long.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3VRbb6M4GP0rI_c1TbikgeRpQ9LpNNvcRNJOZlUhxxhsMJC1DYSO8t_XJs3srDSptA_7sgYJ2T4-Pud8Nt8BFQKMAJHyIEa9nsgglwRDJkkXQR6KHj7C7MCw6ClgiTnoAAolGJkDsz_oO_2B0x1YVgdUCIy-g99QkUt8VPN__KCs67pb292Cxz3LMN0e4jjEuaSQiV5lgtcOkM0B6xXPmNOIwj3Dkx8Ytd9VbTc1L_L49jx0q4c-RNMsK3P6BiUt8g-BqKhoaA61tL_F-uU-wUhqlxGhXGkVmmcE-l2jayo-PeqVeciwxnAsipIjvGm9gfeJi1eACsYU21mJ2oA3KgDFXDK25UwBLutHhgJcOr8gXik7ar0C5TDDZxKYUab4wDhXGC7aPWJa4VyHPCuI7ntd8HpSBmOch6qqI5DBVt-eqjCmUGpuc3hn3hrmrWWA06nzS3Xmx-oe_xm5kFCWorWvz5TEumAVRIjmeFKELQMqQprHrRHRCImz99OpKkWY0x4jnXRP0LCHqqMiQO1KYBkOOL2eOuDwHkkrJ8Ic51rbz4kqUIFQydspbXZDszOF1Ro2tK0Dp-pkNP67N8lL3AGsQGcz18htTc4KuSizfZvrUyE_3RhtM6_GaP0vY7SG_0mMztUY7Y9jfLrserksYOxNPq0I5BlEzVXW_r9l3RAqAvXCoMK8CVhxaXkcaEiAjwhjXZ9A_XgCU92zACkVEEl1XQNGMyqDqOCBupuqKGEwe_GDBSWlcSCPKXFdWyQpS5PoJk2ICCOX2Gnih6oTuXGqPmFczfhd9Dax-95qNZ9Gc7JsUOjf2_fZ8c2fMQH73ng6drKHceKxOmGDyHJ3S-KYxWLhht_u7tcQfVlXokqwb7PZtDT77E_6_DBh5m5mrIW1eYYvd1-304UfOQcrcuZNY3nNNzN52zrrrSwnD5-bXWKbS_Flvfg93u9QRMXjSzGvpuvN08PWFSlJiTbxOa1JVDeOerzH5dbaLD2H7MnQjfOhO7TdJI-HbmIP8zjZ3u-iNXuiz5XhVaval9ncHwyrZep643GqCvh6Uu0v.WZZrR7E2e3pZgovfID3UdQoUeY7kQSpDsw_VrUJIqlIe4Ocs-ytVi-S3NY5ZQ9kmgrRmIA-aKLGu3UKvfNvtFA" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-multi-jws-issues.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJraWQiOiIzS2ZkZy1Yd1AtN2dYeXl3dFVmVUFEd0J1bURPUEtNUXgtaUVMTDExVzlzIn0.3ZJLb9swEIT_SrC9yhIlNFGsW50CfRyKAk17CXygqbXFgg-BpIS4gf57d2kHfSDJqafqtuLw48yQD6BjhA6GlMbYVVUcUZXRypAGlCYNpZKhjxXeSzsajBWpJwxQgNvtoauvmuayvRZXbSmu1wXMCroHSMcRobv7xfwb9-o0rHgg1PM6be3k9A-ZtHcvCpWfdV-vYVuACtijS1qaL9PuO6rElvaDDt8wROZ08LoUZU08_ruZXG-QNQGjn4LC22wfzgvFOQ4obwzRTk7ogHCkjESejPkaDAke93eCBI_DE-DPFIf2c4fS4gkirTbEgzeONCHmMw56Rsc9fvQDz5sStgsF3GkK_1YmZtXry3ol6lUjYFmKJ93UL7v58GfFMck0xRyXLzwhX9AsldIOb3yfCcr32h2y8XiMCe35_dDNDKYtfThU3GwVdV-p-Z4AKu-ERrSwbJcCxnMF2c4eAzr29nuDJPJKTSEvcdhbbU-IJgcWHIuq2vtg6T2yF6mSD4zsdRyNzHVubi7eocMgzcV7H0edpKGiqETj06fJ7ngriPzVzzbY_JcNNut_3WDLCwt9PwE.9ricS3s_xR1fl7YndWq5q0mc4-VeFBJNWpsaJULhccl8QIUnwWxtXc8Ps0C-vU-w_vcsoTnRggW_dex7afcj5w", 4 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLj9MwFIX_yuiyTZM4UEKzo4PEY4GQGNigLlzntjHyI7KdaMoo_5173Y54aGZWrMjuxsefzzn2HegYoYMhpTF2VRVHVGW0MqQBpUlDqWToY4W30o4GY0XqCQMU4PYH6MTLplm3r9r181K0BcwKujtIpxGh-_YL-Tft2XlY8UCkx3Xa2snpHzJp754UKj_rXmxgV4AK2KNLWprP0_47qsSWDoMOXzFE5nTwoqxLQTz-u51cb5A1AaOfgsKbbB8uC8UlDihvDNHOTuiAcKKMRJ6M-RIMCe73dzUJ7ocHwJ8oDu3nCqXFM0RabYgHrx1pQsxnHPWMjnv84AeetyXsFgq41xT-jUzMEpu1WNVi1dSwLMWDbsTTbt7_WXFMMk0xx-X7TsgXNEultMNr32eC8r12x2w8nmJCe3k-dDODaUsfjhU3W0XdV2q-JYDKO6GpW1h2SwHjpYJs54ABHXv7vUESeaWmkJc47I22Z0STA9cci6o6-GDpObIXqZIPjOx1HI3MdW6vr96iwyDN1TsfR52koaKoROPTx8nueSvU-ROPNtj8lw02m3_dYMsLC30_AQ.drW2nyE3vROTNI4SpQmIb2P1gp5jGRDqr_cnwZGmsZ3-Yl7WfpEO2lll_WrjjYO0IpDtFxkksyKIt3O3R7yvJA" 5 | ] 6 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-multi-jws.smart-health-card: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.EtHJLQTEwQ1Fq0XwZ7WhU1EXNkpRrcSdUTyL0n_8bfRZ2lmrlG30zffy22j4gD3Xb2e1d7I_08ZKCZFF3D2bZw", 4 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IkVCS09yNzJRUURjVEJVdVZ6QXprZkJUR2V3MFpBMTZHdVd0eTY0blMtc3cifQ.3ZJJb9swEIX_SjC9ytraOrZujQt0ORQFmuZS-EBTY4sFF4GLEDfQf-8M7aBtkOSUU3Wj-Obje4-8AxUCdDDEOIauqsKIsgxG-Dig0HEopfB9qPBWmFFjqEid0EMBdreHrlm27dvL5ev1qlzVTQGThO4O4nFE6H78YT7EvTotFrwg1NM6ZUyy6peIytlnhdJNqm_WsC1AeuzRRiX0t7T7iTKypf2g_A36wJwO3pR12RCP_14l22tkjcfgkpd4ne3DeaM4xwHptCbayQkd4I-UkchJ6-9ek-B-vqtJcL94BPyV4tA8dygMniDCKE08eGdJ40M-46AmtNzjZ2HZx6aE7UwBd4rCvxeRWc162SzqZtHWMM_Fo26a5918-rfiEEVMIcflC4_IFzQJKZXFjeszQbpe2UM2Ho4hojm_H7qZQV-Wzh8qbrYKqq_kdEsAmSehrVcwb-cCxnMF2c4ePVr29neDJHJSJp-3OOy1MidEmwPXHIuq2jtv6D2yFyGj84zsVRi1yHVebS4-oEUv9MVHF0YVhaaiqETt4pdkdjwKdf7aJxts_8sG2_VLN7jijZm-3w.Ma9Hatts9reee7DA7Sj8rfcIkH816fI1LkFSXj3s1aT6tdGmDiveDE2yNqi7ZHHKMViFInas_37Hi6mMrQW4BA" 5 | ] 6 | } -------------------------------------------------------------------------------- /test-data/test-example-00-e-file-trailing_chars.smart-health-card: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "verifiableCredential": [ 4 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLj9MwFIX_yuiyTZM4UEKzo4PEY4GQGNigLlzntjHyI7KdaMoo_5173Y54aGZWrMjuxsefzzn2HegYoYMhpTF2VRVHVGW0MqQBpUlDqWToY4W30o4GY0XqCQMU4PYH6MTLplm3r9r181K0BcwKujtIpxGh-_YL-Tft2XlY8UCkx3Xa2snpHzJp754UKj_rXmxgV4AK2KNLWprP0_47qsSWDoMOXzFE5nTwoqxLQTz-u51cb5A1AaOfgsKbbB8uC8UlDihvDNHOTuiAcKKMRJ6M-RIMCe73dzUJ7ocHwJ8oDu3nCqXFM0RabYgHrx1pQsxnHPWMjnv84AeetyXsFgq41xT-jUzMEpu1WNVi1dSwLMWDbsTTbt7_WXFMMk0xx-X7TsgXNEultMNr32eC8r12x2w8nmJCe3k-dDODaUsfjhU3W0XdV2q-JYDKO6GpW1h2SwHjpYJs54ABHXv7vUESeaWmkJc47I22Z0STA9cci6o6-GDpObIXqZIPjOx1HI3MdW6vr96iwyDN1TsfR52koaKoROPTx8nueSvU-ROPNtj8lw02m3_dYMsLC30_AQ.drW2nyE3vROTNI4SpQmIb2P1gp5jGRDqr_cnwZGmsZ3-Yl7WfpEO2lll_WrjjYO0IpDtFxkksyKIt3O3R7yvJA" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /test-data/test-example-00-e-file.wrong-extension: -------------------------------------------------------------------------------- 1 | { 2 | "verifiableCredential": [ 3 | "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJJb9swEIX_SjC9ytqaxJVudQp0ORQFmvZS-EBTY4sFF4GLEDfQf-8M7aALkpx6qm4jPn5875H3oEKAHsYYp9BXVZhQlsEIH0cUOo6lFH4IFd4JM2kMFakTeijA7vbQN9dte7W-ftm9Krv2soBZQn8P8Tgh9N9-Mf_GvTgNKx4I9bROGZOs-iGicvZZoXSzGpoOtgVIjwPaqIT-nHbfUUa2tB-V_4o-MKeHy7IuG-Lx302yg0bWeAwueYm32T6cF4pzHJBOa6KdnNAB_kgZiZy0_uI1CR729zUJHoZHwJ8oDu3nDoXBE0QYpYkHry1pfMhnHNSMlnv84EaeNyVsFwq4UxT-jYjMarqrZlU3q7aGZSkeddM87-b9nxWHKGIKOS5feES-oFlIqSzeuCETpBuUPWTj4RgimvP7oZsZ9bp0_lBxs1VQQyXnOwLIvBPaeg3LdilgOleQ7ezRo2VvvzdIIidl8nmJw94qc0K0OXDNsaiqvfOG3iN7ETI6z8hBhUmLXOfm5uItWvRCX7xzYVJRaCqKStQufkxmx1uhzl_zZIPtf9lg2_3rBte8sND3Ew.EtHJLQTEwQ1Fq0XwZ7WhU1EXNkpRrcSdUTyL0n_8bfRZ2lmrlG30zffy22j4gD3Xb2e1d7I_08ZKCZFF3D2bZw" 4 | ] 5 | } -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-0-odd-count.txt: -------------------------------------------------------------------------------- 1 | shc:/67629095243206034602924374044603122295953265460346029254077280433602870286471674522280928613331456437653141590640220306450459085643550341424541364037063665417137241236380304375622046737407532323925433443326057360106452931531270742428395038692212766728660427527042080322573776302062041022437658685343255858002167283807585708105505622752282407670809680507692361773323356626342441696640756760420443377667210963225304674530596075400038617044612140293774753658337057662140695453717052692609314157047066212936577024093936587120504354425034740728273663064352427127670650296731041041526111672372755841032130642227316463677366061065095838427769033473772024296539747172763158437500341205552904210458383257587430101033127222744063776058732325243477725920113029325929083334451032223707067150422927585643582150673960036577724025701136525340592769757767206275650627402477697211533573565509427029706707250839003554763240717063642937600341397477744331106637691073081227572532546203755976433177745943122062635528341006764322546706055905771143603022560663095523331226455500652270723362680968083803763221413307293953052656395443322574687627443426332275717711532929254352587508605435565206712633236374775326666866323563710761560824680054232839705721762577651272106420776632037175111227273638376668606266033565034510450906366703505453432108691270703365110974534373232339127570013542650411585366432827590028706105672459077525712221726061360466106934602226403158625341200570210644745059203758773734373940117244687075123404571224453168276435523552346420 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-0-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/1/17/56762909524320603460292437404460312229595326546034602925407728043360287028647167452228092861 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-0-trailing_chars.txt: -------------------------------------------------------------------------------- 1 | 2 | shc:/56762909524320603460292437404460312229595326546034602925407728043360287028647167452228092861333145643765314159064022030645045908564355034142454136403706366541713724123638030437562204673740753232392543344332605736010645293161123274252843507672607639453207402430776607352444072636263360583163776571612776281030555232666650080410064408075226454269326172757056577777650527565844664432596739250541374127412642033268362167406323684239664407420603660726440343682236324007354427093239316763640669126904110430032154743072617128677526590050443100395771054363441140226275064352057065672777296710080740306150694364755841072030053033314267693503500710687038422366323443772524086539746668753136397700720804545308200420523457587030535321117222114063236059732333273439726020543030323729093200372832225610065577402910665427742911662372066522684325320337525344582769750467367075652735423261657311072056567176437025586807047539006140773224677204423341600455387431324223537039395371105042432532326203757500431039705843332472637132336906055622116904057505741165642922560662005523342352407057615940064203435541056800294423303409266742045905387427616744297008072021274373107340243856524264622954071028050545033839201254546009660900262367345328436845283561347504272806325542097369120960747623330439705737080562665230663734353975116572563873400037343533716111637403056406505544327031220603502036015569420565762406733734393328073867366428530535045867086126372368695054657445266470450600446310425767243405636363504269616144340328672371257562627076302871063406371076732920 3 | -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-0-wrong-multi-chunk.txt: -------------------------------------------------------------------------------- 1 | shc:/1/1/56762909524320603460292437404460312229595326546034602925407728043360287028647167452228092861333145643765314159064022030645045908564355034142454136403706366541713724123638030437562204673740753232392543344332605736010645292953127074242843503861221276716852752941725536670334373625647345380024213944077025250726312423573657001132105220316267750968640761356508111008270666243020277044446712214341455936637024282703544034660963252707282555072932056232255262395660612010735336331255715610420057716412306973057066214536651135113958591233120032575026733958333075072812533734264534700060266054734545664338772667663471584128617435526828390065275357404052057121004150076600323056277610287226003175060305765803534256207472564464060539095425076777272921345209305565332021506258456045760350722804223710051277402927664527742911662372066523664321240336446744622769760467573259652733383263657311072452563376417025746807407539006144613252696869456340066810522645386256555532111000531265754227302628303438085756243800662563286838775672222439672172403542396107375860647335106645704512536703506321757004413636764365347431287321355256580631556063583463563610567737660541737377552828605563116564297412076854033003344323337052606873573426066033102439280977115921594064314334576408722871427337224310757744412937522268303871367257627564750472597763507745283571571263580550066921715611703323062474012471272931363924743604256803437445104259400424433362673769543855403976310365501153573745056364696326060377575776050561075823064353055604551028500311453022452525062305534574 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-0-wrong_qr_header.txt: -------------------------------------------------------------------------------- 1 | shc:5676290952432060346029243740446031222959532654603460292540772804336028702864716745222809286133314564376531415906402203064504590856435503414245413640370636654171372412363803043756220467374075323239254334433260573601064529315375327525284350386543453972454105613877280341684444263630267536256610652964356275116035404032045008041065413640042753256071655511572765540710122022662409262228543675554144403745376432112725206656333638722710403426123230352640292409664454221027442743433545715957316850353171637655337441322469662760285437665773006450620610700475423521206829550476675962044011376353347322684253413300704425342012336061614069663105651020054162381071210042506620063209562573424540321150697134717157282666502129385075317172270303297560583538524005036675320974211166280826390463001229702761506807647456357423355877755227120630247456283628667739750729036361365008613105520327303527120620111068247740742171076922737556374254066866636540775230714445093145120303691073081126572528446844366610312575093731055838406068310409103521346309455757455623602460345303577259642169037065551243062674414125502909450720327200247163102273296231262411414523701012266145051232263856386239230773545558104544092833585672343745417143355603277162310329260875654568772168625671544308505566244073123364712209343036633337413029051141327642120730555709522575717050117026051242505365232922773312737420012075102069530473325444060934396161087528117767647736761003552752603668743308280767362544093375773323642760336531742353673463036325683371600931526911421206656555650368253520 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-1-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/2/17/33314564376531415906402203064504590856435503414245413640370636654171372412363803043756220467 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-10-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/11/17/57573366640742533606774323776767656545775255503074083775213776433110746027752162082138425375 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-11-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/12/17/03573845280476721077115323284036036750552333773566455665117372296468092309386210062129210829 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-12-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/13/17/10390424725333433221076860235305522527761210005367212439706962117530277341436460265977072967 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-13-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/14/17/61404140100874051237504460452738566253033066755208777343630539415212243057065358746860580325 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-14-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/15/17/40406352595650293135636941236569066405745745333371607243697321293850321235032601210325106311 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-15-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/16/17/52210424452631412745323259212304391171732475264524382864546159063639416875616865342671676169 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-16-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/17/17/50523942452677533810535343690705207161576722213577401275766409666758 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-2-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/3/17/37407532323925433443326057360106452929531270742428435038612212767168360469257255362862105224 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-3-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/4/17/66033138437420565226637070722059545931602150657165522055556234384040063653115727615607121120 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-4-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/5/17/21402255232324342852726870302870587526002360580327246667572112683521566425256168246055032432 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-5-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/6/17/21556972236973653671595733096505103134730966662129367354201139206055275550643550610659052721 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-6-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/7/17/36002456630965612463425037293734577260403167291254033033584128617706526828390063694450404052 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-7-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/8/17/05712172405007240032305623111028722600317506064276734053425620747256446406053909542566673927 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-8-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/9/17/29213452092855655520215062204560457603507207042237100655774029276654657425116723720665236643 -------------------------------------------------------------------------------- /test-data/test-example-00-f-qr-code-numeric-value-9-qr_chunk_too_small.txt: -------------------------------------------------------------------------------- 1 | shc:/10/17/21280336446744622727760467573259651033422463657311102052560476417045586807413739003862376440 -------------------------------------------------------------------------------- /test-data/test-example-00-fhirhealthcard.json: -------------------------------------------------------------------------------- 1 | { 2 | "resourceType": "Parameters", 3 | "parameter":[{ 4 | "name": "verifiableCredential", 5 | "valueString": "eyJ6aXAiOiJERUYiLCJhbGciOiJFUzI1NiIsImtpZCI6IjNLZmRnLVh3UC03Z1h5eXd0VWZVQUR3QnVtRE9QS01ReC1pRUxMMTFXOXMifQ.3ZJLb9swEIT_SrC9ynohjSDd6hTI41AUaNpL4QNNrS0WfAgkJcQN9N-7SztIWyQ55RTdVhx-nBnyAVQI0MEQ4xi6oggjyjwY4eOAQschl8L3ocB7YUaNoSD1hB4ysNsddNVFXV-0ZX3e5G3TZjBL6B4gHkaE7ucT83_ch-Ow4oFQL-uUMZNVv0VUzr4qlG5WfdXCJgPpsUcbldDfpu0vlJEt7Qblf6APzOngPC_zinj8dz3ZXiNrPAY3eYl3yT6cFrJTHJBOa6IdndAB_kAZiTxp_d1rEjzu70oSPA7PgL9SHNrPHQqDR4gwShMPPlnS-JDO2KsZLfd46wae1zlsFgq4VRT-s4jMqtqP1aqsVnUJy5I966Z63c3NvxWHKOIUUly-8Ih8QbOQUlm8dH0iSNcru0_GwyFENKf3Qzcz6CZ3fl9ws0VQfSHnewLItBPqsoFls2QwnipIdnbo0bK3vxskkZNy8mmJw94pc0TUKXDJsaiqnfOG3iN7ETI6z8hehVGLVOf68uwKLXqhz65dGFUUmoqiErWLXyaz5a1Qpq96scH6XTZYt2_dYMMLC31_AA.CdIxK-awV5j6TbhbYtQ3YA9toe9kfRNvPTL72JlkXD7DXuaNKkTYMKvLv8gVdR_h7YFf5gzOZeWPi69wMLDuCA" 6 | }] 7 | } -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-0-bad_qr_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-0-bad_qr_version.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-0-corrupted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-0-corrupted.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-0-qr_chunk_too_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-0-qr_chunk_too_small.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-0-single_qr_segment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-0-single_qr_segment.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-0-too_many_qr_segment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-0-too_many_qr_segment.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-1-qr_chunk_too_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-1-qr_chunk_too_small.png -------------------------------------------------------------------------------- /test-data/test-example-00-g-qr-code-inflated-to-v22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-example-00-g-qr-code-inflated-to-v22.png -------------------------------------------------------------------------------- /test-data/test-invalid-jws-payload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ongov/OpenVerify/7fd2bebb1af61456f858bbc1b38917fbf8234553/test-data/test-invalid-jws-payload.png -------------------------------------------------------------------------------- /test-data/test-issuers.json: -------------------------------------------------------------------------------- 1 | { 2 | "participating_issuers": [ 3 | { 4 | "iss": "https://spec.smarthealth.cards/examples/issuer", 5 | "name": "SMART Health Card specification example issuer" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /test-data/valid_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"wXnE30rKv9vfaP-q_A18Mdh45GvxnCyBmvkldEf584g","use":"sig","alg":"ES256","crv":"P-256","x":"VE1AThGRVudJGJYxe3330jTHLcqQgP44WVFymYvaGaw","y":"mnseemWFh1EjliwCetIyO9tleUPDk_oIxS29NIJOQgQ"}]} -------------------------------------------------------------------------------- /test-data/valid_keys.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"Qfjo1OC05q1qXWbiiE2D4hkPlEqaJd5qdH4K4b9h97c","use":"sig","alg":"ES256","crv":"P-256","x":"5FJFDayDc-L2qfhh88hoLnUGuOh40NHjOZqqf8cxAKI","y":"-FMxeQtP8_EQBDev_AOmXpX9rJSw3sQWnw0P8XyNQRk"},{"kty":"EC","kid":"Ym-X9Xmsh1jNTDziB_5abLvRH8fIEURXAWisVC2sPpc","use":"sig","alg":"ES256","crv":"P-256","x":"GTIiMO8A9t6FoJDVD-malbKydh2NRn_GxI-77vohDbI","y":"5yGFaBMo6t9QFCZquKEunTy3QXNFu90o1_PNkFVxdB0"},{"kty":"EC","kid":"51VtwbXpEmvmuJqTdaXIQ3UarQ33LLer8mQradarYWM","use":"sig","alg":"ES256","crv":"P-256","x":"5fjwitvt7DY7j1xwjywUIOQpAsRBdhHgcUvAO4WUGaI","y":"iGHF6R1YZUrbzsSmtrC25UGH7V8Dqaz-tg-9rvNpBjk"}]} -------------------------------------------------------------------------------- /test-data/wrong_alg_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"Nl_oM2xt7AiBtmib0VUVTMxuG_IwP4Bl0Sjg5tWHGqE","use":"sig","alg":"ES256K","crv":"P-256","x":"OvVpwfMToycI8jsY5tSsLqYlcCoNIVelUD3mscDoXnk","y":"poflcGsnhcBktiQXC9HM5uVBJL4picDYfeig6tCm1_Y"}]} -------------------------------------------------------------------------------- /test-data/wrong_curve_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"pvmz3nHw7BcVMpU_6bwWaFPQppQwveRjSa3nvn2QjNA","use":"sig","alg":"ES384","crv":"P-384","x":"RmRqlnGi5o9av4VvMc3YkRpJtwyohX_MWF7SuN8zhcACJvBHTbF5spNYlGDbpFge","y":"pfWy8oXm6lU8q9RhYp2mAr6DdU8kUtiDYgJ0Fhdp8CAk7Hy3Kx24gipeelm3fj1c"}]} -------------------------------------------------------------------------------- /test-data/wrong_kid_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"ThisIsNotTheThumbprintOfTheKey","use":"sig","alg":"ES256","crv":"P-256","x":"kOzbAF6ArH1BLM7MhOIEH4NiEqsrySkkrql56G_iyAA","y":"9f7pZkbEQu0mlpdL3B8JujJBVtjFW4eizxoevh8akbI"}]} -------------------------------------------------------------------------------- /test-data/wrong_kty_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"RSA","kid":"528CbP7VokRCO69SL1rJtuVVgaAIci3nznSRWfmE03g","e":"AQAB","n":"u_SsfG5xo9y3qpwQzg-CcbHVpIhZ26EQAz7EfxpEE4SvMoRfTg_316Cd-ghXxScL_nOGads8jCcPtI7s-egrFuVyQ_j2riiLp1zNO9-eRlXAm6YPI6a_cYPuIwGurTcP13YVu7K6DL3oGxR46_up8OsE0ch6gDGe4jIMI4GWCnNBxBa9oHRMGk2biIW1B-KQNmHjqoNtHPAytfOrrhKFoAjqeLssobGVBRsGi4qOgbqXQTXatIXVrApWgtx2-1ozaGlU6LU-FMUX6te8eCd2kWE4LvIvyc1Dqp2kEsWkQ86s70he7IgMIIw3bVZibBRKtU09wTm670ngPoNqXTWZqw"}]} -------------------------------------------------------------------------------- /test-data/wrong_use_key.json: -------------------------------------------------------------------------------- 1 | {"keys":[{"kty":"EC","kid":"NDToaP8hnQaoyYmy-8z436x_edSjQhViQ9JbEUsNI_E","use":"enc","alg":"ES256","crv":"P-256","x":"5MGwuvx4Hb-ZuO8l2T_e72n1GM71l9jXyLq6lv-bn6E","y":"YbzeL_DvBr2yVIs3jKUmfxSuznCr1fTEjkeo3Y5OJEI"}]} --------------------------------------------------------------------------------