PageRenderTime 53ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/libpskc/schemas/pskc-schema.xsd

https://gitlab.com/ssbarnea/oath-toolkit
XML Schema | 307 lines | 303 code | 4 blank | 0 comment | 0 complexity | f954d99c70b40369b26ca03e15262372 MD5 | raw file
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Extracted from RFC 6030. Modified as follows:
  4. 1) Signature element handling.
  5. <http://article.gmane.org/gmane.ietf.keyprov/1011>.
  6. 2) Make AlgorithmParameter a sequence not a choice.
  7. <http://www.rfc-editor.org/errata_search.php?eid=2759>
  8. -->
  9. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  10. xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"
  11. xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
  12. xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
  13. targetNamespace="urn:ietf:params:xml:ns:keyprov:pskc"
  14. elementFormDefault="qualified"
  15. attributeFormDefault="unqualified">
  16. <xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
  17. schemaLocation=
  18. "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
  19. xmldsig-core-schema.xsd"/>
  20. <xs:import namespace="http://www.w3.org/2001/04/xmlenc#"
  21. schemaLocation=
  22. "http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd"/>
  23. <xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
  24. <xs:complexType name="KeyContainerType">
  25. <xs:sequence>
  26. <xs:element name="EncryptionKey"
  27. type="ds:KeyInfoType" minOccurs="0"/>
  28. <xs:element name="MACMethod"
  29. type="pskc:MACMethodType" minOccurs="0"/>
  30. <xs:element name="KeyPackage"
  31. type="pskc:KeyPackageType" maxOccurs="unbounded"/>
  32. <xs:element ref="ds:Signature" minOccurs="0"/>
  33. <xs:element name="Extensions"
  34. type="pskc:ExtensionsType"
  35. minOccurs="0" maxOccurs="unbounded"/>
  36. </xs:sequence>
  37. <xs:attribute name="Version"
  38. type="pskc:VersionType" use="required"/>
  39. <xs:attribute name="Id"
  40. type="xs:ID" use="optional"/>
  41. </xs:complexType>
  42. <xs:simpleType name="VersionType" final="restriction">
  43. <xs:restriction base="xs:string">
  44. <xs:pattern value="\d{1,2}\.\d{1,3}"/>
  45. </xs:restriction>
  46. </xs:simpleType>
  47. <xs:complexType name="KeyType">
  48. <xs:sequence>
  49. <xs:element name="Issuer"
  50. type="xs:string" minOccurs="0"/>
  51. <xs:element name="AlgorithmParameters"
  52. type="pskc:AlgorithmParametersType"
  53. minOccurs="0"/>
  54. <xs:element name="KeyProfileId"
  55. type="xs:string" minOccurs="0"/>
  56. <xs:element name="KeyReference"
  57. type="xs:string" minOccurs="0"/>
  58. <xs:element name="FriendlyName"
  59. type="xs:string" minOccurs="0"/>
  60. <xs:element name="Data"
  61. type="pskc:KeyDataType" minOccurs="0"/>
  62. <xs:element name="UserId"
  63. type="xs:string" minOccurs="0"/>
  64. <xs:element name="Policy"
  65. type="pskc:PolicyType" minOccurs="0"/>
  66. <xs:element name="Extensions"
  67. type="pskc:ExtensionsType" minOccurs="0"
  68. maxOccurs="unbounded"/>
  69. </xs:sequence>
  70. <xs:attribute name="Id"
  71. type="xs:string" use="required"/>
  72. <xs:attribute name="Algorithm"
  73. type="pskc:KeyAlgorithmType" use="optional"/>
  74. </xs:complexType>
  75. <xs:complexType name="PolicyType">
  76. <xs:sequence>
  77. <xs:element name="StartDate"
  78. type="xs:dateTime" minOccurs="0"/>
  79. <xs:element name="ExpiryDate"
  80. type="xs:dateTime" minOccurs="0"/>
  81. <xs:element name="PINPolicy"
  82. type="pskc:PINPolicyType" minOccurs="0"/>
  83. <xs:element name="KeyUsage"
  84. type="pskc:KeyUsageType"
  85. minOccurs="0" maxOccurs="unbounded"/>
  86. <xs:element name="NumberOfTransactions"
  87. type="xs:nonNegativeInteger" minOccurs="0"/>
  88. <xs:any namespace="##other"
  89. minOccurs="0" maxOccurs="unbounded"/>
  90. </xs:sequence>
  91. </xs:complexType>
  92. <xs:complexType name="KeyDataType">
  93. <xs:sequence>
  94. <xs:element name="Secret"
  95. type="pskc:binaryDataType" minOccurs="0"/>
  96. <xs:element name="Counter"
  97. type="pskc:longDataType" minOccurs="0"/>
  98. <xs:element name="Time"
  99. type="pskc:intDataType" minOccurs="0"/>
  100. <xs:element name="TimeInterval"
  101. type="pskc:intDataType" minOccurs="0"/>
  102. <xs:element name="TimeDrift"
  103. type="pskc:intDataType" minOccurs="0"/>
  104. <xs:any namespace="##other"
  105. processContents="lax"
  106. minOccurs="0" maxOccurs="unbounded"/>
  107. </xs:sequence>
  108. </xs:complexType>
  109. <xs:complexType name="binaryDataType">
  110. <xs:sequence>
  111. <xs:choice>
  112. <xs:element name="PlainValue"
  113. type="xs:base64Binary"/>
  114. <xs:element name="EncryptedValue"
  115. type="xenc:EncryptedDataType"/>
  116. </xs:choice>
  117. <xs:element name="ValueMAC"
  118. type="xs:base64Binary" minOccurs="0"/>
  119. </xs:sequence>
  120. </xs:complexType>
  121. <xs:complexType name="intDataType">
  122. <xs:sequence>
  123. <xs:choice>
  124. <xs:element name="PlainValue" type="xs:int"/>
  125. <xs:element name="EncryptedValue"
  126. type="xenc:EncryptedDataType"/>
  127. </xs:choice>
  128. <xs:element name="ValueMAC"
  129. type="xs:base64Binary" minOccurs="0"/>
  130. </xs:sequence>
  131. </xs:complexType>
  132. <xs:complexType name="stringDataType">
  133. <xs:sequence>
  134. <xs:choice>
  135. <xs:element name="PlainValue" type="xs:string"/>
  136. <xs:element name="EncryptedValue"
  137. type="xenc:EncryptedDataType"/>
  138. </xs:choice>
  139. <xs:element name="ValueMAC"
  140. type="xs:base64Binary" minOccurs="0"/>
  141. </xs:sequence>
  142. </xs:complexType>
  143. <xs:complexType name="longDataType">
  144. <xs:sequence>
  145. <xs:choice>
  146. <xs:element name="PlainValue" type="xs:long"/>
  147. <xs:element name="EncryptedValue"
  148. type="xenc:EncryptedDataType"/>
  149. </xs:choice>
  150. <xs:element name="ValueMAC"
  151. type="xs:base64Binary" minOccurs="0"/>
  152. </xs:sequence>
  153. </xs:complexType>
  154. <xs:complexType name="PINPolicyType">
  155. <xs:attribute name="PINKeyId"
  156. type="xs:string" use="optional"/>
  157. <xs:attribute name="PINUsageMode"
  158. type="pskc:PINUsageModeType"/>
  159. <xs:attribute name="MaxFailedAttempts"
  160. type="xs:unsignedInt" use="optional"/>
  161. <xs:attribute name="MinLength"
  162. type="xs:unsignedInt" use="optional"/>
  163. <xs:attribute name="MaxLength"
  164. type="xs:unsignedInt" use="optional"/>
  165. <xs:attribute name="PINEncoding"
  166. type="pskc:ValueFormatType" use="optional"/>
  167. <xs:anyAttribute namespace="##other"/>
  168. </xs:complexType>
  169. <xs:simpleType name="PINUsageModeType">
  170. <xs:restriction base="xs:string">
  171. <xs:enumeration value="Local"/>
  172. <xs:enumeration value="Prepend"/>
  173. <xs:enumeration value="Append"/>
  174. <xs:enumeration value="Algorithmic"/>
  175. </xs:restriction>
  176. </xs:simpleType>
  177. <xs:simpleType name="KeyUsageType">
  178. <xs:restriction base="xs:string">
  179. <xs:enumeration value="OTP"/>
  180. <xs:enumeration value="CR"/>
  181. <xs:enumeration value="Encrypt"/>
  182. <xs:enumeration value="Integrity"/>
  183. <xs:enumeration value="Verify"/>
  184. <xs:enumeration value="Unlock"/>
  185. <xs:enumeration value="Decrypt"/>
  186. <xs:enumeration value="KeyWrap"/>
  187. <xs:enumeration value="Unwrap"/>
  188. <xs:enumeration value="Derive"/>
  189. <xs:enumeration value="Generate"/>
  190. </xs:restriction>
  191. </xs:simpleType>
  192. <xs:complexType name="DeviceInfoType">
  193. <xs:sequence>
  194. <xs:element name="Manufacturer"
  195. type="xs:string" minOccurs="0"/>
  196. <xs:element name="SerialNo"
  197. type="xs:string" minOccurs="0"/>
  198. <xs:element name="Model"
  199. type="xs:string" minOccurs="0"/>
  200. <xs:element name="IssueNo"
  201. type="xs:string" minOccurs="0"/>
  202. <xs:element name="DeviceBinding"
  203. type="xs:string" minOccurs="0"/>
  204. <xs:element name="StartDate"
  205. type="xs:dateTime" minOccurs="0"/>
  206. <xs:element name="ExpiryDate"
  207. type="xs:dateTime" minOccurs="0"/>
  208. <xs:element name="UserId"
  209. type="xs:string" minOccurs="0"/>
  210. <xs:element name="Extensions"
  211. type="pskc:ExtensionsType" minOccurs="0"
  212. maxOccurs="unbounded"/>
  213. </xs:sequence>
  214. </xs:complexType>
  215. <xs:complexType name="CryptoModuleInfoType">
  216. <xs:sequence>
  217. <xs:element name="Id" type="xs:string"/>
  218. <xs:element name="Extensions"
  219. type="pskc:ExtensionsType" minOccurs="0"
  220. maxOccurs="unbounded"/>
  221. </xs:sequence>
  222. </xs:complexType>
  223. <xs:complexType name="KeyPackageType">
  224. <xs:sequence>
  225. <xs:element name="DeviceInfo"
  226. type="pskc:DeviceInfoType" minOccurs="0"/>
  227. <xs:element name="CryptoModuleInfo"
  228. type="pskc:CryptoModuleInfoType" minOccurs="0"/>
  229. <xs:element name="Key"
  230. type="pskc:KeyType" minOccurs="0"/>
  231. <xs:element name="Extensions"
  232. type="pskc:ExtensionsType" minOccurs="0"
  233. maxOccurs="unbounded"/>
  234. </xs:sequence>
  235. </xs:complexType>
  236. <xs:complexType name="AlgorithmParametersType">
  237. <xs:sequence>
  238. <xs:element name="Suite" type="xs:string" minOccurs="0"/>
  239. <xs:element name="ChallengeFormat" minOccurs="0">
  240. <xs:complexType>
  241. <xs:attribute name="Encoding"
  242. type="pskc:ValueFormatType"
  243. use="required"/>
  244. <xs:attribute name="Min"
  245. type="xs:unsignedInt" use="required"/>
  246. <xs:attribute name="Max"
  247. type="xs:unsignedInt" use="required"/>
  248. <xs:attribute name="CheckDigits"
  249. type="xs:boolean" default="false"/>
  250. </xs:complexType>
  251. </xs:element>
  252. <xs:element name="ResponseFormat" minOccurs="0">
  253. <xs:complexType>
  254. <xs:attribute name="Encoding"
  255. type="pskc:ValueFormatType"
  256. use="required"/>
  257. <xs:attribute name="Length"
  258. type="xs:unsignedInt" use="required"/>
  259. <xs:attribute name="CheckDigits"
  260. type="xs:boolean" default="false"/>
  261. </xs:complexType>
  262. </xs:element>
  263. <xs:element name="Extensions"
  264. type="pskc:ExtensionsType" minOccurs="0"
  265. maxOccurs="unbounded"/>
  266. </xs:sequence>
  267. </xs:complexType>
  268. <xs:complexType name="ExtensionsType">
  269. <xs:sequence>
  270. <xs:any namespace="##other"
  271. processContents="lax" maxOccurs="unbounded"/>
  272. </xs:sequence>
  273. <xs:attribute name="definition"
  274. type="xs:anyURI" use="optional"/>
  275. </xs:complexType>
  276. <xs:simpleType name="KeyAlgorithmType">
  277. <xs:restriction base="xs:anyURI"/>
  278. </xs:simpleType>
  279. <xs:simpleType name="ValueFormatType">
  280. <xs:restriction base="xs:string">
  281. <xs:enumeration value="DECIMAL"/>
  282. <xs:enumeration value="HEXADECIMAL"/>
  283. <xs:enumeration value="ALPHANUMERIC"/>
  284. <xs:enumeration value="BASE64"/>
  285. <xs:enumeration value="BINARY"/>
  286. </xs:restriction>
  287. </xs:simpleType>
  288. <xs:complexType name="MACMethodType">
  289. <xs:sequence>
  290. <xs:choice>
  291. <xs:element name="MACKey"
  292. type="xenc:EncryptedDataType" minOccurs="0"/>
  293. <xs:element name="MACKeyReference"
  294. type="xs:string" minOccurs="0"/>
  295. </xs:choice>
  296. <xs:any namespace="##other"
  297. processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  298. </xs:sequence>
  299. <xs:attribute name="Algorithm" type="xs:anyURI" use="required"/>
  300. </xs:complexType>
  301. <xs:element name="KeyContainer"
  302. type="pskc:KeyContainerType"/>
  303. </xs:schema>