@voxgig/sdkgen 4.10.0 → 4.11.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 (304) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/package.json +1 -1
  3. package/project/.sdk/model/feature/secrets.aon +330 -0
  4. package/project/.sdk/model/target/c.aon +15 -2
  5. package/project/.sdk/model/target/cpp.aon +18 -0
  6. package/project/.sdk/model/target/lua.aon +17 -0
  7. package/project/.sdk/model/target/ocaml.aon +48 -5
  8. package/project/.sdk/model/target/zig.aon +30 -4
  9. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  10. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  11. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  12. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  13. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  14. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  15. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  16. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  17. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  18. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  19. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  20. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  21. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  22. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  23. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  24. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  25. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  26. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  27. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  28. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  29. package/project/.sdk/tm/c/Makefile +58 -9
  30. package/project/.sdk/tm/c/core/sdk.h +10 -0
  31. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  32. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  33. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  34. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  35. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  36. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  37. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  38. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  39. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  40. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  41. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  42. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  43. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  44. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  45. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  46. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  47. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  48. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  49. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  50. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  51. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  52. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  53. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  54. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  55. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  56. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  57. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  58. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  59. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  60. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  61. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  62. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  63. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  64. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  65. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  66. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  67. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  68. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  69. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  70. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  71. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  72. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  73. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  74. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  75. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  76. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  77. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  78. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  79. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  80. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  81. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  82. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  83. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  84. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  85. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  86. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  87. package/project/.sdk/tm/c/src/feature/secrets/.gitkeep +0 -0
  88. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  89. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +38 -11
  90. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +40 -6
  91. package/project/.sdk/tm/cpp/Makefile +48 -4
  92. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  93. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  94. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  95. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  96. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  97. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  98. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  99. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  100. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  101. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  102. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  103. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  104. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  105. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  106. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  107. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  108. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  109. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  110. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  111. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  112. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  113. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  114. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  115. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  116. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  117. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  118. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  119. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  120. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  121. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  122. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  123. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  124. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  125. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  126. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  127. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  128. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  129. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  130. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  131. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  132. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  133. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  134. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  135. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  136. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  137. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  138. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  139. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  140. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  141. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  142. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  143. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  144. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  145. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  146. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  147. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  148. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  149. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  150. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  151. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  152. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  153. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  154. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  155. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  156. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  157. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  158. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  159. package/project/.sdk/tm/cpp/src/feature/secrets/.gitkeep +0 -0
  160. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  161. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +34 -8
  162. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +85 -0
  163. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +17 -2
  164. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +41 -0
  165. package/project/.sdk/tm/go/feature/secrets_feature.go +32 -10
  166. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +116 -0
  167. package/project/.sdk/tm/java/feature/SecretsFeature.java +33 -8
  168. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +64 -0
  169. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +34 -11
  170. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +73 -0
  171. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +32 -7
  172. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +69 -0
  173. package/project/.sdk/tm/lua/Makefile +15 -4
  174. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  175. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  176. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  177. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  178. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  179. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  180. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  181. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  182. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  183. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  184. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  185. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  186. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  187. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  188. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  189. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  190. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  191. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  192. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  193. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  194. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  195. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  196. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  197. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  198. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  199. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  200. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  201. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  202. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  203. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  204. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  205. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  206. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  207. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  208. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  209. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  210. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  211. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  212. package/project/.sdk/tm/lua/src/feature/secrets/.gitkeep +0 -0
  213. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  214. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  215. package/project/.sdk/tm/ocaml/Makefile +52 -8
  216. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  217. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  218. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  219. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  220. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  221. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  222. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  223. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  224. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  225. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  226. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  227. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  228. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  229. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  230. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  231. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  232. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  233. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  234. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  235. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  236. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  237. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  238. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  239. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  240. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  241. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  242. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  243. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  244. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  245. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  246. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  247. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  248. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  249. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  250. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  251. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  252. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  253. package/project/.sdk/tm/ocaml/src/feature/secrets/.gitkeep +0 -0
  254. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  255. package/project/.sdk/tm/perl/feature/secrets_feature.pm +33 -12
  256. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +47 -0
  257. package/project/.sdk/tm/php/feature/SecretsFeature.php +30 -6
  258. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +98 -0
  259. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  260. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  261. package/project/.sdk/tm/rb/feature/secrets_feature.rb +28 -6
  262. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +93 -0
  263. package/project/.sdk/tm/rust/feature/secrets.rs +33 -10
  264. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +96 -0
  265. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +29 -7
  266. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +71 -0
  267. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  268. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  269. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  270. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  271. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  272. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  273. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  274. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  275. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  276. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  277. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  278. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  279. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  280. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  281. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  282. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  283. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  284. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  285. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  286. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  287. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  288. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  289. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  290. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  291. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  292. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  293. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  294. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  295. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  296. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  297. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  298. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  299. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  300. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  301. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  302. package/project/.sdk/tm/zig/src/feature/secrets/.gitkeep +0 -0
  303. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  304. package/project/sdkgen-package.json +1 -1
