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