Repository navigation
feat(go): key vendor backends through the encrypt guest (CIP-5311) - #1532
Draft
Conversation
|
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true |
Contributor
Mutation testing (cargo-mutants,
|
| caught | missed | unviable | timeout |
|---|---|---|---|
| 60 | 0 | 94 | 0 |
Every mutant in the changed lines was caught by a test.
freshtonic
force-pushed
the
james/cip-5311-go-sdk-key-vendor-backends-through-the-encrypt-guest
branch
from
November 6, 2026 02:15
f6e5996 to
dda3a35
Compare
freshtonic
force-pushed
the
james/cip-5311-go-sdk-key-vendor-backends-through-the-encrypt-guest
branch
from
November 6, 2026 05:10
dda3a35 to
fe5023c
Compare
…CIP-5311) The feature is on by default. A build without it has no RSA code.
The guest routes keysets between ZeroKMS and at most one key vendor backend (KeyRouter over GuestVendor: AWS KMS, Google Cloud KMS, Azure Key Vault, Vault Transit or a static key). The vendor clients sign in the guest and send through transport_send. The new import vendor_credential_get gives them a short-lived credential per request. The Go host adds WithKeyVendor and WithKeysetRecords, a credential source for each vendor kind with no vendor SDK dependency, the import, and the capability matrix in the package docs.
Add WithDefaultKeyset, WithRootKeyTTL and ErrNoZeroKMS. With WithKeyVendor and no WithCredentials, NewClient resolves no ZeroKMS credentials. The guest routes the default keyset to the vendor (KeyRouter::with_vendor_default) and refuses every ZeroKMS request with the new STATUS_NO_ZEROKMS.
StaticKey had no String, GoString or LogValue, so a %+v or a slog of the value printed the root key. Add the three methods, as AWSCredentials and AccessToken have, and a test for each output.
freshtonic
force-pushed
the
james/cip-5311-go-sdk-key-vendor-backends-through-the-encrypt-guest
branch
from
November 6, 2026 05:13
fe5023c to
40e1527
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer 9 of the CIP-5203 stack. Implements CIP-5311 (ADR-0011).
vendor_credential_get. The host supplies short-lived credentials only: AWS temporary credentials, or an OAuth or Vault token. The guest signs and holds all key material. There is no RSA in the guest; the GCP service-account login is now behind a default feature.WithKeyVendor,WithKeysetRecords,WithDefaultKeyset,WithRootKeyTTL,ErrNoZeroKMS. The vendor types areAWSKMS,GoogleCloudKMS,AzureKeyVault,VaultTransitandStaticKey. Credential seams are added; no vendor SDK is added togo.mod.Decisions are in
docs/plans/2026-11-05-key-vendor-backends-decisions.md(CIP-5311 section).