rfc9770v6.txt | rfc9770.txt | |||
---|---|---|---|---|
skipping to change at line 2771 ¶ | skipping to change at line 2771 ¶ | |||
C.1. Full Query with Observe | C.1. Full Query with Observe | |||
Figure 10 shows an interaction example of a CoAP observation and a | Figure 10 shows an interaction example of a CoAP observation and a | |||
full query of the TRL. | full query of the TRL. | |||
In this example, the AS does not support the "Cursor" extension. | In this example, the AS does not support the "Cursor" extension. | |||
Hence, the 'cursor' parameter is not included in the payload of the | Hence, the 'cursor' parameter is not included in the payload of the | |||
responses to a full query request. | responses to a full query request. | |||
RS AS | RS AS | |||
| | | | | | |||
| Registration: POST | | | Registration: POST | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.01 Created | | | 2.01 Created | | |||
| Payload: { | | | Payload: { | | |||
| / ... / | | | / ... / | | |||
| "trl_path" : "/revoke/trl", | | | "trl_path": "/revoke/trl", | | |||
| "trl_hash" : "sha-256", | | | "trl_hash": "sha-256", | | |||
| "max_n" : 10 | | | "max_n": 10 | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl/ | | | GET coap://as.example.com/revoke/trl/ | | |||
| Observe: 0 | | | Observe: 0 | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 42 | | | Observe: 42 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [] | | | / full_set / 0: [] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t1 and t2 issued | | | (Access tokens t1 and t2 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 is revoked) | | | (Access token t1 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 53 | | | Observe: 53 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1)] | | | / full_set / 0: [bstr.h(t1)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 is revoked) | | | (Access token t2 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 64 | | | Observe: 64 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1), bstr.h(t2)] | | | / full_set / 0: [bstr.h(t1), bstr.h(t2)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 expires) | | | (Access token t1 expires) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 75 | | | Observe: 75 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t2)] | | | / full_set / 0: [bstr.h(t2)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 expires) | | | (Access token t2 expires) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 86 | | | Observe: 86 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [] | | | / full_set / 0: [] | | |||
| } | | | } | | |||
| | | | | | |||
Figure 10: Interaction for Full Query with Observe | Figure 10: Interaction for Full Query with Observe | |||
C.2. Diff Query with Observe | C.2. Diff Query with Observe | |||
Figure 11 shows an interaction example of a CoAP observation and a | Figure 11 shows an interaction example of a CoAP observation and a | |||
diff query of the TRL. | diff query of the TRL. | |||
The RS indicates N = 3 as the value of the 'diff' query parameter, | The RS indicates N = 3 as the value of the 'diff' query parameter, | |||
i.e., as the maximum number of diff entries to be included in a | i.e., as the maximum number of diff entries to be included in a | |||
response from the AS. | response from the AS. | |||
In this example, the AS does not support the "Cursor" extension. | In this example, the AS does not support the "Cursor" extension. | |||
Hence, the 'cursor' parameter and the 'more' parameter are not | Hence, the 'cursor' parameter and the 'more' parameter are not | |||
included in the payload of the responses to a diff query request. | included in the payload of the responses to a diff query request. | |||
RS AS | RS AS | |||
| | | | | | |||
| Registration: POST | | | Registration: POST | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.01 Created | | | 2.01 Created | | |||
| Payload: { | | | Payload: { | | |||
| / ... / | | | / ... / | | |||
| "trl_path" : "/revoke/trl", | | | "trl_path": "/revoke/trl", | | |||
| "trl_hash" : "sha-256", | | | "trl_hash": "sha-256", | | |||
| "max_n" : 10 | | | "max_n": 10 | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=3 | | | GET coap://as.example.com/revoke/trl?diff=3 | | |||
| Observe: 0 | | | Observe: 0 | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 42 | | | Observe: 42 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [] | | | / diff_set / 1: [] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t1 and t2 issued | | | (Access tokens t1 and t2 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 is revoked) | | | (Access token t1 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 53 | | | Observe: 53 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ] | | | ] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 is revoked) | | | (Access token t2 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 64 | | | Observe: 64 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [], [bstr.h(t2)] ], | | | [ [], [bstr.h(t2)] ], | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ] | | | ] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 expires) | | | (Access token t1 expires) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 75 | | | Observe: 75 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ], | | | [ [], [bstr.h(t2)] ], | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ] | | | ] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 expires) | | | (Access token t2 expires) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 86 | | | Observe: 86 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t2)], [] ], | | | [ [bstr.h(t2)], [] ], | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ] | | | [ [], [bstr.h(t2)] ] | | |||
| ] | | | ] | | |||
| } | | | } | | |||
| | | | | | |||
Figure 11: Interaction for Diff Query with Observe | Figure 11: Interaction for Diff Query with Observe | |||
C.3. Full Query with Observe and Diff Query | C.3. Full Query with Observe and Diff Query | |||
Figure 12 shows an interaction example of a CoAP observation and a | Figure 12 shows an interaction example of a CoAP observation and a | |||
full query of the TRL. | full query of the TRL. | |||
The example also shows one of the notifications from the AS getting | The example also shows one of the notifications from the AS getting | |||
lost in transmission; thus, that notification does not reach the RS. | lost in transmission; thus, that notification does not reach the RS. | |||
skipping to change at line 2982 ¶ | skipping to change at line 2982 ¶ | |||
The RS indicates N = 8 as the value of the 'diff' query parameter, | The RS indicates N = 8 as the value of the 'diff' query parameter, | |||
i.e., as the maximum number of diff entries to be included in a | i.e., as the maximum number of diff entries to be included in a | |||
response from the AS. | response from the AS. | |||
In this example, the AS does not support the "Cursor" extension. | In this example, the AS does not support the "Cursor" extension. | |||
Hence, the 'cursor' parameter is not included in the payload of the | Hence, the 'cursor' parameter is not included in the payload of the | |||
responses to a full query request. Also, the 'cursor' parameter and | responses to a full query request. Also, the 'cursor' parameter and | |||
the 'more' parameter are not included in the payload of the responses | the 'more' parameter are not included in the payload of the responses | |||
to a diff query request. | to a diff query request. | |||
RS AS | RS AS | |||
| | | | | | |||
| Registration: POST | | | Registration: POST | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.01 Created | | | 2.01 Created | | |||
| Payload: { | | | Payload: { | | |||
| / ... / | | | / ... / | | |||
| "trl_path" : "/revoke/trl", | | | "trl_path": "/revoke/trl", | | |||
| "trl_hash" : "sha-256", | | | "trl_hash": "sha-256", | | |||
| "max_n" : 10 | | | "max_n": 10 | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl/ | | | GET coap://as.example.com/revoke/trl/ | | |||
| Observe: 0 | | | Observe: 0 | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 42 | | | Observe: 42 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [] | | | / full_set / 0: [] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t1 and t2 issued | | | (Access tokens t1 and t2 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 is revoked) | | | (Access token t1 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 53 | | | Observe: 53 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1)] | | | / full_set / 0: [bstr.h(t1)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 is revoked) | | | (Access token t2 is revoked) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 64 | | | Observe: 64 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1), bstr.h(t2)] | | | / full_set / 0: [bstr.h(t1), bstr.h(t2)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 expires) | | | (Access token t1 expires) | | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 75 | | | Observe: 75 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t2)] | | | / full_set / 0: [bstr.h(t2)] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 expires) | | | (Access token t2 expires) | | |||
| | | | | | |||
| Lost X <------------------------------------------+ | | Lost X <---------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 86 | | | Observe: 86 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [] | | | / full_set / 0: [] | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Enough time has passed since | | | (Enough time has passed since | | |||
| the latest received notification) | | | the latest received notification) | | |||
| | | | | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=8 | | | GET coap://as.example.com/revoke/trl?diff=8 | | |||
+--------------------------------------------------->| | +------------------------------------------------------>| | |||
| | | | | | |||
|<---------------------------------------------------+ | |<------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t2)], [] ], | | | [ [bstr.h(t2)], [] ], | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ], | | | [ [], [bstr.h(t2)] ], | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ] | | | ] | | |||
| } | | | } | | |||
| | | | | | |||
Figure 12: Interaction for Full Query with Observe and Diff Query | Figure 12: Interaction for Full Query with Observe and Diff Query | |||
C.4. Diff Query with Observe and "Cursor" Extension | C.4. Diff Query with Observe and "Cursor" Extension | |||
In this example, the AS supports the "Cursor" extension. Hence, the | In this example, the AS supports the "Cursor" extension. Hence, the | |||
CBOR map conveyed as payload of the registration response | CBOR map conveyed as payload of the registration response | |||
additionally includes a "max_diff_batch" parameter. This specifies | additionally includes a "max_diff_batch" parameter. This specifies | |||
the value of MAX_DIFF_BATCH, i.e., the maximum number of diff entries | the value of MAX_DIFF_BATCH, i.e., the maximum number of diff entries | |||
that can be included in a response to a diff query request from this | that can be included in a response to a diff query request from this | |||
skipping to change at line 3111 ¶ | skipping to change at line 3111 ¶ | |||
If the RS has not received a notification from the AS for a waiting | If the RS has not received a notification from the AS for a waiting | |||
time defined by the application, the RS sends a GET request with no | time defined by the application, the RS sends a GET request with no | |||
Observe Option to the AS, asking the AS to perform a diff query of | Observe Option to the AS, asking the AS to perform a diff query of | |||
the TRL. | the TRL. | |||
This is followed up by a further diff query request that includes the | This is followed up by a further diff query request that includes the | |||
'cursor' query parameter. Note that the payload of the corresponding | 'cursor' query parameter. Note that the payload of the corresponding | |||
response differs from the payload of the response to the previous | response differs from the payload of the response to the previous | |||
diff query request. | diff query request. | |||
RS AS | RS AS | |||
| | | | | | |||
| Registration: POST | | | Registration: POST | | |||
+------------------------------------------------------->| | +---------------------------------------------------------->| | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.01 Created | | | 2.01 Created | | |||
| Payload: { | | | Payload: { | | |||
| / ... / | | | / ... / | | |||
| "trl_path" : "/revoke/trl", | | | "trl_path": "/revoke/trl", | | |||
| "trl_hash" : "sha-256", | | | "trl_hash": "sha-256", | | |||
| "max_n" : 10, | | | "max_n": 10, | | |||
| "max_diff_batch" : 5 | | | "max_diff_batch": 5 | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=3 | | | GET coap://as.example.com/revoke/trl?diff=3 | | |||
| Observe: 0 | | | Observe: 0 | | |||
+------------------------------------------------------->| | +---------------------------------------------------------->| | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 42 | | | Observe: 42 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [], | | | / diff_set / 1: [], | | |||
| / cursor / 2: null, | | | / cursor / 2: null, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t1 and t2 issued | | | (Access tokens t1 and t2 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 is revoked) | | | (Access token t1 is revoked) | | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 53 | | | Observe: 53 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 0, | | | / cursor / 2: 0, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 is revoked) | | | (Access token t2 is revoked) | | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 64 | | | Observe: 64 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [], [bstr.h(t2)] ], | | | [ [], [bstr.h(t2)] ], | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 1, | | | / cursor / 2: 1, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 expires) | | | (Access token t1 expires) | | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 75 | | | Observe: 75 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ], | | | [ [], [bstr.h(t2)] ], | | |||
| [ [], [bstr.h(t1)] ] | | | [ [], [bstr.h(t1)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 2, | | | / cursor / 2: 2, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 expires) | | | (Access token t2 expires) | | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 86 | | | Observe: 86 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t2)], [] ], | | | [ [bstr.h(t2)], [] ], | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ] | | | [ [], [bstr.h(t2)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 3, | | | / cursor / 2: 3, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Enough time has passed since | | | (Enough time has passed since | | |||
| the latest received notification) | | | the latest received notification) | | |||
| | | | | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=3 | | | GET coap://as.example.com/revoke/trl?diff=3 | | |||
+------------------------------------------------------->| | +---------------------------------------------------------->| | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t2)], [] ], | | | [ [bstr.h(t2)], [] ], | | |||
| [ [bstr.h(t1)], [] ], | | | [ [bstr.h(t1)], [] ], | | |||
| [ [], [bstr.h(t2)] ] | | | [ [], [bstr.h(t2)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 3, | | | / cursor / 2: 3, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=3&cursor=3 | | | GET coap://as.example.com/revoke/trl?diff=3&cursor=3 | | |||
+------------------------------------------------------->| | +---------------------------------------------------------->| | |||
| | | | | | |||
|<-------------------------------------------------------+ | |<----------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [], | | | / diff_set / 1: [], | | |||
| / cursor / 2: 3, | | | / cursor / 2: 3, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
Figure 13: Interaction for Diff Query with Observe and "Cursor" | Figure 13: Interaction for Diff Query with Observe and "Cursor" | |||
Extension | Extension | |||
C.5. Full Query with Observe and Diff Query with "Cursor" Extension | C.5. Full Query with Observe and Diff Query with "Cursor" Extension | |||
In this example, the AS supports the "Cursor" extension. Hence, the | In this example, the AS supports the "Cursor" extension. Hence, the | |||
CBOR map conveyed as payload of the registration response | CBOR map conveyed as payload of the registration response | |||
additionally includes a "max_diff_batch" parameter. This specifies | additionally includes a "max_diff_batch" parameter. This specifies | |||
the value of MAX_DIFF_BATCH, i.e., the maximum number of diff entries | the value of MAX_DIFF_BATCH, i.e., the maximum number of diff entries | |||
skipping to change at line 3294 ¶ | skipping to change at line 3294 ¶ | |||
update collection by setting the 'more' parameter of the response to | update collection by setting the 'more' parameter of the response to | |||
true. Also, the 'cursor' parameter of the response is set to 7, | true. Also, the 'cursor' parameter of the response is set to 7, | |||
i.e., to the 'index' value of the most recent series item included in | i.e., to the 'index' value of the most recent series item included in | |||
the response. | the response. | |||
After that, the RS follows up with a further diff query request | After that, the RS follows up with a further diff query request | |||
including the 'cursor' query parameter with a value of 7 in order to | including the 'cursor' query parameter with a value of 7 in order to | |||
retrieve the next and last batch of series items from the update | retrieve the next and last batch of series items from the update | |||
collection. | collection. | |||
RS AS | RS AS | |||
| | | | | | |||
| Registration: POST | | | Registration: POST | | |||
+-------------------------------------------------------------->| | +----------------------------------------------------------------->| | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.01 Created | | | 2.01 Created | | |||
| Payload: { | | | Payload: { | | |||
| / ... / | | | / ... / | | |||
| "trl_path" : "/revoke/trl",| | | "trl_path": "/revoke/trl", | | |||
| "trl_hash" : "sha-256", | | | "trl_hash": "sha-256", | | |||
| "max_n" : 10, | | | "max_n": 10, | | |||
| "max_diff_batch" : 5 | | | "max_diff_batch": 5 | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl/ | | | GET coap://as.example.com/revoke/trl/ | | |||
| Observe: 0 | | | Observe: 0 | | |||
+-------------------------------------------------------------->| | +----------------------------------------------------------------->| | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 42 | | | Observe: 42 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [], | | | / full_set / 0: [], | | |||
| / cursor / 2: null | | | / cursor / 2: null | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t1, t2, t3 issued | | | (Access tokens t1, t2, t3 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t4, t5, t6 issued | | | (Access tokens t4, t5, t6 issued | | |||
| and successfully submitted to RS) | | | and successfully submitted to RS) | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 is revoked) | | | (Access token t1 is revoked) | | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 53 | | | Observe: 53 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1)], | | | / full_set / 0: [bstr.h(t1)], | | |||
| / cursor /2: 0 | | | / cursor / 2: 0 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 is revoked) | | | (Access token t2 is revoked) | | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 64 | | | Observe: 64 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t1), bstr.h(t2)], | | | / full_set / 0: [bstr.h(t1), bstr.h(t2)], | | |||
| / cursor / 2: 1 | | | / cursor / 2: 1 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t1 expires) | | | (Access token t1 expires) | | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 75 | | | Observe: 75 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t2)], | | | / full_set / 0: [bstr.h(t2)], | | |||
| / cursor / 2: 2 | | | / cursor / 2: 2 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t2 expires) | | | (Access token t2 expires) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 86 | | | Observe: 86 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [], | | | / full_set / 0: [], | | |||
| / cursor / 2: 3 | | | / cursor / 2: 3 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t3 is revoked) | | | (Access token t3 is revoked) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 88 | | | Observe: 88 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t3)], | | | / full_set / 0: [bstr.h(t3)], | | |||
| / cursor / 2: 4 | | | / cursor / 2: 4 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t4 is revoked) | | | (Access token t4 is revoked) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 89 | | | Observe: 89 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t3), bstr.h(t4)], | | | / full_set / 0: [bstr.h(t3), bstr.h(t4)], | | |||
| / cursor / 2: 5 | | | / cursor / 2: 5 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t3 expires) | | | (Access token t3 expires) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 90 | | | Observe: 90 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t4)], | | | / full_set / 0: [bstr.h(t4)], | | |||
| / cursor / 2: 6 | | | / cursor / 2: 6 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t4 expires) | | | (Access token t4 expires) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 91 | | | Observe: 91 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [], | | | / full_set / 0: [], | | |||
| / cursor / 2: 7 | | | / cursor / 2: 7 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access tokens t5 and t6 are revoked) | | | (Access tokens t5 and t6 are revoked) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 92 | | | Observe: 92 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| /full_set / 0: [bstr.h(t5), bstr.h(t6)], | | | / full_set / 0: [bstr.h(t5), bstr.h(t6)], | | |||
| / cursor / 2: 8 | | | / cursor / 2: 8 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t5 expires) | | | (Access token t5 expires) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 93 | | | Observe: 93 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [bstr.h(t6)], | | | / full_set / 0: [bstr.h(t6)], | | |||
| / cursor / 2: 9 | | | / cursor / 2: 9 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Access token t6 expires) | | | (Access token t6 expires) | | |||
| | | | | | |||
| Lost X <-----------------------------------------------------+ | | Lost X <--------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Observe: 94 | | | Observe: 94 | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / full_set / 0: [], | | | / full_set / 0: [], | | |||
| / cursor / 2: 10 | | | / cursor / 2: 10 | | |||
| } | | | } | | |||
| | | | | | |||
| ... | | | ... | | |||
| | | | | | |||
| (Enough time has passed since | | | (Enough time has passed since | | |||
| the latest received notification) | | | the latest received notification) | | |||
| | | | | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=8&cursor=2 | | | GET coap://as.example.com/revoke/trl?diff=8&cursor=2 | | |||
+-------------------------------------------------------------->| | +----------------------------------------------------------------->| | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Content-Format:262(application/ace-trl+cbor)| | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t4)], [] ], | | | [ [bstr.h(t4)], [] ], | | |||
| [ [bstr.h(t3)], [] ], | | | [ [bstr.h(t3)], [] ], | | |||
| [ [], [bstr.h(t4)] ], | | | [ [], [bstr.h(t4)] ], | | |||
| [ [], [bstr.h(t3)] ], | | | [ [], [bstr.h(t3)] ], | | |||
| [ [bstr.h(t2)], [] ] | | | [ [bstr.h(t2)], [] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 7, | | | / cursor / 2: 7, | | |||
| / more / 3: true | | | / more / 3: true | | |||
| } | | | } | | |||
| | | | | | |||
| GET coap://as.example.com/revoke/trl?diff=8&cursor=7 | | | GET coap://as.example.com/revoke/trl?diff=8&cursor=7 | | |||
+-------------------------------------------------------------->| | +----------------------------------------------------------------->| | |||
| | | | | | |||
|<--------------------------------------------------------------+ | |<-----------------------------------------------------------------+ | |||
| 2.05 Content | | | 2.05 Content | | |||
| Content-Format:262(application/ace-trl+cbor) | | | Content-Format: 262 (application/ace-trl+cbor) | | |||
| Payload: { | | | Payload: { | | |||
| / diff_set / 1: [ | | | / diff_set / 1: [ | | |||
| [ [bstr.h(t6)], [] ], | | | [ [bstr.h(t6)], [] ], | | |||
| [ [bstr.h(t5)], [] ], | | | [ [bstr.h(t5)], [] ], | | |||
| [ [], [bstr.h(t5), bstr.h(t6)] ] | | | [ [], [bstr.h(t5), bstr.h(t6)] ] | | |||
| ], | | | ], | | |||
| / cursor / 2: 10, | | | / cursor / 2: 10, | | |||
| / more / 3: false | | | / more / 3: false | | |||
| } | | | } | | |||
| | | | | | |||
Figure 14: Interaction for Full Query with Observe and Diff Query | Figure 14: Interaction for Full Query with Observe and Diff Query | |||
with "Cursor" Extension | with "Cursor" Extension | |||
Acknowledgments | Acknowledgments | |||
Ludwig Seitz contributed as a coauthor of initial versions of this | Ludwig Seitz contributed as a coauthor of initial versions of this | |||
document. | document. | |||
The authors sincerely thank Christian Amsüss, Carsten Bormann, Deb | The authors sincerely thank Christian Amsüss, Carsten Bormann, Deb | |||
End of changes. 5 change blocks. | ||||
629 lines changed or deleted | 629 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |