openconfig-keychain-types

openconfig-version: 0.2.0

Description

This module contains general data definitions for use in keychain-based authentication.

Imports

openconfig-extensions

Identities

base: AUTH_TYPE

description:
Base identify to define the type of authentication

SIMPLE_KEY

description:
Authentication is provided via a simple authentication key. The key is configured at each end, and the exchange of the key may be encrypted or not

base identity: AUTH_TYPE

KEYCHAIN

description:
This identity indicates that the authentication is selected from a keychain.

base identity: AUTH_TYPE

base: CRYPTO_TYPE

description:
Base identify for the cryptographic algorithm

CRYPTO_NONE

description:
No encryption is used

base identity: CRYPTO_TYPE

MD5

description:
MD5 message-digest algorithm produces a 128-bit hash value.

base identity: CRYPTO_TYPE

HMAC_MD5

description:
HMAC-MD5 keyed hash algorithm constructed from MD5 hash function and used as a HMAC.

base identity: CRYPTO_TYPE

SHA_1

description:
SHA-1 cryptographic hash function that produces a 160-bit hash value.

base identity: CRYPTO_TYPE

HMAC_SHA_1

description:
HMAC-SHA-1 keyed hash algorithm constructed from SHA-1 hash function and used as a HMAC.

base identity: CRYPTO_TYPE

HMAC_SHA_1_12

description:
HMAC-SHA-1-12 algorithm

base identity: CRYPTO_TYPE

HMAC_SHA_1_20

description:
HMAC-SHA-1-20 algorithm

base identity: CRYPTO_TYPE

HMAC_SHA_1_96

description:
HMAC-SHA-1-96 keyed hash algorithm constructed from SHA-1 hash function and used as a HMAC, operating on 64-byte blocks of data.

base identity: CRYPTO_TYPE

HMAC_SHA_256

description:
HMAC-SHA-256 keyed hash algorithm constructed from the secure SHA-256 hash function and used as a HMAC.

base identity: CRYPTO_TYPE

AES_28_CMAC_96

description:
AES-128-CMAC-96 keyed hash function based on a AES-128 block cipher.

base identity: CRYPTO_TYPE

Data elements

openconfig-keychain

openconfig-version: 0.4.0

Description

This module describes a YANG model for keychain configuration and management. These keys can be changed frequently to increase security in long-lived connections. A keychain can be used for authenticaion in a number of scenarios, including in routing protocols (e.g. BGP, IS-IS, OSPF). A keychain provides a solution for storing a number of different keys, each key string value is associated with a specific key id, name, the lifetime that the key is valid and an encryption algorithm.

This model defines a central location for defining named keychains, which may be then referenced by other models such as routing protocol management.

Imports

openconfig-extensions
openconfig-keychain-types
openconfig-types
openconfig-yang-types

Defined types

keychain-ref

description:
A reference to a keychain defined on the system that can be used by modules that require access to keychains.

type: leafref

  • path reference: /keychains/keychain/config/name

Data elements

/
keychains

description:
This container defines keychains.

nodetype: container (rw)

/keychains/
keychain

description:
List of defined keychains.

nodetype: list (rw)

list keys: [name]

/keychains/keychain/
name

description:
Reference to configured keychain name

nodetype: leaf (list key) (rw)

type: leafref

  • path reference: ../config/name

/keychains/keychain/
config

description:
This container defines keychain configuration.

nodetype: container (rw)

/keychains/keychain/config/
name

description:
Keychain name.

nodetype: leaf (rw)

type: string

/keychains/keychain/config/
tolerance

description:
Tolerance (overlap time) that a receive key should be accepted. May be expressed as range in seconds, or using the FOREVER value to indicate that the key does not expire. The default value should be 0, i.e., no tolerance.

nodetype: leaf (rw)

type: union

    type: enumeration

    • FOREVER
      Receive key does not expire (equivalent to infinite tolerance).

    type: uint32

/keychains/keychain/
state

description:
This container defines keychain state information.

nodetype: container (ro)

/keychains/keychain/state/
name

description:
Keychain name.

nodetype: leaf (ro)

type: string

/keychains/keychain/state/
tolerance

description:
Tolerance (overlap time) that a receive key should be accepted. May be expressed as range in seconds, or using the FOREVER value to indicate that the key does not expire. The default value should be 0, i.e., no tolerance.

nodetype: leaf (ro)

type: union

    type: enumeration

    • FOREVER
      Receive key does not expire (equivalent to infinite tolerance).

    type: uint32

/keychains/keychain/
keys

description:
list of keys to be stored

nodetype: container (rw)

/keychains/keychain/keys/
key

description:
List of configured keys for the keychain.

nodetype: list (rw)

list keys: [key-id]

/keychains/keychain/keys/key/
key-id

description:
Reference to key id.

nodetype: leaf (list key) (rw)

type: leafref

  • path reference: ../config/key-id

/keychains/keychain/keys/key/
config

description:
This container defines keychain key configuration.

nodetype: container (rw)

