Skip to content

Open source javascript app written in Vue2 to scan/decode and verify a NZ COVID Pass.

License

Notifications You must be signed in to change notification settings

servian/nz-covidpass-verification-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NZ Covid Pass Verification App

Overview

Open source javascript app written in Vue2 to scan/decode and verify a NZ COVID Pass.

With this tool you can scan, decode and view the cbor encoded json in your NZ Covid Pass which are not visible in the standard application.

This tool also validates if the pass:

  1. is a Base32 encoded NZCP Version 1
  2. is encoded as a CBOR
  3. has the correct protected headers
  4. is issued by New Zealand Ministry of Health by matching the iss in the payload
  5. is signed and validated by using the signature of the payload over the CBOR structure using the MOH public key
  6. hasn't expired

Demo

For online demo of this application click here

Technical details

This project uses the following 4 libraries to decode and verify the pass:

  1. Vue QR Code Reader: Detect and decode QR codes
  2. Base32 Decode: Base32 decoder with support for multiple variants.
  3. CBOR: Encode and parse data in the Concise Binary Object Representation (CBOR) data format
  4. COSE: JavaScript implementation of COSE, RFC8152

Requirements

  • docker (For serving the app for local development)
  • docker-compose (v1.22 minimum, for serving the app for local development)
  • make (For helper commands)

Quick Start

  1. make start

Make Commands

  • make build - Run a production build and output the generated files to dist
  • make exec - Start an interactive command prompt in the local development container
  • make lint - Lint the project with ESLint
  • make logs - View and follow logs for the local development container
  • make restart - Restart the local development container (Useful if Webpack file watchers break)
  • make start - Start the local development container
  • make stop - Stop and remove the local development container

Contributing

Open an issue or a pull request to suggest changes or additions.

Commit Messages

All commit messages should try to match the regex /^NZVA-[\d]{1,4} - [A-Z].*[\w)]$/. In short (see here for details):

  • Titles should try to not exceed 50 characters and should never exceed 72 characters
    • Use the message body for further info on how/why you made your change
  • Titles should be capitalised
  • Titles should not end in a period
  • Titles should be in the imperative mood (Add feature A not Added feature A)
  • Separate the body from the title with an empty line
  • The body should wrap at 72 characters

Bad:

  • Updated readme to include guidelines on good commit message format.
  • [NZVA-123] updated readme to include guidelines on good commit message format
  • NZVA-123 - Added commit message guidelines to README

Good:

  • NZVA-123 - Add commit message guidelines to README

Node Project Module License List

@ellipticoin/[email protected] [license(s): MIT]
└── package.json:  MIT

@nuxt/[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

@sovpro/[email protected] [license(s): MIT]
└── package.json:  MIT

@zxing/[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

@zxing/[email protected] [license(s): (Unlicense OR Apache-2.0), Apache]
├── package.json:  (Unlicense OR Apache-2.0)
└── license files: Apache

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): Apache, Apache-2.0]
├── package.json:  Apache-2.0
└── license files: Apache

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): Apache-2.0]
└── package.json:  Apache-2.0

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── readme files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── readme files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): Apache, Apache-2.0]
├── package.json:  Apache-2.0
└── license files: Apache

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): Unknown]

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): BSD-3-Clause]
└── package.json:  BSD-3-Clause

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
└── package.json:  MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

[email protected] [license(s): MIT]
├── package.json:  MIT
├── license files: MIT
└── readme files: MIT

[email protected] [license(s): BSD, BSD-2-Clause]
├── package.json:  BSD-2-Clause
└── license files: BSD

[email protected] [license(s): BSD-3-Clause]
└── package.json:  BSD-3-Clause

[email protected] [license(s): MIT]
├── package.json:  MIT
└── license files: MIT

LICENSES: (Unlicense OR Apache-2.0), Apache, Apache-2.0, BSD, BSD-2-Clause, BSD-3-Clause, MIT, Unknown

About

Open source javascript app written in Vue2 to scan/decode and verify a NZ COVID Pass.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published