Skip to content

Conversation

@sampras343
Copy link

@sampras343 sampras343 commented Dec 11, 2025

User description

Summary

Sync with a major release.
Details of the changes made and the releases are present can be viewed here

Misc

Resolves https://issues.redhat.com/browse/SECURESIGN-3380
Unblocks and closes https://issues.redhat.com/browse/SECURESIGN-2162


PR Type

Enhancement, Bug fix


Description

  • Major dependency upgrade: Sync with Rekor upstream release v1.4.3, including significant architectural changes and API improvements

  • Swag package migration: Migrated from github.com/go-openapi/swag to github.com/go-openapi/swag/conv for pointer/value conversions across all entry types and tests

  • Trillian client refactoring: Introduced ClientManager for connection pooling and decoupled log ranges initialization from direct Trillian client dependency

  • API context handling: Refactored TrillianClient to accept context.Context as parameter instead of storing it, improving context lifecycle management

  • Entry type optimizations: Added custom DecodeEntry() functions for direct JSON unmarshaling without reflection, eliminating goroutine-based concurrent processing in favor of sequential operations across multiple entry types (Rekord, RPM, Alpine, Helm, DSSE, intoto, TUF, JAR, COSE)

  • Standard library updates: Migrated from golang.org/x/exp/slices to standard library slices package; replaced homedir.Dir() with os.UserHomeDir()

  • Error handling modernization: Updated generated models to use stderrors.As() for type assertions and changed interface{} to any type alias

  • Removed deprecated features: Eliminated Redis-based stable checkpoint caching, witness functionality, and the Stable parameter from GetLogInfo API

  • CLI improvements: Updated CLI commands for proper context handling and command parameter passing

  • Test utilities refactoring: Reorganized test utilities into e2eutil and e2ex509 packages with improved test coverage


Diagram Walkthrough

flowchart LR
  A["Upstream v1.4.3"] -->|"Swag package migration"| B["swag/conv API"]
  A -->|"Client architecture"| C["TrillianClientManager"]
  C -->|"Connection pooling"| D["Per-tree gRPC config"]
  A -->|"Entry processing"| E["Custom DecodeEntry functions"]
  E -->|"Optimization"| F["Sequential operations"]
  A -->|"Dependencies"| G["Standard library updates"]
  G -->|"Error handling"| H["stderrors.As pattern"]
  A -->|"Removed features"| I["Checkpoint witness, Redis cache"]
Loading

File Walkthrough

Relevant files
Dependencies
3 files
tle_test.go
Update swag pointer conversion functions to conv package 

pkg/tle/tle_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Replaced all swag.Int64() calls with conv.Pointer(int64())
  • Replaced all swag.String() calls with conv.Pointer()
  • Updated test data structures to use new pointer conversion functions
+57/-57 
types.go
Update to use standard library slices package                       

pkg/types/types.go

  • Updated import from golang.org/x/exp/slices to standard library slices
  • Removed unused log package import
+1/-17   
verify_test.go
Update swag pointer conversion API in verify tests             

pkg/verify/verify_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Replaced all swag.Int64() and swag.String() calls with conv.Pointer()
    function
  • Updated test fixtures to use the new pointer conversion API
+19/-19 
Enhancement
28 files
entries.go
Migrate to new swag/conv package and refactor Trillian client usage

pkg/api/entries.go

  • Changed import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Removed unused import of trillianclient package
  • Updated logEntryFromLeaf function signature to accept
    *sharding.LogRanges instead of sharding.LogRanges
  • Replaced swag.String() and swag.Int64() calls with conv.Pointer()
    throughout the file
  • Updated Trillian client instantiation to use
    api.trillianClientManager.GetTrillianClient() instead of direct
    constructor
  • Changed ed25519.PublicKey type assertion from pointer to value type
  • Updated context handling for Trillian client method calls
  • Fixed error handling in retrieveUUIDFromTree to return resp.Err
    instead of err
+40/-29 
e2e_test.go
Refactor imports and update pointer conversion functions 

pkg/types/dsse/v0.0.1/e2e_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Reorganized imports to use e2ex509 and e2eutil packages instead of
    sigx509 and util
  • Replaced all swag.String() calls with conv.Pointer()
  • Updated all utility function calls to use e2eutil prefix
  • Updated all x509 certificate/key references to use e2ex509 prefix
  • Changed t.Logf() calls to t.Log() for logging
+52/-52 
trillian_client.go
Refactor TrillianClient to pass context as parameter         

pkg/trillianclient/trillian_client.go

  • Removed context field from TrillianClient struct
  • Changed NewTrillianClient to private newTrillianClient and return
    pointer type
  • Updated all public methods to accept context.Context as parameter
    instead of using stored context
  • Added GetLeavesByRange and GetLeafWithoutProof methods for fetching
    leaves without proofs
  • Added getStandaloneLeaf helper method for efficient leaf retrieval
  • Removed context timeout creation from individual methods
  • Added GetLeavesByRangeResult field to Response struct
  • Removed CreateAndInitTree function (moved elsewhere)
  • Added //nolint:gosec comments for type conversions
+108/-68
api.go
Refactor API to use TrillianClientManager for connection handling

pkg/api/api.go

  • Removed dial function for gRPC connection setup
  • Replaced logClient and treeID fields with trillianClientManager in API
    struct
  • Changed logRanges field type from value to pointer
  • Removed checkpointPublishCancel field and related witness
    functionality
  • Updated NewAPI function to use trillianclient.ClientManager for
    connection management
  • Changed NewAPI parameter type from uint to int64
  • Added ActiveTreeID() method to API struct
  • Updated initialization to call ranges.CompleteInitialization() with
    client manager
  • Removed Redis client and checkpoint publisher setup from ConfigureAPI
  • Updated StopAPI to close trillianClientManager instead of canceling
    checkpoint publisher
