@elizaos/skills 2.0.0-alpha.21 → 2.0.0-alpha.210

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 (373) hide show
  1. package/README.md +4 -0
  2. package/dist/frontmatter.d.ts +13 -1
  3. package/dist/frontmatter.d.ts.map +1 -1
  4. package/dist/frontmatter.js +51 -1
  5. package/dist/index.d.ts +3 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -2
  8. package/dist/loader.d.ts.map +1 -1
  9. package/dist/loader.js +10 -3
  10. package/dist/resolver.d.ts +17 -0
  11. package/dist/resolver.d.ts.map +1 -1
  12. package/dist/resolver.js +54 -1
  13. package/dist/types.d.ts +38 -1
  14. package/dist/types.d.ts.map +1 -1
  15. package/package.json +57 -53
  16. package/skills/eliza-app-development/SKILL.md +62 -0
  17. package/skills/eliza-app-development/references/repo-map.md +70 -0
  18. package/skills/eliza-app-development/references/runtime-and-cloud.md +61 -0
  19. package/skills/eliza-cloud/SKILL.md +39 -0
  20. package/skills/eliza-cloud/references/apps-and-containers.md +73 -0
  21. package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +99 -0
  22. package/skills/elizaos/SKILL.md +27 -0
  23. package/skills/elizaos/references/core-abstractions.md +101 -0
  24. package/skills/elizaos/references/plugin-development.md +74 -0
  25. package/skills/yara-authoring/SKILL.md +111 -0
  26. package/skills/bear-notes/SKILL.md +0 -107
  27. package/skills/bird/SKILL.md +0 -224
  28. package/skills/blogwatcher/SKILL.md +0 -69
  29. package/skills/clawhub/SKILL.md +0 -77
  30. package/skills/crow/SKILL.md +0 -261
  31. package/skills/crow/references/api-reference.md +0 -370
  32. package/skills/crow/references/card-payments.md +0 -124
  33. package/skills/crow/references/error-handling.md +0 -154
  34. package/skills/crow/references/x402-flow.md +0 -170
  35. package/skills/eightctl/SKILL.md +0 -50
  36. package/skills/food-order/SKILL.md +0 -48
  37. package/skills/gemini/SKILL.md +0 -43
  38. package/skills/gifgrep/SKILL.md +0 -79
  39. package/skills/gog/SKILL.md +0 -116
  40. package/skills/goplaces/SKILL.md +0 -52
  41. package/skills/himalaya/SKILL.md +0 -257
  42. package/skills/himalaya/references/configuration.md +0 -184
  43. package/skills/himalaya/references/message-composition.md +0 -199
  44. package/skills/local-places/SERVER_README.md +0 -101
  45. package/skills/local-places/SKILL.md +0 -102
  46. package/skills/local-places/pyproject.toml +0 -21
  47. package/skills/local-places/src/local_places/__init__.py +0 -2
  48. package/skills/local-places/src/local_places/google_places.py +0 -314
  49. package/skills/local-places/src/local_places/main.py +0 -65
  50. package/skills/local-places/src/local_places/schemas.py +0 -107
  51. package/skills/mcporter/SKILL.md +0 -61
  52. package/skills/model-usage/SKILL.md +0 -69
  53. package/skills/model-usage/references/codexbar-cli.md +0 -33
  54. package/skills/model-usage/scripts/model_usage.py +0 -310
  55. package/skills/nightmarket/SKILL.md +0 -145
  56. package/skills/nightmarket/references/api.md +0 -176
  57. package/skills/nightmarket/references/crow-payments.md +0 -67
  58. package/skills/nightmarket/references/mcp.md +0 -53
  59. package/skills/openai-image-gen/SKILL.md +0 -89
  60. package/skills/openai-image-gen/scripts/gen.py +0 -240
  61. package/skills/openai-whisper/SKILL.md +0 -38
  62. package/skills/openai-whisper-api/SKILL.md +0 -52
  63. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  64. package/skills/openhue/SKILL.md +0 -51
  65. package/skills/oracle/SKILL.md +0 -125
  66. package/skills/peekaboo/SKILL.md +0 -190
  67. package/skills/sag/SKILL.md +0 -87
  68. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +0 -10
  69. package/skills/security-ask-questions-if-underspecified/README.md +0 -24
  70. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +0 -85
  71. package/skills/security-audit-context-building/.claude-plugin/plugin.json +0 -10
  72. package/skills/security-audit-context-building/README.md +0 -58
  73. package/skills/security-audit-context-building/commands/audit-context.md +0 -21
  74. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +0 -297
  75. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +0 -47
  76. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +0 -355
  77. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +0 -71
  78. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +0 -10
  79. package/skills/security-building-secure-contracts/README.md +0 -241
  80. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +0 -284
  81. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -405
  82. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +0 -409
  83. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +0 -329
  84. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -722
  85. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +0 -218
  86. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +0 -355
  87. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +0 -248
  88. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +0 -33
  89. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +0 -334
  90. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -740
  91. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +0 -252
  92. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +0 -329
  93. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +0 -118
  94. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +0 -298
  95. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +0 -161
  96. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +0 -279
  97. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +0 -132
  98. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +0 -389
  99. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -669
  100. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +0 -298
  101. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -791
  102. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +0 -362
  103. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +0 -571
  104. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +0 -141
  105. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +0 -388
  106. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -595
  107. package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +0 -10
  108. package/skills/security-burpsuite-project-parser/README.md +0 -103
  109. package/skills/security-burpsuite-project-parser/commands/burp-search.md +0 -18
  110. package/skills/security-burpsuite-project-parser/skills/SKILL.md +0 -358
  111. package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +0 -99
  112. package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +0 -8
  113. package/skills/security-claude-in-chrome-troubleshooting/README.md +0 -31
  114. package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +0 -251
  115. package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +0 -9
  116. package/skills/security-constant-time-analysis/README.md +0 -381
  117. package/skills/security-constant-time-analysis/commands/ct-check.md +0 -20
  118. package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +0 -49
  119. package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +0 -1284
  120. package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +0 -3081
  121. package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +0 -1
  122. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +0 -1397
  123. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +0 -205
  124. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +0 -181
  125. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +0 -74
  126. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +0 -78
  127. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +0 -92
  128. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +0 -174
  129. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +0 -161
  130. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +0 -181
  131. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +0 -140
  132. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +0 -252
  133. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +0 -188
  134. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +0 -199
  135. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +0 -154
  136. package/skills/security-constant-time-analysis/pyproject.toml +0 -52
  137. package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +0 -90
  138. package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +0 -219
  139. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +0 -129
  140. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +0 -136
  141. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +0 -252
  142. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +0 -172
  143. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +0 -179
  144. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +0 -198
  145. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +0 -288
  146. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +0 -354
  147. package/skills/security-constant-time-analysis/uv.lock +0 -8
  148. package/skills/security-culture-index/.claude-plugin/plugin.json +0 -8
  149. package/skills/security-culture-index/README.md +0 -79
  150. package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +0 -293
  151. package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +0 -255
  152. package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +0 -408
  153. package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +0 -253
  154. package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +0 -158
  155. package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +0 -147
  156. package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +0 -307
  157. package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +0 -228
  158. package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +0 -148
  159. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +0 -108
  160. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +0 -20
  161. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +0 -122
  162. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +0 -187
  163. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +0 -16
  164. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +0 -520
  165. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +0 -237
  166. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +0 -18
  167. package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +0 -113
  168. package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +0 -103
  169. package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +0 -127
  170. package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +0 -85
  171. package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +0 -165
  172. package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +0 -109
  173. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +0 -188
  174. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +0 -267
  175. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +0 -188
  176. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +0 -220
  177. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +0 -206
  178. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +0 -121
  179. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +0 -183
  180. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +0 -234
  181. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +0 -306
  182. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +0 -322
  183. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +0 -250
  184. package/skills/security-differential-review/.claude-plugin/plugin.json +0 -10
  185. package/skills/security-differential-review/README.md +0 -109
  186. package/skills/security-differential-review/commands/diff-review.md +0 -21
  187. package/skills/security-differential-review/skills/differential-review/SKILL.md +0 -220
  188. package/skills/security-differential-review/skills/differential-review/adversarial.md +0 -203
  189. package/skills/security-differential-review/skills/differential-review/methodology.md +0 -234
  190. package/skills/security-differential-review/skills/differential-review/patterns.md +0 -300
  191. package/skills/security-differential-review/skills/differential-review/reporting.md +0 -369
  192. package/skills/security-dwarf-expert/.claude-plugin/plugin.json +0 -10
  193. package/skills/security-dwarf-expert/README.md +0 -38
  194. package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +0 -93
  195. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +0 -31
  196. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +0 -50
  197. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +0 -8
  198. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +0 -10
  199. package/skills/security-entry-point-analyzer/README.md +0 -74
  200. package/skills/security-entry-point-analyzer/commands/entry-points.md +0 -18
  201. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +0 -251
  202. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +0 -182
  203. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +0 -107
  204. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +0 -87
  205. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +0 -155
  206. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +0 -135
  207. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +0 -185
  208. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +0 -141
  209. package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +0 -10
  210. package/skills/security-firebase-apk-scanner/README.md +0 -85
  211. package/skills/security-firebase-apk-scanner/commands/scan-apk.md +0 -18
  212. package/skills/security-firebase-apk-scanner/scanner.sh +0 -1408
  213. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +0 -197
  214. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +0 -803
  215. package/skills/security-fix-review/.claude-plugin/plugin.json +0 -13
  216. package/skills/security-fix-review/README.md +0 -118
  217. package/skills/security-fix-review/commands/fix-review.md +0 -24
  218. package/skills/security-fix-review/skills/fix-review/SKILL.md +0 -264
  219. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +0 -408
  220. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +0 -298
  221. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +0 -398
  222. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +0 -10
  223. package/skills/security-insecure-defaults/README.md +0 -45
  224. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +0 -117
  225. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +0 -409
  226. package/skills/security-modern-python/.claude-plugin/plugin.json +0 -10
  227. package/skills/security-modern-python/README.md +0 -58
  228. package/skills/security-modern-python/hooks/hooks.json +0 -16
  229. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +0 -388
  230. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +0 -109
  231. package/skills/security-modern-python/hooks/test_helper.bash +0 -75
  232. package/skills/security-modern-python/skills/modern-python/SKILL.md +0 -333
  233. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +0 -43
  234. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +0 -141
  235. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +0 -259
  236. package/skills/security-modern-python/skills/modern-python/references/prek.md +0 -211
  237. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +0 -254
  238. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +0 -240
  239. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +0 -255
  240. package/skills/security-modern-python/skills/modern-python/references/testing.md +0 -284
  241. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +0 -200
  242. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +0 -36
  243. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +0 -66
  244. package/skills/security-property-based-testing/.claude-plugin/plugin.json +0 -9
  245. package/skills/security-property-based-testing/README.md +0 -47
  246. package/skills/security-property-based-testing/skills/property-based-testing/README.md +0 -88
  247. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +0 -109
  248. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +0 -191
  249. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +0 -200
  250. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +0 -130
  251. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +0 -181
  252. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +0 -209
  253. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +0 -124
  254. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +0 -8
  255. package/skills/semgrep-rule-creator/README.md +0 -43
  256. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +0 -26
  257. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +0 -168
  258. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +0 -203
  259. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +0 -240
  260. package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +0 -9
  261. package/skills/semgrep-rule-variant-creator/README.md +0 -86
  262. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +0 -205
  263. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +0 -250
  264. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +0 -324
  265. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +0 -518
  266. package/skills/session-logs/SKILL.md +0 -115
  267. package/skills/sharp-edges/.claude-plugin/plugin.json +0 -10
  268. package/skills/sharp-edges/README.md +0 -48
  269. package/skills/sharp-edges/SKILL.md +0 -292
  270. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +0 -292
  271. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +0 -252
  272. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +0 -274
  273. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +0 -333
  274. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +0 -190
  275. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +0 -205
  276. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +0 -285
  277. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +0 -270
  278. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +0 -263
  279. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +0 -269
  280. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +0 -265
  281. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +0 -245
  282. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +0 -274
  283. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +0 -273
  284. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +0 -272
  285. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +0 -287
  286. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +0 -588
  287. package/skills/sherpa-onnx-tts/SKILL.md +0 -103
  288. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  289. package/skills/songsee/SKILL.md +0 -49
  290. package/skills/sonoscli/SKILL.md +0 -46
  291. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +0 -10
  292. package/skills/spec-to-code-compliance/README.md +0 -67
  293. package/skills/spec-to-code-compliance/SKILL.md +0 -349
  294. package/skills/spec-to-code-compliance/commands/spec-compliance.md +0 -22
  295. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +0 -349
  296. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +0 -69
  297. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +0 -417
  298. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +0 -105
  299. package/skills/static-analysis/.claude-plugin/plugin.json +0 -8
  300. package/skills/static-analysis/README.md +0 -59
  301. package/skills/static-analysis/SKILL.md +0 -91
  302. package/skills/static-analysis/skills/codeql/SKILL.md +0 -315
  303. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +0 -479
  304. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +0 -162
  305. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +0 -331
  306. package/skills/static-analysis/skills/semgrep/SKILL.md +0 -337
  307. package/skills/summarize/SKILL.md +0 -87
  308. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +0 -8
  309. package/skills/testing-handbook-skills/README.md +0 -241
  310. package/skills/testing-handbook-skills/SKILL.md +0 -104
  311. package/skills/testing-handbook-skills/scripts/pyproject.toml +0 -8
  312. package/skills/testing-handbook-skills/scripts/validate-skills.py +0 -657
  313. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +0 -341
  314. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +0 -640
  315. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +0 -522
  316. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +0 -460
  317. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +0 -552
  318. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +0 -512
  319. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +0 -612
  320. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +0 -303
  321. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +0 -433
  322. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +0 -621
  323. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +0 -632
  324. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +0 -795
  325. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +0 -434
  326. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +0 -443
  327. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +0 -605
  328. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +0 -372
  329. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +0 -280
  330. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +0 -452
  331. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +0 -504
  332. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +0 -454
  333. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +0 -527
  334. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +0 -366
  335. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +0 -482
  336. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +0 -539
  337. package/skills/variant-analysis/.claude-plugin/plugin.json +0 -8
  338. package/skills/variant-analysis/README.md +0 -41
  339. package/skills/variant-analysis/commands/variants.md +0 -23
  340. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +0 -327
  341. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +0 -142
  342. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +0 -119
  343. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +0 -69
  344. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +0 -71
  345. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +0 -63
  346. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +0 -80
  347. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +0 -98
  348. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +0 -63
  349. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +0 -61
  350. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +0 -60
  351. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +0 -72
  352. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +0 -75
  353. package/skills/video-frames/SKILL.md +0 -46
  354. package/skills/video-frames/scripts/frame.sh +0 -81
  355. package/skills/voice-call/SKILL.md +0 -45
  356. package/skills/yara-authoring/.claude-plugin/plugin.json +0 -9
  357. package/skills/yara-authoring/README.md +0 -131
  358. package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +0 -645
  359. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +0 -99
  360. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +0 -170
  361. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +0 -103
  362. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +0 -134
  363. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +0 -185
  364. package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +0 -214
  365. package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +0 -383
  366. package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +0 -333
  367. package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +0 -433
  368. package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +0 -257
  369. package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +0 -399
  370. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +0 -526
  371. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +0 -25
  372. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +0 -631
  373. package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +0 -493
