diff --git a/datamodels/attestation-results/grammar/Makefile b/datamodels/attestation-results/grammar/Makefile index 7765dd9..2459330 100644 --- a/datamodels/attestation-results/grammar/Makefile +++ b/datamodels/attestation-results/grammar/Makefile @@ -10,6 +10,7 @@ check:: check-json check-json-examples check:: check-cbor check-cbor-examples check:: check-veraison-cbor check-veraison-cbor-examples check:: check-veraison-json check-veraison-json-examples +check:: check-teep-json check-teep-json-examples # $1: label # $2: cddl fragments @@ -74,4 +75,15 @@ VERAISON_JSON_EXAMPLES := $(wildcard examples/veraison-json-*.diag) $(eval $(call cddl_check_template,veraison-json,$(VERAISON_JSON_FRAGS),$(VERAISON_JSON_EXAMPLES))) +TEEP_JSON_FRAGS := attestation-result.cddl +TEEP_JSON_FRAGS += json-labels.cddl +TEEP_JSON_FRAGS += generic-non-empty.cddl +TEEP_JSON_FRAGS += teep.cddl +TEEP_JSON_FRAGS += teep-json-labels.cddl +TEEP_JSON_FRAGS += coswid-version-scheme.cddl + +TEEP_JSON_EXAMPLES := $(wildcard examples/teep-json-*.diag) + +$(eval $(call cddl_check_template,teep-json,$(TEEP_JSON_FRAGS),$(TEEP_JSON_EXAMPLES))) + clean: ; $(RM) $(CLEANFILES) diff --git a/datamodels/attestation-results/grammar/coswid-version-scheme.cddl b/datamodels/attestation-results/grammar/coswid-version-scheme.cddl new file mode 100644 index 0000000..5463137 --- /dev/null +++ b/datamodels/attestation-results/grammar/coswid-version-scheme.cddl @@ -0,0 +1,12 @@ +$version-scheme /= multipartnumeric +$version-scheme /= multipartnumeric-suffix +$version-scheme /= alphanumeric +$version-scheme /= decimal +$version-scheme /= semver +$version-scheme /= int / text +multipartnumeric = 1 +multipartnumeric-suffix = 2 +alphanumeric = 3 +decimal = 4 +semver = 16384 + diff --git a/datamodels/attestation-results/grammar/examples/teep-json-1.diag b/datamodels/attestation-results/grammar/examples/teep-json-1.diag new file mode 100644 index 0000000..4b77101 --- /dev/null +++ b/datamodels/attestation-results/grammar/examples/teep-json-1.diag @@ -0,0 +1,19 @@ +{ + "eat_profile": "tag:github.com/veraison/ar4si,2022-10-17", + "ear.status": "affirming", + "ear.trustworthiness-vector": { + "instance-identity": 2, + "configuration": 2, + "executables": 2, + "hardware": 2 + }, + "iat": 1666529284, + "ear.appraisal-policy-id": "https://veraison.example/policy/1/60a0068d", + "ear.teep.claims": { + "nonce": "80FH7byS7VjfARIq0_KLqu6B9j-F79QtV6p", + "ueid": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh", + "oemid": "Av8B", + "hwmodel": "fJYq", + "hwversion": ["1.2.5", 16384] + } +} diff --git a/datamodels/attestation-results/grammar/teep-cbor-labels.cddl b/datamodels/attestation-results/grammar/teep-cbor-labels.cddl new file mode 100644 index 0000000..31fccfb --- /dev/null +++ b/datamodels/attestation-results/grammar/teep-cbor-labels.cddl @@ -0,0 +1,5 @@ +ear.teep.claims = 65000 + +; TODO + +; vim: set tw=70 ts=2 et: diff --git a/datamodels/attestation-results/grammar/teep-json-labels.cddl b/datamodels/attestation-results/grammar/teep-json-labels.cddl new file mode 100644 index 0000000..e2957a8 --- /dev/null +++ b/datamodels/attestation-results/grammar/teep-json-labels.cddl @@ -0,0 +1,38 @@ +ear.teep.claims = "ear.teep.claims" + +eat.nonce = "nonce" +eat.ueid = "ueid" +eat.oemid = "oemid" +eat.hardware-model = "hwmodel" +eat.hardware-version = "hwversion" +eat.manifests = "manifests" + +eat.nonce-type = tstr .size (10..74) + +eat.ueid-type = base64-url-text ; cddl(1)-unsupported: .size (12..44) + +eat.oemid-type = oemid-pen / oemid-ieee / oemid-random + +eat.hardware-model-type = base64-url-text ; cddl(1)-unsupported: .size (4..44) + +eat.hardware-version-type = [ + version: tstr, + ? scheme: $version-scheme +] + +eat.manifests-type = [ + manifest-format ] + +manifest-format = [ + content-type: coap-content-format, + content-format: base64-url-text / text +] + +coap-content-format = uint .le 65535 + +oemid-pen = int +oemid-ieee = base64-url-text ; cddl(1)-unsupported: .size 4 +oemid-random = base64-url-text ; cddl(1)-unsupported: .size 24 + +base64-url-text = tstr .regexp "[A-Za-z0-9_=-]+" + +; vim: set tw=70 ts=2 et: diff --git a/datamodels/attestation-results/grammar/teep.cddl b/datamodels/attestation-results/grammar/teep.cddl new file mode 100644 index 0000000..6cb8c0b --- /dev/null +++ b/datamodels/attestation-results/grammar/teep.cddl @@ -0,0 +1,14 @@ +$$ear-extension //= ( + ear.teep.claims => ear-teep-claims +) + +ear-teep-claims = non-empty<{ + ? eat.nonce => eat.nonce-type + ? eat.ueid => eat.ueid-type + ? eat.oemid => eat.oemid-type + ? eat.hardware-model => eat.hardware-model-type + ? eat.hardware-version => eat.hardware-version-type + ? eat.manifests => eat.manifests-type +}> + +; vim: set tw=70 ts=2 et: