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(