@@ -1,205 +0,0 @@
1
- /**
2
- * Excerpt from bn.js - BigNumber library
3
- * https://github.com/indutny/bn.js
4
- *
5
- * This excerpt demonstrates common timing vulnerability patterns
6
- * in JavaScript cryptographic libraries.
7
- */
8
-
9
- // Division operations - use hardware division which has variable timing
10
- BN.prototype.div = function div(num) {
11
- return this.divmod(num, 'div', false).div;
12
- };
13
-
14
- BN.prototype.mod = function mod(num) {
15
- return this.divmod(num, 'mod', false).mod;
16
- };
17
-
18
- BN.prototype.umod = function umod(num) {
19
- return this.divmod(num, 'mod', true).mod;
20
- };
21
-
22
- // Comparison function - early-exit on sign differences leaks timing
23
- BN.prototype.cmp = function cmp(num) {
24
- if (this.negative !== 0 && num.negative === 0) return -1;
25
- if (this.negative === 0 && num.negative !== 0) return 1;
26
-
27
- var res = this.ucmp(num);
28
- if (this.negative !== 0) return -res | 0;
29
- return res;
30
- };
31
-
32
- // Unsigned comparison - iterates until difference found (timing leak)
33
- BN.prototype.ucmp = function ucmp(num) {
34
- if (this.length > num.length) return 1;
35
- if (this.length < num.length) return -1;
36
-
37
- var res = 0;
38
- for (var i = this.length - 1; i >= 0; i--) {
39
- var a = this.words[i] | 0;
40
- var b = num.words[i] | 0;
41
- if (a === b) continue; // Early exit - timing leak!
42
- if (a < b) {
43
- res = -1;
44
- } else if (a > b) {
45
- res = 1;
46
- }
47
- break;
48
- }
49
- return res;
50
- };
51
-
52
- // Modular exponentiation - windowed method with data-dependent branches
53
- Red.prototype.pow = function pow(a, num) {
54
- if (num.isZero()) return new BN(1).toRed(this);
55
- if (num.cmpn(1) === 0) return a.clone();
56
-
57
- var windowSize = 4;
58
- var wnd = new Array(1 << windowSize);
59
- wnd[0] = new BN(1).toRed(this);
60
- wnd[1] = a;
61
- for (var i = 2; i < wnd.length; i++) {
62
- wnd[i] = this.mul(wnd[i - 1], a);
63
- }
64
-
65
- var res = wnd[0];
66
- var current = 0;
67
- var currentLen = 0;
68
- var start = num.bitLength() % 26;
69
- if (start === 0) {
70
- start = 26;
71
- }
72
-
73
- for (i = num.length - 1; i >= 0; i--) {
74
- var word = num.words[i];
75
- for (var j = start - 1; j >= 0; j--) {
76
- var bit = (word >> j) & 1;
77
- if (res !== wnd[0]) {
78
- res = this.sqr(res);
79
- }
80
- // Data-dependent branch on secret exponent bit!
81
- if (bit === 0 && current === 0) {
82
- currentLen = 0;
83
- continue;
84
- }
85
- current <<= 1;
86
- current |= bit;
87
- currentLen++;
88
- if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
89
- res = this.mul(res, wnd[current]);
90
- currentLen = 0;
91
- current = 0;
92
- }
93
- start = 26;
94
- }
95
-
96
- return res;
97
- };
98
-
99
- // Division with remainder - internally uses variable-time division
100
- BN.prototype.divmod = function divmod(num, mode, positive) {
101
- if (num.isZero()) {
102
- throw new Error('division by zero');
103
- }
104
-
105
- if (this.isZero()) {
106
- return {
107
- div: new BN(0),
108
- mod: new BN(0)
109
- };
110
- }
111
-
112
- var div, mod, res;
113
- if (this.negative !== 0 && num.negative === 0) {
114
- res = this.neg().divmod(num, mode);
115
- if (mode !== 'mod') {
116
- div = res.div.neg();
117
- }
118
- if (mode !== 'div') {
119
- mod = res.mod.neg();
120
- if (positive && mod.negative !== 0) {
121
- mod.iadd(num);
122
- }
123
- }
124
- return { div: div, mod: mod };
125
- }
126
-
127
- // Uses division internally
128
- if (this.length > num.length || this.cmp(num) >= 0) {
129
- // Variable-time long division algorithm
130
- var shift = num.bitLength() - this.bitLength();
131
- // ... implementation uses / and % operators
132
- }
133
-
134
- return { div: div, mod: mod };
135
- };
136
-
137
- // Montgomery reduction - uses modular operations
138
- Mont.prototype.mul = function mul(a, b) {
139
- if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
140
-
141
- var t = a.mul(b);
142
- // Uses mod operation internally
143
- var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
144
- var u = t.isub(c).iushrn(this.shift);
145
- var res = u;
146
-
147
- if (u.cmp(this.m) >= 0) {
148
- res = u.isub(this.m);
149
- } else if (u.cmpn(0) < 0) {
150
- res = u.iadd(this.m);
151
- }
152
-
153
- return res._forceRed(this);
154
- };
155
-
156
- // Modular inverse - uses extended Euclidean algorithm with data-dependent iterations
157
- BN.prototype.invm = function invm(num) {
158
- return this.egcd(num).a.umod(num);
159
- };
160
-
161
- BN.prototype._invmp = function _invmp(p) {
162
- var a = this;
163
- var b = p.clone();
164
-
165
- if (a.negative !== 0) {
166
- a = a.umod(p);
167
- } else {
168
- a = a.clone();
169
- }
170
-
171
- var x1 = new BN(1);
172
- var x2 = new BN(0);
173
-
174
- // Iterations depend on input values - timing leak
175
- while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
176
- // ... iteration count reveals information about inputs
177
- }
178
-
179
- return res;
180
- };
181
-
182
- // Test function to prevent dead code elimination
183
- function runBnOperations() {
184
- var a = new BN('deadbeef', 16);
185
- var b = new BN('cafebabe', 16);
186
-
187
- // These operations have timing leaks
188
- var divResult = a.div(b);
189
- var modResult = a.mod(b);
190
- var cmpResult = a.cmp(b);
191
-
192
- console.log('Division:', divResult.toString(16));
193
- console.log('Modulo:', modResult.toString(16));
194
- console.log('Comparison:', cmpResult);
195
- }
196
-
197
- // Stub for BN constructor
198
- function BN(number, base) {
199
- this.words = [];
200
- this.length = 0;
201
- this.negative = 0;
202
- }
203
-
204
- function Red() {}
205
- function Mont() {}
@@ -1,181 +0,0 @@
1
- /**
2
- * Constant-time implementation of ML-DSA Decompose (Algorithm 36)
3
- *
4
- * This implementation avoids hardware division by using Barrett reduction
5
- * and branchless conditional selection, ensuring constant-time execution.
6
- *
7
- * Based on Trail of Bits' ML-DSA implementation.
8
- */
9
-
10
- #include <stdint.h>
11
- #include <stddef.h>
12
-
13
- // ML-DSA parameters
14
- #define Q 8380417
15
- #define GAMMA2_87 ((Q - 1) / 32) // 261888 for ML-DSA-87
16
- #define GAMMA2_44 ((Q - 1) / 88) // 95232 for ML-DSA-44/65
17
-
18
- // Barrett reduction constants for different gamma2 values
19
- // These allow division by 2*gamma2 without using DIV instruction
20
- // Computed as: ceil(2^32 / (2 * gamma2))
21
- #define BARRETT_MU_87 0x2081ULL // For gamma2 = 261888 (ML-DSA-87): 2^32 / 523776
22
- #define BARRETT_MU_44 0x5A1DULL // For gamma2 = 95232 (ML-DSA-44/65): 2^32 / 190464
23
-
24
- // Constant-time helper: returns 1 if x != 0, 0 otherwise
25
- static inline uint32_t ct_is_nonzero(uint32_t x) {
26
- return (x | (uint32_t)(-(int32_t)x)) >> 31;
27
- }
28
-
29
- // Constant-time helper: returns 1 if x == 0, 0 otherwise
30
- static inline uint32_t ct_is_zero(uint32_t x) {
31
- return 1 ^ ct_is_nonzero(x);
32
- }
33
-
34
- // Constant-time helper: returns 1 if x < y (unsigned), 0 otherwise
35
- static inline uint32_t ct_lt(uint32_t x, uint32_t y) {
36
- return (x ^ ((x ^ y) | ((x - y) ^ y))) >> 31;
37
- }
38
-
39
- // Constant-time helper: returns 1 if x > y (unsigned), 0 otherwise
40
- static inline uint32_t ct_gt(uint32_t x, uint32_t y) {
41
- return ct_lt(y, x);
42
- }
43
-
44
- // Constant-time helper: returns mask (0xFFFFFFFF if bit != 0, 0 otherwise)
45
- static inline uint32_t ct_mask(uint32_t bit) {
46
- return (uint32_t)(-(int32_t)ct_is_nonzero(bit));
47
- }
48
-
49
- // Constant-time helper: select x if bit != 0, y otherwise
50
- static inline uint32_t ct_select(uint32_t x, uint32_t y, uint32_t bit) {
51
- uint32_t m = ct_mask(bit);
52
- return (x & m) | (y & ~m);
53
- }
54
-
55
- // Constant-time helper: select x if bit != 0, y otherwise (signed version)
56
- static inline int32_t ct_select_signed(int32_t x, int32_t y, uint32_t bit) {
57
- return (int32_t)ct_select((uint32_t)x, (uint32_t)y, bit);
58
- }
59
-
60
- /**
61
- * Barrett reduction to compute r / (2 * gamma2) without DIV instruction
62
- *
63
- * For gamma2 = 261888 (ML-DSA-87):
64
- * 2 * gamma2 = 523776
65
- * mu = ceil(2^32 / 523776) = 8192 + some correction
66
- *
67
- * q = (r * mu) >> 32
68
- */
69
- static inline uint32_t barrett_div(uint32_t r, uint64_t mu, uint32_t divisor) {
70
- uint64_t q = ((uint64_t)r * mu) >> 32;
71
- // Correction: if r - q*divisor >= divisor, add 1
72
- uint32_t remainder = r - (uint32_t)q * divisor;
73
- uint32_t correction = ct_gt(remainder, divisor - 1) | ct_is_zero(remainder - divisor + divisor);
74
- return (uint32_t)q + (correction & ct_lt(remainder, r + 1));
75
- }
76
-
77
- /**
78
- * CONSTANT-TIME: Decompose using Barrett reduction
79
- *
80
- * Decomposes r into (r1, r0) such that r = r1 * (2 * gamma2) + r0
81
- * where -gamma2 < r0 <= gamma2.
82
- *
83
- * This implementation:
84
- * 1. Uses Barrett reduction instead of hardware division
85
- * 2. Uses branchless conditional selection instead of if statements
86
- */
87
- void decompose_constant_time(uint32_t r, uint32_t gamma2, uint32_t *r1, int32_t *r0) {
88
- uint32_t two_gamma2 = 2 * gamma2;
89
-
90
- // Barrett reduction: compute r1 = r / (2 * gamma2)
91
- // Using precomputed constants - select the right one using constant-time selection
92
- // This avoids any runtime division
93
- uint64_t mu_87 = BARRETT_MU_87;
94
- uint64_t mu_44 = BARRETT_MU_44;
95
-
96
- // Constant-time selection of mu based on gamma2
97
- // Note: We use bit operations to select without branching
98
- uint32_t is_87 = ct_is_zero(gamma2 - GAMMA2_87);
99
- uint64_t mu = (mu_87 & (uint64_t)ct_mask(is_87)) |
100
- (mu_44 & (uint64_t)ct_mask(ct_is_zero(is_87)));
101
-
102
- // Compute quotient using multiplication and shift (no DIV)
103
- uint64_t q64 = ((uint64_t)r * mu) >> 32;
104
- uint32_t q = (uint32_t)q64;
105
-
106
- // Compute remainder: r0 = r - q * (2 * gamma2)
107
- int32_t r0_temp = (int32_t)(r - q * two_gamma2);
108
-
109
- // Correction: handle case where Barrett underestimates
110
- // If r0_temp >= 2*gamma2, increment q and adjust r0
111
- uint32_t needs_correction = ct_gt((uint32_t)r0_temp, two_gamma2 - 1);
112
- q += needs_correction;
113
- r0_temp = ct_select_signed(r0_temp - (int32_t)two_gamma2, r0_temp, needs_correction);
114
-
115
- // Center r0 around 0: if r0 > gamma2, subtract 2*gamma2 and increment r1
116
- // This is done branchlessly using constant-time selection
117
- uint32_t needs_centering = ct_gt((uint32_t)r0_temp, gamma2);
118
-
119
- *r0 = ct_select_signed(r0_temp - (int32_t)two_gamma2, r0_temp, needs_centering);
120
- *r1 = q + needs_centering;
121
- }
122
-
123
- /**
124
- * CONSTANT-TIME: UseHint using branchless selection
125
- *
126
- * All conditional logic is replaced with constant-time bit operations.
127
- */
128
- uint32_t use_hint_constant_time(uint32_t r, uint32_t hint, uint32_t gamma2) {
129
- uint32_t r1;
130
- int32_t r0;
131
-
132
- // Decompose (constant-time)
133
- decompose_constant_time(r, gamma2, &r1, &r0);
134
-
135
- // m = (Q - 1) / (2 * gamma2)
136
- // Precomputed values to avoid runtime division
137
- // For gamma2 = 261888: m = 8380416 / 523776 = 16 - 1 = 15
138
- // For gamma2 = 95232: m = 8380416 / 190464 = 44 - 1 = 43
139
- uint32_t m_87 = 15;
140
- uint32_t m_44 = 43;
141
- uint32_t is_87_hint = ct_is_zero(gamma2 - GAMMA2_87);
142
- uint32_t m = ct_select(m_87, m_44, is_87_hint);
143
-
144
- // If hint == 0, return r1
145
- // If hint != 0:
146
- // If r0 > 0, return (r1 + 1) mod (m + 1)
147
- // Else return (r1 - 1 + (m + 1)) mod (m + 1)
148
-
149
- // Compute both branches
150
- uint32_t m_plus_1 = m + 1;
151
-
152
- // r1_inc = (r1 + 1) mod (m + 1)
153
- // Since r1 < m+1, we just need to check if r1 + 1 == m + 1
154
- uint32_t r1_plus_1 = r1 + 1;
155
- uint32_t r1_inc = ct_select(0, r1_plus_1, ct_is_zero(r1_plus_1 - m_plus_1));
156
-
157
- // r1_dec = (r1 - 1 + (m + 1)) mod (m + 1) = (r1 + m) mod (m + 1)
158
- uint32_t r1_plus_m = r1 + m;
159
- uint32_t r1_dec = ct_select(r1_plus_m - m_plus_1, r1_plus_m,
160
- ct_gt(r1_plus_m, m_plus_1 - 1));
161
-
162
- // Select based on r0 > 0 (constant-time)
163
- // r0 > 0 is equivalent to r0 being positive and non-zero
164
- uint32_t r0_positive = ct_gt((uint32_t)((r0 >> 31) ^ r0), 0) & ct_is_zero((uint32_t)(r0 >> 31));
165
- uint32_t adjusted = ct_select(r1_inc, r1_dec, r0_positive);
166
-
167
- // Final selection based on hint
168
- return ct_select(adjusted, r1, ct_is_zero(hint));
169
- }
170
-
171
- // Test functions to ensure code is not dead-code eliminated
172
- uint32_t test_decompose_ct(uint32_t r) {
173
- uint32_t r1;
174
- int32_t r0;
175
- decompose_constant_time(r, GAMMA2_87, &r1, &r0);
176
- return r1 + (uint32_t)r0;
177
- }
178
-
179
- uint32_t test_use_hint_ct(uint32_t r, uint32_t hint) {
180
- return use_hint_constant_time(r, hint, GAMMA2_87);
181
- }
@@ -1,74 +0,0 @@
1
- /**
2
- * Vulnerable implementation of ML-DSA Decompose (Algorithm 36)
3
- *
4
- * This implementation uses hardware division which has data-dependent timing,
5
- * making it vulnerable to timing side-channel attacks like KyberSlash.
6
- *
7
- * DO NOT use this in production - for testing purposes only.
8
- */
9
-
10
- #include <stdint.h>
11
-
12
- // ML-DSA parameters
13
- #define Q 8380417
14
- #define GAMMA2_87 ((Q - 1) / 32) // 261888 for ML-DSA-87
15
- #define GAMMA2_44 ((Q - 1) / 88) // 95232 for ML-DSA-44/65
16
-
17
- /**
18
- * VULNERABLE: Decompose using hardware division
19
- *
20
- * Decomposes r into (r1, r0) such that r = r1 * (2 * gamma2) + r0
21
- * where -gamma2 < r0 <= gamma2.
22
- *
23
- * This uses the / and % operators which compile to DIV/IDIV instructions
24
- * on x86, which have data-dependent timing.
25
- */
26
- void decompose_vulnerable(int32_t r, int32_t gamma2, int32_t *r1, int32_t *r0) {
27
- int32_t two_gamma2 = 2 * gamma2;
28
-
29
- // VULNERABLE: Hardware division with data-dependent timing
30
- *r1 = r / two_gamma2;
31
- *r0 = r % two_gamma2;
32
-
33
- // Center r0 around 0
34
- if (*r0 > gamma2) {
35
- *r0 -= two_gamma2;
36
- *r1 += 1;
37
- }
38
- }
39
-
40
- /**
41
- * VULNERABLE: UseHint using branches on potentially secret data
42
- *
43
- * The hint values may be derived from secret data in some contexts,
44
- * making these branches potentially exploitable.
45
- */
46
- int32_t use_hint_vulnerable(int32_t r, int32_t hint, int32_t gamma2) {
47
- int32_t r1, r0;
48
-
49
- // This decompose call is also vulnerable
50
- decompose_vulnerable(r, gamma2, &r1, &r0);
51
-
52
- // VULNERABLE: Branch on hint which may depend on secret data
53
- if (hint == 0) {
54
- return r1;
55
- }
56
-
57
- // VULNERABLE: Branch on r0's sign
58
- if (r0 > 0) {
59
- return (r1 + 1) % ((Q - 1) / (2 * gamma2) + 1);
60
- } else {
61
- return (r1 - 1 + ((Q - 1) / (2 * gamma2) + 1)) % ((Q - 1) / (2 * gamma2) + 1);
62
- }
63
- }
64
-
65
- // Test functions to ensure code is not dead-code eliminated
66
- int32_t test_decompose(int32_t r) {
67
- int32_t r1, r0;
68
- decompose_vulnerable(r, GAMMA2_87, &r1, &r0);
69
- return r1 + r0;
70
- }
71
-
72
- int32_t test_use_hint(int32_t r, int32_t hint) {
73
- return use_hint_vulnerable(r, hint, GAMMA2_87);
74
- }
@@ -1,78 +0,0 @@
1
- // Package decompose contains vulnerable implementations of ML-DSA decompose
2
- // for testing the constant-time analyzer.
3
- //
4
- // DO NOT use this in production - for testing purposes only.
5
- package main
6
-
7
- // ML-DSA parameters
8
- const (
9
- Q = 8380417
10
- Gamma87 = (Q - 1) / 32 // 261888 for ML-DSA-87
11
- Gamma44 = (Q - 1) / 88 // 95232 for ML-DSA-44/65
12
- )
13
-
14
- // DecomposeVulnerable uses hardware division which has data-dependent timing.
15
- // This is vulnerable to timing side-channel attacks like KyberSlash.
16
- //
17
- // VULNERABLE: Uses / and % operators which compile to DIV instructions
18
- // that have variable execution time based on operand values.
19
- func DecomposeVulnerable(r int32, gamma2 int32) (r1 int32, r0 int32) {
20
- twoGamma2 := 2 * gamma2
21
-
22
- // VULNERABLE: Hardware division with data-dependent timing
23
- r1 = r / twoGamma2
24
- r0 = r % twoGamma2
25
-
26
- // Center r0 around 0
27
- // VULNERABLE: Branch on r0 which may depend on secret data
28
- if r0 > gamma2 {
29
- r0 -= twoGamma2
30
- r1 += 1
31
- }
32
-
33
- return r1, r0
34
- }
35
-
36
- // UseHintVulnerable uses branches on potentially secret-derived data.
37
- //
38
- // VULNERABLE: Contains conditional branches that may leak timing information
39
- // when the hint or r values are derived from secret data.
40
- func UseHintVulnerable(r int32, hint int32, gamma2 int32) int32 {
41
- r1, r0 := DecomposeVulnerable(r, gamma2)
42
-
43
- m := (Q - 1) / (2 * gamma2)
44
-
45
- // VULNERABLE: Branch on hint which may depend on secret data
46
- if hint == 0 {
47
- return r1
48
- }
49
-
50
- // VULNERABLE: Branch on r0's sign
51
- if r0 > 0 {
52
- return (r1 + 1) % (m + 1)
53
- }
54
- return (r1 - 1 + m + 1) % (m + 1)
55
- }
56
-
57
- // PowerDecomposeVulnerable demonstrates another vulnerable pattern:
58
- // using division for power-of-2 decomposition instead of bit shifts.
59
- func PowerDecomposeVulnerable(r int32, d int32) (r1 int32, r0 int32) {
60
- // VULNERABLE: Should use bit shifts instead of division
61
- // This compiles to IDIV even though it could be a simple shift
62
- divisor := int32(1) << d
63
- r1 = r / divisor
64
- r0 = r % divisor
65
- return r1, r0
66
- }
67
-
68
- func main() {
69
- // Test calls to prevent dead code elimination
70
- r1, r0 := DecomposeVulnerable(12345, Gamma87)
71
- _ = r1 + r0
72
-
73
- result := UseHintVulnerable(12345, 1, Gamma87)
74
- _ = result
75
-
76
- r1p, r0p := PowerDecomposeVulnerable(12345, 13)
77
- _ = r1p + r0p
78
- }
@@ -1,92 +0,0 @@
1
- //! Vulnerable implementations of ML-DSA decompose for testing the constant-time analyzer.
2
- //!
3
- //! DO NOT use this in production - for testing purposes only.
4
-
5
- /// ML-DSA modulus
6
- const Q: i32 = 8380417;
7
-
8
- /// Gamma2 for ML-DSA-87
9
- const GAMMA2_87: i32 = (Q - 1) / 32; // 261888
10
-
11
- /// Gamma2 for ML-DSA-44/65
12
- const GAMMA2_44: i32 = (Q - 1) / 88; // 95232
13
-
14
- /// VULNERABLE: Decompose using hardware division
15
- ///
16
- /// This implementation uses the / and % operators which compile to IDIV
17
- /// instructions on x86, which have data-dependent timing.
18
- ///
19
- /// This makes it vulnerable to timing side-channel attacks like KyberSlash.
20
- #[inline(never)]
21
- pub fn decompose_vulnerable(r: i32, gamma2: i32) -> (i32, i32) {
22
- let two_gamma2 = 2 * gamma2;
23
-
24
- // VULNERABLE: Hardware division with data-dependent timing
25
- let mut r1 = r / two_gamma2;
26
- let mut r0 = r % two_gamma2;
27
-
28
- // Center r0 around 0
29
- // VULNERABLE: Branch on r0 which may depend on secret data
30
- if r0 > gamma2 {
31
- r0 -= two_gamma2;
32
- r1 += 1;
33
- }
34
-
35
- (r1, r0)
36
- }
37
-
38
- /// VULNERABLE: UseHint using branches on potentially secret-derived data
39
- ///
40
- /// The hint values may be derived from secret data in some contexts,
41
- /// making these branches potentially exploitable.
42
- #[inline(never)]
43
- pub fn use_hint_vulnerable(r: i32, hint: i32, gamma2: i32) -> i32 {
44
- let (r1, r0) = decompose_vulnerable(r, gamma2);
45
-
46
- let m = (Q - 1) / (2 * gamma2);
47
-
48
- // VULNERABLE: Branch on hint which may depend on secret data
49
- if hint == 0 {
50
- return r1;
51
- }
52
-
53
- // VULNERABLE: Branch on r0's sign
54
- if r0 > 0 {
55
- (r1 + 1) % (m + 1)
56
- } else {
57
- (r1 - 1 + m + 1) % (m + 1)
58
- }
59
- }
60
-
61
- /// VULNERABLE: Floating-point division
62
- ///
63
- /// Uses floating-point division which has variable latency on most processors.
64
- #[inline(never)]
65
- pub fn fp_divide_vulnerable(a: f64, b: f64) -> f64 {
66
- // VULNERABLE: FDIV/DIVSD has variable latency
67
- a / b
68
- }
69
-
70
- /// VULNERABLE: Square root
71
- ///
72
- /// Uses floating-point square root which has variable latency.
73
- #[inline(never)]
74
- pub fn fp_sqrt_vulnerable(x: f64) -> f64 {
75
- // VULNERABLE: FSQRT/SQRTSD has variable latency
76
- x.sqrt()
77
- }
78
-
79
- fn main() {
80
- // Test calls to prevent dead code elimination
81
- let (r1, r0) = decompose_vulnerable(12345, GAMMA2_87);
82
- println!("Decompose: r1={}, r0={}", r1, r0);
83
-
84
- let result = use_hint_vulnerable(12345, 1, GAMMA2_87);
85
- println!("UseHint: {}", result);
86
-
87
- let div_result = fp_divide_vulnerable(100.0, 3.0);
88
- println!("FP Divide: {}", div_result);
89
-
90
- let sqrt_result = fp_sqrt_vulnerable(2.0);
91
- println!("FP Sqrt: {}", sqrt_result);
92
- }