1<?xml version="1.0" encoding="UTF-8"?>
2<!---->
3<!--################################################################################       -->
4<!--# Redfish Schema:  KeyPolicy v1.0.0                                                    -->
5<!--#                                                                                      -->
6<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
7<!--# available at http://www.dmtf.org/standards/redfish                                   -->
8<!--# Copyright 2014-2023 DMTF.                                                            -->
9<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
10<!--################################################################################       -->
11<!---->
12<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
13
14  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
15    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
16  </edmx:Reference>
17  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
18    <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
19  </edmx:Reference>
20  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
21    <edmx:Include Namespace="Resource.v1_0_0"/>
22  </edmx:Reference>
23  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
24    <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
25    <edmx:Include Namespace="Validation.v1_0_0" Alias="Validation"/>
26  </edmx:Reference>
27
28  <edmx:DataServices>
29
30    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="KeyPolicy">
31      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
32
33      <EntityType Name="KeyPolicy" BaseType="Resource.v1_0_0.Resource" Abstract="true">
34        <Annotation Term="OData.Description" String="The KeyPolicy schema describes settings for how keys are allowed to be used for accessing devices or services."/>
35        <Annotation Term="OData.LongDescription" String="This resource shall represent a key policy for a Redfish implementation."/>
36        <Annotation Term="Capabilities.InsertRestrictions">
37          <Record>
38            <PropertyValue Property="Insertable" Bool="false"/>
39          </Record>
40        </Annotation>
41        <Annotation Term="Capabilities.UpdateRestrictions">
42          <Record>
43            <PropertyValue Property="Updatable" Bool="true"/>
44          </Record>
45        </Annotation>
46        <Annotation Term="Capabilities.DeleteRestrictions">
47          <Record>
48            <PropertyValue Property="Deletable" Bool="true"/>
49          </Record>
50        </Annotation>
51        <Annotation Term="Redfish.Uris">
52          <Collection>
53            <String>/redfish/v1/KeyService/NVMeoFKeyPolicies/{KeyPolicyId}</String>
54          </Collection>
55        </Annotation>
56      </EntityType>
57    </Schema>
58
59    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="KeyPolicy.v1_0_0">
60      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
61      <Annotation Term="Redfish.Release" String="2021.2"/>
62
63      <EntityType Name="KeyPolicy" BaseType="KeyPolicy.KeyPolicy">
64        <Property Name="KeyPolicyType" Type="KeyPolicy.v1_0_0.KeyPolicyType">
65          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
66          <Annotation Term="OData.Description" String="The type of key policy."/>
67          <Annotation Term="OData.LongDescription" String="This property shall contain the type of key policy."/>
68          <Annotation Term="Redfish.RequiredOnCreate"/>
69        </Property>
70        <Property Name="IsDefault" Type="Edm.Boolean">
71          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
72          <Annotation Term="OData.Description" String="Indicates if this is the default key policy."/>
73          <Annotation Term="OData.LongDescription" String="This property shall indicate if this key policy is the policy applied when no other policies are specified."/>
74        </Property>
75        <Property Name="NVMeoF" Type="KeyPolicy.v1_0_0.NVMeoF">
76          <Annotation Term="OData.Description" String="NVMe-oF specific properties."/>
77          <Annotation Term="OData.LongDescription" String="This property shall contain NVMe-oF specific properties for this key policy.  This property shall be present if KeyPolicyType contains the value `NVMeoF`."/>
78        </Property>
79        <Property Name="Actions" Type="KeyPolicy.v1_0_0.Actions" Nullable="false">
80          <Annotation Term="OData.Description" String="The available actions for this resource."/>
81          <Annotation Term="OData.LongDescription" String="This property shall contain the available actions for this resource."/>
82        </Property>
83      </EntityType>
84
85      <EnumType Name="KeyPolicyType">
86        <Member Name="NVMeoF">
87          <Annotation Term="OData.Description" String="An NVMe-oF key policy."/>
88          <Annotation Term="OData.LongDescription" String="This value shall indicate the key policy is for an NVMe-oF key."/>
89        </Member>
90      </EnumType>
91
92      <ComplexType Name="NVMeoF">
93        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
94        <Annotation Term="OData.Description" String="NVMe-oF specific properties."/>
95        <Annotation Term="OData.LongDescription" String="This type shall contain NVMe-oF specific properties for a key policy."/>
96        <Property Name="SecurityProtocolAllowList" Type="Collection(KeyPolicy.v1_0_0.NVMeoFSecurityProtocolType)">
97          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
98          <Annotation Term="OData.Description" String="The security protocols that this key policy allows."/>
99          <Annotation Term="OData.LongDescription" String="This property shall contain the security protocols that this key policy allows.  NVMe-oF channels are restricted to security protocols in this list.  The absence of the property shall indicate any security protocol is allowed.  An empty list shall indicate no security protocols are allowed."/>
100        </Property>
101        <Property Name="OEMSecurityProtocolAllowList" Type="Collection(Edm.String)">
102          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
103          <Annotation Term="OData.Description" String="The OEM security protocols that this key policy allows."/>
104          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM-defined security protocols that this key policy allows.  NVMe-oF channels are restricted to OEM-defined security protocols in this list.  An empty list shall indicate no security protocols are allowed.  This property shall be present if SecurityProtocolAllowList contains `OEM`."/>
105        </Property>
106        <Property Name="SecureHashAllowList" Type="Collection(KeyPolicy.v1_0_0.NVMeoFSecureHashType)">
107          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
108          <Annotation Term="OData.Description" String="The secure hash algorithms that this key policy allows."/>
109          <Annotation Term="OData.LongDescription" String="This property shall contain the secure hash algorithms that this key policy allows.  The absence of the property shall indicate any secure hash algorithm is allowed.  An empty list shall indicate no secure hash algorithms are allowed."/>
110        </Property>
111        <Property Name="SecurityTransportAllowList" Type="Collection(KeyPolicy.v1_0_0.NVMeoFSecurityTransportType)">
112          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
113          <Annotation Term="OData.Description" String="The security transports that this key policy allows."/>
114          <Annotation Term="OData.LongDescription" String="This property shall contain the security transports that this key policy allows.  The absence of the property shall indicate any security transport is allowed.  An empty list shall indicate no security transports are allowed."/>
115        </Property>
116        <Property Name="CipherSuiteAllowList" Type="Collection(KeyPolicy.v1_0_0.NVMeoFCipherSuiteType)">
117          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
118          <Annotation Term="OData.Description" String="The cipher suites that this key policy allows."/>
119          <Annotation Term="OData.LongDescription" String="This property shall contain the cipher suites that this key policy allows.  The absence of the property shall indicate any cipher suite is allowed.  An empty list shall indicate no cipher suites are allowed."/>
120        </Property>
121        <Property Name="DHGroupAllowList" Type="Collection(KeyPolicy.v1_0_0.NVMeoFDHGroupType)">
122          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
123          <Annotation Term="OData.Description" String="The Diffie-Hellman (DH) groups that this key policy allows."/>
124          <Annotation Term="OData.LongDescription" String="This property shall contain the Diffie-Hellman (DH) groups that this key policy allows.  The absence of the property shall indicate any DH group is allowed.  An empty list shall indicate no DH groups are allowed."/>
125        </Property>
126      </ComplexType>
127
128      <EnumType Name="NVMeoFSecurityProtocolType">
129        <Annotation Term="OData.Description" String="The NVMe security protocols that a key is allowed to use."/>
130        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe security protocols that a key is allowed to use."/>
131        <Member Name="DHHC">
132          <Annotation Term="OData.Description" String="Diffie-Hellman Hashed Message Authentication Code Challenge Handshake Authentication Protocol (DH-HMAC-CHAP)."/>
133          <Annotation Term="OData.LongDescription" String="This value shall indicate the Diffie-Hellman Hashed Message Authentication Code Challenge Handshake Authentication Protocol (DH-HMAC-CHAP) as defined by the NVMe Base Specification."/>
134        </Member>
135        <Member Name="TLS_PSK">
136          <Annotation Term="OData.Description" String="Transport Layer Security Pre-Shared Key (TLS PSK)."/>
137          <Annotation Term="OData.LongDescription" String="This value shall indicate Transport Layer Security Pre-Shared Key (TLS PSK) as defined by the NVMe TCP Transport Specification."/>
138        </Member>
139        <Member Name="OEM">
140          <Annotation Term="OData.Description" String="OEM."/>
141          <Annotation Term="OData.LongDescription" String="This value shall indicate an OEM-defined security protocol.  The OEMSecurityProtocolAllowList property shall contain the specific OEM protocol."/>
142        </Member>
143      </EnumType>
144
145      <EnumType Name="NVMeoFSecureHashType">
146        <Annotation Term="OData.Description" String="The NVMe secure hash algorithms that a key is allowed to use."/>
147        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe secure hash algorithms that a key is allowed to use."/>
148        <Member Name="SHA256">
149          <Annotation Term="OData.Description" String="SHA-256."/>
150          <Annotation Term="OData.LongDescription" String="This value shall indicate the SHA-256 hash function as defined by the 'DH-HMAC-CHAP hash function identifiers' figure in the NVMe Base Specification."/>
151        </Member>
152        <Member Name="SHA384">
153          <Annotation Term="OData.Description" String="SHA-384."/>
154          <Annotation Term="OData.LongDescription" String="This value shall indicate the SHA-384 hash function as defined by the 'DH-HMAC-CHAP hash function identifiers' figure in the NVMe Base Specification."/>
155        </Member>
156        <Member Name="SHA512">
157          <Annotation Term="OData.Description" String="SHA-512."/>
158          <Annotation Term="OData.LongDescription" String="This value shall indicate the SHA-512 hash function as defined by the 'DH-HMAC-CHAP hash function identifiers' figure in the NVMe Base Specification."/>
159        </Member>
160      </EnumType>
161
162      <EnumType Name="NVMeoFSecurityTransportType">
163        <Annotation Term="OData.Description" String="The NVMe security transports that a key is allowed to use."/>
164        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe security transports that a key is allowed to use."/>
165        <Member Name="TLSv2">
166          <Annotation Term="OData.Description" String="Transport Layer Security (TLS) v2."/>
167          <Annotation Term="OData.LongDescription" String="This value shall indicate Transport Layer Security (TLS) v2 as defined by the 'Transport Specific Address Subtype Definition for NVMe/TCP Transport' figure in the NVMe TCP Transport Specification."/>
168        </Member>
169        <Member Name="TLSv3">
170          <Annotation Term="OData.Description" String="Transport Layer Security (TLS) v3."/>
171          <Annotation Term="OData.LongDescription" String="This value shall indicate Transport Layer Security (TLS) v3 as defined by the 'Transport Specific Address Subtype Definition for NVMe/TCP Transport' figure in the NVMe TCP Transport Specification."/>
172        </Member>
173      </EnumType>
174
175      <EnumType Name="NVMeoFCipherSuiteType">
176        <Annotation Term="OData.Description" String="The NVMe cipher suites that a key is allowed to use."/>
177        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe cipher suites that a key is allowed to use."/>
178        <Member Name="TLS_AES_128_GCM_SHA256">
179          <Annotation Term="OData.Description" String="TLS_AES_128_GCM_SHA256."/>
180          <Annotation Term="OData.LongDescription" String="This value shall indicate TLS_AES_128_GCM_SHA256 as defined by the 'Mandatory and Recommended Cipher Suites' clause in the NVMe TCP Transport Specification."/>
181        </Member>
182        <Member Name="TLS_AES_256_GCM_SHA384">
183          <Annotation Term="OData.Description" String="TLS_AES_256_GCM_SHA384."/>
184          <Annotation Term="OData.LongDescription" String="This value shall indicate TLS_AES_256_GCM_SHA384 as defined by the 'Mandatory and Recommended Cipher Suites' clause in the NVMe TCP Transport Specification."/>
185        </Member>
186      </EnumType>
187
188      <EnumType Name="NVMeoFDHGroupType">
189        <Annotation Term="OData.Description" String="The NVMe Diffie-Hellman (DH) groups that a key is allowed to use."/>
190        <Annotation Term="OData.LongDescription" String="This enumeration shall list the Diffie-Hellman (DH) groups that a key is allowed to use."/>
191        <Member Name="FFDHE2048">
192          <Annotation Term="OData.Description" String="2048-bit Diffie-Hellman (DH) group."/>
193          <Annotation Term="OData.LongDescription" String="This value shall indicate the 2048-bit Diffie-Hellman (DH) group as defined by the 'DH-HMAC-CHAP Diffie-Hellman group identifiers' figure in the NVMe Base Specification."/>
194        </Member>
195        <Member Name="FFDHE3072">
196          <Annotation Term="OData.Description" String="3072-bit Diffie-Hellman (DH) group."/>
197          <Annotation Term="OData.LongDescription" String="This value shall indicate the 3072-bit Diffie-Hellman (DH) group as defined by the 'DH-HMAC-CHAP Diffie-Hellman group identifiers' figure in the NVMe Base Specification."/>
198        </Member>
199        <Member Name="FFDHE4096">
200          <Annotation Term="OData.Description" String="4096-bit Diffie-Hellman (DH) group."/>
201          <Annotation Term="OData.LongDescription" String="This value shall indicate the 4096-bit Diffie-Hellman (DH) group as defined by the 'DH-HMAC-CHAP Diffie-Hellman group identifiers' figure in the NVMe Base Specification."/>
202        </Member>
203        <Member Name="FFDHE6144">
204          <Annotation Term="OData.Description" String="6144-bit Diffie-Hellman (DH) group."/>
205          <Annotation Term="OData.LongDescription" String="This value shall indicate the 2048-bit Diffie-Hellman (DH) group as defined by the 'DH-HMAC-CHAP Diffie-Hellman group identifiers' figure in the NVMe Base Specification."/>
206        </Member>
207        <Member Name="FFDHE8192">
208          <Annotation Term="OData.Description" String="8192-bit Diffie-Hellman (DH) group."/>
209          <Annotation Term="OData.LongDescription" String="This value shall indicate the 8192-bit Diffie-Hellman (DH) group as defined by the 'DH-HMAC-CHAP Diffie-Hellman group identifiers' figure in the NVMe Base Specification."/>
210        </Member>
211      </EnumType>
212
213      <ComplexType Name="Actions">
214        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
215        <Annotation Term="OData.Description" String="The available actions for this resource."/>
216        <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
217        <Property Name="Oem" Type="KeyPolicy.v1_0_0.OemActions" Nullable="false">
218          <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
219          <Annotation Term="OData.LongDescription" String="This property shall contain the available OEM-specific actions for this resource."/>
220        </Property>
221      </ComplexType>
222
223      <ComplexType Name="OemActions">
224        <Annotation Term="OData.AdditionalProperties" Bool="true"/>
225        <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
226        <Annotation Term="OData.LongDescription" String="This type shall contain the available OEM-specific actions for this resource."/>
227      </ComplexType>
228    </Schema>
229
230  </edmx:DataServices>
231</edmx:Edmx>
232