Commit 0405f057 authored by Martin Ward's avatar Martin Ward
Browse files

Update interop-kms.yaml

parent aff144c7
Loading
Loading
Loading
Loading
+57 −25
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ info:
  contact:
    name: ETSI ISG QKD
    email: 'isgsupport@etsi.org'
  version: '0.0.1'
  version: '0.1.1'
servers:
- url: https://{KME_hostname}/
  description: Local KMS server
@@ -19,14 +19,14 @@ tags:
- name: 'Extended Specification'

paths:
  /api/v1/keys/ext_keys:
  /kdapi/v2/ext_keys:
    post:
      summary: 'Relay key'
      summary: 'Transfer keys to external KMS'
      tags:
      - 'Extended Specification'
      description: 'Returns Key container data from the KME to the initiator SAE. Key container data contains one or more keys. The initiator SAE may supply Key request data to specify requirements on Key container data. The target SAE specified by the target_SAE_ID parameter may subsequently request matching keys from a remote KME using key_id identifiers from the returned Key container.'
      description: 'Pass an Extended Key Container comprising key material and associated data to another KME, for the key(s) to be delivered (by relay where necessary) to the target SAE(s) specified. The Extended Key Container contains keys matching those to be delivered to the initiator SAE.'
      requestBody:
        description: 'Extended key container.'
        description: 'Extended Key Container'
        required: true
        content:
          application/json:
@@ -55,7 +55,7 @@ components:
          example:
            message: 'key routing error'
            details:
            - 'target_SAE_ID not recognized': 'KME associated with this target SAE ID is not known.'
            - 'One of the target_sae_ids was not recognized': 'KME associated with a target SAE ID is not known.'

  schemas:
    ext_key_container:
@@ -66,47 +66,74 @@ components:
      - initiator_sae_id
      - target_sae_id
      properties:
        Keys:
          description: 'Array of keys. The number of keys is specified by the "number" parameter in "Get key". If not specified, the default number of keys is 1.'
        keys:
          description: 'Array of keys'
          type: array
          items:
            type: object
            required:
            - key_id
            - key
            - key_value
            properties:
              key_id:
                description: 'ID of the key: UUID format.'
                description: 'ID of the key: UUID format'
                type: string
                format: uuid
                example: '550e8400-e29b-41d4-a716-446655440000'
              key_id_extension:
                description: '(Option) for future use'
                description: 'Object for future use'
                type: object
              key:
                description: 'Key data encoded by base64 [7]. The key size is specified by the "size" parameter in "Get key". If not specified, the "key_size" value in Status data model is used as the default size.'
              key_value:
                description: 'Key data encoded in base64'
                type: string
              key_extension:
                description: '(Option) for future use.'
                description: 'Object for future use'
                type: object
          example:
            - key_id: 'bc490419-7d60-487f-adc1-4ddcc177c139'
              key: 'wHHVxRwDJs3/bXd38GHP3oe4svTuRpZS0yCC7x4Ly+s='
              key_value: 'wHHVxRwDJs3/bXd38GHP3oe4svTuRpZS0yCC7x4Ly+s='
            - key_id: '0a782fb5-3434-48fe-aa4d-14f41d46cf92'
              key: 'OeGMPxh1+2RpJpNCYixWHFLYRubpOKCw94FcCI7VdJA='
              key_value: 'OeGMPxh1+2RpJpNCYixWHFLYRubpOKCw94FcCI7VdJA='
            - key_id: '64a7e9a2-269c-4b2c-832c-5351f3ac5adb'
              key: '479G1Osfljpmfa5vn24tdzE5zqv5CafkGxYrLCk8384='
              key_value: '479G1Osfljpmfa5vn24tdzE5zqv5CafkGxYrLCk8384='
            - key_id: '550e8400-e29b-41d4-a716-446655440000'
              key: 'csEMV9KkmjgOPF90uc54+hykhg6iI5GTPHlP9PjgLVU='
              key_value: 'csEMV9KkmjgOPF90uc54+hykhg6iI5GTPHlP9PjgLVU='
        initiator_sae_id:
          description: 'ID of initiator SAE who instigated the request to share the keys that are carried in this container. (Editorial note: It is proposed to introduce a similar parameter to GS QKD 014 this parameter is optional when the  container is returned in response to ENC/DEC_KEYS API, but non-optional when container used for EXT_KEYS API relaying keys between SAEs)'
          description: 'ID of the SAE that initiated the request to share the key(s) contained in the request'
          type: string
        target_sae_id:
          description: 'ID of target SAE that the initiator SAE wishes to share keys with (i.e., the SAE the keys are being relayed to).'
          example: 'App_Init'
        target_sae_ids:
          description: 'Array of IDs of target SAE(s) that the initiator SAE wishes to share keys with'
          type: array
          items:
            type: string
          example:
            - 'App_Target_1'
            - 'App_Target_2'
        key_container_extension:
          description: '(Option) for future use.'
          description: 'Object for future use'
          type: object
          example:
            {"abc_additional_id": "be3aa2"}
        key_request_extension_mandatory:
          description: 'Array of extension parameters that the KME shall handle or return an error'
          type: array
          items:
            description: 'Object for future use'
            type: object
          example:
            - {"abc_max_protocol_epsilon": 1e-7}
            - {"abc_relay_encryption_otp": true}

        key_request_extension_optional:
          description: 'Array of extension parameters that the KME may ignore'
          type: array
          items:
            description: 'Object for future use'
            type: object
          example:
            - {"abc_max_age": 30000}
            - {"abc_prefer_protocol": "BB84"}

    message_data:
      title: 'Message Data format'
@@ -117,9 +144,14 @@ components:
        message:
          description: 'Response message'
          type: string
          example:
            message: 'success'
        details:
          description: 'Array of objects containing details'
          type: array
          items:
            description: 'Object containing detail'
            type: object
            example:
        message: 'success'
              - {"response_time": 32}
              - {"availability": "good"}