Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ syntax = "proto3";

package capabilities.compute.confidentialworkflow.v1alpha;

import "google/protobuf/empty.proto";
import "sdk/v1alpha/sdk.proto";
import "tools/generator/v1alpha/cre_metadata.proto";

message SecretIdentifier {
Expand All @@ -11,11 +13,17 @@ message SecretIdentifier {
}

// WorkflowExecution is the public data sent to the enclave.
// Becomes ComputeRequest.PublicData after proto serialization.
// Becomes ComputeRequest.PublicData after proto serialization, which is
// covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave.
message WorkflowExecution {
// workflow_id identifies the workflow to execute.
string workflow_id = 1;
// binary_url is the URL from which the enclave fetches the compiled WASM binary.
// binary_url is the URL from which the enclave fetches the compiled WASM
// binary. It lives inside WorkflowExecution (PublicData), covered by
// ComputeRequest.Hash() for F+1 quorum, so every node agrees on the same
// canonical locator. Authentication to the storage service is handled out of
// band by the fetch sidecar, so this is a stable, node-agnostic locator
// rather than a per-node pre-signed URL.
string binary_url = 2;
// binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification.
bytes binary_hash = 3;
Expand All @@ -28,19 +36,48 @@ message WorkflowExecution {
// execution_id is the unique execution identifier (64 hex chars, 32 bytes).
// Used by the enclave for runtime secret fetching from VaultDON.
string execution_id = 6;
// org_id is the organization identifier for the workflow owner.
// Used by the enclave when fetching secrets from VaultDON with org-based ownership.
string org_id = 7;
// requirements describes what is needed to run this workflow (e.g. TEE type
// and regions).
sdk.v1alpha.Requirements requirements = 8;
// sdk_execute_request is the structured form of execute_request. It carries
// the same sdk.v1alpha.ExecuteRequest as the serialized execute_request bytes
// field; the two are independent on the wire (setting one does not populate
// the other). Consumers that want the typed message read this; legacy
// consumers continue to unmarshal execute_request.
sdk.v1alpha.ExecuteRequest sdk_execute_request = 9;

// restrictions on the capabilities and the secrets.bool
// This is sent to avoid overhead when a TEE is not compromised, the DON will verify the restrictions on its end as well.
sdk.v1alpha.Restrictions restrictions = 10;
}

// ConfidentialWorkflowRequest is the input provided to the confidential workflows capability.
// It combines a WorkflowExecution with secrets from VaultDON.
message ConfidentialWorkflowRequest {
repeated SecretIdentifier vault_don_secrets = 1;
WorkflowExecution execution = 2;
// Deprecated: the per-node pre-signed URL approach is superseded. binary_url
// now travels inside WorkflowExecution (PublicData) as a canonical locator,
// with authentication to the storage service handled out of band by the fetch
// sidecar. Retained for back-compat; no longer populated.
string binary_url = 3 [deprecated = true];
}

// ConfidentialWorkflowResponse is the output from the confidential workflows capability.
message ConfidentialWorkflowResponse {
// execution_result is a serialized sdk.v1alpha.ExecutionResult proto.
bytes execution_result = 1;
// sdk_execution_result is the structured form of execution_result. It carries
// the same sdk.v1alpha.ExecutionResult as the serialized execution_result
// bytes field; the two are independent on the wire.
sdk.v1alpha.ExecutionResult sdk_execution_result = 2;
}

message ProvidedTeesResponse {
repeated sdk.v1alpha.TeeTypeAndRegions tee = 1;
}

service Client {
Expand All @@ -50,4 +87,5 @@ service Client {
};

rpc Execute(ConfidentialWorkflowRequest) returns (ConfidentialWorkflowResponse);
rpc ProvidedTees(google.protobuf.Empty) returns (ProvidedTeesResponse);
}
1 change: 1 addition & 0 deletions cre/capabilities/networking/http/v1alpha/client.proto
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ service Client {
option (tools.generator.v1alpha.capability) = {
mode: MODE_NODE
capability_id: "http-actions@1.0.0-alpha"
additional_environments: [ADDITIONAL_ENVIRONMENTS_TEE]
};
rpc SendRequest(Request) returns (Response);
}
128 changes: 126 additions & 2 deletions cre/go/installer/pkg/embedded_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading