| rfc8366.txt | rfc8366.txt | |||
|---|---|---|---|---|
| skipping to change at page 9, line 30 | skipping to change at page 9, line 30 | |||
| } | } | |||
| 5.3. YANG Module | 5.3. YANG Module | |||
| Following is a YANG [RFC7950] module formally describing the | Following is a YANG [RFC7950] module formally describing the | |||
| voucher's JSON document structure. | voucher's JSON document structure. | |||
| <CODE BEGINS> file "ietf-voucher@2018-04-06.yang" | <CODE BEGINS> file "ietf-voucher@2018-04-06.yang" | |||
| module ietf-voucher { | module ietf-voucher { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-voucher"; | ||||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-voucher"; | ||||
| prefix vch; | prefix vch; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| } | } | |||
| import ietf-restconf { | import ietf-restconf { | |||
| prefix rc; | prefix rc; | |||
| description | description | |||
| "This import statement is only present to access | "This import statement is only present to access | |||
| the yang-data extension defined in RFC 8040."; | the yang-data extension defined in RFC 8040."; | |||
| reference "RFC 8040: RESTCONF Protocol"; | reference "RFC 8040: RESTCONF Protocol"; | |||
| } | } | |||
| organization | ||||
| "IETF ANIMA Working Group"; | ||||
| organization | ||||
| "IETF ANIMA Working Group"; | ||||
| contact | contact | |||
| "WG Web: <https://datatracker.ietf.org/wg/anima/> | "WG Web: <https://datatracker.ietf.org/wg/anima/> | |||
| WG List: <mailto:anima@ietf.org> | WG List: <mailto:anima@ietf.org> | |||
| Author: Kent Watsen | Author: Kent Watsen | |||
| <mailto:kwatsen@juniper.net> | <mailto:kwatsen@juniper.net> | |||
| Author: Max Pritikin | ||||
| <mailto:pritikin@cisco.com> | ||||
| Author: Michael Richardson | ||||
| <mailto:mcr+ietf@sandelman.ca> | ||||
| Author: Toerless Eckert | ||||
| <mailto:tte+ietf@cs.fau.de>"; | ||||
| Author: Max Pritikin | ||||
| <mailto:pritikin@cisco.com> | ||||
| Author: Michael Richardson | ||||
| <mailto:mcr+ietf@sandelman.ca> | ||||
| Author: Toerless Eckert | ||||
| <mailto:tte+ietf@cs.fau.de>"; | ||||
| description | description | |||
| "This module defines the format for a voucher, which is produced by | "This module defines the format for a voucher, which is produced by | |||
| a pledge's manufacturer or delegate (MASA) to securely assign a | a pledge's manufacturer or delegate (MASA) to securely assign a | |||
| pledge to an 'owner', so that the pledge may establish a secure | pledge to an 'owner', so that the pledge may establish a secure | |||
| connection to the owner's network infrastructure. | connection to the owner's network infrastructure. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they | |||
| appear in all capitals, as shown here. | appear in all capitals, as shown here. | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or without | Redistribution and use in source and binary forms, with or without | |||
| modification, is permitted pursuant to, and subject to the license | modification, is permitted pursuant to, and subject to the license | |||
| terms contained in, the Simplified BSD License set forth in Section | terms contained in, the Simplified BSD License set forth in Section | |||
| 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC 8366; see the RFC | This version of this YANG module is part of RFC 8366; see the RFC | |||
| itself for full legal notices."; | itself for full legal notices."; | |||
| revision 2018-04-06 { | revision 2018-04-06 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference | reference "RFC 8366: Voucher Profile for Bootstrapping Protocols"; | |||
| "RFC 8366: Voucher Profile for Bootstrapping Protocols"; | ||||
| } | } | |||
| // Top-level statement | // Top-level statement | |||
| rc:yang-data "voucher-artifact" { | rc:yang-data voucher-artifact { | |||
| uses voucher-artifact-grouping; | uses voucher-artifact-grouping; | |||
| } | } | |||
| // Grouping defined for future augmentations | // Grouping defined for future augmentations | |||
| grouping voucher-artifact-grouping { | grouping voucher-artifact-grouping { | |||
| description | description | |||
| "Grouping to allow reuse/extensions in future work."; | "Grouping to allow reuse/extensions in future work."; | |||
| container voucher { | container voucher { | |||
| description | description | |||
| "A voucher assigns a pledge to an owner (pinned-domain-cert)."; | "A voucher assigns a pledge to an owner (pinned-domain-cert)."; | |||
| leaf created-on { | leaf created-on { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A value indicating the date this voucher was created. This | "A value indicating the date this voucher was created. This | |||
| node is primarily for human consumption and auditing. Future | node is primarily for human consumption and auditing. Future | |||
| work MAY create verification requirements based on this | work MAY create verification requirements based on this | |||
| node."; | node."; | |||
| } | } | |||
| leaf expires-on { | leaf expires-on { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| must 'not(../nonce)'; | must 'not(../nonce)'; | |||
| description | description | |||
| "A value indicating when this voucher expires. The node is | "A value indicating when this voucher expires. The node is | |||
| optional as not all pledges support expirations, such as | optional as not all pledges support expirations, such as | |||
| pledges lacking a reliable clock. | pledges lacking a reliable clock. | |||
| If this field exists, then the pledges MUST ensure that | If this field exists, then the pledges MUST ensure that | |||
| the expires-on time has not yet passed. A pledge without | the expires-on time has not yet passed. A pledge without | |||
| skipping to change at page 11, line 42 | skipping to change at page 11, line 29 | |||
| "A value indicating when this voucher expires. The node is | "A value indicating when this voucher expires. The node is | |||
| optional as not all pledges support expirations, such as | optional as not all pledges support expirations, such as | |||
| pledges lacking a reliable clock. | pledges lacking a reliable clock. | |||
| If this field exists, then the pledges MUST ensure that | If this field exists, then the pledges MUST ensure that | |||
| the expires-on time has not yet passed. A pledge without | the expires-on time has not yet passed. A pledge without | |||
| an accurate clock cannot meet this requirement. | an accurate clock cannot meet this requirement. | |||
| The expires-on value MUST NOT exceed the expiration date | The expires-on value MUST NOT exceed the expiration date | |||
| of any of the listed 'pinned-domain-cert' certificates."; | of any of the listed 'pinned-domain-cert' certificates."; | |||
| } | } | |||
| leaf assertion { | leaf assertion { | |||
| type enumeration { | type enumeration { | |||
| enum verified { | enum verified { | |||
| description | description | |||
| "Indicates that the ownership has been positively | "Indicates that the ownership has been positively | |||
| verified by the MASA (e.g., through sales channel | verified by the MASA (e.g., through sales channel | |||
| integration)."; | integration)."; | |||
| } | } | |||
| enum logged { | enum logged { | |||
| description | description | |||
| "Indicates that the voucher has been issued after | "Indicates that the voucher has been issued after | |||
| minimal verification of ownership or control. The | minimal verification of ownership or control. The | |||
| issuance has been logged for detection of | issuance has been logged for detection of | |||
| potential security issues (e.g., recipients of | potential security issues (e.g., recipients of | |||
| vouchers might verify for themselves that unexpected | vouchers might verify for themselves that unexpected | |||
| vouchers are not in the log). This is similar to unsecured | vouchers are not in the log). This is similar to | |||
| trust-on-first-use principles but with the logging | unsecured trust-on-first-use principles but with | |||
| providing a basis for detecting unexpected events."; | the logging providing a basis for detecting unexpected | |||
| events."; | ||||
| } | } | |||
| enum proximity { | enum proximity { | |||
| description | description | |||
| "Indicates that the voucher has been issued after | "Indicates that the voucher has been issued after | |||
| the MASA verified a proximity proof provided by the | the MASA verified a proximity proof provided by the | |||
| device and target domain. The issuance has been logged | device and target domain. The issuance has been logged | |||
| for detection of potential security issues. This is | for detection of potential security issues. This is | |||
| stronger than just logging, because it requires some | stronger than just logging, because it requires some | |||
| verification that the pledge and owner are | verification that the pledge and owner are | |||
| in communication but is still dependent on analysis of | in communication but is still dependent on analysis of | |||
| the logs to detect unexpected events."; | the logs to detect unexpected events."; | |||
| } | } | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The assertion is a statement from the MASA regarding how | "The assertion is a statement from the MASA regarding how | |||
| the owner was verified. This statement enables pledges | the owner was verified. This statement enables pledges | |||
| to support more detailed policy checks. Pledges MUST | to support more detailed policy checks. Pledges MUST | |||
| ensure that the assertion provided is acceptable, per | ensure that the assertion provided is acceptable, per | |||
| local policy, before processing the voucher."; | local policy, before processing the voucher."; | |||
| } | } | |||
| skipping to change at page 20, line 8 | skipping to change at page 20, line 8 | |||
| Published specification: RFC 8366 | Published specification: RFC 8366 | |||
| Applications that use this media type: ANIMA, 6tisch, and NETCONF | Applications that use this media type: ANIMA, 6tisch, and NETCONF | |||
| zero-touch imprinting systems. | zero-touch imprinting systems. | |||
| Fragment identifier considerations: none | Fragment identifier considerations: none | |||
| Additional information: | Additional information: | |||
| Deprecated alias names for this type: none | Deprecated alias names for this type: none | |||
| Magic number(s): None | Magic number(s): None | |||
| File extension(s): .vcj | File extension(s): .vcj | |||
| Macintosh file type code(s): none | Macintosh file type code(s): none | |||
| Person and email address to contact for further information: | Person and email address to contact for further information: | |||
| IETF ANIMA WG | IETF ANIMA WG | |||
| Intended usage: LIMITED | Intended usage: LIMITED | |||
| End of changes. 23 change blocks. | ||||
| 59 lines changed or deleted | 51 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||