@cdxgen/cdxgen 13.6.0 → 13.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +15 -8
  2. package/bin/audit.js +7 -4
  3. package/bin/cdxgen.js +256 -37
  4. package/bin/convert.js +146 -22
  5. package/bin/evinse.js +25 -3
  6. package/bin/repl.js +47 -3
  7. package/bin/sign.js +211 -34
  8. package/bin/tracebom.js +18 -6
  9. package/bin/validate.js +18 -3
  10. package/bin/verify.js +113 -5
  11. package/data/behavior-taxonomy.schema.json +1491 -0
  12. package/data/cyclonedx-2.0-bundled.schema.json +18606 -5528
  13. package/data/cyclonedx-2.0-cryptography-defs.schema.json +857 -0
  14. package/data/pqc-migration.json +239 -0
  15. package/data/remediations.json +52 -0
  16. package/data/rules/cbom-security.yaml +4 -3
  17. package/data/rules/package-integrity.yaml +28 -0
  18. package/lib/audit/index.js +25 -3
  19. package/lib/cli/bomAssembly.js +80 -1
  20. package/lib/cli/cliOptions.js +121 -17
  21. package/lib/cli/index.js +609 -898
  22. package/lib/cli/jsBom.js +3 -0
  23. package/lib/cli/jvmBom.js +365 -40
  24. package/lib/cli/managedBom.js +19 -3
  25. package/lib/cli/nativeBom.js +10 -0
  26. package/lib/core/env.js +26 -0
  27. package/lib/core/fs.js +126 -3
  28. package/lib/core/globPatterns.js +218 -0
  29. package/lib/core/processTree.js +99 -12
  30. package/lib/core/projectConfig.js +332 -25
  31. package/lib/core/toolRegistry.js +15 -1
  32. package/lib/ecosystems/denoutils.js +2 -2
  33. package/lib/ecosystems/golem.js +3 -8
  34. package/lib/ecosystems/gradleutils.js +1082 -6
  35. package/lib/ecosystems/jsEvidence.js +90 -38
  36. package/lib/ecosystems/kosi.js +3 -5
  37. package/lib/ecosystems/npmVersionResolution.js +376 -0
  38. package/lib/ecosystems/parsers-python.js +89 -28
  39. package/lib/ecosystems/parsers-rust.js +117 -15
  40. package/lib/ecosystems/remote/huggingface.js +22 -0
  41. package/lib/ecosystems/rusi.js +2 -4
  42. package/lib/ecosystems/scalasem.js +2 -1
  43. package/lib/evinser/evinser.js +196 -34
  44. package/lib/evinser/scalasem.js +5 -1
  45. package/lib/helpers/agenticToolutils.js +112 -1
  46. package/lib/helpers/bomSigner.js +43 -9
  47. package/lib/helpers/jssSigner.js +1276 -0
  48. package/lib/inventory/agentBlueprint.js +193 -0
  49. package/lib/inventory/agentToolNames.js +145 -0
  50. package/lib/inventory/aiCollector.js +153 -7
  51. package/lib/inventory/aiInventory.js +44 -8
  52. package/lib/inventory/aiProviders.js +324 -0
  53. package/lib/inventory/bomUtils.js +8 -1
  54. package/lib/inventory/ciParsers/githubActionsLock.js +821 -0
  55. package/lib/inventory/citations.js +31 -2
  56. package/lib/inventory/communityAiConfigParser.js +978 -80
  57. package/lib/inventory/cyclonedx20.js +152 -0
  58. package/lib/inventory/cyclonedx20Common.js +286 -0
  59. package/lib/inventory/cyclonedx20Derived.js +159 -0
  60. package/lib/inventory/cyclonedx20Parties.js +552 -0
  61. package/lib/inventory/cyclonedx20Read.js +768 -0
  62. package/lib/inventory/cyclonedx20ReadCommon.js +374 -0
  63. package/lib/inventory/cyclonedx20ReadComponents.js +692 -0
  64. package/lib/inventory/cyclonedx20ReadContext.js +380 -0
  65. package/lib/inventory/cyclonedx20ReadEvidence.js +466 -0
  66. package/lib/inventory/cyclonedx20ReadSections.js +599 -0
  67. package/lib/inventory/cyclonedx20Render.js +766 -0
  68. package/lib/inventory/cyclonedx20RenderComponents.js +716 -0
  69. package/lib/inventory/cyclonedx20RenderDefinitions.js +405 -0
  70. package/lib/inventory/cyclonedx20RenderEvidence.js +726 -0
  71. package/lib/inventory/cyclonedx20RenderHardware.js +203 -0
  72. package/lib/inventory/cyclonedx20RenderPatents.js +174 -0
  73. package/lib/inventory/cyclonedx20RenderRefIds.js +314 -0
  74. package/lib/inventory/cyclonedx20RenderSections.js +499 -0
  75. package/lib/inventory/cyclonedx20Tables.js +594 -0
  76. package/lib/inventory/deps.js +106 -13
  77. package/lib/inventory/dosai.js +236 -1
  78. package/lib/inventory/dosaiParsers.js +3 -6
  79. package/lib/inventory/dotnetRuntime.js +164 -14
  80. package/lib/inventory/ecosystemFormulationParsers.js +979 -0
  81. package/lib/inventory/envcontext.js +132 -38
  82. package/lib/inventory/evidenceUtils.js +2 -1
  83. package/lib/inventory/formulationParsers.js +95 -13
  84. package/lib/inventory/hbom.js +45 -6
  85. package/lib/inventory/hbomLoader.js +166 -0
  86. package/lib/inventory/mcpConfigParser.js +5 -0
  87. package/lib/inventory/occurrenceKey.js +90 -0
  88. package/lib/inventory/pqcMigration.js +426 -0
  89. package/lib/inventory/rustFormulationParser.js +21 -10
  90. package/lib/inventory/source.js +65 -6
  91. package/lib/parsers/huggingfaceManifest.js +9 -1
  92. package/lib/parsers/huggingfaceUtils.js +18 -0
  93. package/lib/parsers/kiroPermissions.js +166 -0
  94. package/lib/server/server.js +36 -34
  95. package/lib/stages/postgen/postgen.js +41 -1
  96. package/lib/stages/postgen/specVersionCompat.js +76 -0
  97. package/lib/validator/bomValidator.js +8 -1
  98. package/lib/validator/complianceEngine.js +30 -3
  99. package/lib/validator/complianceRules.js +1416 -4
  100. package/lib/validator/generated/validate-2.0.mjs +57554 -13851
  101. package/lib/validator/index.js +48 -7
  102. package/lib/validator/reporters/json.js +6 -0
  103. package/package.json +9 -9
  104. package/types/bin/repl.d.ts.map +1 -1
  105. package/types/lib/audit/index.d.ts +6 -2
  106. package/types/lib/audit/index.d.ts.map +1 -1
  107. package/types/lib/cli/bomAssembly.d.ts +16 -0
  108. package/types/lib/cli/bomAssembly.d.ts.map +1 -1
  109. package/types/lib/cli/cliOptions.d.ts +6 -0
  110. package/types/lib/cli/cliOptions.d.ts.map +1 -1
  111. package/types/lib/cli/index.d.ts.map +1 -1
  112. package/types/lib/cli/jsBom.d.ts +2 -1
  113. package/types/lib/cli/jsBom.d.ts.map +1 -1
  114. package/types/lib/cli/jvmBom.d.ts +15 -0
  115. package/types/lib/cli/jvmBom.d.ts.map +1 -1
  116. package/types/lib/cli/managedBom.d.ts.map +1 -1
  117. package/types/lib/cli/nativeBom.d.ts.map +1 -1
  118. package/types/lib/core/boundedFile.d.ts +30 -0
  119. package/types/lib/core/boundedFile.d.ts.map +1 -1
  120. package/types/lib/core/env.d.ts +10 -0
  121. package/types/lib/core/env.d.ts.map +1 -1
  122. package/types/lib/core/fs.d.ts +4 -0
  123. package/types/lib/core/fs.d.ts.map +1 -1
  124. package/types/lib/core/globPatterns.d.ts +70 -0
  125. package/types/lib/core/globPatterns.d.ts.map +1 -0
  126. package/types/lib/core/paths.d.ts +9 -0
  127. package/types/lib/core/paths.d.ts.map +1 -1
  128. package/types/lib/core/processTree.d.ts +16 -5
  129. package/types/lib/core/processTree.d.ts.map +1 -1
  130. package/types/lib/core/projectConfig.d.ts +47 -8
  131. package/types/lib/core/projectConfig.d.ts.map +1 -1
  132. package/types/lib/core/toolRegistry.d.ts.map +1 -1
  133. package/types/lib/ecosystems/golem.d.ts.map +1 -1
  134. package/types/lib/ecosystems/gradleutils.d.ts +248 -8
  135. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
  136. package/types/lib/ecosystems/jsEvidence.d.ts +14 -1
  137. package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -1
  138. package/types/lib/ecosystems/kosi.d.ts.map +1 -1
  139. package/types/lib/ecosystems/npmVersionResolution.d.ts +119 -0
  140. package/types/lib/ecosystems/npmVersionResolution.d.ts.map +1 -0
  141. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
  142. package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -1
  143. package/types/lib/ecosystems/pythonutils.d.ts +1 -1
  144. package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -1
  145. package/types/lib/ecosystems/rusi.d.ts.map +1 -1
  146. package/types/lib/ecosystems/scalasem.d.ts +58 -16
  147. package/types/lib/ecosystems/scalasem.d.ts.map +1 -1
  148. package/types/lib/evinser/evinser.d.ts +61 -9
  149. package/types/lib/evinser/evinser.d.ts.map +1 -1
  150. package/types/lib/evinser/scalasem.d.ts.map +1 -1
  151. package/types/lib/helpers/agenticToolutils.d.ts +53 -19
  152. package/types/lib/helpers/agenticToolutils.d.ts.map +1 -1
  153. package/types/lib/helpers/bomSigner.d.ts +20 -3
  154. package/types/lib/helpers/bomSigner.d.ts.map +1 -1
  155. package/types/lib/helpers/jssSigner.d.ts +288 -0
  156. package/types/lib/helpers/jssSigner.d.ts.map +1 -0
  157. package/types/lib/helpers/vsixutils.d.ts +303 -19
  158. package/types/lib/helpers/vsixutils.d.ts.map +1 -1
  159. package/types/lib/inventory/agentBlueprint.d.ts +70 -0
  160. package/types/lib/inventory/agentBlueprint.d.ts.map +1 -0
  161. package/types/lib/inventory/agentToolNames.d.ts +51 -0
  162. package/types/lib/inventory/agentToolNames.d.ts.map +1 -0
  163. package/types/lib/inventory/aiCollector.d.ts.map +1 -1
  164. package/types/lib/inventory/aiInventory.d.ts.map +1 -1
  165. package/types/lib/inventory/aiProviders.d.ts +85 -0
  166. package/types/lib/inventory/aiProviders.d.ts.map +1 -0
  167. package/types/lib/inventory/bomUtils.d.ts.map +1 -1
  168. package/types/lib/inventory/ciParsers/githubActionsLock.d.ts +101 -0
  169. package/types/lib/inventory/ciParsers/githubActionsLock.d.ts.map +1 -0
  170. package/types/lib/inventory/citations.d.ts +5 -0
  171. package/types/lib/inventory/citations.d.ts.map +1 -1
  172. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -1
  173. package/types/lib/inventory/cyclonedx20.d.ts +99 -0
  174. package/types/lib/inventory/cyclonedx20.d.ts.map +1 -0
  175. package/types/lib/inventory/cyclonedx20Common.d.ts +102 -0
  176. package/types/lib/inventory/cyclonedx20Common.d.ts.map +1 -0
  177. package/types/lib/inventory/cyclonedx20Derived.d.ts +74 -0
  178. package/types/lib/inventory/cyclonedx20Derived.d.ts.map +1 -0
  179. package/types/lib/inventory/cyclonedx20Parties.d.ts +91 -0
  180. package/types/lib/inventory/cyclonedx20Parties.d.ts.map +1 -0
  181. package/types/lib/inventory/cyclonedx20Read.d.ts +51 -0
  182. package/types/lib/inventory/cyclonedx20Read.d.ts.map +1 -0
  183. package/types/lib/inventory/cyclonedx20ReadCommon.d.ts +69 -0
  184. package/types/lib/inventory/cyclonedx20ReadCommon.d.ts.map +1 -0
  185. package/types/lib/inventory/cyclonedx20ReadComponents.d.ts +77 -0
  186. package/types/lib/inventory/cyclonedx20ReadComponents.d.ts.map +1 -0
  187. package/types/lib/inventory/cyclonedx20ReadContext.d.ts +118 -0
  188. package/types/lib/inventory/cyclonedx20ReadContext.d.ts.map +1 -0
  189. package/types/lib/inventory/cyclonedx20ReadEvidence.d.ts +40 -0
  190. package/types/lib/inventory/cyclonedx20ReadEvidence.d.ts.map +1 -0
  191. package/types/lib/inventory/cyclonedx20ReadSections.d.ts +45 -0
  192. package/types/lib/inventory/cyclonedx20ReadSections.d.ts.map +1 -0
  193. package/types/lib/inventory/cyclonedx20Render.d.ts +53 -0
  194. package/types/lib/inventory/cyclonedx20Render.d.ts.map +1 -0
  195. package/types/lib/inventory/cyclonedx20RenderComponents.d.ts +73 -0
  196. package/types/lib/inventory/cyclonedx20RenderComponents.d.ts.map +1 -0
  197. package/types/lib/inventory/cyclonedx20RenderDefinitions.d.ts +29 -0
  198. package/types/lib/inventory/cyclonedx20RenderDefinitions.d.ts.map +1 -0
  199. package/types/lib/inventory/cyclonedx20RenderEvidence.d.ts +110 -0
  200. package/types/lib/inventory/cyclonedx20RenderEvidence.d.ts.map +1 -0
  201. package/types/lib/inventory/cyclonedx20RenderHardware.d.ts +42 -0
  202. package/types/lib/inventory/cyclonedx20RenderHardware.d.ts.map +1 -0
  203. package/types/lib/inventory/cyclonedx20RenderPatents.d.ts +26 -0
  204. package/types/lib/inventory/cyclonedx20RenderPatents.d.ts.map +1 -0
  205. package/types/lib/inventory/cyclonedx20RenderRefIds.d.ts +55 -0
  206. package/types/lib/inventory/cyclonedx20RenderRefIds.d.ts.map +1 -0
  207. package/types/lib/inventory/cyclonedx20RenderSections.d.ts +45 -0
  208. package/types/lib/inventory/cyclonedx20RenderSections.d.ts.map +1 -0
  209. package/types/lib/inventory/cyclonedx20Tables.d.ts +134 -0
  210. package/types/lib/inventory/cyclonedx20Tables.d.ts.map +1 -0
  211. package/types/lib/inventory/deps.d.ts +35 -2
  212. package/types/lib/inventory/deps.d.ts.map +1 -1
  213. package/types/lib/inventory/dosai.d.ts +19 -0
  214. package/types/lib/inventory/dosai.d.ts.map +1 -1
  215. package/types/lib/inventory/dosaiParsers.d.ts.map +1 -1
  216. package/types/lib/inventory/dotnetRuntime.d.ts +51 -4
  217. package/types/lib/inventory/dotnetRuntime.d.ts.map +1 -1
  218. package/types/lib/inventory/ecosystemFormulationParsers.d.ts +73 -0
  219. package/types/lib/inventory/ecosystemFormulationParsers.d.ts.map +1 -0
  220. package/types/lib/inventory/envcontext.d.ts +22 -6
  221. package/types/lib/inventory/envcontext.d.ts.map +1 -1
  222. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
  223. package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
  224. package/types/lib/inventory/hbom.d.ts +11 -0
  225. package/types/lib/inventory/hbom.d.ts.map +1 -1
  226. package/types/lib/inventory/hbomLoader.d.ts +54 -0
  227. package/types/lib/inventory/hbomLoader.d.ts.map +1 -1
  228. package/types/lib/inventory/jvmLocalRepos.d.ts +5 -1
  229. package/types/lib/inventory/jvmLocalRepos.d.ts.map +1 -1
  230. package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -1
  231. package/types/lib/inventory/occurrenceKey.d.ts +52 -0
  232. package/types/lib/inventory/occurrenceKey.d.ts.map +1 -0
  233. package/types/lib/inventory/pqcMigration.d.ts +84 -0
  234. package/types/lib/inventory/pqcMigration.d.ts.map +1 -0
  235. package/types/lib/inventory/rustFormulationParser.d.ts +7 -2
  236. package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -1
  237. package/types/lib/inventory/scalaCoords.d.ts.map +1 -1
  238. package/types/lib/inventory/scalaDedupe.d.ts +43 -0
  239. package/types/lib/inventory/scalaDedupe.d.ts.map +1 -0
  240. package/types/lib/inventory/source.d.ts +15 -0
  241. package/types/lib/inventory/source.d.ts.map +1 -1
  242. package/types/lib/parsers/huggingfaceManifest.d.ts +10 -1
  243. package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -1
  244. package/types/lib/parsers/huggingfaceUtils.d.ts +12 -0
  245. package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -1
  246. package/types/lib/parsers/kiroPermissions.d.ts +62 -0
  247. package/types/lib/parsers/kiroPermissions.d.ts.map +1 -0
  248. package/types/lib/parsers/vscodeExtensionId.d.ts +48 -0
  249. package/types/lib/parsers/vscodeExtensionId.d.ts.map +1 -0
  250. package/types/lib/server/server.d.ts.map +1 -1
  251. package/types/lib/stages/postgen/postgen.d.ts +7 -0
  252. package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
  253. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  254. package/types/lib/stages/postgen/specVersionCompat.d.ts +25 -0
  255. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -1
  256. package/types/lib/validator/bomValidator.d.ts +5 -1
  257. package/types/lib/validator/bomValidator.d.ts.map +1 -1
  258. package/types/lib/validator/complianceEngine.d.ts +4 -4
  259. package/types/lib/validator/complianceEngine.d.ts.map +1 -1
  260. package/types/lib/validator/complianceRules.d.ts +14 -2
  261. package/types/lib/validator/complianceRules.d.ts.map +1 -1
  262. package/types/lib/validator/index.d.ts +10 -0
  263. package/types/lib/validator/index.d.ts.map +1 -1
  264. package/types/lib/validator/reporters/json.d.ts.map +1 -1
