@voxgig/sdkgen 4.10.0 → 4.12.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.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/resolve.js +75 -1
- package/dist/action/resolve.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.js +17 -0
- package/dist/utility.js.map +1 -1
- package/package.json +4 -3
- package/project/.sdk/model/feature/secrets.aon +330 -0
- package/project/.sdk/model/target/c.aon +15 -2
- package/project/.sdk/model/target/cpp.aon +18 -0
- package/project/.sdk/model/target/lua.aon +17 -0
- package/project/.sdk/model/target/ocaml.aon +48 -5
- package/project/.sdk/model/target/zig.aon +30 -4
- package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
- package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
- package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
- package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
- package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
- package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
- package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
- package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
- package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
- package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
- package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
- package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
- package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
- package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
- package/project/.sdk/tm/c/Makefile +58 -9
- package/project/.sdk/tm/c/core/sdk.h +10 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
- package/project/.sdk/tm/c/feature/secrets.c +797 -0
- package/project/.sdk/tm/c/feature/secrets.h +46 -0
- package/project/.sdk/tm/c/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +1 -1
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +1 -1
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +1 -1
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +38 -11
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +1 -1
- package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +40 -6
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +1 -1
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +1 -1
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +1 -1
- package/project/.sdk/tm/cpp/Makefile +48 -4
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
- package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
- package/project/.sdk/tm/cpp/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +1 -1
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +1 -1
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +1 -1
- package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +34 -8
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +1 -1
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +1 -1
- package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +85 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +1 -1
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +1 -1
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +17 -2
- package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +41 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +1 -1
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +1 -1
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +1 -1
- package/project/.sdk/tm/go/feature/secrets_feature.go +32 -10
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +116 -0
- package/project/.sdk/tm/go/test/omni/omni.go +1 -1
- package/project/.sdk/tm/go/test/omni/util.go +1 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
- package/project/.sdk/tm/java/feature/SecretsFeature.java +33 -8
- package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +1 -1
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +1 -1
- package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +64 -0
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +1 -1
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +1 -1
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +1 -1
- package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +34 -11
- package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +1 -1
- package/project/.sdk/tm/js/src/utility/StructUtility.js +2 -2
- package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +49 -1
- package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +73 -0
- package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
- package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
- package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +32 -7
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +1 -1
- package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +69 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +1 -1
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +1 -1
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +1 -1
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
- package/project/.sdk/tm/lua/Makefile +15 -4
- package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
- package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
- package/project/.sdk/tm/lua/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
- package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +1 -1
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +1 -1
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +1 -1
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +1 -1
- package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
- package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
- package/project/.sdk/tm/ocaml/Makefile +52 -8
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
- package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
- package/project/.sdk/tm/ocaml/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +25 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +1 -1
- package/project/.sdk/tm/perl/feature/secrets_feature.pm +33 -12
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
- package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +47 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
- package/project/.sdk/tm/php/feature/SecretsFeature.php +30 -6
- package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +1 -1
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +1 -1
- package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +98 -0
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +1 -1
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +1 -1
- package/project/.sdk/tm/rb/feature/secrets_feature.rb +28 -6
- package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +93 -0
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +1 -1
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +1 -1
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +1 -1
- package/project/.sdk/tm/rust/feature/secrets.rs +33 -10
- package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +96 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +1 -1
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +1 -1
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +1 -1
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1 -1
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +1 -1
- package/project/.sdk/tm/scala/feature/SecretsFeature.scala +29 -7
- package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +1 -1
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +1 -1
- package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +71 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +1 -1
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +1 -1
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +1 -1
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +1 -1
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +1 -1
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +107 -1
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +2 -2
- package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +49 -1
- package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
- package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
- package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
- package/project/.sdk/tm/zig/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1 -1
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +1 -1
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +1 -1
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
- package/project/sdkgen-package.json +1 -1
- package/src/action/resolve.ts +85 -1
- package/src/utility.ts +17 -0
|
@@ -0,0 +1,813 @@
|
|
|
1
|
+
// VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (c/src/providers.c)
|
|
2
|
+
// Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260911-2013-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
/* What a provider is, what its declarative form looks like, how a provider
|
|
5
|
+
* kind becomes a voxgig/plugin definition - and the four BUILT-IN kinds.
|
|
6
|
+
*
|
|
7
|
+
* A provider answers one question: "do you have this secret?" It returns
|
|
8
|
+
* the value, or a miss to mean "ask the next one". Nothing else about a
|
|
9
|
+
* provider is visible to the caller - which is the point: an app reads
|
|
10
|
+
* `api.token` and never learns whether it came from the environment, a
|
|
11
|
+
* .env file, HashiCorp Vault, AWS, GCP, Azure or a boru vault.
|
|
12
|
+
*
|
|
13
|
+
* TWO FAILURE SHAPES, AND THEY ARE NEVER INTERCHANGEABLE. A store that
|
|
14
|
+
* does not hold the secret is a MISS (`*out = NULL`, no error) and the
|
|
15
|
+
* chain carries on. A store that could not answer - bad credentials,
|
|
16
|
+
* unreachable host, missing configuration - is an ERROR: falling through
|
|
17
|
+
* there would quietly reach for a weaker store.
|
|
18
|
+
*
|
|
19
|
+
* THIS FILE NAMES NO SOCKET, NO CHILD PROCESS AND NO HASH FUNCTION. What
|
|
20
|
+
* makes a kind built in is that it needs nothing of the platform beyond
|
|
21
|
+
* the environment and reading a local file; every kind that opens a
|
|
22
|
+
* socket, signs a request or spawns a process is a plugin under
|
|
23
|
+
* `plugins/`, in its own translation unit, linked only by a binary whose
|
|
24
|
+
* link line names it (docs/design/plugin-providers.md).
|
|
25
|
+
*
|
|
26
|
+
* A port of typescript/src/provider/support.ts and
|
|
27
|
+
* typescript/src/provider/builtin.ts, which are canonical.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#define _POSIX_C_SOURCE 200809L
|
|
31
|
+
|
|
32
|
+
#include <stddef.h>
|
|
33
|
+
#include <stdio.h>
|
|
34
|
+
#include <stdlib.h>
|
|
35
|
+
#include <string.h>
|
|
36
|
+
|
|
37
|
+
#include "internal.h"
|
|
38
|
+
|
|
39
|
+
/* ---- spec ---------------------------------------------------------- */
|
|
40
|
+
|
|
41
|
+
sek_spec sek_spec_new(const char *kind) {
|
|
42
|
+
sek_spec spec;
|
|
43
|
+
|
|
44
|
+
memset(&spec, 0, sizeof(spec));
|
|
45
|
+
spec.kind = kind;
|
|
46
|
+
|
|
47
|
+
return spec;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* What a credential field reports about itself: whether it is set, never
|
|
51
|
+
* what it is. */
|
|
52
|
+
static const char *setornot(const char *value) { return sek_empty(value) ? "[unset]" : "[set]"; }
|
|
53
|
+
|
|
54
|
+
char *sek_authspec_show(sek_pool *pool, const sek_authspec *auth) {
|
|
55
|
+
if (NULL == auth) {
|
|
56
|
+
return sek_strdup(pool, "(none)");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return sek_fmt(pool,
|
|
60
|
+
"AuthSpec(method=%s, mount=%s, role=%s, jwtfile=%s, roleid=%s, jwt=%s, "
|
|
61
|
+
"secretid=%s)",
|
|
62
|
+
sek_orempty(auth->method), sek_orempty(auth->mount), sek_orempty(auth->role),
|
|
63
|
+
sek_orempty(auth->jwtfile), sek_orempty(auth->roleid), setornot(auth->jwt),
|
|
64
|
+
setornot(auth->secretid));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Printed without its credentials. The obvious debug print of a chain
|
|
68
|
+
* that will not build - which is exactly what someone writes when a chain
|
|
69
|
+
* will not build - would otherwise put the Vault token, the AWS secret
|
|
70
|
+
* access key and the Azure client secret wherever it was printed. */
|
|
71
|
+
char *sek_spec_show(sek_pool *pool, const sek_spec *spec) {
|
|
72
|
+
return sek_fmt(pool,
|
|
73
|
+
"ProviderSpec(kind=%s, name=%s, addr=%s, token=%s, secret=%s, clientsecret=%s, "
|
|
74
|
+
"auth=%s)",
|
|
75
|
+
sek_orempty(spec->kind), sek_orempty(spec->name), sek_orempty(spec->addr),
|
|
76
|
+
setornot(spec->token), setornot(spec->secret), setornot(spec->clientsecret),
|
|
77
|
+
sek_authspec_show(pool, spec->auth));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* ---- addresses ----------------------------------------------------- */
|
|
81
|
+
|
|
82
|
+
/* Every refusal below names the address it refused, and one of them fires
|
|
83
|
+
* precisely because the address carries a credential - so printing it
|
|
84
|
+
* verbatim would write that password to stderr and into the logs. It
|
|
85
|
+
* cannot be cleaned up afterwards either: that password was never
|
|
86
|
+
* resolved as a secret, so redact() has never seen it and never will. */
|
|
87
|
+
char *sek_safeaddr(sek_pool *pool, const char *addr) {
|
|
88
|
+
const char *mark = strstr(addr, "://");
|
|
89
|
+
const char *rest;
|
|
90
|
+
const char *stop;
|
|
91
|
+
char *authority;
|
|
92
|
+
const char *at;
|
|
93
|
+
size_t head;
|
|
94
|
+
|
|
95
|
+
if (NULL == mark) {
|
|
96
|
+
return sek_strdup(pool, addr);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
rest = mark + 3;
|
|
100
|
+
stop = rest;
|
|
101
|
+
while ('\0' != *stop && '/' != *stop && '?' != *stop && '#' != *stop) {
|
|
102
|
+
stop++;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
authority = sek_strndup(pool, rest, (size_t)(stop - rest));
|
|
106
|
+
at = strrchr(authority, '@');
|
|
107
|
+
|
|
108
|
+
if (NULL == at) {
|
|
109
|
+
return sek_strdup(pool, addr);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
head = (size_t)(rest - addr);
|
|
113
|
+
|
|
114
|
+
return sek_fmt(pool, "%.*s[redacted]%s", (int)head, addr, rest + (size_t)(at - authority));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Refuse to send a secret-bearing credential in the clear.
|
|
118
|
+
*
|
|
119
|
+
* A vault API is HTTPS in any real deployment; plaintext is a dev-mode
|
|
120
|
+
* convenience. Sending a token over http to anything but the local
|
|
121
|
+
* machine puts both the token and the secret it fetches on the wire for
|
|
122
|
+
* anyone on the path, so sekreto will not do it. Loopback stays allowed:
|
|
123
|
+
* that is `vault server -dev`, `boru vault serve` and this repository's
|
|
124
|
+
* own test harness.
|
|
125
|
+
*
|
|
126
|
+
* The address is read BY HAND, in the same handful of steps in every
|
|
127
|
+
* port, rather than by a platform URL parser. Twelve parsers disagree
|
|
128
|
+
* about malformed input - where userinfo ends, whether `0177.0.0.1` is
|
|
129
|
+
* loopback, what an unclosed bracket means - and a check that answers
|
|
130
|
+
* differently in different ports is not a check.
|
|
131
|
+
*
|
|
132
|
+
* The rule this parse obeys, and the reason it can be trusted: it is
|
|
133
|
+
* never MORE PERMISSIVE than the HTTP client that will dial the address.
|
|
134
|
+
* It ends the authority at `/`, `?` or `#` only, so a client that also
|
|
135
|
+
* breaks on `\` can only ever see a SHORTER host than this does. It
|
|
136
|
+
* refuses userinfo outright rather than locating its end. It compares the
|
|
137
|
+
* host literally, so a numeric form no parser agrees on is refused rather
|
|
138
|
+
* than guessed at. */
|
|
139
|
+
sek_err sek_checkaddr(sek_pool *pool, const char *addr) {
|
|
140
|
+
const char *rest;
|
|
141
|
+
const char *stop;
|
|
142
|
+
char *authority;
|
|
143
|
+
char *host;
|
|
144
|
+
int tls;
|
|
145
|
+
|
|
146
|
+
if (NULL == addr) {
|
|
147
|
+
addr = "";
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* A literal, case-sensitive prefix. `HTTP://localhost` is refused. */
|
|
151
|
+
if (sek_has_prefix(addr, "https://")) {
|
|
152
|
+
rest = addr + 8;
|
|
153
|
+
tls = 1;
|
|
154
|
+
} else if (sek_has_prefix(addr, "http://")) {
|
|
155
|
+
rest = addr + 7;
|
|
156
|
+
tls = 0;
|
|
157
|
+
} else {
|
|
158
|
+
return sek_fmt(pool, "sekreto: not an http(s) address: %s", sek_safeaddr(pool, addr));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
stop = rest;
|
|
162
|
+
while ('\0' != *stop && '/' != *stop && '?' != *stop && '#' != *stop) {
|
|
163
|
+
stop++;
|
|
164
|
+
}
|
|
165
|
+
authority = sek_strndup(pool, rest, (size_t)(stop - rest));
|
|
166
|
+
|
|
167
|
+
/* Userinfo is refused outright rather than parsed around, and on https
|
|
168
|
+
* as well as http. No store this library speaks authenticates by
|
|
169
|
+
* userinfo - they take a token or a signature - so an address carrying
|
|
170
|
+
* one is a mistake at best. At worst it is the attack this whole
|
|
171
|
+
* function exists to stop: `http://localhost:8200@evil.example.com/` is
|
|
172
|
+
* a request to evil.example.com that reads, to anything splitting the
|
|
173
|
+
* authority on ':', as loopback. */
|
|
174
|
+
if (NULL != strchr(authority, '@')) {
|
|
175
|
+
return sek_fmt(pool, "sekreto: refusing an address with embedded credentials: %s",
|
|
176
|
+
sek_safeaddr(pool, addr));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* An opening bracket with no closing one is not an address at all. */
|
|
180
|
+
if ('[' == authority[0] && NULL == strchr(authority, ']')) {
|
|
181
|
+
return sek_fmt(pool, "sekreto: not a valid http(s) address: %s", sek_safeaddr(pool, addr));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (tls) {
|
|
185
|
+
return NULL;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* A bracketed IPv6 literal keeps its brackets. Splitting the authority
|
|
189
|
+
* on the first colon yields `[`, so `http://[::1]:8200` could never
|
|
190
|
+
* match the allowlist below - which refuses a legitimate local vault. */
|
|
191
|
+
if ('[' == authority[0]) {
|
|
192
|
+
const char *close = strchr(authority, ']');
|
|
193
|
+
host = sek_strndup(pool, authority, (size_t)(close - authority) + 1);
|
|
194
|
+
} else {
|
|
195
|
+
const char *colon = strchr(authority, ':');
|
|
196
|
+
host = NULL == colon ? sek_strdup(pool, authority)
|
|
197
|
+
: sek_strndup(pool, authority, (size_t)(colon - authority));
|
|
198
|
+
}
|
|
199
|
+
host = sek_lowercase(pool, host);
|
|
200
|
+
|
|
201
|
+
/* Literal, and exactly four entries. Nothing is normalised:
|
|
202
|
+
* `0177.0.0.1`, `2130706433`, `127.0.0.2` and `[::ffff:127.0.0.1]` are
|
|
203
|
+
* all refused, because no two URL parsers agree on what they mean. */
|
|
204
|
+
if (0 == strcmp(host, "localhost") || 0 == strcmp(host, "127.0.0.1") ||
|
|
205
|
+
0 == strcmp(host, "::1") || 0 == strcmp(host, "[::1]")) {
|
|
206
|
+
return NULL;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return sek_fmt(pool, "sekreto: refusing to send a token in plaintext to %s (use https)",
|
|
210
|
+
sek_safeaddr(pool, addr));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* ---- the four built-in kinds --------------------------------------- */
|
|
214
|
+
|
|
215
|
+
/* `env`, `memory`, `dotenv` and `file`: the floor every chain stands on.
|
|
216
|
+
* A chain of these works with no plugin loaded at all, which is the
|
|
217
|
+
* property the whole split exists to give a consumer.
|
|
218
|
+
*
|
|
219
|
+
* Each is the same shape as a plugin - a lookup, a describe, and a `make`
|
|
220
|
+
* that a voxgig/plugin definition calls - so there is one mechanism here
|
|
221
|
+
* and not two. */
|
|
222
|
+
|
|
223
|
+
/* ---- env ----------------------------------------------------------- */
|
|
224
|
+
|
|
225
|
+
typedef struct {
|
|
226
|
+
sek_pool *pool;
|
|
227
|
+
const char *prefix;
|
|
228
|
+
char *described;
|
|
229
|
+
} envdata;
|
|
230
|
+
|
|
231
|
+
static sek_err env_lookup(sek_provider *self, const char *name, char **out) {
|
|
232
|
+
envdata *data = (envdata *)self->data;
|
|
233
|
+
char *key = NULL;
|
|
234
|
+
sek_err err = sek_envkey(data->pool, name, data->prefix, &key);
|
|
235
|
+
const char *found;
|
|
236
|
+
|
|
237
|
+
*out = NULL;
|
|
238
|
+
|
|
239
|
+
if (NULL != err) {
|
|
240
|
+
return err;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
found = getenv(key);
|
|
244
|
+
if (NULL != found) {
|
|
245
|
+
*out = sek_strdup(data->pool, found);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return NULL;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
static const char *env_describe(sek_provider *self) {
|
|
252
|
+
return ((envdata *)self->data)->described;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* ---- memory -------------------------------------------------------- */
|
|
256
|
+
|
|
257
|
+
typedef struct {
|
|
258
|
+
sek_pool *pool;
|
|
259
|
+
sek_map *values;
|
|
260
|
+
const char *prefix;
|
|
261
|
+
char *described;
|
|
262
|
+
} memorydata;
|
|
263
|
+
|
|
264
|
+
static sek_err memory_lookup(sek_provider *self, const char *name, char **out) {
|
|
265
|
+
memorydata *data = (memorydata *)self->data;
|
|
266
|
+
char *key = NULL;
|
|
267
|
+
sek_err err = sek_envkey(data->pool, name, data->prefix, &key);
|
|
268
|
+
const char *found;
|
|
269
|
+
|
|
270
|
+
*out = NULL;
|
|
271
|
+
|
|
272
|
+
if (NULL != err) {
|
|
273
|
+
return err;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/* An absent key is a miss and the empty string is a HIT, so this asks
|
|
277
|
+
* the map rather than reading a value and testing it for emptiness. */
|
|
278
|
+
found = sek_map_get(data->values, key);
|
|
279
|
+
if (NULL != found) {
|
|
280
|
+
*out = sek_strdup(data->pool, found);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return NULL;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
static const char *memory_describe(sek_provider *self) {
|
|
287
|
+
return ((memorydata *)self->data)->described;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/* ---- dotenv -------------------------------------------------------- */
|
|
291
|
+
|
|
292
|
+
typedef struct {
|
|
293
|
+
sek_pool *pool;
|
|
294
|
+
const char *file;
|
|
295
|
+
const char *prefix;
|
|
296
|
+
sek_map *values; /* NULL until the first lookup */
|
|
297
|
+
char *described;
|
|
298
|
+
} dotenvdata;
|
|
299
|
+
|
|
300
|
+
/* Read once, LAZILY, and memoised. Lazily because the `stores` corpus
|
|
301
|
+
* group puts a dotenv provider in a chain and never looks anything up: an
|
|
302
|
+
* eager constructor would read whatever .env happened to sit in the
|
|
303
|
+
* test's working directory. */
|
|
304
|
+
static sek_err dotenv_load(dotenvdata *data) {
|
|
305
|
+
char *text;
|
|
306
|
+
int why = 0;
|
|
307
|
+
|
|
308
|
+
if (NULL != data->values) {
|
|
309
|
+
return NULL;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
text = sek_readfile(data->pool, data->file, &why);
|
|
313
|
+
|
|
314
|
+
if (NULL == text) {
|
|
315
|
+
if (sek_absent(why)) {
|
|
316
|
+
/* No file, or no directory: "no secrets here", not a failure. */
|
|
317
|
+
data->values = sek_map_new(data->pool);
|
|
318
|
+
return NULL;
|
|
319
|
+
}
|
|
320
|
+
return sek_fmt(data->pool, "sekreto: dotenv provider cannot read %s: %s", data->file,
|
|
321
|
+
strerror(why));
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
data->values = sek_parsedotenv(data->pool, text);
|
|
325
|
+
|
|
326
|
+
return NULL;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
static sek_err dotenv_lookup(sek_provider *self, const char *name, char **out) {
|
|
330
|
+
dotenvdata *data = (dotenvdata *)self->data;
|
|
331
|
+
char *key = NULL;
|
|
332
|
+
sek_err err;
|
|
333
|
+
const char *found;
|
|
334
|
+
|
|
335
|
+
*out = NULL;
|
|
336
|
+
|
|
337
|
+
err = sek_envkey(data->pool, name, data->prefix, &key);
|
|
338
|
+
if (NULL != err) {
|
|
339
|
+
return err;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
err = dotenv_load(data);
|
|
343
|
+
if (NULL != err) {
|
|
344
|
+
return err;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
found = sek_map_get(data->values, key);
|
|
348
|
+
if (NULL != found) {
|
|
349
|
+
*out = sek_strdup(data->pool, found);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return NULL;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
static const char *dotenv_describe(sek_provider *self) {
|
|
356
|
+
return ((dotenvdata *)self->data)->described;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/* ---- file ---------------------------------------------------------- */
|
|
360
|
+
|
|
361
|
+
typedef struct {
|
|
362
|
+
sek_pool *pool;
|
|
363
|
+
const char *dir;
|
|
364
|
+
const char *prefix;
|
|
365
|
+
char *described;
|
|
366
|
+
} filedata;
|
|
367
|
+
|
|
368
|
+
/* One secret per file, keyed like the environment: `api.token` reads
|
|
369
|
+
* `<dir>/API_TOKEN`. This is the shape of a mounted Kubernetes Secret, a
|
|
370
|
+
* Docker or Swarm secret, and a systemd credentials directory, so those
|
|
371
|
+
* all work with no further configuration. Read on EVERY lookup, with no
|
|
372
|
+
* caching: a rotated secret is a rewritten file. */
|
|
373
|
+
static sek_err file_lookup(sek_provider *self, const char *name, char **out) {
|
|
374
|
+
filedata *data = (filedata *)self->data;
|
|
375
|
+
char *key = NULL;
|
|
376
|
+
sek_err err = sek_envkey(data->pool, name, data->prefix, &key);
|
|
377
|
+
char *path;
|
|
378
|
+
char *text;
|
|
379
|
+
size_t len;
|
|
380
|
+
int why = 0;
|
|
381
|
+
|
|
382
|
+
*out = NULL;
|
|
383
|
+
|
|
384
|
+
if (NULL != err) {
|
|
385
|
+
return err;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
path = sek_empty(data->dir) ? key : sek_fmt(data->pool, "%s/%s", data->dir, key);
|
|
389
|
+
|
|
390
|
+
text = sek_readfile(data->pool, path, &why);
|
|
391
|
+
|
|
392
|
+
if (NULL == text) {
|
|
393
|
+
if (sek_absent(why)) {
|
|
394
|
+
return NULL;
|
|
395
|
+
}
|
|
396
|
+
/* The JOINED path, not the directory: that is what could not be
|
|
397
|
+
* read. */
|
|
398
|
+
return sek_fmt(data->pool, "sekreto: file provider cannot read %s: %s", path, strerror(why));
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/* Exactly one trailing newline, `\r\n` before `\n`, and only at the
|
|
402
|
+
* end. Tools that write these files disagree about it, and a newline is
|
|
403
|
+
* never part of a secret on purpose - one left on turns a bearer header
|
|
404
|
+
* into a malformed one. */
|
|
405
|
+
len = strlen(text);
|
|
406
|
+
if (2 <= len && '\r' == text[len - 2] && '\n' == text[len - 1]) {
|
|
407
|
+
text = sek_strndup(data->pool, text, len - 2);
|
|
408
|
+
} else if (1 <= len && '\n' == text[len - 1]) {
|
|
409
|
+
text = sek_strndup(data->pool, text, len - 1);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
*out = text;
|
|
413
|
+
|
|
414
|
+
return NULL;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
static const char *file_describe(sek_provider *self) {
|
|
418
|
+
return ((filedata *)self->data)->described;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
/* ---- a spec, as a plugin instance's options ------------------------ */
|
|
423
|
+
|
|
424
|
+
/* The spec's own key names - the ones the shared spec and a config file
|
|
425
|
+
* use - paired with where each lands in a sek_spec.
|
|
426
|
+
*
|
|
427
|
+
* A TABLE RATHER THAN THIRTY LINES EACH WAY, because the two directions
|
|
428
|
+
* must not drift: a field written but not read is a store configured with
|
|
429
|
+
* a value it never sees, and the conformance suite only notices for the
|
|
430
|
+
* handful of fields its chains set. Every string field is here; `values`,
|
|
431
|
+
* `kv` and `auth` are not strings and are handled below. */
|
|
432
|
+
typedef struct {
|
|
433
|
+
const char *key;
|
|
434
|
+
size_t at;
|
|
435
|
+
} strfield;
|
|
436
|
+
|
|
437
|
+
#define SEK_FIELD(name, member) {name, offsetof(sek_spec, member)}
|
|
438
|
+
#define SEK_FIELD_AUTH(name, member) {name, offsetof(sek_authspec, member)}
|
|
439
|
+
|
|
440
|
+
static const strfield STRFIELDS[] = {
|
|
441
|
+
SEK_FIELD("kind", kind),
|
|
442
|
+
SEK_FIELD("name", name),
|
|
443
|
+
SEK_FIELD("prefix", prefix),
|
|
444
|
+
SEK_FIELD("file", file),
|
|
445
|
+
SEK_FIELD("dir", dir),
|
|
446
|
+
SEK_FIELD("addr", addr),
|
|
447
|
+
SEK_FIELD("token", token),
|
|
448
|
+
SEK_FIELD("mount", mount),
|
|
449
|
+
SEK_FIELD("vaultnamespace", vaultnamespace),
|
|
450
|
+
SEK_FIELD("command", command),
|
|
451
|
+
SEK_FIELD("profile", profile),
|
|
452
|
+
SEK_FIELD("backend", backend),
|
|
453
|
+
SEK_FIELD("reason", reason),
|
|
454
|
+
/* `namespace` is a keyword in C++ and several of the ports, so the C
|
|
455
|
+
* struct spells it `namespace_`; the wire key is the spec's. */
|
|
456
|
+
SEK_FIELD("namespace", namespace_),
|
|
457
|
+
SEK_FIELD("home", home),
|
|
458
|
+
SEK_FIELD("region", region),
|
|
459
|
+
SEK_FIELD("keyid", keyid),
|
|
460
|
+
SEK_FIELD("secret", secret),
|
|
461
|
+
SEK_FIELD("session", session),
|
|
462
|
+
SEK_FIELD("project", project),
|
|
463
|
+
SEK_FIELD("vault", vault),
|
|
464
|
+
SEK_FIELD("tenant", tenant),
|
|
465
|
+
SEK_FIELD("clientid", clientid),
|
|
466
|
+
SEK_FIELD("clientsecret", clientsecret),
|
|
467
|
+
SEK_FIELD("loginaddr", loginaddr),
|
|
468
|
+
SEK_FIELD("imdsaddr", imdsaddr),
|
|
469
|
+
SEK_FIELD("metadataaddr", metadataaddr),
|
|
470
|
+
SEK_FIELD("apiversion", apiversion),
|
|
471
|
+
SEK_FIELD("config", config),
|
|
472
|
+
SEK_FIELD("environment", environment),
|
|
473
|
+
SEK_FIELD("path", path),
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
static const strfield AUTHFIELDS[] = {
|
|
477
|
+
SEK_FIELD_AUTH("method", method), SEK_FIELD_AUTH("mount", mount),
|
|
478
|
+
SEK_FIELD_AUTH("role", role), SEK_FIELD_AUTH("jwt", jwt),
|
|
479
|
+
SEK_FIELD_AUTH("jwtfile", jwtfile), SEK_FIELD_AUTH("roleid", roleid),
|
|
480
|
+
SEK_FIELD_AUTH("secretid", secretid),
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
static const char **fieldof(sek_spec *spec, size_t at) {
|
|
484
|
+
return (const char **)((char *)spec + at);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
static const char *const *readfield(const sek_spec *spec, size_t at) {
|
|
488
|
+
return (const char *const *)((const char *)spec + at);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
static const char **authfieldof(sek_authspec *auth, size_t at) {
|
|
492
|
+
return (const char **)((char *)auth + at);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
static const char *const *readauth(const sek_authspec *auth, size_t at) {
|
|
496
|
+
return (const char *const *)((const char *)auth + at);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/* A spec as the options map its plugin instance is declared with.
|
|
500
|
+
*
|
|
501
|
+
* Only fields that are SET are written, so an instance's options read
|
|
502
|
+
* like the chain entry that produced them. An empty string is set: it
|
|
503
|
+
* means the same as unset everywhere in this library, but round-tripping
|
|
504
|
+
* it unchanged is what keeps the two directions honest. */
|
|
505
|
+
Value *sek_optionsof(const sek_spec *spec) {
|
|
506
|
+
Value *options = vmap();
|
|
507
|
+
size_t index;
|
|
508
|
+
|
|
509
|
+
for (index = 0; index < sizeof(STRFIELDS) / sizeof(STRFIELDS[0]); index++) {
|
|
510
|
+
const char *value = *readfield(spec, STRFIELDS[index].at);
|
|
511
|
+
if (NULL != value) {
|
|
512
|
+
vset(options, STRFIELDS[index].key, vstr(value));
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
if (NULL != spec->values) {
|
|
517
|
+
Value *values = vmap();
|
|
518
|
+
size_t at;
|
|
519
|
+
for (at = 0; at < spec->values->len; at++) {
|
|
520
|
+
vset(values, spec->values->keys[at], vstr(spec->values->vals[at]));
|
|
521
|
+
}
|
|
522
|
+
vset(options, "values", values);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (spec->haskv) {
|
|
526
|
+
vset(options, "kv", vnum(spec->kv));
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
if (NULL != spec->auth) {
|
|
530
|
+
Value *auth = vmap();
|
|
531
|
+
for (index = 0; index < sizeof(AUTHFIELDS) / sizeof(AUTHFIELDS[0]); index++) {
|
|
532
|
+
const char *value = *readauth(spec->auth, AUTHFIELDS[index].at);
|
|
533
|
+
if (NULL != value) {
|
|
534
|
+
vset(auth, AUTHFIELDS[index].key, vstr(value));
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
vset(options, "auth", auth);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
return options;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* ...and back, as the kind's `define` reads it.
|
|
544
|
+
*
|
|
545
|
+
* Every string is copied into the pool. The options map lives in
|
|
546
|
+
* voxgig/plugin's arena, which this library never resets and therefore
|
|
547
|
+
* never frees; copying keeps the ownership rule this header states - a
|
|
548
|
+
* provider's strings come from the pool it was built with - true anyway,
|
|
549
|
+
* rather than true by accident. */
|
|
550
|
+
static sek_spec specof(sek_pool *pool, Value *options) {
|
|
551
|
+
sek_spec spec = sek_spec_new(NULL);
|
|
552
|
+
Value *values = vget(options, "values");
|
|
553
|
+
Value *kv = vget(options, "kv");
|
|
554
|
+
Value *auth = vget(options, "auth");
|
|
555
|
+
size_t index;
|
|
556
|
+
|
|
557
|
+
for (index = 0; index < sizeof(STRFIELDS) / sizeof(STRFIELDS[0]); index++) {
|
|
558
|
+
Value *held = vget(options, STRFIELDS[index].key);
|
|
559
|
+
if (visstr(held)) {
|
|
560
|
+
*fieldof(&spec, STRFIELDS[index].at) = sek_strdup(pool, vasstr(held));
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
if (vismap(values)) {
|
|
565
|
+
const char **keys;
|
|
566
|
+
size_t count = vkeys(values, &keys);
|
|
567
|
+
size_t at;
|
|
568
|
+
spec.values = sek_map_new(pool);
|
|
569
|
+
for (at = 0; at < count; at++) {
|
|
570
|
+
Value *held = vget(values, keys[at]);
|
|
571
|
+
sek_map_set(spec.values, keys[at], visstr(held) ? vasstr(held) : vjson(held));
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (visnum(kv)) {
|
|
576
|
+
spec.kv = (int)vasnum(kv);
|
|
577
|
+
spec.haskv = 1;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
if (vismap(auth)) {
|
|
581
|
+
sek_authspec *use = (sek_authspec *)sek_alloc(pool, sizeof(sek_authspec));
|
|
582
|
+
for (index = 0; index < sizeof(AUTHFIELDS) / sizeof(AUTHFIELDS[0]); index++) {
|
|
583
|
+
Value *held = vget(auth, AUTHFIELDS[index].key);
|
|
584
|
+
if (visstr(held)) {
|
|
585
|
+
*authfieldof(use, AUTHFIELDS[index].at) = sek_strdup(pool, vasstr(held));
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
spec.auth = use;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
return spec;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/* ---- the bridge ---------------------------------------------------- */
|
|
595
|
+
|
|
596
|
+
/* WHAT `define` NEEDS AND A voxgig/plugin Definition CANNOT CARRY.
|
|
597
|
+
*
|
|
598
|
+
* plugin's value model holds numbers and strings, never pointers, and a
|
|
599
|
+
* Definition is data with function pointers in it and no context. So the
|
|
600
|
+
* pool a provider is allocated from, and the providers themselves, travel
|
|
601
|
+
* through this file-scope slot for the duration of one sek_new - the same
|
|
602
|
+
* shape the zig port uses, and the shape plugin's own C port uses for its
|
|
603
|
+
* pending error. A definition exports the INDEX of the provider it built
|
|
604
|
+
* and sek_new reads it back.
|
|
605
|
+
*
|
|
606
|
+
* The port claims no thread safety across constructions, and says so on
|
|
607
|
+
* sek_new. Nothing here is touched after sek_new returns. */
|
|
608
|
+
typedef struct {
|
|
609
|
+
sek_pool *pool;
|
|
610
|
+
sek_provider **built;
|
|
611
|
+
size_t len;
|
|
612
|
+
size_t cap;
|
|
613
|
+
} building;
|
|
614
|
+
|
|
615
|
+
static building SLOT;
|
|
616
|
+
static building *BUILDING = NULL;
|
|
617
|
+
|
|
618
|
+
void sek_build_begin(sek_pool *pool) {
|
|
619
|
+
memset(&SLOT, 0, sizeof(SLOT));
|
|
620
|
+
SLOT.pool = pool;
|
|
621
|
+
BUILDING = &SLOT;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
void sek_build_end(void) { BUILDING = NULL; }
|
|
625
|
+
|
|
626
|
+
/* The provider a definition exported, by the index it exported. Answers
|
|
627
|
+
* NULL for an index no `define` of this construction handed out, which is
|
|
628
|
+
* how a Definition that is not a provider plugin at all is caught.
|
|
629
|
+
*
|
|
630
|
+
* THE RANGE IS CHECKED AS A DOUBLE, BEFORE THE CAST. An export is a plugin
|
|
631
|
+
* number, so a hand-written definition may put any double under the export
|
|
632
|
+
* key, and converting one that does not fit a size_t is undefined - on
|
|
633
|
+
* x86-64 gcc it wraps, and 1e30 came back as index 0, which is a live
|
|
634
|
+
* provider of this construction rather than the NULL this function
|
|
635
|
+
* promises. Written as `!(index < len)` rather than `index >= len` so that
|
|
636
|
+
* a NaN, which compares false with everything, is refused as well. */
|
|
637
|
+
sek_provider *sek_build_at(double index) {
|
|
638
|
+
if (NULL == BUILDING || !(0 <= index) || !(index < (double)BUILDING->len)) {
|
|
639
|
+
return NULL;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
return BUILDING->built[(size_t)index];
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
static double keep(sek_provider *provider) {
|
|
646
|
+
if (BUILDING->len == BUILDING->cap) {
|
|
647
|
+
size_t cap = 0 == BUILDING->cap ? 8 : BUILDING->cap * 2;
|
|
648
|
+
sek_provider **bigger =
|
|
649
|
+
(sek_provider **)sek_alloc(BUILDING->pool, cap * sizeof(sek_provider *));
|
|
650
|
+
/* Guarded: the first growth copies from a NULL `built`, and memcpy's
|
|
651
|
+
* source is declared never-null even for a length of zero. */
|
|
652
|
+
if (0 < BUILDING->len) {
|
|
653
|
+
memcpy(bigger, BUILDING->built, BUILDING->len * sizeof(sek_provider *));
|
|
654
|
+
}
|
|
655
|
+
BUILDING->built = bigger;
|
|
656
|
+
BUILDING->cap = cap;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
BUILDING->built[BUILDING->len] = provider;
|
|
660
|
+
|
|
661
|
+
return (double)BUILDING->len++;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/* The one `define` every provider kind shares.
|
|
665
|
+
*
|
|
666
|
+
* It finds its own kind's `make` by asking the host's catalog for the
|
|
667
|
+
* definition registered under this instance's name and casting it back to
|
|
668
|
+
* the sek_providerkind it is the first member of. That is why `def` must
|
|
669
|
+
* stay first, and it is what makes a plugin a data structure rather than
|
|
670
|
+
* a generated function per kind. A Definition that is NOT one of ours
|
|
671
|
+
* never reaches here - it has its own `define`, or none - and sek_new
|
|
672
|
+
* refuses it by name when it exports no provider. */
|
|
673
|
+
static void provider_define(Inst *inst) {
|
|
674
|
+
Definition *def = catalog_get(host_catalog(inst_host(inst)), inst_name(inst));
|
|
675
|
+
sek_providerkind *kind = (sek_providerkind *)def;
|
|
676
|
+
sek_provider *made = NULL;
|
|
677
|
+
sek_spec spec;
|
|
678
|
+
sek_err err;
|
|
679
|
+
|
|
680
|
+
spec = specof(BUILDING->pool, inst_options(inst));
|
|
681
|
+
|
|
682
|
+
err = kind->make(BUILDING->pool, &spec, &made);
|
|
683
|
+
|
|
684
|
+
/* A refusal crosses the boundary under sekreto's own code, carrying the
|
|
685
|
+
* message as `cause`, and sek_new turns it back into a sek_err. The
|
|
686
|
+
* shared spec pins these byte for byte, so the host must not rewrite
|
|
687
|
+
* them - and it does not: plugin keeps an error that already has a
|
|
688
|
+
* code, and only wraps a code-less one as plugin_define_failed. */
|
|
689
|
+
if (NULL != err) {
|
|
690
|
+
fail(SEK_ERROR_CODE, err, details2("ref", vstr(inst_ref(inst)), "cause", vstr(err)));
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
inst_export(inst, SEK_PROVIDER_EXPORT, vnum(keep(made)));
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
Definition *sek_providerplugin(sek_providerkind *slot, const char *kind, sek_makefn make) {
|
|
697
|
+
memset(slot, 0, sizeof(*slot));
|
|
698
|
+
|
|
699
|
+
slot->def.name = kind;
|
|
700
|
+
slot->def.define = provider_define;
|
|
701
|
+
slot->make = make;
|
|
702
|
+
|
|
703
|
+
return &slot->def;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/* ---- the built-in kinds, as definitions ---------------------------- */
|
|
707
|
+
|
|
708
|
+
/* A spec string, copied into the pool: a spec is the caller's and may be
|
|
709
|
+
* a stack value that is gone by the first lookup.
|
|
710
|
+
*
|
|
711
|
+
* Not static, and neither is the one below it: every plugin's `make` is
|
|
712
|
+
* written against the same two, so a kind under `plugins/` is built
|
|
713
|
+
* exactly the way a built-in is. */
|
|
714
|
+
const char *sek_own(sek_pool *pool, const char *text) {
|
|
715
|
+
return NULL == text ? NULL : sek_strdup(pool, text);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
sek_provider *sek_provider_new(sek_pool *pool,
|
|
719
|
+
sek_err (*lookup)(sek_provider *, const char *, char **),
|
|
720
|
+
const char *(*describe)(sek_provider *), void *data) {
|
|
721
|
+
sek_provider *out = (sek_provider *)sek_alloc(pool, sizeof(sek_provider));
|
|
722
|
+
|
|
723
|
+
out->lookup = lookup;
|
|
724
|
+
out->describe = describe;
|
|
725
|
+
out->data = data;
|
|
726
|
+
out->pool = pool;
|
|
727
|
+
|
|
728
|
+
return out;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
static sek_err env_make(sek_pool *pool, const sek_spec *spec, sek_provider **out) {
|
|
732
|
+
envdata *data = (envdata *)sek_alloc(pool, sizeof(envdata));
|
|
733
|
+
|
|
734
|
+
data->pool = pool;
|
|
735
|
+
data->prefix = sek_own(pool, spec->prefix);
|
|
736
|
+
data->described =
|
|
737
|
+
sek_empty(spec->prefix) ? sek_strdup(pool, "env") : sek_fmt(pool, "env:%s", spec->prefix);
|
|
738
|
+
|
|
739
|
+
*out = sek_provider_new(pool, env_lookup, env_describe, data);
|
|
740
|
+
|
|
741
|
+
return NULL;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
static sek_err memory_make(sek_pool *pool, const sek_spec *spec, sek_provider **out) {
|
|
745
|
+
memorydata *data = (memorydata *)sek_alloc(pool, sizeof(memorydata));
|
|
746
|
+
|
|
747
|
+
data->pool = pool;
|
|
748
|
+
data->prefix = sek_own(pool, spec->prefix);
|
|
749
|
+
data->values = sek_map_new(pool);
|
|
750
|
+
if (NULL != spec->values) {
|
|
751
|
+
size_t index;
|
|
752
|
+
for (index = 0; index < spec->values->len; index++) {
|
|
753
|
+
sek_map_set(data->values, spec->values->keys[index], spec->values->vals[index]);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
data->described = sek_empty(spec->prefix) ? sek_strdup(pool, "memory")
|
|
757
|
+
: sek_fmt(pool, "memory:%s", spec->prefix);
|
|
758
|
+
|
|
759
|
+
*out = sek_provider_new(pool, memory_lookup, memory_describe, data);
|
|
760
|
+
|
|
761
|
+
return NULL;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
static sek_err dotenv_make(sek_pool *pool, const sek_spec *spec, sek_provider **out) {
|
|
765
|
+
dotenvdata *data = (dotenvdata *)sek_alloc(pool, sizeof(dotenvdata));
|
|
766
|
+
|
|
767
|
+
data->pool = pool;
|
|
768
|
+
data->file = sek_own(pool, sek_empty(spec->file) ? ".env" : spec->file);
|
|
769
|
+
data->prefix = sek_own(pool, spec->prefix);
|
|
770
|
+
data->values = NULL;
|
|
771
|
+
data->described = sek_fmt(pool, "dotenv:%s", data->file);
|
|
772
|
+
|
|
773
|
+
*out = sek_provider_new(pool, dotenv_lookup, dotenv_describe, data);
|
|
774
|
+
|
|
775
|
+
return NULL;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
static sek_err file_make(sek_pool *pool, const sek_spec *spec, sek_provider **out) {
|
|
779
|
+
filedata *data = (filedata *)sek_alloc(pool, sizeof(filedata));
|
|
780
|
+
|
|
781
|
+
data->pool = pool;
|
|
782
|
+
data->dir = sek_own(pool, sek_orempty(spec->dir));
|
|
783
|
+
data->prefix = sek_own(pool, spec->prefix);
|
|
784
|
+
data->described = sek_fmt(pool, "file:%s", data->dir);
|
|
785
|
+
|
|
786
|
+
*out = sek_provider_new(pool, file_lookup, file_describe, data);
|
|
787
|
+
|
|
788
|
+
return NULL;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
/* The four, as definitions, in the order sek_new puts them in a catalog.
|
|
792
|
+
* File-scope storage rather than a pool allocation: a definition is code
|
|
793
|
+
* plus a name, the same for every Sekreto in the process, and nothing
|
|
794
|
+
* here is written after the first call. */
|
|
795
|
+
static sek_providerkind BUILTINKINDS[4];
|
|
796
|
+
static Definition *BUILTINDEFS[4];
|
|
797
|
+
|
|
798
|
+
size_t sek_builtins(Definition ***out) {
|
|
799
|
+
BUILTINDEFS[0] = sek_providerplugin(&BUILTINKINDS[0], "env", env_make);
|
|
800
|
+
BUILTINDEFS[1] = sek_providerplugin(&BUILTINKINDS[1], "memory", memory_make);
|
|
801
|
+
BUILTINDEFS[2] = sek_providerplugin(&BUILTINKINDS[2], "dotenv", dotenv_make);
|
|
802
|
+
BUILTINDEFS[3] = sek_providerplugin(&BUILTINKINDS[3], "file", file_make);
|
|
803
|
+
|
|
804
|
+
*out = BUILTINDEFS;
|
|
805
|
+
|
|
806
|
+
return 4;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
const char *const SEK_BUILTIN_KINDS[] = {"env", "memory", "dotenv", "file", NULL};
|
|
810
|
+
|
|
811
|
+
const char *const SEK_PLUGIN_KINDS[] = {
|
|
812
|
+
"hashicorp", "boru", "awssecrets", "awsparams", "gcpsecrets",
|
|
813
|
+
"azuresecrets", "onepassword", "doppler", "infisical", "secretspec", NULL};
|