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>
]
}