This web-based tool allows you to add your Ontario Vaccination Receipt as a pass into your Apple Wallet on iOS in a privacy-respecting way. It achieves this without sending your data to a server and instead uses a hashed representation for the signing step.
#### How do I make sure that nobody can access my vaccination pass from the lock screen (iOS)?
Navigate to the "TouchID & Code" or "FaceID & Code" or just "Code" section in the Settings and switch the toggle to off for Wallet in the section "Allow access from the lock screen". Also see [this official guide](https://support.apple.com/guide/iphone/control-access-information-lock-screen-iph9a2a69136/ios) from Apple.
* Sign into your [Apple Developer Account](https://developer.apple.com/account/)
* Go to Certificates, Identifiers and Profiles
* Register a new Pass Type Identifier under the Identifiers tab
* Create a new Pass Type ID Certificate under the Certificates tab
* Select your previously created Pass Type Identifier in the process
* Move your new certificate to the My Certificates tab in the keychain
* Export your certificate as a .p12 file
* Install node.js and download the [passkit-keys](https://github.com/walletpass/pass-js/blob/master/bin/passkit-keys) script
* Create a `keys` folder and put the .p12 file inside
* Run ./passkit-keys `<path to your keys folder>`
* You may have to type in the passphrase you defined during the export step
## Run the API locally
A description of how you can use your certificate locally with the API will be provided in the readme of the [CovidPass API](https://github.com/covidpass-org/CovidPassApiNet).
To connect the web app to your local server, you have to set the `API_BASE_URL` environment variable accordingly.
The whole process of generating the pass file happens locally in your browser. For the signing step, a hashed representation of your data is sent to the server.
* Generating a file containing hashes of the data stored in the pass file
* Sending only the file containing the hashes to the server
Second, the following steps happen on the server:
* Receiving and checking the hashes which were generated locally
* Signing the file containing the hashes
* Sending the signature back
Finally, the following steps happen locally in your browser:
* Assembling the signed pass file out of the incomplete file generated locally and the signature
* Saving the file on your device
# Credits
The idea for this web app originated from the [solution of an Austrian web developer](https://coronapass.fabianpimminger.com), which only works for Austrian certificates at the moment.