Browse Source

Adding a Schema validator

pull/2/head
Vitor Pamplona 5 years ago
parent
commit
90ecd7490f
2 changed files with 30 additions and 1 deletions
  1. +19
    -1
      eu.dgc.html
  2. +11
    -0
      js/ajv7.min.js

+ 19
- 1
eu.dgc.html View File

@ -780,6 +780,7 @@ AF7zi+d862ePRQ9Lwymr7XfwVm0=
<script src="js/pcf.js"></script>
<script src="js/eudgc.sdk.min.js"></script>
<script src="js/he.js"></script>
<script src="js/ajv7.min.js"></script>
<script>
function e(elem) { return document.getElementById(elem); }
@ -1073,6 +1074,19 @@ AF7zi+d862ePRQ9Lwymr7XfwVm0=
signAndDisplayEUQR("qr-recov-orig", recovEU, priKeyEUPEM, pubKeyEUPEM);
sign32AndDisplayEUQR("qr-recov-orig32", recovEU, priKeyEUPEM, pubKeyEUPEM);
}
function schemaValidator() {
var ajv = new ajv7.default({strict: "log", validateFormats: false});
let client = new XMLHttpRequest();
client.open('GET', 'https://raw.githubusercontent.com/ehn-digital-green-development/ehn-dgc-schema/main/DGC.combined-schema.json', false);
client.setRequestHeader("Accept", "application/vnd.github.v3+json");
client.send();
const schema = JSON.parse(client.response);
delete schema['$schema'];
return ajv.compile(schema);
}
function verifyQRCode() {
if (e("qr-verify").value.startsWith('CRED:')) {
@ -1081,9 +1095,13 @@ AF7zi+d862ePRQ9Lwymr7XfwVm0=
} else {
e("qr-verify-result").innerHTML = "Checking";
EUDGC.unpackAndVerify(e("qr-verify").value, e('pubkeyEU').value).then(json => {
const validator = schemaValidator();
const valid = validator(json);
console.log(valid);
console.log(validator.errors);
if (json) {
e("qr-verify-result").innerHTML = "Data: " + he.encode(JSON.stringify(json));
e('qr-verify-verified').innerHTML = "Signature Verified";
e('qr-verify-verified').innerHTML = "Signature Verified " + (valid? " and Schema is Valid" : " but Schema has errors " + JSON.stringify(validator.errors));
} else {
e('qr-verify-verified').innerHTML = "Could not Verify";
}


+ 11
- 0
js/ajv7.min.js
File diff suppressed because it is too large
View File


Loading…
Cancel
Save