@@ -0,0 +1,857 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "http://cyclonedx.org/schema/cryptography-defs.schema.json",
4
+ "$comment": "2026-09-10T12:56:32Z",
5
+ "title": "Cryptographic Definitions",
6
+ "description": "Enumerates cryptographic algorithm families, elliptic curves, and protocols with their specific metadata.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "$schema": {
11
+ "type": "string"
12
+ },
13
+ "lastUpdated": {
14
+ "type": "string",
15
+ "format": "date-time",
16
+ "title": "Last Updated",
17
+ "description": "The date and time (timestamp) when the data was last updated."
18
+ },
19
+ "algorithms": {
20
+ "type": "array",
21
+ "title": "Algorithm Families",
22
+ "description": "An array of cryptographic algorithm family definitions.",
23
+ "items": {
24
+ "type": "object",
25
+ "title": "Algorithm Family",
26
+ "description": "Defines a cryptographic algorithm family and its metadata.",
27
+ "additionalProperties": false,
28
+ "properties": {
29
+ "family": {
30
+ "type": "string",
31
+ "title": "Algorithm Family",
32
+ "description": "The name of the cryptographic algorithm family."
33
+ },
34
+ "standard": {
35
+ "type": "array",
36
+ "title": "Standards",
37
+ "description": "List of standards defining or relating to the algorithm family.",
38
+ "items": {
39
+ "type": "object",
40
+ "title": "Standard Reference",
41
+ "description": "Reference to a standard, including its name and URL.",
42
+ "additionalProperties": false,
43
+ "properties": {
44
+ "name": {
45
+ "type": "string",
46
+ "title": "Standard Name",
47
+ "description": "The name or identifier of the standard."
48
+ },
49
+ "url": {
50
+ "type": "string",
51
+ "format": "iri-reference",
52
+ "title": "Standard URL",
53
+ "description": "A URL pointing to the standard's official documentation."
54
+ }
55
+ },
56
+ "required": [
57
+ "name",
58
+ "url"
59
+ ]
60
+ }
61
+ },
62
+ "variant": {
63
+ "type": "array",
64
+ "title": "Variants",
65
+ "description": "Defines algorithm variants by a naming pattern and the corresponding cryptographic primitive.",
66
+ "items": {
67
+ "type": "object",
68
+ "title": "Standard Reference",
69
+ "description": "Reference to a standard, including its name and URL.",
70
+ "additionalProperties": false,
71
+ "properties": {
72
+ "pattern": {
73
+ "type": "string",
74
+ "title": "Standard Name",
75
+ "description": "Defines the pattern used to construct the complete algorithm name. Placeholders are defined by {} for algorithm-specific properties."
76
+ },
77
+ "primitive": {
78
+ "type": "string",
79
+ "title": "Primitive",
80
+ "description": "Type of cryptographic primitive (e.g., signature, encryption, hash)."
81
+ },
82
+ "standard": {
83
+ "type": "array",
84
+ "title": "Standards",
85
+ "description": "List of standards defining or relating to the algorithm variant.",
86
+ "items": {
87
+ "type": "object",
88
+ "title": "Standard Reference",
89
+ "description": "Reference to a standard, including its name and URL.",
90
+ "additionalProperties": false,
91
+ "properties": {
92
+ "name": {
93
+ "type": "string",
94
+ "title": "Standard Name",
95
+ "description": "The name or identifier of the standard."
96
+ },
97
+ "url": {
98
+ "type": "string",
99
+ "format": "iri-reference",
100
+ "title": "Standard URL",
101
+ "description": "A URL pointing to the standard's official documentation."
102
+ }
103
+ },
104
+ "required": [
105
+ "name",
106
+ "url"
107
+ ]
108
+ }
109
+ }
110
+ },
111
+ "required": [
112
+ "pattern",
113
+ "primitive"
114
+ ]
115
+ }
116
+ }
117
+ },
118
+ "required": [
119
+ "family",
120
+ "variant"
121
+ ]
122
+ }
123
+ },
124
+ "ellipticCurves": {
125
+ "type": "array",
126
+ "title": "Elliptic Curves",
127
+ "description": "An array of elliptic curve family definitions.",
128
+ "items": {
129
+ "type": "object",
130
+ "title": "Elliptic Curve Family",
131
+ "description": "Defines an elliptic curve family and its metadata.",
132
+ "additionalProperties": false,
133
+ "properties": {
134
+ "name": {
135
+ "type": "string",
136
+ "title": "Curve Family Name",
137
+ "description": "The name of the elliptic curve family."
138
+ },
139
+ "description": {
140
+ "type": [
141
+ "string",
142
+ "null"
143
+ ],
144
+ "title": "Description",
145
+ "description": "A description of the elliptic curve family."
146
+ },
147
+ "curves": {
148
+ "type": "array",
149
+ "title": "Curves",
150
+ "description": "List of curves in this family.",
151
+ "items": {
152
+ "type": "object",
153
+ "title": "Curve",
154
+ "description": "Defines a specific elliptic curve and its metadata.",
155
+ "additionalProperties": false,
156
+ "properties": {
157
+ "name": {
158
+ "type": "string",
159
+ "title": "Curve Name",
160
+ "description": "The name of the elliptic curve."
161
+ },
162
+ "description": {
163
+ "type": [
164
+ "string",
165
+ "null"
166
+ ],
167
+ "title": "Description",
168
+ "description": "A description of the elliptic curve."
169
+ },
170
+ "oid": {
171
+ "type": [
172
+ "string",
173
+ "null"
174
+ ],
175
+ "title": "OID",
176
+ "description": "The Object Identifier (OID) of the elliptic curve."
177
+ },
178
+ "form": {
179
+ "title": "Form",
180
+ "description": "The form of the elliptic curve.",
181
+ "enum": [
182
+ "Weierstrass",
183
+ "Edwards",
184
+ "TwistedEdwards",
185
+ "Montgomery"
186
+ ]
187
+ },
188
+ "aliases": {
189
+ "type": "array",
190
+ "title": "Aliases",
191
+ "description": "List of aliases for this curve.",
192
+ "items": {
193
+ "type": "object",
194
+ "title": "Alias",
195
+ "description": "An alias for the curve.",
196
+ "additionalProperties": false,
197
+ "properties": {
198
+ "category": {
199
+ "type": "string",
200
+ "title": "Category",
201
+ "description": "The category of the alias."
202
+ },
203
+ "name": {
204
+ "type": "string",
205
+ "title": "Name",
206
+ "description": "The name of the alias."
207
+ }
208
+ },
209
+ "required": [
210
+ "category",
211
+ "name"
212
+ ]
213
+ }
214
+ }
215
+ },
216
+ "required": [
217
+ "name",
218
+ "description",
219
+ "oid",
220
+ "form"
221
+ ]
222
+ }
223
+ }
224
+ },
225
+ "required": [
226
+ "name",
227
+ "description",
228
+ "curves"
229
+ ]
230
+ }
231
+ },
232
+ "protocols": {
233
+ "type": "array",
234
+ "title": "Protocol Families",
235
+ "description": "An array of cryptographic protocol family definitions. Each protocol family shall appear at most once, and each version at most once within its family.",
236
+ "items": {
237
+ "type": "object",
238
+ "title": "Protocol Family",
239
+ "description": "Defines a cryptographic protocol family and its metadata.",
240
+ "additionalProperties": false,
241
+ "properties": {
242
+ "family": {
243
+ "$ref": "#/definitions/protocolFamiliesEnum",
244
+ "title": "Protocol Family",
245
+ "description": "The name of the cryptographic protocol family."
246
+ },
247
+ "description": {
248
+ "type": [
249
+ "string",
250
+ "null"
251
+ ],
252
+ "title": "Description",
253
+ "description": "A description of the protocol family."
254
+ },
255
+ "standard": {
256
+ "$ref": "#/definitions/standardRefs",
257
+ "title": "Standards",
258
+ "description": "List of standards defining or relating to the protocol family."
259
+ },
260
+ "version": {
261
+ "type": "array",
262
+ "title": "Versions",
263
+ "description": "List of versions of the protocol family, each with its algorithm composition.",
264
+ "items": {
265
+ "type": "object",
266
+ "title": "Protocol Version",
267
+ "description": "Defines a specific protocol version and its algorithm composition.",
268
+ "additionalProperties": false,
269
+ "properties": {
270
+ "version": {
271
+ "type": "string",
272
+ "title": "Version",
273
+ "description": "The version identifier of the protocol. Together with the protocol family, it identifies this entry: a BOM references it by exact match of protocolProperties.type and protocolProperties.version."
274
+ },
275
+ "standard": {
276
+ "$ref": "#/definitions/standardRefs",
277
+ "title": "Standards",
278
+ "description": "List of standards defining or relating to this protocol version."
279
+ },
280
+ "composition": {
281
+ "type": "array",
282
+ "title": "Composition",
283
+ "description": "The algorithm composition of this protocol version, as a list of functional slots that all apply together. It describes the protocol as specified: the algorithms a conforming implementation can support or negotiate.",
284
+ "items": {
285
+ "$ref": "#/definitions/compositionSlot"
286
+ }
287
+ }
288
+ },
289
+ "required": [
290
+ "version",
291
+ "composition"
292
+ ]
293
+ }
294
+ }
295
+ },
296
+ "required": [
297
+ "family",
298
+ "version"
299
+ ]
300
+ }
301
+ }
302
+ },
303
+ "required": [
304
+ "lastUpdated",
305
+ "algorithms",
306
+ "ellipticCurves"
307
+ ],
308
+ "definitions": {
309
+ "algorithmFamiliesEnum": {
310
+ "title": "Algorithm Families",
311
+ "description": "An enum for the algorithm families.",
312
+ "enum": [
313
+ "3DES",
314
+ "3GPP-XOR",
315
+ "A5/1",
316
+ "A5/2",
317
+ "AES",
318
+ "ANSI-KDF",
319
+ "ARIA",
320
+ "Argon2",
321
+ "Ascon",
322
+ "BLAKE2",
323
+ "BLAKE3",
324
+ "BLS",
325
+ "Blowfish",
326
+ "CAMELLIA",
327
+ "CAST5",
328
+ "CAST6",
329
+ "CMAC",
330
+ "CMEA",
331
+ "CTR_DRBG",
332
+ "ChaCha",
333
+ "ChaCha20",
334
+ "DES",
335
+ "DSA",
336
+ "ECDH",
337
+ "ECDSA",
338
+ "ECIES",
339
+ "EdDSA",
340
+ "ElGamal",
341
+ "FFDH",
342
+ "Fortuna",
343
+ "GOST",
344
+ "HC",
345
+ "HKDF",
346
+ "HMAC",
347
+ "HMAC_DRBG",
348
+ "HPKE",
349
+ "Hash_DRBG",
350
+ "IDEA",
351
+ "IKE-PRF",
352
+ "J-PAKE",
353
+ "LMS",
354
+ "MD2",
355
+ "MD4",
356
+ "MD5",
357
+ "MILENAGE",
358
+ "ML-DSA",
359
+ "ML-KEM",
360
+ "MQV",
361
+ "OPAQUE",
362
+ "PBES1",
363
+ "PBES2",
364
+ "PBKDF1",
365
+ "PBKDF2",
366
+ "PBMAC1",
367
+ "Poly1305",
368
+ "RABBIT",
369
+ "RC2",
370
+ "RC4",
371
+ "RC5",
372
+ "RC6",
373
+ "RIPEMD",
374
+ "RSA-X931",
375
+ "RSAES-OAEP",
376
+ "RSAES-PKCS1",
377
+ "RSASSA-PKCS1",
378
+ "RSASSA-PSS",
379
+ "SEED",
380
+ "SHA-1",
381
+ "SHA-2",
382
+ "SHA-3",
383
+ "SLH-DSA",
384
+ "SM2",
385
+ "SM3",
386
+ "SM4",
387
+ "SM9",
388
+ "SNOW3G",
389
+ "SP800-108",
390
+ "SP800-56C",
391
+ "SPAKE2",
392
+ "SPAKE2PLUS",
393
+ "SRP",
394
+ "SSH-KDF",
395
+ "Salsa20",
396
+ "Serpent",
397
+ "SipHash",
398
+ "Skipjack",
399
+ "TLS-PRF",
400
+ "TUAK",
401
+ "Twofish",
402
+ "UMAC",
403
+ "Whirlpool",
404
+ "X3DH",
405
+ "XMSS",
406
+ "Yarrow",
407
+ "ZUC",
408
+ "bcrypt",
409
+ "scrypt",
410
+ "yescrypt"
411
+ ]
412
+ },
413
+ "ellipticCurvesEnum": {
414
+ "enum": [
415
+ "anssi/FRP256v1",
416
+ "bls/BLS12-377",
417
+ "bls/BLS12-381",
418
+ "bls/BLS12-446",
419
+ "bls/BLS12-455",
420
+ "bls/BLS12-638",
421
+ "bls/BLS24-477",
422
+ "bls/Bandersnatch",
423
+ "bn/bn158",
424
+ "bn/bn190",
425
+ "bn/bn222",
426
+ "bn/bn254",
427
+ "bn/bn286",
428
+ "bn/bn318",
429
+ "bn/bn350",
430
+ "bn/bn382",
431
+ "bn/bn414",
432
+ "bn/bn446",
433
+ "bn/bn478",
434
+ "bn/bn510",
435
+ "bn/bn542",
436
+ "bn/bn574",
437
+ "bn/bn606",
438
+ "bn/bn638",
439
+ "brainpool/brainpoolP160r1",
440
+ "brainpool/brainpoolP160t1",
441
+ "brainpool/brainpoolP192r1",
442
+ "brainpool/brainpoolP192t1",
443
+ "brainpool/brainpoolP224r1",
444
+ "brainpool/brainpoolP224t1",
445
+ "brainpool/brainpoolP256r1",
446
+ "brainpool/brainpoolP256t1",
447
+ "brainpool/brainpoolP320r1",
448
+ "brainpool/brainpoolP320t1",
449
+ "brainpool/brainpoolP384r1",
450
+ "brainpool/brainpoolP384t1",
451
+ "brainpool/brainpoolP512r1",
452
+ "brainpool/brainpoolP512t1",
453
+ "gost/gost256",
454
+ "gost/gost512",
455
+ "gost/id-GostR3410-2001-CryptoPro-A-ParamSet",
456
+ "gost/id-GostR3410-2001-CryptoPro-B-ParamSet",
457
+ "gost/id-GostR3410-2001-CryptoPro-C-ParamSet",
458
+ "gost/id-tc26-gost-3410-12-512-paramSetA",
459
+ "gost/id-tc26-gost-3410-12-512-paramSetB",
460
+ "gost/id-tc26-gost-3410-2012-256-paramSetA",
461
+ "gost/id-tc26-gost-3410-2012-512-paramSetC",
462
+ "mnt/mnt1",
463
+ "mnt/mnt2/1",
464
+ "mnt/mnt2/2",
465
+ "mnt/mnt3/1",
466
+ "mnt/mnt3/2",
467
+ "mnt/mnt3/3",
468
+ "mnt/mnt4",
469
+ "mnt/mnt5/1",
470
+ "mnt/mnt5/2",
471
+ "mnt/mnt5/3",
472
+ "nist/B-163",
473
+ "nist/B-233",
474
+ "nist/B-283",
475
+ "nist/B-409",
476
+ "nist/B-571",
477
+ "nist/K-163",
478
+ "nist/K-233",
479
+ "nist/K-283",
480
+ "nist/K-409",
481
+ "nist/K-571",
482
+ "nist/P-192",
483
+ "nist/P-224",
484
+ "nist/P-256",
485
+ "nist/P-384",
486
+ "nist/P-521",
487
+ "nums/ed-254-mont",
488
+ "nums/ed-255-mers",
489
+ "nums/ed-256-mont",
490
+ "nums/ed-382-mont",
491
+ "nums/ed-383-mers",
492
+ "nums/ed-384-mont",
493
+ "nums/ed-510-mont",
494
+ "nums/ed-511-mers",
495
+ "nums/ed-512-mont",
496
+ "nums/numsp256d1",
497
+ "nums/numsp256t1",
498
+ "nums/numsp384d1",
499
+ "nums/numsp384t1",
500
+ "nums/numsp512d1",
501
+ "nums/numsp512t1",
502
+ "nums/w-254-mont",
503
+ "nums/w-255-mers",
504
+ "nums/w-256-mont",
505
+ "nums/w-382-mont",
506
+ "nums/w-383-mers",
507
+ "nums/w-384-mont",
508
+ "nums/w-510-mont",
509
+ "nums/w-511-mers",
510
+ "nums/w-512-mont",
511
+ "oakley/192-bit Random ECP Group",
512
+ "oakley/224-bit Random ECP Group",
513
+ "oakley/256-bit Random ECP Group",
514
+ "oakley/384-bit Random ECP Group",
515
+ "oakley/521-bit Random ECP Group",
516
+ "oakley/Oakley Group 3",
517
+ "oakley/Oakley Group 4",
518
+ "oscaa/SM2",
519
+ "other/BADA55-R-256",
520
+ "other/BADA55-VPR-224",
521
+ "other/BADA55-VPR2-224",
522
+ "other/BADA55-VR-224",
523
+ "other/BADA55-VR-256",
524
+ "other/BADA55-VR-384",
525
+ "other/Curve1174",
526
+ "other/Curve22103",
527
+ "other/Curve25519",
528
+ "other/Curve383187",
529
+ "other/Curve41417",
530
+ "other/Curve4417",
531
+ "other/Curve448",
532
+ "other/Curve67254",
533
+ "other/E-222",
534
+ "other/E-382",
535
+ "other/E-521",
536
+ "other/Ed25519",
537
+ "other/Ed448",
538
+ "other/Ed448-Goldilocks",
539
+ "other/FourQ",
540
+ "other/Fp224BN",
541
+ "other/Fp254BNa",
542
+ "other/Fp254BNb",
543
+ "other/Fp254n2BNa",
544
+ "other/Fp256BN",
545
+ "other/Fp384BN",
546
+ "other/Fp512BN",
547
+ "other/JubJub",
548
+ "other/M-221",
549
+ "other/M-383",
550
+ "other/M-511",
551
+ "other/MDC201601",
552
+ "other/Pallas",
553
+ "other/Tom-256",
554
+ "other/Tom-384",
555
+ "other/Tom-521",
556
+ "other/Tweedledee",
557
+ "other/Tweedledum",
558
+ "other/Vesta",
559
+ "other/ssc-160",
560
+ "other/ssc-192",
561
+ "other/ssc-224",
562
+ "other/ssc-256",
563
+ "other/ssc-288",
564
+ "other/ssc-320",
565
+ "other/ssc-384",
566
+ "other/ssc-512",
567
+ "secg/secp112r1",
568
+ "secg/secp112r2",
569
+ "secg/secp128r1",
570
+ "secg/secp128r2",
571
+ "secg/secp160k1",
572
+ "secg/secp160r1",
573
+ "secg/secp160r2",
574
+ "secg/secp192k1",
575
+ "secg/secp192r1",
576
+ "secg/secp224k1",
577
+ "secg/secp224r1",
578
+ "secg/secp256k1",
579
+ "secg/secp256r1",
580
+ "secg/secp384r1",
581
+ "secg/secp521r1",
582
+ "secg/sect113r1",
583
+ "secg/sect113r2",
584
+ "secg/sect131r1",
585
+ "secg/sect131r2",
586
+ "secg/sect163k1",
587
+ "secg/sect163r1",
588
+ "secg/sect163r2",
589
+ "secg/sect193r1",
590
+ "secg/sect193r2",
591
+ "secg/sect233k1",
592
+ "secg/sect233r1",
593
+ "secg/sect239k1",
594
+ "secg/sect283k1",
595
+ "secg/sect283r1",
596
+ "secg/sect409k1",
597
+ "secg/sect409r1",
598
+ "secg/sect571k1",
599
+ "secg/sect571r1",
600
+ "wtls/wap-wsg-idm-ecid-wtls1",
601
+ "wtls/wap-wsg-idm-ecid-wtls10",
602
+ "wtls/wap-wsg-idm-ecid-wtls11",
603
+ "wtls/wap-wsg-idm-ecid-wtls12",
604
+ "wtls/wap-wsg-idm-ecid-wtls3",
605
+ "wtls/wap-wsg-idm-ecid-wtls4",
606
+ "wtls/wap-wsg-idm-ecid-wtls5",
607
+ "wtls/wap-wsg-idm-ecid-wtls6",
608
+ "wtls/wap-wsg-idm-ecid-wtls7",
609
+ "wtls/wap-wsg-idm-ecid-wtls8",
610
+ "wtls/wap-wsg-idm-ecid-wtls9",
611
+ "x962/c2onb191v4",
612
+ "x962/c2onb191v5",
613
+ "x962/c2onb239v4",
614
+ "x962/c2onb239v5",
615
+ "x962/c2pnb163v1",
616
+ "x962/c2pnb163v2",
617
+ "x962/c2pnb163v3",
618
+ "x962/c2pnb176w1",
619
+ "x962/c2pnb208w1",
620
+ "x962/c2pnb272w1",
621
+ "x962/c2pnb304w1",
622
+ "x962/c2pnb368w1",
623
+ "x962/c2tnb191v1",
624
+ "x962/c2tnb191v2",
625
+ "x962/c2tnb191v3",
626
+ "x962/c2tnb239v1",
627
+ "x962/c2tnb239v2",
628
+ "x962/c2tnb239v3",
629
+ "x962/c2tnb359v1",
630
+ "x962/c2tnb431r1",
631
+ "x962/prime192v1",
632
+ "x962/prime192v2",
633
+ "x962/prime192v3",
634
+ "x962/prime239v1",
635
+ "x962/prime239v2",
636
+ "x962/prime239v3",
637
+ "x962/prime256v1",
638
+ "x963/ansip160k1",
639
+ "x963/ansip160r1",
640
+ "x963/ansip160r2",
641
+ "x963/ansip192k1",
642
+ "x963/ansip224k1",
643
+ "x963/ansip224r1",
644
+ "x963/ansip256k1",
645
+ "x963/ansip384r1",
646
+ "x963/ansip521r1",
647
+ "x963/ansit163k1",
648
+ "x963/ansit163r1",
649
+ "x963/ansit163r2",
650
+ "x963/ansit193r1",
651
+ "x963/ansit193r2",
652
+ "x963/ansit233k1",
653
+ "x963/ansit233r1",
654
+ "x963/ansit239k1",
655
+ "x963/ansit283k1",
656
+ "x963/ansit283r1",
657
+ "x963/ansit409k1",
658
+ "x963/ansit409r1",
659
+ "x963/ansit571k1",
660
+ "x963/ansit571r1"
661
+ ]
662
+ },
663
+ "protocolFamiliesEnum": {
664
+ "title": "Protocol Families",
665
+ "description": "An enum for the protocol families.",
666
+ "enum": [
667
+ "5g-aka",
668
+ "ah",
669
+ "dtls",
670
+ "eap-aka",
671
+ "eap-aka-prime",
672
+ "esp",
673
+ "ike",
674
+ "ipsec",
675
+ "prins",
676
+ "quic",
677
+ "ssh",
678
+ "sstp",
679
+ "tls",
680
+ "wpa"
681
+ ],
682
+ "meta:enum": {
683
+ "5g-aka": "Authentication and Key Agreement for 5G.",
684
+ "ah": "Authentication Header.",
685
+ "dtls": "Datagram Transport Layer Security.",
686
+ "eap-aka": "Extensible Authentication Protocol variant.",
687
+ "eap-aka-prime": "Enhanced version of EAP-AKA.",
688
+ "esp": "Encapsulating Security Payload.",
689
+ "ike": "Internet Key Exchange.",
690
+ "ipsec": "Internet Protocol Security.",
691
+ "prins": "Protection of Inter-Network Signaling.",
692
+ "quic": "Quick UDP Internet Connections.",
693
+ "ssh": "Secure Shell.",
694
+ "sstp": "Secure Socket Tunneling Protocol.",
695
+ "tls": "Transport Layer Security.",
696
+ "wpa": "Wi-Fi Protected Access."
697
+ }
698
+ },
699
+ "standardRefs": {
700
+ "type": "array",
701
+ "title": "Standards",
702
+ "description": "List of references to standards or registries.",
703
+ "items": {
704
+ "type": "object",
705
+ "title": "Standard Reference",
706
+ "description": "Reference to a standard or registry, including its name and URL.",
707
+ "additionalProperties": false,
708
+ "properties": {
709
+ "name": {
710
+ "type": "string",
711
+ "title": "Standard Name",
712
+ "description": "The name or identifier of the standard."
713
+ },
714
+ "url": {
715
+ "type": "string",
716
+ "format": "iri-reference",
717
+ "title": "Standard URL",
718
+ "description": "A URL pointing to the standard's official documentation."
719
+ }
720
+ },
721
+ "required": [
722
+ "name",
723
+ "url"
724
+ ]
725
+ }
726
+ },
727
+ "compositionSlot": {
728
+ "type": "object",
729
+ "title": "Composition Slot",
730
+ "description": "A functional slot of a protocol, holding the set of algorithms that can fill it. All slots of a composition apply together; within a slot, the selection states how many algorithms of the set are used at runtime.",
731
+ "additionalProperties": false,
732
+ "properties": {
733
+ "role": {
734
+ "type": "string",
735
+ "title": "Role",
736
+ "description": "The functional role this slot fills within the protocol.",
737
+ "examples": [
738
+ "authentication",
739
+ "cert-chain-signature",
740
+ "encryption",
741
+ "integrity",
742
+ "kdf",
743
+ "key-exchange",
744
+ "prf",
745
+ "signature"
746
+ ]
747
+ },
748
+ "selection": {
749
+ "title": "Selection",
750
+ "description": "Specifies how many algorithms of the set are used at runtime: all of them together (all-of), one or more, possibly simultaneously (any-of), or exactly one (one-of).",
751
+ "enum": [
752
+ "all-of",
753
+ "any-of",
754
+ "one-of"
755
+ ]
756
+ },
757
+ "selectedBy": {
758
+ "title": "Selected By",
759
+ "description": "Specifies the mechanism by which the algorithms used at runtime are selected from the set: fixed by the protocol specification itself (protocol-fixed), fixed when the software is built (build-time), chosen by configuration (configuration), agreed between the parties at runtime (negotiation), or not known (unknown).",
760
+ "enum": [
761
+ "build-time",
762
+ "configuration",
763
+ "negotiation",
764
+ "protocol-fixed",
765
+ "unknown"
766
+ ]
767
+ },
768
+ "selectingParty": {
769
+ "type": "string",
770
+ "title": "Selecting Party",
771
+ "description": "The party of the protocol that makes the selection, named by its role in the protocol.",
772
+ "examples": [
773
+ "client",
774
+ "server",
775
+ "initiator",
776
+ "responder",
777
+ "group-creator"
778
+ ]
779
+ },
780
+ "algorithmSet": {
781
+ "$ref": "#/definitions/algorithmSet",
782
+ "title": "Algorithm Set",
783
+ "description": "The set of algorithms that can fill this slot."
784
+ }
785
+ },
786
+ "required": [
787
+ "role",
788
+ "selection",
789
+ "algorithmSet"
790
+ ]
791
+ },
792
+ "algorithmSet": {
793
+ "type": "array",
794
+ "title": "Algorithm Set",
795
+ "description": "The set of algorithms that can fill a composition slot. How many of them are used at runtime is stated by the slot's selection. Each member is the concrete name of an algorithm, a named bundle of algorithms, or a reference to a sub-protocol.",
796
+ "items": {
797
+ "title": "Algorithm Set Member",
798
+ "description": "A member of an algorithm set: an algorithm name, a named bundle, or a sub-protocol reference.",
799
+ "oneOf": [
800
+ {
801
+ "type": "string",
802
+ "title": "Algorithm Name",
803
+ "description": "The concrete algorithm name. The name shall match at least one variant pattern of an algorithm family defined in this document; a name matching no variant pattern does not resolve against this registry."
804
+ },
805
+ {
806
+ "type": "object",
807
+ "title": "Named Bundle",
808
+ "description": "A named bundle of algorithms, such as a cipher suite or a hybrid key exchange group: it is selected as one unit, and all bundled algorithms are used together.",
809
+ "additionalProperties": false,
810
+ "properties": {
811
+ "name": {
812
+ "type": "string",
813
+ "title": "Bundle Name",
814
+ "description": "The common name of the bundle, preferably the identifier assigned by the registry of the protocol, such as the IANA-registered cipher suite or named group, so that names observed in a BOM resolve against this document."
815
+ },
816
+ "algorithms": {
817
+ "type": "array",
818
+ "title": "Bundled Algorithms",
819
+ "description": "The concrete names of the algorithms composing this bundle, each matching a variant pattern of an algorithm family defined in this document.",
820
+ "items": {
821
+ "type": "string",
822
+ "title": "Algorithm Name",
823
+ "description": "The concrete algorithm name. The name shall match at least one variant pattern of an algorithm family defined in this document; a name matching no variant pattern does not resolve against this registry."
824
+ }
825
+ }
826
+ },
827
+ "required": [
828
+ "name",
829
+ "algorithms"
830
+ ]
831
+ },
832
+ {
833
+ "type": "object",
834
+ "title": "Sub-Protocol Reference",
835
+ "description": "A reference to a sub-protocol, by protocol family and optionally version. The composition of the sub-protocol is given by its own protocol entry in this document, which may itself reference further sub-protocols.",
836
+ "additionalProperties": false,
837
+ "properties": {
838
+ "protocol": {
839
+ "$ref": "#/definitions/protocolFamiliesEnum",
840
+ "title": "Protocol Family",
841
+ "description": "The protocol family of the referenced sub-protocol."
842
+ },
843
+ "version": {
844
+ "type": "string",
845
+ "title": "Version",
846
+ "description": "The version of the referenced sub-protocol."
847
+ }
848
+ },
849
+ "required": [
850
+ "protocol"
851
+ ]
852
+ }
853
+ ]
854
+ }
855
+ }
856
+ }
857
+ }