diff --git a/103120/examples/json/response1_signed.json b/103120/examples/json/response1_signed.json
new file mode 100644
index 0000000000000000000000000000000000000000..a30a3fff1a4cebd2429da23a7ebf98986b40b232
--- /dev/null
+++ b/103120/examples/json/response1_signed.json
@@ -0,0 +1,52 @@
+{
+ "@xmlns": "http://uri.etsi.org/03120/common/2019/10/Core",
+ "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
+ "@xmlns:common": "http://uri.etsi.org/03120/common/2016/02/Common",
+ "@xmlns:task": "http://uri.etsi.org/03120/common/2020/09/Task",
+ "@xmlns:auth": "http://uri.etsi.org/03120/common/2020/09/Authorisation",
+ "Header": {
+ "SenderIdentifier": {
+ "CountryCode": "XX",
+ "UniqueIdentifier": "ACTOR01"
+ },
+ "ReceiverIdentifier": {
+ "CountryCode": "XX",
+ "UniqueIdentifier": "ACTOR02"
+ },
+ "TransactionIdentifier": "c02358b2-76cf-4ba4-a8eb-f6436ccaea2e",
+ "Timestamp": "2015-09-01T12:00:01.000000Z",
+ "Version": {
+ "ETSIVersion": "V1.13.1",
+ "NationalProfileOwner": "XX",
+ "NationalProfileVersion": "v1.0"
+ }
+ },
+ "Payload": {
+ "ResponsePayload": {
+ "ActionResponses": {
+ "ActionResponse": [
+ {
+ "ActionIdentifier": 0,
+ "CREATEResponse": {
+ "Identifier": "7dbbc880-8750-4d3c-abe7-ea4a17646045"
+ }
+ },
+ {
+ "ActionIdentifier": 1,
+ "CREATEResponse": {
+ "Identifier": "2b36a78b-b628-416d-bd22-404e68a0cd36"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "Signatures": [
+ {
+ "hash_algorithm": "sha-256",
+ "algorithm": "Ed25519",
+ "public_key": "MCowBQYDK2VwAyEAubMonBfU9pvIbj5RCiWQLD45Jvu6mKr+kQXjvjW8ZkU",
+ "value": "B6vWORSsHlPfyHOvqEhnyH0vEVI90gfZADeP7uLQPOrYfDKMIZKopcnag9hZH0IrAZhgz5awTgt6AUfRX/fCCA=="
+ }
+ ]
+}
diff --git a/103120/schema/json/ts_103120_Core.schema.json b/103120/schema/json/ts_103120_Core.schema.json
index 3216b8c746ba68d4087c259fc35a651c33d301d6..3098c04998b6a34723420caa523639ecbec882ba 100644
--- a/103120/schema/json/ts_103120_Core.schema.json
+++ b/103120/schema/json/ts_103120_Core.schema.json
@@ -27,6 +27,32 @@
"protected",
"signature"
]
+ },
+ "Signatures": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "properties": {
+ "hash_algorithm": {
+ "type": "string"
+ },
+ "algorithm": {
+ "type": "string"
+ },
+ "public_key": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "hash_algorithm",
+ "algorithm",
+ "value"
+ ]
+ }
}
},
"required": [
diff --git a/103120/schema/xsd/ts_103120_Core.xsd b/103120/schema/xsd/ts_103120_Core.xsd
index 323e8efcc3397f59b244c1a6684afe895a448101..d30f6949d68778ca02ab6c4ea8e34d240b21221f 100644
--- a/103120/schema/xsd/ts_103120_Core.xsd
+++ b/103120/schema/xsd/ts_103120_Core.xsd
@@ -13,6 +13,8 @@
+
+
diff --git a/utils/translate_spec.py b/utils/translate_spec.py
index 6ce2f843a17646a88ffde26041a2068805955b8f..6e3c987f23468941e8677ee6a1eec0881690db16 100644
--- a/utils/translate_spec.py
+++ b/utils/translate_spec.py
@@ -12,7 +12,13 @@ logging.basicConfig(level=logging.INFO)
json_signature_struct = {
"properties": {"protected": {"type": "string"}, "signature": {"type": "string"}},
- "required": ["protected", "signature"],
+ "required": ["protected", "signature"]
+}
+
+json_x590_signature_struct = {
+ "type": "array", "minItems": 1, "items": {"type": "object",
+ "properties": {"hash_algorithm": {"type": "string"}, "algorithm": {"type": "string"}, "public_key": {"type": "string"}, "value": {"type": "string"} }
+ "required": ["hash_algorithm", "algorithm", "value"] }
}
@@ -89,6 +95,8 @@ if __name__ == "__main__":
js["$defs"]["HI1Message"]["patternProperties"] = {"^@": {"type": "string"}}
js["$defs"]["HI1Message"]["properties"].pop("xmldsig:Signature")
js["$defs"]["HI1Message"]["properties"]["Signature"] = json_signature_struct
+ js["$defs"]["HI1Message"]["properties"]["Signatures"] = json_x590_signature_struct
+
if "output" in ns_map[schema_tuple[0]]:
js_path = Path(ns_map[schema_tuple[0]]["output"]) / convert_xsd_to_filename(