+62/-115
upload.go
Update CLI upload command for context handling and swag migration

cmd/rekor-cli/app/upload.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Modified uploadCmd Run function signature to accept *cobra.Command
    parameter
  • Changed context initialization from context.Background() to
    cmd.Context()
  • Updated tryUpload function to accept context parameter
  • Replaced swag.Int64Value() call with conv.Value()
  • Updated loadVerifier call to pass context parameter
  • Updated CreateLogEntryParams instantiation to use WithContext variant
+10/-10 
entry.go
Optimize Rekord v0.0.1 entry processing and update swag API

pkg/types/rekord/v0.0.1/entry.go

  • Added custom DecodeEntry() function for direct JSON unmarshaling
    without reflection
  • Refactored fetchExternalEntities() to remove goroutine-based
    concurrent processing and use sequential operations
  • Replaced swag package calls with conv.Pointer() and conv.Value() from
    new API
  • Removed dependencies on govalidator and golang.org/x/sync/errgroup
  • Improved hash validation with explicit length checking instead of
    regex validation
+117/-127
entry.go
Optimize RPM v0.0.1 entry processing and update swag API 

pkg/types/rpm/v0.0.1/entry.go

  • Added custom DecodeEntry() function for efficient direct unmarshaling
  • Refactored fetchExternalEntities() to use sequential buffer operations
    instead of goroutines
  • Replaced swag package calls with conv.Pointer() and conv.Value()
  • Removed govalidator and golang.org/x/sync/errgroup dependencies
  • Improved hash validation with explicit SHA256 length checking
+112/-105
entry.go
Optimize Alpine v0.0.1 entry processing and update swag API

pkg/types/alpine/v0.0.1/entry.go

  • Added custom DecodeEntry() function for optimized unmarshaling with
    base64 decoding
  • Refactored fetchExternalEntities() to eliminate goroutines and use
    sequential processing
  • Replaced swag package calls with conv.Pointer() and conv.Value()
  • Removed govalidator and golang.org/x/sync/errgroup dependencies
  • Enhanced hash validation with explicit length checking
+113/-104
entry.go
Refactor intoto v0.0.2 entry with optimized decoding and updated
dependencies

pkg/types/intoto/v0.0.2/entry.go

  • Added custom DecodeEntry() function for efficient direct unmarshaling
    with base64 handling
  • Replaced golang.org/x/exp/slices with standard library slices package
  • Updated imports to use github.com/go-openapi/swag/conv instead of swag
  • Changed log and PKI imports to use internal packages
    (pkg/internal/log, pkg/pki/pkitypes)
  • Replaced viper configuration with module-level variable
    maxAttestationSize and setter function
  • Updated all swag.String() calls to conv.Pointer()
+141/-16
entry.go
Optimize Helm v0.0.1 entry processing and update swag API

pkg/types/helm/v0.0.1/entry.go

  • Added custom DecodeEntry() function for optimized unmarshaling with
    base64 decoding
  • Refactored fetchExternalEntities() to eliminate goroutines and use
    sequential processing
  • Replaced swag package calls with conv.Pointer()
  • Removed golang.org/x/sync/errgroup dependency
  • Simplified error handling and key/signature verification logic
+97/-77 
entry.go
Refactor DSSE v0.0.1 entry with optimized decoding and updated
dependencies

pkg/types/dsse/v0.0.1/entry.go

  • Added custom DecodeEntry() function for efficient unmarshaling with
    base64 handling
  • Updated imports to use github.com/go-openapi/swag/conv instead of swag
  • Changed log and PKI imports to use internal packages
    (pkg/internal/log, pkg/pki/pkitypes)
  • Replaced all swag.String() calls with conv.Pointer()
  • Updated Verifiers() return type from []pki.PublicKey to
    []pkitypes.PublicKey
+113/-16
entry.go
Refactor entry decoding and attestation size handling       

pkg/types/intoto/v0.0.1/entry.go

  • Replaced swag package calls with swag/conv for pointer/value
    conversions
  • Added DecodeEntry function for direct schema decoding without
    reflection
  • Introduced maxAttestationSize variable with setter function to replace
    viper config access
  • Changed import from pki.PublicKey to pkitypes.PublicKey
  • Removed unused viper import
+82/-19 
tlog.go
Migrate to client manager and update API utilities             

pkg/api/tlog.go

  • Replaced swag.StringValue and swag.BoolValue with conv.Value from
    swag/conv
  • Removed Redis-based stable checkpoint caching logic
  • Refactored to use trillianClientManager instead of direct client
    creation
  • Updated tree ID handling to use ActiveTreeID() method and proper
    validation
  • Simplified context passing and error handling
+34/-51 
helm_v001_schema.go
Modernize error handling with stderrors.As pattern             

pkg/generated/models/helm_v001_schema.go

  • Replaced type assertions with stderrors.As() for error type checking
  • Changed interface{} to any type alias
  • Added blank lines after error type checks for readability
  • Updated validation error handling patterns throughout
+64/-23 
entry.go
Add custom decode entry and improve hash validation           

pkg/types/hashedrekord/v0.0.1/entry.go

  • Added DecodeEntry function for direct schema decoding with base64
    handling
  • Replaced swag.StringValue with conv.Value and swag.String with
    conv.Pointer
  • Removed govalidator dependency and implemented custom hash validation
    by length
  • Changed import from pki.PublicKey to pkitypes.PublicKey
  • Updated log import to use internal package
+83/-17 
ranges.go
Decouple log ranges initialization from Trillian client   