/keychains/keychain/keys/key/config/
key-id

description:
Identifier for the key within the keychain.

nodetype: leaf (rw)

type: union

    type: oc-yang:hex-string

    type: uint64

/keychains/keychain/keys/key/config/
secret-key

description:
Authentication key supplied as an encrypted value. The system should store and return the key in encrypted form.

nodetype: leaf (rw)

type: string

/keychains/keychain/keys/key/config/
crypto-algorithm

description:
Cryptographic algorithm associated with the key. Note that not all cryptographic algorithms are available in all contexts (e.g., across different protocols).

nodetype: leaf (rw)

type: identityref

  • base: oc-keychain-types:CRYPTO_TYPE

/keychains/keychain/keys/key/
state

description:
This container defines keychain key state.

nodetype: container (ro)

/keychains/keychain/keys/key/state/
key-id

description:
Identifier for the key within the keychain.

nodetype: leaf (ro)

type: union

    type: oc-yang:hex-string

    type: uint64

/keychains/keychain/keys/key/state/
secret-key

description:
Authentication key supplied as an encrypted value. The system should store and return the key in encrypted form.

nodetype: leaf (ro)

type: string

/keychains/keychain/keys/key/state/
crypto-algorithm

description:
Cryptographic algorithm associated with the key. Note that not all cryptographic algorithms are available in all contexts (e.g., across different protocols).

nodetype: leaf (ro)

type: identityref

  • base: oc-keychain-types:CRYPTO_TYPE

/keychains/keychain/keys/key/
send-lifetime

description:
Specifies the lifetime of the key for sending authentication information to the peer.

nodetype: container (rw)

/keychains/keychain/keys/key/send-lifetime/
config

description:
Configuration data for key send lifetime.

nodetype: container (rw)

/keychains/keychain/keys/key/send-lifetime/config/
start-time

description:
The time at which the key becomes valid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).

nodetype: leaf (rw)

type: oc-types:timeticks64

/keychains/keychain/keys/key/send-lifetime/config/
end-time

description:
The time at which the key becomes invalid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). Leaving this value unset, or setting it to 0, indicates that the key remains valid forever (no end time).

nodetype: leaf (rw)

type: oc-types:timeticks64

/keychains/keychain/keys/key/send-lifetime/config/
send-and-receive

description:
When this is set to true (the default value), the specified send lifetime is also used in the receive direction. When set to false, the device should use the specified receive-lifetime for the receive direction (asymmetric mode). If send-and-receive is false, and the device does not support asymmetric configuration, the config should be rejected as unsupported.

nodetype: leaf (rw)

type: boolean

default: true

/keychains/keychain/keys/key/send-lifetime/
state

description:
Operational state data for key send lifetime.

nodetype: container (ro)

/keychains/keychain/keys/key/send-lifetime/state/
start-time

description:
The time at which the key becomes valid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).

nodetype: leaf (ro)

type: oc-types:timeticks64

/keychains/keychain/keys/key/send-lifetime/state/
end-time

description:
The time at which the key becomes invalid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). Leaving this value unset, or setting it to 0, indicates that the key remains valid forever (no end time).

nodetype: leaf (ro)

type: oc-types:timeticks64

/keychains/keychain/keys/key/send-lifetime/state/
send-and-receive

description:
When this is set to true (the default value), the specified send lifetime is also used in the receive direction. When set to false, the device should use the specified receive-lifetime for the receive direction (asymmetric mode). If send-and-receive is false, and the device does not support asymmetric configuration, the config should be rejected as unsupported.

nodetype: leaf (ro)

type: boolean

default: true

/keychains/keychain/keys/key/
receive-lifetime

description:
Specify the validity lifetime of the key in the receive direction. Some platforms may only support symmetric send and receive lifetimes, in which case the receive-lifetime is typically not specified.

nodetype: container (rw)

/keychains/keychain/keys/key/receive-lifetime/
config

description:
Configuration data for key receive lifetime.

nodetype: container (rw)

/keychains/keychain/keys/key/receive-lifetime/config/
start-time

description:
The time at which the key becomes valid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).

nodetype: leaf (rw)

type: oc-types:timeticks64

/keychains/keychain/keys/key/receive-lifetime/config/
end-time

description:
The time at which the key becomes invalid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). Leaving this value unset, or setting it to 0, indicates that the key remains valid forever (no end time).

nodetype: leaf (rw)

type: oc-types:timeticks64

/keychains/keychain/keys/key/receive-lifetime/
state

description:
Operational state data for key receive lifetime.

nodetype: container (ro)

/keychains/keychain/keys/key/receive-lifetime/state/
start-time

description:
The time at which the key becomes valid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).

nodetype: leaf (ro)

type: oc-types:timeticks64

/keychains/keychain/keys/key/receive-lifetime/state/
end-time

description:
The time at which the key becomes invalid for use. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). Leaving this value unset, or setting it to 0, indicates that the key remains valid forever (no end time).

nodetype: leaf (ro)

type: oc-types:timeticks64