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/ |