pkg/sharding/ranges.go

  • Refactored NewLogRanges to remove Trillian client dependency and
    return pointer
  • Added CompleteInitialization method to populate tree lengths
    asynchronously
  • Introduced GRPCConfig field to LogRange for per-shard gRPC
    configuration
  • Renamed updateRange to initializeRange with simplified logic
  • Updated tree ID parsing from strconv.Atoi to strconv.ParseInt
+43/-39 
entry_test.go
Update test utilities to use conv.Pointer                               

pkg/types/rekord/v0.0.1/entry_test.go

  • Replaced all swag.String calls with conv.Pointer throughout test cases
  • Updated pointer creation pattern for consistency with new utility
    functions
+20/-20 
intoto_v002_schema.go
Modernize error handling with stderrors.As pattern             

pkg/generated/models/intoto_v002_schema.go

  • Replaced type assertions with stderrors.As() for error type checking
  • Changed interface{} to any type alias
  • Added blank lines after error type checks for readability
  • Updated validation error handling patterns throughout
+63/-22 
manager.go
Add Trillian client manager for connection pooling             

pkg/trillianclient/manager.go

  • New file implementing ClientManager for managing Trillian client
    connections
  • Provides connection pooling and caching with per-tree-ID gRPC
    configuration support
  • Includes CreateAndInitTree function for tree initialization
  • Implements dial function with TLS configuration options
  • Thread-safe client and connection management with graceful shutdown
+218/-0 
e2e_test.go
Refactor e2e test imports to use utility packages               

pkg/types/intoto/e2e_test.go

  • Updated imports to use e2ex509 and e2eutil packages instead of direct
    imports
  • Changed all utility function calls to use e2eutil prefix
  • Updated test data imports to use e2ex509 for cryptographic materials
+31/-31 
entry.go
Add TUF decode entry and simplify entity fetching               

pkg/types/tuf/v0.0.1/entry.go

  • Added DecodeEntry function for direct schema decoding without
    reflection
  • Simplified fetchExternalEntities by removing errgroup and pipe-based
    concurrency
  • Replaced swag.String with conv.Pointer for API version setting
  • Removed unused golang.org/x/sync/errgroup import
+66/-89 
entry.go
Add JAR decode entry and improve hash validation                 

pkg/types/jar/v0.0.1/entry.go

  • Added DecodeEntry function for direct schema decoding with base64
    handling
  • Replaced swag.StringValue with conv.Value and swag.String with
    conv.Pointer
  • Removed govalidator dependency and implemented custom hash validation
    by length
  • Added explicit hex decoding validation for hash values
+83/-10 
jar_v001_schema.go
Modernize error handling with stderrors.As pattern             

pkg/generated/models/jar_v001_schema.go

  • Replaced type assertions with stderrors.As() for error type checking
  • Changed interface{} to any type alias
  • Updated validation error handling patterns throughout
  • Fixed validation calls to pass actual types instead of wrapped types
+52/-19 
entry.go
Add COSE decode entry and attestation size handling           

pkg/types/cose/v0.0.1/entry.go

  • Added DecodeEntry function for direct schema decoding with base64
    handling
  • Introduced maxAttestationSize variable with setter function to replace
    viper config
  • Replaced swag.String with conv.Pointer for API version setting
  • Removed viper import for max attestation size configuration
+90/-11 
dsse_v001_schema.go
Modernize error handling with stderrors.As pattern             

pkg/generated/models/dsse_v001_schema.go

  • Replaced type assertions with stderrors.As() for error type checking
  • Changed interface{} to any type alias
  • Updated validation error handling patterns throughout
  • Fixed validation calls to pass actual types instead of wrapped types
+52/-19 
rekord_v001_schema.go
Modernize error handling with stderrors.As pattern             

pkg/generated/models/rekord_v001_schema.go

  • Replaced type assertions with stderrors.As() for error type checking
  • Changed interface{} to any type alias
  • Updated validation error handling patterns throughout
+51/-18 
root.go
Update dependencies and add attestation size initialization

cmd/rekor-server/app/root.go

  • Updated chi import to use v5 version with new path
  • Replaced homedir.Dir() with os.UserHomeDir()
  • Added new CLI flags for gRPC service config and GCP KMS settings
  • Added initialization calls to set max attestation size for entry types
  • Removed enable_stable_checkpoint flag
+13/-4   
wrap.go
Update format command wrapper signature                                   

cmd/rekor-cli/app/format/wrap.go

  • Updated formatCmd function signature to accept *cobra.Command
    parameter
  • Modified WrapCmd to pass command object to format function
+3/-3     
Tests
5 files
ranges_test.go
Refactor log ranges tests and remove Trillian client dependency

pkg/sharding/ranges_test.go

  • Reorganized imports and removed unused errors import
  • Updated NewLogRanges function calls to remove
    trillian.TrillianLogClient parameter
  • Replaced TestUpdateRange with new TestInitializeRange test function
  • Added comprehensive TestCompleteInitialization_Scenarios test with
    multiple test scenarios
  • Added helper function setupMockServer for mock server setup
  • Updated test assertions to work with new API signatures
+221/-57
e2e_test.go
Update e2e tests with new swag API and improved test utilities

tests/e2e_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Changed testTreeID type from uint to int64
  • Updated x509 test utilities import path to pkg/pki/x509/e2ex509
  • Added import for trillianclient package
  • Replaced swag.String() calls with conv.Pointer()
  • Updated test dial logic to use trillianclient.TestDial() instead of
    api.TestDial()
  • Added new test case TestGetLogProofInvalidShard() for invalid shard
    handling
  • Fixed error logging calls from t.Errorf(err.Error()) to t.Error(err)
