diff --git a/components/Alert.js b/components/Alert.js index 439e2bb..a7bfad3 100644 --- a/components/Alert.js +++ b/components/Alert.js @@ -9,9 +9,9 @@ export function Alert() { } return( - diff --git a/pages/index.js b/pages/index.js index 5c37529..f5e7db5 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,7 +1,6 @@ import { NextSeo } from 'next-seo'; import Form from '../components/Form' -import Logo from '../components/Logo' import Card from '../components/Card' import Page from '../components/Page' diff --git a/src/constants.js b/src/constants.js index 1974d65..b68f548 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,18 +1,21 @@ -exports.BASE_URL = 'https://raw.githubusercontent.com/ehn-dcc-development/ehn-dcc-valuesets/main/' exports.API_BASE_URL = 'https://api.covidpass.marvinsextro.de/' + +exports.VALUE_SET_BASE_URL = 'https://raw.githubusercontent.com/ehn-dcc-development/ehn-dcc-valuesets/main/' exports.VALUE_TYPES = { - medicalProducts: 'vaccine-medicinal-product.json', - countryCodes: 'country-2-codes.json', - manufacturers: 'vaccine-mah-manf.json', + medicalProducts: 'vaccine-medicinal-product.json', + countryCodes: 'country-2-codes.json', + manufacturers: 'vaccine-mah-manf.json', } exports.COLORS = { - white: 'rgb(255, 255, 255)', - black: 'rgb(0, 0, 0)', - grey: 'rgb(33, 33, 33)', - green: 'rgb(27, 94, 32)', - indigo: 'rgb(26, 35, 126)', - blue: 'rgb(1, 87, 155)', - purple: 'rgb(74, 20, 140)', - teal: 'rgb(0, 77, 64)', + white: 'rgb(255, 255, 255)', + black: 'rgb(0, 0, 0)', + grey: 'rgb(33, 33, 33)', + green: 'rgb(27, 94, 32)', + indigo: 'rgb(26, 35, 126)', + blue: 'rgb(1, 87, 155)', + purple: 'rgb(74, 20, 140)', + teal: 'rgb(0, 77, 64)', } exports.NAME = 'CovidPass' +exports.PASS_IDENTIFIER = 'pass.de.marvinsextro.covidpass' // WELL KNOWN +exports.TEAM_IDENTIFIER = 'X8Q7Q2RLTD' // WELL KNOWN diff --git a/src/pass.js b/src/pass.js index 65860c4..c040c21 100644 --- a/src/pass.js +++ b/src/pass.js @@ -1,18 +1,13 @@ 'use strict'; -const consts = require('./constants') +const constants = require('./constants') const utils = require('./utils') -const img = require('./img') const { Payload } = require('./payload') const { toBuffer } = require('do-not-zip') const crypto = require('crypto') exports.createPass = async function(data) { - async function getJSONfromURL(url) { - return await (await fetch(url)).json() - } - function getBufferHash(buffer) { // creating hash const sha = crypto.createHash('sha1'); @@ -30,6 +25,7 @@ exports.createPass = async function(data) { // Adding required files // Create pass.json zip.push({ path: 'pass.json', data: Buffer.from(JSON.stringify(pass)) }) + const passHash = getBufferHash(Buffer.from(JSON.stringify(pass))) zip.push({ path: 'icon.png', data: payload.img1x }) zip.push({ path: 'icon@2x.png', data: payload.img2x }) @@ -49,18 +45,18 @@ exports.createPass = async function(data) { ); zip.push({ path: 'manifest.json', data: manifestJson }); - const response = await fetch(consts.API_BASE_URL + 'sign_manifest', { + const response = await fetch(`${constants.API_BASE_URL}/sign`, { method: 'POST', headers: { 'Accept': 'application/octet-stream', 'Content-Type': 'application/json' }, body: JSON.stringify({ - manifest: manifestJson + PassJsonHash: passHash, }) }) - if (response.status != 200) { + if (response.status !== 200) { return undefined } @@ -87,8 +83,6 @@ exports.createPass = async function(data) { } catch (e) { return undefined } - - let signingIdentity = await getJSONfromURL(consts.API_BASE_URL + 'signing_identity') const qrCode = { message: payload.raw, @@ -97,14 +91,14 @@ exports.createPass = async function(data) { } const pass = { - passTypeIdentifier: signingIdentity['pass_identifier'], - teamIdentifier: signingIdentity['pass_team_id'], + passTypeIdentifier: constants.PASS_IDENTIFIER, + teamIdentifier: constants.TEAM_IDENTIFIER, sharingProhibited: true, voided: false, formatVersion: 1, - logoText: consts.NAME, - organizationName: consts.NAME, - description: consts.NAME, + logoText: constants.NAME, + organizationName: constants.NAME, + description: constants.NAME, labelColor: payload.labelColor, foregroundColor: payload.foregroundColor, backgroundColor: payload.backgroundColor, @@ -182,6 +176,5 @@ exports.createPass = async function(data) { } }; - let buf = await signPassWithRemote(pass, payload) - return buf + return await signPassWithRemote(pass, payload) } diff --git a/src/utils.js b/src/utils.js index 827ed20..a08e30f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,15 +1,15 @@ -const { VALUE_TYPES, BASE_URL } = require("./constants") +const { VALUE_TYPES, VALUE_SET_BASE_URL } = require("./constants") const fetch = require("node-fetch") exports.getValueSets = async function() { - async function getJSONfromURL(url) { + async function getJSONFromURL(url) { return await (await fetch(url)).json() } - var valueSets = {} + let valueSets = {} for (const [key, value] of Object.entries(VALUE_TYPES)) { - valueSets[key] = await getJSONfromURL(BASE_URL + value) + valueSets[key] = await getJSONFromURL(VALUE_SET_BASE_URL + value) } return valueSets