1<?xml version="1.0" encoding="UTF-8"?>
2<!---->
3<!--################################################################################       -->
4<!--# Redfish Schema:  Key v1.4.1                                                          -->
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-2024 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="Key">
31      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
32      <Annotation Term="Redfish.Language" String="en"/>
33
34      <EntityType Name="Key" BaseType="Resource.v1_0_0.Resource" Abstract="true">
35        <Annotation Term="OData.Description" String="The `Key` schema describes sensitive data for accessing devices or services."/>
36        <Annotation Term="OData.LongDescription" String="This resource shall represent a key for a Redfish implementation."/>
37        <Annotation Term="Capabilities.InsertRestrictions">
38          <Record>
39            <PropertyValue Property="Insertable" Bool="false"/>
40          </Record>
41        </Annotation>
42        <Annotation Term="Capabilities.UpdateRestrictions">
43          <Record>
44            <PropertyValue Property="Updatable" Bool="true"/>
45          </Record>
46        </Annotation>
47        <Annotation Term="Capabilities.DeleteRestrictions">
48          <Record>
49            <PropertyValue Property="Deletable" Bool="true"/>
50          </Record>
51        </Annotation>
52        <Annotation Term="Redfish.Uris">
53          <Collection>
54            <String>/redfish/v1/KeyService/NVMeoFSecrets/{KeyId}</String>
55            <String>/redfish/v1/UpdateService/RemoteServerSSHKeys/{KeyId}</String>
56            <String>/redfish/v1/UpdateService/PublicIdentitySSHKey/{KeyId}</String>
57            <String>/redfish/v1/AccountService/Accounts/{ManagerAccountId}/Keys/{KeyId}</String>
58            <String>/redfish/v1/Managers/{ManagerId}/RemoteAccountService/Accounts/{ManagerAccountId}/Keys/{KeyId}</String>
59            <String>/redfish/v1/AggregationService/AggregationSources/{AggregationSourceId}/TrustedPublicHostKeys/{KeyId}</String>
60            <String>/redfish/v1/AggregationService/AggregationSources/{AggregationSourceId}/PresentedPublicHostKey</String>
61            <String>/redfish/v1/AggregationService/AggregationSources/{AggregationSourceId}/PublicIdentityKey</String>
62          </Collection>
63        </Annotation>
64      </EntityType>
65
66      <EnumType Name="SSHKeyType">
67        <Annotation Term="Redfish.Revisions">
68          <Collection>
69            <Record>
70              <PropertyValue Property="Kind" EnumMember="Redfish.RevisionKind/Added"/>
71              <PropertyValue Property="Version" String="v1_4_0"/>
72            </Record>
73          </Collection>
74        </Annotation>
75        <Member Name="RSA">
76          <Annotation Term="OData.Description" String="RSA."/>
77          <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC4253-defined 'ssh-rsa' key type."/>
78        </Member>
79        <Member Name="DSA">
80          <Annotation Term="OData.Description" String="DSA."/>
81          <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC4253-defined 'ssh-dss' key type."/>
82        </Member>
83        <Member Name="ECDSA">
84          <Annotation Term="OData.Description" String="ECDSA."/>
85          <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC5656-defined ECDSA key type."/>
86        </Member>
87        <Member Name="Ed25519">
88          <Annotation Term="OData.Description" String="Ed25519."/>
89          <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC8709-defined 'ssh-ed25519' key type."/>
90        </Member>
91      </EnumType>
92
93      <EnumType Name="ECDSACurveType">
94        <Annotation Term="Redfish.Revisions">
95          <Collection>
96            <Record>
97              <PropertyValue Property="Kind" EnumMember="Redfish.RevisionKind/Added"/>
98              <PropertyValue Property="Version" String="v1_4_0"/>
99            </Record>
100          </Collection>
101        </Annotation>
102        <Member Name="NISTP256">
103          <Annotation Term="OData.Description" String="NIST P-256."/>
104          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp256' curve in RFC5656."/>
105        </Member>
106        <Member Name="NISTP384">
107          <Annotation Term="OData.Description" String="NIST P-384."/>
108          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp384' curve in RFC5656."/>
109        </Member>
110        <Member Name="NISTP521">
111          <Annotation Term="OData.Description" String="NIST P-521."/>
112          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp521' curve in RFC5656."/>
113        </Member>
114        <Member Name="NISTK163">
115          <Annotation Term="OData.Description" String="NIST K-163."/>
116          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk163' curve in RFC5656."/>
117        </Member>
118        <Member Name="NISTP192">
119          <Annotation Term="OData.Description" String="NIST P-192."/>
120          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp192' curve in RFC5656."/>
121        </Member>
122        <Member Name="NISTP224">
123          <Annotation Term="OData.Description" String="NIST P-224."/>
124          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp224' curve in RFC5656."/>
125        </Member>
126        <Member Name="NISTK233">
127          <Annotation Term="OData.Description" String="NIST K-233."/>
128          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk233' curve in RFC5656."/>
129        </Member>
130        <Member Name="NISTB233">
131          <Annotation Term="OData.Description" String="NIST B-233."/>
132          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistb233' curve in RFC5656."/>
133        </Member>
134        <Member Name="NISTK283">
135          <Annotation Term="OData.Description" String="NIST K-283."/>
136          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk283' curve in RFC5656."/>
137        </Member>
138        <Member Name="NISTK409">
139          <Annotation Term="OData.Description" String="NIST K-409."/>
140          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk409' curve in RFC5656."/>
141        </Member>
142        <Member Name="NISTB409">
143          <Annotation Term="OData.Description" String="NIST B-409."/>
144          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistb409' curve in RFC5656."/>
145        </Member>
146        <Member Name="NISTT571">
147          <Annotation Term="OData.Description" String="NIST T-571."/>
148          <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistt571' curve in RFC5656."/>
149        </Member>
150      </EnumType>
151    </Schema>
152
153    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_0_0">
154      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
155      <Annotation Term="Redfish.Release" String="2021.2"/>
156
157      <EntityType Name="Key" BaseType="Key.Key">
158        <Property Name="KeyString" Type="Edm.String">
159          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
160          <Annotation Term="OData.Description" String="The string for the key."/>
161          <Annotation Term="OData.LongDescription" String="This property shall contain the key, and the format shall follow the requirements specified by the `KeyType` property value."/>
162          <Annotation Term="Redfish.RequiredOnCreate"/>
163        </Property>
164        <Property Name="KeyType" Type="Key.v1_0_0.KeyType">
165          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
166          <Annotation Term="OData.Description" String="The format of the key."/>
167          <Annotation Term="OData.LongDescription" String="This property shall contain the format type for the key."/>
168          <Annotation Term="Redfish.RequiredOnCreate"/>
169        </Property>
170        <Property Name="NVMeoF" Type="Key.v1_0_0.NVMeoF" Nullable="false">
171          <Annotation Term="OData.Description" String="NVMe-oF specific properties."/>
172          <Annotation Term="OData.LongDescription" String="This property shall contain NVMe-oF specific properties for this key.  This property shall be present if `KeyType` contains the value `NVMeoF`."/>
173        </Property>
174        <Property Name="Actions" Type="Key.v1_0_0.Actions" Nullable="false">
175          <Annotation Term="OData.Description" String="The available actions for this resource."/>
176          <Annotation Term="OData.LongDescription" String="This property shall contain the available actions for this resource."/>
177        </Property>
178      </EntityType>
179
180      <EnumType Name="KeyType">
181        <Member Name="NVMeoF">
182          <Annotation Term="OData.Description" String="An NVMe-oF key."/>
183          <Annotation Term="OData.LongDescription" String="This value shall indicate the format of the key is defined by one of the NVMe specifications."/>
184        </Member>
185        <Member Name="SSH">
186          <Annotation Term="OData.Description" String="An SSH public key."/>
187          <Annotation Term="OData.LongDescription" String="This value shall indicate the format of the key is defined by one of the SSH public key formats as defined in, but not limited to, RFC4253, RFC4716, or RFC8709."/>
188          <Annotation Term="Redfish.Revisions">
189            <Collection>
190              <Record>
191                <PropertyValue Property="Kind" EnumMember="Redfish.RevisionKind/Added"/>
192                <PropertyValue Property="Version" String="v1_1_0"/>
193              </Record>
194            </Collection>
195          </Annotation>
196        </Member>
197      </EnumType>
198
199      <ComplexType Name="NVMeoF">
200        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
201        <Annotation Term="OData.Description" String="NVMe-oF specific properties."/>
202        <Annotation Term="OData.LongDescription" String="This type shall contain NVMe-oF specific properties for a key."/>
203        <Property Name="NQN" Type="Edm.String">
204          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
205          <Annotation Term="OData.Description" String="The NVMe Qualified Name (NQN) of the host or target subsystem associated with this key."/>
206          <Annotation Term="OData.LongDescription" String="This property shall contain the NVMe Qualified Name (NQN) of the host or target subsystem associated with this key.  The value of this property shall follow the NQN format defined by the NVMe Base Specification."/>
207          <Annotation Term="Redfish.RequiredOnCreate"/>
208        </Property>
209        <Property Name="SecurityProtocolType" Type="Key.v1_0_0.NVMeoFSecurityProtocolType">
210          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
211          <Annotation Term="OData.Description" String="The security protocol that this key uses."/>
212          <Annotation Term="OData.LongDescription" String="This property shall contain the security protocol that this key uses.  The value shall be derived from the contents of the `KeyString` property."/>
213        </Property>
214        <Property Name="OEMSecurityProtocolType" Type="Edm.String">
215          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
216          <Annotation Term="OData.Description" String="The OEM security protocol that this key uses."/>
217          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM-defined security protocol that this key uses.  The value shall be derived from the contents of the `KeyString` property.  This property shall be present if `SecurityProtocolType` contains the value `OEM`."/>
218        </Property>
219        <Property Name="SecureHashAllowList" Type="Collection(Key.v1_0_0.NVMeoFSecureHashType)">
220          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
221          <Annotation Term="OData.Description" String="The secure hash algorithms allowed with the usage of this key."/>
222          <Annotation Term="OData.LongDescription" String="This property shall contain the secure hash algorithms allowed with the usage of this key.  An empty list or the absence of this property shall indicate any secure hash algorithms are allowed with this key."/>
223        </Property>
224        <Property Name="HostKeyId" Type="Edm.String">
225          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
226          <Annotation Term="OData.Description" String="The identifier of the host key paired with this target key."/>
227          <Annotation Term="OData.LongDescription" String="This property shall contain the value of the `Id` property of the `Key` resource representing the host key paired with this target key.  An empty string shall indicate the key is not paired.  This property shall be absent for host keys."/>
228        </Property>
229      </ComplexType>
230
231      <EnumType Name="NVMeoFSecurityProtocolType">
232        <Annotation Term="OData.Description" String="The NVMe security protocols that a key protects."/>
233        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe security protocols that a key protects."/>
234        <Member Name="DHHC">
235          <Annotation Term="OData.Description" String="Diffie-Hellman Hashed Message Authentication Code Challenge Handshake Authentication Protocol (DH-HMAC-CHAP)."/>
236          <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."/>
237        </Member>
238        <Member Name="TLS_PSK">
239          <Annotation Term="OData.Description" String="Transport Layer Security Pre-Shared Key (TLS PSK)."/>
240          <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."/>
241        </Member>
242        <Member Name="OEM">
243          <Annotation Term="OData.Description" String="OEM."/>
244          <Annotation Term="OData.LongDescription" String="This value shall indicate an OEM-defined security protocol.  The `OEMSecurityProtocolType` property shall contain the specific OEM protocol."/>
245        </Member>
246      </EnumType>
247
248      <EnumType Name="NVMeoFSecureHashType">
249        <Annotation Term="OData.Description" String="The NVMe secure hash algorithms that a key is allowed to use."/>
250        <Annotation Term="OData.LongDescription" String="This enumeration shall list the NVMe secure hash algorithms that a key is allowed to use."/>
251        <Member Name="SHA256">
252          <Annotation Term="OData.Description" String="SHA-256."/>
253          <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."/>
254        </Member>
255        <Member Name="SHA384">
256          <Annotation Term="OData.Description" String="SHA-384."/>
257          <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."/>
258        </Member>
259        <Member Name="SHA512">
260          <Annotation Term="OData.Description" String="SHA-512."/>
261          <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."/>
262        </Member>
263      </EnumType>
264
265      <ComplexType Name="Actions">
266        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
267        <Annotation Term="OData.Description" String="The available actions for this resource."/>
268        <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
269        <Property Name="Oem" Type="Key.v1_0_0.OemActions" Nullable="false">
270          <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
271          <Annotation Term="OData.LongDescription" String="This property shall contain the available OEM-specific actions for this resource."/>
272        </Property>
273      </ComplexType>
274
275      <ComplexType Name="OemActions">
276        <Annotation Term="OData.AdditionalProperties" Bool="true"/>
277        <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
278        <Annotation Term="OData.LongDescription" String="This type shall contain the available OEM-specific actions for this resource."/>
279      </ComplexType>
280    </Schema>
281
282    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_0_1">
283      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
284      <Annotation Term="OData.Description" String="This version was created to force the regeneration of OpenAPI schemas to properly express nullable properties with external references.  It was also created to correct various typographical errors."/>
285      <EntityType Name="Key" BaseType="Key.v1_0_0.Key"/>
286    </Schema>
287
288    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_1_0">
289      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
290      <Annotation Term="Redfish.Release" String="2022.1"/>
291      <Annotation Term="OData.Description" String="This version was created to add `SSH` to `KeyType`."/>
292
293      <EntityType Name="Key" BaseType="Key.v1_0_0.Key">
294        <Property Name="UserDescription" Type="Edm.String">
295          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
296          <Annotation Term="OData.Description" String="A user-defined string to describe this key."/>
297          <Annotation Term="OData.LongDescription" String="This property shall contain a user-provided string that describes the key."/>
298        </Property>
299      </EntityType>
300    </Schema>
301
302    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_1_1">
303      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
304      <Annotation Term="OData.Description" String="This version was created to force the regeneration of OpenAPI schemas to properly express nullable properties with external references.  It was also created to correct various typographical errors."/>
305      <EntityType Name="Key" BaseType="Key.v1_1_0.Key"/>
306    </Schema>
307
308    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_2_0">
309      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
310      <Annotation Term="Redfish.Release" String="2022.3"/>
311
312      <EntityType Name="Key" BaseType="Key.v1_1_0.Key">
313        <Property Name="SSH" Type="Key.v1_2_0.SSHType" Nullable="false">
314          <Annotation Term="OData.Description" String="SSH specific properties."/>
315          <Annotation Term="OData.LongDescription" String="This property shall contain SSH specific properties for this key.  This property shall be present if `KeyType` contains the value `SSH`."/>
316        </Property>
317      </EntityType>
318
319      <ComplexType Name="SSHType">
320        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
321        <Annotation Term="OData.Description" String="SSH specific properties."/>
322        <Annotation Term="OData.LongDescription" String="This type shall contain SSH specific properties for a key."/>
323        <Property Name="Fingerprint" Type="Edm.String">
324          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
325          <Annotation Term="OData.Description" String="A fingerprint of the key."/>
326          <Annotation Term="OData.LongDescription" String="This property shall contain the fingerprint of the key."/>
327          <Annotation Term="Validation.Pattern" String="(^MD5(:[0-9a-f]{2})+$)|(^SHA256:[A-Za-z0-9+/=]+$)"/>
328        </Property>
329      </ComplexType>
330    </Schema>
331
332    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_2_1">
333      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
334      <Annotation Term="OData.Description" String="This version was created to force the regeneration of OpenAPI schemas to properly express nullable properties with external references.  It was also created to correct various typographical errors."/>
335      <EntityType Name="Key" BaseType="Key.v1_2_0.Key"/>
336    </Schema>
337
338    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_3_0">
339      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
340      <Annotation Term="Redfish.Release" String="2023.2"/>
341
342      <EntityType Name="Key" BaseType="Key.v1_2_0.Key"/>
343
344      <ComplexType Name="SSHType" BaseType="Key.v1_2_0.SSHType">
345        <Property Name="RemoteServerHostName" Type="Edm.String">
346          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
347          <Annotation Term="OData.Description" String="The host name of the remote server associated with this key."/>
348          <Annotation Term="OData.LongDescription" String="This property shall contain the host name of the remote server associated with this key."/>
349        </Property>
350      </ComplexType>
351    </Schema>
352
353    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_3_1">
354      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
355      <Annotation Term="OData.Description" String="This version was created to force the regeneration of OpenAPI schemas to properly express nullable properties with external references.  It was also created to correct various typographical errors."/>
356      <EntityType Name="Key" BaseType="Key.v1_3_0.Key"/>
357    </Schema>
358
359    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_4_0">
360      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
361      <Annotation Term="Redfish.Release" String="2023.3"/>
362
363      <EntityType Name="Key" BaseType="Key.v1_3_0.Key"/>
364
365      <ComplexType Name="SSHType" BaseType="Key.v1_3_0.SSHType">
366        <Property Name="Comment" Type="Edm.String">
367          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
368          <Annotation Term="OData.Description" String="The user-specified comment associated with this key, which typically contains the client's username and host name."/>
369          <Annotation Term="OData.LongDescription" String="This property shall contain the user-specified comment associated with this key, which typically contains the client's username and host name."/>
370        </Property>
371      </ComplexType>
372    </Schema>
373
374    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Key.v1_4_1">
375      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
376      <Annotation Term="OData.Description" String="This version was created to force the regeneration of OpenAPI schemas to properly express nullable properties with external references.  It was also created to correct various typographical errors."/>
377      <EntityType Name="Key" BaseType="Key.v1_4_0.Key"/>
378    </Schema>
379
380  </edmx:DataServices>
381</edmx:Edmx>
382