+47/-27 
entry_test.go
Update intoto v0.0.2 entry tests with new swag API             

pkg/types/intoto/v0.0.2/entry_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Replaced all swag.String() calls with conv.Pointer() throughout test
    cases
  • Updated test fixtures and assertions to use new pointer conversion API
+28/-28 
e2e_test.go
Update e2e server tests with refactored utility imports   

cmd/rekor-server/e2e_test.go

  • Updated utility imports from pkg/util to pkg/util/e2eutil
  • Replaced all utility function calls with e2eutil prefix
  • Fixed error logging from t.Errorf(err.Error()) to t.Error(err)
  • Fixed formatting in docker command call
+38/-39 
entry_test.go
Update hashedrekord v0.0.1 entry tests with new swag API 

pkg/types/hashedrekord/v0.0.1/entry_test.go

  • Updated import from github.com/go-openapi/swag to
    github.com/go-openapi/swag/conv
  • Replaced all swag.String() calls with conv.Pointer() in test cases
  • Updated test fixtures and model initialization to use new pointer
    conversion API
+32/-32 
Bug fix
1 files
get_log_info_parameters.go
Remove deprecated Stable parameter from GetLogInfo API     

pkg/generated/client/tlog/get_log_info_parameters.go

  • Removed import of github.com/go-openapi/swag package
  • Removed Stable field from GetLogInfoParams struct
  • Removed default value initialization for Stable parameter in
    SetDefaults() method
+1/-48   
Additional files
101 files
build.yml +8/-4     
codeql-analysis.yml +9/-5     
cut-release.yml +2/-0     
main.yml +40/-24 
validate-release.yml +7/-5     
verify.yml +5/-5     
.golangci.yml +3/-0     
.goreleaser.yml +8/-10   
CHANGELOG.md +97/-0   
Dockerfile +2/-2     
Dockerfile.pubsub-emulator +1/-1     
Dockerfile.trillian-log-server +2/-2     
Dockerfile.trillian-log-signer +2/-2     
get.go +6/-7     
log_info.go +17/-17 
log_proof.go +2/-2     
root.go +8/-3     
search.go +8/-8     
state.go +1/-2     
verify.go +5/-6     
get_e2e_test.go +5/-5     
loginfo_e2e_test.go +4/-4     
logproof_e2e_test.go +3/-3     
verify_e2e_test.go +3/-3     
serve.go +2/-2     
docker-compose.backfill-test.yml +1/-0     
docker-compose.debug.yml +0/-3     
docker-compose.test.yml +1/-0     
docker-compose.yml +0/-6     
go.mod +125/-118
go.sum +299/-226
go.mod +23/-24 
go.sum +46/-100
openapi.yaml +0/-6     
error.go +2/-1     
index.go +2/-2     
public_key.go +2/-2     
new_entry.go +1/-1     
create_log_entry_responses.go +6/-5     
entries_client.go +32/-12 
get_log_entry_by_index_responses.go +4/-3     
get_log_entry_by_uuid_responses.go +4/-3     
search_log_query_responses.go +6/-5     
index_client.go +8/-3     
search_index_responses.go +5/-4     
get_public_key_responses.go +4/-3     
pubkey_client.go +8/-3     
get_log_info_responses.go +4/-3     
get_log_proof_responses.go +5/-4     
tlog_client.go +16/-6   
alpine_schema.go +1/-1     
alpine_v001_schema.go +38/-13 
cose_schema.go +1/-1     
cose_v001_schema.go +39/-14 
dsse_schema.go +1/-1     
hashedrekord_schema.go +1/-1     
hashedrekord_v001_schema.go +50/-17 
helm_schema.go +1/-1     
intoto_schema.go +1/-1     
intoto_v001_schema.go +39/-14 
jar_schema.go +1/-1     
log_entry.go +44/-15 
log_info.go +13/-4   
rekord_schema.go +1/-1     
rfc3161_schema.go +1/-1     
rfc3161_v001_schema.go +13/-4   
rpm_schema.go +1/-1     
rpm_v001_schema.go +38/-13 
search_index.go +15/-6   
search_log_query.go +14/-5   
tuf_schema.go +1/-1     
tuf_v001_schema.go +28/-11 
configure_rekor_server.go +11/-6   
embedded_spec.go +0/-18   
create_log_entry.go +1/-0     
create_log_entry_parameters.go +5/-3     
get_log_entry_by_index.go +1/-0     
get_log_entry_by_index_parameters.go +1/-3     
get_log_entry_by_index_responses.go +1/-1     
get_log_entry_by_uuid.go +1/-0     
get_log_entry_by_uuid_parameters.go +1/-2     
get_log_entry_by_uuid_responses.go +1/-1     
get_log_entry_by_uuid_urlbuilder.go +1/-1     
search_log_query.go +1/-0     
search_log_query_parameters.go +5/-3     
search_index.go +1/-0     
search_index_parameters.go +5/-3     
get_public_key.go +1/-0     
get_public_key_parameters.go +1/-3     
rekor_server_api.go +33/-4   
get_log_info.go +1/-0     
get_log_info_parameters.go +3/-50   
get_log_info_urlbuilder.go +0/-18   
get_log_proof.go +1/-0     
get_log_proof_parameters.go +5/-5     
server.go +14/-15 
logger.go +36/-0   
log.go +3/-1     
minisign_e2e_test.go +17/-17 
pki.go +3/-17   
Additional files not shown

dependabot bot and others added 30 commits June 9, 2025 14:23
Bumps google.com/cloudsdktool/google-cloud-cli from 524.0.0-emulators to 525.0.0-emulators.