@@ -0,0 +1,97 @@
1
+ (* VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (ocaml/plugins/runcmd.ml) *)
2
+ (* Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* Running a store's own CLI, and collecting both its streams.
5
+
6
+ Two of the ten plugin kinds read their store through a child process -
7
+ `boru` and `secretspec` - and a child process is one of the three things
8
+ that keeps a kind out of the core, beside a socket and a signature. *)
9
+
10
+ open Secret
11
+
12
+ type ran = { out : string; why : string; status : int }
13
+
14
+ (* Where a command lives, or nowhere.
15
+
16
+ Resolved before forking: OCaml's `create_process` execs in the child, so
17
+ a command that is not there makes the child exit 127 with no error in the
18
+ parent - which is indistinguishable from a command that ran and failed.
19
+ "cannot run" and "the store said no" are different answers. *)
20
+ let findexe (command : string) : string option =
21
+ let executable path = match Unix.access path [ Unix.X_OK ] with () -> true | exception _ -> false in
22
+
23
+ if String.contains command '/' then if executable command then Some command else None
24
+ else
25
+ let path = match Sys.getenv_opt "PATH" with Some value -> value | None -> "/usr/bin:/bin" in
26
+ let rec walk = function
27
+ | [] -> None
28
+ | dir :: rest ->
29
+ let cand = (if "" = dir then "." else dir) ^ "/" ^ command in
30
+ if executable cand then Some cand else walk rest
31
+ in
32
+ walk (String.split_on_char ':' path)
33
+
34
+ (* Run a child to completion and collect both its streams.
35
+
36
+ The two streams are drained CONCURRENTLY, through one select loop.
37
+ Reading stdout to EOF and only then reading stderr deadlocks the moment
38
+ the child writes more than one pipe buffer (64 KiB on Linux) to stderr:
39
+ the parent is blocked waiting for stdout, the child is blocked waiting
40
+ for room on stderr, and neither can move. Nothing here sets a timeout, so
41
+ that hang is permanent - `get` simply never returns. secretspec's
42
+ diagnostics are box-drawn and reach that size easily.
43
+
44
+ The child's stdin is closed rather than left open on a pipe nobody writes
45
+ to, so a CLI that reads it - one prompting for a passphrase when its
46
+ environment variable is absent - sees EOF and gives up instead of waiting
47
+ forever.
48
+
49
+ Arguments go as an array, never through a shell, and no secret is ever
50
+ put on a command line where the process table would publish it. *)
51
+ let runcmd (argv : string list) (env : string array) (command : string) : ran =
52
+ let exe =
53
+ match findexe command with
54
+ | Some path -> path
55
+ | None -> fail ("sekreto: cannot run " ^ command ^ ": No such file or directory")
56
+ in
57
+
58
+ let outr, outw = Unix.pipe () in
59
+ let errr, errw = Unix.pipe () in
60
+ let inr, inw = Unix.pipe () in
61
+ Unix.close inw;
62
+
63
+ let pid =
64
+ match Unix.create_process_env exe (Array.of_list argv) env inr outw errw with
65
+ | pid -> pid
66
+ | exception Unix.Unix_error (err, _, _) ->
67
+ List.iter (fun fd -> try Unix.close fd with _ -> ()) [ inr; outr; outw; errr; errw ];
68
+ fail ("sekreto: cannot run " ^ command ^ ": " ^ Unix.error_message err)
69
+ in
70
+
71
+ Unix.close inr;
72
+ Unix.close outw;
73
+ Unix.close errw;
74
+
75
+ let obuf = Buffer.create 4096 and ebuf = Buffer.create 4096 in
76
+ let live = ref [ outr; errr ] in
77
+ let chunk = Bytes.create 65536 in
78
+
79
+ while [] <> !live do
80
+ let ready, _, _ = Unix.select !live [] [] (-1.0) in
81
+ List.iter
82
+ (fun fd ->
83
+ let got = try Unix.read fd chunk 0 65536 with Unix.Unix_error _ -> 0 in
84
+ if 0 = got then begin
85
+ (try Unix.close fd with _ -> ());
86
+ live := List.filter (fun other -> other <> fd) !live
87
+ end
88
+ else Buffer.add_subbytes (if fd = outr then obuf else ebuf) chunk 0 got)
89
+ ready
90
+ done;
91
+
92
+ let status = match snd (Unix.waitpid [] pid) with
93
+ | Unix.WEXITED code -> code
94
+ | Unix.WSIGNALED code | Unix.WSTOPPED code -> 128 + code
95
+ in
96
+
97
+ { out = Buffer.contents obuf; why = trim (Buffer.contents ebuf); status }
@@ -0,0 +1,68 @@
1
+ (* VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (ocaml/plugins/secretspec.ml) *)
2
+ (* Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* The `secretspec` provider kind, as a voxgig/plugin definition.
5
+
6
+ SecretSpec read through its own CLI - a child process, which is one of
7
+ the three things that keeps a kind out of the core.
8
+
9
+ A port of typescript/plugins/secretspec.ts, which is canonical. *)
10
+
11
+ open Secret
12
+ open Provider
13
+ open Runcmd
14
+
15
+ (* Does this SecretSpec failure mean "no such secret" rather than "I could
16
+ not answer"?
17
+
18
+ MATCHED ON THE WHOLE PHRASE, NOT ON "not found". SecretSpec says
19
+ `Secret 'API_TOKEN' not found` for both a name it does not declare and
20
+ one declared with no value, and both are misses. It also says
21
+ `Provider backend 'keyring' not found`, which is a store that could not
22
+ answer at all - and reading that as a miss is the worst failure this
23
+ library has. The key is required to appear, so the two cannot be
24
+ confused. *)
25
+ let secretspecmiss (why : string) (key : string) : bool =
26
+ None <> findsub why ("Secret '" ^ key ^ "' not found")
27
+
28
+ (* SecretSpec (https://secretspec.dev), read through its CLI.
29
+
30
+ `backend` selects one of SecretSpec's own backends (`--provider`) and is
31
+ called `backend` here only because `provider` already means something
32
+ else in this library.
33
+
34
+ A reason is required, not optional: SecretSpec records every read in an
35
+ audit log and refuses to read at all without one. *)
36
+ let secretspec_provider (commandgiven : string) (file : string) (profile : string)
37
+ (backend : string) (reason : string) (prefix : string) : provider =
38
+ let command = if "" = commandgiven then "secretspec" else commandgiven in
39
+
40
+ {
41
+ lookup =
42
+ (fun name ->
43
+ let key = envkey ~prefix name in
44
+
45
+ (* `--file` before the subcommand, `--reason` always sent. *)
46
+ let argv =
47
+ [ command ]
48
+ @ (if "" = file then [] else [ "--file"; file ])
49
+ @ [ "get"; key ]
50
+ @ (if "" = backend then [] else [ "--provider"; backend ])
51
+ @ (if "" = profile then [] else [ "--profile"; profile ])
52
+ @ [ "--reason"; firstof [ reason; "sekreto" ] ]
53
+ in
54
+
55
+ let ran = runcmd argv (Unix.environment ()) command in
56
+
57
+ if 0 = ran.status then Some (dropsuffix ran.out "\n")
58
+ else if secretspecmiss ran.why key then None
59
+ else
60
+ fail
61
+ ("sekreto: secretspec error: "
62
+ ^ if "" = ran.why then "exit " ^ string_of_int ran.status else ran.why));
63
+ describe = (fun () -> if "" = backend then "secretspec" else "secretspec:" ^ backend);
64
+ }
65
+
66
+ let plugin () : Defs.definition =
67
+ providerplugin "secretspec" (fun spec ->
68
+ secretspec_provider spec.command spec.file spec.profile spec.backend spec.reason spec.prefix)
@@ -0,0 +1,259 @@
1
+ (* VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (ocaml/plugins/sigv4.ml) *)
2
+ (* Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* AWS Signature Version 4, hand-rolled.
5
+
6
+ The AWS providers need exactly one thing from the AWS SDK - request
7
+ signing - and taking the SDK for it would break the no-dependency rule
8
+ that keeps the ports honest. SigV4 is a stable, published algorithm built
9
+ from HMAC-SHA256, which plugins/crypto.ml carries.
10
+
11
+ `sigv4` is pure: the caller passes the timestamp, so the same input
12
+ yields the same signature everywhere. That is what lets the shared spec
13
+ carry known-answer cases that all ports must reproduce bit for bit, and
14
+ lets the integration mock recompute the signature server-side. Nothing
15
+ here samples the clock.
16
+
17
+ A port of typescript/src/Sigv4.ts, which is canonical. *)
18
+
19
+ open Secret
20
+
21
+ (* One request to sign - the same declarative shape the shared spec uses.
22
+ `datetime` is `YYYYMMDDTHHMMSSZ`, and it is the caller's. *)
23
+ type signing = {
24
+ smethod : string;
25
+ url : string;
26
+ service : string;
27
+ region : string;
28
+ keyid : string;
29
+ secret : string;
30
+ datetime : string;
31
+ headers : (string * string) list;
32
+ body : string;
33
+ session : string;
34
+ }
35
+
36
+ let nosigning =
37
+ {
38
+ smethod = "";
39
+ url = "";
40
+ service = "";
41
+ region = "";
42
+ keyid = "";
43
+ secret = "";
44
+ datetime = "";
45
+ headers = [];
46
+ body = "";
47
+ session = "";
48
+ }
49
+
50
+ (* RFC 3986 escaping, which is stricter than the usual URL encoder: AWS
51
+ wants everything but the unreserved set escaped, byte by byte over UTF-8,
52
+ with UPPERCASE hex. `!'()*` are escaped here and are not by the encoders
53
+ most standard libraries offer. *)
54
+ let uriescape (text : string) : string =
55
+ let out = Buffer.create (String.length text) in
56
+ String.iter
57
+ (fun ch ->
58
+ let code = Char.code ch in
59
+ if
60
+ ('A' <= ch && ch <= 'Z')
61
+ || ('a' <= ch && ch <= 'z')
62
+ || ('0' <= ch && ch <= '9')
63
+ || '-' = ch || '_' = ch || '.' = ch || '~' = ch
64
+ then Buffer.add_char out ch
65
+ else Buffer.add_string out (Printf.sprintf "%%%02X" code))
66
+ text;
67
+ Buffer.contents out
68
+
69
+ let hexvalue (ch : char) : int option =
70
+ match ch with
71
+ | '0' .. '9' -> Some (Char.code ch - Char.code '0')
72
+ | 'a' .. 'f' -> Some (Char.code ch - Char.code 'a' + 10)
73
+ | 'A' .. 'F' -> Some (Char.code ch - Char.code 'A' + 10)
74
+ | _ -> None
75
+
76
+ (* Percent-decode, and nothing else: `+` stays `+`, as on the wire, and a
77
+ malformed escape is kept literally. *)
78
+ let uridecode (text : string) : string =
79
+ let out = Buffer.create (String.length text) in
80
+ let len = String.length text in
81
+ let index = ref 0 in
82
+
83
+ while !index < len do
84
+ let taken = ref false in
85
+
86
+ if '%' = text.[!index] && !index + 2 < len then begin
87
+ match (hexvalue text.[!index + 1], hexvalue text.[!index + 2]) with
88
+ | Some high, Some low ->
89
+ Buffer.add_char out (Char.chr ((high * 16) + low));
90
+ index := !index + 3;
91
+ taken := true
92
+ | _ -> ()
93
+ end;
94
+
95
+ if not !taken then begin
96
+ Buffer.add_char out text.[!index];
97
+ incr index
98
+ end
99
+ done;
100
+
101
+ Buffer.contents out
102
+
103
+ (* Split a query into pairs on `&`, then each on its FIRST `=`. A pair with
104
+ no `=` keeps an empty value and is still emitted with one. *)
105
+ let canonicalquery (query : string) : string =
106
+ if "" = query then ""
107
+ else
108
+ let pairs =
109
+ List.map
110
+ (fun pair ->
111
+ match String.index_opt pair '=' with
112
+ | None -> (uriescape (uridecode pair), "")
113
+ | Some eq ->
114
+ ( uriescape (uridecode (String.sub pair 0 eq)),
115
+ uriescape (uridecode (String.sub pair (eq + 1) (String.length pair - eq - 1))) ))
116
+ (String.split_on_char '&' query)
117
+ in
118
+ let sorted =
119
+ List.stable_sort
120
+ (fun (lk, lv) (rk, rv) -> if lk = rk then compare lv rv else compare lk rk)
121
+ pairs
122
+ in
123
+ String.concat "&" (List.map (fun (key, value) -> key ^ "=" ^ value) sorted)
124
+
125
+ (* The url, hand-split into the four parts signing needs.
126
+
127
+ Hand-split, not handed to a URL type: twelve URL parsers disagree about
128
+ malformed input, and the signature covers `host` and the raw path, so a
129
+ parser that normalises either of them signs something the server will not
130
+ recompute. *)
131
+ type parts = { scheme : string; authority : string; path : string; query : string }
132
+
133
+ let urlparts (url : string) : parts =
134
+ match findsub url "://" with
135
+ | None -> { scheme = ""; authority = ""; path = url; query = "" }
136
+ | Some mark ->
137
+ let scheme = String.sub url 0 mark in
138
+ let rest = String.sub url (mark + 3) (String.length url - mark - 3) in
139
+ let stop = match splitfirst rest "/?#" with Some at -> at | None -> String.length rest in
140
+ let authority = String.sub rest 0 stop in
141
+ let tail = String.sub rest stop (String.length rest - stop) in
142
+ let path, query =
143
+ match String.index_opt tail '?' with
144
+ | None -> (tail, "")
145
+ | Some at -> (String.sub tail 0 at, String.sub tail (at + 1) (String.length tail - at - 1))
146
+ in
147
+ let path = match String.index_opt path '#' with None -> path | Some at -> String.sub path 0 at in
148
+ { scheme; authority; path = (if "" = path then "/" else path); query }
149
+
150
+ (* The `host` header as the canonical form wants it: the hostname
151
+ lowercased, any userinfo stripped, and the port appended ONLY when it is
152
+ not the scheme's default - `:443` on https is not what a URL normalises
153
+ to and not what the service recomputes. *)
154
+ let hostheader (scheme : string) (authority : string) : string =
155
+ let bare =
156
+ match String.rindex_opt authority '@' with
157
+ | None -> authority
158
+ | Some at -> String.sub authority (at + 1) (String.length authority - at - 1)
159
+ in
160
+
161
+ let host, port =
162
+ if String.length bare > 0 && '[' = bare.[0] then
163
+ match String.index_opt bare ']' with
164
+ | None -> (bare, "")
165
+ | Some close ->
166
+ let head = String.sub bare 0 (close + 1) in
167
+ let tail = String.sub bare (close + 1) (String.length bare - close - 1) in
168
+ (head, if String.length tail > 1 && ':' = tail.[0] then String.sub tail 1 (String.length tail - 1) else "")
169
+ else
170
+ match String.rindex_opt bare ':' with
171
+ | None -> (bare, "")
172
+ | Some at ->
173
+ ( String.sub bare 0 at,
174
+ String.sub bare (at + 1) (String.length bare - at - 1) )
175
+ in
176
+
177
+ let host = String.lowercase_ascii host in
178
+ let default = if "https" = scheme then "443" else "80" in
179
+
180
+ if "" = port || port = default then host else host ^ ":" ^ port
181
+
182
+ (* Collapse every internal whitespace run - spaces AND tabs - to one space,
183
+ after trimming. AWS folds header values before signing, so `a b\tc`
184
+ must sign as `a b c` or the service refuses the request. *)
185
+ let foldvalue (value : string) : string =
186
+ let trimmed = trim value in
187
+ let out = Buffer.create (String.length trimmed) in
188
+ let inrun = ref false in
189
+ String.iter
190
+ (fun ch ->
191
+ if ' ' = ch || '\t' = ch || '\n' = ch || '\r' = ch then inrun := true
192
+ else begin
193
+ if !inrun then Buffer.add_char out ' ';
194
+ inrun := false;
195
+ Buffer.add_char out ch
196
+ end)
197
+ trimmed;
198
+ Buffer.contents out
199
+
200
+ (* Sign one request. Answers the headers to attach: authorization,
201
+ x-amz-date, and x-amz-security-token when a session token was given, in
202
+ that order - the spec compares the result as a whole JSON object, so the
203
+ order is contract. *)
204
+ let sigv4 (input : signing) : (string * string) list =
205
+ let parts = urlparts input.url in
206
+ let date = String.sub input.datetime 0 (min 8 (String.length input.datetime)) in
207
+
208
+ (* The caller's headers first, then host, x-amz-date and the session
209
+ token, so that those three win over anything the caller passed. *)
210
+ let headers = ref [] in
211
+ List.iter
212
+ (fun (key, value) -> headers := assocset !headers (String.lowercase_ascii key) (foldvalue value))
213
+ input.headers;
214
+ headers := assocset !headers "host" (hostheader parts.scheme parts.authority);
215
+ headers := assocset !headers "x-amz-date" input.datetime;
216
+ if "" <> input.session then headers := assocset !headers "x-amz-security-token" input.session;
217
+
218
+ let sorted = List.stable_sort (fun (l, _) (r, _) -> compare l r) !headers in
219
+
220
+ let canonicalheaders =
221
+ String.concat "" (List.map (fun (key, value) -> key ^ ":" ^ value ^ "\n") sorted)
222
+ in
223
+ let signedheaders = String.concat ";" (List.map fst sorted) in
224
+
225
+ let canonicalrequest =
226
+ String.concat "\n"
227
+ [
228
+ String.uppercase_ascii input.smethod;
229
+ parts.path;
230
+ canonicalquery parts.query;
231
+ canonicalheaders;
232
+ signedheaders;
233
+ Crypto.sha256hex input.body;
234
+ ]
235
+ in
236
+
237
+ let scope = date ^ "/" ^ input.region ^ "/" ^ input.service ^ "/aws4_request" in
238
+
239
+ let stringtosign =
240
+ String.concat "\n"
241
+ [ "AWS4-HMAC-SHA256"; input.datetime; scope; Crypto.sha256hex canonicalrequest ]
242
+ in
243
+
244
+ let kdate = Crypto.hmac ("AWS4" ^ input.secret) date in
245
+ let kregion = Crypto.hmac kdate input.region in
246
+ let kservice = Crypto.hmac kregion input.service in
247
+ let ksigning = Crypto.hmac kservice "aws4_request" in
248
+ let signature = Crypto.hex (Crypto.hmac ksigning stringtosign) in
249
+
250
+ let out =
251
+ [
252
+ ( "authorization",
253
+ "AWS4-HMAC-SHA256 Credential=" ^ input.keyid ^ "/" ^ scope ^ ", SignedHeaders="
254
+ ^ signedheaders ^ ", Signature=" ^ signature );
255
+ ("x-amz-date", input.datetime);
256
+ ]
257
+ in
258
+
259
+ if "" = input.session then out else out @ [ ("x-amz-security-token", input.session) ]
@@ -0,0 +1,44 @@
1
+ (* VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (ocaml/plugins/tls.ml) *)
2
+ (* Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* The OCaml side of the TLS binding.
5
+
6
+ Thin on purpose: everything that has to be got right is in
7
+ plugins/tls_stubs.c, next to the OpenSSL calls it is about, and this module
8
+ only decides whether a host is a name or an address, reads
9
+ SEKRETO_CA_BUNDLE, and turns a C-side failure into the library's own
10
+ error type.
11
+
12
+ The socket is OCaml's throughout - connected, bounded and closed by
13
+ plugins/http.ml - so the C side never owns a file descriptor. *)
14
+
15
+ type conn
16
+
17
+ external tls_connect : Unix.file_descr -> string -> bool -> string -> conn = "sekreto_tls_connect"
18
+ external tls_write : conn -> string -> int -> int -> int = "sekreto_tls_write"
19
+ external tls_read : conn -> Bytes.t -> int -> int -> int = "sekreto_tls_read"
20
+ external tls_close : conn -> unit = "sekreto_tls_close"
21
+
22
+ (* The cross-port way to add a private CA. Additive, never a replacement,
23
+ and it fails open in silence - see the note in tls_stubs.c. *)
24
+ let cabundle = "SEKRETO_CA_BUNDLE"
25
+
26
+ (* Is this host an IP literal rather than a DNS name?
27
+
28
+ It decides two things in the binding: an address is verified against the
29
+ certificate's iPAddress SAN rather than by DNS-name matching, and SNI is
30
+ not sent for it. Asked of the platform's own parser, which is the same
31
+ one the socket layer will use. *)
32
+ let isip (host : string) : bool =
33
+ match Unix.inet_addr_of_string host with _ -> true | exception _ -> false
34
+
35
+ (* Handshake over an already-connected socket, verifying the chain and the
36
+ host name. Any failure raises `Failure`, which plugins/http.ml turns into
37
+ `sekreto: cannot reach ...`. *)
38
+ let connect (fd : Unix.file_descr) (host : string) : conn =
39
+ let extra = match Sys.getenv_opt cabundle with Some path -> path | None -> "" in
40
+ tls_connect fd host (isip host) extra
41
+
42
+ let write (conn : conn) (text : string) (ofs : int) (len : int) : int = tls_write conn text ofs len
43
+ let read (conn : conn) (buf : Bytes.t) (ofs : int) (len : int) : int = tls_read conn buf ofs len
44
+ let close (conn : conn) : unit = tls_close conn