B.2 Input Message Containing No Binary Part

29.5733GPP5G SystemPublic Land Mobile Network (PLMN) InterconnectionRelease 18Stage 3TS

Consider the following example:

– Some headers of the input HTTP/2 message need to be integrity protected and ciphered.

– Some payload part of the input HTTP/2 message need to be integrity protected and ciphered.

– The input HTTP/2 message has no multipart/related binary content.

– The headers and payload that are not required to be integrity protected and ciphered in the input HTTP/2 message need to be only integrity protected.

The N32fReformattedReqMessage for this example looks like

"reformattedData": {

"protected": BASE64URL(UTF8(JWE Protected Header),

"unprotected": <non integrity protected shared JOSE headers>,

"header": <non integrity protected recipient specific JOSE headers>,

"encrypted_key": BASE64URL(JWE Encrypted Key),

"aad": BASE64URL(DataToIntegrityProtectBlock),

"iv": BASE64URL(JWE Initialization Vector),

"ciphertext": BASE64URL(JWE CipherText(DataToIntegrityProtectAndCipherBlock),

"tag": BASE64URL(JWE Authentication Tag)

}

The DataToIntegrityProtectBlock for this example looks like

{

"metaData":

{

"n32fContextId": <the n32fcontext Id of receiving SEPP>,

"messageId": <Id of the message>,

"authorizedIpxId": <FQDN of the IPX>

},

"requestLine":

{

"method": <http method of the NF service API>,

"scheme": <http scheme of the NF service API>,

"authority": <authority part of the NF service API URI>,

"path": <path part of the NF service API URI>,

"protocolVersion": <HTTP protocol version>,

"queryFragment": <query fragment of the NF service API, if available>

},

"headers":

[

{

"header": <name of HTTP header 1>,

"value": {"headerval": <string carrying value of the header>}

},

{

"header": <name of HTTP header 2>,

"value": {"encBlockIndex": 1}

}

],

"payload":

[

{

"iePath": <JSON Pointer of IE 1>,

"ieValueLocation": "BODY",

"value": <value of IE>

},

{

"iePath": <JSON Pointer of IE 2>,

"ieValueLocation": "BODY",

"value": {"encBlockIndex": 2}

}

]

}

The DataToIntegrityProtectAndCipherBlock for this example looks like

{

"dataToEncrypt":

[

<value of HTTP header 2>,

<value of payload 2>

]

}