Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
6c9fca1
feat(kbs): implement KBS client for attestation and resource retrieval
SammyOina Jan 20, 2026
71ea5f2
fix: Move ifeq conditional outside define block in attestation-servic…
SammyOina Jan 20, 2026
475c4e0
feat: Implement remote resource downloading for algorithms and datase…
SammyOina Jan 21, 2026
df7214d
feat: Add comprehensive documentation and agent support for testing r…
SammyOina Jan 21, 2026
009a4b2
feat: Improve agent logging for remote resource configuration and KBS…
SammyOina Jan 21, 2026
7cda6f4
feat: Add a comprehensive guide for testing remote resource download …
SammyOina Jan 21, 2026
9a2e538
feat: Add failure transitions for resource reception states and a com…
SammyOina Jan 21, 2026
fc933e8
feat: Implement remote resource download with KBS attestation in the …
SammyOina Jan 21, 2026
ae1af94
test: Add comprehensive guide for testing remote resource download wi…
SammyOina Jan 22, 2026
660c597
feat: Delegate KBS attestation and token retrieval to a new attestati…
SammyOina Jan 22, 2026
4a09081
client fixes
SammyOina Jan 22, 2026
4053f0d
raw evidence
SammyOina Jan 22, 2026
4fbb1ef
fix: Build all Go files in cmd directories, not just main.go
SammyOina Jan 22, 2026
3cb9256
fix: Wrap binary evidence in JSON for KBS compatibility
SammyOina Jan 22, 2026
b015dc8
chore: Update buildroot packages to c28cefae
SammyOina Jan 22, 2026
fd13581
fix: Implement KBS RCAR handshake with cookies
SammyOina Jan 22, 2026
8b8a7d3
chore: Update buildroot packages to f6981ac5
SammyOina Jan 22, 2026
4dd192a
fix: Update KBS client JSON tags to kebab-case
SammyOina Jan 22, 2026
e83612d
fix: Wrap attestation evidence in primary_evidence format
SammyOina Jan 22, 2026
49edbbe
fix: Update KBS protocol version to 0.4.0
SammyOina Jan 22, 2026
753ed47
fix: Generate ephemeral key for KBS RuntimeData
SammyOina Jan 22, 2026
b5746c9
fix: Update sample attestation quote to valid JSON
SammyOina Jan 22, 2026
4dc84b9
fix: Generate dynamic JSON quote for Sample TEE in FetchRawEvidence
SammyOina Jan 22, 2026
33d1097
refactor: Delegate Sample Attestation to Provider
SammyOina Jan 22, 2026
9f386a6
feat: Add comprehensive debug logging and enforce CC AA usage
SammyOina Jan 22, 2026
a7b0c82
fix: Enable CC AA by default and add attestation-service log forwarding
SammyOina Jan 22, 2026
25a1ebb
feat: Add gRPC log forwarding to attestation-service
SammyOina Jan 22, 2026
c6b60d3
fix: Parse sample evidence JSON instead of base64-encoding it
SammyOina Jan 22, 2026
86d1565
debug: Increase KBS evidence logging preview to 1000 bytes
SammyOina Jan 22, 2026
57b6662
debug: Add comprehensive CC AA configuration logging
SammyOina Jan 22, 2026
83a7a5f
debug: Add startup logging for log client connection
SammyOina Jan 22, 2026
7021895
feat: Add retry logic with exponential backoff to log client
SammyOina Jan 22, 2026
e8660e2
fix: Flatten sample evidence fields in primary_evidence for KBS
SammyOina Jan 22, 2026
9f3e49d
fix: Use sample quote directly as primary_evidence per KBS protocol
SammyOina Jan 23, 2026
6506b61
fix: Make CC AA required for sample attestation when configured
SammyOina Jan 23, 2026
f96cce1
fix: Implement proper RCAR protocol with tee-pubkey and runtime-data …
SammyOina Jan 23, 2026
99a2a4b
fix(agent): use simple nonce for Sample attestation report_data
SammyOina Jan 23, 2026
98203f0
fix(agent): use RFC 8785 canonical JSON for runtime-data hashing
SammyOina Jan 23, 2026
e79a2b9
feat(hal): add CoCo Keyprovider and Skopeo packages
SammyOina Jan 23, 2026
4c2c9bd
feat(oci): add OCI image handling package with Skopeo integration
SammyOina Jan 23, 2026
8a0545a
chore: regenerate protobuf files for updated cvms.proto
SammyOina Jan 23, 2026
6e725cd
refactor(agent): replace S3/HTTP/KBS with OCI package
SammyOina Jan 23, 2026
adae3c3
chore: remove obsolete pkg/kbs and pkg/registry packages
SammyOina Jan 23, 2026
8785bc0
fix(agent): update ResourceSource struct to include type and encrypti…
SammyOina Jan 23, 2026
15aa927
fix(hal): update CoCo Keyprovider to v0.16.0 and fix build path
SammyOina Jan 23, 2026
e432e19
feat: Update remote resources testing guide to use kbs-client and coc…
SammyOina Jan 26, 2026
754c001
feat: Update component versions, revise image encryption documentatio…
SammyOina Jan 26, 2026
543ccd7
feat: Add `decompress` option to Dataset and `algo_type`/`algo_args` …
SammyOina Jan 26, 2026
c28503b
Update multiple package versions and enhance OCI image extraction err…
SammyOina Jan 26, 2026
46433ee
chore: Bump package versions, improve OCI image extraction debugging …
SammyOina Jan 26, 2026
52f1409
refactor: Migrate OCI extraction to use structured logging with `slog…
SammyOina Jan 26, 2026
db595b6
feat: Bump multiple component versions, add encrypted status for comp…
SammyOina Jan 26, 2026
3cebd16
logging
SammyOina Jan 26, 2026
9f02fd4
feat: Add `Encrypted` field to algorithm and dataset resource sources…
SammyOina Jan 26, 2026
6c36662
feat: update component versions, integrate coco-keyprovider service, …
SammyOina Jan 26, 2026
c3f5c03
feat: add support for KBS parameters and dataset/algorithm hash calcu…
SammyOina Jan 27, 2026
8161191
feat: update resource download and extraction logic to support requir…
SammyOina Jan 28, 2026
3d7ea65
chore: Update dependencies, improve code style, and add GetRawEvidenc…
SammyOina Feb 25, 2026
cc80953
Refactor code structure for improved readability and maintainability
SammyOina Mar 11, 2026
414690c
fix: update golangci configuration to include errcheck for build path…
SammyOina Mar 11, 2026
35a362b
fix: streamline kernel command line handling in QEMU args construction
SammyOina Mar 11, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/checkproto.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.25.x
go-version: 1.26.x

- name: Set up protoc
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.25.x
go-version: 1.26.x
cache-dependency-path: "go.sum"

- name: Checkout cocos
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ jobs:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.25.x
go-version: 1.26.x

- name: golangci-lint
uses: golangci/golangci-lint-action@v8
with:
version: v2.4.0
version: v2.11.1

- name: Build
run: make
Expand All @@ -45,17 +45,17 @@ jobs:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: 1.25.x
go-version: 1.26.x

- name: Create coverage directory
run: mkdir -p coverage

- name: Run tests for ${{ matrix.module }}
run: |
if [[ "${{ matrix.module }}" == "manager" ]]; then
sudo GOTOOLCHAIN=go1.25.0+auto go test -v --race -covermode=atomic -coverprofile coverage/${{ matrix.module }}.out ./${{ matrix.module }}/...
sudo GOTOOLCHAIN=go1.26.0+auto go test -v --race -covermode=atomic -coverprofile coverage/${{ matrix.module }}.out ./${{ matrix.module }}/...
else
GOTOOLCHAIN=go1.25.0+auto go test -v --race -covermode=atomic -coverprofile coverage/${{ matrix.module }}.out ./${{ matrix.module }}/...
GOTOOLCHAIN=go1.26.0+auto go test -v --race -covermode=atomic -coverprofile coverage/${{ matrix.module }}.out ./${{ matrix.module }}/...
fi

- name: Upload coverage artifact
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@ Cargo.lock

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

*.enc
*.key
*.pub
4 changes: 4 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,14 @@ linters:
- legacy
- std-error-handling
rules:
- linters:
- errcheck
path: build/
- linters:
- makezero
text: with non-zero initialized length
paths:
- build
- third_party$
- builtin$
- examples$
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ define compile_service
-X 'github.com/absmach/supermq.Version=$(VERSION)' \
-X 'github.com/absmach/supermq.Commit=$(COMMIT)'" \
$(if $(filter 1,$(EMBED_ENABLED)),-tags "embed",) \
-o ${BUILD_DIR}/cocos-$(1) cmd/$(1)/main.go
-o ${BUILD_DIR}/cocos-$(1) ./cmd/$(1)
endef

.PHONY: all $(SERVICES) $(ATTESTATION_POLICY) install clean
Expand Down
15 changes: 15 additions & 0 deletions agent/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,21 @@ The service is configured using the environment variables from the following tab
| AGENT_OS_BUILD | Operating system build information for attestation | UVC |
| AGENT_OS_DISTRO | Operating system distribution information for attestation | UVC |
| AGENT_OS_TYPE | Operating system type information for attestation | UVC |
| ATTESTATION_SERVICE_SOCKET | Unix socket path for attestation service communication | /run/cocos/attestation.sock |
| AGENT_ENABLE_ATLS | Enable Attestation TLS for secure communication | true |

### Remote Resource Download (Optional)

The agent supports downloading encrypted algorithms and datasets from remote registries (S3, HTTP/HTTPS) and retrieving decryption keys from a Key Broker Service (KBS) via attestation.

| Variable | Description | Default |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| AWS_REGION | AWS region for S3 access (required for S3 downloads) | \"\" |
| AWS_ACCESS_KEY_ID | AWS access key ID for S3 authentication | \"\" |
| AWS_SECRET_ACCESS_KEY | AWS secret access key for S3 authentication | \"\" |
| AWS_ENDPOINT_URL | Custom S3 endpoint URL (for S3-compatible services like MinIO) | \"\" |

**Note**: KBS URL is specified in the computation manifest, not as an environment variable. See [TESTING_REMOTE_RESOURCES.md](./TESTING_REMOTE_RESOURCES.md) for details on using remote resources.

## Deployment

Expand Down
Loading
Loading