---
updated-dependencies:
- dependency-name: google.com/cloudsdktool/google-cloud-cli
  dependency-version: 525.0.0-emulators
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.18 to 3.28.19
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@ff0a06e...fca7ace)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group in /hack/tools with 1 update: [github.com/go-swagger/go-swagger](https://github.com/go-swagger/go-swagger).


Updates `github.com/go-swagger/go-swagger` from 0.31.0 to 0.32.3
- [Release notes](https://github.com/go-swagger/go-swagger/releases)
- [Changelog](https://github.com/go-swagger/go-swagger/blob/master/.goreleaser.yml)
- [Commits](go-swagger/go-swagger@v0.31.0...v0.32.3)

---
updated-dependencies:
- dependency-name: github.com/go-swagger/go-swagger
  dependency-version: 0.32.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group with 1 update: golang.


Updates `golang` from 1.24.3 to 1.24.4

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.235.0 to 0.236.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](googleapis/google-api-go-client@v0.235.0...v0.236.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.236.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [github.com/redis/go-redis/v9](https://github.com/redis/go-redis) from 9.9.0 to 9.10.0.
- [Release notes](https://github.com/redis/go-redis/releases)
- [Changelog](https://github.com/redis/go-redis/blob/master/CHANGELOG.md)
- [Commits](redis/go-redis@v9.9.0...v9.10.0)

---
updated-dependencies:
- dependency-name: github.com/redis/go-redis/v9
  dependency-version: 9.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.40.0 to 0.41.0.
- [Commits](golang/net@v0.40.0...v0.41.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.72.2 to 1.73.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.72.2...v1.73.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.73.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/sigstore/sigstore](https://github.com/sigstore/sigstore) | `1.9.4` | `1.9.5` |
| [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql) | `1.9.2` | `1.9.3` |
| [github.com/sigstore/protobuf-specs](https://github.com/sigstore/protobuf-specs) | `0.4.2` | `0.4.3` |
| [github.com/sigstore/sigstore/pkg/signature/kms/aws](https://github.com/sigstore/sigstore) | `1.9.4` | `1.9.5` |
| [github.com/sigstore/sigstore/pkg/signature/kms/azure](https://github.com/sigstore/sigstore) | `1.9.4` | `1.9.5` |
| [github.com/sigstore/sigstore/pkg/signature/kms/gcp](https://github.com/sigstore/sigstore) | `1.9.4` | `1.9.5` |
| [github.com/sigstore/sigstore/pkg/signature/kms/hashivault](https://github.com/sigstore/sigstore) | `1.9.4` | `1.9.5` |


Updates `github.com/sigstore/sigstore` from 1.9.4 to 1.9.5
- [Release notes](https://github.com/sigstore/sigstore/releases)
- [Commits](sigstore/sigstore@v1.9.4...v1.9.5)

Updates `github.com/go-sql-driver/mysql` from 1.9.2 to 1.9.3
- [Release notes](https://github.com/go-sql-driver/mysql/releases)
- [Changelog](https://github.com/go-sql-driver/mysql/blob/v1.9.3/CHANGELOG.md)
- [Commits](go-sql-driver/mysql@v1.9.2...v1.9.3)

Updates `github.com/sigstore/protobuf-specs` from 0.4.2 to 0.4.3
- [Release notes](https://github.com/sigstore/protobuf-specs/releases)
- [Changelog](https://github.com/sigstore/protobuf-specs/blob/main/CHANGELOG.md)
- [Commits](sigstore/protobuf-specs@v0.4.2...v0.4.3)

Updates `github.com/sigstore/sigstore/pkg/signature/kms/aws` from 1.9.4 to 1.9.5
- [Release notes](https://github.com/sigstore/sigstore/releases)
- [Commits](sigstore/sigstore@v1.9.4...v1.9.5)

Updates `github.com/sigstore/sigstore/pkg/signature/kms/azure` from 1.9.4 to 1.9.5
- [Release notes](https://github.com/sigstore/sigstore/releases)
- [Commits](sigstore/sigstore@v1.9.4...v1.9.5)

Updates `github.com/sigstore/sigstore/pkg/signature/kms/gcp` from 1.9.4 to 1.9.5
- [Release notes](https://github.com/sigstore/sigstore/releases)
- [Commits](sigstore/sigstore@v1.9.4...v1.9.5)

Updates `github.com/sigstore/sigstore/pkg/signature/kms/hashivault` from 1.9.4 to 1.9.5
- [Release notes](https://github.com/sigstore/sigstore/releases)
- [Commits](sigstore/sigstore@v1.9.4...v1.9.5)

---
updated-dependencies:
- dependency-name: github.com/sigstore/sigstore
  dependency-version: 1.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/go-sql-driver/mysql
  dependency-version: 1.9.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/sigstore/protobuf-specs
  dependency-version: 0.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/sigstore/sigstore/pkg/signature/kms/aws
  dependency-version: 1.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/sigstore/sigstore/pkg/signature/kms/azure
  dependency-version: 1.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/sigstore/sigstore/pkg/signature/kms/gcp
  dependency-version: 1.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/sigstore/sigstore/pkg/signature/kms/hashivault
  dependency-version: 1.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.236.0 to 0.237.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](googleapis/google-api-go-client@v0.236.0...v0.237.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.237.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.28.19 to 3.29.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@fca7ace...ce28f5b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [go.step.sm/crypto](https://github.com/smallstep/crypto) from 0.66.0 to 0.67.0.
- [Release notes](https://github.com/smallstep/crypto/releases)
- [Commits](smallstep/crypto@v0.66.0...v0.67.0)

---
updated-dependencies:
- dependency-name: go.step.sm/crypto
  dependency-version: 0.67.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.237.0 to 0.238.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](googleapis/google-api-go-client@v0.237.0...v0.238.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.238.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps google.com/cloudsdktool/google-cloud-cli from 525.0.0-emulators to 527.0.0-emulators.

---
updated-dependencies:
- dependency-name: google.com/cloudsdktool/google-cloud-cli
  dependency-version: 527.0.0-emulators
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the all group with 1 update: [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).


Updates `sigstore/cosign-installer` from 3.8.2 to 3.9.0
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](sigstore/cosign-installer@3454372...fb28c2b)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps golang from `db5d0af` to `10c1318`.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
…igstore#2523)

Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/go-viper/mapstructure/releases)
- [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md)
- [Commits](go-viper/mapstructure@v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-viper/mapstructure/v2
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2526)

Bumps sigstore/scaffolding/trillian_log_signer from `bfcc659` to `65ed187`.

---
updated-dependencies:
- dependency-name: sigstore/scaffolding/trillian_log_signer
  dependency-version: v1.7.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2527)

Bumps sigstore/scaffolding/trillian_log_server from `ff64f73` to `2c677ca`.

---
updated-dependencies:
- dependency-name: sigstore/scaffolding/trillian_log_server
  dependency-version: v1.7.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the all group with 2 updates: [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `sigstore/cosign-installer` from 3.9.0 to 3.9.1
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](sigstore/cosign-installer@fb28c2b...398d4b0)

Updates `github/codeql-action` from 3.29.0 to 3.29.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@ce28f5b...39edc49)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-version: 3.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github/codeql-action
  dependency-version: 3.29.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the all group with 2 updates: [cloud.google.com/go/profiler](https://github.com/googleapis/google-cloud-go) and [github.com/hashicorp/go-retryablehttp](https://github.com/hashicorp/go-retryablehttp).


Updates `cloud.google.com/go/profiler` from 0.4.2 to 0.4.3
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](googleapis/google-cloud-go@apps/v0.4.2...apps/v0.4.3)

Updates `github.com/hashicorp/go-retryablehttp` from 0.7.7 to 0.7.8
- [Changelog](https://github.com/hashicorp/go-retryablehttp/blob/main/CHANGELOG.md)
- [Commits](hashicorp/go-retryablehttp@v0.7.7...v0.7.8)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/profiler
  dependency-version: 0.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/hashicorp/go-retryablehttp
  dependency-version: 0.7.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tore#2534)

Bumps the all group with 1 update: golang.


Updates `golang` from 1.24.4 to 1.24.5

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.24.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/go-viper/mapstructure/releases)
- [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md)
- [Commits](go-viper/mapstructure@v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: github.com/go-viper/mapstructure/v2
  dependency-version: 2.3.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…diomatic (sigstore#2536)

* move context handling to be request based and idiomatic

Signed-off-by: Bob Callaway <[email protected]>

* reuse var

Signed-off-by: Bob Callaway <[email protected]>

---------

Signed-off-by: Bob Callaway <[email protected]>
Bumps [github.com/sigstore/protobuf-specs](https://github.com/sigstore/protobuf-specs) from 0.4.3 to 0.5.0.
- [Release notes](https://github.com/sigstore/protobuf-specs/releases)
- [Changelog](https://github.com/sigstore/protobuf-specs/blob/main/CHANGELOG.md)
- [Commits](sigstore/protobuf-specs@v0.4.3...v0.5.0)

---
updated-dependencies:
- dependency-name: github.com/sigstore/protobuf-specs
  dependency-version: 0.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
)

Bumps the all group with 1 update: [github.com/spf13/pflag](https://github.com/spf13/pflag).


Updates `github.com/spf13/pflag` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/spf13/pflag/releases)
- [Commits](spf13/pflag@v1.0.6...v1.0.7)

---
updated-dependencies:
- dependency-name: github.com/spf13/pflag
  dependency-version: 1.0.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.15.0 to 0.16.0.
- [Commits](golang/sync@v0.15.0...v0.16.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dependabot bot and others added 23 commits November 3, 2025 16:29
…2660)

Bumps google.com/cloudsdktool/google-cloud-cli from 544.0.0-emulators to 545.0.0-emulators.

---
updated-dependencies:
- dependency-name: google.com/cloudsdktool/google-cloud-cli
  dependency-version: 545.0.0-emulators
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Package is already imported from go-viper after
owner change.

Signed-off-by: Tonis Tiigi <[email protected]>
Currently the uber/zap logger and go-chi middleware have
leaked into the library packages in pkg/types imported by
other projects.

This adds internal dependency-free logger as default for
these library packages. Any user of Zap or the Rekor
CLI utilities can continue to use `pkg/log` to use and
configure Zap without any changes. The internal logger is
silent by default as suitable for libraries.

Signed-off-by: Tonis Tiigi <[email protected]>
CLI config reading routines from Viper should not be
included in spec definition types under pkg because
- this creates unnecessarily huge dependency
- it creates unexpected reconfiguration/attack method
  to applications importing the types.

Instead, read viper config in Rekor CLI and pass to the
types packages to reconfigure them. Default size limit
remains unchanged.

Signed-off-by: Tonis Tiigi <[email protected]>
E2E utilities should be only defined in test files and
should not be mixed with the common function in pkg/util.
Go modules/vendoring makes no filtering based on build tags
and so all the dependencies needed for E2E become dependencies
to any package that internally imports pkg/util.

Signed-off-by: Tonis Tiigi <[email protected]>
…igstore#2666)

Bumps [github.com/go-openapi/swag](https://github.com/go-openapi/swag) from 0.24.1 to 0.25.1.
- [Commits](go-openapi/swag@v0.24.1...v0.25.1)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/swag
  dependency-version: 0.25.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
pkg/pki package defines both the interface types for PublicKey
and Signature, linked to many external packages, and also all the
implementations for pki via static factory map.

This separates the types to separate package so the packages
that use them can be included without a big dependency chain.
The types are aliased to the old pkg/pki package so that this
change wouldn't break any backwards compatibility.

Signed-off-by: Tonis Tiigi <[email protected]>
…2676)

Bumps google.com/cloudsdktool/google-cloud-cli from 545.0.0-emulators to 546.0.0-emulators.

---
updated-dependencies:
- dependency-name: google.com/cloudsdktool/google-cloud-cli
  dependency-version: 546.0.0-emulators
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* 400-499 should be logged as warning at most
* The logged error should include the code: otherwise it's often a
  cryptic string that does not really say if it's a client issue or no.
  Example:

     ERRROR: validation failure list: hash in body should match '^(sha512:)?[0-9a-fA-F]{128}$|^(sha256:)?[0-9a-fA-F]{64}$|^(sha1:)?[0-9a-fA-F]{40}$'

Signed-off-by: Jussi Kukkonen <[email protected]>
…tore#2675)

Bumps the all group with 1 update: golang.


Updates `golang` from 1.25.3 to 1.25.4

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
….0 (sigstore#2661)

Bumps [github.com/tink-crypto/tink-go/v2](https://github.com/tink-crypto/tink-go) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/tink-crypto/tink-go/releases)
- [Commits](tink-crypto/tink-go@v2.4.0...v2.5.0)

---
updated-dependencies:
- dependency-name: github.com/tink-crypto/tink-go/v2
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the all group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/go-openapi/errors](https://github.com/go-openapi/errors) | `0.22.3` | `0.22.4` |
| [github.com/go-openapi/loads](https://github.com/go-openapi/loads) | `0.23.1` | `0.23.2` |
| [github.com/go-openapi/runtime](https://github.com/go-openapi/runtime) | `0.29.0` | `0.29.2` |
| [github.com/go-openapi/spec](https://github.com/go-openapi/spec) | `0.22.0` | `0.22.1` |
| [github.com/go-openapi/strfmt](https://github.com/go-openapi/strfmt) | `0.24.0` | `0.25.0` |
| [github.com/go-openapi/validate](https://github.com/go-openapi/validate) | `0.25.0` | `0.25.1` |
| [golang.org/x/sync](https://github.com/golang/sync) | `0.17.0` | `0.18.0` |


Updates `github.com/go-openapi/errors` from 0.22.3 to 0.22.4
- [Commits](go-openapi/errors@v0.22.3...v0.22.4)

Updates `github.com/go-openapi/loads` from 0.23.1 to 0.23.2
- [Commits](go-openapi/loads@v0.23.1...v0.23.2)

Updates `github.com/go-openapi/runtime` from 0.29.0 to 0.29.2
- [Release notes](https://github.com/go-openapi/runtime/releases)
- [Commits](go-openapi/runtime@v0.29.0...v0.29.2)

Updates `github.com/go-openapi/spec` from 0.22.0 to 0.22.1
- [Commits](go-openapi/spec@v0.22.0...v0.22.1)

Updates `github.com/go-openapi/strfmt` from 0.24.0 to 0.25.0
- [Commits](go-openapi/strfmt@v0.24.0...v0.25.0)

Updates `github.com/go-openapi/validate` from 0.25.0 to 0.25.1
- [Commits](go-openapi/validate@v0.25.0...v0.25.1)

Updates `golang.org/x/sync` from 0.17.0 to 0.18.0
- [Commits](golang/sync@v0.17.0...v0.18.0)

---
updated-dependencies:
- dependency-name: github.com/go-openapi/errors
  dependency-version: 0.22.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/go-openapi/loads
  dependency-version: 0.23.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/go-openapi/runtime
  dependency-version: 0.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/go-openapi/spec
  dependency-version: 0.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/go-openapi/strfmt
  dependency-version: 0.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: github.com/go-openapi/validate
  dependency-version: 0.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: golang.org/x/sync
  dependency-version: 0.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the all group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.31.0 to 4.31.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@4e94bd1...0499de3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.28.0 to 0.29.0.
- [Commits](golang/mod@v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [go.step.sm/crypto](https://github.com/smallstep/crypto) from 0.73.0 to 0.74.0.
- [Release notes](https://github.com/smallstep/crypto/releases)
- [Commits](smallstep/crypto@v0.73.0...v0.74.0)

---
updated-dependencies:
- dependency-name: go.step.sm/crypto
  dependency-version: 0.74.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2678)

Bumps sigstore/scaffolding/trillian_log_server from `1cd5a59` to `26d7c5b`.

---
updated-dependencies:
- dependency-name: sigstore/scaffolding/trillian_log_server
  dependency-version: v1.7.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2677)

Bumps sigstore/scaffolding/trillian_log_signer from `b2e4b5d` to `a2d7270`.

---
updated-dependencies:
- dependency-name: sigstore/scaffolding/trillian_log_signer
  dependency-version: v1.7.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2679)

* (fix): gosec issues for integer overflow conversion

Signed-off-by: Sachin Sampras M <[email protected]>

* (fix): gosec issues for integer overflow conversion in trillian client

Signed-off-by: Sachin Sampras M <[email protected]>

* (fix): gosec high severity issues

Signed-off-by: Sachin Sampras M <[email protected]>

* (docs): add relevant comments

Signed-off-by: Sachin Sampras M <[email protected]>

* (docs): add nolint gosec comments

Signed-off-by: Sachin Sampras M <[email protected]>

* (docs): lint whitespace fix

Signed-off-by: Sachin Sampras M <[email protected]>

* (docs): added line wise no lint comments

Signed-off-by: Sachin Sampras M <[email protected]>

---------

Signed-off-by: Sachin Sampras M <[email protected]>
@sampras343 sampras343 marked this pull request as draft December 11, 2025 13:56
@qodo-code-review
Copy link

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
Missing audit logs: New critical actions (adding leaves, retrieving entries by index/UUID, client acquisition)
are not consistently accompanied by structured audit logging of action, actor, outcome,
and timestamp.

Referred Code
	return nil, handleRekorAPIError(params, http.StatusInternalServerError, err, failedToGenerateCanonicalEntry)
}

tc, err := api.trillianClientManager.GetTrillianClient(api.ActiveTreeID())
if err != nil {
	return nil, handleRekorAPIError(params, http.StatusInternalServerError, err, trillianUnexpectedResult)
}

resp := tc.AddLeaf(ctx, leaf)
// this represents overall GRPC response state (not the results of insertion into the log)
if resp.Status != codes.OK {
	return nil, handleRekorAPIError(params, http.StatusInternalServerError, fmt.Errorf("grpc error: %w", resp.Err), trillianUnexpectedResult)
}

// this represents the results of inserting the proposed leaf into the log; status is nil in success path
insertionStatus := resp.GetAddResult.QueuedLeaf.Status
if insertionStatus != nil {
	switch insertionStatus.Code {
	case int32(code.Code_OK):
	case int32(code.Code_ALREADY_EXISTS), int32(code.Code_FAILED_PRECONDITION):
		existingUUID := hex.EncodeToString(rfc6962.DefaultHasher.HashLeaf(leaf))


 ... (clipped 104 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Error propagation: New trillian client acquisition and RPC calls add error paths where returned errors are
wrapped but consistency of context (operation and identifiers) varies and some branches
return raw resp.Err without added context.

Referred Code
for i, hash := range searchHashes {
	var results map[int64]*trillian.GetEntryAndProofResponse
	for _, shard := range api.logRanges.AllShards() {
		tc, err := api.trillianClientManager.GetTrillianClient(shard)
		if err != nil {
			return handleRekorAPIError(params, http.StatusInternalServerError, err, trillianCommunicationError)
		}
		resp := tc.GetLeafAndProofByHash(httpReqCtx, hash)
		switch resp.Status {
		case codes.OK:
			leafResult := resp.GetLeafAndProofResult
			if leafResult != nil && leafResult.Leaf != nil {
				if results == nil {
					results = map[int64]*trillian.GetEntryAndProofResponse{}
				}
				results[shard] = resp.GetLeafAndProofResult
			}
		case codes.NotFound:
			// do nothing here, do not throw 404 error
			continue
		default:


 ... (clipped 128 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix incorrect struct return type

In retrieveUUIDFromTree, return a zero-value models.LogEntry{} instead of nil on
error to fix a compile error, as models.LogEntry is a struct.

pkg/api/entries.go [756-758]

 if err != nil {
-    return nil, fmt.Errorf("getting log client for tree %d: %w", tid, err)
+    return models.LogEntry{}, fmt.Errorf("getting log client for tree %d: %w", tid, err)
 }
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a compile error introduced in the PR where nil is returned for a struct type, and provides the correct fix.

High
Add hex decoding validation for hash

Add a check to verify that the hash string is a valid hex encoding before
checking its length, preventing potential downstream errors from malformed but
correctly-sized inputs.

pkg/types/hashedrekord/v0.0.1/entry.go [234-251]

+	if _, err := hex.DecodeString(conv.Value(hash.Value)); err != nil {
+		return nil, nil, &types.InputValidationError{Err: fmt.Errorf("invalid value for hash: %w", err)}
+	}
+
 	var alg crypto.Hash
 	switch conv.Value(hash.Algorithm) {
 	case models.HashedrekordV001SchemaDataHashAlgorithmSha384:
 		if len(*hash.Value) != crypto.SHA384.Size()*2 {
 			return nil, nil, &types.InputValidationError{Err: errors.New("invalid value for hash")}
 		}
 		alg = crypto.SHA384
 	case models.HashedrekordV001SchemaDataHashAlgorithmSha512:
 		if len(*hash.Value) != crypto.SHA512.Size()*2 {
 			return nil, nil, &types.InputValidationError{Err: errors.New("invalid value for hash")}
 		}
 		alg = crypto.SHA512
 	default:
 		if len(*hash.Value) != crypto.SHA256.Size()*2 {
 			return nil, nil, &types.InputValidationError{Err: errors.New("invalid value for hash")}
 		}
 		alg = crypto.SHA256
 	}

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the new validation logic only checks hash length and not its hex format, which could lead to downstream errors. This is a valid improvement for robustness.

Medium
General
Preserve proof data in response

In GetLeafAndProofByHash, preserve the getProofResult from the initial proof
fetch by adding it to the final response object before returning.

pkg/trillianclient/trillian_client.go [209-219]

 leafIndex := proofs[0].LeafIndex
 // fetch the leaf without re-requesting a proof (since we already have it)
 leafOnlyResp := t.getStandaloneLeaf(ctx, leafIndex, hash, proofs[0], proofResp.getProofResult.SignedLogRoot)
 if leafOnlyResp.Err != nil {
     return &Response{
         Status: status.Code(leafOnlyResp.Err),
         Err:    leafOnlyResp.Err,
     }
 }
 
+// Preserve the original getProofResult in the final response
+leafOnlyResp.getProofResult = proofResp.getProofResult
 return leafOnlyResp

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why: The suggestion correctly points out that potentially useful information from an intermediate response is being discarded, and proposes a reasonable fix to preserve it, improving the function's completeness.

Low
  • More

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants