@voxgig/sdkgen 4.19.1 → 4.21.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/helpers/applicability.js +11 -6
- package/dist/helpers/applicability.js.map +1 -1
- package/dist/helpers/collectDeps.js +31 -6
- package/dist/helpers/collectDeps.js.map +1 -1
- package/dist/helpers/naming.js +2 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/sdkgen.d.ts +2 -2
- package/dist/sdkgen.js +6 -3
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.d.ts +4 -1
- package/dist/utility.js +60 -0
- package/dist/utility.js.map +1 -1
- package/model/sdkgen.aon +59 -3
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +128 -0
- package/project/.sdk/model/feature/validate.aon +3 -2
- package/project/.sdk/model/target/c.aon +1 -1
- package/project/.sdk/model/target/clojure.aon +1 -1
- package/project/.sdk/model/target/cpp.aon +1 -1
- package/project/.sdk/model/target/csharp.aon +1 -1
- package/project/.sdk/model/target/elixir.aon +1 -1
- package/project/.sdk/model/target/go.aon +1 -1
- package/project/.sdk/model/target/java.aon +1 -1
- package/project/.sdk/model/target/kotlin.aon +1 -1
- package/project/.sdk/model/target/lua.aon +1 -1
- package/project/.sdk/model/target/ocaml.aon +1 -1
- package/project/.sdk/model/target/perl.aon +1 -1
- package/project/.sdk/model/target/php.aon +1 -1
- package/project/.sdk/model/target/py.aon +1 -1
- package/project/.sdk/model/target/rb.aon +1 -1
- package/project/.sdk/model/target/rust.aon +1 -1
- package/project/.sdk/model/target/scala.aon +1 -1
- package/project/.sdk/model/target/swift.aon +1 -1
- package/project/.sdk/model/target/zig.aon +1 -1
- package/project/.sdk/src/cmp/c/Config_c.ts +15 -0
- package/project/.sdk/src/cmp/c/Main_c.ts +18 -0
- package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +371 -0
- package/project/.sdk/src/cmp/c/Schema_c.ts +106 -0
- package/project/.sdk/src/cmp/clojure/Config_clojure.ts +47 -1
- package/project/.sdk/src/cmp/clojure/Main_clojure.ts +13 -1
- package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +374 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +1 -0
- package/project/.sdk/src/cmp/clojure/Schema_clojure.ts +73 -0
- package/project/.sdk/src/cmp/cpp/Config_cpp.ts +40 -0
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +20 -0
- package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +441 -0
- package/project/.sdk/src/cmp/cpp/Schema_cpp.ts +105 -0
- package/project/.sdk/src/cmp/csharp/Config_csharp.ts +42 -1
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +21 -0
- package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +392 -0
- package/project/.sdk/src/cmp/csharp/Schema_csharp.ts +85 -0
- package/project/.sdk/src/cmp/elixir/Config_elixir.ts +36 -1
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +17 -0
- package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +418 -0
- package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +1 -0
- package/project/.sdk/src/cmp/elixir/Schema_elixir.ts +88 -0
- package/project/.sdk/src/cmp/go/Config_go.ts +12 -1
- package/project/.sdk/src/cmp/go/Main_go.ts +16 -0
- package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +322 -0
- package/project/.sdk/src/cmp/go/Schema_go.ts +93 -0
- package/project/.sdk/src/cmp/java/Config_java.ts +20 -1
- package/project/.sdk/src/cmp/java/Main_java.ts +16 -0
- package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +298 -0
- package/project/.sdk/src/cmp/java/Schema_java.ts +125 -0
- package/project/.sdk/src/cmp/js/Config_js.ts +12 -1
- package/project/.sdk/src/cmp/js/Main_js.ts +6 -0
- package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +244 -0
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +23 -1
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +22 -0
- package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +440 -0
- package/project/.sdk/src/cmp/kotlin/Schema_kotlin.ts +111 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +15 -1
- package/project/.sdk/src/cmp/lua/Main_lua.ts +57 -9
- package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -0
- package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +364 -0
- package/project/.sdk/src/cmp/lua/ReadmeExplanation_lua.ts +1 -0
- package/project/.sdk/src/cmp/lua/Schema_lua.ts +72 -0
- package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +55 -2
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +53 -13
- package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +454 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Schema_ocaml.ts +99 -0
- package/project/.sdk/src/cmp/perl/Config_perl.ts +30 -0
- package/project/.sdk/src/cmp/perl/Main_perl.ts +16 -0
- package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +387 -0
- package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +1 -0
- package/project/.sdk/src/cmp/perl/Schema_perl.ts +107 -0
- package/project/.sdk/src/cmp/php/Config_php.ts +12 -1
- package/project/.sdk/src/cmp/php/Main_php.ts +9 -0
- package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
- package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +325 -0
- package/project/.sdk/src/cmp/php/ReadmeExplanation_php.ts +1 -0
- package/project/.sdk/src/cmp/php/Schema_php.ts +129 -0
- package/project/.sdk/src/cmp/py/Config_py.ts +12 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +14 -0
- package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +389 -0
- package/project/.sdk/src/cmp/py/ReadmeExplanation_py.ts +1 -0
- package/project/.sdk/src/cmp/py/Schema_py.ts +72 -0
- package/project/.sdk/src/cmp/rb/Config_rb.ts +18 -1
- package/project/.sdk/src/cmp/rb/Main_rb.ts +12 -0
- package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +305 -0
- package/project/.sdk/src/cmp/rb/ReadmeExplanation_rb.ts +1 -0
- package/project/.sdk/src/cmp/rb/Schema_rb.ts +70 -0
- package/project/.sdk/src/cmp/rust/Config_rust.ts +41 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +19 -0
- package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +410 -0
- package/project/.sdk/src/cmp/rust/Schema_rust.ts +107 -0
- package/project/.sdk/src/cmp/scala/Config_scala.ts +21 -1
- package/project/.sdk/src/cmp/scala/Main_scala.ts +17 -0
- package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +415 -0
- package/project/.sdk/src/cmp/scala/Schema_scala.ts +108 -0
- package/project/.sdk/src/cmp/swift/Config_swift.ts +37 -1
- package/project/.sdk/src/cmp/swift/Main_swift.ts +13 -0
- package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +439 -0
- package/project/.sdk/src/cmp/swift/Schema_swift.ts +92 -0
- package/project/.sdk/src/cmp/ts/Config_ts.ts +12 -1
- package/project/.sdk/src/cmp/ts/Main_ts.ts +5 -0
- package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +237 -0
- package/project/.sdk/src/cmp/zig/Config_zig.ts +33 -1
- package/project/.sdk/src/cmp/zig/Main_zig.ts +19 -0
- package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +545 -0
- package/project/.sdk/src/cmp/zig/Schema_zig.ts +114 -0
- package/project/.sdk/tm/c/core/context.c +3 -0
- package/project/.sdk/tm/c/core/sdk.h +14 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/config.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/config.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/env.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/env.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/export.c +3 -3
- package/project/.sdk/tm/c/feature/secrets/plugin/export.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/host.c +25 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/host.h +3 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/order.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/order.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/point.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/point.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/types.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/types.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/value.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/value.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/version.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugin/version.h +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/minivault.c +2072 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +151 -10
- package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +16 -10
- package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/plugins/support.h +12 -8
- package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +17 -2
- package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +5 -5
- package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +37 -9
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +2 -2
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +17 -2
- package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +16 -2
- package/project/.sdk/tm/c/feature/validate.c +364 -0
- package/project/.sdk/tm/c/feature/validate.h +29 -0
- package/project/.sdk/tm/c/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
- package/project/.sdk/tm/c/utility/make_options.c +12 -24
- package/project/.sdk/tm/c/utility/make_spec.c +8 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +3 -3
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +17 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/minivault.clj +837 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +2 -2
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +6 -4
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +2 -2
- package/project/.sdk/tm/clojure/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/clojure/src/sdk/core.clj +52 -51
- package/project/.sdk/tm/clojure/src/sdk/features.clj +202 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
- package/project/.sdk/tm/cpp/core/types.hpp +4 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +3 -3
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +21 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +3 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +9 -7
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Minivault.cpp +1345 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Minivault.hpp +219 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +22 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +12 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +3 -3
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +2 -2
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +2 -2
- package/project/.sdk/tm/cpp/feature/validate.hpp +301 -0
- package/project/.sdk/tm/cpp/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +42 -63
- package/project/.sdk/tm/csharp/feature/ValidateFeature.cs +343 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +3 -3
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +9 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +21 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/MiniVault.cs +1572 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +2 -2
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +3 -2
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +2 -2
- package/project/.sdk/tm/csharp/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
- package/project/.sdk/tm/csharp/utility/MakeOptions.cs +12 -74
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +24 -3
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +7 -4
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +13 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +15 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +3 -3
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +3 -3
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/minivault.ex +1033 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +17 -5
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +2 -2
- package/project/.sdk/tm/elixir/lib/projectname/feature/validate.ex +320 -0
- package/project/.sdk/tm/elixir/lib/projectname/utility.ex +17 -66
- package/project/.sdk/tm/elixir/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
- 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 +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +25 -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 +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/minivault/format.go +493 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/minivault/minivault.go +1131 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +14 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +2 -2
- package/project/.sdk/tm/go/feature/validate_feature.go +346 -0
- package/project/.sdk/tm/go/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/omni/omni.go +2 -2
- package/project/.sdk/tm/go/test/omni/util.go +2 -2
- package/project/.sdk/tm/go/utility/make_options.go +13 -54
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +24 -8
- package/project/.sdk/tm/java/feature/ValidateFeature.java +330 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +3 -3
- package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +3 -3
- package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +21 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +4 -3
- package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Minivault.java +1448 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +2 -2
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +2 -2
- package/project/.sdk/tm/java/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
- package/project/.sdk/tm/java/utility/MakeOptions.java +13 -33
- package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +3 -3
- package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +17 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/minivault.js +866 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +3 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +2 -2
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +2 -2
- package/project/.sdk/tm/js/src/utility/StructUtility.js +1 -1
- 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/ValidateFeature.kt +297 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +3 -3
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +21 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +3 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +14 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +10 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Minivault.kt +1095 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +2 -2
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +2 -2
- package/project/.sdk/tm/kotlin/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
- package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +13 -22
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -0
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +13 -46
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
- package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +2 -2
- package/project/.sdk/tm/lua/feature/secrets/native/sekretovault.c +240 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +12 -3
- package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +18 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/plugin.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/minivault.lua +1227 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +2 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +3 -2
- package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +2 -2
- package/project/.sdk/tm/lua/feature/validate_feature.lua +333 -0
- package/project/.sdk/tm/lua/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
- package/project/.sdk/tm/lua/utility/make_options.lua +74 -55
- package/project/.sdk/tm/lua/utility/make_spec.lua +8 -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 +16 -1
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +5 -3
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +18 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/minivault.ml +1086 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/minivault_stubs.c +222 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +33 -3
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +2 -2
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +4 -3
- package/project/.sdk/tm/ocaml/sdk_features.ml +174 -0
- package/project/.sdk/tm/ocaml/sdk_helpers.ml +15 -0
- package/project/.sdk/tm/ocaml/sdk_runtime.ml +30 -49
- package/project/.sdk/tm/ocaml/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +125 -12
- package/project/.sdk/tm/ocaml/test/t_pipeline.ml +64 -6
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
- package/project/.sdk/tm/perl/core/helpers.pm +64 -16
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +3 -3
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +19 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Minivault.pm +1380 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +2 -2
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +4 -3
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +2 -2
- package/project/.sdk/tm/perl/feature/validate_feature.pm +319 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
- package/project/.sdk/tm/perl/src/feature/validate/.gitkeep +0 -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/perl/utility/make_options.pm +25 -34
- package/project/.sdk/tm/php/feature/ValidateFeature.php +361 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +3 -3
- package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +26 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/minivault.php +1250 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +2 -2
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +5 -3
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +2 -2
- package/project/.sdk/tm/php/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
- package/project/.sdk/tm/php/utility/MakeOptions.php +15 -24
- package/project/.sdk/tm/php/utility/struct/Struct.php +56 -7
- 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 +2 -2
- 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 +17 -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/minivault.py +1202 -0
- 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 +2 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/validate_feature.py +273 -0
- package/project/.sdk/tm/py/pkg/utility/make_options.py +14 -53
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/py/src/feature/validate/.gitkeep +0 -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 +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +3 -3
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +16 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/minivault.rb +979 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +6 -5
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +2 -2
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +2 -2
- package/project/.sdk/tm/rb/feature/validate_feature.rb +265 -0
- package/project/.sdk/tm/rb/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
- package/project/.sdk/tm/rb/utility/make_options.rb +15 -32
- package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +24 -1
- package/project/.sdk/tm/rust/core/mod.rs +3 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +3 -3
- package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +24 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/minivault/format.rs +425 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/minivault.rs +1076 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +2 -2
- package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +30 -4
- package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +2 -2
- package/project/.sdk/tm/rust/feature/validate.rs +387 -0
- package/project/.sdk/tm/rust/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
- package/project/.sdk/tm/rust/utility/make_options.rs +12 -51
- package/project/.sdk/tm/rust/utility/make_spec.rs +10 -3
- package/project/.sdk/tm/scala/feature/ValidateFeature.scala +286 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +3 -3
- package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +19 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +3 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +13 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +11 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Minivault.scala +979 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +2 -2
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +2 -2
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
- package/project/.sdk/tm/scala/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/scala/utility/Make.scala +12 -28
- package/project/.sdk/tm/scala/utility/MakeSpec.scala +8 -1
- package/project/.sdk/tm/scala/utility/Prepare.scala +16 -40
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ValidateFeature.swift +273 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +3 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +17 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +2 -2
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +9 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +12 -60
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +21 -39
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +3 -3
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
- package/project/.sdk/tm/swift/src/feature/validate/.gitkeep +0 -0
- 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 +13 -2
- 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 +27 -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/minivault.ts +1034 -0
- 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 +2 -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 +11 -1
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1 -1
- 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/core/utility.zig +45 -77
- package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +3 -3
- package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +18 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/minivault.zig +1930 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +2 -2
- package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +3 -2
- package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +19 -2
- package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +2 -2
- package/project/.sdk/tm/zig/feature/validate.zig +293 -0
- package/project/.sdk/tm/zig/src/feature/validate/.gitkeep +0 -0
- package/project/.sdk/tm/zig/test/pipeline_test.zig +34 -0
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +2 -2
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +2 -2
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +2 -2
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +2 -2
- package/project/sdkgen-package.json +1 -1
- package/src/helpers/applicability.ts +11 -6
- package/src/helpers/collectDeps.ts +30 -5
- package/src/helpers/naming.ts +2 -2
- package/src/sdkgen.ts +4 -1
- package/src/utility.ts +75 -0
- package/project/.sdk/tm/c/utility/prepare_auth.c +0 -65
- package/project/.sdk/tm/csharp/utility/PrepareAuth.cs +0 -54
- package/project/.sdk/tm/go/utility/prepare_auth.go +0 -59
- package/project/.sdk/tm/java/utility/PrepareAuth.java +0 -66
- package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +0 -49
- package/project/.sdk/tm/lua/utility/prepare_auth.lua +0 -52
- package/project/.sdk/tm/perl/utility/prepare_auth.pm +0 -56
- package/project/.sdk/tm/php/utility/PrepareAuth.php +0 -45
- package/project/.sdk/tm/py/pkg/utility/prepare_auth.py +0 -46
- package/project/.sdk/tm/rb/utility/prepare_auth.rb +0 -35
- package/project/.sdk/tm/rust/utility/prepare_auth.rs +0 -65
- package/project/.sdk/tm/ts/src/utility/PrepareAuthUtility.ts +0 -78
|
@@ -0,0 +1,837 @@
|
|
|
1
|
+
;; VENDORED: @voxgig/sekreto sdk-20260917-1242-0 (clojure/plugins/voxgig/sekreto/plugins/minivault.clj)
|
|
2
|
+
;; Source: https://github.com/voxgig/sekreto @ 108c4a914bee7b6534c30d1c68c25cd1b9377696 [tag: sdk-20260917-1242-0]
|
|
3
|
+
;; License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
;; The mini vault, as a voxgig/plugin definition.
|
|
5
|
+
;;
|
|
6
|
+
;; A plugin rather than a built-in kind because it needs crypto, and a
|
|
7
|
+
;; built-in kind reads at most a local file
|
|
8
|
+
;; (docs/design/plugin-providers.md).
|
|
9
|
+
;;
|
|
10
|
+
;; THE KEY DECIDES WHAT THE VAULT HOLDS. A master key reads and writes
|
|
11
|
+
;; every name and mints restricted keys. A restricted key reads the names
|
|
12
|
+
;; it was granted and CANNOT DERIVE ANY OTHER - the restriction is the
|
|
13
|
+
;; cryptography rather than a check this code performs. What that does and
|
|
14
|
+
;; does not protect is set out in DOCS.md under "What the mini vault
|
|
15
|
+
;; protects".
|
|
16
|
+
;;
|
|
17
|
+
;; `javax.crypto` carries all four primitives, so nothing here is
|
|
18
|
+
;; hand-rolled (AGENTS.md rule 3).
|
|
19
|
+
;;
|
|
20
|
+
;; A port of typescript/plugins/minivault.ts, which is canonical.
|
|
21
|
+
|
|
22
|
+
(ns voxgig.sekreto.plugins.minivault
|
|
23
|
+
(:require [voxgig.sekreto.core :as core]
|
|
24
|
+
[voxgig.sekreto.json :as json]
|
|
25
|
+
[voxgig.sekreto.provider :as provider]
|
|
26
|
+
[voxgig.sekreto.providers :as providers]
|
|
27
|
+
[voxgig.plugin.host :as host]
|
|
28
|
+
[voxgig.plugin.types :as plugintypes])
|
|
29
|
+
(:import [java.io ByteArrayOutputStream File]
|
|
30
|
+
[java.nio ByteBuffer]
|
|
31
|
+
[java.nio.charset StandardCharsets]
|
|
32
|
+
[java.nio.file FileAlreadyExistsException Files NoSuchFileException Path
|
|
33
|
+
StandardCopyOption StandardOpenOption]
|
|
34
|
+
[java.nio.file.attribute PosixFilePermissions]
|
|
35
|
+
[java.security GeneralSecurityException SecureRandom]
|
|
36
|
+
[java.util Arrays Base64]
|
|
37
|
+
[javax.crypto Cipher Mac SecretKeyFactory]
|
|
38
|
+
[javax.crypto.spec GCMParameterSpec PBEKeySpec SecretKeySpec]))
|
|
39
|
+
|
|
40
|
+
;; --- the format ------------------------------------------------------
|
|
41
|
+
;;
|
|
42
|
+
;; magic 4 'SKMV'
|
|
43
|
+
;; version 1 FORMAT
|
|
44
|
+
;; kdf 1 1 = PBKDF2-HMAC-SHA256
|
|
45
|
+
;; cipher 1 1 = AES-256-GCM
|
|
46
|
+
;; reserved 1 0
|
|
47
|
+
;; keycount 4 uint32
|
|
48
|
+
;; per key:
|
|
49
|
+
;; id 1 + bytes the key id, PLAINTEXT
|
|
50
|
+
;; salt 1 + bytes
|
|
51
|
+
;; iters 4 PBKDF2 rounds for this key
|
|
52
|
+
;; ring 1 + iv, 4 + bytes sealed under the passphrase
|
|
53
|
+
;; meta 1 + iv, 4 + bytes sealed under the vault's meta key
|
|
54
|
+
;; entrycount 4 uint32
|
|
55
|
+
;; per entry:
|
|
56
|
+
;; id 1 + bytes the blinded lookup id
|
|
57
|
+
;; name 1 + iv, 4 + bytes sealed under the vault's name key
|
|
58
|
+
;; value 1 + iv, 4 + bytes sealed under that secret's own key
|
|
59
|
+
;;
|
|
60
|
+
;; Integers are big-endian, and every length precedes its bytes. A file one
|
|
61
|
+
;; port writes is read by every other; `test/fixture` pins that with a
|
|
62
|
+
;; committed vault rather than with agreement.
|
|
63
|
+
|
|
64
|
+
(def ^:private MAGIC "SKMV")
|
|
65
|
+
(def ^:private FORMAT 1)
|
|
66
|
+
(def ^:private KDF-PBKDF2 1)
|
|
67
|
+
(def ^:private CIPHER-AESGCM 1)
|
|
68
|
+
|
|
69
|
+
;; AES-256-GCM: 32-byte keys, 12-byte nonces, 16-byte tags.
|
|
70
|
+
(def ^:private KEYLEN 32)
|
|
71
|
+
(def ^:private IVLEN 12)
|
|
72
|
+
(def ^:private TAGLEN 16)
|
|
73
|
+
(def ^:private SALTLEN 16)
|
|
74
|
+
|
|
75
|
+
(def ITERATIONS
|
|
76
|
+
"PBKDF2-HMAC-SHA256 rounds when a caller names none."
|
|
77
|
+
210000)
|
|
78
|
+
|
|
79
|
+
(def MASTERKEY
|
|
80
|
+
"The key id a vault gets when a caller names none."
|
|
81
|
+
"master")
|
|
82
|
+
|
|
83
|
+
;; Additional authenticated data. Every blob is bound to its PLACE in the
|
|
84
|
+
;; file, so no ciphertext can be moved.
|
|
85
|
+
(def ^:private AAD-RING "skmv1:ring:")
|
|
86
|
+
(def ^:private AAD-META "skmv1:meta:")
|
|
87
|
+
(def ^:private AAD-NAME "skmv1:name")
|
|
88
|
+
(def ^:private AAD-SECRET "skmv1:secret:")
|
|
89
|
+
|
|
90
|
+
;; Everything a master can reach is derived from the root key, so a
|
|
91
|
+
;; rotation is one new random value rather than a re-wrap of each part.
|
|
92
|
+
(def ^:private LABEL-NAMES "skmv1:names")
|
|
93
|
+
(def ^:private LABEL-META "skmv1:meta")
|
|
94
|
+
(def ^:private LABEL-ID "skmv1:id")
|
|
95
|
+
|
|
96
|
+
(def ^:private IDMAX
|
|
97
|
+
;; `small` writes a length in ONE byte. A longer id wrapped that byte and
|
|
98
|
+
;; the writer then appended the whole thing, so every field after it
|
|
99
|
+
;; shifted. Checked where an id is ACCEPTED, so the refusal names the id
|
|
100
|
+
;; rather than the file.
|
|
101
|
+
255)
|
|
102
|
+
|
|
103
|
+
(def VAULT-EXPORT
|
|
104
|
+
"The export key the vault API is published under, beside `provider`."
|
|
105
|
+
"vault")
|
|
106
|
+
|
|
107
|
+
(def ^:private RANDOM (SecureRandom.))
|
|
108
|
+
|
|
109
|
+
(defn- fail [text]
|
|
110
|
+
(throw (core/sekretoerror (str "sekreto: minivault: " text))))
|
|
111
|
+
|
|
112
|
+
(defn- utf8 ^bytes [^String text]
|
|
113
|
+
(.getBytes text StandardCharsets/UTF_8))
|
|
114
|
+
|
|
115
|
+
;; THE LOCK EVERY HANDLE ON ONE FILE SHARES.
|
|
116
|
+
;;
|
|
117
|
+
;; Each handle is its own map, so two handles on one path did not
|
|
118
|
+
;; coordinate: both could finish `vaultload` before either saved, and the
|
|
119
|
+
;; second rename then discarded the first one's change while reporting
|
|
120
|
+
;; success. Keyed by the ABSOLUTE path, so two handles spelled
|
|
121
|
+
;; differently still meet.
|
|
122
|
+
;;
|
|
123
|
+
;; A guarantee WITHIN one process, which is what DOCS.md promises and what
|
|
124
|
+
;; the go port arranges the same way. Two processes still race, and the
|
|
125
|
+
;; format's answer to that is the exclusive create and the atomic rename:
|
|
126
|
+
;; a reader sees one whole vault or the other, never half of one.
|
|
127
|
+
(defonce ^:private LOCKS (atom {}))
|
|
128
|
+
|
|
129
|
+
(defn- lockfor [file]
|
|
130
|
+
(let [key (try (.getPath (.getCanonicalFile (File. ^String file)))
|
|
131
|
+
(catch Exception _ file))]
|
|
132
|
+
(or (get @LOCKS key)
|
|
133
|
+
(get (swap! LOCKS (fn [held] (if (contains? held key)
|
|
134
|
+
held
|
|
135
|
+
(assoc held key (Object.)))))
|
|
136
|
+
key))))
|
|
137
|
+
|
|
138
|
+
(defn- wantkey
|
|
139
|
+
"The key a caller asked for, or `MASTERKEY`: an EMPTY key is no key.
|
|
140
|
+
|
|
141
|
+
The canonical's `opts.key || MASTERKEY` answers for both nil and empty,
|
|
142
|
+
where clojure's `or` answers for nil alone - `\"\"` is truthy here. A
|
|
143
|
+
CLI reaches this with SEKRETO_VAULT_KEY set and empty, which is what an
|
|
144
|
+
unset shell variable expands to."
|
|
145
|
+
[value]
|
|
146
|
+
(if (or (nil? value) (= "" value)) MASTERKEY value))
|
|
147
|
+
|
|
148
|
+
(defn- checkid [id what]
|
|
149
|
+
(when-not (and (string? id) (not= "" id))
|
|
150
|
+
(fail what))
|
|
151
|
+
(when (< IDMAX (alength (utf8 id)))
|
|
152
|
+
(fail (str "key id is longer than " IDMAX " bytes: " (subs id 0 (min 32 (count id))) "...")))
|
|
153
|
+
id)
|
|
154
|
+
|
|
155
|
+
;; --- keys ------------------------------------------------------------
|
|
156
|
+
|
|
157
|
+
(defn- hmac ^bytes [^bytes key ^String text]
|
|
158
|
+
(try
|
|
159
|
+
(let [mac (Mac/getInstance "HmacSHA256")]
|
|
160
|
+
(.init mac (SecretKeySpec. key "HmacSHA256"))
|
|
161
|
+
(.doFinal mac (utf8 text)))
|
|
162
|
+
(catch GeneralSecurityException err
|
|
163
|
+
(fail (str "hmac: " (.getMessage err))))))
|
|
164
|
+
|
|
165
|
+
(defn- kek
|
|
166
|
+
"The key-encryption key a passphrase unwraps a ring with."
|
|
167
|
+
^bytes [^String passphrase ^bytes salt ^long iters]
|
|
168
|
+
(try
|
|
169
|
+
(-> (SecretKeyFactory/getInstance "PBKDF2WithHmacSHA256")
|
|
170
|
+
(.generateSecret (PBEKeySpec. (.toCharArray passphrase) salt (int iters) (* KEYLEN 8)))
|
|
171
|
+
(.getEncoded))
|
|
172
|
+
(catch GeneralSecurityException err
|
|
173
|
+
(fail (str "pbkdf2: " (.getMessage err))))))
|
|
174
|
+
|
|
175
|
+
(defn- secretkey
|
|
176
|
+
"The key one named secret's value is encrypted with.
|
|
177
|
+
|
|
178
|
+
DERIVED, never stored, for a master: it holds the root key and so reaches
|
|
179
|
+
every name, including ones written after it was made. A restricted key
|
|
180
|
+
holds the derived keys it was granted and nothing that produces another."
|
|
181
|
+
^bytes [^bytes root ^String name]
|
|
182
|
+
(hmac root (str AAD-SECRET name)))
|
|
183
|
+
|
|
184
|
+
(defn- entryid
|
|
185
|
+
"Where a secret lives in the file, derived from its own key so that
|
|
186
|
+
finding it needs no plaintext name."
|
|
187
|
+
^bytes [^bytes key]
|
|
188
|
+
(hmac key LABEL-ID))
|
|
189
|
+
|
|
190
|
+
(defn- randombytes ^bytes [^long len]
|
|
191
|
+
(let [out (byte-array len)]
|
|
192
|
+
(.nextBytes RANDOM out)
|
|
193
|
+
out))
|
|
194
|
+
|
|
195
|
+
;; --- sealing ---------------------------------------------------------
|
|
196
|
+
|
|
197
|
+
(defn- seal
|
|
198
|
+
"A nonce and the ciphertext with its tag appended."
|
|
199
|
+
[^bytes key ^bytes plain ^String aad]
|
|
200
|
+
(try
|
|
201
|
+
(let [iv (randombytes IVLEN)
|
|
202
|
+
cipher (Cipher/getInstance "AES/GCM/NoPadding")]
|
|
203
|
+
(.init cipher Cipher/ENCRYPT_MODE (SecretKeySpec. key "AES")
|
|
204
|
+
(GCMParameterSpec. (* TAGLEN 8) iv))
|
|
205
|
+
(.updateAAD cipher (utf8 aad))
|
|
206
|
+
{:iv iv :blob (.doFinal cipher plain)})
|
|
207
|
+
(catch GeneralSecurityException err
|
|
208
|
+
(fail (str "cannot seal: " (.getMessage err))))))
|
|
209
|
+
|
|
210
|
+
(defn- unseal
|
|
211
|
+
"The plaintext, or a refusal. A GCM tag that fails to verify is the only
|
|
212
|
+
evidence there is, and it cannot tell a wrong passphrase from a damaged
|
|
213
|
+
file, so `what` names the attempt and the message admits both."
|
|
214
|
+
^bytes [^bytes key sealed ^String aad ^String what]
|
|
215
|
+
(let [^bytes blob (:blob sealed)
|
|
216
|
+
^bytes iv (:iv sealed)]
|
|
217
|
+
(when (or (< (alength blob) TAGLEN) (not= IVLEN (alength iv)))
|
|
218
|
+
(fail (str what ": truncated")))
|
|
219
|
+
|
|
220
|
+
;; The WHOLE round-trip is guarded, not only the tag check: a nonce of
|
|
221
|
+
;; the wrong length makes `init` itself raise, and a damaged file
|
|
222
|
+
;; reaching a caller as a raw GeneralSecurityException is a refusal
|
|
223
|
+
;; nobody can act on.
|
|
224
|
+
(try
|
|
225
|
+
(let [cipher (Cipher/getInstance "AES/GCM/NoPadding")]
|
|
226
|
+
(.init cipher Cipher/DECRYPT_MODE (SecretKeySpec. key "AES")
|
|
227
|
+
(GCMParameterSpec. (* TAGLEN 8) iv))
|
|
228
|
+
(.updateAAD cipher (utf8 aad))
|
|
229
|
+
(.doFinal cipher blob))
|
|
230
|
+
(catch Exception _ (fail what)))))
|
|
231
|
+
|
|
232
|
+
(defn- jsonof [^bytes plain what]
|
|
233
|
+
(let [parsed (json/parse (String. plain StandardCharsets/UTF_8))]
|
|
234
|
+
(if (map? parsed) parsed (fail (str "unreadable " what)))))
|
|
235
|
+
|
|
236
|
+
(defn- b64 [^bytes bytes]
|
|
237
|
+
(.encodeToString (Base64/getEncoder) bytes))
|
|
238
|
+
|
|
239
|
+
(defn- unb64 ^bytes [text what]
|
|
240
|
+
(when-not (string? text)
|
|
241
|
+
(fail (str "missing " what)))
|
|
242
|
+
(try
|
|
243
|
+
(.decode (Base64/getDecoder) ^String text)
|
|
244
|
+
(catch IllegalArgumentException _ (fail (str "missing " what)))))
|
|
245
|
+
|
|
246
|
+
;; --- the file --------------------------------------------------------
|
|
247
|
+
|
|
248
|
+
(defn- reader
|
|
249
|
+
"A cursor, so that every length check is in one place: a truncated vault
|
|
250
|
+
is refused rather than read as a short one."
|
|
251
|
+
[^bytes bytes]
|
|
252
|
+
(let [at (atom 0)]
|
|
253
|
+
(letfn [(take! [^long len]
|
|
254
|
+
(when (or (neg? len) (< (alength bytes) (+ @at len)))
|
|
255
|
+
(fail "the vault file is truncated"))
|
|
256
|
+
(let [out (Arrays/copyOfRange bytes (int @at) (int (+ @at len)))]
|
|
257
|
+
(swap! at + len)
|
|
258
|
+
out))
|
|
259
|
+
(u8 [] (bit-and (aget ^bytes (take! 1) 0) 0xff))
|
|
260
|
+
(u32 []
|
|
261
|
+
;; A length over Integer/MAX_VALUE cannot address an array,
|
|
262
|
+
;; and reading it as a negative int is what turned a damaged
|
|
263
|
+
;; file into a crash instead of a refusal.
|
|
264
|
+
(let [value (bit-and (.getInt (ByteBuffer/wrap (take! 4))) 0xffffffff)]
|
|
265
|
+
(when (< Integer/MAX_VALUE value)
|
|
266
|
+
(fail "the vault file is truncated"))
|
|
267
|
+
value))]
|
|
268
|
+
{:take take! :u8 u8 :u32 u32
|
|
269
|
+
:small (fn [] (take! (u8)))
|
|
270
|
+
:large (fn [] (take! (u32)))
|
|
271
|
+
:magic (fn [] (String. ^bytes (take! 4) StandardCharsets/ISO_8859_1))
|
|
272
|
+
:sealed (fn [] {:iv (take! (u8)) :blob (take! (u32))})
|
|
273
|
+
:done? (fn [] (= @at (alength bytes)))})))
|
|
274
|
+
|
|
275
|
+
(defn- readfile [^bytes bytes]
|
|
276
|
+
(let [read (reader bytes)
|
|
277
|
+
u8 (:u8 read)
|
|
278
|
+
u32 (:u32 read)
|
|
279
|
+
small (:small read)
|
|
280
|
+
sealed (:sealed read)]
|
|
281
|
+
|
|
282
|
+
(when (not= MAGIC ((:magic read))) (fail "not a vault file"))
|
|
283
|
+
|
|
284
|
+
(let [version (u8)]
|
|
285
|
+
(when (not= FORMAT version) (fail (str "unsupported format version: " version))))
|
|
286
|
+
|
|
287
|
+
(let [kdf (u8) cipher (u8)]
|
|
288
|
+
(when (or (not= KDF-PBKDF2 kdf) (not= CIPHER-AESGCM cipher))
|
|
289
|
+
(fail (str "unsupported kdf or cipher: " kdf "/" cipher))))
|
|
290
|
+
(u8)
|
|
291
|
+
|
|
292
|
+
(let [keys (vec (repeatedly (u32)
|
|
293
|
+
#(let [id (String. ^bytes (small) StandardCharsets/UTF_8)
|
|
294
|
+
salt (small)
|
|
295
|
+
iters (u32)]
|
|
296
|
+
{:id id :salt salt :iters iters
|
|
297
|
+
:ring (sealed) :meta (sealed)})))
|
|
298
|
+
entries (vec (repeatedly (u32)
|
|
299
|
+
#(let [id (small)]
|
|
300
|
+
{:id id :name (sealed) :value (sealed)})))]
|
|
301
|
+
(when-not ((:done? read)) (fail "the vault file has trailing bytes"))
|
|
302
|
+
{:keys keys :entries entries})))
|
|
303
|
+
|
|
304
|
+
(defn- bytecompare
|
|
305
|
+
"Unsigned, byte by byte, the way every other port sorts."
|
|
306
|
+
[^bytes left ^bytes right]
|
|
307
|
+
(let [len (min (alength left) (alength right))]
|
|
308
|
+
(loop [index 0]
|
|
309
|
+
(if (= index len)
|
|
310
|
+
(compare (alength left) (alength right))
|
|
311
|
+
(let [one (bit-and (aget left index) 0xff)
|
|
312
|
+
two (bit-and (aget right index) 0xff)]
|
|
313
|
+
(if (= one two) (recur (inc index)) (compare one two)))))))
|
|
314
|
+
|
|
315
|
+
(defn- writefile ^bytes [vault]
|
|
316
|
+
(let [out (ByteArrayOutputStream.)]
|
|
317
|
+
(letfn [(raw [^bytes bytes] (.write out bytes 0 (alength bytes)))
|
|
318
|
+
(u8 [value] (.write out (int (bit-and value 0xff))))
|
|
319
|
+
(u32 [value] (raw (.array (.putInt (ByteBuffer/allocate 4) (int value)))))
|
|
320
|
+
(small [^bytes bytes] (u8 (alength bytes)) (raw bytes))
|
|
321
|
+
(large [^bytes bytes] (u32 (alength bytes)) (raw bytes))
|
|
322
|
+
(sealed [value] (small (:iv value)) (large (:blob value)))]
|
|
323
|
+
|
|
324
|
+
(raw (.getBytes ^String MAGIC StandardCharsets/ISO_8859_1))
|
|
325
|
+
(u8 FORMAT)
|
|
326
|
+
(u8 KDF-PBKDF2)
|
|
327
|
+
(u8 CIPHER-AESGCM)
|
|
328
|
+
(u8 0)
|
|
329
|
+
|
|
330
|
+
(u32 (count (:keys vault)))
|
|
331
|
+
(doseq [key (:keys vault)]
|
|
332
|
+
(small (utf8 (:id key)))
|
|
333
|
+
(small (:salt key))
|
|
334
|
+
(u32 (:iters key))
|
|
335
|
+
(sealed (:ring key))
|
|
336
|
+
(sealed (:meta key)))
|
|
337
|
+
|
|
338
|
+
;; SORTED BY ID, which is a blinded value: the file therefore records
|
|
339
|
+
;; nothing about the order secrets were written in.
|
|
340
|
+
(let [entries (sort-by :id bytecompare (:entries vault))]
|
|
341
|
+
(u32 (count entries))
|
|
342
|
+
(doseq [entry entries]
|
|
343
|
+
(small (:id entry))
|
|
344
|
+
(sealed (:name entry))
|
|
345
|
+
(sealed (:value entry))))
|
|
346
|
+
|
|
347
|
+
(.toByteArray out))))
|
|
348
|
+
|
|
349
|
+
;; --- creating --------------------------------------------------------
|
|
350
|
+
|
|
351
|
+
(defn- newvault [keyid passphrase iterations]
|
|
352
|
+
(let [root (randombytes KEYLEN)
|
|
353
|
+
salt (randombytes SALTLEN)
|
|
354
|
+
ring {"v" FORMAT "write" true "root" (b64 root)}
|
|
355
|
+
meta {"v" FORMAT "master" true "write" true "grants" []}]
|
|
356
|
+
{:keys [{:id keyid
|
|
357
|
+
:salt salt
|
|
358
|
+
:iters iterations
|
|
359
|
+
:ring (seal (kek passphrase salt iterations)
|
|
360
|
+
(utf8 (json/stringify ring)) (str AAD-RING keyid))
|
|
361
|
+
:meta (seal (hmac root LABEL-META)
|
|
362
|
+
(utf8 (json/stringify meta)) (str AAD-META keyid))}]
|
|
363
|
+
:entries []}))
|
|
364
|
+
|
|
365
|
+
(defn- owneronly [^Path path]
|
|
366
|
+
(try
|
|
367
|
+
(Files/setPosixFilePermissions path (PosixFilePermissions/fromString "rw-------"))
|
|
368
|
+
(catch Exception _
|
|
369
|
+
;; A filesystem with no POSIX permissions is not a reason to refuse a
|
|
370
|
+
;; write that otherwise succeeded.
|
|
371
|
+
nil)))
|
|
372
|
+
|
|
373
|
+
(defn- putnew
|
|
374
|
+
"Write a vault file that is not there yet, and REFUSE one that is.
|
|
375
|
+
|
|
376
|
+
Straight to the target with CREATE_NEW rather than through a temporary
|
|
377
|
+
and a rename. A rename REPLACES its destination, so two processes
|
|
378
|
+
creating the same vault both succeeded and the second discarded the
|
|
379
|
+
first one's secrets."
|
|
380
|
+
[^String file vault]
|
|
381
|
+
(let [path (Path/of file (into-array String []))]
|
|
382
|
+
(try
|
|
383
|
+
(Files/write path ^bytes (writefile vault)
|
|
384
|
+
(into-array StandardOpenOption
|
|
385
|
+
[StandardOpenOption/CREATE_NEW StandardOpenOption/WRITE]))
|
|
386
|
+
(owneronly path)
|
|
387
|
+
(catch FileAlreadyExistsException _
|
|
388
|
+
(fail (str "vault file already exists: " file)))
|
|
389
|
+
(catch java.io.IOException err
|
|
390
|
+
(fail (str "cannot write " file ": " (.getMessage err)))))))
|
|
391
|
+
|
|
392
|
+
(defn- sameseal? [left right]
|
|
393
|
+
(and (Arrays/equals ^bytes (:iv left) ^bytes (:iv right))
|
|
394
|
+
(Arrays/equals ^bytes (:blob left) ^bytes (:blob right))))
|
|
395
|
+
|
|
396
|
+
;; --- the handle ------------------------------------------------------
|
|
397
|
+
|
|
398
|
+
(declare vaultbytes vaultload)
|
|
399
|
+
|
|
400
|
+
(defn openvault
|
|
401
|
+
"Open a vault file as one key.
|
|
402
|
+
|
|
403
|
+
The handle is lazy. Nothing is read, and no passphrase is stretched,
|
|
404
|
+
until a call needs the file."
|
|
405
|
+
[options]
|
|
406
|
+
(let [opts (or options {})
|
|
407
|
+
file (:file opts)
|
|
408
|
+
passphrase (:passphrase opts)]
|
|
409
|
+
(when-not (and (string? file) (not= "" file)) (fail "a vault needs a file"))
|
|
410
|
+
(when-not (and (string? passphrase) (not= "" passphrase))
|
|
411
|
+
(fail "a vault needs a passphrase"))
|
|
412
|
+
|
|
413
|
+
{:file file
|
|
414
|
+
:key (checkid (wantkey (:key opts)) "a vault needs a key id")
|
|
415
|
+
:passphrase passphrase
|
|
416
|
+
:iterations (or (:iterations opts) ITERATIONS)
|
|
417
|
+
:create (true? (:create opts))
|
|
418
|
+
;; THE DERIVED KEYS LIVE IN AN ATOM. A handle that caches what it
|
|
419
|
+
;; derived and a handle that notices a revoked key are the same
|
|
420
|
+
;; handle, and a map is a value here.
|
|
421
|
+
:opened (atom nil)}))
|
|
422
|
+
|
|
423
|
+
(defn createvault
|
|
424
|
+
"Make a vault file and return a handle on its master key.
|
|
425
|
+
|
|
426
|
+
Refuses a file that is already there: a vault is created once, and
|
|
427
|
+
overwriting one discards every secret in it."
|
|
428
|
+
[options]
|
|
429
|
+
(let [opts (or options {})
|
|
430
|
+
file (:file opts)
|
|
431
|
+
passphrase (:passphrase opts)]
|
|
432
|
+
(when-not (and (string? file) (not= "" file)) (fail "a vault needs a file"))
|
|
433
|
+
(when-not (and (string? passphrase) (not= "" passphrase))
|
|
434
|
+
(fail "a vault needs a passphrase"))
|
|
435
|
+
|
|
436
|
+
(let [keyid (checkid (wantkey (:key opts)) "a vault needs a key id")]
|
|
437
|
+
;; No existence check first: the check and the write would be two
|
|
438
|
+
;; steps, and `putnew` refuses an existing file in ONE.
|
|
439
|
+
(putnew file (newvault keyid passphrase (or (:iterations opts) ITERATIONS)))
|
|
440
|
+
(openvault opts))))
|
|
441
|
+
|
|
442
|
+
(defn- vaultbytes ^bytes [vault]
|
|
443
|
+
(let [^String file (:file vault)
|
|
444
|
+
path (Path/of file (into-array String []))]
|
|
445
|
+
(try
|
|
446
|
+
(Files/readAllBytes path)
|
|
447
|
+
(catch NoSuchFileException _
|
|
448
|
+
;; A vault is configured deliberately, with a key. Its absence is a
|
|
449
|
+
;; broken deployment and never "no secrets here": answering a miss
|
|
450
|
+
;; would send the chain on to a weaker store.
|
|
451
|
+
(when-not (:create vault) (fail (str "no vault file: " file)))
|
|
452
|
+
(putnew file (newvault (:key vault) (:passphrase vault) (:iterations vault)))
|
|
453
|
+
(Files/readAllBytes path))
|
|
454
|
+
(catch java.io.IOException err
|
|
455
|
+
(fail (str "cannot read " file ": " (.getMessage err)))))))
|
|
456
|
+
|
|
457
|
+
(defn- vaultload [vault]
|
|
458
|
+
(let [file (readfile (vaultbytes vault))
|
|
459
|
+
keyid (:key vault)
|
|
460
|
+
record (first (filter #(= keyid (:id %)) (:keys file)))]
|
|
461
|
+
|
|
462
|
+
(when (nil? record)
|
|
463
|
+
;; REVOKED, or never there. Either way this handle is finished, and
|
|
464
|
+
;; dropping what it derived is what stops the next call answering
|
|
465
|
+
;; from memory.
|
|
466
|
+
(reset! (:opened vault) nil)
|
|
467
|
+
(fail (str "no such key: " keyid)))
|
|
468
|
+
|
|
469
|
+
(let [held @(:opened vault)]
|
|
470
|
+
;; The file still holds this key, and holds the SAME ring: a key
|
|
471
|
+
;; revoked and re-granted under another passphrase is a different key
|
|
472
|
+
;; wearing the id, and re-deriving is what refuses it.
|
|
473
|
+
(if (and held (sameseal? (:ring held) (:ring record)))
|
|
474
|
+
[file held]
|
|
475
|
+
(do
|
|
476
|
+
(reset! (:opened vault) nil)
|
|
477
|
+
(let [plain (unseal (kek (:passphrase vault) (:salt record) (:iters record))
|
|
478
|
+
(:ring record) (str AAD-RING keyid)
|
|
479
|
+
(str "wrong passphrase for key " keyid ", or a damaged vault"))
|
|
480
|
+
ring (jsonof plain (str "key ring for " keyid))
|
|
481
|
+
grants (reduce-kv (fn [out name key]
|
|
482
|
+
(assoc out name (unb64 key "a granted key")))
|
|
483
|
+
{} (or (get ring "grants") {}))
|
|
484
|
+
root (get ring "root")
|
|
485
|
+
opened {:info {"key" keyid
|
|
486
|
+
"master" (some? root)
|
|
487
|
+
"write" (or (some? root) (true? (get ring "write")))
|
|
488
|
+
"grants" (vec (sort (keys grants)))}
|
|
489
|
+
:root (when root (unb64 root "the root key"))
|
|
490
|
+
:grants grants
|
|
491
|
+
:ring (:ring record)}]
|
|
492
|
+
(reset! (:opened vault) opened)
|
|
493
|
+
[file opened]))))))
|
|
494
|
+
|
|
495
|
+
(defn- rootof ^bytes [opened what]
|
|
496
|
+
(or (:root opened)
|
|
497
|
+
(fail (str what " needs a master key, and " (get-in opened [:info "key"])
|
|
498
|
+
" is restricted"))))
|
|
499
|
+
|
|
500
|
+
(defn- keyfor
|
|
501
|
+
"The key for one name, or nil when this key cannot reach it."
|
|
502
|
+
^bytes [opened name]
|
|
503
|
+
(if-let [root (:root opened)]
|
|
504
|
+
(secretkey root name)
|
|
505
|
+
(get (:grants opened) name)))
|
|
506
|
+
|
|
507
|
+
(defn- findentry [file ^bytes key]
|
|
508
|
+
(when key
|
|
509
|
+
(let [id (entryid key)]
|
|
510
|
+
(first (filter #(Arrays/equals ^bytes (:id %) id) (:entries file))))))
|
|
511
|
+
|
|
512
|
+
(defn- metaof [opened record]
|
|
513
|
+
(let [root (rootof opened "reading key metadata")
|
|
514
|
+
what (str "metadata for key " (:id record))]
|
|
515
|
+
(try
|
|
516
|
+
(jsonof (unseal (hmac root LABEL-META) (:meta record)
|
|
517
|
+
(str AAD-META (:id record)) what)
|
|
518
|
+
what)
|
|
519
|
+
(catch clojure.lang.ExceptionInfo _
|
|
520
|
+
;; A record written under a root key this one has replaced. The key
|
|
521
|
+
;; is still in the file and still opens with its own passphrase, so
|
|
522
|
+
;; it is reported rather than hidden - with what it can do unknown.
|
|
523
|
+
nil))))
|
|
524
|
+
|
|
525
|
+
(defn- sealkey [^bytes root id phrase iters ring meta]
|
|
526
|
+
(let [salt (randombytes SALTLEN)]
|
|
527
|
+
{:id id
|
|
528
|
+
:salt salt
|
|
529
|
+
:iters iters
|
|
530
|
+
:ring (seal (kek phrase salt iters) (utf8 (json/stringify ring)) (str AAD-RING id))
|
|
531
|
+
:meta (seal (hmac root LABEL-META) (utf8 (json/stringify meta)) (str AAD-META id))}))
|
|
532
|
+
|
|
533
|
+
(defn- writevault
|
|
534
|
+
"Read, change, and REPLACE - never edit in place.
|
|
535
|
+
|
|
536
|
+
THE TEMPORARY IS RANDOM AND EXCLUSIVE. `<vault>.<pid>.tmp` is a name
|
|
537
|
+
anyone can predict, so anyone who can write the vault's directory could
|
|
538
|
+
put a symlink there and have the next save truncate whatever it pointed
|
|
539
|
+
at."
|
|
540
|
+
[vault file]
|
|
541
|
+
(let [^String target (:file vault)
|
|
542
|
+
suffix (apply str (map #(format "%02x" (bit-and % 0xff)) (randombytes 8)))
|
|
543
|
+
temp (Path/of (str target "." suffix ".tmp") (into-array String []))]
|
|
544
|
+
(try
|
|
545
|
+
(Files/write temp ^bytes (writefile file)
|
|
546
|
+
(into-array StandardOpenOption
|
|
547
|
+
[StandardOpenOption/CREATE_NEW StandardOpenOption/WRITE]))
|
|
548
|
+
(owneronly temp)
|
|
549
|
+
(Files/move temp (Path/of target (into-array String []))
|
|
550
|
+
(into-array StandardCopyOption [StandardCopyOption/REPLACE_EXISTING]))
|
|
551
|
+
(catch java.io.IOException err
|
|
552
|
+
(try (Files/deleteIfExists temp) (catch Exception _ nil))
|
|
553
|
+
(fail (str "cannot write " target ": " (.getMessage err)))))
|
|
554
|
+
nil))
|
|
555
|
+
|
|
556
|
+
(defn vaultfile
|
|
557
|
+
"The file this handle reads."
|
|
558
|
+
[vault]
|
|
559
|
+
(:file vault))
|
|
560
|
+
|
|
561
|
+
(defn vaultkey
|
|
562
|
+
"The key id this handle opens with."
|
|
563
|
+
[vault]
|
|
564
|
+
(:key vault))
|
|
565
|
+
|
|
566
|
+
(defn vaultopen
|
|
567
|
+
"Derive the key and read the file NOW rather than at first use.
|
|
568
|
+
|
|
569
|
+
A COPY, so that what a caller is handed cannot become what this vault
|
|
570
|
+
believes: a map is a value here."
|
|
571
|
+
[vault]
|
|
572
|
+
(:info (second (vaultload vault))))
|
|
573
|
+
|
|
574
|
+
(defn vaultclose
|
|
575
|
+
"Forget the derived keys. The next call opens again."
|
|
576
|
+
[vault]
|
|
577
|
+
(reset! (:opened vault) nil)
|
|
578
|
+
nil)
|
|
579
|
+
|
|
580
|
+
(defn vaultlist
|
|
581
|
+
"The names this key can read, sorted."
|
|
582
|
+
[vault]
|
|
583
|
+
(let [[file opened] (vaultload vault)]
|
|
584
|
+
(if-let [root (:root opened)]
|
|
585
|
+
(let [namekey (hmac root LABEL-NAMES)]
|
|
586
|
+
(vec (sort (map #(String. ^bytes (unseal namekey (:name %) AAD-NAME
|
|
587
|
+
"a secret name is damaged")
|
|
588
|
+
StandardCharsets/UTF_8)
|
|
589
|
+
(:entries file)))))
|
|
590
|
+
;; A restricted key has no name key, so it reports the grants it can
|
|
591
|
+
;; actually find: the vault never tells it what else is in there.
|
|
592
|
+
(vec (sort (filter #(some? (findentry file (get (:grants opened) %)))
|
|
593
|
+
(get-in opened [:info "grants"])))))))
|
|
594
|
+
|
|
595
|
+
(defn vaultget
|
|
596
|
+
"The value, or nil when the vault does not hold that name or this key was
|
|
597
|
+
not granted it."
|
|
598
|
+
[vault name]
|
|
599
|
+
(core/checkname name)
|
|
600
|
+
(let [[file opened] (vaultload vault)
|
|
601
|
+
key (keyfor opened name)]
|
|
602
|
+
;; OUTSIDE THE GRANT IS A MISS, deliberately. The vault answers as the
|
|
603
|
+
;; key that opened it, so a name this key cannot read is a name this
|
|
604
|
+
;; store does not hold for this caller.
|
|
605
|
+
(when key
|
|
606
|
+
(when-let [entry (findentry file key)]
|
|
607
|
+
(String. ^bytes (unseal key (:value entry) (str AAD-SECRET name)
|
|
608
|
+
(str "the value of " name " is damaged"))
|
|
609
|
+
StandardCharsets/UTF_8)))))
|
|
610
|
+
|
|
611
|
+
(defn vaulthas?
|
|
612
|
+
"Does this key hold a value for `name`?"
|
|
613
|
+
[vault name]
|
|
614
|
+
(some? (vaultget vault name)))
|
|
615
|
+
|
|
616
|
+
(defn vaultset
|
|
617
|
+
"Write a value. A master writes any name; a restricted key holding
|
|
618
|
+
`write` overwrites the names it was granted, and creates none."
|
|
619
|
+
[vault name value]
|
|
620
|
+
;; Every write on this file, from any handle in this process,
|
|
621
|
+
;; serializes here; see lockfor.
|
|
622
|
+
(locking (lockfor (:file vault))
|
|
623
|
+
(core/checkname name)
|
|
624
|
+
(when-not (string? value) (fail (str "a secret value must be text: " name)))
|
|
625
|
+
|
|
626
|
+
(let [[file opened] (vaultload vault)]
|
|
627
|
+
(when-not (get-in opened [:info "write"])
|
|
628
|
+
(fail (str "key " (get-in opened [:info "key"]) " is read-only")))
|
|
629
|
+
|
|
630
|
+
(let [key (or (keyfor opened name)
|
|
631
|
+
(fail (str "key " (get-in opened [:info "key"])
|
|
632
|
+
" was not granted " name)))
|
|
633
|
+
sealedvalue (seal key (utf8 value) (str AAD-SECRET name))
|
|
634
|
+
id (entryid key)
|
|
635
|
+
found (findentry file key)
|
|
636
|
+
entries (if found
|
|
637
|
+
(mapv #(if (Arrays/equals ^bytes (:id %) id)
|
|
638
|
+
(assoc % :value sealedvalue) %)
|
|
639
|
+
(:entries file))
|
|
640
|
+
;; A NEW NAME NEEDS THE NAME KEY, which only a master
|
|
641
|
+
;; holds. So a restricted key with `write` updates what
|
|
642
|
+
;; it was granted and cannot grow the vault.
|
|
643
|
+
(let [root (rootof opened (str "creating the secret " name))]
|
|
644
|
+
(conj (:entries file)
|
|
645
|
+
{:id id
|
|
646
|
+
:name (seal (hmac root LABEL-NAMES) (utf8 name) AAD-NAME)
|
|
647
|
+
:value sealedvalue})))]
|
|
648
|
+
(writevault vault (assoc file :entries entries))))))
|
|
649
|
+
|
|
650
|
+
(defn vaultremove
|
|
651
|
+
"Drop a name. Master only."
|
|
652
|
+
[vault name]
|
|
653
|
+
;; Every write on this file, from any handle in this process,
|
|
654
|
+
;; serializes here; see lockfor.
|
|
655
|
+
(locking (lockfor (:file vault))
|
|
656
|
+
(core/checkname name)
|
|
657
|
+
(let [[file opened] (vaultload vault)
|
|
658
|
+
root (rootof opened "removing a secret")
|
|
659
|
+
wanted (entryid (secretkey root name))]
|
|
660
|
+
(when-not (some #(Arrays/equals ^bytes (:id %) wanted) (:entries file))
|
|
661
|
+
(fail (str "no such secret: " name)))
|
|
662
|
+
(writevault vault
|
|
663
|
+
(assoc file :entries
|
|
664
|
+
(vec (remove #(Arrays/equals ^bytes (:id %) wanted)
|
|
665
|
+
(:entries file))))))))
|
|
666
|
+
|
|
667
|
+
(defn vaultkeys
|
|
668
|
+
"Every key in the file, with what it may do. Master only."
|
|
669
|
+
[vault]
|
|
670
|
+
(let [[file opened] (vaultload vault)]
|
|
671
|
+
(rootof opened "listing the keys")
|
|
672
|
+
(mapv (fn [record]
|
|
673
|
+
(if-let [meta (metaof opened record)]
|
|
674
|
+
{"key" (:id record)
|
|
675
|
+
"master" (true? (get meta "master"))
|
|
676
|
+
"write" (true? (get meta "write"))
|
|
677
|
+
"grants" (vec (sort (or (get meta "grants") [])))}
|
|
678
|
+
{"key" (:id record) "master" false "write" false "grants" []}))
|
|
679
|
+
(:keys file))))
|
|
680
|
+
|
|
681
|
+
(defn vaultgrant
|
|
682
|
+
"Mint a restricted key. Master only."
|
|
683
|
+
[vault spec]
|
|
684
|
+
;; Every write on this file, from any handle in this process,
|
|
685
|
+
;; serializes here; see lockfor.
|
|
686
|
+
(locking (lockfor (:file vault))
|
|
687
|
+
(let [[file opened] (vaultload vault)
|
|
688
|
+
root (rootof opened "granting a key")
|
|
689
|
+
want (or spec {})
|
|
690
|
+
id (checkid (:key want) "a grant needs a key id")
|
|
691
|
+
phrase (:passphrase want)]
|
|
692
|
+
|
|
693
|
+
(when-not (and (string? phrase) (not= "" phrase)) (fail "a grant needs a passphrase"))
|
|
694
|
+
(when (some #(= id (:id %)) (:keys file)) (fail (str "key already exists: " id)))
|
|
695
|
+
|
|
696
|
+
(let [names (vec (sort (or (:names want) [])))
|
|
697
|
+
grants (reduce (fn [out name]
|
|
698
|
+
(core/checkname name)
|
|
699
|
+
(assoc out name (b64 (secretkey root name))))
|
|
700
|
+
{} names)
|
|
701
|
+
write (true? (:write want))
|
|
702
|
+
record (sealkey root id phrase (or (:iterations want) (:iterations vault))
|
|
703
|
+
{"v" FORMAT "write" write "grants" grants}
|
|
704
|
+
{"v" FORMAT "master" false "write" write "grants" names})]
|
|
705
|
+
(writevault vault (assoc file :keys (conj (:keys file) record)))))))
|
|
706
|
+
|
|
707
|
+
(defn vaultrevoke
|
|
708
|
+
"Drop a key. Master only.
|
|
709
|
+
|
|
710
|
+
Anyone who already copied the file keeps whatever that key could read, so
|
|
711
|
+
revoking bars future reads of the LIVE file and `vaultrotate` is what
|
|
712
|
+
takes a secret back."
|
|
713
|
+
[vault key]
|
|
714
|
+
;; Every write on this file, from any handle in this process,
|
|
715
|
+
;; serializes here; see lockfor.
|
|
716
|
+
(locking (lockfor (:file vault))
|
|
717
|
+
(let [[file opened] (vaultload vault)]
|
|
718
|
+
(rootof opened "revoking a key")
|
|
719
|
+
(when (= key (get-in opened [:info "key"]))
|
|
720
|
+
(fail (str "a key cannot revoke itself: " key)))
|
|
721
|
+
(when-not (some #(= key (:id %)) (:keys file)) (fail (str "no such key: " key)))
|
|
722
|
+
(writevault vault (assoc file :keys (vec (remove #(= key (:id %)) (:keys file))))))))
|
|
723
|
+
|
|
724
|
+
(defn vaultrotate
|
|
725
|
+
"A new root key, every value re-encrypted under it, and EVERY OTHER KEY
|
|
726
|
+
DROPPED. Master only.
|
|
727
|
+
|
|
728
|
+
The other keys go because they must: their rings are sealed under
|
|
729
|
+
passphrases this process does not have. Re-grant afterwards."
|
|
730
|
+
[vault]
|
|
731
|
+
;; Every write on this file, from any handle in this process,
|
|
732
|
+
;; serializes here; see lockfor.
|
|
733
|
+
(locking (lockfor (:file vault))
|
|
734
|
+
(let [[file opened] (vaultload vault)]
|
|
735
|
+
(rootof opened "rotating the vault")
|
|
736
|
+
|
|
737
|
+
;; Read everything out under the old root before anything changes: once
|
|
738
|
+
;; the root is replaced the old derived keys are unreachable.
|
|
739
|
+
(let [plain (mapv (fn [name] [name (vaultget vault name)]) (vaultlist vault))
|
|
740
|
+
root (randombytes KEYLEN)
|
|
741
|
+
namekey (hmac root LABEL-NAMES)
|
|
742
|
+
entries (mapv (fn [[name value]]
|
|
743
|
+
(let [key (secretkey root name)]
|
|
744
|
+
{:id (entryid key)
|
|
745
|
+
:name (seal namekey (utf8 name) AAD-NAME)
|
|
746
|
+
:value (seal key (utf8 value) (str AAD-SECRET name))}))
|
|
747
|
+
plain)
|
|
748
|
+
iters (or (:iters (first (filter #(= (:key vault) (:id %)) (:keys file))))
|
|
749
|
+
(:iterations vault))
|
|
750
|
+
record (sealkey root (:key vault) (:passphrase vault) iters
|
|
751
|
+
{"v" FORMAT "write" true "root" (b64 root)}
|
|
752
|
+
{"v" FORMAT "master" true "write" true "grants" []})]
|
|
753
|
+
|
|
754
|
+
;; SAVE FIRST, adopt second. A handle holding the new root over a file
|
|
755
|
+
;; that still holds the old one reads nothing and says the vault is
|
|
756
|
+
;; damaged.
|
|
757
|
+
(writevault vault {:keys [record] :entries entries})
|
|
758
|
+
|
|
759
|
+
(reset! (:opened vault)
|
|
760
|
+
{:info {"key" (:key vault) "master" true "write" true "grants" []}
|
|
761
|
+
:root root
|
|
762
|
+
:grants {}
|
|
763
|
+
:ring (:ring record)})
|
|
764
|
+
nil))))
|
|
765
|
+
|
|
766
|
+
;; --- the provider ----------------------------------------------------
|
|
767
|
+
|
|
768
|
+
(defrecord MiniVaultProvider [vault]
|
|
769
|
+
provider/Provider
|
|
770
|
+
|
|
771
|
+
(lookup [_ name] (vaultget vault name))
|
|
772
|
+
|
|
773
|
+
(describe [_] (str "minivault:" (:file vault))))
|
|
774
|
+
|
|
775
|
+
(defn providerof
|
|
776
|
+
"Read a vault as one store in a chain.
|
|
777
|
+
|
|
778
|
+
The provider is the READ half and nothing more: a chain resolves secrets,
|
|
779
|
+
and writing one is a deliberate act with an API of its own."
|
|
780
|
+
[vault]
|
|
781
|
+
(->MiniVaultProvider vault))
|
|
782
|
+
|
|
783
|
+
(defn minivaultprovider
|
|
784
|
+
"A vault provider from options, for a chain built by hand."
|
|
785
|
+
[options]
|
|
786
|
+
(providerof (openvault options)))
|
|
787
|
+
|
|
788
|
+
(defn- vaultoptions [spec]
|
|
789
|
+
{:file (or (core/notempty (:file spec)) "")
|
|
790
|
+
:key (core/notempty (:vaultkey spec))
|
|
791
|
+
:passphrase (or (core/notempty (:passphrase spec)) "")
|
|
792
|
+
:iterations (:iterations spec)
|
|
793
|
+
:create (true? (:create spec))})
|
|
794
|
+
|
|
795
|
+
(def minivault
|
|
796
|
+
"The `minivault` provider kind, as a voxgig/plugin definition.
|
|
797
|
+
|
|
798
|
+
Written out rather than built by `providerplugin`, because this
|
|
799
|
+
definition publishes TWO exports: `provider`, the read half every kind
|
|
800
|
+
publishes, and `vault`, the programmatic API."
|
|
801
|
+
{"name" "minivault"
|
|
802
|
+
"define" (fn [inst]
|
|
803
|
+
(let [built (try
|
|
804
|
+
;; `openvault` refuses bad configuration HERE,
|
|
805
|
+
;; so a mistyped chain fails at construction.
|
|
806
|
+
;; Reaching the FILE is not configuration: the
|
|
807
|
+
;; handle is lazy.
|
|
808
|
+
(openvault (vaultoptions (host/inst-options inst)))
|
|
809
|
+
(catch clojure.lang.ExceptionInfo err
|
|
810
|
+
(if (core/sekretoerror? err)
|
|
811
|
+
(plugintypes/fail providers/ERROR-CODE (ex-message err)
|
|
812
|
+
{"ref" (host/inst-ref inst)
|
|
813
|
+
"cause" (ex-message err)})
|
|
814
|
+
(throw err))))]
|
|
815
|
+
(host/export! inst providers/PROVIDER-EXPORT (providerof built))
|
|
816
|
+
(host/export! inst VAULT-EXPORT built)))})
|
|
817
|
+
|
|
818
|
+
(defn vaultof
|
|
819
|
+
"The vault behind a store in a chain, as its programmatic API.
|
|
820
|
+
|
|
821
|
+
With no store named, the unqualified alias answers: one vault in the
|
|
822
|
+
chain resolves whatever it is called, and two raise rather than picking
|
|
823
|
+
one."
|
|
824
|
+
([secrets] (vaultof secrets nil))
|
|
825
|
+
([secrets store]
|
|
826
|
+
(let [h (:host secrets)]
|
|
827
|
+
(if (nil? store)
|
|
828
|
+
(or (host/exports h (str "minivault/" VAULT-EXPORT))
|
|
829
|
+
(fail "no minivault store in this chain"))
|
|
830
|
+
;; A NAMED STORE MUST EXIST, and the alias must not stand in for it.
|
|
831
|
+
;; `host.exports` falls back to the alias when the exact ref misses,
|
|
832
|
+
;; so asking for `minivault` in a chain whose only vault is named
|
|
833
|
+
;; `app` used to hand back the `app` vault - and then write to it.
|
|
834
|
+
(let [ref (if (= "minivault" store) "minivault" (str "minivault$" store))]
|
|
835
|
+
(when (nil? (host/instance h ref))
|
|
836
|
+
(fail (str "no minivault store named " store " in this chain")))
|
|
837
|
+
(host/exports h (str ref "/" VAULT-EXPORT)))))))
|