diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 2fad43c9..00000000 --- a/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -# go enforces lf line endings -*.go eol=lf - -# testdata should not be mangled by git -*.json binary diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 56186b3f..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,18 +0,0 @@ -Please fill in the fields below to submit a pull request. The more information that is provided, the better. - -Fixes # - -Release Notes: - -**Types of changes**: - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected). **Please ensure that your PR title** is a [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) breaking change (with a `!`, as in `feat!: change foo`). - -**Description of the changes being introduced by the pull request**: - -**Please verify and check that the pull request fulfills the following requirements**: - -- [ ] Tests have been added for the bug fix or new feature -- [ ] Docs have been added for the bug fix or new feature diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 00000000..015a7793 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,8 @@ +coverage: + status: + project: + default: + # basic + target: auto + threshold: 5% + patch: off \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 309a9f75..13ce28b1 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,8 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + version: 2 updates: # Monitor Go dependencies @@ -6,41 +11,6 @@ updates: schedule: interval: "weekly" time: "10:00" - groups: - minor-patch: - update-types: - - "minor" - - "patch" - commit-message: - prefix: "chore" - include: "scope" - open-pull-requests-limit: 10 - # Monitor Github Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - time: "10:00" - groups: - minor-patch: - update-types: - - "minor" - - "patch" - commit-message: - prefix: "chore" - include: "scope" - open-pull-requests-limit: 10 - # Monitor Python test dependencies - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "weekly" - time: "10:00" - groups: - minor-patch: - update-types: - - "minor" - - "patch" commit-message: prefix: "chore" include: "scope" diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml deleted file mode 100644 index 3bec14b1..00000000 --- a/.github/workflows/auto-merge.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Dependabot auto-merge - -on: - pull_request: - -permissions: read-all - -jobs: - dependabot: - permissions: - contents: write - pull-requests: write - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }} - steps: - - name: Dependabot metadata - id: metadata - uses: dependabot/fetch-metadata@c9c4182bf1b97f5224aee3906fd373f6b61b4526 # v1.6.0 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Enable auto-merge for Dependabot PRs - if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' }} - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{ github.event.pull_request.html_url }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml deleted file mode 100644 index 2910bd8a..00000000 --- a/.github/workflows/changelog.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: "Changelog checks" - -on: - pull_request_target: - types: - - opened - - edited - - synchronize - -jobs: - conventional-commits-lint-check: - name: "Lint PR title" - runs-on: "ubuntu-latest" - steps: - - name: - uses: amannn/action-semantic-pull-request@e9fabac35e210fea40ca5b14c0da95a099eff26f - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 295923ec..4fbfc73f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,25 +1,25 @@ +# Copyright 2022-2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause on: pull_request: push: branches: - - "master" + - "main" tags: - "v*" name: CI -permissions: - contents: write jobs: + linting: + uses: ./.github/workflows/linting.yml tests: uses: ./.github/workflows/tests.yml - tuf: - needs: tests - if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') - uses: ./.github/workflows/release.yml - with: - cli-name: tuf - tuf-client: - needs: tests - if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') - uses: ./.github/workflows/release.yml - with: - cli-name: tuf-client + examples: + uses: ./.github/workflows/examples.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ee51d0a8..fbc73b48 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,12 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: [main] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [main] schedule: - - cron: '25 14 * * 6' + - cron: "25 14 * * 6" jobs: analyze: @@ -32,39 +32,41 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'go' ] + language: ["go"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - - name: Checkout repository - uses: actions/checkout@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version-file: 'go.mod' + cache: false + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@74483a38d39275f33fcff5f35b679b5ca4a26a99 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@74483a38d39275f33fcff5f35b679b5ca4a26a99 - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 + # ℹ️ Command-line programs to run using the OS shell. + # πŸ“š https://git.io/JvXDl - # ℹ️ Command-line programs to run using the OS shell. - # πŸ“š https://git.io/JvXDl + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + #- run: | + # make bootstrap + # make release - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@74483a38d39275f33fcff5f35b679b5ca4a26a99 diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml new file mode 100644 index 00000000..f717bfbb --- /dev/null +++ b/.github/workflows/examples.yml @@ -0,0 +1,103 @@ +# Copyright 2022-2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause +on: + workflow_call: +name: Examples # not exactly right to test functionality in such a way but it does act as a set of end to end test cases for the time being, nevertheless should be updated +jobs: + get-go-versions: + name: Collect available Go versions + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.versions.outputs.matrix }} + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - uses: arnested/go-version-action@b556f8d91b644164318c709d28b9083eaf0c064d + id: versions + client: + strategy: + fail-fast: false # Keep running if one leg fails. + matrix: + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources + go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} + runs-on: ${{ matrix.os }} + needs: get-go-versions + steps: + - name: Checkout code + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - name: Setup - Go ${{ matrix.go-version }} + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version: ${{ matrix.go-version }} + - run: make example-client + repository: + strategy: + fail-fast: false # Keep running if one leg fails. + matrix: + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources + go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} + runs-on: ${{ matrix.os }} + needs: get-go-versions + steps: + - name: Checkout code + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - name: Setup - Go ${{ matrix.go-version }} + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version: ${{ matrix.go-version }} + - run: make example-repository + multirepo: + strategy: + fail-fast: false # Keep running if one leg fails. + matrix: + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources + go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} + runs-on: ${{ matrix.os }} + needs: get-go-versions + steps: + - name: Checkout code + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - name: Setup - Go ${{ matrix.go-version }} + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version: ${{ matrix.go-version }} + - run: make example-multirepo + tuf-client-cli: + strategy: + fail-fast: false # Keep running if one leg fails. + matrix: + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources + go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} + runs-on: ${{ matrix.os }} + needs: get-go-versions + steps: + - name: Checkout code + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - name: Setup - Go ${{ matrix.go-version }} + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version: ${{ matrix.go-version }} + - run: make example-tuf-client-cli + root-signing: + strategy: + fail-fast: false # Keep running if one leg fails. + matrix: + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources + go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} + runs-on: ${{ matrix.os }} + needs: get-go-versions + steps: + - name: Checkout code + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - name: Setup - Go ${{ matrix.go-version }} + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version: ${{ matrix.go-version }} + - run: make example-root-signing diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 00000000..8b0891f4 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,40 @@ +# Copyright 2022-2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause +on: + workflow_call: +name: Linting +jobs: + govulncheck_job: + runs-on: ubuntu-latest + name: govulncheck + steps: + - id: govulncheck + uses: golang/govulncheck-action@7da72f730e37eeaad891fcff0a532d27ed737cd4 + with: + go-version-file: 'go.mod' + go-package: ./... + golangci: + name: golangci-lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + with: + go-version-file: 'go.mod' + cache: false + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + # Require: The version of golangci-lint to use. + # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version. + # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit. + version: v1.54 + args: --timeout 5m --verbose diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index c3dee679..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,32 +0,0 @@ -on: - workflow_call: - inputs: - cli-name: - required: true - type: string -name: Release -jobs: - release: - permissions: - contents: write - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Get Go version - uses: arnested/go-version-action@f3c61952b5f4cc7c74fb216df044634f6a59770f - id: go-version - - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 - with: - go-version: ${{ steps.go-version.outputs.minimal }} - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 - with: - distribution: goreleaser - version: "v1.7.0" - args: release --config ./.goreleaser/${{ inputs.cli-name }}.yml --rm-dist - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/specification-version-check.yml b/.github/workflows/specification-version-check.yml deleted file mode 100644 index 523e455c..00000000 --- a/.github/workflows/specification-version-check.yml +++ /dev/null @@ -1,14 +0,0 @@ -on: - schedule: - - cron: "0 13 * * *" - workflow_dispatch: -name: Specification version check -jobs: - # Get the latest TUF specification release and open an issue (if needed) - specification-bump-check: - permissions: - contents: read - issues: write - uses: theupdateframework/specification/.github/workflows/check-latest-spec-version.yml@master - with: - tuf-version: "v1.0.32" # Should be updated to the according version either manually or extracted automatically as how it's done in python-tuf diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 95509035..6b2d7172 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,3 +1,13 @@ +# Copyright 2022-2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause on: workflow_call: name: Tests @@ -8,67 +18,31 @@ jobs: outputs: matrix: ${{ steps.versions.outputs.matrix }} steps: - - uses: actions/checkout@v4 - - uses: arnested/go-version-action@f3c61952b5f4cc7c74fb216df044634f6a59770f + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 + - uses: arnested/go-version-action@b556f8d91b644164318c709d28b9083eaf0c064d id: versions - run: + name: Run strategy: fail-fast: false # Keep running if one leg fails. matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest] # , macos-latest, windows-latest] Enable later so we don't waste github actions resources go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} runs-on: ${{ matrix.os }} needs: get-go-versions steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Setup - Go ${{ matrix.go-version }} - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 + uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f with: go-version: ${{ matrix.go-version }} - - name: Setup - Python - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c - with: - python-version: "3.10" - cache: "pip" - cache-dependency-path: "requirements-test.txt" - - - name: Install Python dependencies - run: | - python3 -m pip install --upgrade pip - python3 -m pip install --upgrade -r requirements-test.txt - - name: Run tests - run: go test -race -covermode atomic -coverprofile='profile.cov' ./... + run: go test -race -covermode=atomic -coverpkg=./metadata/... -coverprofile=coverage.out ./... - name: Send coverage - uses: shogo82148/actions-goveralls@7b1bd2871942af030d707d6574e5f684f9891fb2 - with: - path-to-profile: profile.cov - flag-name: Go-${{ matrix.go-version }} - parallel: true - - checks: - strategy: - matrix: - go-version: ${{ fromJSON(needs.get-go-versions.outputs.matrix) }} - runs-on: ubuntu-latest - needs: get-go-versions - steps: - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 - with: - go-version: ${{ matrix.go-version }} - - uses: actions/checkout@v4 - - name: golangci-lint - uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc - with: - version: v1.55.2 # has to be pinned and thus manually updated due to https://github.com/golangci/golangci-lint-action/blob/6a290f7d5d488e1e423b0b37fe802c822ca2c08c/README.md?plain=1#L108 - args: --timeout 5m --verbose - - name: govulncheck - uses: golang/govulncheck-action@v1 + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: - go-version-input: ${{ matrix.go-version }} - go-package: -json ./... + flags: Go-${{ matrix.go-version }} diff --git a/.gitignore b/.gitignore index 39e7149c..8d9f6403 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -.DS_Store -cmd/tuf/tuf -cmd/tuf-client/tuf-client .vscode +dist/ +.idea/ *~ diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 4e437c1d..00000000 --- a/.gitpod.yml +++ /dev/null @@ -1,7 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# and adjusted to meet the needs of this project - -# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart - -tasks: - - init: python -m pip install --upgrade -r requirements-test.txt && go get && go build ./... && go test ./... diff --git a/.golangci.yml b/.golangci.yml index 992c1190..e4c45b85 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,10 +1,24 @@ -linters: - disable-all: true +# Copyright 2022-2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause +run: + linters: enable: - - staticcheck - gofmt - - govet - - gosimple - - unused - - typecheck - - forbidigo + - bodyclose + - contextcheck + - errname + - gocyclo + - godot + - godox + - misspell + - stylecheck + - whitespace + - gocritic diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 00000000..c271b3d7 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,55 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... +builds: + - skip: true + # - env: + # - CGO_ENABLED=0 + # goos: + # - linux + # - windows + # - darwin + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of uname. + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip +checksum: + name_template: "checksums.txt" +snapshot: + name_template: "{{ incpatch .Version }}-next" +source: + enabled: true +changelog: + use: github + groups: + - title: "Breaking changes" + regexp: "^.*(?:BREAKING CHANGE)|![(\\w)]*:+.*$" + order: 0 + - title: Features + regexp: "^.*feat[(\\w)]*:+.*$" + order: 1 + - title: "Bug fixes" + regexp: "^.*fix[(\\w)]*:+.*$" + order: 2 + - title: Others + order: 999 +release: + # If set to auto, will mark the release as not ready for production + # in case there is an indicator for this in the tag e.g. v1.0.0-rc1 + prerelease: auto diff --git a/.goreleaser/tuf-client.yml b/.goreleaser/tuf-client.yml deleted file mode 100644 index 66820049..00000000 --- a/.goreleaser/tuf-client.yml +++ /dev/null @@ -1,40 +0,0 @@ -project_name: tuf-client -builds: - - ldflags: - - "-s -w" - - "-extldflags=-zrelro" - - "-extldflags=-znow" - env: - - "CGO_ENABLED=0" - - "GO111MODULE=on" - flags: - - -mod=readonly - - -trimpath - goos: - - linux - - darwin - - windows - goarch: - - amd64 - - arm64 - main: ./cmd/tuf-client/ -source: - enabled: true -changelog: - use: github - groups: - - title: "Breaking changes" - regexp: "^.*BREAKING CHANGE[(\\w)]*:+.*$" - order: 0 - - title: Features - regexp: "^.*feat[(\\w)]*:+.*$" - order: 1 - - title: "Bug fixes" - regexp: "^.*fix[(\\w)]*:+.*$" - order: 2 - - title: Others - order: 999 -release: - # If set to auto, will mark the release as not ready for production - # in case there is an indicator for this in the tag e.g. v1.0.0-rc1 - prerelease: auto diff --git a/.goreleaser/tuf.yml b/.goreleaser/tuf.yml deleted file mode 100644 index 394ebc82..00000000 --- a/.goreleaser/tuf.yml +++ /dev/null @@ -1,40 +0,0 @@ -project_name: tuf -builds: - - ldflags: - - "-s -w" - - "-extldflags=-zrelro" - - "-extldflags=-znow" - env: - - "CGO_ENABLED=0" - - "GO111MODULE=on" - flags: - - -mod=readonly - - -trimpath - goos: - - linux - - darwin - - windows - goarch: - - amd64 - - arm64 - main: ./cmd/tuf/ -source: - enabled: true -changelog: - use: github - groups: - - title: "Breaking changes" - regexp: "^.*(?:BREAKING CHANGE)|![(\\w)]*:+.*$" - order: 0 - - title: Features - regexp: "^.*feat[(\\w)]*:+.*$" - order: 1 - - title: "Bug fixes" - regexp: "^.*fix[(\\w)]*:+.*$" - order: 2 - - title: Others - order: 999 -release: - # If set to auto, will mark the release as not ready for production - # in case there is an indicator for this in the tag e.g. v1.0.0-rc1 - prerelease: auto diff --git a/.minder.yaml b/.minder.yaml new file mode 100644 index 00000000..863387a4 --- /dev/null +++ b/.minder.yaml @@ -0,0 +1,133 @@ +# This is the Minder profile file used for securely monitoring rdimitrov/go-tuf-metadata. +# For more information, see https://github.com/stacklok/minder. +--- +version: v1 +type: profile +name: go-tuf-metadata +context: + provider: github +alert: "on" +remediate: "on" +repository: + - type: secret_scanning + def: + enabled: true + - type: secret_push_protection + def: + enabled: true + - type: github_actions_allowed + def: + allowed_actions: all + # - type: allowed_selected_actions + # def: + # github_owned_allowed: true + # verified_allowed: true + # patterns_allowed: [] + - type: default_workflow_permissions + def: + default_workflow_permissions: write + can_approve_pull_request_reviews: true + - type: codeql_enabled + def: + languages: [go] + schedule_interval: '30 4-6 * * *' + - type: actions_check_pinned_tags + def: {} + - type: dependabot_configured + def: + package_ecosystem: gomod + schedule_interval: weekly + apply_if_file: go.mod + - type: dockerfile_no_latest_tag + def: {} + # - type: trivy_action_enabled + # def: {} + - type: branch_protection_enabled + params: + branch: main + def: {} + - type: branch_protection_allow_deletions + params: + branch: main + def: + allow_deletions: false + - type: branch_protection_allow_force_pushes + params: + branch: main + def: + allow_force_pushes: true + # - type: branch_protection_enforce_admins + # params: + # branch: main + # def: + # enforce_admins: true + - type: branch_protection_lock_branch + params: + branch: main + def: + lock_branch: false + - type: branch_protection_require_conversation_resolution + params: + branch: main + def: + required_conversation_resolution: true + - type: branch_protection_require_linear_history + params: + branch: main + def: + required_linear_history: true + - type: branch_protection_require_pull_request_approving_review_count + params: + branch: main + def: + required_approving_review_count: 1 + - type: branch_protection_require_pull_request_code_owners_review + params: + branch: main + def: + require_code_owner_reviews: true + - type: branch_protection_require_pull_request_dismiss_stale_reviews + params: + branch: main + def: + dismiss_stale_reviews: true + - type: branch_protection_require_pull_request_last_push_approval + params: + branch: main + def: + require_last_push_approval: true + - type: branch_protection_require_pull_requests + params: + branch: main + def: + required_pull_request_reviews: true + - type: branch_protection_require_signatures + params: + branch: main + def: + required_signatures: false + - type: license + def: + license_filename: LICENSE + license_type: "BSD-2-Clause" +# artifact: +# - type: artifact_signature +# params: +# tags: [main] +# name: test +# def: +# is_signed: true +# is_verified: true +# is_bundle_verified: true +pull_request: + - type: pr_vulnerability_check + def: + action: review + ecosystem_config: + - name: go + vulnerability_database_type: osv + vulnerability_database_endpoint: https://vuln.go.dev + package_repository: + url: https://proxy.golang.org + sum_repository: + url: https://sum.golang.org diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md new file mode 100644 index 00000000..39b923b0 --- /dev/null +++ b/CODE-OF-CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at oss-coc@vmware.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..96527bfd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,9 @@ +# Contributing + +## Developer Certificate of Origin + +Before you start working with this project, please read our [Developer Certificate of Origin](https://cla.vmware.com/dco). All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch. + +## Contribution Process + +* Follow the [GitHub process](https://help.github.com/articles/fork-a-repo) diff --git a/LICENSE b/LICENSE index 38163dd4..7d008acd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,27 +1,13 @@ -Copyright (c) 2014-2020 Prime Directive, Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Prime Directive, Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright 2022-2023 VMware, Inc. + +The BSD-2-Clause license (the "License") set forth below applies to all parts of the go-tuf-metadata project. You may not use this file except in compliance with the License. + +BSD-2-Clause License + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..8a523028 --- /dev/null +++ b/Makefile @@ -0,0 +1,120 @@ +# Copyright 2023 VMware, Inc. +# +# This product is licensed to you under the BSD-2 license (the "License"). +# You may not use this product except in compliance with the BSD-2 License. +# This product may include a number of subcomponents with separate copyright +# notices and license terms. Your use of these subcomponents is subject to +# the terms and conditions of the subcomponent's license, as noted in the +# LICENSE file. +# +# SPDX-License-Identifier: BSD-2-Clause + +# We want to use bash +SHELL:=/bin/bash + +# Set environment variables +CLIS:=tuf-client # tuf + +# Default target +.PHONY: default +default: build + +##################### +# build section +##################### + +# Build +.PHONY: build +build: $(addprefix build-, $(CLIS)) + +# Target for building a Go binary +.PHONY: build-% +build-%: + @echo "Building $*" + @go build -o $* examples/cli/$*/main.go + +##################### +# test section +##################### + +# Test target +.PHONY: test +test: + go test -race -covermode atomic ./... + +##################### +# lint section +##################### + +.PHONY: lint +lint: + golangci-lint run + +.PHONY: fmt +fmt: + go fmt ./... + +##################### +# examples section +##################### + +# Target for running all examples +.PHONY: example-all +example-all: example-client example-repository example-multirepo example-tuf-client-cli example-root-signing + +# Target for demoing the examples/client/client_example.go +.PHONY: example-client +example-client: + @echo "Executing the following example - client/client_example.go" + @cd examples/client/ && go run . + +# Target for demoing the examples/repository/basic_repository.go +.PHONY: example-repository +example-repository: + @echo "Executing the following example - repository/basic_repository.go" + @cd examples/repository/ && go run . + +# Target for demoing the examples/multirepo/client/client_example.go +.PHONY: example-multirepo +example-multirepo: + @echo "Executing the following example - multirepo/client/client_example.go" + @cd examples/multirepo/client/ && go run . + +# Target for demoing the tuf-client cli +.PHONY: example-tuf-client-cli +example-tuf-client-cli: build-tuf-client + @echo "Clearing any leftover artifacts..." + ./tuf-client reset --force + @echo "Initializing the following https://jku.github.io/tuf-demo/ TUF repository" + @sleep 2 + ./tuf-client init --url https://jku.github.io/tuf-demo/metadata + @echo "Downloading the following target file - rdimitrov/artifact-example.md" + @sleep 2 + ./tuf-client get --url https://jku.github.io/tuf-demo/metadata --turl https://jku.github.io/tuf-demo/targets rdimitrov/artifact-example.md + +# Target for demoing the tuf-client cli with root-signing repo +.PHONY: example-root-signing +example-root-signing: build-tuf-client + @echo "Clearing any leftover artifacts..." + ./tuf-client reset --force + @echo "Downloading the initial root of trust" + @curl -L "https://tuf-repo-cdn.sigstore.dev/5.root.json" > root.json + @echo "Initializing the following https://tuf-repo-cdn.sigstore.dev TUF repository" + @sleep 2 + ./tuf-client init --url https://tuf-repo-cdn.sigstore.dev --file root.json + @echo "Downloading the following target file - rekor.pub" + @sleep 2 + ./tuf-client get --url https://tuf-repo-cdn.sigstore.dev --turl https://tuf-repo-cdn.sigstore.dev/targets rekor.pub + +# Clean target +.PHONY: clean +clean: + @rm -rf examples/multirepo/client/bootstrap/ + @rm -rf examples/multirepo/client/download/ + @rm -rf examples/multirepo/client/metadata/ + @rm -rf examples/repository/tmp* + @rm -rf examples/client/tmp* + @rm -rf tuf_download + @rm -rf tuf_metadata + @rm -f tuf-client + @rm -f root.json diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..9c004e23 --- /dev/null +++ b/NOTICE @@ -0,0 +1,10 @@ +Copyright 2022-2023 VMware, Inc. + +This product is licensed to you under the BSD-2 license (the "License"). +You may not use this product except in compliance with the BSD-2 License. +This product may include a number of subcomponents with separate copyright +notices and license terms. Your use of these subcomponents is subject to +the terms and conditions of the subcomponent's license, as noted in the +LICENSE file. + +SPDX-License-Identifier: BSD-2-Clause diff --git a/README.md b/README.md index ff381e03..051324c0 100644 --- a/README.md +++ b/README.md @@ -1,683 +1,133 @@ -# go-tuf +![GitHub Workflow Status (with branch)](https://img.shields.io/github/actions/workflow/status/rdimitrov/go-tuf-metadata/ci.yml?branch=main) +[![codecov](https://codecov.io/github/rdimitrov/go-tuf-metadata/branch/main/graph/badge.svg?token=2ZUA68ZL13)](https://codecov.io/github/rdimitrov/go-tuf-metadata) +[![Go Reference](https://pkg.go.dev/badge/github.com/rdimitrov/go-tuf-metadata.svg)](https://pkg.go.dev/github.com/rdimitrov/go-tuf-metadata) +[![Go Report Card](https://goreportcard.com/badge/github.com/rdimitrov/go-tuf-metadata)](https://goreportcard.com/report/github.com/rdimitrov/go-tuf-metadata) +[![License](https://img.shields.io/badge/License-BSD_2--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause) -![ci](https://github.com/theupdateframework/go-tuf/actions/workflows/ci.yml/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/theupdateframework/go-tuf/badge.svg)](https://coveralls.io/github/theupdateframework/go-tuf) [![PkgGoDev](https://pkg.go.dev/badge/github.com/theupdateframework/go-tuf)](https://pkg.go.dev/github.com/theupdateframework/go-tuf) [![Go Report Card](https://goreportcard.com/badge/github.com/theupdateframework/go-tuf)](https://goreportcard.com/report/github.com/theupdateframework/go-tuf) +# TUF A Framework for Securing Software Update Systems -This is a Go implementation of [The Update Framework (TUF)](http://theupdateframework.com/), -a framework for securing software update systems. +---------------------------- -## API instability +[The Update Framework (TUF)](https://theupdateframework.io/) is a framework for +secure content delivery and updates. It protects against various types of +supply chain attacks and provides resilience to compromise. -**Note**: go-tuf's API is in flux and backwards compatibility with version 0.7.0 and earlier will _**not**_ be maintained. +[go-tuf-metadata](https://github.com/rdimitrov/go-tuf-metadata) started from the idea of providing a Go implementation of TUF that is heavily influenced by the +design decisions made in [python-tuf](https://github.com/theupdateframework/python-tuf). -We recommend production users of go-tuf pin their dependency so that changes in main do not cause disruptions. +## About The Update Framework -For more details on the changes, and the rationale for making them, see [issue #485](https://github.com/theupdateframework/go-tuf/issues/485) and the v0.7.0 [release notes](https://github.com/theupdateframework/go-tuf/releases/tag/v0.7.0) +---------------------------- +The Update Framework (TUF) design helps developers maintain the security of a +software update system, even against attackers that compromise the repository +or signing keys. +TUF provides a flexible +[specification](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md) +defining functionality that developers can use in any software update system or +re-implement to fit their needs. -## Directory layout +TUF is hosted by the [Linux Foundation](https://www.linuxfoundation.org/) as +part of the [Cloud Native Computing Foundation](https://www.cncf.io/) (CNCF) +and its design is [used in production](https://theupdateframework.io/adoptions/) +by various tech companies and open-source organizations. -A TUF repository has the following directory layout: +Please see [TUF's website](https://theupdateframework.com/) for more information about TUF! -```bash -. -β”œβ”€β”€ keys -β”œβ”€β”€ repository -β”‚Β Β  └── targets -└── staged - Β Β  └── targets -``` +## Overview -The directories contain the following files: +---------------------------- -- `keys/` - signing keys (optionally encrypted) with filename pattern `ROLE.json` -- `repository/` - signed metadata files -- `repository/targets/` - hashed target files -- `staged/` - either signed, unsigned or partially signed metadata files -- `staged/targets/` - unhashed target files +The [go-tuf-metadata](https://github.com/rdimitrov/go-tuf-metadata) project provides the following functionality: -## CLI +* creation, reading, and writing of metadata +* an easy object-oriented approach for interacting with metadata +* consistent snapshots +* signing and verifying metadata +* ED25519, RSA, and ECDSA key types referenced by the latest TUF specification +* top-level role delegation +* target delegation via standard and hash bin delegations +* support of [succinct hash bin delegations](https://github.com/theupdateframework/taps/blob/master/tap15.md) which significantly reduce the size of metadata +* support for unrecognized fields within the metadata (i.e. preserved and accessible through `root.Signed.UnrecognizedFields["some-unknown-field"]`, also used for verifying/signing (if included in the Signed portion of the metadata)) +* TUF client API +* TUF multi-repository client API (implements [TAP 4 - Multiple repository consensus on entrusted targets](https://github.com/theupdateframework/taps/blob/master/tap4.md)) -`go-tuf` provides a CLI for managing a local TUF repository. +## Examples -### Install +---------------------------- -`go-tuf` is tested on Go versions 1.18. +* [basic_repository.go](examples/repository/basic_repository.go) example which demonstrates how to *manually* create and +maintain repository metadata using the low-level Metadata API. -```bash -go install github.com/theupdateframework/go-tuf/cmd/tuf@latest -``` +To try it - run `make example-repository` (the artifacts will be located at `examples/repository/`). -### Commands +* [client_example.go](examples/client/client_example.go) which demonstrates how to implement a client using the [updater](metadata/updater/updater.go) package. -#### `tuf init [--consistent-snapshot=false]` +To try it - run `make example-client` (the artifacts will be located at `examples/client/`) -Initializes a new repository. +* [tuf-client CLI](examples/cli/tuf-client/) - a CLI tool that implements the client workflow specified by The Update Framework (TUF) specification. -This is only required if the repository should not generate consistent -snapshots (i.e. by passing `--consistent-snapshot=false`). If consistent -snapshots should be generated, the repository will be implicitly -initialized to do so when generating keys. +To try it - run `make example-tuf-client-cli` -#### `tuf add-key [--scheme=] [--expires=] [--public-key=] ` +* [multi-repository client example (TAP4)](examples/multirepo/client/client_example.go) which demonstrates how to implement a multi-repository TUF client using the [multirepo](metadata/multirepo/multirepo.go) package. -Adds a new signing key for the given role. +To try it - run `make example-multirepo` -The root metadata file will be staged -with the addition of the key's ID to the role's list of key IDs. +## Package details -The public value can be specified as a path or passed in via stdin. +---------------------------- -#### `tuf gen-key [--expires=] ` +### The `metadata` package -Prompts the user for an encryption passphrase (unless the -`--insecure-plaintext` flag is set), then generates a new signing key and -writes it to the relevant key file in the `keys` directory. It also stages -the addition of the new key to the `root` metadata file. Alternatively, passphrases -can be set via environment variables in the form of `TUF_{{ROLE}}_PASSPHRASE` +* The `metadata` package provides access to a Metadata file abstraction that closely +follows the TUF specification’s document formats. This API handles de/serialization +to and from files and bytes. It also covers the process of creating and verifying metadata +signatures and makes it easier to access and modify metadata content. It is purely +focused on individual pieces of Metadata and provides no concepts like β€œrepository” +or β€œupdate workflow”. -#### `tuf revoke-key [--expires=] ` +### The `trustedmetadata` package -Revoke a signing key +* A `TrustedMetadata` instance ensures that the collection of metadata in it is valid +and trusted through the whole client update workflow. It provides easy ways to update +the metadata with the caller making decisions on what is updated. -The key will be removed from the root metadata file, but the key will remain in the -"keys" directory if present. +### The `config` package -#### `tuf add [...]` +* The `config` package stores configuration for an ``Updater`` instance. -Hashes files in the `staged/targets` directory at the given path(s), then -updates and stages the `targets` metadata file. Specifying no paths hashes all -files in the `staged/targets` directory. +### The `fetcher` package -#### `tuf remove [...]` +* The `fetcher` package defines an interface for abstract network download. -Stages the removal of files with the given path(s) from the `targets` metadata file -(they get removed from the filesystem when the change is committed). Specifying -no paths removes all files from the `targets` metadata file. +### The `updater` package -#### `tuf snapshot [--expires=]` +* The `updater` package provides an implementation of the TUF client workflow. +It provides ways to query and download target files securely while handling the +TUF update workflow behind the scenes. It is implemented on top of the Metadata API +and can be used to implement various TUF clients with relatively little effort. -Expects a staged, fully signed `targets` metadata file and stages an appropriate -`snapshot` metadata file. Optionally one can set number of days after which -the `snapshot` metadata will expire. +### The `multirepo` package -#### `tuf timestamp [--expires=]` +* The `multirepo` package provides an implementation of [TAP 4 - Multiple repository consensus on entrusted targets](https://github.com/theupdateframework/taps/blob/master/tap4.md). It provides a secure search for particular targets across multiple repositories. It provides the functionality for how multiple repositories with separate roots of trust can be required to sign off on the same targets, effectively creating an AND relation and ensuring any files obtained can be trusted. It offers a way to initialize multiple repositories using a `map.json` file and also mechanisms to query and download target files securely. It is implemented on top of the Updater API and can be used to implement various multi-repository TUF clients with relatively little effort. -Stages an appropriate `timestamp` metadata file. If a `snapshot` metadata file is staged, -it must be fully signed. Optionally one can set number of days after which -the timestamp metadata will expire. +## Documentation -#### `tuf sign ` +---------------------------- -Signs the given role's staged metadata file with all keys present in the `keys` -directory for that role. +* [go-tuf-metadata documentation](https://pkg.go.dev/github.com/rdimitrov/go-tuf-metadata) -#### `tuf commit` +* [Introduction to TUF's Design](https://theupdateframework.io/overview/) -Verifies that all staged changes contain the correct information and are signed -to the correct threshold, then moves the staged files into the `repository` -directory. It also removes any target files which are not in the `targets` -metadata file. +* [The TUF Specification](https://theupdateframework.github.io/specification/latest/) -#### `tuf regenerate [--consistent-snapshot=false]` +## Contact -Note: Not supported yet +---------------------------- -Recreates the `targets` metadata file based on the files in `repository/targets`. - -#### `tuf clean` - -Removes all staged metadata files and targets. - -#### `tuf root-keys` - -Outputs a JSON serialized array of root keys to STDOUT. The resulting JSON -should be distributed to clients for performing initial updates. - -#### `tuf set-threshold ` - -Sets `role`'s threshold (required number of keys for signing) to -`threshold`. - -#### `tuf get-threshold ` - -Outputs `role`'s threshold (required number of keys for signing). - -#### `tuf change-passphrase ` - -Changes the passphrase for given role keys file. The CLI supports reading -both the existing and the new passphrase via the following environment -variables - `TUF_{{ROLE}}_PASSPHRASE` and respectively `TUF_NEW_{{ROLE}}_PASSPHRASE` - -#### `tuf payload ` - -Outputs the metadata file for a role in a ready-to-sign (canonicalized) format. - -See also `tuf sign-payload` and `tuf add-signatures`. - -#### `tuf sign-payload --role= ` - -Sign a file (outside of the TUF repo) using keys (in the TUF keys database, -typically produced by `tuf gen-key`) for the given `role` (from the TUF repo). - -Typically, `path` will be a file containing the output of `tuf payload`. - -See also `tuf add-signatures`. - -#### `tuf add-signatures [--signatures ] [--format=] [--key-id=] ` - -Adds signatures (the output of `tuf sign-payload`) to the given role metadata file. - -If the signature does not verify, it will not be added. Signature can be a json file -or json passed in via `stdin`. - -#### `tuf status --valid-at ` - -Check if the role's metadata will be expired on the given date. - -#### Usage of environment variables - -The `tuf` CLI supports receiving passphrases via environment variables in -the form of `TUF_{{ROLE}}_PASSPHRASE` for existing ones and -`TUF_NEW_{{ROLE}}_PASSPHRASE` for setting new ones. - -For a list of supported commands, run `tuf help` from the command line. - -### Examples - -The following are example workflows for managing a TUF repository with the CLI. - -The `tree` commands do not need to be run, but their output serve as an -illustration of what files should exist after performing certain commands. - -Although only two machines are referenced (i.e. the "root" and "repo" boxes), -the workflows can be trivially extended to many signing machines by copying -staged changes and signing on each machine in turn before finally committing. - -Some key IDs are truncated for illustrative purposes. - -#### Create signed root metadata file - -Generate a root key on the root box: - -```bash -$ tuf gen-key root -Enter root keys passphrase: -Repeat root keys passphrase: -Generated root key with ID 184b133f - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  └── root.json -β”œβ”€β”€ repository -└── staged - β”œβ”€β”€ root.json - └── targets -``` - -Copy `staged/root.json` from the root box to the repo box and generate targets, -snapshot and timestamp keys: - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”œβ”€β”€ repository -└── staged - β”œβ”€β”€ root.json - └── targets - -$ tuf gen-key targets -Enter targets keys passphrase: -Repeat targets keys passphrase: -Generated targets key with ID 8cf4810c - -$ tuf gen-key snapshot -Enter snapshot keys passphrase: -Repeat snapshot keys passphrase: -Generated snapshot key with ID 3e070e53 - -$ tuf gen-key timestamp -Enter timestamp keys passphrase: -Repeat timestamp keys passphrase: -Generated timestamp key with ID a3768063 - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -└── staged - β”œβ”€β”€ root.json - └── targets -``` - -Copy `staged/root.json` from the repo box back to the root box and sign it: - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ root.json -β”œβ”€β”€ repository -└── staged - β”œβ”€β”€ root.json - └── targets - -$ tuf sign root.json -Enter root keys passphrase: -``` - -The staged `root.json` can now be copied back to the repo box ready to be -committed alongside other metadata files. - -#### Alternate signing flow - -Instead of manually copying `root.json` into the TUF repository on the root box, -you can use the `tuf payload`, `tuf sign-payload`, `tuf add-signatures` flow. - -On the repo box, get the `root.json` payload in a canonical format: - -``` bash -$ tuf payload root.json > root.json.payload -``` - -Copy `root.json.payload` to the root box and sign it: - - -``` bash -$ tuf sign-payload --role=root root.json.payload > root.json.sigs -Enter root keys passphrase: -``` - -Copy `root.json.sigs` back to the repo box and import the signatures: - -``` bash -$ tuf add-signatures --signatures root.json.sigs root.json -``` - -This achieves the same state as the above flow for the repo box: - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -└── staged - β”œβ”€β”€ root.json - └── targets -``` - -#### Add a target file - -Assuming a staged, signed `root` metadata file and the file to add exists at -`staged/targets/foo/bar/baz.txt`: - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -└── staged - Β Β  β”œβ”€β”€ root.json - └── targets - └── foo - └── bar - └── baz.txt - -$ tuf add foo/bar/baz.txt -Enter targets keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -└── staged - Β Β  β”œβ”€β”€ root.json - β”œβ”€β”€ targets - β”‚Β Β  └── foo - β”‚Β Β  └── bar - β”‚Β Β  └── baz.txt - └── targets.json - -$ tuf snapshot -Enter snapshot keys passphrase: - -$ tuf timestamp -Enter timestamp keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -└── staged - Β Β  β”œβ”€β”€ root.json - Β Β  β”œβ”€β”€ snapshot.json - β”œβ”€β”€ targets - β”‚Β Β  └── foo - β”‚Β Β  └── bar - β”‚Β Β  └── baz.txt - Β Β  β”œβ”€β”€ targets.json - Β Β  └── timestamp.json - -$ tuf commit - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged -``` - -#### Remove a target file - -Assuming the file to remove is at `repository/targets/foo/bar/baz.txt`: - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - -$ tuf remove foo/bar/baz.txt -Enter targets keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - └── targets.json - -$ tuf snapshot -Enter snapshot keys passphrase: - -$ tuf timestamp -Enter timestamp keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - Β Β  β”œβ”€β”€ snapshot.json - Β Β  β”œβ”€β”€ targets.json - Β Β  └── timestamp.json - -$ tuf commit - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged -``` - -#### Regenerate metadata files based on targets tree (Note: Not supported yet) - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - -$ tuf regenerate -Enter targets keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - └── targets.json - -$ tuf snapshot -Enter snapshot keys passphrase: - -$ tuf timestamp -Enter timestamp keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - Β Β  β”œβ”€β”€ snapshot.json - Β Β  β”œβ”€β”€ targets.json - Β Β  └── timestamp.json - -$ tuf commit - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged -``` - -#### Update timestamp.json - -```bash -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - -$ tuf timestamp -Enter timestamp keys passphrase: - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged - └── timestamp.json - -$ tuf commit - -$ tree . -. -β”œβ”€β”€ keys -β”‚Β Β  └── timestamp.json -β”œβ”€β”€ repository -β”‚Β Β  β”œβ”€β”€ root.json -β”‚Β Β  β”œβ”€β”€ snapshot.json -β”‚Β Β  β”œβ”€β”€ targets -β”‚Β Β  β”‚Β Β  └── foo -β”‚Β Β  β”‚Β Β  └── bar -β”‚Β Β  β”‚Β Β  └── baz.txt -β”‚Β Β  β”œβ”€β”€ targets.json -β”‚Β Β  └── timestamp.json -└── staged -``` - -#### Adding a new root key - -Copy `staged/root.json` to the root box and generate a new root key on the root box: - -```bash -$ tuf gen-key root -$ tuf sign root.json -``` - -Copy `staged/root.json` from the root box and commit: - -```bash -$ tuf commit -``` - -#### Rotating root key(s) - -Copy `staged/root.json` to the root box to do the rotation, where `abcd` is the keyid of the key that is being replaced: - -```bash -$ tuf gen-key root -$ tuf revoke-key root abcd -$ tuf sign root.json -``` - -Note that `revoke-key` removes the old key from `root.json`, but the key remains in the `keys/` directory on the root box as it is needed to sign the next `root.json`. After this signing is done, the old key may be removed from `keys/`. Any number of keys may be added or revoked during this step, but ensure that at least a threshold of valid keys remain. - -Copy `staged/root.json` from the root box to commit: - -```bash -$ tuf commit -``` - -## Client - -For the client package, see https://godoc.org/github.com/theupdateframework/go-tuf/client. - -For the client CLI, see https://github.com/theupdateframework/go-tuf/tree/master/cmd/tuf-client. - -## Contributing and Development - -For local development, `go-tuf` requires Go version 1.18. - -The [Python interoperability tests](client/python_interop/) require Python 3 -(available as `python` on the `$PATH`) and the [`python-tuf` -package](https://github.com/theupdateframework/python-tuf) installed (`pip -install tuf`). To update the data for these tests requires Docker and make (see -test data [README.md](client/python_interop/testdata/README.md) for details). - -Please see [CONTRIBUTING.md](docs/CONTRIBUTING.md) for contribution guidelines before making your first contribution! - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/...) - -Users wishing to use remote IDEs can also make use of [Gitpod](https://www.gitpod.io/) to make changes to this project. - -## Comparison to other implementations - -There are TUF implementations in a variety of programming languages. Some other Go implementations of TUF include: - -* [Notary](https://github.com/notaryproject/notary): A version of TUF designed specifically for publishing and managing trusted collections of content. It was used by Docker Content Trust, and has since been superseded by the [Notation](https://github.com/notaryproject/notation) project. In contrast, go-tuf is a direct implementation of TUF and has been updated to conform to 1.0.0 of the TUF specification. +Questions, feedback, and suggestions are welcomed on the [#tuf](https://cloud-native.slack.com/archives/C8NMD3QJ3) channel on +[CNCF Slack](https://slack.cncf.io/). +We strive to make the specification easy to implement, so if you come across +any inconsistencies or experience any difficulty, do let us know by sending an +email, or by reporting an issue in the GitHub [specification +repo](https://github.com/theupdateframework/specification/issues). diff --git a/client/client.go b/client/client.go deleted file mode 100644 index 8e99176b..00000000 --- a/client/client.go +++ /dev/null @@ -1,1005 +0,0 @@ -package client - -import ( - "bytes" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - "io" - - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/roles" - "github.com/theupdateframework/go-tuf/util" - "github.com/theupdateframework/go-tuf/verify" -) - -const ( - // This is the upper limit in bytes we will use to limit the download - // size of the root/timestamp roles, since we might not don't know how - // big it is. - defaultRootDownloadLimit = 512000 - defaultTimestampDownloadLimit = 16384 - defaultMaxDelegations = 32 - defaultMaxRootRotations = 1e3 -) - -// LocalStore is local storage for downloaded top-level metadata. -type LocalStore interface { - io.Closer - - // GetMeta returns top-level metadata from local storage. The keys are - // in the form `ROLE.json`, with ROLE being a valid top-level role. - GetMeta() (map[string]json.RawMessage, error) - - // SetMeta persists the given top-level metadata in local storage, the - // name taking the same format as the keys returned by GetMeta. - SetMeta(name string, meta json.RawMessage) error - - // DeleteMeta deletes a given metadata. - DeleteMeta(name string) error -} - -// RemoteStore downloads top-level metadata and target files from a remote -// repository. -type RemoteStore interface { - // GetMeta downloads the given metadata from remote storage. - // - // `name` is the filename of the metadata (e.g. "root.json") - // - // `err` is ErrNotFound if the given file does not exist. - // - // `size` is the size of the stream, -1 indicating an unknown length. - GetMeta(name string) (stream io.ReadCloser, size int64, err error) - - // GetTarget downloads the given target file from remote storage. - // - // `path` is the path of the file relative to the root of the remote - // targets directory (e.g. "/path/to/file.txt"). - // - // `err` is ErrNotFound if the given file does not exist. - // - // `size` is the size of the stream, -1 indicating an unknown length. - GetTarget(path string) (stream io.ReadCloser, size int64, err error) -} - -// Client provides methods for fetching updates from a remote repository and -// downloading remote target files. -type Client struct { - local LocalStore - remote RemoteStore - - // The following four fields represent the versions of metatdata either - // from local storage or from recently downloaded metadata - rootVer int64 - targetsVer int64 - snapshotVer int64 - timestampVer int64 - - // targets is the list of available targets, either from local storage - // or from recently downloaded targets metadata - targets data.TargetFiles - - // localMeta is the raw metadata from local storage and is used to - // check whether remote metadata is present locally - localMeta map[string]json.RawMessage - - // db is a key DB used for verifying metadata - db *verify.DB - - // consistentSnapshot indicates whether the remote storage is using - // consistent snapshots (as specified in root.json) - consistentSnapshot bool - - // MaxDelegations limits by default the number of delegations visited for any - // target - MaxDelegations int - - // MaxRootRotations limits the number of downloaded roots in 1.0.19 root updater - MaxRootRotations int -} - -func NewClient(local LocalStore, remote RemoteStore) *Client { - return &Client{ - local: local, - remote: remote, - MaxDelegations: defaultMaxDelegations, - MaxRootRotations: defaultMaxRootRotations, - } -} - -// Init initializes a local repository from root metadata. -// -// The root's keys are extracted from the root and saved in local storage. -// Root expiration is not checked. -// It is expected that rootJSON was securely distributed with the software -// being updated. -func (c *Client) Init(rootJSON []byte) error { - err := c.loadAndVerifyRootMeta(rootJSON, true /*ignoreExpiredCheck*/) - if err != nil { - return err - } - return c.local.SetMeta("root.json", rootJSON) -} - -// Update downloads and verifies remote metadata and returns updated targets. -// It always performs root update (5.2 and 5.3) section of the v1.0.19 spec. -// -// https://theupdateframework.github.io/specification/v1.0.19/index.html#load-trusted-root -func (c *Client) Update() (data.TargetFiles, error) { - if err := c.UpdateRoots(); err != nil { - if _, ok := err.(verify.ErrExpired); ok { - // For backward compatibility, we wrap the ErrExpired inside - // ErrDecodeFailed. - return nil, ErrDecodeFailed{"root.json", err} - } - return nil, err - } - - // Load trusted metadata files, if any, and verify them against the latest root - c.getLocalMeta() - - // 5.4.1 - Download the timestamp metadata - timestampJSON, err := c.downloadMetaUnsafe("timestamp.json", defaultTimestampDownloadLimit) - if err != nil { - return nil, err - } - // 5.4.(2,3 and 4) - Verify timestamp against various attacks - // Returns the extracted snapshot metadata - snapshotMeta, sameTimestampVersion, err := c.decodeTimestamp(timestampJSON) - if sameTimestampVersion { - // The new timestamp.json file had the same version; we don't need to - // update, so bail early. - return c.targets, nil - } - - if err != nil { - return nil, err - } - // 5.4.5 - Persist the timestamp metadata - if err := c.local.SetMeta("timestamp.json", timestampJSON); err != nil { - return nil, err - } - - // 5.5.1 - Download snapshot metadata - // 5.5.2 and 5.5.4 - Check against timestamp role's snapshot hash and version - snapshotJSON, err := c.downloadMetaFromTimestamp("snapshot.json", snapshotMeta) - if err != nil { - return nil, err - } - // 5.5.(3,5 and 6) - Verify snapshot against various attacks - // Returns the extracted metadata files - snapshotMetas, err := c.decodeSnapshot(snapshotJSON) - if err != nil { - return nil, err - } - // 5.5.7 - Persist snapshot metadata - if err := c.local.SetMeta("snapshot.json", snapshotJSON); err != nil { - return nil, err - } - - // If we don't have the targets.json, download it, determine updated - // targets and save targets.json in local storage - var updatedTargets data.TargetFiles - targetsMeta := snapshotMetas["targets.json"] - if !c.hasMetaFromSnapshot("targets.json", targetsMeta) { - // 5.6.1 - Download the top-level targets metadata file - // 5.6.2 and 5.6.4 - Check against snapshot role's targets hash and version - targetsJSON, err := c.downloadMetaFromSnapshot("targets.json", targetsMeta) - if err != nil { - return nil, err - } - // 5.6.(3 and 5) - Verify signatures and check against freeze attack - updatedTargets, err = c.decodeTargets(targetsJSON) - if err != nil { - return nil, err - } - // 5.6.6 - Persist targets metadata - if err := c.local.SetMeta("targets.json", targetsJSON); err != nil { - return nil, err - } - } - - return updatedTargets, nil -} - -func (c *Client) UpdateRoots() error { - // https://theupdateframework.github.io/specification/v1.0.19/index.html#load-trusted-root - // 5.2 Load the trusted root metadata file. We assume that a good, - // trusted copy of this file was shipped with the package manager - // or software updater using an out-of-band process. - if err := c.loadAndVerifyLocalRootMeta( /*ignoreExpiredCheck=*/ true); err != nil { - return err - } - m, err := c.local.GetMeta() - if err != nil { - return err - } - - type KeyInfo struct { - KeyIDs map[string]bool - Threshold int - } - - // Prepare for 5.3.11: If the timestamp and / or snapshot keys have been rotated, - // then delete the trusted timestamp and snapshot metadata files. - getKeyInfo := func(role string) KeyInfo { - keyIDs := make(map[string]bool) - for k := range c.db.GetRole(role).KeyIDs { - keyIDs[k] = true - } - return KeyInfo{keyIDs, c.db.GetRole(role).Threshold} - } - - // The nonRootKeyInfo looks like this: - // { - // "timestamp": {KeyIDs={"KEYID1": true, "KEYID2": true}, Threshold=2}, - // "snapshot": {KeyIDs={"KEYID3": true}, Threshold=1}, - // "targets": {KeyIDs={"KEYID4": true, "KEYID5": true, "KEYID6": true}, Threshold=1} - // } - - nonRootKeyInfo := map[string]KeyInfo{"timestamp": {}, "snapshot": {}, "targets": {}} - for k := range nonRootKeyInfo { - nonRootKeyInfo[k] = getKeyInfo(k) - } - - // 5.3.1 Temorarily turn on the consistent snapshots in order to download - // versioned root metadata files as described next. - consistentSnapshot := c.consistentSnapshot - c.consistentSnapshot = true - - nRootMetadata := m["root.json"] - - // https://theupdateframework.github.io/specification/v1.0.19/index.html#update-root - - // 5.3.1 Since it may now be signed using entirely different keys, - // the client MUST somehow be able to establish a trusted line of - // continuity to the latest set of keys (see Β§β€―6.1 Key - // management and migration). To do so, the client MUST - // download intermediate root metadata files, until the - // latest available one is reached. Therefore, it MUST - // temporarily turn on consistent snapshots in order to - // download versioned root metadata files as described next. - - // This loop returns on error or breaks after downloading the lastest root metadata. - // 5.3.2 Let N denote the version number of the trusted root metadata file. - for i := 0; i < c.MaxRootRotations; i++ { - // 5.3.3 Try downloading version nPlusOne of the root metadata file. - // NOTE: as a side effect, we do update c.rootVer to nPlusOne between iterations. - nPlusOne := c.rootVer + 1 - nPlusOneRootPath := util.VersionedPath("root.json", nPlusOne) - nPlusOneRootMetadata, err := c.downloadMetaUnsafe(nPlusOneRootPath, defaultRootDownloadLimit) - - if err != nil { - if _, ok := err.(ErrMissingRemoteMetadata); ok { - // stop when the next root can't be downloaded - break - } - return err - } - - // 5.3.4 Check for an arbitrary software attack. - // 5.3.4.1 Check that N signed N+1 - nPlusOneRootMetadataSigned, err := c.verifyRoot(nRootMetadata, nPlusOneRootMetadata) - if err != nil { - return err - } - - // 5.3.4.2 check that N+1 signed itself. - if _, err := c.verifyRoot(nPlusOneRootMetadata, nPlusOneRootMetadata); err != nil { - // 5.3.6 Note that the expiration of the new (intermediate) root - // metadata file does not matter yet, because we will check for - // it in step 5.3.10. - return err - } - - // 5.3.5 Check for a rollback attack. Here, we check that nPlusOneRootMetadataSigned.version == nPlusOne. - if nPlusOneRootMetadataSigned.Version != nPlusOne { - return verify.ErrWrongVersion{ - Given: nPlusOneRootMetadataSigned.Version, - Expected: nPlusOne, - } - } - - // 5.3.7 Set the trusted root metadata file to the new root metadata file. - c.rootVer = nPlusOneRootMetadataSigned.Version - // NOTE: following up on 5.3.1, we want to always have consistent snapshots on for the duration - // of root rotation. AFTER the rotation is over, we will set it to the value of the last root. - consistentSnapshot = nPlusOneRootMetadataSigned.ConsistentSnapshot - // 5.3.8 Persist root metadata. The client MUST write the file to non-volatile storage as FILENAME.EXT (e.g. root.json). - // NOTE: Internally, setMeta stores metadata in LevelDB in a persistent manner. - if err := c.local.SetMeta("root.json", nPlusOneRootMetadata); err != nil { - return err - } - nRootMetadata = nPlusOneRootMetadata - // 5.3.9 Repeat steps 5.3.2 to 5.3.9 - - } // End of the for loop. - - // 5.3.10 Check for a freeze attack. - // NOTE: This will check for any, including freeze, attack. - if err := c.loadAndVerifyLocalRootMeta( /*ignoreExpiredCheck=*/ false); err != nil { - return err - } - - countDeleted := func(s1 map[string]bool, s2 map[string]bool) int { - c := 0 - for k := range s1 { - if _, ok := s2[k]; !ok { - c++ - } - } - return c - } - - // 5.3.11 To recover from fast-forward attack, certain metadata files need - // to be deleted if a threshold of keys are revoked. - // List of metadata that should be deleted per role if a threshold of keys - // are revoked: - // (based on the ongoing PR: https://github.com/mnm678/specification/tree/e50151d9df632299ddea364c4f44fe8ca9c10184) - // timestamp -> delete timestamp.json - // snapshot -> delete timestamp.json and snapshot.json - // targets -> delete snapshot.json and targets.json - // - // nonRootKeyInfo contains the keys and thresholds from root.json - // that were on disk before the root update process begins. - for topLevelRolename := range nonRootKeyInfo { - // ki contains the keys and thresholds from the latest downloaded root.json. - ki := getKeyInfo(topLevelRolename) - if countDeleted(nonRootKeyInfo[topLevelRolename].KeyIDs, ki.KeyIDs) >= nonRootKeyInfo[topLevelRolename].Threshold { - deleteMeta := map[string][]string{ - "timestamp": {"timestamp.json"}, - "snapshot": {"timestamp.json", "snapshot.json"}, - "targets": {"snapshot.json", "targets.json"}, - } - - for _, r := range deleteMeta[topLevelRolename] { - c.local.DeleteMeta(r) - } - } - } - - // 5.3.12 Set whether consistent snapshots are used as per the trusted root metadata file. - c.consistentSnapshot = consistentSnapshot - return nil -} - -// getLocalMeta decodes and verifies metadata from local storage. -// The verification of local files is purely for consistency, if an attacker -// has compromised the local storage, there is no guarantee it can be trusted. -// Before trying to load the metadata files, it clears the in-memory copy of the local metadata. -// This is to insure that all of the loaded metadata files at the end are indeed verified by the latest root. -// If some of the metadata files fail to load it will proceed with trying to load the rest, -// but still return an error at the end, if such occurred. Otherwise returns nil. -func (c *Client) getLocalMeta() error { - var retErr error - loadFailed := false - // Clear the in-memory copy of the local metadata. The goal is to reload and take into account - // only the metadata files that are verified by the latest root. Otherwise, their content should - // be ignored. - c.localMeta = make(map[string]json.RawMessage) - - // Load the latest root meta - if err := c.loadAndVerifyLocalRootMeta( /*ignoreExpiredCheck=*/ false); err != nil { - return err - } - - // Load into memory the existing meta, if any, from the local storage - meta, err := c.local.GetMeta() - if err != nil { - return nil - } - - // Verify the top-level metadata (timestamp, snapshot and targets) against the latest root and load it, if okay - if timestampJSON, ok := meta["timestamp.json"]; ok { - timestamp := &data.Timestamp{} - if err := c.db.UnmarshalTrusted(timestampJSON, timestamp, "timestamp"); err != nil { - loadFailed = true - retErr = err - } else { - c.localMeta["timestamp.json"] = meta["timestamp.json"] - c.timestampVer = timestamp.Version - } - } - - snapshot := &data.Snapshot{} - if snapshotJSON, ok := meta["snapshot.json"]; ok { - if err := c.db.UnmarshalTrusted(snapshotJSON, snapshot, "snapshot"); err != nil { - loadFailed = true - retErr = err - } else { - c.localMeta["snapshot.json"] = meta["snapshot.json"] - c.snapshotVer = snapshot.Version - } - } - - if targetsJSON, ok := meta["targets.json"]; ok { - targets := &data.Targets{} - if err := c.db.UnmarshalTrusted(targetsJSON, targets, "targets"); err != nil { - loadFailed = true - retErr = err - } else { - c.localMeta["targets.json"] = meta["targets.json"] - c.targetsVer = targets.Version - // FIXME(TUF-0.9) temporarily support files with leading path separators. - // c.targets = targets.Targets - c.loadTargets(targets.Targets) - } - } - - if loadFailed { - // If any of the metadata failed to be verified, return the reason for that failure - // and fail fast before delegated targets - return retErr - } - - // verifiedDelegatedTargets is a set of verified delegated targets - verifiedDelegatedTargets := make(map[string]bool) - for fileName := range meta { - if !verifiedDelegatedTargets[fileName] && roles.IsDelegatedTargetsManifest(fileName) { - if delegationPath, err := c.getDelegationPathFromRaw(snapshot, meta[fileName]); err != nil { - loadFailed = true - retErr = err - } else { - // Every delegated targets in the path has been verified - // as a side effect of getDelegationPathFromRaw - for _, key := range delegationPath { - fileName := fmt.Sprintf("%s.json", key) - verifiedDelegatedTargets[fileName] = true - } - } - } - } - - for fileName := range verifiedDelegatedTargets { - c.localMeta[fileName] = meta[fileName] - } - - if loadFailed { - // If any of the metadata failed to be verified, return the reason for that failure - return retErr - } - return nil -} - -// getDelegationPathFromRaw verifies a delegated targets against -// a given snapshot and returns an error if it's invalid -// -// Delegation must have targets to get a path, else an empty list -// will be returned: this is because the delegation iterator is leveraged. -// -// Concrete example: -// targets -// └── a.json -//   └── b.json -//      └── c.json -//        └── target_file.txt -// -// If you try to use that function on "a.json" or "b.json", it'll return an empty list -// with no error, as neither of them declare a target file -// On the other hand, if you use that function on "c.json", it'll return & verify -// [c.json, b.json, a.json]. Running that function on every delegated targets -// guarantees that if a delegated targets is in the path of a target file, then it will -// appear at least once in the result -func (c *Client) getDelegationPathFromRaw(snapshot *data.Snapshot, delegatedTargetsJSON json.RawMessage) ([]string, error) { - // unmarshal the delegated targets first without verifying as - // we need at least one targets file name to leverage the - // getTargetFileMetaDelegationPath method - s := &data.Signed{} - if err := json.Unmarshal(delegatedTargetsJSON, s); err != nil { - return nil, err - } - targets := &data.Targets{} - if err := json.Unmarshal(s.Signed, targets); err != nil { - return nil, err - } - for targetPath := range targets.Targets { - // Gets target file from remote store - _, resp, err := c.getTargetFileMetaDelegationPath(targetPath, snapshot) - // We only need to test one targets file: - // - If it is valid, it means the delegated targets has been validated - // - If it is not, the delegated targets isn't valid - if errors.As(err, &ErrMissingRemoteMetadata{}) { - // As this function is used to fill the local store cache, the targets - // will be downloaded from the remote store as the local store cache is - // empty, meaning that the delegated targets may not exist anymore. In - // that case, we can't get the delegation path. Ignore the delegated targets. - return nil, nil - } - if errors.As(err, &ErrUnknownTarget{}) { - // As this function is used to fill the local store cache, the target file - // will be downloaded from the remote store as the local store cache is - // empty, meaning that the target file may not exist anymore. In - // that case, ignore the file and try another. - continue - } - return resp, err - } - return nil, nil -} - -// loadAndVerifyLocalRootMeta decodes and verifies root metadata from -// local storage and loads the top-level keys. This method first clears -// the DB for top-level keys and then loads the new keys. -func (c *Client) loadAndVerifyLocalRootMeta(ignoreExpiredCheck bool) error { - meta, err := c.local.GetMeta() - if err != nil { - return err - } - rootJSON, ok := meta["root.json"] - if !ok { - return ErrNoRootKeys - } - return c.loadAndVerifyRootMeta(rootJSON, ignoreExpiredCheck) -} - -// loadAndVerifyRootMeta decodes and verifies root metadata and loads the top-level keys. -// This method first clears the DB for top-level keys and then loads the new keys. -func (c *Client) loadAndVerifyRootMeta(rootJSON []byte, ignoreExpiredCheck bool) error { - // unmarshal root.json without verifying as we need the root - // keys first - s := &data.Signed{} - if err := json.Unmarshal(rootJSON, s); err != nil { - return err - } - root := &data.Root{} - if err := json.Unmarshal(s.Signed, root); err != nil { - return err - } - ndb := verify.NewDB() - for id, k := range root.Keys { - if err := ndb.AddKey(id, k); err != nil { - return err - } - } - for name, role := range root.Roles { - if err := ndb.AddRole(name, role); err != nil { - return err - } - } - // Any trusted local root metadata version must be greater than 0. - if ignoreExpiredCheck { - if err := ndb.VerifyIgnoreExpiredCheck(s, "root", 0); err != nil { - return err - } - } else { - if err := ndb.Verify(s, "root", 0); err != nil { - return err - } - } - c.consistentSnapshot = root.ConsistentSnapshot - c.rootVer = root.Version - c.db = ndb - return nil -} - -// verifyRoot verifies Signed section of the bJSON -// using verification keys in aJSON. -func (c *Client) verifyRoot(aJSON []byte, bJSON []byte) (*data.Root, error) { - aSigned := &data.Signed{} - if err := json.Unmarshal(aJSON, aSigned); err != nil { - return nil, err - } - aRoot := &data.Root{} - if err := json.Unmarshal(aSigned.Signed, aRoot); err != nil { - return nil, err - } - - bSigned := &data.Signed{} - if err := json.Unmarshal(bJSON, bSigned); err != nil { - return nil, err - } - bRoot := &data.Root{} - if err := json.Unmarshal(bSigned.Signed, bRoot); err != nil { - return nil, err - } - - ndb := verify.NewDB() - for id, k := range aRoot.Keys { - if err := ndb.AddKey(id, k); err != nil { - return nil, err - } - } - for name, role := range aRoot.Roles { - if err := ndb.AddRole(name, role); err != nil { - return nil, err - } - } - - if err := ndb.VerifySignatures(bSigned, "root"); err != nil { - return nil, err - } - return bRoot, nil -} - -// FIXME(TUF-0.9) TUF is considering removing support for target files starting -// with a leading path separator. In order to be backwards compatible, we'll -// just remove leading separators for now. -func (c *Client) loadTargets(targets data.TargetFiles) { - c.targets = make(data.TargetFiles) - for name, meta := range targets { - c.targets[name] = meta - c.targets[util.NormalizeTarget(name)] = meta - } -} - -// downloadMetaUnsafe downloads top-level metadata from remote storage without -// verifying it's length and hashes (used for example to download timestamp.json -// which has unknown size). It will download at most maxMetaSize bytes. -func (c *Client) downloadMetaUnsafe(name string, maxMetaSize int64) ([]byte, error) { - r, size, err := c.remote.GetMeta(name) - if err != nil { - if IsNotFound(err) { - return nil, ErrMissingRemoteMetadata{name} - } - return nil, ErrDownloadFailed{name, err} - } - defer r.Close() - - // return ErrMetaTooLarge if the reported size is greater than maxMetaSize - if size > maxMetaSize { - return nil, ErrMetaTooLarge{name, size, maxMetaSize} - } - - // although the size has been checked above, use a LimitReader in case - // the reported size is inaccurate, or size is -1 which indicates an - // unknown length - return io.ReadAll(io.LimitReader(r, maxMetaSize)) -} - -// remoteGetFunc is the type of function the download method uses to download -// remote files -type remoteGetFunc func(string) (io.ReadCloser, int64, error) - -// downloadHashed tries to download the hashed prefixed version of the file. -func (c *Client) downloadHashed(file string, get remoteGetFunc, hashes data.Hashes) (io.ReadCloser, int64, error) { - // try each hashed path in turn, and either return the contents, - // try the next one if a 404 is returned, or return an error - for _, path := range util.HashedPaths(file, hashes) { - r, size, err := get(path) - if err != nil { - if IsNotFound(err) { - continue - } - return nil, 0, err - } - return r, size, nil - } - return nil, 0, ErrNotFound{file} -} - -// download downloads the given target file from remote storage using the get -// function, adding hashes to the path if consistent snapshots are in use -func (c *Client) downloadTarget(file string, get remoteGetFunc, hashes data.Hashes) (io.ReadCloser, int64, error) { - if c.consistentSnapshot { - return c.downloadHashed(file, get, hashes) - } else { - return get(file) - } -} - -// downloadVersionedMeta downloads top-level metadata from remote storage and -// verifies it using the given file metadata. -func (c *Client) downloadMeta(name string, version int64, m data.FileMeta) ([]byte, error) { - r, size, err := func() (io.ReadCloser, int64, error) { - if c.consistentSnapshot { - path := util.VersionedPath(name, version) - r, size, err := c.remote.GetMeta(path) - if err == nil { - return r, size, nil - } - - return nil, 0, err - } else { - return c.remote.GetMeta(name) - } - }() - if err != nil { - if IsNotFound(err) { - return nil, ErrMissingRemoteMetadata{name} - } - return nil, err - } - defer r.Close() - - // return ErrWrongSize if the reported size is known and incorrect - var stream io.Reader - if m.Length != 0 { - if size >= 0 && size != m.Length { - return nil, ErrWrongSize{name, size, m.Length} - } - - // wrap the data in a LimitReader so we download at most m.Length bytes - stream = io.LimitReader(r, m.Length) - } else { - stream = r - } - - return io.ReadAll(stream) -} - -func (c *Client) downloadMetaFromSnapshot(name string, m data.SnapshotFileMeta) ([]byte, error) { - b, err := c.downloadMeta(name, m.Version, data.FileMeta{Length: m.Length, Hashes: m.Hashes}) - if err != nil { - return nil, err - } - - // 5.6.2 – Check length and hashes of fetched bytes *before* parsing metadata - if err := util.BytesMatchLenAndHashes(b, m.Length, m.Hashes); err != nil { - return nil, ErrDownloadFailed{name, err} - } - - meta, err := util.GenerateSnapshotFileMeta(bytes.NewReader(b), m.Hashes.HashAlgorithms()...) - if err != nil { - return nil, err - } - - // 5.6.4 - Check against snapshot role's version - if err := util.VersionEqual(meta.Version, m.Version); err != nil { - return nil, ErrDownloadFailed{name, err} - } - - return b, nil -} - -func (c *Client) downloadMetaFromTimestamp(name string, m data.TimestampFileMeta) ([]byte, error) { - b, err := c.downloadMeta(name, m.Version, data.FileMeta{Length: m.Length, Hashes: m.Hashes}) - if err != nil { - return nil, err - } - - // 5.2.2. – Check length and hashes of fetched bytes *before* parsing metadata - if err := util.BytesMatchLenAndHashes(b, m.Length, m.Hashes); err != nil { - return nil, ErrDownloadFailed{name, err} - } - - meta, err := util.GenerateTimestampFileMeta(bytes.NewReader(b), m.Hashes.HashAlgorithms()...) - if err != nil { - return nil, err - } - - // 5.5.4 - Check against timestamp role's version - if err := util.VersionEqual(meta.Version, m.Version); err != nil { - return nil, ErrDownloadFailed{name, err} - } - - return b, nil -} - -// decodeSnapshot decodes and verifies snapshot metadata, and returns the new -// root and targets file meta. -func (c *Client) decodeSnapshot(b json.RawMessage) (data.SnapshotFiles, error) { - snapshot := &data.Snapshot{} - // 5.5.(3 and 6) - Verify it's signed correctly and it's not expired - if err := c.db.Unmarshal(b, snapshot, "snapshot", c.snapshotVer); err != nil { - return data.SnapshotFiles{}, ErrDecodeFailed{"snapshot.json", err} - } - // 5.5.5 - Check for top-level targets rollback attack - // Verify explicitly that current targets meta version is less than or equal to the new one - if snapshot.Meta["targets.json"].Version < c.targetsVer { - return data.SnapshotFiles{}, verify.ErrLowVersion{Actual: snapshot.Meta["targets.json"].Version, Current: c.targetsVer} - } - - // 5.5.5 - Get the local/trusted snapshot metadata, if any, and check all target metafiles against rollback attack - // In case the local snapshot metadata was not verified by the keys in the latest root during getLocalMeta(), - // snapshot.json won't be present in c.localMeta and thus this check will not be processed. - if snapshotJSON, ok := c.localMeta["snapshot.json"]; ok { - currentSnapshot := &data.Snapshot{} - if err := c.db.UnmarshalTrusted(snapshotJSON, currentSnapshot, "snapshot"); err != nil { - return data.SnapshotFiles{}, err - } - // 5.5.5 - Check for rollback attacks in both top-level and delegated targets roles (note that the Meta object includes both) - for path, local := range currentSnapshot.Meta { - if newMeta, ok := snapshot.Meta[path]; ok { - // 5.5.5 - Check for rollback attack - if newMeta.Version < local.Version { - return data.SnapshotFiles{}, verify.ErrLowVersion{Actual: newMeta.Version, Current: local.Version} - } - } else { - // 5.5.5 - Abort the update if a target file has been removed from the new snapshot file - return data.SnapshotFiles{}, verify.ErrMissingTargetFile - } - } - } - // At this point we can trust the new snapshot, the top-level targets, and any delegated targets versions it refers to - // so we can update the client's trusted versions and proceed with persisting the new snapshot metadata - // c.snapshotVer was already set when we verified the timestamp metadata - c.targetsVer = snapshot.Meta["targets.json"].Version - return snapshot.Meta, nil -} - -// decodeTargets decodes and verifies targets metadata, sets c.targets and -// returns updated targets. -func (c *Client) decodeTargets(b json.RawMessage) (data.TargetFiles, error) { - targets := &data.Targets{} - // 5.6.(3 and 5) - Verify signatures and check against freeze attack - if err := c.db.Unmarshal(b, targets, "targets", c.targetsVer); err != nil { - return nil, ErrDecodeFailed{"targets.json", err} - } - // Generate a list with the updated targets - updatedTargets := make(data.TargetFiles) - for path, meta := range targets.Targets { - if local, ok := c.targets[path]; ok { - if err := util.TargetFileMetaEqual(local, meta); err == nil { - continue - } - } - updatedTargets[path] = meta - } - // c.targetsVer was already updated when we verified the snapshot metadata - // FIXME(TUF-0.9) temporarily support files with leading path separators. - // c.targets = targets.Targets - c.loadTargets(targets.Targets) - return updatedTargets, nil -} - -// decodeTimestamp decodes and verifies timestamp metadata, and returns the -// new snapshot file meta and signals whether the update should be aborted early -// (the new timestamp has the same version as the old one, so there's no need to -// complete the update). -func (c *Client) decodeTimestamp(b json.RawMessage) (data.TimestampFileMeta, bool, error) { - timestamp := &data.Timestamp{} - - if err := c.db.Unmarshal(b, timestamp, "timestamp", c.timestampVer); err != nil { - return data.TimestampFileMeta{}, false, ErrDecodeFailed{"timestamp.json", err} - } - // 5.4.3.1 - Check for timestamp rollback attack - // We already checked for timestamp.Version < c.timestampVer in the Unmarshal call above. - // Here, we're checking for version equality, which indicates that we can abandon this update. - if timestamp.Version == c.timestampVer { - return data.TimestampFileMeta{}, true, nil - } - // 5.4.3.2 - Check for snapshot rollback attack - // Verify that the current snapshot meta version is less than or equal to the new one - if timestamp.Meta["snapshot.json"].Version < c.snapshotVer { - return data.TimestampFileMeta{}, false, verify.ErrLowVersion{Actual: timestamp.Meta["snapshot.json"].Version, Current: c.snapshotVer} - } - // At this point we can trust the new timestamp and the snapshot version it refers to - // so we can update the client's trusted versions and proceed with persisting the new timestamp - c.timestampVer = timestamp.Version - c.snapshotVer = timestamp.Meta["snapshot.json"].Version - return timestamp.Meta["snapshot.json"], false, nil -} - -// hasMetaFromSnapshot checks whether local metadata has the given meta -func (c *Client) hasMetaFromSnapshot(name string, m data.SnapshotFileMeta) bool { - _, ok := c.localMetaFromSnapshot(name, m) - return ok -} - -// localMetaFromSnapshot returns localmetadata if it matches the snapshot -func (c *Client) localMetaFromSnapshot(name string, m data.SnapshotFileMeta) (json.RawMessage, bool) { - b, ok := c.localMeta[name] - if !ok { - return nil, false - } - meta, err := util.GenerateSnapshotFileMeta(bytes.NewReader(b), m.Hashes.HashAlgorithms()...) - if err != nil { - return nil, false - } - err = util.SnapshotFileMetaEqual(meta, m) - return b, err == nil -} - -type Destination interface { - io.Writer - Delete() error -} - -// Download downloads the given target file from remote storage into dest. -// -// dest will be deleted and an error returned in the following situations: -// -// - The target does not exist in the local targets.json -// - Failed to fetch the chain of delegations accessible from local snapshot.json -// - The target does not exist in any targets -// - Metadata cannot be generated for the downloaded data -// - Generated metadata does not match local metadata for the given file -// - Size of the download does not match if the reported size is known and -// incorrect -func (c *Client) Download(name string, dest Destination) (err error) { - // delete dest if there is an error - defer func() { - if err != nil { - dest.Delete() - } - }() - - // populate c.targets from local storage if not set - if c.targets == nil { - if err := c.getLocalMeta(); err != nil { - return err - } - } - - normalizedName := util.NormalizeTarget(name) - localMeta, ok := c.targets[normalizedName] - if !ok { - // search in delegations - localMeta, err = c.getTargetFileMeta(normalizedName) - if err != nil { - return err - } - } - - // get the data from remote storage - r, size, err := c.downloadTarget(normalizedName, c.remote.GetTarget, localMeta.Hashes) - if err != nil { - return err - } - defer r.Close() - - // return ErrWrongSize if the reported size is known and incorrect - if size >= 0 && size != localMeta.Length { - return ErrWrongSize{name, size, localMeta.Length} - } - - // wrap the data in a LimitReader so we download at most localMeta.Length bytes - stream := io.LimitReader(r, localMeta.Length) - - // read the data, simultaneously writing it to dest and generating metadata - actual, err := util.GenerateTargetFileMeta(io.TeeReader(stream, dest), localMeta.HashAlgorithms()...) - if err != nil { - return ErrDownloadFailed{name, err} - } - - // check the data has the correct length and hashes - if err := util.TargetFileMetaEqual(actual, localMeta); err != nil { - if e, ok := err.(util.ErrWrongLength); ok { - return ErrWrongSize{name, e.Actual, e.Expected} - } - return ErrDownloadFailed{name, err} - } - - return nil -} - -func (c *Client) VerifyDigest(digest string, digestAlg string, length int64, path string) error { - localMeta, ok := c.targets[path] - if !ok { - return ErrUnknownTarget{Name: path, SnapshotVersion: c.snapshotVer} - } - - actual := data.FileMeta{Length: length, Hashes: make(data.Hashes, 1)} - var err error - actual.Hashes[digestAlg], err = hex.DecodeString(digest) - if err != nil { - return err - } - - if err := util.TargetFileMetaEqual(data.TargetFileMeta{FileMeta: actual}, localMeta); err != nil { - if e, ok := err.(util.ErrWrongLength); ok { - return ErrWrongSize{path, e.Actual, e.Expected} - } - return ErrDownloadFailed{path, err} - } - - return nil -} - -// Target returns the target metadata for a specific target if it -// exists, searching from top-level level targets then through -// all delegations. If it does not, ErrNotFound will be returned. -func (c *Client) Target(name string) (data.TargetFileMeta, error) { - target, err := c.getTargetFileMeta(util.NormalizeTarget(name)) - if err == nil { - return target, nil - } - - if _, ok := err.(ErrUnknownTarget); ok { - return data.TargetFileMeta{}, ErrNotFound{name} - } - - return data.TargetFileMeta{}, err -} - -// Targets returns the complete list of available top-level targets. -func (c *Client) Targets() (data.TargetFiles, error) { - // populate c.targets from local storage if not set - if c.targets == nil { - if err := c.getLocalMeta(); err != nil { - return nil, err - } - } - return c.targets, nil -} diff --git a/client/client_test.go b/client/client_test.go deleted file mode 100644 index f4dbd885..00000000 --- a/client/client_test.go +++ /dev/null @@ -1,1668 +0,0 @@ -package client - -import ( - "bytes" - "crypto/ed25519" - "crypto/sha256" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - "io" - "net" - "net/http" - "os" - "path/filepath" - "testing" - "time" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/stretchr/testify/assert" - tuf "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/sets" - "github.com/theupdateframework/go-tuf/pkg/keys" - "github.com/theupdateframework/go-tuf/sign" - "github.com/theupdateframework/go-tuf/util" - "github.com/theupdateframework/go-tuf/verify" - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type ClientSuite struct { - store tuf.LocalStore - repo *tuf.Repo - local LocalStore - remote RemoteStore - expiredTime time.Time - keyIDs map[string][]string - useFileStore bool - // Only used with FileStore - tmpDir string -} - -var _ = Suite(&ClientSuite{useFileStore: false}) -var _ = Suite(&ClientSuite{useFileStore: true}) - -func newFakeRemoteStore() *fakeRemoteStore { - return &fakeRemoteStore{ - meta: make(map[string]*fakeFile), - targets: make(map[string]*fakeFile), - } -} - -type fakeRemoteStore struct { - meta map[string]*fakeFile - targets map[string]*fakeFile -} - -func (f *fakeRemoteStore) GetMeta(name string) (io.ReadCloser, int64, error) { - return f.get(name, f.meta) -} - -func (f *fakeRemoteStore) GetTarget(path string) (io.ReadCloser, int64, error) { - return f.get(path, f.targets) -} - -func (f *fakeRemoteStore) get(name string, store map[string]*fakeFile) (io.ReadCloser, int64, error) { - file, ok := store[name] - if !ok { - return nil, 0, ErrNotFound{name} - } - return file, file.size, nil -} - -// These are helper methods for manipulating the internals of the Stores -// because the set/delete methods are not part of the Interface, we need to -// switch on the underlying implementation. -// Also readMeta method is convenience for ease of testing. -func (s *ClientSuite) setRemoteMeta(path string, data []byte) error { - switch impl := s.remote.(type) { - case *fakeRemoteStore: - impl.meta[path] = newFakeFile(data) - return nil - case *FileRemoteStore: - return impl.addMeta(path, data) - default: - return fmt.Errorf("non-supoprted RemoteStore, got %+v", impl) - } -} - -func (s *ClientSuite) setRemoteTarget(path string, data []byte) error { - switch impl := s.remote.(type) { - case *fakeRemoteStore: - impl.targets[path] = newFakeFile(data) - return nil - case *FileRemoteStore: - return impl.addTarget(path, data) - default: - return fmt.Errorf("non-supoprted RemoteStore, got %+v", impl) - } -} - -func (s *ClientSuite) deleteMeta(path string) error { - switch impl := s.remote.(type) { - case *fakeRemoteStore: - delete(impl.meta, path) - return nil - case *FileRemoteStore: - return impl.deleteMeta(path) - default: - return fmt.Errorf("non-supported RemoteStore, got %+v", impl) - } -} - -func (s *ClientSuite) deleteTarget(path string) error { - switch impl := s.remote.(type) { - case *fakeRemoteStore: - delete(impl.targets, path) - return nil - case *FileRemoteStore: - return impl.deleteTarget(path) - default: - return fmt.Errorf("non-supported RemoteStore, got %+v", impl) - } -} - -func (s *ClientSuite) readMeta(name string) ([]byte, error) { - stream, _, err := s.remote.GetMeta(name) - if err != nil { - return nil, err - } - return io.ReadAll(stream) -} - -func newFakeFile(b []byte) *fakeFile { - return &fakeFile{buf: bytes.NewReader(b), size: int64(len(b))} -} - -type fakeFile struct { - buf *bytes.Reader - bytesRead int - size int64 -} - -func (f *fakeFile) Read(p []byte) (int, error) { - n, err := f.buf.Read(p) - f.bytesRead += n - return n, err -} - -func (f *fakeFile) Close() error { - f.buf.Seek(0, io.SeekStart) - return nil -} - -var targetFiles = map[string][]byte{ - "foo.txt": []byte("foo"), - "bar.txt": []byte("bar"), - "baz.txt": []byte("baz"), -} - -func (s *ClientSuite) SetUpTest(c *C) { - s.store = tuf.MemoryStore(nil, targetFiles) - - // create a valid repo containing foo.txt - var err error - s.repo, err = tuf.NewRepo(s.store) - c.Assert(err, IsNil) - // don't use consistent snapshots to make testing easier (consistent - // snapshots are tested explicitly elsewhere) - c.Assert(s.repo.Init(false), IsNil) - s.keyIDs = map[string][]string{ - "root": s.genKey(c, "root"), - "targets": s.genKey(c, "targets"), - "snapshot": s.genKey(c, "snapshot"), - "timestamp": s.genKey(c, "timestamp"), - } - c.Assert(s.repo.AddTarget("foo.txt", nil), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - - // create a remote store containing valid repo files - if s.useFileStore { - s.remote, s.tmpDir, err = newTestFileStoreFS() - if err != nil { - c.Fatalf("failed to create new FileStore: %v", err) - } - } else { - s.remote = newFakeRemoteStore() - } - s.syncRemote(c) - for path, data := range targetFiles { - s.setRemoteTarget(path, data) - } - - s.expiredTime = time.Now().Add(time.Hour) -} - -func (s *ClientSuite) TearDownTest(c *C) { - if s.tmpDir != "" { - rmrf(s.tmpDir, c.Logf) - } -} - -func (s *ClientSuite) genKey(c *C, role string) []string { - ids, err := s.repo.GenKey(role) - c.Assert(err, IsNil) - return ids -} - -func (s *ClientSuite) genKeyExpired(c *C, role string) []string { - ids, err := s.repo.GenKeyWithExpires(role, s.expiredTime) - c.Assert(err, IsNil) - return ids -} - -// withMetaExpired sets signed.IsExpired throughout the invocation of f so that -// any metadata marked to expire at s.expiredTime will be expired (this avoids -// the need to sleep in the tests). -func (s *ClientSuite) withMetaExpired(f func()) { - e := verify.IsExpired - defer func() { verify.IsExpired = e }() - verify.IsExpired = func(t time.Time) bool { - return t.Unix() == s.expiredTime.Round(time.Second).Unix() - } - f() -} - -func (s *ClientSuite) syncLocal(c *C) { - meta, err := s.store.GetMeta() - c.Assert(err, IsNil) - for k, v := range meta { - c.Assert(s.local.SetMeta(k, v), IsNil) - } -} - -func (s *ClientSuite) syncRemote(c *C) { - meta, err := s.store.GetMeta() - c.Assert(err, IsNil) - for name, data := range meta { - if err := s.setRemoteMeta(name, data); err != nil { - panic(fmt.Sprintf("setMetadata failed: %v", err)) - } - } -} - -func (s *ClientSuite) addRemoteTarget(c *C, name string) { - c.Assert(s.repo.AddTarget(name, nil), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) -} - -func (s *ClientSuite) rootMeta(c *C) []byte { - meta, err := s.repo.GetMeta() - c.Assert(err, IsNil) - rootMeta, ok := meta["root.json"] - c.Assert(ok, Equals, true) - return rootMeta -} - -func (s *ClientSuite) newClient(c *C) *Client { - s.local = MemoryLocalStore() - client := NewClient(s.local, s.remote) - c.Assert(client.Init(s.rootMeta(c)), IsNil) - return client -} - -func (s *ClientSuite) updatedClient(c *C) *Client { - client := s.newClient(c) - _, err := client.Update() - c.Assert(err, IsNil) - return client -} - -func assertFile(c *C, file data.TargetFileMeta, name string) { - target, ok := targetFiles[name] - if !ok { - c.Fatalf("unknown target %s", name) - } - - meta, err := util.GenerateTargetFileMeta(bytes.NewReader(target), file.HashAlgorithms()...) - c.Assert(err, IsNil) - c.Assert(util.TargetFileMetaEqual(file, meta), IsNil) -} - -func assertFiles(c *C, files data.TargetFiles, names []string) { - c.Assert(files, HasLen, len(names)) - for _, name := range names { - file, ok := files[name] - if !ok { - c.Fatalf("expected files to contain %s", name) - } - - assertFile(c, file, name) - } -} - -func assertWrongHash(c *C, err error) { - // just test the type of err rather using DeepEquals as it contains - // hashes we don't necessarily need to check. - e, ok := err.(ErrDownloadFailed) - if !ok { - c.Fatalf("expected err to have type ErrDownloadFailed, got %T", err) - } - if _, ok := e.Err.(util.ErrWrongHash); !ok { - c.Fatalf("expected err.Err to have type util.ErrWrongHash, got %T", err) - } -} - -func (s *ClientSuite) assertErrExpired(c *C, err error, file string) { - decodeErr, ok := err.(ErrDecodeFailed) - if !ok { - c.Fatalf("expected err to have type ErrDecodeFailed, got %T", err) - } - c.Assert(decodeErr.File, Equals, file) - expiredErr, ok := decodeErr.Err.(verify.ErrExpired) - if !ok { - c.Fatalf("expected err.Err to have type signed.ErrExpired, got %T", err) - } - c.Assert(expiredErr.Expired.Unix(), Equals, s.expiredTime.Round(time.Second).Unix()) -} - -func (s *ClientSuite) TestInitAllowsExpired(c *C) { - s.genKeyExpired(c, "targets") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - client := NewClient(MemoryLocalStore(), s.remote) - bytes, err := s.readMeta("root.json") - c.Assert(err, IsNil) - s.withMetaExpired(func() { - c.Assert(client.Init(bytes), IsNil) - }) -} - -func (s *ClientSuite) TestInit(c *C) { - client := NewClient(MemoryLocalStore(), s.remote) - bytes, err := s.readMeta("root.json") - c.Assert(err, IsNil) - dataSigned := &data.Signed{} - c.Assert(json.Unmarshal(bytes, dataSigned), IsNil) - root := &data.Root{} - c.Assert(json.Unmarshal(dataSigned.Signed, root), IsNil) - - // check Update() returns ErrNoRootKeys when uninitialized - _, err = client.Update() - c.Assert(err, Equals, ErrNoRootKeys) - - // check Init() returns ErrRoleThreshold when the root's signature is - // invalid - // modify root and marshal without regenerating signatures - root.Version = root.Version + 1 - rootBytes, err := json.Marshal(root) - c.Assert(err, IsNil) - dataSigned.Signed = rootBytes - dataBytes, err := json.Marshal(dataSigned) - c.Assert(err, IsNil) - c.Assert(client.Init(dataBytes), Equals, verify.ErrRoleThreshold{ - Expected: 1, Actual: 0}) - - // check Update() does not return ErrNoRootKeys after initialization - c.Assert(client.Init(bytes), IsNil) - _, err = client.Update() - c.Assert(err, IsNil) -} - -// This is a regression test for https://github.com/theupdateframework/go-tuf/issues/370 -// where a single invalid signature resulted in an early return. -// Instead, the client should have continued and counted the number -// of valid signatures, ignoring the incorrect one. -func (s *ClientSuite) TestExtraRootSignaturesOnInit(c *C) { - client := NewClient(MemoryLocalStore(), s.remote) - bytes, err := s.readMeta("root.json") - c.Assert(err, IsNil) - dataSigned := &data.Signed{} - c.Assert(json.Unmarshal(bytes, dataSigned), IsNil) - - // check Init() succeeds when an extra invalid signature was - // added to the root. - dataSigned.Signatures = append(dataSigned.Signatures, - data.Signature{ - KeyID: dataSigned.Signatures[0].KeyID, - Signature: make([]byte, ed25519.SignatureSize), - }) - dataBytes, err := json.Marshal(dataSigned) - c.Assert(err, IsNil) - c.Assert(client.Init(dataBytes), IsNil) -} - -func (s *ClientSuite) TestFirstUpdate(c *C) { - files, err := s.newClient(c).Update() - c.Assert(err, IsNil) - c.Assert(files, HasLen, 1) - assertFiles(c, files, []string{"foo.txt"}) -} - -func (s *ClientSuite) TestMissingRemoteMetadata(c *C) { - client := s.newClient(c) - - s.deleteMeta("targets.json") - _, err := client.Update() - c.Assert(err, Equals, ErrMissingRemoteMetadata{"targets.json"}) - - s.deleteMeta("timestamp.json") - _, err = client.Update() - c.Assert(err, Equals, ErrMissingRemoteMetadata{"timestamp.json"}) -} - -func (s *ClientSuite) TestNoChangeUpdate(c *C) { - client := s.newClient(c) - _, err := client.Update() - c.Assert(err, IsNil) - _, err = client.Update() - c.Assert(err, IsNil) -} - -func (s *ClientSuite) TestNewTimestamp(c *C) { - client := s.updatedClient(c) - version := client.timestampVer - c.Assert(version > 0, Equals, true) - c.Assert(s.repo.Timestamp(), IsNil) - s.syncRemote(c) - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.timestampVer > version, Equals, true) -} - -func (s *ClientSuite) TestNewRoot(c *C) { - client := s.newClient(c) - - // replace all keys - newKeyIDs := make(map[string][]string) - for role, ids := range s.keyIDs { - c.Assert(len(ids) > 0, Equals, true) - c.Assert(s.repo.RevokeKey(role, ids[0]), IsNil) - newKeyIDs[role] = s.genKey(c, role) - } - - // update metadata - c.Assert(s.repo.Sign("targets.json"), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update gets new root version - c.Assert(client.getLocalMeta(), IsNil) - version := client.rootVer - c.Assert(version > 0, Equals, true) - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer > version, Equals, true) - - // check old keys are not in db - for _, ids := range s.keyIDs { - c.Assert(len(ids) > 0, Equals, true) - for _, id := range ids { - _, err := client.db.GetVerifier(id) - c.Assert(err, NotNil) - } - } - - // check new keys are in db - for name, ids := range newKeyIDs { - c.Assert(len(ids) > 0, Equals, true) - for _, id := range ids { - verifier, err := client.db.GetVerifier(id) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().IDs(), DeepEquals, ids) - } - role := client.db.GetRole(name) - c.Assert(role, NotNil) - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(ids)) - } -} - -// This is a regression test for https://github.com/theupdateframework/go-tuf/issues/370 -// where a single invalid signature resulted in an early return. -// Instead, the client should have continued and counted the number -// of valid signatures, ignoring the incorrect one. -func (s *ClientSuite) TestExtraSignaturesOnRootUpdate(c *C) { - client := s.newClient(c) - - // Add an extra root key to update the root to a new version. - s.genKey(c, "root") - // update metadata - c.Assert(s.repo.Sign("targets.json"), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // Add an extra signature to the new remote root. - bytes, err := s.readMeta("root.json") - c.Assert(err, IsNil) - dataSigned := &data.Signed{} - c.Assert(json.Unmarshal(bytes, dataSigned), IsNil) - dataSigned.Signatures = append(dataSigned.Signatures, - data.Signature{ - KeyID: dataSigned.Signatures[0].KeyID, - Signature: make([]byte, ed25519.SignatureSize), - }) - dataBytes, err := json.Marshal(dataSigned) - c.Assert(err, IsNil) - s.setRemoteMeta("root.json", dataBytes) - s.setRemoteMeta("2.root.json", dataBytes) - - // check Update() succeeds when an extra invalid signature was - // added to the root. - _, err = client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer, Equals, int64(2)) -} - -// startTUFRepoServer starts a HTTP server to serve a TUF Repo. -func startTUFRepoServer(baseDir string, relPath string) (net.Listener, error) { - serverDir := filepath.Join(baseDir, relPath) - l, err := net.Listen("tcp", "127.0.0.1:0") - go http.Serve(l, http.FileServer(http.Dir(serverDir))) - return l, err -} - -// newClientWithMeta creates new client and sets the root metadata for it. -func newClientWithMeta(baseDir string, relPath string, serverAddr string) (*Client, error) { - initialStateDir := filepath.Join(baseDir, relPath) - opts := &HTTPRemoteOptions{ - MetadataPath: "metadata", - TargetsPath: "targets", - } - - remote, err := HTTPRemoteStore(fmt.Sprintf("http://%s/", serverAddr), opts, nil) - if err != nil { - return nil, err - } - c := NewClient(MemoryLocalStore(), remote) - for _, m := range []string{"root.json", "snapshot.json", "timestamp.json", "targets.json"} { - if _, err := os.Stat(initialStateDir + "/" + m); err == nil { - metadataJSON, err := os.ReadFile(initialStateDir + "/" + m) - if err != nil { - return nil, err - } - c.local.SetMeta(m, metadataJSON) - } - } - return c, nil -} - -func initRootTest(c *C, baseDir string) (*Client, func() error) { - l, err := startTUFRepoServer(baseDir, "server") - c.Assert(err, IsNil) - tufClient, err := newClientWithMeta(baseDir, "client/metadata/current", l.Addr().String()) - c.Assert(err, IsNil) - return tufClient, l.Close -} - -func (s *ClientSuite) TestUpdateRoots(c *C) { - var tests = []struct { - fixturePath string - expectedError error - expectedVersions map[string]int64 - }{ - // Succeeds when there is no root update. - {"testdata/Published1Time", nil, map[string]int64{"root": 1, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Succeeds when client only has root.json - {"testdata/Published1Time_client_root_only", nil, map[string]int64{"root": 1, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Succeeds updating root from version 1 to version 2. - {"testdata/Published2Times_keyrotated", nil, map[string]int64{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Succeeds updating root from version 1 to version 2 when the client's initial root version is expired. - {"testdata/Published2Times_keyrotated_initialrootexpired", nil, map[string]int64{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Succeeds updating root from version 1 to version 3 when versions 1 and 2 are expired. - {"testdata/Published3Times_keyrotated_initialrootsexpired", nil, map[string]int64{"root": 3, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Succeeds updating root from version 2 to version 3. - {"testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2", nil, map[string]int64{"root": 3, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Fails updating root from version 1 to version 3 when versions 1 and 3 are expired but version 2 is not expired. - {"testdata/Published3Times_keyrotated_latestrootexpired", ErrDecodeFailed{File: "root.json", Err: verify.ErrExpired{}}, map[string]int64{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}}, - // Fails updating root from version 1 to version 2 when old root 1 did not sign off on it (nth root didn't sign off n+1). - // TODO(asraa): This testcase should have revoked the old key! - // https://github.com/theupdateframework/go-tuf/issues/417 - {"testdata/Published2Times_keyrotated_invalidOldRootSignature", nil, map[string]int64{}}, - // Fails updating root from version 1 to version 2 when the new root 2 did not sign itself (n+1th root didn't sign off n+1) - {"testdata/Published2Times_keyrotated_invalidNewRootSignature", verify.ErrRoleThreshold{Expected: 1, Actual: 0}, map[string]int64{}}, - // Fails updating root to 2.root.json when the value of the version field inside it is 1 (rollback attack prevention). - {"testdata/Published1Time_backwardRootVersion", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 1, Expected: 2}), map[string]int64{}}, - // Fails updating root to 2.root.json when the value of the version field inside it is 3 (rollforward attack prevention). - {"testdata/Published3Times_keyrotated_forwardRootVersion", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 3, Expected: 2}), map[string]int64{}}, - // Fails updating when there is no local trusted root. - {"testdata/Published1Time_client_no_root", errors.New("tuf: no root keys found in local meta store"), map[string]int64{}}, - - // snapshot role key rotation increase the snapshot and timestamp. - {"testdata/Published2Times_snapshot_keyrotated", nil, map[string]int64{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 1}}, - // targets role key rotation increase the snapshot, timestamp, and targets. - {"testdata/Published2Times_targets_keyrotated", nil, map[string]int64{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 2}}, - // timestamp role key rotation increase the timestamp. - {"testdata/Published2Times_timestamp_keyrotated", nil, map[string]int64{"root": 2, "timestamp": 2, "snapshot": 1, "targets": 1}}, - //root file size > defaultRootDownloadLimit - {"testdata/Published2Times_roottoolarge", ErrMetaTooLarge{Name: "2.root.json", Size: defaultRootDownloadLimit + 1, MaxSize: defaultRootDownloadLimit}, map[string]int64{}}, - } - - for _, test := range tests { - tufClient, closer := initRootTest(c, test.fixturePath) - _, err := tufClient.Update() - if test.expectedError == nil { - c.Assert(err, IsNil) - // Check if the root.json is being saved in non-volatile storage. - tufClient.getLocalMeta() - versionMethods := map[string]int64{"root": tufClient.rootVer, - "timestamp": tufClient.timestampVer, - "snapshot": tufClient.snapshotVer, - "targets": tufClient.targetsVer} - for m, v := range test.expectedVersions { - assert.Equal(c, v, versionMethods[m]) - } - } else { - // For backward compatibility, the update root returns - // ErrDecodeFailed that wraps the verify.ErrExpired. - if _, ok := test.expectedError.(ErrDecodeFailed); ok { - decodeErr, ok := err.(ErrDecodeFailed) - c.Assert(ok, Equals, true) - c.Assert(decodeErr.File, Equals, "root.json") - _, ok = decodeErr.Err.(verify.ErrExpired) - c.Assert(ok, Equals, true) - } else { - assert.Equal(c, test.expectedError, err) - } - } - closer() - } -} - -func (s *ClientSuite) TestFastForwardAttackRecovery(c *C) { - var tests = []struct { - fixturePath string - expectMetaDeleted map[string]bool - }{ - // Each of the following test cases each has a two sets of TUF metadata: - // (1) client's initial, and (2) server's current. - // The naming format is PublishedTwiceMultiKeysadd_X_revoke_Y_threshold_Z_ROLE - // The client includes TUF metadata before key rotation for TUF ROLE with X keys. - // The server includes updated TUF metadata after key rotation. The - // rotation involves revoking Y keys from the initial keys. - // For each test, the TUF client's will be initialized to the client files. - // The test checks whether the client is able to update itself properly. - - // Fast-forward recovery is not needed if less than threshold keys are revoked. - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": false, "targets.json": false}}, - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": false, "targets.json": false}}, - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": false, "targets.json": false}}, - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": false, "targets.json": false}}, - - // Fast-forward recovery not needed if root keys are revoked, even when the threshold number of root keys are revoked. - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": false, "targets.json": false}}, - - // Delete snapshot and timestamp metadata if a threshold number of snapshot keys are revoked. - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot", - map[string]bool{"root.json": false, "timestamp.json": true, "snapshot.json": true, "targets.json": false}}, - // Delete targets and snapshot metadata if a threshold number of targets keys are revoked. - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets", - map[string]bool{"root.json": false, "timestamp.json": false, "snapshot.json": true, "targets.json": true}}, - // Delete timestamp metadata if a threshold number of timestamp keys are revoked. - {"testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp", - map[string]bool{"root.json": false, "timestamp.json": true, "snapshot.json": false, "targets.json": false}}, - } - for _, test := range tests { - tufClient, closer := initRootTest(c, test.fixturePath) - c.Assert(tufClient.UpdateRoots(), IsNil) - m, err := tufClient.local.GetMeta() - c.Assert(err, IsNil) - for md, deleted := range test.expectMetaDeleted { - if deleted { - if _, ok := m[md]; ok { - c.Fatalf("Metadata %s is not deleted!", md) - } - } else { - if _, ok := m[md]; !ok { - c.Fatalf("Metadata %s deleted!", md) - } - } - } - closer() - } - -} - -func (s *ClientSuite) TestUpdateRace(c *C) { - // Tests race condition for the client update. You need to run the test with -race flag: - // go test -race - for i := 0; i < 2; i++ { - go func() { - c := NewClient(MemoryLocalStore(), newFakeRemoteStore()) - c.Update() - }() - } -} - -func (s *ClientSuite) TestNewTargets(c *C) { - client := s.newClient(c) - files, err := client.Update() - c.Assert(err, IsNil) - assertFiles(c, files, []string{"foo.txt"}) - - s.addRemoteTarget(c, "bar.txt") - s.addRemoteTarget(c, "baz.txt") - - files, err = client.Update() - c.Assert(err, IsNil) - assertFiles(c, files, []string{"bar.txt", "baz.txt"}) - - // Adding the same exact file should not lead to an update - s.addRemoteTarget(c, "bar.txt") - files, err = client.Update() - c.Assert(err, IsNil) - c.Assert(files, HasLen, 0) -} - -func (s *ClientSuite) TestNewTimestampKey(c *C) { - client := s.newClient(c) - - // replace key - oldIDs := s.keyIDs["timestamp"] - c.Assert(s.repo.RevokeKey("timestamp", oldIDs[0]), IsNil) - newIDs := s.genKey(c, "timestamp") - - // generate new snapshot (because root has changed) and timestamp - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update gets new root and timestamp - c.Assert(client.getLocalMeta(), IsNil) - rootVer := client.rootVer - timestampVer := client.timestampVer - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer > rootVer, Equals, true) - c.Assert(client.timestampVer > timestampVer, Equals, true) - - // check key has been replaced in db - for _, oldID := range oldIDs { - _, err := client.db.GetVerifier(oldID) - c.Assert(err, NotNil) - } - for _, newID := range newIDs { - verifier, err := client.db.GetVerifier(newID) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().IDs(), DeepEquals, newIDs) - } - role := client.db.GetRole("timestamp") - c.Assert(role, NotNil) - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(newIDs)) -} - -func (s *ClientSuite) TestNewSnapshotKey(c *C) { - client := s.newClient(c) - - // replace key - oldIDs := s.keyIDs["snapshot"] - c.Assert(s.repo.RevokeKey("snapshot", oldIDs[0]), IsNil) - newIDs := s.genKey(c, "snapshot") - - // generate new snapshot and timestamp - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update gets new root, snapshot and timestamp - c.Assert(client.getLocalMeta(), IsNil) - rootVer := client.rootVer - snapshotVer := client.snapshotVer - timestampVer := client.timestampVer - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer > rootVer, Equals, true) - c.Assert(client.snapshotVer > snapshotVer, Equals, true) - c.Assert(client.timestampVer > timestampVer, Equals, true) - - // check key has been replaced in db - for _, oldID := range oldIDs { - _, err := client.db.GetVerifier(oldID) - c.Assert(err, NotNil) - } - for _, newID := range newIDs { - verifier, err := client.db.GetVerifier(newID) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().IDs(), DeepEquals, newIDs) - } - role := client.db.GetRole("snapshot") - c.Assert(role, NotNil) - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(newIDs)) -} - -func (s *ClientSuite) TestNewTargetsKey(c *C) { - client := s.newClient(c) - - // replace key - oldIDs := s.keyIDs["targets"] - c.Assert(s.repo.RevokeKey("targets", oldIDs[0]), IsNil) - newIDs := s.genKey(c, "targets") - - // re-sign targets and generate new snapshot and timestamp - c.Assert(s.repo.Sign("targets.json"), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update gets new metadata - c.Assert(client.getLocalMeta(), IsNil) - rootVer := client.rootVer - targetsVer := client.targetsVer - snapshotVer := client.snapshotVer - timestampVer := client.timestampVer - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer > rootVer, Equals, true) - c.Assert(client.targetsVer > targetsVer, Equals, true) - c.Assert(client.snapshotVer > snapshotVer, Equals, true) - c.Assert(client.timestampVer > timestampVer, Equals, true) - - // check key has been replaced in db - for _, oldID := range oldIDs { - _, err := client.db.GetVerifier(oldID) - c.Assert(err, NotNil) - } - for _, newID := range newIDs { - verifier, err := client.db.GetVerifier(newID) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().IDs(), DeepEquals, newIDs) - } - role := client.db.GetRole("targets") - c.Assert(role, NotNil) - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(newIDs)) -} - -func (s *ClientSuite) TestOfflineSignatureFlow(c *C) { - client := s.newClient(c) - - // replace key - oldIDs := s.keyIDs["targets"] - c.Assert(s.repo.RevokeKey("targets", oldIDs[0]), IsNil) - _ = s.genKey(c, "targets") - - // re-sign targets using offline flow and generate new snapshot and timestamp - payload, err := s.repo.Payload("targets.json") - c.Assert(err, IsNil) - signed := data.Signed{Signed: payload} - _, err = s.repo.SignPayload("targets", &signed) - c.Assert(err, IsNil) - for _, sig := range signed.Signatures { - // This method checks that the signature verifies! - err = s.repo.AddOrUpdateSignature("targets.json", sig) - c.Assert(err, IsNil) - } - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update gets new metadata - c.Assert(client.getLocalMeta(), IsNil) - _, err = client.Update() - c.Assert(err, IsNil) -} - -func (s *ClientSuite) TestLocalExpired(c *C) { - client := s.newClient(c) - - // locally expired timestamp.json is ok - version := client.timestampVer - c.Assert(s.repo.TimestampWithExpires(s.expiredTime), IsNil) - s.syncLocal(c) - s.withMetaExpired(func() { - c.Assert(client.getLocalMeta(), IsNil) - c.Assert(client.timestampVer > version, Equals, true) - }) - - // locally expired snapshot.json is ok - version = client.snapshotVer - c.Assert(s.repo.SnapshotWithExpires(s.expiredTime), IsNil) - s.syncLocal(c) - s.withMetaExpired(func() { - c.Assert(client.getLocalMeta(), IsNil) - c.Assert(client.snapshotVer > version, Equals, true) - }) - - // locally expired targets.json is ok - version = client.targetsVer - c.Assert(s.repo.AddTargetWithExpires("foo.txt", nil, s.expiredTime), IsNil) - s.syncLocal(c) - s.withMetaExpired(func() { - c.Assert(client.getLocalMeta(), IsNil) - c.Assert(client.targetsVer > version, Equals, true) - }) - - // locally expired root.json is not ok - version = client.rootVer - s.genKeyExpired(c, "targets") - s.syncLocal(c) - s.withMetaExpired(func() { - err := client.getLocalMeta() - if _, ok := err.(verify.ErrExpired); !ok { - c.Fatalf("expected err to have type signed.ErrExpired, got %T", err) - } - c.Assert(client.rootVer, Equals, version) - }) -} - -func (s *ClientSuite) TestTimestampTooLarge(c *C) { - s.setRemoteMeta("timestamp.json", make([]byte, defaultTimestampDownloadLimit+1)) - _, err := s.newClient(c).Update() - c.Assert(err, Equals, ErrMetaTooLarge{"timestamp.json", defaultTimestampDownloadLimit + 1, defaultTimestampDownloadLimit}) -} - -func (s *ClientSuite) TestUpdateLocalRootExpired(c *C) { - client := s.newClient(c) - - // add soon to expire root.json to local storage - s.genKeyExpired(c, "timestamp") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncLocal(c) - - // add far expiring root.json to remote storage - s.genKey(c, "timestamp") - s.addRemoteTarget(c, "bar.txt") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - const expectedRootVersion = int64(3) - - // check the update downloads the non expired remote root.json and - // restarts itself, thus successfully updating - s.withMetaExpired(func() { - err := client.getLocalMeta() - if _, ok := err.(verify.ErrExpired); !ok { - c.Fatalf("expected err to have type signed.ErrExpired, got %T", err) - } - _, err = client.Update() - c.Assert(err, IsNil) - c.Assert(client.rootVer, Equals, expectedRootVersion) - }) -} - -func (s *ClientSuite) TestUpdateRemoteExpired(c *C) { - client := s.updatedClient(c) - - // expired remote metadata should always be rejected - c.Assert(s.repo.TimestampWithExpires(s.expiredTime), IsNil) - s.syncRemote(c) - s.withMetaExpired(func() { - _, err := client.Update() - s.assertErrExpired(c, err, "timestamp.json") - }) - - c.Assert(s.repo.SnapshotWithExpires(s.expiredTime), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - s.withMetaExpired(func() { - _, err := client.Update() - s.assertErrExpired(c, err, "snapshot.json") - }) - - c.Assert(s.repo.AddTargetWithExpires("bar.txt", nil, s.expiredTime), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - s.syncRemote(c) - s.withMetaExpired(func() { - _, err := client.Update() - s.assertErrExpired(c, err, "targets.json") - }) - - s.genKeyExpired(c, "timestamp") - c.Assert(s.repo.RemoveTarget("bar.txt"), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - s.withMetaExpired(func() { - _, err := client.Update() - s.assertErrExpired(c, err, "root.json") - }) -} - -func (s *ClientSuite) TestUpdateLocalRootExpiredKeyChange(c *C) { - client := s.newClient(c) - - // add soon to expire root.json to local storage - s.genKeyExpired(c, "timestamp") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncLocal(c) - - // replace all keys - newKeyIDs := make(map[string][]string) - for role, ids := range s.keyIDs { - if role != "snapshot" && role != "timestamp" && role != "targets" { - c.Assert(s.repo.RevokeKey(role, ids[0]), IsNil) - newKeyIDs[role] = s.genKey(c, role) - } - } - - // update metadata - c.Assert(s.repo.Sign("targets.json"), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check the update downloads the non expired remote root.json and - // restarts itself, thus successfully updating - s.withMetaExpired(func() { - err := client.getLocalMeta() - c.Assert(err, FitsTypeOf, verify.ErrExpired{}) - - _, err = client.Update() - c.Assert(err, IsNil) - }) -} - -func (s *ClientSuite) TestUpdateMixAndMatchAttack(c *C) { - // generate metadata with an explicit expires so we can make predictable changes - expires := time.Now().Add(time.Hour) - c.Assert(s.repo.AddTargetWithExpires("foo.txt", nil, expires), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - client := s.updatedClient(c) - - // grab the remote targets.json - oldTargets, err := s.readMeta("targets.json") - if err != nil { - c.Fatal("missing remote targets.json") - } - - // generate new remote metadata, but replace targets.json with the old one - c.Assert(s.repo.AddTargetWithExpires("bar.txt", nil, expires), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - newTargets, err := s.readMeta("targets.json") - if err != nil { - c.Fatal("missing remote targets.json") - } - s.setRemoteMeta("targets.json", oldTargets) - - // check update returns ErrWrongSize for targets.json - _, err = client.Update() - c.Assert(err, DeepEquals, ErrWrongSize{"targets.json", int64(len(oldTargets)), int64(len(newTargets))}) - - // do the same but keep the size the same - c.Assert(s.repo.RemoveTargetWithExpires("foo.txt", expires), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - s.syncRemote(c) - s.setRemoteMeta("targets.json", oldTargets) - - // check update returns ErrWrongHash - _, err = client.Update() - assertWrongHash(c, err) -} - -func (s *ClientSuite) TestUpdateReplayAttack(c *C) { - client := s.updatedClient(c) - - // grab the remote timestamp.json - oldTimestamp, err := s.readMeta("timestamp.json") - if err != nil { - c.Fatal("missing remote timestamp.json") - } - - // generate a new timestamp and sync with the client - version := client.timestampVer - c.Assert(version > 0, Equals, true) - c.Assert(s.repo.Timestamp(), IsNil) - s.syncRemote(c) - _, err = client.Update() - c.Assert(err, IsNil) - c.Assert(client.timestampVer > version, Equals, true) - - // replace remote timestamp.json with the old one - s.setRemoteMeta("timestamp.json", oldTimestamp) - - // check update returns ErrLowVersion - _, err = client.Update() - c.Assert(err, DeepEquals, ErrDecodeFailed{ - File: "timestamp.json", - Err: verify.ErrLowVersion{ - Actual: version, - Current: client.timestampVer, - }, - }) -} - -func (s *ClientSuite) TestUpdateForkTimestamp(c *C) { - client := s.updatedClient(c) - - // grab the remote timestamp.json - oldTimestamp, err := s.readMeta("timestamp.json") - if err != nil { - c.Fatal("missing remote timestamp.json") - } - - // generate a new timestamp and sync with the client - version := client.timestampVer - c.Assert(version > 0, Equals, true) - c.Assert(s.repo.Timestamp(), IsNil) - s.syncRemote(c) - _, err = client.Update() - c.Assert(err, IsNil) - newVersion := client.timestampVer - c.Assert(newVersion > version, Equals, true) - - // generate a new, different timestamp with the *same version* - s.setRemoteMeta("timestamp.json", oldTimestamp) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(client.timestampVer, Equals, newVersion) // double-check: same version? - s.syncRemote(c) - - oldMeta, err := client.local.GetMeta() - c.Assert(err, IsNil) - _, err = client.Update() - c.Assert(err, IsNil) // no error: the targets.json version didn't change, so there was no update! - // Client shouldn't update! - newMeta, err := client.local.GetMeta() - c.Assert(err, IsNil) - c.Assert(oldMeta, DeepEquals, newMeta) -} - -func (s *ClientSuite) TestUpdateTamperedTargets(c *C) { - client := s.newClient(c) - - // get local targets.json - meta, err := s.store.GetMeta() - c.Assert(err, IsNil) - targetsJSON, ok := meta["targets.json"] - if !ok { - c.Fatal("missing targets.json") - } - - type signedTargets struct { - Signed data.Targets `json:"signed"` - Signatures []data.Signature `json:"signatures"` - } - targets := &signedTargets{} - c.Assert(json.Unmarshal(targetsJSON, targets), IsNil) - - // update remote targets.json to have different content but same size - targets.Signed.Type = "xxxxxxx" - tamperedJSON, err := json.Marshal(targets) - c.Assert(err, IsNil) - s.store.SetMeta("targets.json", tamperedJSON) - s.store.Commit(false, nil, nil) - s.syncRemote(c) - _, err = client.Update() - assertWrongHash(c, err) - - // update remote targets.json to have the wrong size - targets.Signed.Type = "xxx" - tamperedJSON, err = json.Marshal(targets) - c.Assert(err, IsNil) - s.store.SetMeta("targets.json", tamperedJSON) - s.store.Commit(false, nil, nil) - c.Assert(s.repo.Timestamp(), IsNil) // unless timestamp changes, the client doesn't even look at "targets.json" - s.syncRemote(c) - _, err = client.Update() - c.Assert(err, DeepEquals, ErrWrongSize{"targets.json", int64(len(tamperedJSON)), int64(len(targetsJSON))}) -} - -func (s *ClientSuite) TestUpdateHTTP(c *C) { - tmp := c.MkDir() - - // start file server - addr, cleanup := startFileServer(c, tmp) - defer cleanup() - - for _, consistentSnapshot := range []bool{false, true} { - dir := fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot) - - // generate repository - repo := generateRepoFS(c, filepath.Join(tmp, dir), targetFiles, consistentSnapshot) - - // initialize a client - remote, err := HTTPRemoteStore(fmt.Sprintf("http://%s/%s/repository", addr, dir), nil, nil) - c.Assert(err, IsNil) - client := NewClient(MemoryLocalStore(), remote) - rootMeta, err := repo.SignedMeta("root.json") - c.Assert(err, IsNil) - rootJsonBytes, err := json.Marshal(rootMeta) - c.Assert(err, IsNil) - c.Assert(client.Init(rootJsonBytes), IsNil) - - // check update is ok - targets, err := client.Update() - c.Assert(err, IsNil) - assertFiles(c, targets, []string{"foo.txt", "bar.txt", "baz.txt"}) - - // check can download files - for name, data := range targetFiles { - var dest testDestination - c.Assert(client.Download(name, &dest), IsNil) - c.Assert(dest.deleted, Equals, false) - c.Assert(dest.String(), Equals, string(data)) - } - } -} - -// TestRollbackSnapshot tests a rollback version of snapshot. -func (s *ClientSuite) TestRollbackSnapshot(c *C) { - client := s.updatedClient(c) - - // generate a new snapshot & timestamp v2 and sync with the client - version := client.snapshotVer - c.Assert(version > 0, Equals, true) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.snapshotVer > version, Equals, true) - - // replace remote snapshot.json with old version and timestamp again. - s.repo.SetSnapshotVersion(version) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update returns ErrLowVersion - _, err = client.Update() - - c.Assert(err, DeepEquals, verify.ErrLowVersion{ - Actual: version, - Current: client.snapshotVer, - }) -} - -func (s *ClientSuite) TestRollbackTopLevelTargets(c *C) { - client := s.updatedClient(c) - - // generate a new targets and sync with the client - version := client.targetsVer - c.Assert(version > 0, Equals, true) - s.addRemoteTarget(c, "bar.txt") - _, err := client.Update() - c.Assert(err, IsNil) - c.Assert(client.targetsVer > version, Equals, true) - - // replace remote snapshot.json with old version and timestamp again. - s.repo.SetTargetsVersion(version) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // check update returns ErrLowVersion - _, err = client.Update() - c.Assert(err, DeepEquals, verify.ErrLowVersion{ - Actual: version, - Current: client.targetsVer, - }) -} - -func (s *ClientSuite) TestRollbackDelegatedTargets(c *C) { - client := s.updatedClient(c) - // add a delegation - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - role := data.DelegatedRole{ - Name: "role", - KeyIDs: signer.PublicData().IDs(), - Paths: []string{"bar.txt", "baz.txt"}, - Threshold: 1, - } - s.store.SaveSigner("role", signer) - s.repo.AddDelegatedRole("targets", role, []*data.PublicKey{signer.PublicData()}) - s.repo.AddTargetToPreferredRole("bar.txt", nil, "role") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // save v1 delegation - meta, err := s.store.GetMeta() - c.Assert(err, IsNil) - oldRole, ok := meta["role.json"] - if !ok { - c.Fatal("missing role.json") - } - // update client and verify download delegated target - _, err = client.Update() - c.Assert(err, IsNil) - var dest testDestination - c.Assert(client.Download("bar.txt", &dest), IsNil) - - // update delegation to v2 - s.repo.AddTargetToPreferredRole("baz.txt", nil, "role") - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - // update client and verify download v2 delegated target - _, err = client.Update() - c.Assert(err, IsNil) - c.Assert(dest.Delete(), IsNil) - c.Assert(client.Download("baz.txt", &dest), IsNil) - - // rollback role.json version. - c.Assert(s.store.SetMeta("role.json", oldRole), IsNil) - repo, err := tuf.NewRepo(s.store) - c.Assert(err, IsNil) - c.Assert(repo.Snapshot(), IsNil) - c.Assert(repo.Timestamp(), IsNil) - c.Assert(repo.Commit(), IsNil) - s.syncRemote(c) - - // check update returns ErrLowVersion - _, err = client.Update() - c.Assert(err, DeepEquals, verify.ErrLowVersion{ - Actual: 1, - Current: 2, - }) -} - -type testDestination struct { - bytes.Buffer - deleted bool -} - -func (t *testDestination) Delete() error { - t.deleted = true - return nil -} - -func (s *ClientSuite) TestDownloadUnknownTarget(c *C) { - client := s.updatedClient(c) - var dest testDestination - c.Assert(client.Download("nonexistent", &dest), Equals, ErrUnknownTarget{Name: "nonexistent", SnapshotVersion: 1}) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestDownloadNoExist(c *C) { - client := s.updatedClient(c) - s.deleteTarget("foo.txt") - var dest testDestination - c.Assert(client.Download("foo.txt", &dest), Equals, ErrNotFound{"foo.txt"}) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestDownloadOK(c *C) { - client := s.updatedClient(c) - // the filename is normalized if necessary - for _, name := range []string{"/foo.txt", "foo.txt"} { - var dest testDestination - c.Assert(client.Download(name, &dest), IsNil) - c.Assert(dest.deleted, Equals, false) - c.Assert(dest.String(), Equals, "foo") - } -} - -func (s *ClientSuite) TestDownloadWrongSize(c *C) { - client := s.updatedClient(c) - // Update with a file that's incorrect size. - s.setRemoteTarget("foo.txt", []byte("wrong-size")) - var dest testDestination - c.Assert(client.Download("foo.txt", &dest), DeepEquals, ErrWrongSize{"foo.txt", 10, 3}) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestDownloadTargetTooLong(c *C) { - client := s.updatedClient(c) - s.setRemoteTarget("foo.txt", []byte("foo-ooo")) - var dest testDestination - c.Assert(client.Download("foo.txt", &dest), DeepEquals, ErrWrongSize{"foo.txt", 7, 3}) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestDownloadTargetTooShort(c *C) { - client := s.updatedClient(c) - s.setRemoteTarget("foo.txt", []byte("fo")) - var dest testDestination - c.Assert(client.Download("foo.txt", &dest), DeepEquals, ErrWrongSize{"foo.txt", 2, 3}) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestDownloadTargetCorruptData(c *C) { - client := s.updatedClient(c) - s.setRemoteTarget("foo.txt", []byte("ooo")) - var dest testDestination - assertWrongHash(c, client.Download("foo.txt", &dest)) - c.Assert(dest.deleted, Equals, true) -} - -func (s *ClientSuite) TestAvailableTargets(c *C) { - client := s.updatedClient(c) - files, err := client.Targets() - c.Assert(err, IsNil) - assertFiles(c, files, []string{"foo.txt"}) - - s.addRemoteTarget(c, "bar.txt") - s.addRemoteTarget(c, "baz.txt") - _, err = client.Update() - c.Assert(err, IsNil) - files, err = client.Targets() - c.Assert(err, IsNil) - assertFiles(c, files, []string{"foo.txt", "bar.txt", "baz.txt"}) -} - -func (s *ClientSuite) TestAvailableTarget(c *C) { - client := s.updatedClient(c) - - target, err := client.Target("foo.txt") - c.Assert(err, IsNil) - assertFile(c, target, "foo.txt") - - target, err = client.Target("/foo.txt") - c.Assert(err, IsNil) - assertFile(c, target, "foo.txt") - - _, err = client.Target("bar.txt") - c.Assert(err, Equals, ErrNotFound{"bar.txt"}) - - _, err = client.Target("/bar.txt") - c.Assert(err, Equals, ErrNotFound{"/bar.txt"}) -} - -func (s *ClientSuite) TestUnknownKeyIDs(c *C) { - // get local root.json - meta, err := s.store.GetMeta() - c.Assert(err, IsNil) - - rootJSON, ok := meta["root.json"] - c.Assert(ok, Equals, true) - - var root struct { - Signed data.Root `json:"signed"` - Signatures []data.Signature `json:"signatures"` - } - c.Assert(json.Unmarshal(rootJSON, &root), IsNil) - - // update remote root.json to add a new key with an unknown id - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - root.Signed.Keys["unknown-key-id"] = signer.PublicData() - - // re-sign the root metadata, then commit it back into the store. - signingKeys, err := s.store.GetSigners("root") - c.Assert(err, IsNil) - - signedRoot, err := sign.Marshal(root.Signed, signingKeys...) - c.Assert(err, IsNil) - - rootJSON, err = cjson.EncodeCanonical(signedRoot) - c.Assert(err, IsNil) - - s.store.SetMeta("root.json", rootJSON) - s.store.Commit(false, nil, nil) - s.syncRemote(c) - - // FIXME(TUF-0.9) We need this for now because the client still uses - // the TUF-0.9 update workflow, where we decide to update the root - // metadata when we observe a new root through the snapshot. - repo, err := tuf.NewRepo(s.store) - c.Assert(err, IsNil) - c.Assert(repo.Snapshot(), IsNil) - c.Assert(repo.Timestamp(), IsNil) - c.Assert(repo.Commit(), IsNil) - s.syncRemote(c) - - // Make sure the client can update with the unknown keyid. - client := s.newClient(c) - _, err = client.Update() - c.Assert(err, IsNil) -} - -func generateRepoFS(c *C, dir string, files map[string][]byte, consistentSnapshot bool) *tuf.Repo { - repo, err := tuf.NewRepo(tuf.FileSystemStore(dir, nil)) - c.Assert(err, IsNil) - if !consistentSnapshot { - c.Assert(repo.Init(false), IsNil) - } - for _, role := range []string{"root", "snapshot", "targets", "timestamp"} { - _, err := repo.GenKey(role) - c.Assert(err, IsNil) - } - for file, data := range files { - path := filepath.Join(dir, "staged", "targets", file) - c.Assert(os.MkdirAll(filepath.Dir(path), 0755), IsNil) - c.Assert(os.WriteFile(path, data, 0644), IsNil) - c.Assert(repo.AddTarget(file, nil), IsNil) - } - c.Assert(repo.Snapshot(), IsNil) - c.Assert(repo.Timestamp(), IsNil) - c.Assert(repo.Commit(), IsNil) - return repo -} - -func (s *ClientSuite) TestVerifyDigest(c *C) { - digest := "sha256:bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c" - hash := "bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c" - size := int64(42) - - c.Assert(s.repo.AddTargetsWithDigest(hash, "sha256", size, digest, nil), IsNil) - c.Assert(s.repo.Snapshot(), IsNil) - c.Assert(s.repo.Timestamp(), IsNil) - c.Assert(s.repo.Commit(), IsNil) - s.syncRemote(c) - - client := s.newClient(c) - _, err := client.Update() - c.Assert(err, IsNil) - - c.Assert(client.VerifyDigest(hash, "sha256", size, digest), IsNil) -} - -type StateLessSuite struct{} - -var _ = Suite(&StateLessSuite{}) - -func (s *StateLessSuite) TestRejectsMultiSignaturesSameKeyDifferentIDs(c *C) { - // In this test Alice and Bob want to create a TUF repo - // where a root key rotation would require both their signatures. - // Alice uses an old version of Go-TUF where each key gets assigned several IDs. - // Bob uses a modern version of Go-TUF that does not produce the same list of IDs for a same key. - // This test checks that the TUF client - // will not accept a root rotation - // signed twice with Alice's key with different key IDs each time. - // This test was failing with https://github.com/theupdateframework/go-tuf/tree/ac7b5d7bce18cca5a84a28b021bd6372f450b35b - // because the signature verification code was assuming that the key IDs used in the metadata - // were the same as the one the TUF library of the client would generate, - // breaking the security of threshold signatures. - - // The attack works just the same if Alice is malicious from the beginning - // and convinces Bob to sign an initial "root.json" - // with additional key IDs for her only key, - // but this scenario show that the vulnerability can even impact situations - // where Alice is not malicious at all, - // she was simply using an old client and an attacker stole her key. - // The purpose of threshold signatures in TUF is precisely - // to make sure that an attacker cannot forge signatures - // if they did not steal a large enough number of keys. - - alice, err := keys.GenerateEd25519Key() - if err != nil { - panic(err) - } - - root := data.NewRoot() - root.Version = 1 - root.Roles["root"] = &data.Role{ - KeyIDs: []string{}, - Threshold: 2, // Note the threshold - } - - // reproduces how IDs were computed in - // https://github.com/theupdateframework/go-tuf/blob/8e84384bebe3/data/types.go#L50 - oldTUFIDs := func(k *data.PublicKey) []string { - bytes, _ := cjson.EncodeCanonical(k) - digest := sha256.Sum256(bytes) - ids := []string{hex.EncodeToString(digest[:])} - - if k.Scheme != "" || len(k.Algorithms) != 0 { - bytes, _ = cjson.EncodeCanonical(&data.PublicKey{ - Type: k.Type, - Value: k.Value, - }) - digest = sha256.Sum256(bytes) - ids = append(ids, hex.EncodeToString(digest[:])) - } - - return ids - } - - // Alice adds her key using an old version of go-tuf - // which will use several IDs - for _, keyID := range oldTUFIDs(alice.PublicData()) { - root.Keys[keyID] = alice.PublicData() - root.Roles["root"].KeyIDs = append(root.Roles["root"].KeyIDs, keyID) - } - - bob, err := keys.GenerateEd25519Key() - if err != nil { - panic(err) - } - - root.AddKey(bob.PublicData()) - root.Roles["root"].KeyIDs = append( - root.Roles["root"].KeyIDs, - bob.PublicData().IDs()..., - ) - - // signer for the other roles, not important - delegatedSigner, _ := keys.GenerateEd25519Key() - root.AddKey(delegatedSigner.PublicData()) - for _, role := range []string{"targets", "snapshot", "timestamp"} { - root.Roles[role] = &data.Role{ - KeyIDs: delegatedSigner.PublicData().IDs(), - Threshold: 1, - } - } - - signedRoot, err := sign.Marshal(root, alice, bob) - c.Assert(err, IsNil) - rootJSON, err := json.Marshal(signedRoot) - c.Assert(err, IsNil) - - // producing evil root using only Alice's key - - evilRoot := root - evilRoot.Version = 2 - - canonical, err := cjson.EncodeCanonical(evilRoot) - c.Assert(err, IsNil) - sig, err := alice.SignMessage(canonical) - c.Assert(err, IsNil) - signedEvilRoot := &data.Signed{ - Signed: canonical, - Signatures: make([]data.Signature, 0), - } - for _, keyID := range oldTUFIDs(alice.PublicData()) { - signedEvilRoot.Signatures = append(signedEvilRoot.Signatures, data.Signature{ - Signature: sig, - KeyID: keyID, - }) - } - evilRootJSON, err := json.Marshal(signedEvilRoot) - c.Assert(err, IsNil) - - // checking that client does not accept root rotation - // to evil root - - localStore := MemoryLocalStore() - err = localStore.SetMeta("root.json", rootJSON) - c.Assert(err, IsNil) - - remoteStore := newFakeRemoteStore() - remoteStore.meta["2.root.json"] = newFakeFile(evilRootJSON) - - client := NewClient(localStore, remoteStore) - - err = client.UpdateRoots() - if err != nil { - c.Assert(err, DeepEquals, verify.ErrRoleThreshold{Expected: 2, Actual: 1}) - } else { - c.Fatalf("client returned no error when updating with evil root") - } -} diff --git a/client/delegations.go b/client/delegations.go deleted file mode 100644 index cc0fc482..00000000 --- a/client/delegations.go +++ /dev/null @@ -1,152 +0,0 @@ -package client - -import ( - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/targets" - "github.com/theupdateframework/go-tuf/verify" -) - -// getTargetFileMeta searches for a verified TargetFileMeta matching a target -// Requires a local snapshot to be loaded and is locked to the snapshot versions. -func (c *Client) getTargetFileMeta(target string) (data.TargetFileMeta, error) { - snapshot, err := c.loadLocalSnapshot() - if err != nil { - return data.TargetFileMeta{}, err - } - - targetFileMeta, _, err := c.getTargetFileMetaDelegationPath(target, snapshot) - if err != nil { - return data.TargetFileMeta{}, err - } - return targetFileMeta, nil -} - -// getTargetFileMetaDelegationPath searches for a verified TargetFileMeta matching a target -// Requires snapshot to be passed and is locked to that specific snapshot versions. -// Searches through delegated targets following TUF spec 1.0.19 section 5.6. -func (c *Client) getTargetFileMetaDelegationPath(target string, snapshot *data.Snapshot) (data.TargetFileMeta, []string, error) { - // delegationsIterator covers 5.6.7 - // - pre-order depth-first search starting with the top targets - // - filter delegations with paths or path_hash_prefixes matching searched target - // - 5.6.7.1 cycles protection - // - 5.6.7.2 terminations - delegations, err := targets.NewDelegationsIterator(target, c.db) - if err != nil { - return data.TargetFileMeta{}, nil, err - } - - targetFileMeta := data.TargetFileMeta{} - delegationRole := "" - - for i := 0; i < c.MaxDelegations; i++ { - d, ok := delegations.Next() - if !ok { - return data.TargetFileMeta{}, nil, ErrUnknownTarget{target, snapshot.Version} - } - - // covers 5.6.{1,2,3,4,5,6} - targets, err := c.loadDelegatedTargets(snapshot, d.Delegatee.Name, d.DB) - if err != nil { - return data.TargetFileMeta{}, nil, err - } - - // stop when the searched TargetFileMeta is found - if m, ok := targets.Targets[target]; ok { - delegationRole = d.Delegatee.Name - targetFileMeta = m - break - } - - if targets.Delegations != nil { - delegationsDB, err := verify.NewDBFromDelegations(targets.Delegations) - if err != nil { - return data.TargetFileMeta{}, nil, err - } - err = delegations.Add(targets.Delegations.Roles, d.Delegatee.Name, delegationsDB) - if err != nil { - return data.TargetFileMeta{}, nil, err - } - } - } - - if len(delegationRole) > 0 { - return targetFileMeta, buildPath(delegations.Parent, delegationRole, ""), nil - } - - return data.TargetFileMeta{}, nil, ErrMaxDelegations{ - Target: target, - MaxDelegations: c.MaxDelegations, - SnapshotVersion: snapshot.Version, - } -} - -func buildPath(parent func(string) string, start string, end string) []string { - if start == end { - return nil - } - - path := []string{start} - current := start - for { - current = parent(current) - if current == end { - break - } - path = append(path, current) - } - return path -} - -func (c *Client) loadLocalSnapshot() (*data.Snapshot, error) { - if err := c.getLocalMeta(); err != nil { - return nil, err - } - rawS, ok := c.localMeta["snapshot.json"] - if !ok { - return nil, ErrNoLocalSnapshot - } - - snapshot := &data.Snapshot{} - if err := c.db.Unmarshal(rawS, snapshot, "snapshot", c.snapshotVer); err != nil { - return nil, ErrDecodeFailed{"snapshot.json", err} - } - return snapshot, nil -} - -// loadDelegatedTargets downloads, decodes, verifies and stores targets -func (c *Client) loadDelegatedTargets(snapshot *data.Snapshot, role string, db *verify.DB) (*data.Targets, error) { - var err error - fileName := role + ".json" - fileMeta, ok := snapshot.Meta[fileName] - if !ok { - return nil, ErrRoleNotInSnapshot{role, snapshot.Version} - } - - // 5.6.1 download target if not in the local store - // 5.6.2 check against snapshot hash - // 5.6.4 check against snapshot version - raw, alreadyStored := c.localMetaFromSnapshot(fileName, fileMeta) - if !alreadyStored { - raw, err = c.downloadMetaFromSnapshot(fileName, fileMeta) - if err != nil { - return nil, err - } - } - - targets := &data.Targets{} - // 5.6.3 verify signature with parent public keys - // 5.6.5 verify that the targets is not expired - // role "targets" is a top role verified by root keys loaded in the client db - err = db.Unmarshal(raw, targets, role, fileMeta.Version) - if err != nil { - return nil, ErrDecodeFailed{fileName, err} - } - - // 5.6.6 persist - if !alreadyStored { - if err := c.local.SetMeta(fileName, raw); err != nil { - return nil, err - } - } - return targets, nil -} diff --git a/client/delegations_test.go b/client/delegations_test.go deleted file mode 100644 index cbfc8525..00000000 --- a/client/delegations_test.go +++ /dev/null @@ -1,340 +0,0 @@ -package client - -import ( - "crypto/sha256" - "encoding/json" - "fmt" - "io" - "net" - "net/http" - "os" - "strings" - "testing" - "time" - - "github.com/stretchr/testify/assert" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/util" - "github.com/theupdateframework/go-tuf/verify" -) - -func TestGetTargetMeta(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer func() { assert.Nil(t, closer()) }() - _, err := c.Update() - assert.Nil(t, err) - - f, err := c.getTargetFileMeta("f.txt") - assert.Nil(t, err) - hash := sha256.Sum256([]byte("Contents: f.txt")) - assert.Equal(t, data.HexBytes(hash[:]), f.Hashes["sha256"]) - - f, err = c.getTargetFileMeta("targets.txt") - assert.Nil(t, err) - hash = sha256.Sum256([]byte("Contents: targets.txt")) - assert.Equal(t, data.HexBytes(hash[:]), f.Hashes["sha256"]) -} - -func TestMaxDelegations(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer func() { assert.Nil(t, closer()) }() - _, err := c.Update() - assert.Nil(t, err) - c.MaxDelegations = 2 - _, err = c.getTargetFileMeta("c.txt") - assert.Equal(t, ErrMaxDelegations{Target: "c.txt", MaxDelegations: 2, SnapshotVersion: 2}, err) -} - -func TestMetaNotFound(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer func() { assert.Nil(t, closer()) }() - _, err := c.Update() - assert.Nil(t, err) - _, err = c.getTargetFileMeta("unknown.txt") - assert.Equal(t, ErrUnknownTarget{Name: "unknown.txt", SnapshotVersion: 2}, err) -} - -type fakeRemote struct { - getMeta func(name string) (stream io.ReadCloser, size int64, err error) - getTarget func(path string) (stream io.ReadCloser, size int64, err error) -} - -func (f fakeRemote) GetMeta(name string) (stream io.ReadCloser, size int64, err error) { - return f.getMeta(name) -} - -func (f fakeRemote) GetTarget(name string) (stream io.ReadCloser, size int64, err error) { - return f.getTarget(name) -} - -func TestTargetsNotFound(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer func() { assert.Nil(t, closer()) }() - _, err := c.Update() - assert.Nil(t, err) - - previousRemote := c.remote - newRemote := fakeRemote{ - getMeta: func(path string) (stream io.ReadCloser, size int64, err error) { - if path == "1.c.json" { - return nil, 0, ErrNotFound{} - } - return previousRemote.GetMeta(path) - }, - getTarget: previousRemote.GetTarget, - } - c.remote = newRemote - - _, err = c.getTargetFileMeta("c.txt") - assert.Equal(t, ErrMissingRemoteMetadata{Name: "c.json"}, err) -} - -func TestUnverifiedTargets(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer closer() - _, err := c.Update() - assert.Nil(t, err) - - previousRemote := c.remote - newRemote := fakeRemote{ - getMeta: func(path string) (stream io.ReadCloser, size int64, err error) { - if path == "1.c.json" { - // returns a snapshot that does not match - return previousRemote.GetMeta("1.d.json") - } - return previousRemote.GetMeta(path) - }, - getTarget: previousRemote.GetTarget, - } - c.remote = newRemote - - _, err = c.getTargetFileMeta("c.txt") - assert.Equal(t, ErrDecodeFailed{File: "c.json", Err: verify.ErrRoleThreshold{Expected: 1, Actual: 0}}, err) -} - -func TestPersistedMeta(t *testing.T) { - verify.IsExpired = func(t time.Time) bool { return false } - c, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation") - defer closer() - _, err := c.Update() - assert.Nil(t, err) - - _, err = c.local.GetMeta() - assert.Nil(t, err) - - type expectedTargets struct { - name string - version int64 - } - var persistedTests = []struct { - file string - targets []expectedTargets - downloadError error - targetError error - fileContent string - }{ - { - file: "unknown", - targets: []expectedTargets{ - { - name: "targets.json", - version: 2, - }, - }, - downloadError: ErrUnknownTarget{Name: "unknown", SnapshotVersion: 2}, - targetError: ErrNotFound{File: "unknown"}, - fileContent: "", - }, - { - file: "b.txt", - targets: []expectedTargets{ - { - name: "targets.json", - version: 2, - }, - { - name: "a.json", - version: 1, - }, - { - name: "b.json", - version: 1, - }, - }, - downloadError: nil, - targetError: nil, - fileContent: "Contents: b.txt", - }, - { - file: "f.txt", - targets: []expectedTargets{ - { - name: "targets.json", - version: 2, - }, - { - name: "a.json", - version: 1, - }, - { - name: "b.json", - version: 1, - }, - { - name: "c.json", - version: 1, - }, - { - name: "d.json", - version: 1, - }, - { - name: "e.json", - version: 1, - }, - { - name: "f.json", - version: 1, - }, - }, - downloadError: nil, - targetError: nil, - fileContent: "Contents: f.txt", - }, - } - - for _, tt := range persistedTests { - t.Run("search "+tt.file, func(t *testing.T) { - var dest testDestination - err = c.Download(tt.file, &dest) - assert.Equal(t, tt.downloadError, err) - assert.Equal(t, tt.fileContent, dest.String()) - - target, err := c.Target(tt.file) - assert.Equal(t, tt.targetError, err) - if tt.targetError == nil { - meta, err := util.GenerateTargetFileMeta(strings.NewReader(tt.fileContent), target.HashAlgorithms()...) - assert.Nil(t, err) - assert.Nil(t, util.TargetFileMetaEqual(target, meta)) - } - - p, err := c.local.GetMeta() - assert.Nil(t, err) - persisted := copyStore(p) - persistedLocal := copyStore(c.localMeta) - // trim non targets metas - for _, notTargets := range []string{"root.json", "snapshot.json", "timestamp.json"} { - delete(persisted, notTargets) - delete(persistedLocal, notTargets) - } - for _, targets := range tt.targets { - // Test local store - storedVersion, err := versionOfStoredTargets(targets.name, persisted) - assert.Equal(t, targets.version, storedVersion) - assert.Nil(t, err) - delete(persisted, targets.name) - - // Test localMeta - storedVersion, err = versionOfStoredTargets(targets.name, persistedLocal) - assert.Equal(t, targets.version, storedVersion) - assert.Nil(t, err) - delete(persistedLocal, targets.name) - } - assert.Empty(t, persisted) - assert.Empty(t, persistedLocal) - }) - } -} - -func TestGetDelegationPathWithNoTargetFile(t *testing.T) { - // In this test, we have created a target file c.txt for a delegation - // c.json, then we remove that target file and check if c.json is loaded - // in the localMeta. It shouldn't as it has no target file at all and shouldn't - // be used. - verify.IsExpired = func(t time.Time) bool { return false } - client, closer := initTestDelegationClient(t, "testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation") - defer closer() - _, err := client.Update() - assert.Nil(t, err) - - err = client.getLocalMeta() - assert.Nil(t, err) - - _, ok := client.localMeta["a.json"] - assert.True(t, ok) - - _, ok = client.localMeta["b.json"] - assert.True(t, ok) - - _, ok = client.localMeta["c.json"] - assert.False(t, ok) -} - -func versionOfStoredTargets(name string, store map[string]json.RawMessage) (int64, error) { - rawTargets, ok := store[name] - if !ok { - return 0, nil - } - s := &data.Signed{} - if err := json.Unmarshal(rawTargets, s); err != nil { - return 0, err - } - targets := &data.Targets{} - if err := json.Unmarshal(s.Signed, targets); err != nil { - return 0, err - } - return targets.Version, nil -} - -func initTestDelegationClient(t *testing.T, dirPrefix string) (*Client, func() error) { - serverDir := dirPrefix + "/server" - initialStateDir := dirPrefix + "/client/metadata/current" - l, err := net.Listen("tcp", "127.0.0.1:0") - assert.Nil(t, err) - addr := l.Addr().String() - go http.Serve(l, http.FileServer(http.Dir(serverDir))) - - opts := &HTTPRemoteOptions{ - MetadataPath: "metadata", - TargetsPath: "targets", - } - remote, err := HTTPRemoteStore(fmt.Sprintf("http://%s/", addr), opts, nil) - assert.Nil(t, err) - - c := NewClient(MemoryLocalStore(), remote) - rawFile, err := os.ReadFile(initialStateDir + "/" + "root.json") - assert.Nil(t, err) - assert.Nil(t, c.Init(rawFile)) - files, err := os.ReadDir(initialStateDir) - assert.Nil(t, err) - - // load local files - for _, f := range files { - if f.IsDir() { - continue - } - name := f.Name() - // ignoring consistent snapshot when loading initial state - if len(strings.Split(name, ".")) < 3 && strings.HasSuffix(name, ".json") { - rawFile, err := os.ReadFile(initialStateDir + "/" + name) - assert.Nil(t, err) - assert.Nil(t, c.local.SetMeta(name, rawFile)) - } - } - return c, l.Close -} - -func copyStore(store map[string]json.RawMessage) map[string]json.RawMessage { - new := make(map[string]json.RawMessage, len(store)) - for k, raw := range store { - newRaw := make([]byte, len(raw)) - copy(newRaw, []byte(raw)) - new[k] = json.RawMessage(newRaw) - } - return new -} diff --git a/client/errors.go b/client/errors.go deleted file mode 100644 index 3e7a5dcc..00000000 --- a/client/errors.go +++ /dev/null @@ -1,107 +0,0 @@ -package client - -import ( - "errors" - "fmt" -) - -var ( - ErrNoRootKeys = errors.New("tuf: no root keys found in local meta store") - ErrInsufficientKeys = errors.New("tuf: insufficient keys to meet threshold") - ErrNoLocalSnapshot = errors.New("tuf: no snapshot stored locally") -) - -type ErrMissingRemoteMetadata struct { - Name string -} - -func (e ErrMissingRemoteMetadata) Error() string { - return fmt.Sprintf("tuf: missing remote metadata %s", e.Name) -} - -type ErrDownloadFailed struct { - File string - Err error -} - -func (e ErrDownloadFailed) Error() string { - return fmt.Sprintf("tuf: failed to download %s: %s", e.File, e.Err) -} - -type ErrDecodeFailed struct { - File string - Err error -} - -func (e ErrDecodeFailed) Error() string { - return fmt.Sprintf("tuf: failed to decode %s: %s", e.File, e.Err) -} - -type ErrMaxDelegations struct { - Target string - MaxDelegations int - SnapshotVersion int64 -} - -func (e ErrMaxDelegations) Error() string { - return fmt.Sprintf("tuf: max delegation of %d reached searching for %s with snapshot version %d", e.MaxDelegations, e.Target, e.SnapshotVersion) -} - -type ErrNotFound struct { - File string -} - -func (e ErrNotFound) Error() string { - return fmt.Sprintf("tuf: file not found: %s", e.File) -} - -func IsNotFound(err error) bool { - _, ok := err.(ErrNotFound) - return ok -} - -type ErrWrongSize struct { - File string - Actual int64 - Expected int64 -} - -func (e ErrWrongSize) Error() string { - return fmt.Sprintf("tuf: unexpected file size: %s (expected %d bytes, got %d bytes)", e.File, e.Expected, e.Actual) -} - -type ErrUnknownTarget struct { - Name string - SnapshotVersion int64 -} - -func (e ErrUnknownTarget) Error() string { - return fmt.Sprintf("tuf: unknown target file: %s with snapshot version %d", e.Name, e.SnapshotVersion) -} - -type ErrMetaTooLarge struct { - Name string - Size int64 - MaxSize int64 -} - -func (e ErrMetaTooLarge) Error() string { - return fmt.Sprintf("tuf: %s size %d bytes greater than maximum %d bytes", e.Name, e.Size, e.MaxSize) -} - -type ErrInvalidURL struct { - URL string -} - -func (e ErrInvalidURL) Error() string { - return fmt.Sprintf("tuf: invalid repository URL %s", e.URL) -} - -type ErrRoleNotInSnapshot struct { - Role string - SnapshotVersion int64 -} - -func (e ErrRoleNotInSnapshot) Error() string { - return fmt.Sprintf("tuf: role %s not in snapshot version %d", e.Role, e.SnapshotVersion) -} diff --git a/client/file_store.go b/client/file_store.go deleted file mode 100644 index 520bbe73..00000000 --- a/client/file_store.go +++ /dev/null @@ -1,90 +0,0 @@ -package client - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/fs" -) - -// FileRemoteStore provides a RemoteStore interface compatible -// implementation that can be used where the RemoteStore is backed by a -// fs.FS. This is useful for example in air-gapped environments where there's no -// possibility to make outbound network connections. -// By having this be a fs.FS instead of directories allows the repository to -// be backed by something that's not persisted to disk. -func NewFileRemoteStore(fsys fs.FS, targetDir string) (*FileRemoteStore, error) { - if fsys == nil { - return nil, errors.New("nil fs.FS") - } - t := targetDir - if t == "" { - t = "targets" - } - // Make sure directory exists - d, err := fsys.Open(t) - if err != nil { - return nil, fmt.Errorf("failed to open targets directory %s: %w", t, err) - } - fi, err := d.Stat() - if err != nil { - return nil, fmt.Errorf("failed to stat targets directory %s: %w", t, err) - } - if !fi.IsDir() { - return nil, fmt.Errorf("targets directory not a directory %s", t) - } - - fsysT, err := fs.Sub(fsys, t) - if err != nil { - return nil, fmt.Errorf("failed to open targets directory %s: %w", t, err) - } - return &FileRemoteStore{fsys: fsys, targetDir: fsysT}, nil -} - -type FileRemoteStore struct { - // Meta directory fs - fsys fs.FS - // Target directory fs. - targetDir fs.FS - // In order to be able to make write operations (create, delete) we can't - // use fs.FS for it (it's read only), so we have to know the underlying - // directory that add/delete test methods can use. This is only necessary - // for testing purposes. - testDir string -} - -func (f *FileRemoteStore) GetMeta(name string) (io.ReadCloser, int64, error) { - rc, b, err := f.get(f.fsys, name) - return handleErrors(name, rc, b, err) -} - -func (f *FileRemoteStore) GetTarget(name string) (io.ReadCloser, int64, error) { - rc, b, err := f.get(f.targetDir, name) - return handleErrors(name, rc, b, err) -} - -func (f *FileRemoteStore) get(fsys fs.FS, s string) (io.ReadCloser, int64, error) { - if !fs.ValidPath(s) { - return nil, 0, fmt.Errorf("invalid path %s", s) - } - - b, err := fs.ReadFile(fsys, s) - if err != nil { - return nil, -1, err - } - return io.NopCloser(bytes.NewReader(b)), int64(len(b)), nil -} - -// handleErrors converts NotFound errors to something that TUF knows how to -// handle properly. For example, when looking for n+1 root files, this is a -// signal that it will stop looking. -func handleErrors(name string, rc io.ReadCloser, b int64, err error) (io.ReadCloser, int64, error) { - if err == nil { - return rc, b, err - } - if errors.Is(err, fs.ErrNotExist) { - return rc, b, ErrNotFound{name} - } - return rc, b, err -} diff --git a/client/file_store_test.go b/client/file_store_test.go deleted file mode 100644 index 95e02e38..00000000 --- a/client/file_store_test.go +++ /dev/null @@ -1,197 +0,0 @@ -package client - -import ( - "bytes" - "io" - "io/fs" - "os" - "path/filepath" - "runtime" - "strings" - "testing" -) - -const targetsDir = "targets" - -func TestCreates(t *testing.T) { - runningWindows := false - if runtime.GOOS == "windows" { - runningWindows = true - } - tmpDir := t.TempDir() - defer os.RemoveAll(tmpDir) - dir := filepath.Join(tmpDir, "repository") - os.Mkdir(dir, os.ModePerm) - os.Mkdir(filepath.Join(dir, "targets"), os.ModePerm) - if !runningWindows { - targetDirThatIsFile := filepath.Join(dir, "targets-that-isfile") - f, err := os.Create(targetDirThatIsFile) - if err != nil { - t.Fatalf("failed to create file: %s: %v", targetDirThatIsFile, err) - } - defer f.Close() - } - t.Cleanup(func() { rmrf(dir, t.Logf) }) - t.Cleanup(func() { rmrf(tmpDir, t.Logf) }) - - tests := []struct { - name string - fsys fs.FS - td string - wantErr string - doNotRunOnWindows bool - }{{ - name: "nil, error", - wantErr: "nil fs.FS", - }, { - name: "missing targets directory", - fsys: os.DirFS(dir), - td: "targets-not-there", - wantErr: "failed to open targets directory targets-not-there", - }, { - name: "targets directory is not a file", - fsys: os.DirFS(dir), - td: "targets-that-isfile", - wantErr: "targets directory not a directory targets-that-isfile", - doNotRunOnWindows: true, - }, { - name: "works, explicit targets", - fsys: os.DirFS(dir), - td: "targets", - }, { - name: "works, explicit targets", - fsys: os.DirFS(dir), - td: "targets", - }} - - for _, tc := range tests { - if tc.doNotRunOnWindows { - t.Skip("Can't figure out how to make this work on windows") - } - _, err := NewFileRemoteStore(tc.fsys, tc.td) - if tc.wantErr != "" && err == nil { - t.Errorf("%q wanted error %s, got none", tc.name, tc.wantErr) - } else if tc.wantErr == "" && err != nil { - t.Errorf("%q did not want error, got: %v", tc.name, err) - } else if err != nil && !strings.Contains(err.Error(), tc.wantErr) { - t.Errorf("%q wanted error %s but got: %s", tc.name, tc.wantErr, err) - } - } -} - -func TestBasicOps(t *testing.T) { - metas := map[string][]byte{ - "root.json": []byte("root"), - "snapshot.json": []byte("snapshot"), - "timestamp": []byte("timestamp"), - } - - fsys, dir, err := newTestFileStoreFS() - if err != nil { - t.Fatalf("Failed to create test FileStore") - } - t.Cleanup(func() { rmrf(dir, t.Logf) }) - defer os.RemoveAll(dir) - - // Add targets and metas and check them. - for k, v := range targetFiles { - if err := fsys.addTarget(k, v); err != nil { - t.Errorf("failed to add target %s: %v", k, err) - } - rc, size, err := fsys.GetTarget(k) - if err != nil { - t.Errorf("failed to GetTarget %s: %v", k, err) - } - if size != int64(len(v)) { - t.Errorf("unexpected size returned for GetTarget: %s want %d got %d", k, len(v), size) - } - got, err := io.ReadAll(rc) - if err != nil { - t.Errorf("failed to ReadAll returned ReacCloser %s: %v", k, err) - } - if !bytes.Equal(v, got) { - t.Errorf("Read unexpected bytes, want: %s got: %s", string(k), string(got)) - } - } - for k, v := range metas { - if err := fsys.addMeta(k, v); err != nil { - t.Errorf("failed to add meta %s %v", k, err) - } - rc, size, err := fsys.GetMeta(k) - if err != nil { - t.Errorf("failed to GetMeta %s: %v", k, err) - } - if size != int64(len(v)) { - t.Errorf("unexpected size returned for GetMeta: %s want %d got %d", k, len(v), size) - } - got, err := io.ReadAll(rc) - if err != nil { - t.Errorf("failed to ReadAll returned ReacCloser %s: %v", k, err) - } - if !bytes.Equal(v, got) { - t.Errorf("Read unexpected bytes, want: %s got: %s", string(k), string(got)) - } - } -} - -// Test helper methods -func (f *FileRemoteStore) addMeta(name string, data []byte) error { - return os.WriteFile(filepath.Join(f.testDir, name), data, os.ModePerm) -} - -func (f *FileRemoteStore) addTarget(name string, data []byte) error { - fname := filepath.Join(f.testDir, targetsDir, name) - err := os.WriteFile(fname, data, os.ModePerm) - return err -} - -func (f *FileRemoteStore) deleteMeta(name string) error { - return os.Remove(filepath.Join(f.testDir, name)) -} - -func (f *FileRemoteStore) deleteTarget(name string) error { - return os.Remove(filepath.Join(f.testDir, targetsDir, name)) -} - -func newTestFileStoreFS() (*FileRemoteStore, string, error) { - tmpDir := os.TempDir() - tufDir := filepath.Join(tmpDir, "tuf-file-store-test") - // Clean it in case there is cruft left around - os.RemoveAll(tufDir) - os.Mkdir(tufDir, os.ModePerm) - os.Mkdir(filepath.Join(tufDir, targetsDir), os.ModePerm) - fs, err := NewFileRemoteStore(os.DirFS(tufDir), targetsDir) - fs.testDir = tufDir - return fs, tufDir, err -} - -// goes through a dir and removes everything. This is to work around: -// https://github.com/golang/go/issues/51442 -func rmrf(dir string, logger func(string, ...interface{})) { - if dir == "" { - logger("cowardly refusing to remove a not fully specified fir") - return - } - logger("Removing %s", dir) - d, err := os.Open(dir) - if err != nil { - logger("Failed to open %s: %v", dir, err) - return - } - defer d.Close() - // -1 means give me everything, we don't have that many entries, so - // fine here. - names, err := d.Readdirnames(-1) - if err != nil { - logger("Failed to ReaddirNames %s: %v", dir, err) - return - } - for _, name := range names { - toRemove := filepath.Join(dir, name) - err = os.RemoveAll(toRemove) - if err != nil { - logger("Failed to RemoveAll %s: %v", toRemove, err) - // Do not want to fail here, just keep doing the best we can - } - } -} diff --git a/client/filejsonstore/filejsonstore.go b/client/filejsonstore/filejsonstore.go deleted file mode 100644 index 41277c88..00000000 --- a/client/filejsonstore/filejsonstore.go +++ /dev/null @@ -1,148 +0,0 @@ -package client - -import ( - "encoding/json" - "errors" - "fmt" - "io/fs" - "os" - "path/filepath" - "sync" - - "github.com/theupdateframework/go-tuf/client" - "github.com/theupdateframework/go-tuf/internal/fsutil" - "github.com/theupdateframework/go-tuf/util" -) - -const ( - // user: rwx - // group: r-x - // other: --- - dirCreateMode = os.FileMode(0750) - // user: rw- - // group: r-- - // other: --- - fileCreateMode = os.FileMode(0640) -) - -// FileJSONStore represents a local metadata cache relying on raw JSON files -// as retrieved from the remote repository. -type FileJSONStore struct { - mtx sync.RWMutex - baseDir string -} - -var _ client.LocalStore = (*FileJSONStore)(nil) - -// NewFileJSONStore returns a new metadata cache, implemented using raw JSON -// files, stored in a directory provided by the client. -// If the provided directory does not exist on disk, it will be created. -// The provided metadata cache is safe for concurrent access. -func NewFileJSONStore(baseDir string) (*FileJSONStore, error) { - f := &FileJSONStore{ - baseDir: baseDir, - } - - // Does the directory exist? - fi, err := os.Stat(baseDir) - if err != nil { - if errors.Is(err, fs.ErrNotExist) { - // Create the directory - if err = os.MkdirAll(baseDir, dirCreateMode); err != nil { - return nil, fmt.Errorf("error creating directory for metadata cache: %w", err) - } - } else { - return nil, fmt.Errorf("error getting FileInfo for %s: %w", baseDir, err) - } - } else { - // Verify that it is a directory - if !fi.IsDir() { - return nil, fmt.Errorf("can not open %s, not a directory", baseDir) - } - // Verify file mode is not too permissive. - if err = fsutil.EnsureMaxPermissions(fi, dirCreateMode); err != nil { - return nil, err - } - } - - return f, nil -} - -// GetMeta returns the currently cached set of metadata files. -func (f *FileJSONStore) GetMeta() (map[string]json.RawMessage, error) { - f.mtx.RLock() - defer f.mtx.RUnlock() - - names, err := os.ReadDir(f.baseDir) - if err != nil { - return nil, fmt.Errorf("error reading directory %s: %w", f.baseDir, err) - } - - meta := map[string]json.RawMessage{} - for _, name := range names { - ok, err := fsutil.IsMetaFile(name) - if err != nil { - return nil, err - } - if !ok { - continue - } - - // Verify permissions - info, err := name.Info() - if err != nil { - return nil, fmt.Errorf("error retrieving FileInfo for %s: %w", name.Name(), err) - } - if err = fsutil.EnsureMaxPermissions(info, fileCreateMode); err != nil { - return nil, err - } - - p := filepath.Join(f.baseDir, name.Name()) - b, err := os.ReadFile(p) - if err != nil { - return nil, fmt.Errorf("error reading file %s: %w", name.Name(), err) - } - meta[name.Name()] = b - } - - return meta, nil -} - -// SetMeta stores a metadata file in the cache. If the metadata file exist, -// it will be overwritten. -func (f *FileJSONStore) SetMeta(name string, meta json.RawMessage) error { - f.mtx.Lock() - defer f.mtx.Unlock() - - if filepath.Ext(name) != ".json" { - return fmt.Errorf("file %s is not a JSON file", name) - } - - p := filepath.Join(f.baseDir, name) - err := util.AtomicallyWriteFile(p, meta, fileCreateMode) - return err -} - -// DeleteMeta deletes a metadata file from the cache. -// If the file does not exist, an *os.PathError is returned. -func (f *FileJSONStore) DeleteMeta(name string) error { - f.mtx.Lock() - defer f.mtx.Unlock() - - if filepath.Ext(name) != ".json" { - return fmt.Errorf("file %s is not a JSON file", name) - } - - p := filepath.Join(f.baseDir, name) - err := os.Remove(p) - if err == nil { - return nil - } - - return fmt.Errorf("error deleting file %s: %w", name, err) -} - -// Close closes the metadata cache. This is a no-op. -func (f *FileJSONStore) Close() error { - return nil -} diff --git a/client/filejsonstore/filejsonstore_test.go b/client/filejsonstore/filejsonstore_test.go deleted file mode 100644 index 6d00e046..00000000 --- a/client/filejsonstore/filejsonstore_test.go +++ /dev/null @@ -1,194 +0,0 @@ -package client - -import ( - "encoding/json" - "errors" - "os" - "path/filepath" - "strings" - "testing" - - "gopkg.in/check.v1" -) - -type FileJSONStoreSuite struct{} - -var _ = check.Suite(&FileJSONStoreSuite{}) - -// Hook up gocheck into the "go test" runner -func Test(t *testing.T) { check.TestingT(t) } - -func (FileJSONStoreSuite) TestNewOk(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - - // Assert path does not exist - fi, err := os.Stat(p) - c.Assert(fi, check.IsNil) - c.Assert(errors.Is(err, os.ErrNotExist), check.Equals, true) - - // Create implementation - s, err := NewFileJSONStore(p) - c.Assert(err, check.IsNil) - c.Assert(s, check.NotNil) - - // Assert path does exist and is a directory - fi, err = os.Stat(p) - c.Assert(fi, check.NotNil) - c.Assert(err, check.IsNil) - c.Assert(fi.IsDir(), check.Equals, true) -} - -func (FileJSONStoreSuite) TestNewFileExists(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - - // Create an empty file - f, err := os.Create(p) - c.Assert(err, check.IsNil) - f.Close() - - // Create implementation - s, err := NewFileJSONStore(p) - c.Assert(s, check.IsNil) - c.Assert(err, check.NotNil) - found := strings.Contains(err.Error(), ", not a directory") - c.Assert(found, check.Equals, true) -} - -func (FileJSONStoreSuite) TestNewDirectoryExists(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - - err := os.Mkdir(p, 0750) - c.Assert(err, check.IsNil) - - // Create implementation - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) -} - -func (FileJSONStoreSuite) TestGetMetaEmpty(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(err, check.IsNil) - - md, err := s.GetMeta() - c.Assert(err, check.IsNil) - c.Assert(md, check.HasLen, 0) -} - -func (FileJSONStoreSuite) TestGetNoDirectory(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(err, check.IsNil) - - err = os.Remove(p) - c.Assert(err, check.IsNil) - - md, err := s.GetMeta() - c.Assert(md, check.IsNil) - c.Assert(err, check.NotNil) -} - -func (FileJSONStoreSuite) TestMetadataOperations(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(err, check.IsNil) - - expected := map[string]json.RawMessage{ - "file1.json": []byte{0xf1, 0xe1, 0xd1}, - "file2.json": []byte{0xf2, 0xe2, 0xd2}, - "file3.json": []byte{0xf3, 0xe3, 0xd3}, - } - - for k, v := range expected { - err := s.SetMeta(k, v) - c.Assert(err, check.IsNil) - } - - md, err := s.GetMeta() - c.Assert(err, check.IsNil) - c.Assert(md, check.HasLen, 3) - c.Assert(md, check.DeepEquals, expected) - - // Delete all items - count := 3 - for k := range expected { - err = s.DeleteMeta(k) - c.Assert(err, check.IsNil) - - md, err := s.GetMeta() - c.Assert(err, check.IsNil) - - count-- - c.Assert(md, check.HasLen, count) - } - - md, err = s.GetMeta() - c.Assert(err, check.IsNil) - c.Assert(md, check.HasLen, 0) -} - -func (FileJSONStoreSuite) TestGetNoJSON(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) - - // Create a file which does not end with '.json' - fp := filepath.Join(p, "meta.xml") - err = os.WriteFile(fp, []byte{}, 0644) - c.Assert(err, check.IsNil) - - md, err := s.GetMeta() - c.Assert(err, check.IsNil) - c.Assert(md, check.HasLen, 0) -} - -func (FileJSONStoreSuite) TestNoJSON(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) - - files := []string{ - "file.xml", - "file", - "", - } - for _, f := range files { - err := s.SetMeta(f, []byte{}) - c.Assert(err, check.ErrorMatches, "file.*is not a JSON file") - } -} - -func (FileJSONStoreSuite) TestClose(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) - - err = s.Close() - c.Assert(err, check.IsNil) -} - -func (FileJSONStoreSuite) TestDelete(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) - - err = s.DeleteMeta("not_json.yml") - c.Assert(err, check.ErrorMatches, "file not_json\\.yml is not a JSON file") - err = s.DeleteMeta("non_existing.json") - c.Assert(errors.Is(err, os.ErrNotExist), check.Equals, true) -} diff --git a/client/filejsonstore/perm_test.go b/client/filejsonstore/perm_test.go deleted file mode 100644 index cda58c43..00000000 --- a/client/filejsonstore/perm_test.go +++ /dev/null @@ -1,54 +0,0 @@ -//go:build !windows -// +build !windows - -package client - -import ( - "os" - "path/filepath" - - "gopkg.in/check.v1" -) - -func (FileJSONStoreSuite) TestNewDirectoryExistsWrongPerm(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - - err := os.Mkdir(p, 0750) - c.Assert(err, check.IsNil) - - // Modify the directory permission and try again - err = os.Chmod(p, 0751) - c.Assert(err, check.IsNil) - s, err := NewFileJSONStore(p) - c.Assert(s, check.IsNil) - c.Assert(err, check.ErrorMatches, "permission bits for file tuf_raw.db failed.*") -} - -func (FileJSONStoreSuite) TestNewNoCreate(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - - // Clear the write bit for the user - err := os.Chmod(tmp, 0551) - c.Assert(err, check.IsNil) - s, err := NewFileJSONStore(p) - c.Assert(s, check.IsNil) - c.Assert(err, check.NotNil) -} - -func (FileJSONStoreSuite) TestGetTooPermissive(c *check.C) { - tmp := c.MkDir() - p := filepath.Join(tmp, "tuf_raw.db") - s, err := NewFileJSONStore(p) - c.Assert(s, check.NotNil) - c.Assert(err, check.IsNil) - - fp := filepath.Join(p, "meta.json") - err = os.WriteFile(fp, []byte{}, 0644) - c.Assert(err, check.IsNil) - - md, err := s.GetMeta() - c.Assert(md, check.IsNil) - c.Assert(err, check.ErrorMatches, "permission bits for file meta.json failed.*") -} diff --git a/client/interop_test.go b/client/interop_test.go deleted file mode 100644 index 1fb4f982..00000000 --- a/client/interop_test.go +++ /dev/null @@ -1,201 +0,0 @@ -package client - -import ( - "bytes" - "fmt" - "io" - "net" - "net/http" - "os" - "path/filepath" - - "github.com/theupdateframework/go-tuf/util" - . "gopkg.in/check.v1" - - goTufGenerator "github.com/theupdateframework/go-tuf/client/testdata/go-tuf/generator" -) - -type InteropSuite struct{} - -var _ = Suite(&InteropSuite{}) - -func (InteropSuite) TestGoClientIdentityConsistentSnapshotFalse(c *C) { - checkGoIdentity(c, false) -} - -func (InteropSuite) TestGoClientIdentityConsistentSnapshotTrue(c *C) { - checkGoIdentity(c, true) -} - -func checkGoIdentity(c *C, consistentSnapshot bool) { - cwd, err := os.Getwd() - c.Assert(err, IsNil) - testDataDir := filepath.Join(cwd, "testdata") - - tempDir, err := os.MkdirTemp("", "") - c.Assert(err, IsNil) - defer os.RemoveAll(tempDir) - - // Generate the metadata and compute hashes for all the files. - goTufGenerator.Generate(tempDir, filepath.Join(testDataDir, "keys.json"), consistentSnapshot) - hashes := computeHashes(c, tempDir) - - snapshotDir := filepath.Join(testDataDir, "go-tuf", fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot)) - snapshotHashes := computeHashes(c, snapshotDir) - - c.Assert(hashes, DeepEquals, snapshotHashes, Commentf("metadata out of date, regenerate by running client/testdata/go-tuf/regenerate-metadata.sh")) -} - -func computeHashes(c *C, dir string) map[string]string { - hashes := make(map[string]string) - - err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - - if info.IsDir() { - return nil - } - - bytes, err := os.ReadFile(path) - if err != nil { - return err - } - - path, err = filepath.Rel(dir, path) - if err != nil { - return err - } - hashes[path] = string(bytes) - - return nil - }) - c.Assert(err, IsNil) - - return hashes -} - -func (InteropSuite) TestGoClientCompatibility(c *C) { - names := []string{ - "go-tuf", - "go-tuf-transition-M3", - "go-tuf-transition-M4", - } - options := &HTTPRemoteOptions{MetadataPath: "", TargetsPath: "targets"} - - for _, name := range names { - for _, consistentSnapshot := range []bool{false, true} { - t := newTestCase(c, name, consistentSnapshot, options) - t.run(c) - } - } -} - -type testCase struct { - name string - consistentSnapshot bool - options *HTTPRemoteOptions - local LocalStore - targets map[string][]byte - testDir string - testSteps []string -} - -func newTestCase(c *C, name string, consistentSnapshot bool, options *HTTPRemoteOptions) testCase { - cwd, err := os.Getwd() - c.Assert(err, IsNil) - testDir := filepath.Join(cwd, "testdata", name, fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot)) - - dirEntries, err := os.ReadDir(testDir) - c.Assert(err, IsNil) - c.Assert(dirEntries, Not(HasLen), 0) - - testSteps := []string{} - for _, dirEntry := range dirEntries { - if dirEntry.IsDir() { - testSteps = append(testSteps, dirEntry.Name()) - } - } - - return testCase{ - name: name, - consistentSnapshot: consistentSnapshot, - options: options, - local: MemoryLocalStore(), - targets: make(map[string][]byte), - testDir: testDir, - testSteps: testSteps, - } -} - -func (t *testCase) run(c *C) { - c.Logf("test case: %s consistent-snapshot: %t", t.name, t.consistentSnapshot) - - for _, stepName := range t.testSteps { - t.runStep(c, stepName) - } -} - -func (t *testCase) runStep(c *C, stepName string) { - c.Logf("step: %s", stepName) - - addr, cleanup := startFileServer(c, t.testDir) - defer cleanup() - - remote, err := HTTPRemoteStore(fmt.Sprintf("http://%s/%s/repository", addr, stepName), t.options, nil) - c.Assert(err, IsNil) - - client := NewClient(t.local, remote) - // initiate a client with the root metadata - ioReader, _, err := remote.GetMeta("root.json") - c.Assert(err, IsNil) - rootJsonBytes, err := io.ReadAll(ioReader) - c.Assert(err, IsNil) - c.Assert(client.Init(rootJsonBytes), IsNil) - - // check update returns the correct updated targets - files, err := client.Update() - c.Assert(err, IsNil) - if stepName != "2" { - // The rest of the test cases add one target file at a time for each cycle, so this is why we expect that - // the number of updated targets returned by Update() should equals to 1 - c.Assert(files, HasLen, 1) - } else { - // The following test case (#2) verifies that when a targets key has been rotated in the latest 3.root.json, - // the local targets.json meta is indeed ignored since it's signed with a key that has been now changed. - // The reason we check for 3 here is that the updated targets corresponds to all target files listed in the - // targets.json for test case #2 - c.Assert(files, HasLen, 3) - } - targetName := stepName - t.targets[targetName] = []byte(targetName) - - file, ok := files[targetName] - if !ok { - c.Fatalf("expected updated targets to contain %s", targetName) - } - - data := t.targets[targetName] - meta, err := util.GenerateTargetFileMeta(bytes.NewReader(data), file.HashAlgorithms()...) - c.Assert(err, IsNil) - c.Assert(util.TargetFileMetaEqual(file, meta), IsNil) - - // download the files and check they have the correct content - for name, data := range t.targets { - for _, prefix := range []string{"", "/"} { - var dest testDestination - c.Assert(client.Download(prefix+name, &dest), IsNil) - c.Assert(dest.deleted, Equals, false) - c.Assert(dest.String(), Equals, string(data)) - } - } -} - -func startFileServer(c *C, dir string) (string, func() error) { - l, err := net.Listen("tcp", "127.0.0.1:0") - c.Assert(err, IsNil) - addr := l.Addr().String() - go http.Serve(l, http.FileServer(http.Dir(dir))) - return addr, l.Close -} diff --git a/client/leveldbstore/leveldbstore.go b/client/leveldbstore/leveldbstore.go deleted file mode 100644 index d9390494..00000000 --- a/client/leveldbstore/leveldbstore.go +++ /dev/null @@ -1,60 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/syndtr/goleveldb/leveldb" - "github.com/syndtr/goleveldb/leveldb/errors" - "github.com/syndtr/goleveldb/leveldb/storage" - - tuf_client "github.com/theupdateframework/go-tuf/client" -) - -func FileLocalStore(path string) (tuf_client.LocalStore, error) { - fd, err := storage.OpenFile(path, false) - if err != nil { - return nil, err - } - - db, err := leveldb.Open(fd, nil) - if err != nil && errors.IsCorrupted(err) { - db, err = leveldb.Recover(fd, nil) - } - - return &fileLocalStore{fd: fd, db: db}, err -} - -type fileLocalStore struct { - fd storage.Storage - db *leveldb.DB -} - -func (f *fileLocalStore) GetMeta() (map[string]json.RawMessage, error) { - meta := make(map[string]json.RawMessage) - db_itr := f.db.NewIterator(nil, nil) - for db_itr.Next() { - vcopy := make([]byte, len(db_itr.Value())) - copy(vcopy, db_itr.Value()) - meta[string(db_itr.Key())] = vcopy - } - db_itr.Release() - return meta, db_itr.Error() -} - -func (f *fileLocalStore) SetMeta(name string, meta json.RawMessage) error { - return f.db.Put([]byte(name), []byte(meta), nil) -} - -func (f *fileLocalStore) DeleteMeta(name string) error { - return f.db.Delete([]byte(name), nil) -} - -func (f *fileLocalStore) Close() error { - // Always close both before returning any errors - dbCloseErr := f.db.Close() - fdCloseErr := f.fd.Close() - if dbCloseErr != nil { - return dbCloseErr - } - return fdCloseErr -} diff --git a/client/leveldbstore/leveldbstore_test.go b/client/leveldbstore/leveldbstore_test.go deleted file mode 100644 index 5d29fff5..00000000 --- a/client/leveldbstore/leveldbstore_test.go +++ /dev/null @@ -1,123 +0,0 @@ -package client - -import ( - "encoding/json" - "path/filepath" - "testing" - - . "gopkg.in/check.v1" - "os" -) - -type LocalStoreSuite struct{} - -var _ = Suite(&LocalStoreSuite{}) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -func (LocalStoreSuite) TestFileLocalStore(c *C) { - tmp := c.MkDir() - path := filepath.Join(tmp, "tuf.db") - store, err := FileLocalStore(path) - c.Assert(err, IsNil) - defer store.Close() - - type meta map[string]json.RawMessage - - assertGet := func(expected meta) { - actual, err := store.GetMeta() - c.Assert(err, IsNil) - c.Assert(meta(actual), DeepEquals, expected) - } - - // initial GetMeta should return empty meta - assertGet(meta{}) - - // SetMeta should persist - rootJSON := []byte(`{"_type":"Root"}`) - c.Assert(store.SetMeta("root.json", rootJSON), IsNil) - assertGet(meta{"root.json": rootJSON}) - - // SetMeta should add to existing meta - targetsJSON := []byte(`{"_type":"Target"}`) - c.Assert(store.SetMeta("targets.json", targetsJSON), IsNil) - assertGet(meta{"root.json": rootJSON, "targets.json": targetsJSON}) - - // a new store should get the same meta - c.Assert(store.Close(), IsNil) - store, err = FileLocalStore(path) - c.Assert(err, IsNil) - defer func() { - c.Assert(store.Close(), IsNil) - }() - assertGet(meta{"root.json": rootJSON, "targets.json": targetsJSON}) -} - -func (LocalStoreSuite) TestDeleteMeta(c *C) { - tmp := c.MkDir() - path := filepath.Join(tmp, "tuf.db") - store, err := FileLocalStore(path) - c.Assert(err, IsNil) - - type meta map[string]json.RawMessage - - assertGet := func(expected meta) { - actual, err := store.GetMeta() - c.Assert(err, IsNil) - c.Assert(meta(actual), DeepEquals, expected) - } - - // initial GetMeta should return empty meta - assertGet(meta{}) - - // SetMeta should persist - rootJSON := []byte(`{"_type":"Root"}`) - c.Assert(store.SetMeta("root.json", rootJSON), IsNil) - assertGet(meta{"root.json": rootJSON}) - - store.DeleteMeta("root.json") - m, _ := store.GetMeta() - if _, ok := m["root.json"]; ok { - c.Fatalf("Metadata is not deleted!") - } -} - -func (LocalStoreSuite) TestCorruptManifest(c *C) { - tmp := c.MkDir() - path := filepath.Join(tmp, "tuf.db") - - store, err := FileLocalStore(path) - c.Assert(err, IsNil) - - // now break the manifest file - err = os.Truncate(filepath.Join(path, "MANIFEST-000000"), 1) - c.Assert(err, IsNil) - err = store.Close() - c.Assert(err, IsNil) - - store, err = FileLocalStore(path) - c.Assert(err, IsNil) - - type meta map[string]json.RawMessage - - assertGet := func(expected meta) { - actual, err := store.GetMeta() - c.Assert(err, IsNil) - c.Assert(meta(actual), DeepEquals, expected) - } - - // initial GetMeta should return empty meta - assertGet(meta{}) - - // SetMeta should persist - rootJSON := []byte(`{"_type":"Root"}`) - c.Assert(store.SetMeta("root.json", rootJSON), IsNil) - assertGet(meta{"root.json": rootJSON}) - - store.DeleteMeta("root.json") - m, _ := store.GetMeta() - if _, ok := m["root.json"]; ok { - c.Fatalf("Metadata is not deleted!") - } -} diff --git a/client/local_store.go b/client/local_store.go deleted file mode 100644 index bb9421f5..00000000 --- a/client/local_store.go +++ /dev/null @@ -1,29 +0,0 @@ -package client - -import ( - "encoding/json" -) - -func MemoryLocalStore() LocalStore { - return make(memoryLocalStore) -} - -type memoryLocalStore map[string]json.RawMessage - -func (m memoryLocalStore) GetMeta() (map[string]json.RawMessage, error) { - return m, nil -} - -func (m memoryLocalStore) SetMeta(name string, meta json.RawMessage) error { - m[name] = meta - return nil -} - -func (m memoryLocalStore) DeleteMeta(name string) error { - delete(m, name) - return nil -} - -func (m memoryLocalStore) Close() error { - return nil -} diff --git a/client/local_store_test.go b/client/local_store_test.go deleted file mode 100644 index e2c1dfdb..00000000 --- a/client/local_store_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package client - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDeleteMeta(t *testing.T) { - l := MemoryLocalStore() - defer func() { - assert.Equal(t, nil, l.Close()) - }() - assert.Equal(t, l.SetMeta("root.json", []byte(` - { - "signed": {}, - "signatures": {}, - } - `)), nil) - m, err := l.GetMeta() - assert.Equal(t, err, nil) - if _, ok := m["root.json"]; !ok { - t.Fatalf("Expected metadata not found!") - } - l.DeleteMeta("root.json") - if _, ok := m["root.json"]; ok { - t.Fatalf("Metadata is not deleted!") - } -} diff --git a/client/python_interop/python_interop_test.go b/client/python_interop/python_interop_test.go deleted file mode 100644 index d29e0ac8..00000000 --- a/client/python_interop/python_interop_test.go +++ /dev/null @@ -1,236 +0,0 @@ -package client - -import ( - "bytes" - "fmt" - "net" - "net/http" - "net/url" - "os" - "os/exec" - "path/filepath" - "testing" - - tuf "github.com/theupdateframework/go-tuf" - client "github.com/theupdateframework/go-tuf/client" - "github.com/theupdateframework/go-tuf/util" - . "gopkg.in/check.v1" -) - -type InteropSuite struct{} - -var _ = Suite(&InteropSuite{}) - -var pythonTargets = map[string][]byte{ - "file1.txt": []byte("file1.txt"), - "dir/file2.txt": []byte("file2.txt"), -} - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type testDestination struct { - bytes.Buffer - deleted bool -} - -func (t *testDestination) Delete() error { - t.deleted = true - return nil -} - -func (InteropSuite) TestGoClientPythonGenerated(c *C) { - // start file server - cwd, err := os.Getwd() - c.Assert(err, IsNil) - testDataDir := filepath.Join(cwd, "testdata", "python-tuf-v3.0.0") - addr, cleanup := startFileServer(c, testDataDir) - defer cleanup() - - for _, dir := range []string{"without-consistent-snapshot", "with-consistent-snapshot"} { - remote, err := client.HTTPRemoteStore( - fmt.Sprintf("http://%s/%s/repository", addr, dir), - &client.HTTPRemoteOptions{MetadataPath: "metadata", TargetsPath: "targets"}, - nil, - ) - c.Assert(err, IsNil) - - // initiate a client with the root metadata - client := client.NewClient(client.MemoryLocalStore(), remote) - rootJSON, err := os.ReadFile(filepath.Join(testDataDir, dir, "repository", "metadata", "1.root.json")) - c.Assert(err, IsNil) - c.Assert(client.Init(rootJSON), IsNil) - - // check update returns the correct updated targets - files, err := client.Update() - c.Assert(err, IsNil) - c.Assert(files, HasLen, len(pythonTargets)) - for name, data := range pythonTargets { - file, ok := files[name] - if !ok { - c.Fatalf("expected updated targets to contain %s", name) - } - meta, err := util.GenerateTargetFileMeta(bytes.NewReader(data), file.HashAlgorithms()...) - c.Assert(err, IsNil) - c.Assert(util.TargetFileMetaEqual(file, meta), IsNil) - } - - // download the files and check they have the correct content - for name, data := range pythonTargets { - var dest testDestination - c.Assert(client.Download(name, &dest), IsNil) - c.Assert(dest.deleted, Equals, false) - c.Assert(dest.String(), Equals, string(data)) - } - } -} - -func generateRepoFS(c *C, dir string, files map[string][]byte, - consistentSnapshot bool) *tuf.Repo { - repo, err := tuf.NewRepo(tuf.FileSystemStore(dir, nil)) - c.Assert(err, IsNil) - if !consistentSnapshot { - c.Assert(repo.Init(false), IsNil) - } - for _, role := range []string{"root", "snapshot", "targets", "timestamp"} { - _, err := repo.GenKey(role) - c.Assert(err, IsNil) - } - for file, data := range files { - path := filepath.Join(dir, "staged", "targets", file) - c.Assert(os.MkdirAll(filepath.Dir(path), 0755), IsNil) - c.Assert(os.WriteFile(path, data, 0644), IsNil) - c.Assert(repo.AddTarget(file, nil), IsNil) - } - c.Assert(repo.Snapshot(), IsNil) - c.Assert(repo.Timestamp(), IsNil) - c.Assert(repo.Commit(), IsNil) - return repo -} - -func refreshRepo(c *C, repo *tuf.Repo) { - c.Assert(repo.Snapshot(), IsNil) - c.Assert(repo.Timestamp(), IsNil) - c.Assert(repo.Commit(), IsNil) -} - -func (InteropSuite) TestPythonClientGoGenerated(c *C) { - // clone the Python client if necessary - cwd, err := os.Getwd() - c.Assert(err, IsNil) - - files := map[string][]byte{ - "foo.txt": []byte("foo"), - "bar/baz.txt": []byte("baz"), - } - - for _, consistentSnapshot := range []bool{false, true} { - // generate repository - tmp := c.MkDir() - // start file server - addr, cleanup := startFileServer(c, tmp) - defer cleanup() - name := fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot) - dir := filepath.Join(tmp, name) - generateRepoFS(c, dir, files, consistentSnapshot) - - // create initial files for Python client - clientDir := filepath.Join(dir, "client") - currDir := filepath.Join(clientDir, "tufrepo", "metadata", "current") - prevDir := filepath.Join(clientDir, "tufrepo", "metadata", "previous") - c.Assert(os.MkdirAll(currDir, 0755), IsNil) - c.Assert(os.MkdirAll(prevDir, 0755), IsNil) - rootJSON, err := os.ReadFile(filepath.Join(dir, "repository", "1.root.json")) - c.Assert(err, IsNil) - c.Assert(os.WriteFile(filepath.Join(currDir, "root.json"), rootJSON, 0644), IsNil) - - args := []string{ - filepath.Join(cwd, "testdata", "python-tuf-v3.0.0", "client.py"), - "--repo=http://" + addr + "/" + name, - } - for path := range files { - args = append(args, path) - } - - // run Python client update - cmd := exec.Command("python", args...) - cmd.Dir = clientDir - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - c.Assert(cmd.Run(), IsNil) - - // check the target files got downloaded - for path, expected := range files { - actual, err := os.ReadFile(filepath.Join(clientDir, "tuftargets", url.QueryEscape(path))) - c.Assert(err, IsNil) - c.Assert(actual, DeepEquals, expected) - } - } -} - -// This is a regression test for issue -// https://github.com/theupdateframework/go-tuf/issues/402 -func (InteropSuite) TestPythonClientGoGeneratedNullDelegations(c *C) { - // clone the Python client if necessary - cwd, err := os.Getwd() - c.Assert(err, IsNil) - - files := map[string][]byte{ - "foo.txt": []byte("foo"), - "bar/baz.txt": []byte("baz"), - } - - for _, consistentSnapshot := range []bool{false, true} { - // generate repository - tmp := c.MkDir() - // start file server - addr, cleanup := startFileServer(c, tmp) - defer cleanup() - name := fmt.Sprintf("consistent-snapshot-delegations-%t", consistentSnapshot) - dir := filepath.Join(tmp, name) - repo := generateRepoFS(c, dir, files, consistentSnapshot) - // "Reset" top-level targets delegations and re-sign - c.Assert(repo.ResetTargetsDelegations("targets"), IsNil) - refreshRepo(c, repo) - - // create initial files for Python client - clientDir := filepath.Join(dir, "client") - currDir := filepath.Join(clientDir, "tufrepo", "metadata", "current") - prevDir := filepath.Join(clientDir, "tufrepo", "metadata", "previous") - c.Assert(os.MkdirAll(currDir, 0755), IsNil) - c.Assert(os.MkdirAll(prevDir, 0755), IsNil) - rootJSON, err := os.ReadFile(filepath.Join(dir, "repository", "1.root.json")) - c.Assert(err, IsNil) - c.Assert(os.WriteFile(filepath.Join(currDir, "root.json"), rootJSON, 0644), IsNil) - - args := []string{ - filepath.Join(cwd, "testdata", "python-tuf-v3.0.0", "client.py"), - "--repo=http://" + addr + "/" + name, - } - for path := range files { - args = append(args, path) - } - - // run Python client update - cmd := exec.Command("python", args...) - cmd.Dir = clientDir - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - c.Assert(cmd.Run(), IsNil) - - // check the target files got downloaded - for path, expected := range files { - actual, err := os.ReadFile(filepath.Join(clientDir, "tuftargets", url.QueryEscape(path))) - c.Assert(err, IsNil) - c.Assert(actual, DeepEquals, expected) - } - } -} - -func startFileServer(c *C, dir string) (string, func() error) { - l, err := net.Listen("tcp", "127.0.0.1:0") - c.Assert(err, IsNil) - addr := l.Addr().String() - go http.Serve(l, http.FileServer(http.Dir(dir))) - return addr, l.Close -} diff --git a/client/python_interop/testdata/LICENSE.txt b/client/python_interop/testdata/LICENSE.txt deleted file mode 100644 index 544f53dc..00000000 --- a/client/python_interop/testdata/LICENSE.txt +++ /dev/null @@ -1,66 +0,0 @@ - This file contains the license for TUF: The Update Framework. - - It also lists license information for components and source - code used by TUF: The Update Framework. - - If you got this file as a part of a larger bundle, - there may be other license terms that you should be aware of. - -=============================================================================== -TUF: The Update Framework is distributed under this license: - -Copyright (c) 2010, Justin Samuel and Justin Cappos. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and/or hardware specification (the β€œWork”) to deal in the Work -without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Work, -and to permit persons to whom the Work is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Work. - -THE WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE WORK OR THE USE OR OTHER -DEALINGS IN THE WORK. -=============================================================================== -Many files are modified from Thandy and are licensed under the -following license: - -Thandy is distributed under this license: - -Copyright (c) 2008, The Tor Project, Inc. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - - * Neither the names of the copyright owners nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -=============================================================================== diff --git a/client/python_interop/testdata/Makefile b/client/python_interop/testdata/Makefile deleted file mode 100644 index 6ba9a642..00000000 --- a/client/python_interop/testdata/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -PYTHON_TUF=python-tuf-v3.0.0 - -all: - docker build -t tuf-gen ./$(PYTHON_TUF) - docker run tuf-gen | tar x -C $(PYTHON_TUF) - -clean: - rm -rf $(PYTHON_TUF)/with{,out}-consistent-snapshot - -.PHONY: all clean diff --git a/client/python_interop/testdata/README.md b/client/python_interop/testdata/README.md deleted file mode 100644 index 011b998f..00000000 --- a/client/python_interop/testdata/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# TUF testdata - -TUF testdata generated by the Python implementation which is used to test that -the Go client is compatible with files generated by the Python repository tool. - -## Generate - -The `generate` directory contains scripts and a Dockerfile for generating the -test data files. - -Run `make` to regenerate the test files: - -``` -$ make clean -rm -rf keystore repository - -$ make -docker build -t tuf-gen ./generate -... -Successfully built ac1fba1d0b3b -docker run tuf-gen | tar x -Files generated: -. -|-- keystore -| |-- root_key -| |-- root_key.pub -| |-- snapshot_key -| |-- snapshot_key.pub -| |-- targets_key -| |-- targets_key.pub -| |-- timestamp_key -| `-- timestamp_key.pub -|-- repository -| |-- metadata -| | |-- root.json -| | |-- snapshot.json -| | |-- targets.json -| | |-- targets.json.gz -| | `-- timestamp.json -| `-- targets -| |-- dir -| | `-- file2.txt -| `-- file1.txt -`-- tuf.log - -5 directories, 16 files -``` diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/Dockerfile b/client/python_interop/testdata/python-tuf-v3.0.0/Dockerfile deleted file mode 100644 index 896820c2..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM python:3.10 - -RUN apt-get update && apt-get install -y libsodium-dev tree -RUN pip install -U pip && pip install 'securesystemslib[crypto,pynacl]==0.28.0' 'tuf==v3.0.0' - -ADD generate.py generate.sh / -CMD /generate.sh diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/client.py b/client/python_interop/testdata/python-tuf-v3.0.0/client.py deleted file mode 100644 index 64fe5397..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/client.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2012 - 2023, New York University and the TUF contributors -# SPDX-License-Identifier: MIT OR Apache-2.0 -# -# A simplified version of client_exmample.py from the Python implementation: -# https://github.com/theupdateframework/python-tuf/blob/v1.0.0/examples/client_example/client_example.py - -import argparse - -from typing import List -from pathlib import Path - -from tuf.ngclient import Updater - - -def update_client(repo: str, targets: List[str]): - metadata_dir = Path("tufrepo/metadata/current") - targets_dir = Path("tuftargets") - targets_dir.mkdir() - updater = Updater( - metadata_dir=str(metadata_dir), - metadata_base_url=f"{repo}/repository/", - target_base_url=f"{repo}/repository/targets/", - target_dir=str(targets_dir), - ) - - updater.refresh() - for target in targets: - info = updater.get_targetinfo(target) - assert not updater.find_cached_target(info) - updater.download_target(info) - - -def parse_arguments(): - parser = argparse.ArgumentParser( - description="Retrieve file from TUF repository.") - - parser.add_argument( - "-r", - "--repo", - type=str, - required=True, - metavar="", - help="Specify the remote repository's URI" - " (e.g., http://www.example.com:8001/tuf/). The client retrieves" - " updates from the remote repository.", - ) - - parser.add_argument( - "targets", - nargs="+", - metavar="", - help="Specify" - " the target files to retrieve from the specified TUF repository.", - ) - - parsed_arguments = parser.parse_args() - return parsed_arguments - - -def main(): - arguments = parse_arguments() - update_client(arguments.repo, arguments.targets) - - -if __name__ == "__main__": - main() diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/generate.py b/client/python_interop/testdata/python-tuf-v3.0.0/generate.py deleted file mode 100755 index e494d18f..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/generate.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python -# -# A script to generate TUF repository files. -# -# A modification of generate.py from the Python implementation: -# https://github.com/theupdateframework/tuf/blob/v0.9.9/tests/repository_data/generate.py -# Updated a bit for the v1.0.0 version: -# https://github.com/theupdateframework/python-tuf/blob/v1.0.0/examples/repo_example/basic_repo.py - -import datetime -import optparse -import shutil - -from pathlib import Path -from typing import Dict - -from securesystemslib.keys import generate_ed25519_key -from securesystemslib.signer import SSlibSigner, SSlibKey -from tuf.api.metadata import ( - Metadata, - MetaFile, - Role, - Root, - Snapshot, - TargetFile, - Targets, - Timestamp, -) -from tuf.api.serialization.json import JSONSerializer - - -SPEC_VERSION = "1.0.19" -PRETTY = JSONSerializer(compact=False) -EXPIRY = datetime.datetime(2030, 1, 1, 0, 0) # Far enough in the future -ROLES = set(("targets", "snapshot", "timestamp", "root")) - - -def make_targets(target_dir: Path, consistent_snapshot: bool) -> Dict[str, TargetFile]: - targets = {} - for target in (Path("file1.txt"), Path("dir/file2.txt")): - target_fspath = target_dir / target - target_fspath.parent.mkdir(parents=True, exist_ok=True) - # file contents are the file name - target_fspath.write_text(target.name) - target_file_info = TargetFile.from_file( - str(target), str(target_fspath)) - if consistent_snapshot: - digest = next(iter(target_file_info.hashes.values())) - shutil.move(target_fspath, target_fspath.parent / - f"{digest}.{target.name}") - targets[str(target)] = target_file_info - return targets - - -def make_test_repo(repo_dir: Path, consistent_snapshot: bool): - """Create a test repository in `repo_dir`. - - Two targets: - - `file1.txt` - - `dir/file2.txt` - """ - roles: Dict[str, Metadata] = {} - - targets: Dict[str, TargetFile] = {} - target_dir = repo_dir / "targets" - target_dir.mkdir() - targets = make_targets(target_dir, consistent_snapshot) - target_metadata = Targets( - version=1, spec_version=SPEC_VERSION, expires=EXPIRY, targets=targets - ) - roles["targets"] = Metadata[Targets](target_metadata, {}) - - snapshot_metadata = Snapshot( - version=1, - spec_version=SPEC_VERSION, - expires=EXPIRY, - meta={"targets.json": MetaFile(version=1)}, - ) - roles["snapshot"] = Metadata[Snapshot](snapshot_metadata, {}) - - timestamp_metadata = Timestamp( - version=1, - spec_version=SPEC_VERSION, - expires=EXPIRY, - snapshot_meta=MetaFile(version=1), - ) - roles["timestamp"] = Metadata[Timestamp](timestamp_metadata, {}) - - keys = {name: generate_ed25519_key() for name in ROLES} - - root_metadata = Root( - version=1, - spec_version=SPEC_VERSION, - expires=EXPIRY, - keys={ - key["keyid"]: SSlibKey.from_securesystemslib_key(key) for key in keys.values() - }, - roles={role: Role([key["keyid"]], threshold=1) - for role, key in keys.items()}, - consistent_snapshot=consistent_snapshot, - ) - roles["root"] = Metadata[Root](root_metadata, {}) - - # Write the metadata files - metadata_dir = repo_dir / "metadata" - metadata_dir.mkdir() - for name in ["root", "targets", "snapshot", "timestamp"]: - role = roles[name] - key = keys[role.signed.type] - signer = SSlibSigner(key) - role.sign(signer) - - if name == "root" or (consistent_snapshot and name != "timestamp"): - filename = f"{role.signed.version}.{name}.json" - else: - filename = f"{name}.json" - role.to_file(str(metadata_dir / filename), serializer=PRETTY) - - -def main(): - parser = optparse.OptionParser() - parser.add_option( - "-c", - "--consistent-snapshot", - action="store_true", - dest="consistent_snapshot", - help="Generate consistent snapshot", - default=False, - ) - (options, args) = parser.parse_args() - - repo_dir = Path("repository") - repo_dir.mkdir() - make_test_repo(repo_dir, options.consistent_snapshot) - - -if __name__ == "__main__": - main() diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/generate.sh b/client/python_interop/testdata/python-tuf-v3.0.0/generate.sh deleted file mode 100755 index 094fa411..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/generate.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# -# A script to generate TUF repository files using the Python implementation. -# -# A list of generated files is printed to STDERR and a tar of the files to STDOUT. - -set -e - -main() { - local dir="$(mktemp -d)" - trap "rm -rf ${dir}" EXIT - - pushd "${dir}" >/dev/null - generate_consistent - generate_non_consistent - list_files >&2 - tar c . - popd >/dev/null -} - -generate_consistent() { - mkdir "with-consistent-snapshot" - pushd "with-consistent-snapshot" >/dev/null - python3 /generate.py --consistent-snapshot - popd >/dev/null -} - -generate_non_consistent() { - mkdir "without-consistent-snapshot" - pushd "without-consistent-snapshot" >/dev/null - python3 /generate.py - popd >/dev/null -} - -list_files() { - echo "Files generated:" - tree -} - -main $@ diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.root.json b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.root.json deleted file mode 100755 index e0284c59..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.root.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "signatures": [ - { - "keyid": "c3fcd2035fd2d29b36a29c9e9a52b199f85492b7cf8f9730b865dfa989eb47c8", - "sig": "1c02cfc95564dcce804f2c48de3048881e89be6b49ad3db208a870a5bd69bc7749c809613f44edadd744a01b0ead25753853dbacb955e6b29b59672f654c1809" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2030-01-01T00:00:00Z", - "keys": { - "1d98f2950591737d5f49f0a00d00890ee385ed272285fba1cb89553a37813fcf": { - "keytype": "ed25519", - "keyval": { - "public": "4b937cac5c77ce5ebd18b4ce252f92b1da3e8640a033c34726fe7a821c3acd45" - }, - "scheme": "ed25519" - }, - "c3fcd2035fd2d29b36a29c9e9a52b199f85492b7cf8f9730b865dfa989eb47c8": { - "keytype": "ed25519", - "keyval": { - "public": "0cb442e869c9aead667909ba27ce7ed2c87d396fb92a180ec02b37c64f0f0404" - }, - "scheme": "ed25519" - }, - "e45cfc40f8cae2e4d760b4ecec0b59238fd2fd769391998920927eec825e7829": { - "keytype": "ed25519", - "keyval": { - "public": "ce00487915590a5748b9c08ca720c26cd233424a05f72105ccaa49411b662e83" - }, - "scheme": "ed25519" - }, - "f7662dc3e9eebfb74d0e53f56941c6cf5668967110d2af28b41f9371544ccd0b": { - "keytype": "ed25519", - "keyval": { - "public": "64017bbf887018ecb927029b7524ea9b50d201e232274843384204c5e6e25c06" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "c3fcd2035fd2d29b36a29c9e9a52b199f85492b7cf8f9730b865dfa989eb47c8" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "e45cfc40f8cae2e4d760b4ecec0b59238fd2fd769391998920927eec825e7829" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "f7662dc3e9eebfb74d0e53f56941c6cf5668967110d2af28b41f9371544ccd0b" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "1d98f2950591737d5f49f0a00d00890ee385ed272285fba1cb89553a37813fcf" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.snapshot.json b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.snapshot.json deleted file mode 100755 index 1ed1b9c1..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e45cfc40f8cae2e4d760b4ecec0b59238fd2fd769391998920927eec825e7829", - "sig": "f86a214877f8009aee97b2fc0f96131714f07fa8e2e65b153f08be6d3eba1533b82fb2b774cb82d0b7969f2d5d94071c387f4891276484ba6f5e7a0e11b58f09" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2030-01-01T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.targets.json b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.targets.json deleted file mode 100755 index 84d2e056..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/1.targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "f7662dc3e9eebfb74d0e53f56941c6cf5668967110d2af28b41f9371544ccd0b", - "sig": "708400f70b965991928ea89f925227c97886f673a4e6a32e57062fc533580812fd1b65989fd751a4c3959ff716d8f0e7a09da0d971fa726553f5cc3ea7ff600e" - } - ], - "signed": { - "_type": "targets", - "expires": "2030-01-01T00:00:00Z", - "spec_version": "1.0.19", - "targets": { - "dir/file2.txt": { - "hashes": { - "sha256": "04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701" - }, - "length": 9 - }, - "file1.txt": { - "hashes": { - "sha256": "55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9" - }, - "length": 9 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/timestamp.json b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/timestamp.json deleted file mode 100755 index 02f509b5..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/metadata/timestamp.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "1d98f2950591737d5f49f0a00d00890ee385ed272285fba1cb89553a37813fcf", - "sig": "4453d37f5105ba74f203c72e241c2f3a61df82f37f66e80ba43523534c8bbe30eb06b675133662a38544c87e1087a013d2a786a718ce2f1f338f4177bedccf0e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2030-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "version": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9.file1.txt b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9.file1.txt deleted file mode 100644 index 39cd5762..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9.file1.txt +++ /dev/null @@ -1 +0,0 @@ -file1.txt \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/dir/04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701.file2.txt b/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/dir/04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701.file2.txt deleted file mode 100644 index c3ee11c8..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/with-consistent-snapshot/repository/targets/dir/04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701.file2.txt +++ /dev/null @@ -1 +0,0 @@ -file2.txt \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/1.root.json b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/1.root.json deleted file mode 100755 index f17ee717..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/1.root.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "signatures": [ - { - "keyid": "6a6777bdb8d607b2ca394fab722440c9b82557d4c3d694b69ed37f880d0bb359", - "sig": "32a8f36d461328175f3f48852c8c3f5c0b2202e263e66b40171b3aeca4b485e2d21e29b949da816f1f899f537450fa989a2e7356f7469b9d59b9c37eb0388b06" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2030-01-01T00:00:00Z", - "keys": { - "6a6777bdb8d607b2ca394fab722440c9b82557d4c3d694b69ed37f880d0bb359": { - "keytype": "ed25519", - "keyval": { - "public": "16b7d48bb6bf00dd8d3bcbea04c5937f85334dcc4e5be73b62ec551778962def" - }, - "scheme": "ed25519" - }, - "94995c1ecba97e06fc8c65fb881504c62c5906000cbf0fc39bf2ed910690ce91": { - "keytype": "ed25519", - "keyval": { - "public": "e8a65a4317ab8a37a8db8ce3785b8745516282425d9b3d3533605a62c729fc9c" - }, - "scheme": "ed25519" - }, - "b2100105c1dcea16a93bc583fa0a3a6936b5375b1f944eaf6bc8e806c0f43046": { - "keytype": "ed25519", - "keyval": { - "public": "34beb06ede086112f38aef9131eee9e480e0d3670e801b97d2e99add6ac0856f" - }, - "scheme": "ed25519" - }, - "c74276233340a505633ab55237d3ff7c0e2fedb938806d0226d2331e8c5f98f4": { - "keytype": "ed25519", - "keyval": { - "public": "b4135ebeaf0850dad533cdc0a2721af9941503ea2009eace713685a47b15be32" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "6a6777bdb8d607b2ca394fab722440c9b82557d4c3d694b69ed37f880d0bb359" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "94995c1ecba97e06fc8c65fb881504c62c5906000cbf0fc39bf2ed910690ce91" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b2100105c1dcea16a93bc583fa0a3a6936b5375b1f944eaf6bc8e806c0f43046" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "c74276233340a505633ab55237d3ff7c0e2fedb938806d0226d2331e8c5f98f4" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/snapshot.json b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/snapshot.json deleted file mode 100755 index d1639b42..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "94995c1ecba97e06fc8c65fb881504c62c5906000cbf0fc39bf2ed910690ce91", - "sig": "618e99e47678fa0ccc5b664e5b4230de9f529d6456f376ef8ee55a8d94cf4e592e5b1ab5d6789838cbc1e7724af544866be48cd49cb32d3ac9485bb02ec06a0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2030-01-01T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/targets.json b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/targets.json deleted file mode 100755 index e97913ea..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b2100105c1dcea16a93bc583fa0a3a6936b5375b1f944eaf6bc8e806c0f43046", - "sig": "c4ad17cbc0bc54410c135dc74b638c51e1cafbb64f991b0a3e90a526eb63a162c33a73d6fde01ba84775522eb5c724f43c9f3efd7afd5bc469a5814399e31a0f" - } - ], - "signed": { - "_type": "targets", - "expires": "2030-01-01T00:00:00Z", - "spec_version": "1.0.19", - "targets": { - "dir/file2.txt": { - "hashes": { - "sha256": "04e2f59431a9d219321baf7d21b8cc797d7615dc3e9515c782c49d2075658701" - }, - "length": 9 - }, - "file1.txt": { - "hashes": { - "sha256": "55ae75d991c770d8f3ef07cbfde124ffce9c420da5db6203afab700b27e10cf9" - }, - "length": 9 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/timestamp.json b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/timestamp.json deleted file mode 100755 index 08e84795..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/metadata/timestamp.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "c74276233340a505633ab55237d3ff7c0e2fedb938806d0226d2331e8c5f98f4", - "sig": "f1191748bc8b74751c7e6c3bb0a85a02d54f92214bda78cd3230edf826a9bbf0af15dbf214424e7fb6c7b1a84054ed7a6bb57b05169c52ac0e63da099b9fdd02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2030-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "version": 1 - } - }, - "spec_version": "1.0.19", - "version": 1 - } -} \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/dir/file2.txt b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/dir/file2.txt deleted file mode 100644 index c3ee11c8..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/dir/file2.txt +++ /dev/null @@ -1 +0,0 @@ -file2.txt \ No newline at end of file diff --git a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/file1.txt b/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/file1.txt deleted file mode 100644 index 39cd5762..00000000 --- a/client/python_interop/testdata/python-tuf-v3.0.0/without-consistent-snapshot/repository/targets/file1.txt +++ /dev/null @@ -1 +0,0 @@ -file1.txt \ No newline at end of file diff --git a/client/remote_store.go b/client/remote_store.go deleted file mode 100644 index 17a63fc5..00000000 --- a/client/remote_store.go +++ /dev/null @@ -1,109 +0,0 @@ -package client - -import ( - "fmt" - "io" - "net/http" - "net/url" - "path" - "strconv" - "strings" - "time" -) - -type HTTPRemoteOptions struct { - MetadataPath string - TargetsPath string - UserAgent string - Retries *HTTPRemoteRetries -} - -type HTTPRemoteRetries struct { - Delay time.Duration - Total time.Duration -} - -var DefaultHTTPRetries = &HTTPRemoteRetries{ - Delay: time.Second, - Total: 10 * time.Second, -} - -func HTTPRemoteStore(baseURL string, opts *HTTPRemoteOptions, client *http.Client) (RemoteStore, error) { - if !strings.HasPrefix(baseURL, "http") { - return nil, ErrInvalidURL{baseURL} - } - if opts == nil { - opts = &HTTPRemoteOptions{} - } - if opts.TargetsPath == "" { - opts.TargetsPath = "targets" - } - if client == nil { - client = http.DefaultClient - } - return &httpRemoteStore{baseURL, opts, client}, nil -} - -type httpRemoteStore struct { - baseURL string - opts *HTTPRemoteOptions - cli *http.Client -} - -func (h *httpRemoteStore) GetMeta(name string) (io.ReadCloser, int64, error) { - return h.get(path.Join(h.opts.MetadataPath, name)) -} - -func (h *httpRemoteStore) GetTarget(name string) (io.ReadCloser, int64, error) { - return h.get(path.Join(h.opts.TargetsPath, name)) -} - -func (h *httpRemoteStore) get(s string) (io.ReadCloser, int64, error) { - u := h.url(s) - req, err := http.NewRequest("GET", u, nil) - if err != nil { - return nil, 0, err - } - if h.opts.UserAgent != "" { - req.Header.Set("User-Agent", h.opts.UserAgent) - } - var res *http.Response - if r := h.opts.Retries; r != nil { - for start := time.Now(); time.Since(start) < r.Total; time.Sleep(r.Delay) { - res, err = h.cli.Do(req) - if err == nil && (res.StatusCode < 500 || res.StatusCode > 599) { - break - } - } - } else { - res, err = h.cli.Do(req) - } - if err != nil { - return nil, 0, err - } - - if res.StatusCode == http.StatusNotFound { - res.Body.Close() - return nil, 0, ErrNotFound{s} - } else if res.StatusCode != http.StatusOK { - res.Body.Close() - return nil, 0, &url.Error{ - Op: "GET", - URL: u, - Err: fmt.Errorf("unexpected HTTP status %d", res.StatusCode), - } - } - - size, err := strconv.ParseInt(res.Header.Get("Content-Length"), 10, 0) - if err != nil { - return res.Body, -1, nil - } - return res.Body, size, nil -} - -func (h *httpRemoteStore) url(path string) string { - if !strings.HasPrefix(path, "/") { - path = "/" + path - } - return h.baseURL + path -} diff --git a/client/testdata/Published1Time/client/metadata/current/1.root.json b/client/testdata/Published1Time/client/metadata/current/1.root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/1.snapshot.json b/client/testdata/Published1Time/client/metadata/current/1.snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/1.targets.json b/client/testdata/Published1Time/client/metadata/current/1.targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/1.timestamp.json b/client/testdata/Published1Time/client/metadata/current/1.timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/root.json b/client/testdata/Published1Time/client/metadata/current/root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/snapshot.json b/client/testdata/Published1Time/client/metadata/current/snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/targets.json b/client/testdata/Published1Time/client/metadata/current/targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/current/timestamp.json b/client/testdata/Published1Time/client/metadata/current/timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/1.root.json b/client/testdata/Published1Time/client/metadata/previous/1.root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/1.snapshot.json b/client/testdata/Published1Time/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/1.targets.json b/client/testdata/Published1Time/client/metadata/previous/1.targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/1.timestamp.json b/client/testdata/Published1Time/client/metadata/previous/1.timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/root.json b/client/testdata/Published1Time/client/metadata/previous/root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/snapshot.json b/client/testdata/Published1Time/client/metadata/previous/snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/targets.json b/client/testdata/Published1Time/client/metadata/previous/targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/client/metadata/previous/timestamp.json b/client/testdata/Published1Time/client/metadata/previous/timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/hash.txt b/client/testdata/Published1Time/hash.txt deleted file mode 100644 index e5b238d1..00000000 --- a/client/testdata/Published1Time/hash.txt +++ /dev/null @@ -1 +0,0 @@ -4b336d13d5ef371c39a574265b9c8f5dcf7a6031962a8f2ef9238e8b45d8019b \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/1.root.json b/client/testdata/Published1Time/server/metadata.staged/1.root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/1.snapshot.json b/client/testdata/Published1Time/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/1.targets.json b/client/testdata/Published1Time/server/metadata.staged/1.targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/1.timestamp.json b/client/testdata/Published1Time/server/metadata.staged/1.timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/root.json b/client/testdata/Published1Time/server/metadata.staged/root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/snapshot.json b/client/testdata/Published1Time/server/metadata.staged/snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/targets.json b/client/testdata/Published1Time/server/metadata.staged/targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata.staged/timestamp.json b/client/testdata/Published1Time/server/metadata.staged/timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/1.root.json b/client/testdata/Published1Time/server/metadata/1.root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/1.snapshot.json b/client/testdata/Published1Time/server/metadata/1.snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/1.targets.json b/client/testdata/Published1Time/server/metadata/1.targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/1.timestamp.json b/client/testdata/Published1Time/server/metadata/1.timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/root.json b/client/testdata/Published1Time/server/metadata/root.json deleted file mode 100644 index 6b72b01b..00000000 --- a/client/testdata/Published1Time/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "fc18813db531963ba283e63056be9f5e303e6e4f3d4cdc06301ff2c7fdf67e6850881439eb6e5479a4c874f7e5837972cb1debe02e0613a0ef229a9545a0f60d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:36Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/snapshot.json b/client/testdata/Published1Time/server/metadata/snapshot.json deleted file mode 100644 index 0c760c17..00000000 --- a/client/testdata/Published1Time/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "bff908e74d135b9877db003f078a863701f64ee477f2f9521628396ce14a460d7cbd0b5f81682c7dd082512f18d0dedb5c593b012856f496012445cfd16d6706" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/targets.json b/client/testdata/Published1Time/server/metadata/targets.json deleted file mode 100644 index 59a8059d..00000000 --- a/client/testdata/Published1Time/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "bc7c651efcc8939b9e8dedaa8655ddb95b4f0e6a9336502dffe82e569e035c1274415c4075eef318f964bceb834d85a763f58e5c34d8e3e88cd603e6aec5ec05" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:36Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time/server/metadata/timestamp.json b/client/testdata/Published1Time/server/metadata/timestamp.json deleted file mode 100644 index afc27222..00000000 --- a/client/testdata/Published1Time/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "e4e6dc4a5e6effa5e9a85a2cb22e29847ee91dec8e5f2f57bd50c573a47e9cc95566f703ef0f9ecf4e0ee82804ad92412a226524924f4fb99724c949fffd1e05" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:36Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "2bf3861b5e3be6cb82dc3820cbb128874d18f88e2f08ef81f6b385f3e3c7900b", - "sha512": "c178334cff4dbb2dec4eea043b135a6339661a3c189dc0a689c6f92f150bd15474de5189c513a8c68bf831ea15656142c4ce8de0ae54ab23806fa6af4683783d" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.root.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.snapshot.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.targets.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.timestamp.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/root.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/snapshot.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/targets.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/timestamp.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.root.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.snapshot.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.targets.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.timestamp.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/root.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/snapshot.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/targets.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/timestamp.json b/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/hash.txt b/client/testdata/Published1Time_backwardRootVersion/hash.txt deleted file mode 100644 index eb46ce40..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/hash.txt +++ /dev/null @@ -1 +0,0 @@ -d8e9b9784ec1037e1c2724ae98cf9b8ef3e940e4d61e9f437d003d9f9e2d8d5b \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.root.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.snapshot.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.targets.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.timestamp.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/root.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/snapshot.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/targets.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/timestamp.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.snapshot.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.targets.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.timestamp.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/2.root.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/2.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/root.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/snapshot.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/targets.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_backwardRootVersion/server/metadata/timestamp.json b/client/testdata/Published1Time_backwardRootVersion/server/metadata/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published1Time_backwardRootVersion/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.snapshot.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.targets.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.timestamp.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/snapshot.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/targets.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/current/timestamp.json b/client/testdata/Published1Time_client_no_root/client/metadata/current/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.root.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.root.json deleted file mode 100644 index 6afde0f9..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "257396e371baf489e38653fef8cf0c98d1915a1f61f5bfbb0e3a03bad7c863795b738cdddc6b6899354447cfed0de0f79f8eaeec7acd509322009ee90c49b20d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T02:30:57Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.snapshot.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.targets.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.timestamp.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/root.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/root.json deleted file mode 100644 index 6afde0f9..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "257396e371baf489e38653fef8cf0c98d1915a1f61f5bfbb0e3a03bad7c863795b738cdddc6b6899354447cfed0de0f79f8eaeec7acd509322009ee90c49b20d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T02:30:57Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/snapshot.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/targets.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/client/metadata/previous/timestamp.json b/client/testdata/Published1Time_client_no_root/client/metadata/previous/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/hash.txt b/client/testdata/Published1Time_client_no_root/hash.txt deleted file mode 100644 index adf9cc05..00000000 --- a/client/testdata/Published1Time_client_no_root/hash.txt +++ /dev/null @@ -1 +0,0 @@ -fccdb5eadd5e09460c9ec806e051785d855da2c4862cf9cec2f63401c866bc34 \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.root.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.snapshot.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.targets.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.timestamp.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/root.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/snapshot.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/targets.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata.staged/timestamp.json b/client/testdata/Published1Time_client_no_root/server/metadata.staged/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/1.root.json b/client/testdata/Published1Time_client_no_root/server/metadata/1.root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/1.snapshot.json b/client/testdata/Published1Time_client_no_root/server/metadata/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/1.targets.json b/client/testdata/Published1Time_client_no_root/server/metadata/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/1.timestamp.json b/client/testdata/Published1Time_client_no_root/server/metadata/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/root.json b/client/testdata/Published1Time_client_no_root/server/metadata/root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/snapshot.json b/client/testdata/Published1Time_client_no_root/server/metadata/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/targets.json b/client/testdata/Published1Time_client_no_root/server/metadata/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_no_root/server/metadata/timestamp.json b/client/testdata/Published1Time_client_no_root/server/metadata/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_no_root/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/current/root.json b/client/testdata/Published1Time_client_root_only/client/metadata/current/root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.root.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.root.json deleted file mode 100644 index 6afde0f9..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "257396e371baf489e38653fef8cf0c98d1915a1f61f5bfbb0e3a03bad7c863795b738cdddc6b6899354447cfed0de0f79f8eaeec7acd509322009ee90c49b20d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T02:30:57Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.snapshot.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.snapshot.json deleted file mode 100644 index e27a8a22..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "60a5724ac31af58ece866b723ab121a168b9e93f0033a98dd8449e6550f4d897db0329cdb135fd3a016c8c375e4177c16f1f4d3ada550eb6d06a52b5c84fbb07" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T02:30:57Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.targets.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.targets.json deleted file mode 100644 index 850f22ae..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ecb8da4380f992d0d80cbcb78c31c91baf171dad346725fcbf6b1487f52653fc9a2f1ab46a28d32a733a48badbbd316814dcda52cc49cf3bf6fb415403ce7a0a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T02:30:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.timestamp.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 4d4abc02..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "4e4f72264b522cf8e2867fcaf1a6b1463d43bdf58027fb5770b6d611ae68a9f36b93ce5a50f874744ef1d7b72a11ad685f24081511c306fd7118dc60c90bdf08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T02:30:57Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "195c327842ae9601900016a50d0536a05136bfbf55ddb70657427ae12ed52181", - "sha512": "8deed35dcd9d634fcce94c42049829078c15a57d35ee83b15c201b6a0c80111fefba49cca522dedb1d79bc000393bf6c45b72d485f9d027f7c5a3f8922734a5c" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/root.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/root.json deleted file mode 100644 index 6afde0f9..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "257396e371baf489e38653fef8cf0c98d1915a1f61f5bfbb0e3a03bad7c863795b738cdddc6b6899354447cfed0de0f79f8eaeec7acd509322009ee90c49b20d" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T02:30:57Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/snapshot.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/snapshot.json deleted file mode 100644 index e27a8a22..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "60a5724ac31af58ece866b723ab121a168b9e93f0033a98dd8449e6550f4d897db0329cdb135fd3a016c8c375e4177c16f1f4d3ada550eb6d06a52b5c84fbb07" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T02:30:57Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/targets.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/targets.json deleted file mode 100644 index 850f22ae..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ecb8da4380f992d0d80cbcb78c31c91baf171dad346725fcbf6b1487f52653fc9a2f1ab46a28d32a733a48badbbd316814dcda52cc49cf3bf6fb415403ce7a0a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T02:30:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/client/metadata/previous/timestamp.json b/client/testdata/Published1Time_client_root_only/client/metadata/previous/timestamp.json deleted file mode 100644 index 4d4abc02..00000000 --- a/client/testdata/Published1Time_client_root_only/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "4e4f72264b522cf8e2867fcaf1a6b1463d43bdf58027fb5770b6d611ae68a9f36b93ce5a50f874744ef1d7b72a11ad685f24081511c306fd7118dc60c90bdf08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T02:30:57Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "195c327842ae9601900016a50d0536a05136bfbf55ddb70657427ae12ed52181", - "sha512": "8deed35dcd9d634fcce94c42049829078c15a57d35ee83b15c201b6a0c80111fefba49cca522dedb1d79bc000393bf6c45b72d485f9d027f7c5a3f8922734a5c" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/hash.txt b/client/testdata/Published1Time_client_root_only/hash.txt deleted file mode 100644 index a03443e1..00000000 --- a/client/testdata/Published1Time_client_root_only/hash.txt +++ /dev/null @@ -1 +0,0 @@ -66b8896b5d1120fa684474d4d4d1a5438539b708c7a8d7a93682ce2fe0f739a4 \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.root.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.snapshot.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.targets.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.timestamp.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/root.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/snapshot.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/targets.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata.staged/timestamp.json b/client/testdata/Published1Time_client_root_only/server/metadata.staged/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/1.root.json b/client/testdata/Published1Time_client_root_only/server/metadata/1.root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/1.snapshot.json b/client/testdata/Published1Time_client_root_only/server/metadata/1.snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/1.targets.json b/client/testdata/Published1Time_client_root_only/server/metadata/1.targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/1.timestamp.json b/client/testdata/Published1Time_client_root_only/server/metadata/1.timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/root.json b/client/testdata/Published1Time_client_root_only/server/metadata/root.json deleted file mode 100644 index 8c174229..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "05353c8d3ec99bf81adec84a3d825a93d0a2e2afde92cfd83397451cd3def63dbcbeca4b4c9873c46ec8f509351ca6f9413d3da6bf166f285be6865a05135709" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-14T12:40:00Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/snapshot.json b/client/testdata/Published1Time_client_root_only/server/metadata/snapshot.json deleted file mode 100644 index 09129ad4..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "f4684f93d49f3e20c837ff97557fa46e86dc6267973e21baa770de4a9829677e2d54d24b931062077e6ec6920c61507cb9859d06d6b6dcaf33fb7b5706226d03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/targets.json b/client/testdata/Published1Time_client_root_only/server/metadata/targets.json deleted file mode 100644 index 61a5d6f5..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "69ba74524d033175541495432ecb792395d1980b7218eaca5938a1be90fffbad9e84a64a96dc2029b1341e907187c6cc006be177022791925b04f062f6f2570b" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-14T12:40:00Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published1Time_client_root_only/server/metadata/timestamp.json b/client/testdata/Published1Time_client_root_only/server/metadata/timestamp.json deleted file mode 100644 index 9eff7d6e..00000000 --- a/client/testdata/Published1Time_client_root_only/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0a88915a0566feaa4df4a7f7a51e167ab4f8de8002de66046a6f6698ac2be2acfec915b87cb8b20cdff6e4e9a7c2a01dbb72bb6cc2906873de85c108dace8f02" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-14T12:40:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "dd1aa8bd502e5bdf982dcd41bfc6e8d3783b0cfa33be4bb60aff6da9a4491a5f", - "sha512": "338f427ab68a92c435e6c4e41a858b5e3481d57dd038eb35dbe1d2613d62f9aa1082187091d6f330e6c81de67fabac58e0d60c2bc2cbf2361932ae9f37c75705" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.root.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.targets.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/root.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/snapshot.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/targets.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/current/timestamp.json b/client/testdata/Published2Times_keyrotated/client/metadata/current/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.root.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/root.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/targets.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_keyrotated/client/metadata/previous/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/hash.txt b/client/testdata/Published2Times_keyrotated/hash.txt deleted file mode 100644 index 94732d5c..00000000 --- a/client/testdata/Published2Times_keyrotated/hash.txt +++ /dev/null @@ -1 +0,0 @@ -46183e42ee757c6704e7a122ab225ca633157738809243e8bc3cd92c67699dab \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.root.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/2.root.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/2.root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/root.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/targets.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_keyrotated/server/metadata.staged/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/1.root.json b/client/testdata/Published2Times_keyrotated/server/metadata/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/1.snapshot.json b/client/testdata/Published2Times_keyrotated/server/metadata/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/1.targets.json b/client/testdata/Published2Times_keyrotated/server/metadata/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/1.timestamp.json b/client/testdata/Published2Times_keyrotated/server/metadata/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/2.root.json b/client/testdata/Published2Times_keyrotated/server/metadata/2.root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/root.json b/client/testdata/Published2Times_keyrotated/server/metadata/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/snapshot.json b/client/testdata/Published2Times_keyrotated/server/metadata/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/targets.json b/client/testdata/Published2Times_keyrotated/server/metadata/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated/server/metadata/timestamp.json b/client/testdata/Published2Times_keyrotated/server/metadata/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/hash.txt b/client/testdata/Published2Times_keyrotated_initialrootexpired/hash.txt deleted file mode 100644 index 1c67393d..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/hash.txt +++ /dev/null @@ -1 +0,0 @@ -76108cb5fdef506ef1fb58b75b44008193d7368938b090f82deae5dc88dca7df \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/2.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/2.root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/2.root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/2.root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/root.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/snapshot.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/targets.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/timestamp.json b/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_keyrotated_initialrootexpired/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/hash.txt b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/hash.txt deleted file mode 100644 index 33e50c54..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/hash.txt +++ /dev/null @@ -1 +0,0 @@ -01bad68cbfe77f8d25005708a5ae983304afd54ef92062b4c75cedaf905ec102 \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/2.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/2.root.json deleted file mode 100644 index 79778404..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "da7ef701db2051465c600eae99a3664653d298e6c6ce230b10414b7044ce18b98f17f15f05ecf5678ce776b4bab058db6aa0d920a832bd5d3c167e81d9d1160d" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d1c36ce282376aeec81a74229e8d0927f87d0044aace710b93c11088e49a6889f6135dc18fafc23ea2caead0a9164bfec2c0f825d6979fb459ec6bf3471cdb0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/root.json deleted file mode 100644 index 79778404..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "da7ef701db2051465c600eae99a3664653d298e6c6ce230b10414b7044ce18b98f17f15f05ecf5678ce776b4bab058db6aa0d920a832bd5d3c167e81d9d1160d" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d1c36ce282376aeec81a74229e8d0927f87d0044aace710b93c11088e49a6889f6135dc18fafc23ea2caead0a9164bfec2c0f825d6979fb459ec6bf3471cdb0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.root.json deleted file mode 100644 index 4ab5da2f..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "eb855bd4b5abba2553aeeedf6aa7df3a9823486e5ebdd5e584e465db4772872ba07e5d246260249853b8c5c5a057b59bb5f169b944691ec4d898293f3d1fb10e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/2.root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/2.root.json deleted file mode 100644 index 77fa70e7..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "da7ef701db2051465c600eae99a3664653d298e6c6ce230b10414b7044ce18b98f17f15f05ecf5678ce776b4bab058db6aa0d920a832bd5d3c167e81d9d1160d" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "000000" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/root.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/root.json deleted file mode 100644 index 79778404..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "da7ef701db2051465c600eae99a3664653d298e6c6ce230b10414b7044ce18b98f17f15f05ecf5678ce776b4bab058db6aa0d920a832bd5d3c167e81d9d1160d" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d1c36ce282376aeec81a74229e8d0927f87d0044aace710b93c11088e49a6889f6135dc18fafc23ea2caead0a9164bfec2c0f825d6979fb459ec6bf3471cdb0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2022-09-10T09:49:07Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/snapshot.json deleted file mode 100644 index 2c249172..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7283800e4ad40d7461b03bf6cd8a37218d7a233341cd9fe803398902274b1647213567ee0287c852b33d1c157461cb999ff399e4dc293a07141afd6abea25a03" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2021-09-17T04:00:47Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/targets.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/targets.json deleted file mode 100644 index 9d27a59d..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6202bb047ad7e5a13b514be1b8c128621374a70c17dba57b29ed58691b0badfe4827e47b6de8ee6fa35b731d1be994a492aa60ba872ed7e9a332a1fbb1cf910c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2021-12-10T11:27:57Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/timestamp.json deleted file mode 100644 index 99bdb516..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidNewRootSignature/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "f95d84c5d292a024dffc394b842fef1634d00491762841715083c167eb8be1cb5b34604c13d27a6b27a2b73e0188df5e89b219022038b22c8b6d493fdd13a906" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2021-09-11T04:00:47Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "a9591bd41f7ce1b3ce8a13c4266d7ad5ea91ad51279955d1965259aa7fd32394", - "sha512": "191cd66f1e3ebc512b186e3de6f15a1f36cb6a91a7a229f2df67161dd1e75d005a05cf2017512903525160f1c867e6a06b1bacc1ba8d3cdd7521bc9f46a998b3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/hash.txt b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/hash.txt deleted file mode 100644 index 1ffc9a61..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/hash.txt +++ /dev/null @@ -1 +0,0 @@ -22e59be74a4c783467e0adc5a888fb7222ea10473baad417dbf64bd8fa220e5b \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/2.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/2.root.json deleted file mode 100644 index ffe63b57..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "a730b0d31a67712f4bcda4406dd26d515717ce214c7768556a5ebbd9d4f0b8507eb6754421c7d46cabe469ab3db81a774055dfdee88457203bb1148576854e0a" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "4ba4216f3f0fcb14a39ff0690b48200a0b9b4bb3505433a1eaf8269e9eb73c78f36fa8b777fe69b3543b86845739ced2efe13f4d669724f6d6d2111b7dfe5c05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/root.json deleted file mode 100644 index ffe63b57..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "a730b0d31a67712f4bcda4406dd26d515717ce214c7768556a5ebbd9d4f0b8507eb6754421c7d46cabe469ab3db81a774055dfdee88457203bb1148576854e0a" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "4ba4216f3f0fcb14a39ff0690b48200a0b9b4bb3505433a1eaf8269e9eb73c78f36fa8b777fe69b3543b86845739ced2efe13f4d669724f6d6d2111b7dfe5c05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.root.json deleted file mode 100644 index b7fa8217..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e3b2b8cbc279c332ef1f74f940235d7ab98e49cbbf09f78a4445285dc45bab991ecf98e714487f8e43bbd715efcbbff1d5ba91c190ba6a1826f0d6564aee6d05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/2.root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/2.root.json deleted file mode 100644 index d713d810..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "000000" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "4ba4216f3f0fcb14a39ff0690b48200a0b9b4bb3505433a1eaf8269e9eb73c78f36fa8b777fe69b3543b86845739ced2efe13f4d669724f6d6d2111b7dfe5c05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/root.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/root.json deleted file mode 100644 index ffe63b57..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "a730b0d31a67712f4bcda4406dd26d515717ce214c7768556a5ebbd9d4f0b8507eb6754421c7d46cabe469ab3db81a774055dfdee88457203bb1148576854e0a" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "4ba4216f3f0fcb14a39ff0690b48200a0b9b4bb3505433a1eaf8269e9eb73c78f36fa8b777fe69b3543b86845739ced2efe13f4d669724f6d6d2111b7dfe5c05" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/snapshot.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/targets.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/timestamp.json b/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published2Times_keyrotated_invalidOldRootSignature/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.root.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.targets.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/root.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/snapshot.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/targets.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/current/timestamp.json b/client/testdata/Published2Times_roottoolarge/client/metadata/current/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.root.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/root.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/targets.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_roottoolarge/client/metadata/previous/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/hash.txt b/client/testdata/Published2Times_roottoolarge/hash.txt deleted file mode 100644 index 94732d5c..00000000 --- a/client/testdata/Published2Times_roottoolarge/hash.txt +++ /dev/null @@ -1 +0,0 @@ -46183e42ee757c6704e7a122ab225ca633157738809243e8bc3cd92c67699dab \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.root.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/2.root.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/2.root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/root.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/targets.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_roottoolarge/server/metadata.staged/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/1.root.json b/client/testdata/Published2Times_roottoolarge/server/metadata/1.root.json deleted file mode 100644 index fff03947..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "481a1bd10fedbe33e88e5f586a8726f558a5ec426bf65d2ba1c449fd1f69148da6af40f1ae18a5be63539dfbf076019db8b28f3f644f7fd4f003b7d06a4c2e09" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/1.snapshot.json b/client/testdata/Published2Times_roottoolarge/server/metadata/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/1.targets.json b/client/testdata/Published2Times_roottoolarge/server/metadata/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/1.timestamp.json b/client/testdata/Published2Times_roottoolarge/server/metadata/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/2.root.json b/client/testdata/Published2Times_roottoolarge/server/metadata/2.root.json deleted file mode 100644 index 4aad61d5..00000000 Binary files a/client/testdata/Published2Times_roottoolarge/server/metadata/2.root.json and /dev/null differ diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/root.json b/client/testdata/Published2Times_roottoolarge/server/metadata/root.json deleted file mode 100644 index 21d082c8..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "122b322d6f212fcc22ec9062e6948baf694ec4ecf366e4a3cd5cf4c738aa39706b3420aeacd6d8e0e54f0af0168644e905696b397974dadfd3d2a578be06fd08" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c5e5a542c368d32a8bb1884ffcc850f8902c96537b2b827be3608c44dbdd24ff0cd3b0c326e03869474091e21073f87a57237f2909300a2c43a41ca90c22020c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/snapshot.json b/client/testdata/Published2Times_roottoolarge/server/metadata/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/targets.json b/client/testdata/Published2Times_roottoolarge/server/metadata/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_roottoolarge/server/metadata/timestamp.json b/client/testdata/Published2Times_roottoolarge/server/metadata/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published2Times_roottoolarge/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.root.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.targets.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/root.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/targets.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.root.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/root.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/targets.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/hash.txt b/client/testdata/Published2Times_snapshot_keyrotated/hash.txt deleted file mode 100644 index 605aae29..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/hash.txt +++ /dev/null @@ -1 +0,0 @@ -c8b65c989faaae06e6962fd58f0d2d84ae5b3786caa60b80514e23877a0ec1a4 \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.root.json deleted file mode 100644 index e829eb10..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "b5ee398bcfdeffec3bc84420a9f21282543e7a45cbd8ffa896b0e3d99d614551fa72e387fd809306ddc1454e16fe8edb01b5808d16f186b664a538353bd38802" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.snapshot.json deleted file mode 100644 index 850e763b..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ba835d8c4556c0d490e81a0aae287dd7359ffa2378160161979756b8c7e04d492eb370c50447c746064e38b318323059168fa319de2399da8387aeb7f951f401" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d9617e7899227aa417a59db0ecd64775fc651cbb3c4196fb45c36885d8bce0af9e19f2e9b0ce1e2f089b72a8bf7d120fdafe649c1ce79b1e0c95845b541c6805" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.timestamp.json deleted file mode 100644 index d902a0b0..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "57e25d5c42c25aeda1cfa5e6144567661867d15ef35746fedb685ea077e2dc803091ab26b3e50dfeedf405454f38159e453541a518c80a9c10923eff240fee07" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "70122787e9fa61099a44d5bc04b4b52c95a6eb553ba7e60b7b778b5d1539913c", - "sha512": "2290f310345240bcba820722f09d70a0a463032c8c807122e30385a7e6a9fbd3ff044dce5d0994d182853ba1651057920ebbf0447c470d85370fb57afef9034e" - }, - "length": 661, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/root.json deleted file mode 100644 index e829eb10..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "b5ee398bcfdeffec3bc84420a9f21282543e7a45cbd8ffa896b0e3d99d614551fa72e387fd809306ddc1454e16fe8edb01b5808d16f186b664a538353bd38802" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/snapshot.json deleted file mode 100644 index 850e763b..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ba835d8c4556c0d490e81a0aae287dd7359ffa2378160161979756b8c7e04d492eb370c50447c746064e38b318323059168fa319de2399da8387aeb7f951f401" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d9617e7899227aa417a59db0ecd64775fc651cbb3c4196fb45c36885d8bce0af9e19f2e9b0ce1e2f089b72a8bf7d120fdafe649c1ce79b1e0c95845b541c6805" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/targets.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/timestamp.json deleted file mode 100644 index d902a0b0..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "57e25d5c42c25aeda1cfa5e6144567661867d15ef35746fedb685ea077e2dc803091ab26b3e50dfeedf405454f38159e453541a518c80a9c10923eff240fee07" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "70122787e9fa61099a44d5bc04b4b52c95a6eb553ba7e60b7b778b5d1539913c", - "sha512": "2290f310345240bcba820722f09d70a0a463032c8c807122e30385a7e6a9fbd3ff044dce5d0994d182853ba1651057920ebbf0447c470d85370fb57afef9034e" - }, - "length": 661, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.targets.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.root.json deleted file mode 100644 index e829eb10..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "b5ee398bcfdeffec3bc84420a9f21282543e7a45cbd8ffa896b0e3d99d614551fa72e387fd809306ddc1454e16fe8edb01b5808d16f186b664a538353bd38802" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.snapshot.json deleted file mode 100644 index 850e763b..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ba835d8c4556c0d490e81a0aae287dd7359ffa2378160161979756b8c7e04d492eb370c50447c746064e38b318323059168fa319de2399da8387aeb7f951f401" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d9617e7899227aa417a59db0ecd64775fc651cbb3c4196fb45c36885d8bce0af9e19f2e9b0ce1e2f089b72a8bf7d120fdafe649c1ce79b1e0c95845b541c6805" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.timestamp.json deleted file mode 100644 index d902a0b0..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "57e25d5c42c25aeda1cfa5e6144567661867d15ef35746fedb685ea077e2dc803091ab26b3e50dfeedf405454f38159e453541a518c80a9c10923eff240fee07" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "70122787e9fa61099a44d5bc04b4b52c95a6eb553ba7e60b7b778b5d1539913c", - "sha512": "2290f310345240bcba820722f09d70a0a463032c8c807122e30385a7e6a9fbd3ff044dce5d0994d182853ba1651057920ebbf0447c470d85370fb57afef9034e" - }, - "length": 661, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/root.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/root.json deleted file mode 100644 index e829eb10..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "b5ee398bcfdeffec3bc84420a9f21282543e7a45cbd8ffa896b0e3d99d614551fa72e387fd809306ddc1454e16fe8edb01b5808d16f186b664a538353bd38802" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/snapshot.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/snapshot.json deleted file mode 100644 index 850e763b..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ba835d8c4556c0d490e81a0aae287dd7359ffa2378160161979756b8c7e04d492eb370c50447c746064e38b318323059168fa319de2399da8387aeb7f951f401" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d9617e7899227aa417a59db0ecd64775fc651cbb3c4196fb45c36885d8bce0af9e19f2e9b0ce1e2f089b72a8bf7d120fdafe649c1ce79b1e0c95845b541c6805" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/targets.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/timestamp.json b/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/timestamp.json deleted file mode 100644 index d902a0b0..00000000 --- a/client/testdata/Published2Times_snapshot_keyrotated/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "57e25d5c42c25aeda1cfa5e6144567661867d15ef35746fedb685ea077e2dc803091ab26b3e50dfeedf405454f38159e453541a518c80a9c10923eff240fee07" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "70122787e9fa61099a44d5bc04b4b52c95a6eb553ba7e60b7b778b5d1539913c", - "sha512": "2290f310345240bcba820722f09d70a0a463032c8c807122e30385a7e6a9fbd3ff044dce5d0994d182853ba1651057920ebbf0447c470d85370fb57afef9034e" - }, - "length": 661, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.root.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.targets.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/root.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/snapshot.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/targets.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/timestamp.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.root.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/root.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/targets.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/hash.txt b/client/testdata/Published2Times_targets_keyrotated/hash.txt deleted file mode 100644 index 6032a36c..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/hash.txt +++ /dev/null @@ -1 +0,0 @@ -da386545caf1b4bc294d8be949b3bd1a81de1d72cbeb9389c678e5ded14de472 \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.root.json deleted file mode 100644 index 8d2460c2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "11c2da5dc46bcf9e2aa41ce633778480a5f74160c2547085dd85b802e67b71c10e2a3fd2b1fcf800364408a555ca2e1f309cf09137b1225bc015f9535e2c5a01" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.snapshot.json deleted file mode 100644 index 5e104565..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "faa00b87121a1cefdaec6ea5fe1078465d989ac73b18220b594dc62302d8c661d6dea53f9baea9c8fc29fb988c889d5096a9914979ad53027cd281de1549f107" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.targets.json deleted file mode 100644 index 91de6b5b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.targets.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9d7c09bf862a443be7a1cf14c1d2bf2f812dea9ab33567f14a3b33ff52af70865fd11c17ed92d187bb319fd984709a6ed59cc3d216ee9f3151af0764eafa460d" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "94541820374b4a4a7d92a8d7fbf22ab5e203c1da0559c21e1168f2ebcbcf19a939bf46f4c96cf678480708ff5549f14fec56e3163cce60f4e753f173ebbc6706" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.timestamp.json deleted file mode 100644 index ff74b84f..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "56e9600e8db24012f69219ecb7d27edb0c4e3da64dabccd6948c4c12e42be4360854941ced0f6b11544166306c225ed9cd7b2e979de11340246890ed664a3707" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "26e36995257b9d61a9e7d06fe5c7ce43c1f01db1d078509ac1ca91c7a3ea6b97", - "sha512": "ba915258f9b6f711809e657aef8c37f76009be392fe560da3af6ee49e9027101d9d27c8d6cc74502947445fe59864502c992374c5c68dfe5f91a35c72a49d6df" - }, - "length": 431, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/root.json deleted file mode 100644 index 8d2460c2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "11c2da5dc46bcf9e2aa41ce633778480a5f74160c2547085dd85b802e67b71c10e2a3fd2b1fcf800364408a555ca2e1f309cf09137b1225bc015f9535e2c5a01" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/snapshot.json deleted file mode 100644 index 5e104565..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "faa00b87121a1cefdaec6ea5fe1078465d989ac73b18220b594dc62302d8c661d6dea53f9baea9c8fc29fb988c889d5096a9914979ad53027cd281de1549f107" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/targets.json deleted file mode 100644 index 91de6b5b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/targets.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9d7c09bf862a443be7a1cf14c1d2bf2f812dea9ab33567f14a3b33ff52af70865fd11c17ed92d187bb319fd984709a6ed59cc3d216ee9f3151af0764eafa460d" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "94541820374b4a4a7d92a8d7fbf22ab5e203c1da0559c21e1168f2ebcbcf19a939bf46f4c96cf678480708ff5549f14fec56e3163cce60f4e753f173ebbc6706" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/timestamp.json deleted file mode 100644 index ff74b84f..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "56e9600e8db24012f69219ecb7d27edb0c4e3da64dabccd6948c4c12e42be4360854941ced0f6b11544166306c225ed9cd7b2e979de11340246890ed664a3707" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "26e36995257b9d61a9e7d06fe5c7ce43c1f01db1d078509ac1ca91c7a3ea6b97", - "sha512": "ba915258f9b6f711809e657aef8c37f76009be392fe560da3af6ee49e9027101d9d27c8d6cc74502947445fe59864502c992374c5c68dfe5f91a35c72a49d6df" - }, - "length": 431, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.root.json deleted file mode 100644 index 2f7a7ac2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "178b16c8bfeefe6b9d2296be36a09ec8d0ec5e2ddcf7db851c1157c2da9ac78623736ddd0e145ef791c00370a261c47ff09eb29817d21a3bd02057b32ad93603" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.snapshot.json deleted file mode 100644 index 580836df..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "aecb0a813124c7a42c125d94fa8dfd0bd6083acc30a1e8e2d85956d61cdd296f8adb561f8035826f9ad0480c5f3fd8581e0595ddf719a6b839acd9549667ad0d" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.targets.json deleted file mode 100644 index 74c79a6b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "923e033c7952d24cb509f62d8dfed00fb554b9dd3578567ddd2205377038044a5dd45c132755fed5b3e5f5ff8e4204fa0d219b47bc0f39c1b48fad2fdbc94805" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.timestamp.json deleted file mode 100644 index 62c7756e..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "d284bf6f5dc45828cd3d3cc771657ade69731d815df34bb0eec14dd645aa235eb67c32bb5cb7ad1d4e56e69fc1df002bf48c7264c6f9105e05cbb9a2c6c36b0d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "8c30184e206b001443cc8c5ab74a45fbb80e3b6f7937fd42917635b64970442e", - "sha512": "22f32f8178f842277f0e2e3dc24c03ccdf310be97533ddf41dffafa40be3448d9b22a1ac596c2b04b2357475823501156e52a2e9c39b730603f3c7ed3c8769d1" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.root.json deleted file mode 100644 index 8d2460c2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "11c2da5dc46bcf9e2aa41ce633778480a5f74160c2547085dd85b802e67b71c10e2a3fd2b1fcf800364408a555ca2e1f309cf09137b1225bc015f9535e2c5a01" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.snapshot.json deleted file mode 100644 index 5e104565..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "faa00b87121a1cefdaec6ea5fe1078465d989ac73b18220b594dc62302d8c661d6dea53f9baea9c8fc29fb988c889d5096a9914979ad53027cd281de1549f107" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.targets.json deleted file mode 100644 index 91de6b5b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.targets.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9d7c09bf862a443be7a1cf14c1d2bf2f812dea9ab33567f14a3b33ff52af70865fd11c17ed92d187bb319fd984709a6ed59cc3d216ee9f3151af0764eafa460d" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "94541820374b4a4a7d92a8d7fbf22ab5e203c1da0559c21e1168f2ebcbcf19a939bf46f4c96cf678480708ff5549f14fec56e3163cce60f4e753f173ebbc6706" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.timestamp.json deleted file mode 100644 index ff74b84f..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "56e9600e8db24012f69219ecb7d27edb0c4e3da64dabccd6948c4c12e42be4360854941ced0f6b11544166306c225ed9cd7b2e979de11340246890ed664a3707" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "26e36995257b9d61a9e7d06fe5c7ce43c1f01db1d078509ac1ca91c7a3ea6b97", - "sha512": "ba915258f9b6f711809e657aef8c37f76009be392fe560da3af6ee49e9027101d9d27c8d6cc74502947445fe59864502c992374c5c68dfe5f91a35c72a49d6df" - }, - "length": 431, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/root.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/root.json deleted file mode 100644 index 8d2460c2..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "11c2da5dc46bcf9e2aa41ce633778480a5f74160c2547085dd85b802e67b71c10e2a3fd2b1fcf800364408a555ca2e1f309cf09137b1225bc015f9535e2c5a01" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:40Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/snapshot.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/snapshot.json deleted file mode 100644 index 5e104565..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "faa00b87121a1cefdaec6ea5fe1078465d989ac73b18220b594dc62302d8c661d6dea53f9baea9c8fc29fb988c889d5096a9914979ad53027cd281de1549f107" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/targets.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/targets.json deleted file mode 100644 index 91de6b5b..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/targets.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9d7c09bf862a443be7a1cf14c1d2bf2f812dea9ab33567f14a3b33ff52af70865fd11c17ed92d187bb319fd984709a6ed59cc3d216ee9f3151af0764eafa460d" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "94541820374b4a4a7d92a8d7fbf22ab5e203c1da0559c21e1168f2ebcbcf19a939bf46f4c96cf678480708ff5549f14fec56e3163cce60f4e753f173ebbc6706" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:40Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_targets_keyrotated/server/metadata/timestamp.json b/client/testdata/Published2Times_targets_keyrotated/server/metadata/timestamp.json deleted file mode 100644 index ff74b84f..00000000 --- a/client/testdata/Published2Times_targets_keyrotated/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "56e9600e8db24012f69219ecb7d27edb0c4e3da64dabccd6948c4c12e42be4360854941ced0f6b11544166306c225ed9cd7b2e979de11340246890ed664a3707" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:40Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "26e36995257b9d61a9e7d06fe5c7ce43c1f01db1d078509ac1ca91c7a3ea6b97", - "sha512": "ba915258f9b6f711809e657aef8c37f76009be392fe560da3af6ee49e9027101d9d27c8d6cc74502947445fe59864502c992374c5c68dfe5f91a35c72a49d6df" - }, - "length": 431, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.root.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.targets.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/root.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/targets.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.root.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.targets.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/root.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/targets.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/hash.txt b/client/testdata/Published2Times_timestamp_keyrotated/hash.txt deleted file mode 100644 index 68ccd584..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/hash.txt +++ /dev/null @@ -1 +0,0 @@ -cc8aeb813bb72f4057f56f8c89fc81548ad290592fb0023df691ce505e402a57 \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.targets.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.root.json deleted file mode 100644 index 1d316a87..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "751ae9cf8ef0167e182eae200b05a236041b1a2c4e5fa599c304bf7f99a6f1dcb1627dce10f792dbe85481921e548e4edae2567ec41a927affa3b25d0bb3b804" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.timestamp.json deleted file mode 100644 index cf815406..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "955181a388d83f9ce358bd5430379b66fa3e65412838e807ded2ef4ac0a9c191a0bdceb572b607b923d7ffbfda9c83c621bc8cc9644a8496730b436e7b332101" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "388320f4ba609a57b74687f5c6ec7b64cfbceeac6040631a93515d4f15021cc033518dfc170b979259f227b250063a377d89be042aec0222ef739b2582200a03" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/root.json deleted file mode 100644 index 1d316a87..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "751ae9cf8ef0167e182eae200b05a236041b1a2c4e5fa599c304bf7f99a6f1dcb1627dce10f792dbe85481921e548e4edae2567ec41a927affa3b25d0bb3b804" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/targets.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/timestamp.json deleted file mode 100644 index cf815406..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "955181a388d83f9ce358bd5430379b66fa3e65412838e807ded2ef4ac0a9c191a0bdceb572b607b923d7ffbfda9c83c621bc8cc9644a8496730b436e7b332101" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "388320f4ba609a57b74687f5c6ec7b64cfbceeac6040631a93515d4f15021cc033518dfc170b979259f227b250063a377d89be042aec0222ef739b2582200a03" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.targets.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.root.json deleted file mode 100644 index 1d316a87..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "751ae9cf8ef0167e182eae200b05a236041b1a2c4e5fa599c304bf7f99a6f1dcb1627dce10f792dbe85481921e548e4edae2567ec41a927affa3b25d0bb3b804" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.timestamp.json deleted file mode 100644 index cf815406..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/2.timestamp.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "955181a388d83f9ce358bd5430379b66fa3e65412838e807ded2ef4ac0a9c191a0bdceb572b607b923d7ffbfda9c83c621bc8cc9644a8496730b436e7b332101" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "388320f4ba609a57b74687f5c6ec7b64cfbceeac6040631a93515d4f15021cc033518dfc170b979259f227b250063a377d89be042aec0222ef739b2582200a03" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/root.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/root.json deleted file mode 100644 index 1d316a87..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/root.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "751ae9cf8ef0167e182eae200b05a236041b1a2c4e5fa599c304bf7f99a6f1dcb1627dce10f792dbe85481921e548e4edae2567ec41a927affa3b25d0bb3b804" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/snapshot.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/targets.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/timestamp.json b/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/timestamp.json deleted file mode 100644 index cf815406..00000000 --- a/client/testdata/Published2Times_timestamp_keyrotated/server/metadata/timestamp.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "955181a388d83f9ce358bd5430379b66fa3e65412838e807ded2ef4ac0a9c191a0bdceb572b607b923d7ffbfda9c83c621bc8cc9644a8496730b436e7b332101" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "388320f4ba609a57b74687f5c6ec7b64cfbceeac6040631a93515d4f15021cc033518dfc170b979259f227b250063a377d89be042aec0222ef739b2582200a03" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/hash.txt b/client/testdata/Published3Times_keyrotated_forwardRootVersion/hash.txt deleted file mode 100644 index c3fe8ab1..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/hash.txt +++ /dev/null @@ -1 +0,0 @@ -31049291c7fd0a608a198abff1961a1c8ba43af52adc2db79c274959f2b985a0 \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/2.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/2.root.json deleted file mode 100644 index 87c727f8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "954ba1348157a7f20cc63d59c3049545d31eee1934eee6db9393b29ce7be5b4497863d6559564fe900f313f03ef27acfb49df1df0e45f6585c8209c561c62f01" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "9a0818b253bd97827a036cde24325174ab93a7293e1326ab578ce8ca3c60c451f7a74757eb88796699e08a6247bbf73fe55a5e4f68d3ccf29bfd07703e905b07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/3.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/3.root.json deleted file mode 100644 index 320afc3d..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "779ac2132b1e22ad3a5893ed1ccb72517743a4827bd37218f4b4c95710c3a9ed5a127b1a82ee8bfbc68e19d31574610eb47b290f43b8229fc820de6a98575706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "ba5ed25669dbd59354848e288e6fda23b9a86a9e350137a5e6c8beb7a78dad48b148b89cc5cb8c7754e74b47dc66c419957cfe68cb5b2213477cd8b5b5bfe304" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "231490d1052f581842715786bf0692c61c75ef17f37b0dad9432d5464bf9e34f3740ddf103f7afc5bcaa8ade9c1fd310a6393a44de79be38d24e5bdd50190304" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/root.json deleted file mode 100644 index 320afc3d..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "779ac2132b1e22ad3a5893ed1ccb72517743a4827bd37218f4b4c95710c3a9ed5a127b1a82ee8bfbc68e19d31574610eb47b290f43b8229fc820de6a98575706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "ba5ed25669dbd59354848e288e6fda23b9a86a9e350137a5e6c8beb7a78dad48b148b89cc5cb8c7754e74b47dc66c419957cfe68cb5b2213477cd8b5b5bfe304" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "231490d1052f581842715786bf0692c61c75ef17f37b0dad9432d5464bf9e34f3740ddf103f7afc5bcaa8ade9c1fd310a6393a44de79be38d24e5bdd50190304" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.root.json deleted file mode 100644 index 7aa3dbdb..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "7e2a5844a166b2873c86ee92fc2c07319424ddb66a0372797633f9dd5bcb869409eb00384095fd3e8f4fe5ca451da5ef6b3b864fc8c1b3bd1946743f30411205" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/2.root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/2.root.json deleted file mode 100644 index 320afc3d..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/2.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "779ac2132b1e22ad3a5893ed1ccb72517743a4827bd37218f4b4c95710c3a9ed5a127b1a82ee8bfbc68e19d31574610eb47b290f43b8229fc820de6a98575706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "ba5ed25669dbd59354848e288e6fda23b9a86a9e350137a5e6c8beb7a78dad48b148b89cc5cb8c7754e74b47dc66c419957cfe68cb5b2213477cd8b5b5bfe304" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "231490d1052f581842715786bf0692c61c75ef17f37b0dad9432d5464bf9e34f3740ddf103f7afc5bcaa8ade9c1fd310a6393a44de79be38d24e5bdd50190304" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/root.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/root.json deleted file mode 100644 index 320afc3d..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "779ac2132b1e22ad3a5893ed1ccb72517743a4827bd37218f4b4c95710c3a9ed5a127b1a82ee8bfbc68e19d31574610eb47b290f43b8229fc820de6a98575706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "ba5ed25669dbd59354848e288e6fda23b9a86a9e350137a5e6c8beb7a78dad48b148b89cc5cb8c7754e74b47dc66c419957cfe68cb5b2213477cd8b5b5bfe304" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "231490d1052f581842715786bf0692c61c75ef17f37b0dad9432d5464bf9e34f3740ddf103f7afc5bcaa8ade9c1fd310a6393a44de79be38d24e5bdd50190304" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:39Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/snapshot.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/snapshot.json deleted file mode 100644 index 32c914d6..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "98ca9f817a41745409386dd26a433907349df18d1153b660e8d3cfa01d7dabc35aa06947e9cfac1d93edd7d9276246432fdf647a3357c2185d250d9ddc2be90f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/targets.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/targets.json deleted file mode 100644 index 7b1f6e04..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "70a93be0db6e7180088029c94283f47e60bfae3001982303e4060d952fe8e2db92e861f66bfcf32a4eb10e5a00900eaa719858945a314259c29b14cf39e73f03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:39Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/timestamp.json b/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/timestamp.json deleted file mode 100644 index a8cdfcf8..00000000 --- a/client/testdata/Published3Times_keyrotated_forwardRootVersion/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "05e65cc7a4ebf2dce8472f64c2a69dcee977d5bf8dddc36f4547882782e0d1161a5a03102155b29c41cff10b2f31ff947f6c604d07da1a9ff7eb423477a39c08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:39Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "1ce608f9525f5581f719ed696f6d445ec61ce9a0f97b0c3250bcebb687eb70fe", - "sha512": "22c79c8cb721c21e28cf4ae4e0c31bece6d4f55ed9234f4b538dbbff0c99eb733b2d6e73eaf66e3d9ed955c57a054470d8bfa740487aff0c470a463b7bd967f3" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/hash.txt b/client/testdata/Published3Times_keyrotated_initialrootsexpired/hash.txt deleted file mode 100644 index 4011d3e0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/hash.txt +++ /dev/null @@ -1 +0,0 @@ -7dcc997b6faa38805ccb1c5ce6024f59712b26461b4954dfb3c241df735db994 \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/2.root.json deleted file mode 100644 index 00ab76d4..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8f6e2a5a714d0157ab60191cdd2cb6dcb101f00c95b985bfaafd85637e94978a6493ea89535c8e37c4ac5f236c4329ba63e7eac721def60f03d799ae9cbe8204" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "2e6b955314910c3f3b91e9d7b6673afb6b6dcaef28b2a86172f4032228a96585b5f1cbb0182f64555329d724bde28980e9f72dfae019f777b256e9f9dabb620a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/3.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/3.root.json deleted file mode 100644 index 1fe6df3a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72c33cb0f06b935b61441ab63da4d2e4b207c5051f70b962c546efb7ebcb60890e6a96a95f02f368524687296b09d34168f4b9b5ee2b49a2b693476cbafa530f" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "8814eeb64bd2e7b88b6f4847085bb1b768d2ed33c0c53292d2a490074a6293be13fd5a03f35c685a17eccfe6f209e6cebf884cffcf706e9395793e23d56cdc0c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "cfae718a6ddda42bfb231fc7d6f5db98bbf80303c31a8ae38c303c61e001895cc6e433afe42c7343fb82eed7060f01dc9634829b4af39562b2c389b4d2c9c903" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/root.json deleted file mode 100644 index 1fe6df3a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72c33cb0f06b935b61441ab63da4d2e4b207c5051f70b962c546efb7ebcb60890e6a96a95f02f368524687296b09d34168f4b9b5ee2b49a2b693476cbafa530f" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "8814eeb64bd2e7b88b6f4847085bb1b768d2ed33c0c53292d2a490074a6293be13fd5a03f35c685a17eccfe6f209e6cebf884cffcf706e9395793e23d56cdc0c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "cfae718a6ddda42bfb231fc7d6f5db98bbf80303c31a8ae38c303c61e001895cc6e433afe42c7343fb82eed7060f01dc9634829b4af39562b2c389b4d2c9c903" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.root.json deleted file mode 100644 index b0cfa49a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c981b331d9fd0adec189ec55593735f05ded1d73d7999d67b882f56d2d2a201525d39c20a99cc9c1f03e9425ec607b1f57c7e24b540c0b0c671992cab26e4d07" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/2.root.json deleted file mode 100644 index 00ab76d4..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8f6e2a5a714d0157ab60191cdd2cb6dcb101f00c95b985bfaafd85637e94978a6493ea89535c8e37c4ac5f236c4329ba63e7eac721def60f03d799ae9cbe8204" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "2e6b955314910c3f3b91e9d7b6673afb6b6dcaef28b2a86172f4032228a96585b5f1cbb0182f64555329d724bde28980e9f72dfae019f777b256e9f9dabb620a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:47Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/3.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/3.root.json deleted file mode 100644 index 1fe6df3a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72c33cb0f06b935b61441ab63da4d2e4b207c5051f70b962c546efb7ebcb60890e6a96a95f02f368524687296b09d34168f4b9b5ee2b49a2b693476cbafa530f" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "8814eeb64bd2e7b88b6f4847085bb1b768d2ed33c0c53292d2a490074a6293be13fd5a03f35c685a17eccfe6f209e6cebf884cffcf706e9395793e23d56cdc0c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "cfae718a6ddda42bfb231fc7d6f5db98bbf80303c31a8ae38c303c61e001895cc6e433afe42c7343fb82eed7060f01dc9634829b4af39562b2c389b4d2c9c903" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/root.json deleted file mode 100644 index 1fe6df3a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72c33cb0f06b935b61441ab63da4d2e4b207c5051f70b962c546efb7ebcb60890e6a96a95f02f368524687296b09d34168f4b9b5ee2b49a2b693476cbafa530f" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "8814eeb64bd2e7b88b6f4847085bb1b768d2ed33c0c53292d2a490074a6293be13fd5a03f35c685a17eccfe6f209e6cebf884cffcf706e9395793e23d56cdc0c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "cfae718a6ddda42bfb231fc7d6f5db98bbf80303c31a8ae38c303c61e001895cc6e433afe42c7343fb82eed7060f01dc9634829b4af39562b2c389b4d2c9c903" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:37Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/snapshot.json deleted file mode 100644 index 42d8aae0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "ecf4d79a88873efb223361e550b8fc35813ad7bf31d9769908d9495cfb930e03db889dc7419897031cadf39437c9f49b085f384fe1c18be3961704062365db0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/targets.json deleted file mode 100644 index 65bfd77c..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "f2cee9e31bda3f88b25b0153bb48a6cb21237e4c41a34bbae95f152b56975085bc04c4978eed6be76a3ead23ff76a1259ff07e7b45b04fb51865c9601713c905" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:37Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/timestamp.json deleted file mode 100644 index 9a03f46a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "35d1087c4874221bc772c8276bd77415d9366833aad4efc3926a8eda1de053843d2c114ac7448f08e3cfd802857c2ab2569d8be186b3cc36e65e458905f0e10e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:37Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "d62f650c8097fd4de9e3c8874ef15f7e10fdcc4c32f7a1818e972e8984b8da8a", - "sha512": "d9d0c38df27bc2ccc9523cb8d27623cb40b264053233e5e3261d83e2921c790b21accf9d427e36aa4c1939ddbccaaa5e006267f1cdd451606c514135d178dca5" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/hash.txt b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/hash.txt deleted file mode 100644 index 2f45092a..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/hash.txt +++ /dev/null @@ -1 +0,0 @@ -f8e3fe50a810a933f4895e479fc7352d60762276a99b6554073a0f68316dbd6a \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/3.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/3.root.json deleted file mode 100644 index 6a3a50e9..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "3c7663e43e6eedc42d62a2c2ea9ccc76186f105f6adab425245ea0610fdedd030685f7b707b4d88df2d80a942e13276da8330ae4160dabcedc46e1408d1dd803" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9d8e34d3a8c6cf665657d07053d0c77d8d4da801e3049af04b60a98b252523ad691e84c56af4efcadd83da981939d85cb22dbb7304fb5f88be044fbb8ecad408" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "138b6d748491e80c1108a2916dcb3033a0029db01d82539972cb10c5ba22366391ece7d97483494815d758ae08514eab3edd58b1f84ff603b67c28855d5bee0e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/root.json deleted file mode 100644 index 6a3a50e9..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "3c7663e43e6eedc42d62a2c2ea9ccc76186f105f6adab425245ea0610fdedd030685f7b707b4d88df2d80a942e13276da8330ae4160dabcedc46e1408d1dd803" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9d8e34d3a8c6cf665657d07053d0c77d8d4da801e3049af04b60a98b252523ad691e84c56af4efcadd83da981939d85cb22dbb7304fb5f88be044fbb8ecad408" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "138b6d748491e80c1108a2916dcb3033a0029db01d82539972cb10c5ba22366391ece7d97483494815d758ae08514eab3edd58b1f84ff603b67c28855d5bee0e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/2.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/3.root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/3.root.json deleted file mode 100644 index 6a3a50e9..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "3c7663e43e6eedc42d62a2c2ea9ccc76186f105f6adab425245ea0610fdedd030685f7b707b4d88df2d80a942e13276da8330ae4160dabcedc46e1408d1dd803" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9d8e34d3a8c6cf665657d07053d0c77d8d4da801e3049af04b60a98b252523ad691e84c56af4efcadd83da981939d85cb22dbb7304fb5f88be044fbb8ecad408" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "138b6d748491e80c1108a2916dcb3033a0029db01d82539972cb10c5ba22366391ece7d97483494815d758ae08514eab3edd58b1f84ff603b67c28855d5bee0e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/root.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/root.json deleted file mode 100644 index 6a3a50e9..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "3c7663e43e6eedc42d62a2c2ea9ccc76186f105f6adab425245ea0610fdedd030685f7b707b4d88df2d80a942e13276da8330ae4160dabcedc46e1408d1dd803" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9d8e34d3a8c6cf665657d07053d0c77d8d4da801e3049af04b60a98b252523ad691e84c56af4efcadd83da981939d85cb22dbb7304fb5f88be044fbb8ecad408" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "138b6d748491e80c1108a2916dcb3033a0029db01d82539972cb10c5ba22366391ece7d97483494815d758ae08514eab3edd58b1f84ff603b67c28855d5bee0e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:13:38Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/snapshot.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/targets.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/timestamp.json b/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_initialrootsexpired_clientversionis2/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/hash.txt b/client/testdata/Published3Times_keyrotated_latestrootexpired/hash.txt deleted file mode 100644 index 3e15a175..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/hash.txt +++ /dev/null @@ -1 +0,0 @@ -53afeac61b95af3060968d5bf4acdc71d4eded57ded489974ce47223708532ff \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/2.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/3.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/3.root.json deleted file mode 100644 index a5ad77ba..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5f39777693b8c95b3f1a76172cc147ca6c20acec65c4cd932fda605d6457b10d90e37985197bd6ace2266ea336c16d1669cf2b4b3c1d8502d1b2b1f30fe82c02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "07dde55a3e8182d37b05b3edcf8d559fd088100827d5a697cc3dcafb875da2afa657cc635cbbe2c464c936c336408f31063b0dd9821b56e64d83eedbe7397f01" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e62976570275736532867c395345568051d3f01d5f8c723afb1d6d44b7e901f3b98a5ae4e21406914f1ca46cee40c9ea5d7854d574694d8dc63da499b2746006" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/root.json deleted file mode 100644 index a5ad77ba..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5f39777693b8c95b3f1a76172cc147ca6c20acec65c4cd932fda605d6457b10d90e37985197bd6ace2266ea336c16d1669cf2b4b3c1d8502d1b2b1f30fe82c02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "07dde55a3e8182d37b05b3edcf8d559fd088100827d5a697cc3dcafb875da2afa657cc635cbbe2c464c936c336408f31063b0dd9821b56e64d83eedbe7397f01" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e62976570275736532867c395345568051d3f01d5f8c723afb1d6d44b7e901f3b98a5ae4e21406914f1ca46cee40c9ea5d7854d574694d8dc63da499b2746006" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.root.json deleted file mode 100644 index 184232b0..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "1a1565cf213002416129b7ff558fbe0b4b296984c756e5f67fe10e8b6dae5ccd372b17c9524fd2a92fe79df50c2845baa57a3447e2422bf5dc1c35e00e5e1003" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/2.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/2.root.json deleted file mode 100644 index 6646aca3..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/2.root.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0e22c864c9537c692cf66467310173896c3416d9b48a8c33f33c6f6b0117cd77c194f5d4695fe0f81efd77d3ebfe70d33421f4859374c133de8a247b51625906" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "a40c02d3ea080e4a46a09796926040127a7d8ed5f91ac2acee3a995b8eca403cc787b33f56840983f6975e886d3d5ceb157e1fa999b4ed699d70031a470fc508" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/3.root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/3.root.json deleted file mode 100644 index a5ad77ba..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/3.root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5f39777693b8c95b3f1a76172cc147ca6c20acec65c4cd932fda605d6457b10d90e37985197bd6ace2266ea336c16d1669cf2b4b3c1d8502d1b2b1f30fe82c02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "07dde55a3e8182d37b05b3edcf8d559fd088100827d5a697cc3dcafb875da2afa657cc635cbbe2c464c936c336408f31063b0dd9821b56e64d83eedbe7397f01" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e62976570275736532867c395345568051d3f01d5f8c723afb1d6d44b7e901f3b98a5ae4e21406914f1ca46cee40c9ea5d7854d574694d8dc63da499b2746006" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/root.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/root.json deleted file mode 100644 index a5ad77ba..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/root.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5f39777693b8c95b3f1a76172cc147ca6c20acec65c4cd932fda605d6457b10d90e37985197bd6ace2266ea336c16d1669cf2b4b3c1d8502d1b2b1f30fe82c02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "07dde55a3e8182d37b05b3edcf8d559fd088100827d5a697cc3dcafb875da2afa657cc635cbbe2c464c936c336408f31063b0dd9821b56e64d83eedbe7397f01" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e62976570275736532867c395345568051d3f01d5f8c723afb1d6d44b7e901f3b98a5ae4e21406914f1ca46cee40c9ea5d7854d574694d8dc63da499b2746006" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2021-09-12T03:13:48Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/snapshot.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/snapshot.json deleted file mode 100644 index cff50edf..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "03f7436d986edb991e9812b64fa7a93229e2e73ab419e29feab828a311a5aace9b385ed48d44f602af25b8e3070eaf948c89bc59ab75fb8a1231882df1ef4a05" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/targets.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/targets.json deleted file mode 100644 index 80777dc2..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5d60d0018367fda4bbaa0ebb3b0ee0c2cdbac3bdb233369590f3055ad9d4299fde6a8a8824ed3f38129ca6ee3fa67075b6591169aa1819a6238ea1821dbaa03" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:13:38Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/timestamp.json b/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/timestamp.json deleted file mode 100644 index 221e7802..00000000 --- a/client/testdata/Published3Times_keyrotated_latestrootexpired/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c5a41119ccf10925e7c065c10c14d3690b6c4071fa4f2f7e3bc5944e375ee28ccf81721c9f506d788e0cc9b3d335791a4553f3f1e39873903f00a449a3de5004" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:13:38Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "700c180d3a3d6e2fa86f4bb072d7f81f39f1cc1dc0df32bb6b5e89a715f743d2", - "sha512": "5b21d7bda6e29381e7f095204eddd78137cc14416585c3e9f8915ce21ff1b17b646932b37d7a1147cc0f1d6b7f6ea75d91f6b63d7e229fe73c0b4f1845c40f41" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/hash.txt deleted file mode 100644 index 8bedf9df..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/hash.txt +++ /dev/null @@ -1 +0,0 @@ -1b82d8de8e29a4cff4fa146b19aefdc45d3016b8b580c84d1252d0b38d008343 \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/2.root.json deleted file mode 100644 index abb8737a..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/2.root.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "496695b909566a8c2c4649e334c1776b010116e7d1860d855bd53f0f0466c41f733b914828bd4134cdf3d1b2bff1961482f3aaf1dcb848c8dbe63c2c0c4cea0a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "52a32e1b2f680c803c2c79b2083be98abf05a8528a5155cff728578b21fce4b7b75a186875ff8e5b387feb6a6badc2b4bf86497a1e82830cc62636ffcc10850f" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1543bcd29a9ba609f50ce9cce682ceadba8df939b84dd06851f71bcea767f305580c69253179608b3fe8d3fe179158e4ee272f0e04bcc7a9aabf845dfccbcb02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9a6c51a85bc11289755a7f4f61e6a8b21749d70bc1ee26b8ea77ddad49871e052aef72066ebd390632db4f4a88d093ec9c96bb073d63d535f7dbd4122be05a0b" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "361ee22a20fe33cec10fc2fd807c542d3e981739b83fbb5346d94268cfa5bb5c47bfff94a8a48de0011e7dc789eaca880df3474deb8e5a6fb0147fe19d99570e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c1ad1c1192587704f6aa3dd8f26b1fef81145676014ca3507d734eb1b1c5f07541573ae1e0641bb9a1d176f6459d34e8668fe3227f6eb85deb325309bce8d80f" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c7ec24a2dd742793056036bb2ce233b9750d633af21dcba4e7a33a9bb1879dc2664670ae7d15f482bfba54ac2a1844bc14a0859e22331657ac948880f543a70d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "4f693edf9fef84b4fded4107d5958a7578bf589422920d016155d189f09d415a0511055f723746840a1402eb80c7b693dd2dc8496a250308b8a4477172ec1104" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "d88a622ae383cc75dd2f96629dd408483285afd450bdad37f1ade6a105a2367ea35200e8f74e9f29a4843308d59d1d29dbc12536e12a5eb00c4570a04606f300" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/root.json deleted file mode 100644 index abb8737a..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/root.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "496695b909566a8c2c4649e334c1776b010116e7d1860d855bd53f0f0466c41f733b914828bd4134cdf3d1b2bff1961482f3aaf1dcb848c8dbe63c2c0c4cea0a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "52a32e1b2f680c803c2c79b2083be98abf05a8528a5155cff728578b21fce4b7b75a186875ff8e5b387feb6a6badc2b4bf86497a1e82830cc62636ffcc10850f" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1543bcd29a9ba609f50ce9cce682ceadba8df939b84dd06851f71bcea767f305580c69253179608b3fe8d3fe179158e4ee272f0e04bcc7a9aabf845dfccbcb02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9a6c51a85bc11289755a7f4f61e6a8b21749d70bc1ee26b8ea77ddad49871e052aef72066ebd390632db4f4a88d093ec9c96bb073d63d535f7dbd4122be05a0b" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "361ee22a20fe33cec10fc2fd807c542d3e981739b83fbb5346d94268cfa5bb5c47bfff94a8a48de0011e7dc789eaca880df3474deb8e5a6fb0147fe19d99570e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c1ad1c1192587704f6aa3dd8f26b1fef81145676014ca3507d734eb1b1c5f07541573ae1e0641bb9a1d176f6459d34e8668fe3227f6eb85deb325309bce8d80f" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c7ec24a2dd742793056036bb2ce233b9750d633af21dcba4e7a33a9bb1879dc2664670ae7d15f482bfba54ac2a1844bc14a0859e22331657ac948880f543a70d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "4f693edf9fef84b4fded4107d5958a7578bf589422920d016155d189f09d415a0511055f723746840a1402eb80c7b693dd2dc8496a250308b8a4477172ec1104" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "d88a622ae383cc75dd2f96629dd408483285afd450bdad37f1ade6a105a2367ea35200e8f74e9f29a4843308d59d1d29dbc12536e12a5eb00c4570a04606f300" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/2.root.json deleted file mode 100644 index abb8737a..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/2.root.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "496695b909566a8c2c4649e334c1776b010116e7d1860d855bd53f0f0466c41f733b914828bd4134cdf3d1b2bff1961482f3aaf1dcb848c8dbe63c2c0c4cea0a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "52a32e1b2f680c803c2c79b2083be98abf05a8528a5155cff728578b21fce4b7b75a186875ff8e5b387feb6a6badc2b4bf86497a1e82830cc62636ffcc10850f" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1543bcd29a9ba609f50ce9cce682ceadba8df939b84dd06851f71bcea767f305580c69253179608b3fe8d3fe179158e4ee272f0e04bcc7a9aabf845dfccbcb02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9a6c51a85bc11289755a7f4f61e6a8b21749d70bc1ee26b8ea77ddad49871e052aef72066ebd390632db4f4a88d093ec9c96bb073d63d535f7dbd4122be05a0b" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "361ee22a20fe33cec10fc2fd807c542d3e981739b83fbb5346d94268cfa5bb5c47bfff94a8a48de0011e7dc789eaca880df3474deb8e5a6fb0147fe19d99570e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c1ad1c1192587704f6aa3dd8f26b1fef81145676014ca3507d734eb1b1c5f07541573ae1e0641bb9a1d176f6459d34e8668fe3227f6eb85deb325309bce8d80f" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c7ec24a2dd742793056036bb2ce233b9750d633af21dcba4e7a33a9bb1879dc2664670ae7d15f482bfba54ac2a1844bc14a0859e22331657ac948880f543a70d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "4f693edf9fef84b4fded4107d5958a7578bf589422920d016155d189f09d415a0511055f723746840a1402eb80c7b693dd2dc8496a250308b8a4477172ec1104" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "d88a622ae383cc75dd2f96629dd408483285afd450bdad37f1ade6a105a2367ea35200e8f74e9f29a4843308d59d1d29dbc12536e12a5eb00c4570a04606f300" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/root.json deleted file mode 100644 index abb8737a..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/root.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "496695b909566a8c2c4649e334c1776b010116e7d1860d855bd53f0f0466c41f733b914828bd4134cdf3d1b2bff1961482f3aaf1dcb848c8dbe63c2c0c4cea0a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "52a32e1b2f680c803c2c79b2083be98abf05a8528a5155cff728578b21fce4b7b75a186875ff8e5b387feb6a6badc2b4bf86497a1e82830cc62636ffcc10850f" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1543bcd29a9ba609f50ce9cce682ceadba8df939b84dd06851f71bcea767f305580c69253179608b3fe8d3fe179158e4ee272f0e04bcc7a9aabf845dfccbcb02" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9a6c51a85bc11289755a7f4f61e6a8b21749d70bc1ee26b8ea77ddad49871e052aef72066ebd390632db4f4a88d093ec9c96bb073d63d535f7dbd4122be05a0b" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "361ee22a20fe33cec10fc2fd807c542d3e981739b83fbb5346d94268cfa5bb5c47bfff94a8a48de0011e7dc789eaca880df3474deb8e5a6fb0147fe19d99570e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c1ad1c1192587704f6aa3dd8f26b1fef81145676014ca3507d734eb1b1c5f07541573ae1e0641bb9a1d176f6459d34e8668fe3227f6eb85deb325309bce8d80f" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "c7ec24a2dd742793056036bb2ce233b9750d633af21dcba4e7a33a9bb1879dc2664670ae7d15f482bfba54ac2a1844bc14a0859e22331657ac948880f543a70d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "4f693edf9fef84b4fded4107d5958a7578bf589422920d016155d189f09d415a0511055f723746840a1402eb80c7b693dd2dc8496a250308b8a4477172ec1104" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "d88a622ae383cc75dd2f96629dd408483285afd450bdad37f1ade6a105a2367ea35200e8f74e9f29a4843308d59d1d29dbc12536e12a5eb00c4570a04606f300" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_root/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/hash.txt deleted file mode 100644 index 36a468dd..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/hash.txt +++ /dev/null @@ -1 +0,0 @@ -2818c21e8ecee671a52421bedf8cbe7df0e4b7ed45cdf9fa17a10f26bd90989e \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.root.json deleted file mode 100644 index 0c435fe8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "06aa273601715be06bd54ca5f74d7e8e5e5130646a2a7e21fbcef3d30167bf001805f3df25b06b8c0de5e1d17dba8562c454011262c6523a4e64ce24390b4d0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/2.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/root.json deleted file mode 100644 index 0c435fe8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "06aa273601715be06bd54ca5f74d7e8e5e5130646a2a7e21fbcef3d30167bf001805f3df25b06b8c0de5e1d17dba8562c454011262c6523a4e64ce24390b4d0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.root.json deleted file mode 100644 index 0c435fe8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "06aa273601715be06bd54ca5f74d7e8e5e5130646a2a7e21fbcef3d30167bf001805f3df25b06b8c0de5e1d17dba8562c454011262c6523a4e64ce24390b4d0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/2.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/root.json deleted file mode 100644 index 0c435fe8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "06aa273601715be06bd54ca5f74d7e8e5e5130646a2a7e21fbcef3d30167bf001805f3df25b06b8c0de5e1d17dba8562c454011262c6523a4e64ce24390b4d0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_snapshot/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/hash.txt deleted file mode 100644 index b4f24c80..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/hash.txt +++ /dev/null @@ -1 +0,0 @@ -38d05f4a8fc9892deee2ab651bd61de98ed34393955851f1a9699d02d6c652a1 \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.root.json deleted file mode 100644 index 9a443e46..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "dbfb546e3f361f7b746cc076d6632e5fdfe18ec0268b383de317af45f5cb704c9145707144f1f540e91b256b418cf5753de7391fdc1f8ff27c0a6eb265904005" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.targets.json deleted file mode 100644 index b9ec287f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8c3d6300986d5859cdbc3d4a3509f4ca3e3e9dda0b9ccfd51ffcae65757f221a478ed0be7dbae9f1c6c1d10063e5eeec1f05b538c282e4f7de1d8970b9fe210c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2a257763ea72c8d547083ff87438747c4d0f240a24dba479cdddc1bda562a20d929d770262c915d2c5ae79cd3854abebf263cb56668d1d0a347d4f0033dd360c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "163ec38d14a35b364e3c9f3c57a7d6aa7f5a178f8ec23a33ce43aab9eed34a9fbb813d8aebb5f91b278dc03061eb9528a457f1e16a449ff0ffc3c7e279be6204" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "bb4e58d3f96691280935c1f6e0b603739878ad6cacc2da6395d75c1e6fb9d2fb2e4de238634ec3bd417621485093e480490002c22114a321affb7b4994714c01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "c7e970795af37c2ec5e73a627daa2fd052d26764b47b70d84257b3607f2e9b4472da8eba5bd720dd4fc9801d9108a69d1bff78d8c0c6b50031bfe158ba1ca300" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "ddb6f6aa044d7b64831b3321d3aa3e3a0c3c1ef5144e9257204d0d7b8e6ac616c9f210166f7f679d8e120d8bdcbc40cfa1fc1a2faf97dbe90b5897a49bd6fe0f" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "7a5b9705304316df3edad16d934518b73a4ee29259e8d5accad5b9fb88c08ae0cd8a95b06f197d94b6ce09cfba528e63eec2464de56ecb5449bba4a2d110a705" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "a5fb7d23197cb5856ba1524676bf4f6bd96181b8f3a992607167f86a4053c0280651894d37667fbdd3ff21ed16a9f61116e969db4532935e79a7723f2c9af101" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "701c686cb7defb91040a58f94d9800f42a142d3efdcc53db84a2c1a89f372d134f631135ffeef676efa1cc8b90b4ebbb5040bfc513a7a2aa54cf087cf9770b06" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/root.json deleted file mode 100644 index 9a443e46..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "dbfb546e3f361f7b746cc076d6632e5fdfe18ec0268b383de317af45f5cb704c9145707144f1f540e91b256b418cf5753de7391fdc1f8ff27c0a6eb265904005" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/targets.json deleted file mode 100644 index b9ec287f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8c3d6300986d5859cdbc3d4a3509f4ca3e3e9dda0b9ccfd51ffcae65757f221a478ed0be7dbae9f1c6c1d10063e5eeec1f05b538c282e4f7de1d8970b9fe210c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2a257763ea72c8d547083ff87438747c4d0f240a24dba479cdddc1bda562a20d929d770262c915d2c5ae79cd3854abebf263cb56668d1d0a347d4f0033dd360c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "163ec38d14a35b364e3c9f3c57a7d6aa7f5a178f8ec23a33ce43aab9eed34a9fbb813d8aebb5f91b278dc03061eb9528a457f1e16a449ff0ffc3c7e279be6204" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "bb4e58d3f96691280935c1f6e0b603739878ad6cacc2da6395d75c1e6fb9d2fb2e4de238634ec3bd417621485093e480490002c22114a321affb7b4994714c01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "c7e970795af37c2ec5e73a627daa2fd052d26764b47b70d84257b3607f2e9b4472da8eba5bd720dd4fc9801d9108a69d1bff78d8c0c6b50031bfe158ba1ca300" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "ddb6f6aa044d7b64831b3321d3aa3e3a0c3c1ef5144e9257204d0d7b8e6ac616c9f210166f7f679d8e120d8bdcbc40cfa1fc1a2faf97dbe90b5897a49bd6fe0f" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "7a5b9705304316df3edad16d934518b73a4ee29259e8d5accad5b9fb88c08ae0cd8a95b06f197d94b6ce09cfba528e63eec2464de56ecb5449bba4a2d110a705" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "a5fb7d23197cb5856ba1524676bf4f6bd96181b8f3a992607167f86a4053c0280651894d37667fbdd3ff21ed16a9f61116e969db4532935e79a7723f2c9af101" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "701c686cb7defb91040a58f94d9800f42a142d3efdcc53db84a2c1a89f372d134f631135ffeef676efa1cc8b90b4ebbb5040bfc513a7a2aa54cf087cf9770b06" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.root.json deleted file mode 100644 index cdb0cfc8..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e007d7f8d4013496a546585fa7a1bc6c793391bd119f84f213b70f70d177a2a48186b4f4892879d65e412c37256406eb0b7bc0467e29e6ae5e86da3addda6407" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.targets.json deleted file mode 100644 index d96641d2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "cbf785791cb07f08524bf07f064cd3dd2aa59d4df683817511186efcf66dc477e775f55669685b0ede916ab8715efab88b6fefb62da052eba03faded53406e0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "8940c7a6d7892be68c9830d339c709b5105d2fcccc0624e43c4f5444e25f7ec578ec4899398692edf0e7b91e1194b8cd2ab7c2fb120e1681cbfeca9066b50d01" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "3d4f10ef870798ec71187ef703fc134a148160a66db0478cef893b0a91487cb90e1e59e7b6b8880def22cd928472421c8ab6ada95d515080b5f483aa17e63b06" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "09c192fb46e99f6aa5b4e12a7a5c6239c509cc30926e2cceefdf09166621e1c7e945a40e0c12c19f62a5cd78e4627673c5b1da0f55af54f4bc8bec43728b6d0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3bbf88e8cac7256a72f7b681dec4b26cd83cc7c72ad048235a5bf16bbe9519a3c9990f404f61f3f8833d7235633cb821062738c863097aa3a0e25e36f371ef0f" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf6e9cd2defa1ae0020e27a91d36910a9a665e127d09f77b698a59d47e70913aa6ebf958057bdc68c2ce8e9d344fffd7e892af66fda424079c732900f3c5590a" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1089b0a143419b02067af4ad353ea03c8adce43370485ff257ff8b6e7006fcddfce8db023844aea960f09520a07f86500bf3be11c3cc71479b4fc2953a0a3d0f" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "e3673a85e84a24c12fb654e114d3702e5fa98ac73f11bcd72aa5304afa1cc8a30d53c0cacbd1d65bcb7ae7a2d34c7e46b58f8cb784765f15b1b4e6730aa1cb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.root.json deleted file mode 100644 index 9a443e46..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "dbfb546e3f361f7b746cc076d6632e5fdfe18ec0268b383de317af45f5cb704c9145707144f1f540e91b256b418cf5753de7391fdc1f8ff27c0a6eb265904005" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.targets.json deleted file mode 100644 index b9ec287f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8c3d6300986d5859cdbc3d4a3509f4ca3e3e9dda0b9ccfd51ffcae65757f221a478ed0be7dbae9f1c6c1d10063e5eeec1f05b538c282e4f7de1d8970b9fe210c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2a257763ea72c8d547083ff87438747c4d0f240a24dba479cdddc1bda562a20d929d770262c915d2c5ae79cd3854abebf263cb56668d1d0a347d4f0033dd360c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "163ec38d14a35b364e3c9f3c57a7d6aa7f5a178f8ec23a33ce43aab9eed34a9fbb813d8aebb5f91b278dc03061eb9528a457f1e16a449ff0ffc3c7e279be6204" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "bb4e58d3f96691280935c1f6e0b603739878ad6cacc2da6395d75c1e6fb9d2fb2e4de238634ec3bd417621485093e480490002c22114a321affb7b4994714c01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "c7e970795af37c2ec5e73a627daa2fd052d26764b47b70d84257b3607f2e9b4472da8eba5bd720dd4fc9801d9108a69d1bff78d8c0c6b50031bfe158ba1ca300" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "ddb6f6aa044d7b64831b3321d3aa3e3a0c3c1ef5144e9257204d0d7b8e6ac616c9f210166f7f679d8e120d8bdcbc40cfa1fc1a2faf97dbe90b5897a49bd6fe0f" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "7a5b9705304316df3edad16d934518b73a4ee29259e8d5accad5b9fb88c08ae0cd8a95b06f197d94b6ce09cfba528e63eec2464de56ecb5449bba4a2d110a705" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "a5fb7d23197cb5856ba1524676bf4f6bd96181b8f3a992607167f86a4053c0280651894d37667fbdd3ff21ed16a9f61116e969db4532935e79a7723f2c9af101" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "701c686cb7defb91040a58f94d9800f42a142d3efdcc53db84a2c1a89f372d134f631135ffeef676efa1cc8b90b4ebbb5040bfc513a7a2aa54cf087cf9770b06" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/root.json deleted file mode 100644 index 9a443e46..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "dbfb546e3f361f7b746cc076d6632e5fdfe18ec0268b383de317af45f5cb704c9145707144f1f540e91b256b418cf5753de7391fdc1f8ff27c0a6eb265904005" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/targets.json deleted file mode 100644 index b9ec287f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "8c3d6300986d5859cdbc3d4a3509f4ca3e3e9dda0b9ccfd51ffcae65757f221a478ed0be7dbae9f1c6c1d10063e5eeec1f05b538c282e4f7de1d8970b9fe210c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2a257763ea72c8d547083ff87438747c4d0f240a24dba479cdddc1bda562a20d929d770262c915d2c5ae79cd3854abebf263cb56668d1d0a347d4f0033dd360c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "163ec38d14a35b364e3c9f3c57a7d6aa7f5a178f8ec23a33ce43aab9eed34a9fbb813d8aebb5f91b278dc03061eb9528a457f1e16a449ff0ffc3c7e279be6204" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "bb4e58d3f96691280935c1f6e0b603739878ad6cacc2da6395d75c1e6fb9d2fb2e4de238634ec3bd417621485093e480490002c22114a321affb7b4994714c01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "c7e970795af37c2ec5e73a627daa2fd052d26764b47b70d84257b3607f2e9b4472da8eba5bd720dd4fc9801d9108a69d1bff78d8c0c6b50031bfe158ba1ca300" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "ddb6f6aa044d7b64831b3321d3aa3e3a0c3c1ef5144e9257204d0d7b8e6ac616c9f210166f7f679d8e120d8bdcbc40cfa1fc1a2faf97dbe90b5897a49bd6fe0f" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "7a5b9705304316df3edad16d934518b73a4ee29259e8d5accad5b9fb88c08ae0cd8a95b06f197d94b6ce09cfba528e63eec2464de56ecb5449bba4a2d110a705" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "a5fb7d23197cb5856ba1524676bf4f6bd96181b8f3a992607167f86a4053c0280651894d37667fbdd3ff21ed16a9f61116e969db4532935e79a7723f2c9af101" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "701c686cb7defb91040a58f94d9800f42a142d3efdcc53db84a2c1a89f372d134f631135ffeef676efa1cc8b90b4ebbb5040bfc513a7a2aa54cf087cf9770b06" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/timestamp.json deleted file mode 100644 index d32a8636..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_targets/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/current/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/hash.txt deleted file mode 100644 index 49d284ea..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/hash.txt +++ /dev/null @@ -1 +0,0 @@ -19c5ec00c484505be65a024696fd980add6848b623d74d7eee92dbd3b2c8f178 \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.root.json deleted file mode 100644 index ce76c3c4..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "49f17c01fd9e296f1029144b2c7cff78672f8f0d6f2c6c2049e6412a21f33c8f993fd3e8faf8debefdb4af1a2e2c530826398b8f0c2b1bc9d1dbe3d30d20e60a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.timestamp.json deleted file mode 100644 index 8ca738c5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "4bf1ce4b2a66f6f4bb002d06f6d69a3b72678bcf0ce0d16ac4eaf8faa6eb35aba57cb368abb86f81b41c60dc59c0a43bdbee6fcc3ae5be381aad5aec0cc0e80c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f0bbf3b300d72231df1c4bb55e73e20afa08a32f8414ad66d76c886384a71f23b64301fa3f5ebaf30cddd33407ffe58ae00c08112ea30e4f18f355cd4e2bd70d" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "721f21d83e4e22e52da0f4ec76e05a16f2f6ac41e5f688b5ea81c16a2b3d0be44dab1df306a100a826fc10f2991eb6ba295ff0dd7269abd1faa9e57140fc4508" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0d1c192b314eab6296eec926b34a9393e27432fbe9d0ac349384648236138c9a2f4c5cbde14074e1c58ce92247f67d93c4c55d6cbfda0873f285b4922e614003" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d333eccfaadee6bf457743270df4587550c090b32285ab1cea64b9829e6455218c01bbb6848a4e9126b54b5c893121a1c43d2bf5229165396f79d621d0ba7806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "ee798279d0e2a7afc94794e99ab17ce8b5754be06b1e6108e5d380b70950e062d5f4551e261545eeba3845d779f51b1390cc6a535b8a0e5a6db083e648bc060c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5381bd588a78bf1820e284f6b403696fe56b786df783522d85a0f42e6f3750ca8dd9c6c6dc9a81a40471c97ed50be24555b2f6b7a1439e25e31297342ccfe10c" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "400dd1ee64a31bf899f956a9d43710ff9b96cd3737a528fd0ae5ef313a91ba4132ee09dc2ed4b77868b09811b9bc8b7808d4eab06df5b57c16fdb53ac2d9fa0b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e53225418b7b6edd22970bf3e3ed1dd2931d7b8c7ab1e91f54efa12554b151d80c3591f0203eba317873c5aa71bfec5c5349b43ca8a5143a3b393b4751c500b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/root.json deleted file mode 100644 index ce76c3c4..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "49f17c01fd9e296f1029144b2c7cff78672f8f0d6f2c6c2049e6412a21f33c8f993fd3e8faf8debefdb4af1a2e2c530826398b8f0c2b1bc9d1dbe3d30d20e60a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/timestamp.json deleted file mode 100644 index 8ca738c5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "4bf1ce4b2a66f6f4bb002d06f6d69a3b72678bcf0ce0d16ac4eaf8faa6eb35aba57cb368abb86f81b41c60dc59c0a43bdbee6fcc3ae5be381aad5aec0cc0e80c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f0bbf3b300d72231df1c4bb55e73e20afa08a32f8414ad66d76c886384a71f23b64301fa3f5ebaf30cddd33407ffe58ae00c08112ea30e4f18f355cd4e2bd70d" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "721f21d83e4e22e52da0f4ec76e05a16f2f6ac41e5f688b5ea81c16a2b3d0be44dab1df306a100a826fc10f2991eb6ba295ff0dd7269abd1faa9e57140fc4508" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0d1c192b314eab6296eec926b34a9393e27432fbe9d0ac349384648236138c9a2f4c5cbde14074e1c58ce92247f67d93c4c55d6cbfda0873f285b4922e614003" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d333eccfaadee6bf457743270df4587550c090b32285ab1cea64b9829e6455218c01bbb6848a4e9126b54b5c893121a1c43d2bf5229165396f79d621d0ba7806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "ee798279d0e2a7afc94794e99ab17ce8b5754be06b1e6108e5d380b70950e062d5f4551e261545eeba3845d779f51b1390cc6a535b8a0e5a6db083e648bc060c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5381bd588a78bf1820e284f6b403696fe56b786df783522d85a0f42e6f3750ca8dd9c6c6dc9a81a40471c97ed50be24555b2f6b7a1439e25e31297342ccfe10c" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "400dd1ee64a31bf899f956a9d43710ff9b96cd3737a528fd0ae5ef313a91ba4132ee09dc2ed4b77868b09811b9bc8b7808d4eab06df5b57c16fdb53ac2d9fa0b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e53225418b7b6edd22970bf3e3ed1dd2931d7b8c7ab1e91f54efa12554b151d80c3591f0203eba317873c5aa71bfec5c5349b43ca8a5143a3b393b4751c500b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.root.json deleted file mode 100644 index ace93498..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ae1ce5269bdb49e159d202abd2bf00bc390c6af87e7efe281d3bc1991103fa2a40617d82163c7014616cdf111a37bf4984f7f2282d63625f1c25829f4752b20e" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.timestamp.json deleted file mode 100644 index 7bebab10..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "5bb29b3df3004838f4f0d3d0bdcf2e9edcc1859843f129fb54c6dc5da74e43b6c1ba5cd15652d618d5ae9dafae37f0d7a624ae554d2d94d4909425cca1409b07" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "e6216a17a58b31b80fdb6b3bdfb60fb02e35dc15628cb372694715960e0c0ea82028e410852767d511f3b5a7d0953f78d21b004f5fa3eb81da16f1dfe1cc9104" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "1b3be15b61bac3a359dcde9ec054f7c4b469c561b2b759e4794ee9535c2ca9defa6d391af04ea108d3cfb0c6e9700b470f115caccdd79db622f73d046b7a8b0d" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "46803209126b583272596e06ef9ce530003f1ca013ee3ef2a77a32afe09d2f9218bcd9016c4c8d947223706f8ca086e01bc0e58a01517c51ef2034a0d8e9f503" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "0bf36823342fe84e5111a887fab0ebb740c8883c3783f68d374f95da6ae142ab9abc1a0be9acdaf6f175fddad15b12a0ecd27fa6a5d7179609468145da1aad01" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "27d124a184f4ddaeafe4746a132d119c0e0134a344691eadca7d8847178799d94f41b5f0e3ddeb3f01afab5d9dc8db5d96d0418c18ddec31557306b88d257e0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "34e28fe630dbc1c6c4a67a7775275654262c4e42967a1b99482c903f9171c724b63e95bac7f150d6482ccfd855bd82e1c644e3dd27af4a38afd2040268215100" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "ae3d90d7dd750cf885c78f9c12dbae2d2707f5411b42dd03d3c0bced50952661efc6b05b4f6268a663736c64d9f300d27f3a81d85a93ff5705c310c97058340b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "625c34749f149a2e9183d8efd813da7d8c9ed336a9fb999770290658b9efcc9432551aa85232b3cd994e77ce111265c384216dcc47bbe86c151bb7e14e911907" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.root.json deleted file mode 100644 index ce76c3c4..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "49f17c01fd9e296f1029144b2c7cff78672f8f0d6f2c6c2049e6412a21f33c8f993fd3e8faf8debefdb4af1a2e2c530826398b8f0c2b1bc9d1dbe3d30d20e60a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.timestamp.json deleted file mode 100644 index 8ca738c5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/2.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "4bf1ce4b2a66f6f4bb002d06f6d69a3b72678bcf0ce0d16ac4eaf8faa6eb35aba57cb368abb86f81b41c60dc59c0a43bdbee6fcc3ae5be381aad5aec0cc0e80c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f0bbf3b300d72231df1c4bb55e73e20afa08a32f8414ad66d76c886384a71f23b64301fa3f5ebaf30cddd33407ffe58ae00c08112ea30e4f18f355cd4e2bd70d" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "721f21d83e4e22e52da0f4ec76e05a16f2f6ac41e5f688b5ea81c16a2b3d0be44dab1df306a100a826fc10f2991eb6ba295ff0dd7269abd1faa9e57140fc4508" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0d1c192b314eab6296eec926b34a9393e27432fbe9d0ac349384648236138c9a2f4c5cbde14074e1c58ce92247f67d93c4c55d6cbfda0873f285b4922e614003" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d333eccfaadee6bf457743270df4587550c090b32285ab1cea64b9829e6455218c01bbb6848a4e9126b54b5c893121a1c43d2bf5229165396f79d621d0ba7806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "ee798279d0e2a7afc94794e99ab17ce8b5754be06b1e6108e5d380b70950e062d5f4551e261545eeba3845d779f51b1390cc6a535b8a0e5a6db083e648bc060c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5381bd588a78bf1820e284f6b403696fe56b786df783522d85a0f42e6f3750ca8dd9c6c6dc9a81a40471c97ed50be24555b2f6b7a1439e25e31297342ccfe10c" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "400dd1ee64a31bf899f956a9d43710ff9b96cd3737a528fd0ae5ef313a91ba4132ee09dc2ed4b77868b09811b9bc8b7808d4eab06df5b57c16fdb53ac2d9fa0b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e53225418b7b6edd22970bf3e3ed1dd2931d7b8c7ab1e91f54efa12554b151d80c3591f0203eba317873c5aa71bfec5c5349b43ca8a5143a3b393b4751c500b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/root.json deleted file mode 100644 index ce76c3c4..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/root.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "49f17c01fd9e296f1029144b2c7cff78672f8f0d6f2c6c2049e6412a21f33c8f993fd3e8faf8debefdb4af1a2e2c530826398b8f0c2b1bc9d1dbe3d30d20e60a" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:20Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/snapshot.json deleted file mode 100644 index 5347f780..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "d5e231a96d45560123b3dc33bf2a9043a4b25959c0b84c621060687f41fc047548978be8673a350545653e0093cd38a4432a9f7ef98699b7fb59fc075a227b0a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/targets.json deleted file mode 100644 index 6884685d..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "a576e0ec5d71e3eec0d3448b5107a0eccd35eeeb148ba5ace712be8979e44cdf3a4df595b76801e19957cd70b72c0783262bc23ca8ffd487c7c97de5f968e300" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:20Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/timestamp.json deleted file mode 100644 index 8ca738c5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_2_threshold_4_timestamp/server/metadata/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "4bf1ce4b2a66f6f4bb002d06f6d69a3b72678bcf0ce0d16ac4eaf8faa6eb35aba57cb368abb86f81b41c60dc59c0a43bdbee6fcc3ae5be381aad5aec0cc0e80c" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f0bbf3b300d72231df1c4bb55e73e20afa08a32f8414ad66d76c886384a71f23b64301fa3f5ebaf30cddd33407ffe58ae00c08112ea30e4f18f355cd4e2bd70d" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "721f21d83e4e22e52da0f4ec76e05a16f2f6ac41e5f688b5ea81c16a2b3d0be44dab1df306a100a826fc10f2991eb6ba295ff0dd7269abd1faa9e57140fc4508" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "0d1c192b314eab6296eec926b34a9393e27432fbe9d0ac349384648236138c9a2f4c5cbde14074e1c58ce92247f67d93c4c55d6cbfda0873f285b4922e614003" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d333eccfaadee6bf457743270df4587550c090b32285ab1cea64b9829e6455218c01bbb6848a4e9126b54b5c893121a1c43d2bf5229165396f79d621d0ba7806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "ee798279d0e2a7afc94794e99ab17ce8b5754be06b1e6108e5d380b70950e062d5f4551e261545eeba3845d779f51b1390cc6a535b8a0e5a6db083e648bc060c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5381bd588a78bf1820e284f6b403696fe56b786df783522d85a0f42e6f3750ca8dd9c6c6dc9a81a40471c97ed50be24555b2f6b7a1439e25e31297342ccfe10c" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "400dd1ee64a31bf899f956a9d43710ff9b96cd3737a528fd0ae5ef313a91ba4132ee09dc2ed4b77868b09811b9bc8b7808d4eab06df5b57c16fdb53ac2d9fa0b" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e53225418b7b6edd22970bf3e3ed1dd2931d7b8c7ab1e91f54efa12554b151d80c3591f0203eba317873c5aa71bfec5c5349b43ca8a5143a3b393b4751c500b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:20Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "7a797f95dcb2e1894c4b2f59ec6c596dff205c16d23060a5fda55a0f053be2bd", - "sha512": "d7d872b82f550d0a0b0458fb15ab343b66d9c6a07c0915ef1a1cf903ec303b717b56c04013b64599a64171564825ca01314a65c690eafecd088a3881bf62c278" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/hash.txt deleted file mode 100644 index f594895a..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/hash.txt +++ /dev/null @@ -1 +0,0 @@ -3394568b65c89ced0502b93667ebc005aa9337c95f1c10c8e0f09c002b217ede \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/2.root.json deleted file mode 100644 index 06509adb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/2.root.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "1796c3a9956f553c32ff9c7db8734af9d960989f89f185ef0edc36a87591d2e815ef84a7903bd553ec7ed156170e0c701739bdb9c8fd61316b36dd870525b30a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "1aae88766ce5015d6ec2e75345a8ed5ac7b7e7a3c234e7f2215c37e577bb512743f612f6d7ead301970f1a01dbd15a7a4467147823a1e226ce5643817fafb900" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "7f7bec7da5b5b88bd33ac8c94dbee5700c6fdae5454a98a21516edea8a8d5714c16d49957b3eebbb4b88aa3f3e2e17590f2b056894cb1093c7399a403ad33007" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "398ab57bf00e675ccf5c6a34c88013f86488cece97646db6e00aac40ca3e2f68c8ee6e2d73a14ee9484cb6405f1f653ff896ff95b062221c0c36df2a71b5e50f" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "8ea937bb5a9451161b32605676731ded282d3878e8058d585759b43ee1700a77a33d1b21614486e0240fc1d0af39723cc85ea403479d6efb62c05cc6fdd16a08" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf47e74acfdc137847a1c96d7ef42e3049a347cf96c6b873e5047dd2e50050e13a0dba4907138ba3c29e1c768ddfc6332647fb9658fede4229192e1bc5b6d409" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "9c17a9c043a6dc378334f162999767acc012f6cb33e041f3c9b14963cacb1a32b6cba552931eb9ddd8bd78bf0a872498a8829c4c6c261a2978b083a8639c110f" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "c5698a3a2195c4399b4e04fc9db778a7c02acf82c691517fad43a387083fa4dfe9331c1429c10d22ca14088516518939b104994c68dfc16d21b1ada46ef7b700" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "78f401be103e238daf3c931c2eeb6e7a0eb118042bcbabce533a4d0057e9a19b7df5357fd8f837f36d58a69b1a2719ab2e326e4656e92e8435dd14ba2b01640f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/root.json deleted file mode 100644 index 06509adb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/root.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "1796c3a9956f553c32ff9c7db8734af9d960989f89f185ef0edc36a87591d2e815ef84a7903bd553ec7ed156170e0c701739bdb9c8fd61316b36dd870525b30a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "1aae88766ce5015d6ec2e75345a8ed5ac7b7e7a3c234e7f2215c37e577bb512743f612f6d7ead301970f1a01dbd15a7a4467147823a1e226ce5643817fafb900" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "7f7bec7da5b5b88bd33ac8c94dbee5700c6fdae5454a98a21516edea8a8d5714c16d49957b3eebbb4b88aa3f3e2e17590f2b056894cb1093c7399a403ad33007" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "398ab57bf00e675ccf5c6a34c88013f86488cece97646db6e00aac40ca3e2f68c8ee6e2d73a14ee9484cb6405f1f653ff896ff95b062221c0c36df2a71b5e50f" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "8ea937bb5a9451161b32605676731ded282d3878e8058d585759b43ee1700a77a33d1b21614486e0240fc1d0af39723cc85ea403479d6efb62c05cc6fdd16a08" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf47e74acfdc137847a1c96d7ef42e3049a347cf96c6b873e5047dd2e50050e13a0dba4907138ba3c29e1c768ddfc6332647fb9658fede4229192e1bc5b6d409" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "9c17a9c043a6dc378334f162999767acc012f6cb33e041f3c9b14963cacb1a32b6cba552931eb9ddd8bd78bf0a872498a8829c4c6c261a2978b083a8639c110f" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "c5698a3a2195c4399b4e04fc9db778a7c02acf82c691517fad43a387083fa4dfe9331c1429c10d22ca14088516518939b104994c68dfc16d21b1ada46ef7b700" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "78f401be103e238daf3c931c2eeb6e7a0eb118042bcbabce533a4d0057e9a19b7df5357fd8f837f36d58a69b1a2719ab2e326e4656e92e8435dd14ba2b01640f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.root.json deleted file mode 100644 index f277106f..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.root.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "876195f83e8dbb1b00f70188fc7f405d05d321da97a9b98781f331d2dea6be1415d0a0b4e23697f2e30235e98c3503a2ec3aade3bd4c1bac8109f368d9ed5005" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "ff3e54a7492085d33ebf25158ce673fdd7d871a49cdccbe31b35c9ba1c28b91fd22b161b8a226248b3ef3e81378cdaa1ef3e37c2100363ec1be6d87d19a2aa0c" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "59da18183f6729135b74539865f55e5c6e3d837209b724922cd56dd79f46c7150016930f477707c78ee9e39ee0f1a8e18304ab4cdaf1c11f81f147cbf5c57904" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "c0b98cba687cdab0628872207026501c9b3c289af113c0be83176a908e58a647b2be9716b37ae4acc78327bbcd715d97d200953681646f3bc918e6c0f409dc0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "7fa4506b7e9c6aac34b6c9b5e1099e8fa995fb1af7804cb9245b0132edf41739b7049277de11577c1ff72c1cf8fe41ba3ec32bf802cf16cb19e42765f53d3f0e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "8c5af6fd1930026a1a9d9816e18205dc4e6bbf0e4b9dd7385d9cc10ca6bf3609cce7c62d5ea5432e0a67e3c395531cf1c67f874f0ba1acb27bf161423b34500c" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ef03e8b766ffe280b1486460ee1b8cd92e6605d4d4af32696a0345b940767f7e3ae66f217b97eae12aa704fa5ee03073079046efe4c76c14989c4784d2d1fa0d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "0a536f66722b82fa8da8ef6837cdae1d719abe72dd27fe36a4fcb2d21302989bb897275825bfef3a5f93fd487f947c75c703da69ad67988c1be46a975a8a6602" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "caf6083cc4ab3fc5a39cc243d08faf0724435b9189b4a3349cb8955b321d9c644697c9d96698e09a5c47f5d032a562c97b08a3e840dbb60f4224afeb438a3a0b" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/2.root.json deleted file mode 100644 index 06509adb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/2.root.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "1796c3a9956f553c32ff9c7db8734af9d960989f89f185ef0edc36a87591d2e815ef84a7903bd553ec7ed156170e0c701739bdb9c8fd61316b36dd870525b30a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "1aae88766ce5015d6ec2e75345a8ed5ac7b7e7a3c234e7f2215c37e577bb512743f612f6d7ead301970f1a01dbd15a7a4467147823a1e226ce5643817fafb900" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "7f7bec7da5b5b88bd33ac8c94dbee5700c6fdae5454a98a21516edea8a8d5714c16d49957b3eebbb4b88aa3f3e2e17590f2b056894cb1093c7399a403ad33007" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "398ab57bf00e675ccf5c6a34c88013f86488cece97646db6e00aac40ca3e2f68c8ee6e2d73a14ee9484cb6405f1f653ff896ff95b062221c0c36df2a71b5e50f" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "8ea937bb5a9451161b32605676731ded282d3878e8058d585759b43ee1700a77a33d1b21614486e0240fc1d0af39723cc85ea403479d6efb62c05cc6fdd16a08" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf47e74acfdc137847a1c96d7ef42e3049a347cf96c6b873e5047dd2e50050e13a0dba4907138ba3c29e1c768ddfc6332647fb9658fede4229192e1bc5b6d409" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "9c17a9c043a6dc378334f162999767acc012f6cb33e041f3c9b14963cacb1a32b6cba552931eb9ddd8bd78bf0a872498a8829c4c6c261a2978b083a8639c110f" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "c5698a3a2195c4399b4e04fc9db778a7c02acf82c691517fad43a387083fa4dfe9331c1429c10d22ca14088516518939b104994c68dfc16d21b1ada46ef7b700" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "78f401be103e238daf3c931c2eeb6e7a0eb118042bcbabce533a4d0057e9a19b7df5357fd8f837f36d58a69b1a2719ab2e326e4656e92e8435dd14ba2b01640f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/root.json deleted file mode 100644 index 06509adb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/root.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "1796c3a9956f553c32ff9c7db8734af9d960989f89f185ef0edc36a87591d2e815ef84a7903bd553ec7ed156170e0c701739bdb9c8fd61316b36dd870525b30a" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "1aae88766ce5015d6ec2e75345a8ed5ac7b7e7a3c234e7f2215c37e577bb512743f612f6d7ead301970f1a01dbd15a7a4467147823a1e226ce5643817fafb900" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "7f7bec7da5b5b88bd33ac8c94dbee5700c6fdae5454a98a21516edea8a8d5714c16d49957b3eebbb4b88aa3f3e2e17590f2b056894cb1093c7399a403ad33007" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "398ab57bf00e675ccf5c6a34c88013f86488cece97646db6e00aac40ca3e2f68c8ee6e2d73a14ee9484cb6405f1f653ff896ff95b062221c0c36df2a71b5e50f" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "8ea937bb5a9451161b32605676731ded282d3878e8058d585759b43ee1700a77a33d1b21614486e0240fc1d0af39723cc85ea403479d6efb62c05cc6fdd16a08" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "bf47e74acfdc137847a1c96d7ef42e3049a347cf96c6b873e5047dd2e50050e13a0dba4907138ba3c29e1c768ddfc6332647fb9658fede4229192e1bc5b6d409" - }, - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "9c17a9c043a6dc378334f162999767acc012f6cb33e041f3c9b14963cacb1a32b6cba552931eb9ddd8bd78bf0a872498a8829c4c6c261a2978b083a8639c110f" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "c5698a3a2195c4399b4e04fc9db778a7c02acf82c691517fad43a387083fa4dfe9331c1429c10d22ca14088516518939b104994c68dfc16d21b1ada46ef7b700" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "78f401be103e238daf3c931c2eeb6e7a0eb118042bcbabce533a4d0057e9a19b7df5357fd8f837f36d58a69b1a2719ab2e326e4656e92e8435dd14ba2b01640f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:18Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/snapshot.json deleted file mode 100644 index 98ee47eb..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7945d5bbebfd0f077a6f8bcac4eed402709f07307663b935835712ff4fb4eebbc51146039d0a1ecb3bc7726c526f12e0b063cc3d9dae1c422179db99d4409b0c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/targets.json deleted file mode 100644 index 210307f1..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "1c07f726a8988b2bbb150cd91c36fa2e0716eb904a89002e24f2382641d5f7680e04cbedbecf89034c8b6416b7a31d5c4bdcc20f0aa2cd976353828cda0e3e0e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:18Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/timestamp.json deleted file mode 100644 index f5c7c185..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_root/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "18e08cd54878e2af5838ed4445230e687ce0007c1b886b3c1446ee639365b0053e294c930b176fdb1258af9f957e4c4927beaccbbffb354cc27b9d5745257808" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:18Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "765e1bc98ad6235b9a6e1c200e8576c262ed924ba81a9960268a65b7fc1bba91", - "sha512": "b245cd1eb39623b7d6d9d07765bae5e7a373471c4bfc66862042e50f0ced2fbe564dfd23565ce7746e926492d6543c700b22ce48bbe19f5e4128698d243cea49" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/hash.txt deleted file mode 100644 index b0c267a5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/hash.txt +++ /dev/null @@ -1 +0,0 @@ -af9b3cfe7cc8b819338f9cf29b6d297df3c3b5969d7fd08fd5f0d945932051e6 \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.root.json deleted file mode 100644 index fe8ada34..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e74e989e4ef342e273a7838703998da620fe1585a53bc9b0700c458acd83d82a8e35d69c9ef448b0ab591da6dbfc22341c950dd32ffbb1f525923c34b9047704" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/2.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/root.json deleted file mode 100644 index fe8ada34..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e74e989e4ef342e273a7838703998da620fe1585a53bc9b0700c458acd83d82a8e35d69c9ef448b0ab591da6dbfc22341c950dd32ffbb1f525923c34b9047704" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.root.json deleted file mode 100644 index ecf8e782..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "6fcc711c61ce5cebe08cc4f3ed4ccfbee0d33a223cea1258d8a10af6be18627129d2ab2b063283eadcd36e67dd8713af00390aa44733ce9889e2aee2e2e1c600" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.snapshot.json deleted file mode 100644 index decb1f60..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "9b7a3b750e08dfc308b46c3671df8385f782507498c03d2f9f7ecd08045e1112ae034e176f5afea79008aa6bc6dd514fc86aaeec598521d2b5e3247d28e56f0b" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "65b00baea2495c7c2093e65b249597160020ec400ec993979ac07acfc99aab4ea8a2a5ed30bde8ac6c9e7d762d2a6f508ba2aefe47b3615d7eb3d3807d6ebe08" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "02926e5f258062cad02f5246701737146bd84ce82a3641d172e0534204604be437aea4842a55964a368416679255308c0db6f7980c885d9afaeae92fc779a40d" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9efc64982359e93211f05350e1399c1953579807ace961423cdc5c2406df96180b56f94ddac14511bc8430625f230235f51a98e9c546c262f9b444e08c31c50d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "3105c9e05fb0a536586a9f241c40ffd0696bb11be43bc50ad18fb63799764139a839bee36c58e509d725b4350658c3d3c2a3e60050de66eda65a87be36b6cc03" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "7b4fd39d2babaead15732edf5cadd72b77e3e3cc8b46a5462fe9eadf4ef79cffe15d7b95d56b94d2e4776a2892c5c9ca7895ec6fabaaa563071be633375b3c03" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "24b9b1f3730d6cc8293d83ebae86e3ea3a9bbb4d0a8907b2c71001cc1b0d257814f037f5aa06f8425e871c66f7c377ab197bfceb4402144924dbbe0422103607" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "5bc6f5738109fe3be3e02c8558a241d61d7494fd76a0274774485ff6b010f41f718b184a3a743a2ceb16324e5bcd57daa6fb87cf32c85bf6c01d8a3098238308" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3e3a376641fce12b3df639293cf52c29fbf6a04398ab6e69d2bf12cfae264ace4c984816440536e870cc50816fb2b94e9b9824ce873c7237561afa9bbb649304" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.root.json deleted file mode 100644 index fe8ada34..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e74e989e4ef342e273a7838703998da620fe1585a53bc9b0700c458acd83d82a8e35d69c9ef448b0ab591da6dbfc22341c950dd32ffbb1f525923c34b9047704" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/2.snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/root.json deleted file mode 100644 index fe8ada34..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e74e989e4ef342e273a7838703998da620fe1585a53bc9b0700c458acd83d82a8e35d69c9ef448b0ab591da6dbfc22341c950dd32ffbb1f525923c34b9047704" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:19Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/snapshot.json deleted file mode 100644 index 7cb73051..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/snapshot.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "25cd6eee4f580fed660330de02cb9ab34b9e7495d3f4c57babf225c3c2c39a0937afe633a7760c19681c6b05d89f2c3907a7eef32822992624223cfbcb872d00" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "2011938c47cf0990172acc5a418b9758d124655200b6874fb6646bd6025de6c5a48a3c30ced83b1f955b242c1c3f4d2d346b71861fccdc45c945418aa2511d0e" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "303b7b1062a09644bd18804b6b1af6818c25abd212b6539cab0fab0e729a4eb14621396fde4d809649c37b82db5278e878b21b52052ac4fecbcff471c8f64408" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "85961c73d21ab17e5892681198479700a995920cd02001818979fe35122e5776fcc3fd499811b1f995f922ad737d61c5b72229ab1e4d7aab63d9ea1642795c0d" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "4aed1e9ef8d1ac785d15df386470df92ff484f71c35a37ecd1e83e0fd66e67206172f6a2f277bdebae17372e75d253b45143adf3f9d8b6d23a4690d482e2180b" - }, - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "26ed17502d130ab4c7b26a1ef78730d9f15847cc3aa6623f692003e588554761b6f6c3b60da304933b3e012478466ce634970562504fdab9b6d2c8e818f3220e" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "0b498cf7cd3a926007f158d9b72002283d67f4f0c2e4a61d5bb3d3afe09d0e9dcd41a4bc67d5cc87a2d072028904d2e022ca4d2abc84137433cdd6812f613505" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "1f9aea75e9b632f06769ac0aa611ce3116faa14a3736cddc4cdbcae5f7084a0cd44c4a44a8c78a4200f34b097c0176c8c686b352c79105ffcfd764473f9d3206" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "3f315ca76675299894f1ad111dcce7450e1e2f06400e64a86db5d42c67a14fc7a8f92b1063ae547229544d046bcbb038027e0e0abab05bfb6600f7349a9bf90a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/targets.json deleted file mode 100644 index 56b7bfaf..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "51fff9a858517278b811fc9b8dc4fee5e10c5f444a87bc259cb0241ea54f1da693cf844412693d6ea24bed5302a508d08879e0a32a961f1132a646ef9f370a07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:19Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/timestamp.json deleted file mode 100644 index fa706c20..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_snapshot/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "de078d3c5438334ab51ed4e433cab94b53f883dad9519505ebe64088f13077f725d96b54c10afbf7909c95ddfd829d0bcca82e09612b91d63dbc9a34e830270c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:19Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "16459413316a5b9a617e84c06840164beaa4d7ef0b67c0c720acefc89cb15be3", - "sha512": "c118a299f2be396ef21097a0803166b1d796256a3c68e3590e1addd656e804dd28d32e67664e460066af4b956f50fcd1abd8b614e2535fb7e175d8e2819d1d87" - }, - "length": 2271, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/hash.txt deleted file mode 100644 index c0a124d5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/hash.txt +++ /dev/null @@ -1 +0,0 @@ -0d1fafc3b1e2fba17b6702b14477333fd5ed2379cfc454304a93524503f2594e \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.root.json deleted file mode 100644 index 216adcd5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "5221883d99795f64519d986c33744cf101b50d098735859192a6536a62f2af62d28c7d3348f407fd4302b6c6be8198b5fb33b41a660bc998751626898e954105" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.targets.json deleted file mode 100644 index e3be9d9b..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "24efa3e5c6463307219075f5c4e816a3c2643024d36909735dbcd617c4300246b4384db27cefce01a8481b6c52f5dad2f3f416830912bf0b0d8398c14508e705" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f9304ff820dbb0f245baa68291ffaa901fa160d446a2fbe864e561afc74006c1f47e112eef2f51a78efa87335d2dc86392d0d3c84d69744366202caa35c80801" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "d2e5e871f943281e59bce283ac874bdd9ec1ed461bf9a7dce48774b577fd481fe3e0975670fbc684d0bbc881974e832cef02ced09f0e533a621266b81b8f1307" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d3044468af5877042ef1585a83d8dc59bf4bd8f0b20837d6e73d39828ed15c1e13fb64ab02d9dbc2940768b02ac95d8cc17d05d9c9fea4200a98453b8463c408" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "cb5da30b57e62e562cb8897adde8ecfc195d9d513ec59ed4931c5d8f1612518f644e7e78f674b8de646373747bcf08a4025351167c3a77d8eff382823d18670b" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "eccd5243a12063c73c56ecad469da0c2ce96dbfd4f04c8f6c5b1456336193d92f6ef69efb5ec6e69d29e868983a576d2baab66e983b7ae7bee553f5fcd9ef909" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "4892c826626dd62c189707efcd1b340ed6bf6e68833eefb1f94020bf59a9c4eefafacfa4a3998d149fca8ad5a30e12f8aa1a936821c45726d445403df0688508" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "12b6240c2d9a922a35591e3d86877f4a407210f7e6d3bf270ef2e496394029f731f77cb3220a361b0b49b54f5564969aaa62262219db0a5b58b86fd0cf42420e" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "894a62b4b9ae92e45298abd9465aeedeba40eb82a4ca014d41f1b58b6117d9ab3e89c2d152e2a7adce99396bc53c9f1324dbb4af8ff00e251f3f16e1ed52f103" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/root.json deleted file mode 100644 index 216adcd5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "5221883d99795f64519d986c33744cf101b50d098735859192a6536a62f2af62d28c7d3348f407fd4302b6c6be8198b5fb33b41a660bc998751626898e954105" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/targets.json deleted file mode 100644 index e3be9d9b..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "24efa3e5c6463307219075f5c4e816a3c2643024d36909735dbcd617c4300246b4384db27cefce01a8481b6c52f5dad2f3f416830912bf0b0d8398c14508e705" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f9304ff820dbb0f245baa68291ffaa901fa160d446a2fbe864e561afc74006c1f47e112eef2f51a78efa87335d2dc86392d0d3c84d69744366202caa35c80801" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "d2e5e871f943281e59bce283ac874bdd9ec1ed461bf9a7dce48774b577fd481fe3e0975670fbc684d0bbc881974e832cef02ced09f0e533a621266b81b8f1307" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d3044468af5877042ef1585a83d8dc59bf4bd8f0b20837d6e73d39828ed15c1e13fb64ab02d9dbc2940768b02ac95d8cc17d05d9c9fea4200a98453b8463c408" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "cb5da30b57e62e562cb8897adde8ecfc195d9d513ec59ed4931c5d8f1612518f644e7e78f674b8de646373747bcf08a4025351167c3a77d8eff382823d18670b" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "eccd5243a12063c73c56ecad469da0c2ce96dbfd4f04c8f6c5b1456336193d92f6ef69efb5ec6e69d29e868983a576d2baab66e983b7ae7bee553f5fcd9ef909" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "4892c826626dd62c189707efcd1b340ed6bf6e68833eefb1f94020bf59a9c4eefafacfa4a3998d149fca8ad5a30e12f8aa1a936821c45726d445403df0688508" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "12b6240c2d9a922a35591e3d86877f4a407210f7e6d3bf270ef2e496394029f731f77cb3220a361b0b49b54f5564969aaa62262219db0a5b58b86fd0cf42420e" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "894a62b4b9ae92e45298abd9465aeedeba40eb82a4ca014d41f1b58b6117d9ab3e89c2d152e2a7adce99396bc53c9f1324dbb4af8ff00e251f3f16e1ed52f103" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.root.json deleted file mode 100644 index c067b5f5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "ba2efed303d416f5e38018fb72802fb9263c87e6ad63725fd5e839d3cec51e2cfd50bdd0004a96a4017ef929249fc263332a54d0c86552f9014e68f6972b3c08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.targets.json deleted file mode 100644 index 0dab21b5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "2a088977e3828da40fbe4f245d9d0ab6cf6e81eb30835531a1a732e75dc734214d70061ef6e1c30a1984b9d36401d257952471a974314c148823d207781fdd09" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f48198da5d992e46d55f092689c442bf31d83b9c9187d83defee46f7fea5a802c0badc1ab3ae2799492946946b29b90b2c10eaca7f5e8e33a00c555e0d5abc0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "37fffad3ba0cb53593b1d2cf7aa0437cfb821a66d00c1b3ad6dd858117b66336ad42ac7a53de241dcacbd5961e2b22d4c5c1e6535cd0595645c813a0fc222a00" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "42964abf028dd306e5a98920e90c5234dd01492259fbbfe6cafcb3d6076d34bfc296b2e57834a2f7039fdab89fee185dd2291abfec61a9bce256556a922ae006" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "6ba3c3e8485f4298bff2547bc39237d0ba07d275028ef8a7b0d051a1a8867f7d38cf5973b4f5b4acd868820dfc5d4eb86646c87fe9b3cbe77e50a2dcaf963b04" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "3e5189ac4c3c485c833ff697056e07eeae6cabc2de11a32c2a6a074d622ff22295d0ed8f3e42882caa4f59c09ceb3869a6d7b663439327e6f0e56c713ff1780e" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c5688ea77f9e7020c2664920af7d48814231dea91a1997d7adec74f9e167e55dea7797603ebea9f9352c4e91306f92cb81980b9351787d90cbf23e706a26730e" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "17adcf644ace2f7e66abf30980426db96c2b1bf275ea728593433feeb90e39e4b2db1bbd5128f8fe56a1fa3db8afafe5fec2b40903b402015a9554c24d543704" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "bed1c8e2e94072dc3c8bf0f823ada338ce7eae194d3d1df6596fb49efdf59733137d02f10b8521db6b00c696d45a1f4689ae350ee1a6cbd5dcc63700da70b401" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.root.json deleted file mode 100644 index 216adcd5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "5221883d99795f64519d986c33744cf101b50d098735859192a6536a62f2af62d28c7d3348f407fd4302b6c6be8198b5fb33b41a660bc998751626898e954105" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.targets.json deleted file mode 100644 index e3be9d9b..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "24efa3e5c6463307219075f5c4e816a3c2643024d36909735dbcd617c4300246b4384db27cefce01a8481b6c52f5dad2f3f416830912bf0b0d8398c14508e705" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f9304ff820dbb0f245baa68291ffaa901fa160d446a2fbe864e561afc74006c1f47e112eef2f51a78efa87335d2dc86392d0d3c84d69744366202caa35c80801" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "d2e5e871f943281e59bce283ac874bdd9ec1ed461bf9a7dce48774b577fd481fe3e0975670fbc684d0bbc881974e832cef02ced09f0e533a621266b81b8f1307" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d3044468af5877042ef1585a83d8dc59bf4bd8f0b20837d6e73d39828ed15c1e13fb64ab02d9dbc2940768b02ac95d8cc17d05d9c9fea4200a98453b8463c408" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "cb5da30b57e62e562cb8897adde8ecfc195d9d513ec59ed4931c5d8f1612518f644e7e78f674b8de646373747bcf08a4025351167c3a77d8eff382823d18670b" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "eccd5243a12063c73c56ecad469da0c2ce96dbfd4f04c8f6c5b1456336193d92f6ef69efb5ec6e69d29e868983a576d2baab66e983b7ae7bee553f5fcd9ef909" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "4892c826626dd62c189707efcd1b340ed6bf6e68833eefb1f94020bf59a9c4eefafacfa4a3998d149fca8ad5a30e12f8aa1a936821c45726d445403df0688508" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "12b6240c2d9a922a35591e3d86877f4a407210f7e6d3bf270ef2e496394029f731f77cb3220a361b0b49b54f5564969aaa62262219db0a5b58b86fd0cf42420e" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "894a62b4b9ae92e45298abd9465aeedeba40eb82a4ca014d41f1b58b6117d9ab3e89c2d152e2a7adce99396bc53c9f1324dbb4af8ff00e251f3f16e1ed52f103" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/root.json deleted file mode 100644 index 216adcd5..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "5221883d99795f64519d986c33744cf101b50d098735859192a6536a62f2af62d28c7d3348f407fd4302b6c6be8198b5fb33b41a660bc998751626898e954105" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:22Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/snapshot.json deleted file mode 100644 index 6a260788..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "8d1132037c4a0fb48600ecda532f1518a24e85aba93147021f763762793ff82e75fa5b7904d223085ceabbfe10206f667cd4951fab481b3712ab01115e85060a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/targets.json deleted file mode 100644 index e3be9d9b..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "24efa3e5c6463307219075f5c4e816a3c2643024d36909735dbcd617c4300246b4384db27cefce01a8481b6c52f5dad2f3f416830912bf0b0d8398c14508e705" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "f9304ff820dbb0f245baa68291ffaa901fa160d446a2fbe864e561afc74006c1f47e112eef2f51a78efa87335d2dc86392d0d3c84d69744366202caa35c80801" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "d2e5e871f943281e59bce283ac874bdd9ec1ed461bf9a7dce48774b577fd481fe3e0975670fbc684d0bbc881974e832cef02ced09f0e533a621266b81b8f1307" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "d3044468af5877042ef1585a83d8dc59bf4bd8f0b20837d6e73d39828ed15c1e13fb64ab02d9dbc2940768b02ac95d8cc17d05d9c9fea4200a98453b8463c408" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "cb5da30b57e62e562cb8897adde8ecfc195d9d513ec59ed4931c5d8f1612518f644e7e78f674b8de646373747bcf08a4025351167c3a77d8eff382823d18670b" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "eccd5243a12063c73c56ecad469da0c2ce96dbfd4f04c8f6c5b1456336193d92f6ef69efb5ec6e69d29e868983a576d2baab66e983b7ae7bee553f5fcd9ef909" - }, - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "4892c826626dd62c189707efcd1b340ed6bf6e68833eefb1f94020bf59a9c4eefafacfa4a3998d149fca8ad5a30e12f8aa1a936821c45726d445403df0688508" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "12b6240c2d9a922a35591e3d86877f4a407210f7e6d3bf270ef2e496394029f731f77cb3220a361b0b49b54f5564969aaa62262219db0a5b58b86fd0cf42420e" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "894a62b4b9ae92e45298abd9465aeedeba40eb82a4ca014d41f1b58b6117d9ab3e89c2d152e2a7adce99396bc53c9f1324dbb4af8ff00e251f3f16e1ed52f103" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:22Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/timestamp.json deleted file mode 100644 index 04f3fdf2..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_targets/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "09068b028ead5c22678544002721e77c9cea836ed1034ea90c5757ac8fdd121a5bb9b54891306643e45816f63edb563a2faf88c0b92f4a6da7c9102fad1cde09" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:22Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "e4f270f0f80cd430d6b7596625a9f75664ca0d0fe27f42a9bfde9041d498b737", - "sha512": "abeb893c9e16771a1336374ff257dcb6752c2ed3ad51de8f2a9799f2dd515fc3677bb8bb4f0420a2e423f2c87f26a2a04df9f380ea2d2d6dc6b7f9cbb337cd8f" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/current/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/hash.txt b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/hash.txt deleted file mode 100644 index 9f6c8333..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/hash.txt +++ /dev/null @@ -1 +0,0 @@ -2d2c91c4805412779df23c78ae6477ea01ca2bccc740eb1750b6b8d4e02d527a \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.root.json deleted file mode 100644 index 5ecd3432..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "af983d51f4deacf728c3076b7a5c79dd8c8d2c1c25071ec1523ca4d18f47e1d5e39a411ae18f437267079300fe0c74331e0f3231017f9a39a2f11628079e3406" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.timestamp.json deleted file mode 100644 index be3cf940..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ec1d63e79fadec3dddb5852a1007fa7e5ed4b746b3d608ba9d3fa6fa2f25afa308a72474d820fe2b88adf4f9d6352e57fe7475725e539858f1ab07ab7a5ca305" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "c3021d40208c80b25034d7d7d29d2faeeb7b0e4e3238430a0f2c0435337d3b2c47e87f4ec2c5692dc2aec01dee8e72feea2b6f72cb17591aca1e5252fe2c4f0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "dbe051e077a6d7ad54ad39c41e3fc497c65b8f5cd9ac9b9c7bf0900dba979614198922232fcd2ef66ec9d5e571b9e936cd997c41e74c55abce8448d13b178007" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "76946f3caeba163ff8fcaa9892f92457a9531da85092ddff660d8af2859fc94ea714e1962ab704a4e028fe48b195b850d6c29d13cf668bb2bf41b0814229b402" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9f5c7234e8c67e15fa326bc693595b6ac75aacbec4c5c6bd07bb4c8d8e9bfb35d1ee121987629e45fbb2f4fdcd6593a1f4cd1231b361b89832dcc19be248f70a" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "d33845b0bfc6ace034377acc4e043dedd3c26c1d58b2f11bb3fa9416c86f55a396c3547d5f95662cbafe231af913752be851947413fca7fa5ec86948aae8ae0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "f94b9c239f481f74715627accec1f2794faeefbc0a110e4ac4c8ab0f3451812042ea5b5f85b66b568ea2b00ac46b3d5496b184bc6a59fdee1361b6dbf5e6d90d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "b17e9fed31051906f6d31c81db44c025718ced629d2d2914e09c0da4f303163bbfbd11673491aafcce6e35226b3c2f1a6fefa3ff5f39b838d4c3d736e521ac07" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "b82b9a726284bbc488f3fa8e7b91cd641b63aa0488c7706d7a8a09eecd9a12ce99e02fe77e0994084e72316476e26df42aac2d89616674e40c82a1c3f7082409" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/root.json deleted file mode 100644 index 5ecd3432..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "af983d51f4deacf728c3076b7a5c79dd8c8d2c1c25071ec1523ca4d18f47e1d5e39a411ae18f437267079300fe0c74331e0f3231017f9a39a2f11628079e3406" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/timestamp.json deleted file mode 100644 index be3cf940..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ec1d63e79fadec3dddb5852a1007fa7e5ed4b746b3d608ba9d3fa6fa2f25afa308a72474d820fe2b88adf4f9d6352e57fe7475725e539858f1ab07ab7a5ca305" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "c3021d40208c80b25034d7d7d29d2faeeb7b0e4e3238430a0f2c0435337d3b2c47e87f4ec2c5692dc2aec01dee8e72feea2b6f72cb17591aca1e5252fe2c4f0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "dbe051e077a6d7ad54ad39c41e3fc497c65b8f5cd9ac9b9c7bf0900dba979614198922232fcd2ef66ec9d5e571b9e936cd997c41e74c55abce8448d13b178007" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "76946f3caeba163ff8fcaa9892f92457a9531da85092ddff660d8af2859fc94ea714e1962ab704a4e028fe48b195b850d6c29d13cf668bb2bf41b0814229b402" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9f5c7234e8c67e15fa326bc693595b6ac75aacbec4c5c6bd07bb4c8d8e9bfb35d1ee121987629e45fbb2f4fdcd6593a1f4cd1231b361b89832dcc19be248f70a" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "d33845b0bfc6ace034377acc4e043dedd3c26c1d58b2f11bb3fa9416c86f55a396c3547d5f95662cbafe231af913752be851947413fca7fa5ec86948aae8ae0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "f94b9c239f481f74715627accec1f2794faeefbc0a110e4ac4c8ab0f3451812042ea5b5f85b66b568ea2b00ac46b3d5496b184bc6a59fdee1361b6dbf5e6d90d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "b17e9fed31051906f6d31c81db44c025718ced629d2d2914e09c0da4f303163bbfbd11673491aafcce6e35226b3c2f1a6fefa3ff5f39b838d4c3d736e521ac07" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "b82b9a726284bbc488f3fa8e7b91cd641b63aa0488c7706d7a8a09eecd9a12ce99e02fe77e0994084e72316476e26df42aac2d89616674e40c82a1c3f7082409" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.root.json deleted file mode 100644 index cc719f73..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.root.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "87ccdd9f898665507c07b9b5ae4b19cc5069a35db47d2bb59fe31324c019f384701a650966965f680c2fb2e43950beaac3818c430a5e0450a2d61439273b4803" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.timestamp.json deleted file mode 100644 index f95627f9..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/1.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "0d88a87a5c298a1629f784cdad65c1fc6bf65a2a5e6fe92912e86d0c86ef5a8d4a90b978b1b80c980fe5f04cc78f76b1fb388d964208c3136690b12054da4008" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "570e7580e1087363f1c1ba92b97cb92d5157a21c044ad3ae3f7638b087c8d8257cade3db5d40e0006ef41fa90c7cc6fbff8fc3ebe91324edfcd4e539617f6c00" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "4f7000d954a4133cb731c60f45bbfaf172327b866570f8f81035c8177cf0d1ec725fe4c1e48be94d649ee69a9434c0a00aff85aaf3198b242783569995d60c03" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "af71d15c2434dbd9ed4e2eb05628227e9ce9ced8eb9546153544e928f35f18e9093c5ba3a5ee30d71d2000065e0a94a729e5db90e519839b3255c627922d5706" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "952a8b5311c810be01ee3b79aeb837a408e53aa316d8b3b79843e27899f951fbd6b335507739c045582a6abc47d43912ba7533786342d1a726cf96c8b2464806" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "58c5523a8f0b127b320772c1525ad3d5c98ce1217a178b02c97ea855a3a1e7d3037b5f7c21a485d6bf1815c11f4e56a874a6c4c72ab26590246ba7ce51c3f001" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "5250b1ef0952043c6787cb0818e0bc9ab309e57ad40763471a06e72df759b952043b33de0b5f3d5ee5c08ab9143248dc5eabb81b236548cb8241a06a0d3bd405" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "27735b3d6b7f6cb928f4b5ea689127d4f22213dc49560e3aa6043cb385a1cf2656bc806bbade810bb301c0ba906b638691ba0cf7557b5f7fb696a15c3a581005" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "5d4076732895f6ef7419cbaab36e61e18e99c19320ef9fb94b9b34a7146f1d790940847986ed61fca47bfce36ab67f19e476232fb3d30dcc690c887c2eb9d704" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.root.json deleted file mode 100644 index 5ecd3432..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "af983d51f4deacf728c3076b7a5c79dd8c8d2c1c25071ec1523ca4d18f47e1d5e39a411ae18f437267079300fe0c74331e0f3231017f9a39a2f11628079e3406" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.timestamp.json deleted file mode 100644 index be3cf940..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/2.timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ec1d63e79fadec3dddb5852a1007fa7e5ed4b746b3d608ba9d3fa6fa2f25afa308a72474d820fe2b88adf4f9d6352e57fe7475725e539858f1ab07ab7a5ca305" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "c3021d40208c80b25034d7d7d29d2faeeb7b0e4e3238430a0f2c0435337d3b2c47e87f4ec2c5692dc2aec01dee8e72feea2b6f72cb17591aca1e5252fe2c4f0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "dbe051e077a6d7ad54ad39c41e3fc497c65b8f5cd9ac9b9c7bf0900dba979614198922232fcd2ef66ec9d5e571b9e936cd997c41e74c55abce8448d13b178007" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "76946f3caeba163ff8fcaa9892f92457a9531da85092ddff660d8af2859fc94ea714e1962ab704a4e028fe48b195b850d6c29d13cf668bb2bf41b0814229b402" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9f5c7234e8c67e15fa326bc693595b6ac75aacbec4c5c6bd07bb4c8d8e9bfb35d1ee121987629e45fbb2f4fdcd6593a1f4cd1231b361b89832dcc19be248f70a" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "d33845b0bfc6ace034377acc4e043dedd3c26c1d58b2f11bb3fa9416c86f55a396c3547d5f95662cbafe231af913752be851947413fca7fa5ec86948aae8ae0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "f94b9c239f481f74715627accec1f2794faeefbc0a110e4ac4c8ab0f3451812042ea5b5f85b66b568ea2b00ac46b3d5496b184bc6a59fdee1361b6dbf5e6d90d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "b17e9fed31051906f6d31c81db44c025718ced629d2d2914e09c0da4f303163bbfbd11673491aafcce6e35226b3c2f1a6fefa3ff5f39b838d4c3d736e521ac07" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "b82b9a726284bbc488f3fa8e7b91cd641b63aa0488c7706d7a8a09eecd9a12ce99e02fe77e0994084e72316476e26df42aac2d89616674e40c82a1c3f7082409" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/root.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/root.json deleted file mode 100644 index 5ecd3432..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/root.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "af983d51f4deacf728c3076b7a5c79dd8c8d2c1c25071ec1523ca4d18f47e1d5e39a411ae18f437267079300fe0c74331e0f3231017f9a39a2f11628079e3406" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2031-09-09T23:20:21Z", - "keys": { - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf" - }, - "scheme": "ed25519" - }, - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8" - ], - "threshold": 4 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/snapshot.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/snapshot.json deleted file mode 100644 index 1e51a237..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "5939785ca69e19f3dd0e1c9a6fe36179625528fb36e30173a88dbdf139eb1ed7f9f3e0f4e0db075ff51a74141e70669cb329a042938369faa3ca1d5605c0980a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/targets.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/targets.json deleted file mode 100644 index 1a026e51..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "6745efba317ff34aea61685be997d9ee18d02fee2445cfd9cef32da940d2497b12986b95edbc9be38302bbca90ade299697ad2506ce354b8a3ea9528898fab09" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2031-09-09T23:20:21Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/timestamp.json b/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/timestamp.json deleted file mode 100644 index be3cf940..00000000 --- a/client/testdata/PublishedTwiceMultiKeysadd_9_revoke_4_threshold_4_timestamp/server/metadata/timestamp.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "ec1d63e79fadec3dddb5852a1007fa7e5ed4b746b3d608ba9d3fa6fa2f25afa308a72474d820fe2b88adf4f9d6352e57fe7475725e539858f1ab07ab7a5ca305" - }, - { - "keyid": "06e78858e726b48732eaae08a5731465587d322f4e63c0fae62ec13537c0a1cb", - "sig": "c3021d40208c80b25034d7d7d29d2faeeb7b0e4e3238430a0f2c0435337d3b2c47e87f4ec2c5692dc2aec01dee8e72feea2b6f72cb17591aca1e5252fe2c4f0b" - }, - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "dbe051e077a6d7ad54ad39c41e3fc497c65b8f5cd9ac9b9c7bf0900dba979614198922232fcd2ef66ec9d5e571b9e936cd997c41e74c55abce8448d13b178007" - }, - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "76946f3caeba163ff8fcaa9892f92457a9531da85092ddff660d8af2859fc94ea714e1962ab704a4e028fe48b195b850d6c29d13cf668bb2bf41b0814229b402" - }, - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "9f5c7234e8c67e15fa326bc693595b6ac75aacbec4c5c6bd07bb4c8d8e9bfb35d1ee121987629e45fbb2f4fdcd6593a1f4cd1231b361b89832dcc19be248f70a" - }, - { - "keyid": "75b81ec1572cc1dd55f88f13f0f0217b4e7a25f1665deed40115b612ff9c0eb8", - "sig": "d33845b0bfc6ace034377acc4e043dedd3c26c1d58b2f11bb3fa9416c86f55a396c3547d5f95662cbafe231af913752be851947413fca7fa5ec86948aae8ae0c" - }, - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "f94b9c239f481f74715627accec1f2794faeefbc0a110e4ac4c8ab0f3451812042ea5b5f85b66b568ea2b00ac46b3d5496b184bc6a59fdee1361b6dbf5e6d90d" - }, - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "b17e9fed31051906f6d31c81db44c025718ced629d2d2914e09c0da4f303163bbfbd11673491aafcce6e35226b3c2f1a6fefa3ff5f39b838d4c3d736e521ac07" - }, - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "b82b9a726284bbc488f3fa8e7b91cd641b63aa0488c7706d7a8a09eecd9a12ce99e02fe77e0994084e72316476e26df42aac2d89616674e40c82a1c3f7082409" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2031-09-09T23:20:21Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "47ceec303641a009684536b381ee11129a338e4f8a0ea30f99efa205a78265de", - "sha512": "6d1e34a684483108365554f3c6996fba96f1f64892920436d2c4e27a399bb7b0cdd4fac07d1df250554ab2164e417be7391281b422a12ae26fb1dd619dc8a1c7" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/1.root.json deleted file mode 100644 index 7e05abd5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/1.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "5ff5c02ecdfc36583f4fb1a8e660bee1643f82a1a7cb3291739200b9f9be6ee026958af3b342e6d8d4f242a05f8e8558e146b6f692ddd4a7d558b85e82ad9b05" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "5ff5c02ecdfc36583f4fb1a8e660bee1643f82a1a7cb3291739200b9f9be6ee026958af3b342e6d8d4f242a05f8e8558e146b6f692ddd4a7d558b85e82ad9b05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/root.json deleted file mode 100644 index 7e05abd5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "5ff5c02ecdfc36583f4fb1a8e660bee1643f82a1a7cb3291739200b9f9be6ee026958af3b342e6d8d4f242a05f8e8558e146b6f692ddd4a7d558b85e82ad9b05" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "5ff5c02ecdfc36583f4fb1a8e660bee1643f82a1a7cb3291739200b9f9be6ee026958af3b342e6d8d4f242a05f8e8558e146b6f692ddd4a7d558b85e82ad9b05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/snapshot.json deleted file mode 100644 index e794f209..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "683aae02eb3fcc4fc0ffc37f2f43dc0fdb43e7997d3c65653cfdabcaea9fed8414e3d77047483eca96490747b2a62dec4d17021de42173520f12b60b39ffbc0f" - }, - "length": 3832, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e" - }, - "length": 866, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "30374e6296c813037083321b16c0d2b9578de32a99f56e33134d1936ff14c611e50d0a68bf9e6a2f25dfb449e599f069c51f1c8e3113e36d905a6a0fe825a005" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "30374e6296c813037083321b16c0d2b9578de32a99f56e33134d1936ff14c611e50d0a68bf9e6a2f25dfb449e599f069c51f1c8e3113e36d905a6a0fe825a005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets.json deleted file mode 100644 index 60091e73..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets/0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/timestamp.json deleted file mode 100644 index 9ba2ee4a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/0/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "892f57086442891029dd180f01c8653ab91d0ddba2ab6002437634ad0a3579e31e21ef8790577086773ba8b5ffc1da80451589dae92ae122d2943a963fae9725" - }, - "length": 1125, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "f661d41e29185709f03c5fc28498c369153df6be0eee08d11df869046a5b6605471729541ce8d05d9d5f035adac00d531efe6294c99715270c7e8acc5967fb0a" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "f661d41e29185709f03c5fc28498c369153df6be0eee08d11df869046a5b6605471729541ce8d05d9d5f035adac00d531efe6294c99715270c7e8acc5967fb0a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/2.root.json deleted file mode 100644 index efd2263e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/2.root.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "61cfd8782175d6b88a05088ad57c4147d56328bfeac7a8d2f135e831bb1d9f37eaa32e61405baabec61ae280f5ca47af21a3b2a6ef9866889a0d5eb4ce00fa08" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "61cfd8782175d6b88a05088ad57c4147d56328bfeac7a8d2f135e831bb1d9f37eaa32e61405baabec61ae280f5ca47af21a3b2a6ef9866889a0d5eb4ce00fa08" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "855ab125077b6a8e00f8224ef9e8bd595d8b5baeae7a4588605702b4279030f6a34dfa4ba544d6c66fcbec92dc7dc4d5df4f744b7b9962b281a24f7e5c264905" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "855ab125077b6a8e00f8224ef9e8bd595d8b5baeae7a4588605702b4279030f6a34dfa4ba544d6c66fcbec92dc7dc4d5df4f744b7b9962b281a24f7e5c264905" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/root.json deleted file mode 100644 index efd2263e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/root.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "61cfd8782175d6b88a05088ad57c4147d56328bfeac7a8d2f135e831bb1d9f37eaa32e61405baabec61ae280f5ca47af21a3b2a6ef9866889a0d5eb4ce00fa08" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "61cfd8782175d6b88a05088ad57c4147d56328bfeac7a8d2f135e831bb1d9f37eaa32e61405baabec61ae280f5ca47af21a3b2a6ef9866889a0d5eb4ce00fa08" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "855ab125077b6a8e00f8224ef9e8bd595d8b5baeae7a4588605702b4279030f6a34dfa4ba544d6c66fcbec92dc7dc4d5df4f744b7b9962b281a24f7e5c264905" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "855ab125077b6a8e00f8224ef9e8bd595d8b5baeae7a4588605702b4279030f6a34dfa4ba544d6c66fcbec92dc7dc4d5df4f744b7b9962b281a24f7e5c264905" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/snapshot.json deleted file mode 100644 index bcf536b9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "4feab9708b19ebd38844cab9879fb6c9c52b6a55c4281030149f696090d4e4ca07ebcaf7c97d6e13f41bae6c332242dda18ebeb63fb2555d759b2283cf8187ab" - }, - "length": 4340, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22" - }, - "length": 1067, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "9d6b3455d3749f21974ccfe087044ca46254c84e6d0b8a0767e001a4eb6bb2bee19f341cec0c4f752deebd657fdeea7641df661c6a9d224e1d1fe8cee5826203" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "9d6b3455d3749f21974ccfe087044ca46254c84e6d0b8a0767e001a4eb6bb2bee19f341cec0c4f752deebd657fdeea7641df661c6a9d224e1d1fe8cee5826203" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets.json deleted file mode 100644 index eeb97eb3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/0 deleted file mode 120000 index aced6879..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/timestamp.json deleted file mode 100644 index 7c58b004..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/1/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "c94cf74bfd65605e8310957476c6cad2102bf9d3c76711a3530ed8e5f38289474fb01ac5747b4977d3ff0a4ddbb3f6767231c1ba54c78a708969807a2d587119" - }, - "length": 1126, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "08dc93ecb35c64fe26e319b8a7cb06117d96257c96e4781960f8f0b158f559ec756f8affaafd9b6404494b00525e33b3cd2130f8ea2cb5990e6e5461025ea60c" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "08dc93ecb35c64fe26e319b8a7cb06117d96257c96e4781960f8f0b158f559ec756f8affaafd9b6404494b00525e33b3cd2130f8ea2cb5990e6e5461025ea60c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/3.root.json deleted file mode 100644 index af419a23..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/3.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "f88ad025e4e486cba6fc97d0a28bc9eb25d8f2148f66fb1929a8c906d5cc7753849ff91a56ade22e4a9d8729347617b75cbc34a5769b1cf1db8cbf2137168c0e" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "f88ad025e4e486cba6fc97d0a28bc9eb25d8f2148f66fb1929a8c906d5cc7753849ff91a56ade22e4a9d8729347617b75cbc34a5769b1cf1db8cbf2137168c0e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/root.json deleted file mode 100644 index af419a23..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "f88ad025e4e486cba6fc97d0a28bc9eb25d8f2148f66fb1929a8c906d5cc7753849ff91a56ade22e4a9d8729347617b75cbc34a5769b1cf1db8cbf2137168c0e" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "f88ad025e4e486cba6fc97d0a28bc9eb25d8f2148f66fb1929a8c906d5cc7753849ff91a56ade22e4a9d8729347617b75cbc34a5769b1cf1db8cbf2137168c0e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/snapshot.json deleted file mode 100644 index cc575cd8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "baf96d1da4a27b3e57dc35fa1ddde8b20a18f96f6268e07252ed4840725f599d4375ed99d9509f2edde04309efbba71c86735ba630698401cc1778cc31e768f4" - }, - "length": 3832, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4" - }, - "length": 1268, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "4f202ab758b9a2baefbd23d8fea5deaa8c66d967afa9c52d81df2c17915fc10b059775d53ea858da2c668735f1eb1692f04e2f971545f4ba631f41579e729903" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "4f202ab758b9a2baefbd23d8fea5deaa8c66d967afa9c52d81df2c17915fc10b059775d53ea858da2c668735f1eb1692f04e2f971545f4ba631f41579e729903" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets.json deleted file mode 100644 index 147dfc68..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/0 deleted file mode 120000 index 2ac1d8be..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/1 deleted file mode 120000 index 8e78bc37..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/timestamp.json deleted file mode 100644 index ffcf0ebd..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/2/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "27cf44e990df07e40205463d25a12bbacd2ee3dc2650d1a01a37fa0ac27a5e2c885a6e85c2b07e8f56f8bd165cdcd756b182ccfb7f2728709b7a77a7b2251e86" - }, - "length": 1126, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "9d1c694c4037e0f7d9665ae450ba1b3be30f0a882942802991986f3211788fc347edba9b90a6eeed54c20d9bf5ed9434b0e088a79d7ad2185d16a1b8589bce0f" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "9d1c694c4037e0f7d9665ae450ba1b3be30f0a882942802991986f3211788fc347edba9b90a6eeed54c20d9bf5ed9434b0e088a79d7ad2185d16a1b8589bce0f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/4.root.json deleted file mode 100644 index c0966ce5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/4.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "780d8db1d802ef7ccaa23ae9bcccf7b619d820a505ae75f61453ebbc882ce4dff37194ee112f3da22feba8cc89531329872e22704a75a21658a5ec38ee568c00" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "780d8db1d802ef7ccaa23ae9bcccf7b619d820a505ae75f61453ebbc882ce4dff37194ee112f3da22feba8cc89531329872e22704a75a21658a5ec38ee568c00" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/root.json deleted file mode 100644 index c0966ce5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "780d8db1d802ef7ccaa23ae9bcccf7b619d820a505ae75f61453ebbc882ce4dff37194ee112f3da22feba8cc89531329872e22704a75a21658a5ec38ee568c00" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "780d8db1d802ef7ccaa23ae9bcccf7b619d820a505ae75f61453ebbc882ce4dff37194ee112f3da22feba8cc89531329872e22704a75a21658a5ec38ee568c00" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/snapshot.json deleted file mode 100644 index 788252b2..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "f23ff2acc0678a3e5d75d192417e3d008c35aa1143fb65807c46310b28a0c2cb88c94fc8d29bef3bebf81ef1c32db0cec6f5f00359c6259f22346a252ddf664d" - }, - "length": 3832, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461" - }, - "length": 1469, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "a076e6f99019484fc5daf715a62967e23a2ee94e8847298f5bc8ca21d0ae91207f0098dbd368c287d4468142c2ce29a74c9cecff0368a09673af1b2b0313dd00" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "a076e6f99019484fc5daf715a62967e23a2ee94e8847298f5bc8ca21d0ae91207f0098dbd368c287d4468142c2ce29a74c9cecff0368a09673af1b2b0313dd00" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets.json deleted file mode 100644 index c960d1c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/0 deleted file mode 120000 index 2e6dba05..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/1 deleted file mode 120000 index 14fee5d8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/2 deleted file mode 120000 index dcd19e04..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/timestamp.json deleted file mode 100644 index 2d62fa2a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/3/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "3e1518698609a8ea5dc88323cbc3c7f487346cf489db59ff6c74d232372c3d77217416c5ccbdcf3172cb79df93ed635c3981663f2019f958a6f6a84cd443aee3" - }, - "length": 1126, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "87d09d36cd148d9e7947353514818cb1ae455962acec5f98c1d8941755d1a515bc8f0cdde4602fd2eb25999c2e842f60882fa1e8d9dc97dbf6442e6f4c8c4e0e" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "87d09d36cd148d9e7947353514818cb1ae455962acec5f98c1d8941755d1a515bc8f0cdde4602fd2eb25999c2e842f60882fa1e8d9dc97dbf6442e6f4c8c4e0e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/5.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/5.root.json deleted file mode 100644 index 75f57ce0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/5.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "b9bec20a6e47c15ee0abae1ec2314bf129d838c0996be90dfa5ef5983354d2c55b83ddf2fbd9d783fb82d16f4b1106af8b01331bbd9648807e42f0eaafecb600" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "b9bec20a6e47c15ee0abae1ec2314bf129d838c0996be90dfa5ef5983354d2c55b83ddf2fbd9d783fb82d16f4b1106af8b01331bbd9648807e42f0eaafecb600" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/root.json deleted file mode 100644 index 75f57ce0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "b9bec20a6e47c15ee0abae1ec2314bf129d838c0996be90dfa5ef5983354d2c55b83ddf2fbd9d783fb82d16f4b1106af8b01331bbd9648807e42f0eaafecb600" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "b9bec20a6e47c15ee0abae1ec2314bf129d838c0996be90dfa5ef5983354d2c55b83ddf2fbd9d783fb82d16f4b1106af8b01331bbd9648807e42f0eaafecb600" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/snapshot.json deleted file mode 100644 index 8f96582e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "1d328734fe2f05dcf8527fd56dc2be8eb93f0c55f71d14aa6e8ad756d9d0a9dd41355df2712aaf992adc50add64ffde009a56cde02c4792e8c2d3b694ac70fc3" - }, - "length": 3832, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db" - }, - "length": 1670, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "e7b397e79f9fe7c12a662abbc99424b615790c64065e1ed66f6ce46d48ac0132a8c90e93ae3e7bfe5a75279cd015dbf52ef1a73c543697f1de5bb059072b7d02" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "e7b397e79f9fe7c12a662abbc99424b615790c64065e1ed66f6ce46d48ac0132a8c90e93ae3e7bfe5a75279cd015dbf52ef1a73c543697f1de5bb059072b7d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets.json deleted file mode 100644 index 7dc90947..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/0 deleted file mode 120000 index efe18e41..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/1 deleted file mode 120000 index b4a40c47..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/2 deleted file mode 120000 index 1c681715..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/3 deleted file mode 120000 index 1dc4d27e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/timestamp.json deleted file mode 100644 index 0119345c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/4/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "f3285e9249d6fe5c693a9766c8f9efbfb915349213f155cfc7e511e40fc43134b9925c589efb9cc561edf3bea182e4b61e23dc8434c00e0bf1a35dea1a7c81d9" - }, - "length": 1126, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "method": "ed25519", - "sig": "efeb3f5a53fd6c6c9e03cb3ac48dccc9a7ff050108e89dc85d83b8ad56d7b752174c0d0ee60621982da9858c8d468844cc0f3d011ff0b121e58f34b6af1a1f0b" - }, - { - "keyid": "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d", - "method": "ed25519", - "sig": "efeb3f5a53fd6c6c9e03cb3ac48dccc9a7ff050108e89dc85d83b8ad56d7b752174c0d0ee60621982da9858c8d468844cc0f3d011ff0b121e58f34b6af1a1f0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/5.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/snapshot.json deleted file mode 100644 index 96ad4378..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "1d328734fe2f05dcf8527fd56dc2be8eb93f0c55f71d14aa6e8ad756d9d0a9dd41355df2712aaf992adc50add64ffde009a56cde02c4792e8c2d3b694ac70fc3" - }, - "length": 3832, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262" - }, - "length": 1871, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "cf36c85855679c11e0efb1cc53deb1a1bfd43d02e8fb564e6c280f1ef280a62fe05368336fdbe59daa642313b28479accfed25f4a3c8be9cc1d0474ab87c150f" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "cf36c85855679c11e0efb1cc53deb1a1bfd43d02e8fb564e6c280f1ef280a62fe05368336fdbe59daa642313b28479accfed25f4a3c8be9cc1d0474ab87c150f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets.json deleted file mode 100644 index 3f07d3d1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/0 deleted file mode 120000 index 94cc2872..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/1 deleted file mode 120000 index 51c7c9a9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/2 deleted file mode 120000 index 46e3032e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/3 deleted file mode 120000 index ca268e91..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/4 deleted file mode 120000 index 19339ad4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/5 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/targets/5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/timestamp.json deleted file mode 100644 index 00124e2a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-false/5/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "416d5114cfe34e8412cc68c85a1aaded17f53d8ba77f4c3fa769835904ae664d729711e88e1a90c2a6bc4f3c61e46eb026c0a1da5a22c7d28a3103c82c6b284a" - }, - "length": 1126, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "method": "ed25519", - "sig": "d238cb69543dc66c40e5f9d5bcf58d43e6c99e5559399be52c08f6a7c29809a4d7c50014ea631f871b5e2be28264b0c682eafe775297888bc883061214c55600" - }, - { - "keyid": "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d", - "method": "ed25519", - "sig": "d238cb69543dc66c40e5f9d5bcf58d43e6c99e5559399be52c08f6a7c29809a4d7c50014ea631f871b5e2be28264b0c682eafe775297888bc883061214c55600" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.root.json deleted file mode 100644 index 93189d2c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.snapshot.json deleted file mode 100644 index 7bf654da..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3" - }, - "length": 3831, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e" - }, - "length": 866, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.targets.json deleted file mode 100644 index 60091e73..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/1.targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 100644 index 7bf654da..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3" - }, - "length": 3831, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e" - }, - "length": 866, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 100644 index 60091e73..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 100644 index 93189d2c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/root.json deleted file mode 100644 index 93189d2c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "485c97e0bb392ee60f9644cdd430f1325cb2329a8c0223fc69b209061d8f3a72268a087f4a715f5a0f70f967edaecebdcc8e9fc914ea8aff1c9741d495f5f904" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/snapshot.json deleted file mode 100644 index 7bf654da..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3" - }, - "length": 3831, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e" - }, - "length": 866, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f2ee59f04d66fa5a73249e985bae22e04bad839131334b630a2bd57566a2da2e5c32179c147daac927909a88a4896cc541dc30129450549c63b41bb5f0506e0d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets.json deleted file mode 100644 index 60091e73..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/0.0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/timestamp.json deleted file mode 100644 index ca0d4e31..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/0/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4" - }, - "length": 1125, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "1b51547737f70f5a3c4ee95c4ae9698d571777dd8b0a3c5d57af266beb95802889b3d7ba9062ff06e85427f05b76ad193d5f3ca45e1be86a266e53b2d0526504" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "1b51547737f70f5a3c4ee95c4ae9698d571777dd8b0a3c5d57af266beb95802889b3d7ba9062ff06e85427f05b76ad193d5f3ca45e1be86a266e53b2d0526504" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.snapshot.json deleted file mode 120000 index 840f843e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.targets.json deleted file mode 120000 index 4d11148d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json deleted file mode 100644 index eeb97eb3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.root.json deleted file mode 100644 index 911c87f8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.root.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.snapshot.json deleted file mode 100644 index 43bfdc14..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098" - }, - "length": 4339, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22" - }, - "length": 1067, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.targets.json deleted file mode 100644 index eeb97eb3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/2.targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json deleted file mode 100644 index 43bfdc14..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098" - }, - "length": 4339, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22" - }, - "length": 1067, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 120000 index 027671c5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 120000 index aecd9476..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json deleted file mode 100644 index 911c87f8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 120000 index 70b171e6..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/root.json deleted file mode 100644 index 911c87f8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/root.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "f806b84c8763453d011c0ba830a3290ee4be587969f5325117c7626411a0f953", - "method": "ed25519", - "sig": "eaca65a09fb8f16ebc7c4560e9d23875225c0fd0f84747542a23e2dd9942fcf4c2bebd7292f06e1eaaf242048103594107353b75eea161bfe15ab24bfd752706" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "0dd9685391cc229d15c468fb3a71d93780bf1220b82e97c5dc6384db76eab74b9254478c89c26f5cf86f640e6a49d0a9d6990ba151fb862648181c8c029f470d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/snapshot.json deleted file mode 100644 index 43bfdc14..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098" - }, - "length": 4339, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22" - }, - "length": 1067, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "f5b71b0dfefa020f7110d8767d5a6b7a98f6a71a89a3819cd54ae628081502b3bd18e8c7f1254f53a5346088deaee66fdd359ae365ea3758f0dc0032e9517a05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets.json deleted file mode 100644 index eeb97eb3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - }, - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - }, - { - "keyid": "d77999c3b2d553fceee309cc47bf7ab2fee37b8a0b30d4033e4b40dc09719556", - "method": "ed25519", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.0 deleted file mode 120000 index 0a5640e6..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/0.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/0.1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index b0c459f9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/timestamp.json deleted file mode 100644 index 884a54b8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/1/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9" - }, - "length": 1126, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "c077ad4567c1db81609c89ab80310de559a2045d58a7f0166269f82e6d33a326248414ff7e5eb2d876d7741652ea1b6fab61f9bc774a6592727ac248a196720f" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "c077ad4567c1db81609c89ab80310de559a2045d58a7f0166269f82e6d33a326248414ff7e5eb2d876d7741652ea1b6fab61f9bc774a6592727ac248a196720f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.snapshot.json deleted file mode 120000 index 1307f574..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.targets.json deleted file mode 120000 index 85e1ecc2..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json deleted file mode 120000 index 0018c825..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json deleted file mode 100644 index c6303cd5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94" - }, - "length": 3831, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4" - }, - "length": 1268, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.snapshot.json deleted file mode 120000 index 24d10752..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.targets.json deleted file mode 120000 index f6a17494..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json deleted file mode 120000 index 69cd01db..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.root.json deleted file mode 100644 index deacdc19..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.snapshot.json deleted file mode 100644 index c6303cd5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94" - }, - "length": 3831, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4" - }, - "length": 1268, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.targets.json deleted file mode 100644 index 147dfc68..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/3.targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 120000 index 944d3575..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json deleted file mode 100644 index deacdc19..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 120000 index de6ef376..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json deleted file mode 120000 index f8bb03c5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json deleted file mode 100644 index 147dfc68..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 120000 index ce078d7e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/root.json deleted file mode 100644 index deacdc19..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "d11082d75a4e60f9c5d1d176dfea4d7c43a41a9d4595a8b14b844a43c329bf86d2bf4eb8d6255af1afd97bbd5cfc1a69f038a82617cbfcfb82c6434e1790c702" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/snapshot.json deleted file mode 100644 index c6303cd5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94" - }, - "length": 3831, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4" - }, - "length": 1268, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - }, - { - "keyid": "7165b3cf2ad6a10d456498d958e80f2356b0d3a230d93a96a8dada5fdd8dd40d", - "method": "ed25519", - "sig": "b3aa3119a74147ceb37b98248638710da5741c635e5791b13fd851b37212e4d3d5e7f6cbd4122b232a4010c13332c3048c1c6cc3e2838934ed481e6959441f05" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets.json deleted file mode 100644 index 147dfc68..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.0 deleted file mode 120000 index 59c65e1e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/0.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.1 deleted file mode 120000 index 37e8fbc1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/0.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/0.2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index de9aac3a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 2ebb2d33..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/timestamp.json deleted file mode 100644 index 2356947d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/2/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432" - }, - "length": 1126, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "25122819bb1e9fcd7383d0a13a35a049470162140b1573eb139e4269e29ec31b77a9771396bf2c9719c9ddb4e167e2e5ebabfef229cb4f16b59db45c6fdb4508" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "25122819bb1e9fcd7383d0a13a35a049470162140b1573eb139e4269e29ec31b77a9771396bf2c9719c9ddb4e167e2e5ebabfef229cb4f16b59db45c6fdb4508" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.snapshot.json deleted file mode 120000 index 4dfb0d02..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.targets.json deleted file mode 120000 index 1eeb5642..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json deleted file mode 120000 index 32bd3243..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json deleted file mode 100644 index 66717236..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa" - }, - "length": 3831, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461" - }, - "length": 1469, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json deleted file mode 120000 index 03468a15..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.snapshot.json deleted file mode 120000 index 65445cb4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.targets.json deleted file mode 120000 index 3600a0f4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json deleted file mode 120000 index b20325e0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.snapshot.json deleted file mode 120000 index 7d86b95a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.targets.json deleted file mode 120000 index d1df10e4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 120000 index d1372152..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.root.json deleted file mode 100644 index 8ccb8d72..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.snapshot.json deleted file mode 100644 index 66717236..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa" - }, - "length": 3831, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461" - }, - "length": 1469, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.targets.json deleted file mode 100644 index c960d1c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/4.targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json deleted file mode 120000 index f966ccc6..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 120000 index 77a36563..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json deleted file mode 100644 index 8ccb8d72..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json deleted file mode 100644 index c960d1c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json deleted file mode 120000 index 49199f1e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json deleted file mode 120000 index 4e721c74..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 120000 index f1f205ad..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/root.json deleted file mode 100644 index 8ccb8d72..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "5a5afbd4270a2638b84f50d0291e35acdf59e25492914017cb317c617d71c3a9c450d3f71f1dd7a33c369399d8de26f3a61060146682d84159f27c08f1675005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/snapshot.json deleted file mode 100644 index 66717236..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa" - }, - "length": 3831, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461" - }, - "length": 1469, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "4619db132982f96f2f7d62d1ea5e7bfdc69eab8cf10cc6eca8721557144a8b193b98f6c3a25da862c414da348d42cee78b59c3f14903be937b16b39e1003f503" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets.json deleted file mode 100644 index c960d1c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.0 deleted file mode 120000 index 13920b05..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.1 deleted file mode 120000 index 357ae1e9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.2 deleted file mode 120000 index 20ee725e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/0.3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index f8203976..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index 7cbcc2a6..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 180cdb4f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/timestamp.json deleted file mode 100644 index ebdf9f8e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/3/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7" - }, - "length": 1126, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - }, - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "method": "ed25519", - "sig": "a14cd9dfc17e257aa7f5d6586e32defbc076d1aa3cb30fd86be362f0c528df3145aeba52f5eceb8fab481336b95667c9009fb639bfe996cbe11412c60226320a" - }, - { - "keyid": "c7a2ca868b0e65b50cc6a2dfcfd9c129bdcb3da390ac78bb83a732be02ed5a5d", - "method": "ed25519", - "sig": "a14cd9dfc17e257aa7f5d6586e32defbc076d1aa3cb30fd86be362f0c528df3145aeba52f5eceb8fab481336b95667c9009fb639bfe996cbe11412c60226320a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.snapshot.json deleted file mode 120000 index f87f7ed7..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.targets.json deleted file mode 120000 index b0002ec9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json deleted file mode 120000 index 71b4225b..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json deleted file mode 120000 index 11937d87..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json deleted file mode 120000 index 0e10c4d0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.snapshot.json deleted file mode 120000 index e96983b5..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.targets.json deleted file mode 120000 index dbb2a759..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json deleted file mode 120000 index 57800212..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.snapshot.json deleted file mode 120000 index f2fd5601..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.targets.json deleted file mode 120000 index ca61e77d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 120000 index 98160f78..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.snapshot.json deleted file mode 120000 index a2f839ac..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.targets.json deleted file mode 120000 index 9f7a7841..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.root.json deleted file mode 100644 index a9f853e4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.snapshot.json deleted file mode 100644 index 882ff3a0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db" - }, - "length": 1670, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.targets.json deleted file mode 100644 index 7dc90947..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/5.targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json deleted file mode 120000 index fcb3707a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 120000 index 21e403ff..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json deleted file mode 120000 index 37511d05..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json deleted file mode 120000 index 29e8425a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json deleted file mode 100644 index a9f853e4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json deleted file mode 120000 index 26fca709..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json deleted file mode 120000 index b978f58f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 120000 index c4206729..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json deleted file mode 100644 index 7dc90947..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json deleted file mode 100644 index 882ff3a0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db" - }, - "length": 1670, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/root.json deleted file mode 100644 index a9f853e4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/root.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - }, - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - }, - { - "keyid": "a67ca94ed559c97db79999d32b79ca35b5ae1795d2f6be3eafa3bd5816a8f2c4", - "method": "ed25519", - "sig": "1d3e90aac8b4fad8846d3ae59ed9069ba335310bd14259a6ca6a905499a9b166761c3c737cbef6d231f84b78575d2cb543caba350a1fcaa104589c86cf2e890c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/snapshot.json deleted file mode 100644 index 882ff3a0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db" - }, - "length": 1670, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "1d473b59dec8a119fb8bc1e5b33c3b0896f62598d0b560cc7a98f501bdc9436fb2399219f8d0301081fe9db22f6734bd1b865a3b9040c3a5357e67d0dc89880f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets.json deleted file mode 100644 index 7dc90947..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.0 deleted file mode 120000 index 7561d7e3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.1 deleted file mode 120000 index ef5bca2c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.2 deleted file mode 120000 index 26212c83..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.3 deleted file mode 120000 index 6a0a9626..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/0.4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index 8bca78fb..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 814339fc..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index dc5c46dc..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 16b79678..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/timestamp.json deleted file mode 100644 index 142621e1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/4/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c" - }, - "length": 1126, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - }, - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "method": "ed25519", - "sig": "82aa747d16c493b0b92c32de5832bf447d2f2348970f066598835d11efba303bc9685e3436200a88778d78a50111df81639d206c5e09b491989bec461a98550b" - }, - { - "keyid": "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d", - "method": "ed25519", - "sig": "82aa747d16c493b0b92c32de5832bf447d2f2348970f066598835d11efba303bc9685e3436200a88778d78a50111df81639d206c5e09b491989bec461a98550b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.snapshot.json deleted file mode 120000 index f7fb0982..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.targets.json deleted file mode 120000 index 127f6097..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json deleted file mode 120000 index d1949f9d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/118c2a2b6b9f7bc667dca8404a2671910a22b6fe48e460816a9f6f2be66f7806a789c9dc4880d2c2812c0bc7607caac30cc0a8299183fd7228e1049f6920ce22.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json deleted file mode 120000 index 8106e599..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/148c273a895a85127bb254edd19da2190176272446cd0f43220aba2b0f72fe954a2eab52c38daf67b1c3cbe877848d01266d8a1af3e858c8d004682a3393f3a7.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json deleted file mode 120000 index 1c73279d..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/15c2c14fb300cecb52c9ef9a88545759028ec5d7e0f028269ba828c2199e3f0e56f963bdcfd0897c51ebb95ee2452666ec7f65bae688b48db1b8aa8de944e432.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.snapshot.json deleted file mode 120000 index 5b418d6a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.targets.json deleted file mode 120000 index 04b0be44..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json deleted file mode 120000 index 237b697b..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/23170400c30b4bbcd375c88ae22104241e377006e9c40c64ed49aef9ad2bdfa49ba2832ccb9c3776aaee336195de73cda28b5ba65fb468f7a5e60b870cbe26e9.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.snapshot.json deleted file mode 120000 index d23c05ca..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.targets.json deleted file mode 120000 index 2854154a..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json deleted file mode 120000 index aad4346e..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/33b282c1970996734deff944f2862f84b196f0b2b67dfa7383f75f95ef3e8673602aa411e05572075729ead6caa35df6720ce5723fd67c63d4aaa81dd966c5a4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.snapshot.json deleted file mode 120000 index b7aefb24..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.targets.json deleted file mode 120000 index fef64e45..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.snapshot.json deleted file mode 120000 index 4e98537c..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.targets.json deleted file mode 120000 index f8771442..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/5.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json deleted file mode 120000 index 102fb8f3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/590c7d2df37495eae436e25eea548eb48294ef63aaeebe51b1bc1056c149fd54710c67d231c19c14708824aa7095e0028b6691fcf21c1edfcc7a88a48d4b7b94.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.snapshot.json deleted file mode 100644 index 15ab63b9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262" - }, - "length": 1871, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.targets.json deleted file mode 100644 index 3f07d3d1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6.targets.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/63c16cc2225e77b7c94ec3b143271e02d97a1bfba828e11820392b9108412ef22f09732694673331f386b6f8a281103e20d07c21db78f487e1b046d9968173c8.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/63c16cc2225e77b7c94ec3b143271e02d97a1bfba828e11820392b9108412ef22f09732694673331f386b6f8a281103e20d07c21db78f487e1b046d9968173c8.snapshot.json deleted file mode 100644 index 15ab63b9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/63c16cc2225e77b7c94ec3b143271e02d97a1bfba828e11820392b9108412ef22f09732694673331f386b6f8a281103e20d07c21db78f487e1b046d9968173c8.snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262" - }, - "length": 1871, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json deleted file mode 120000 index 18eed32f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/6ecff211b4df20d84e5a99a1145b7f96752efe880147439a3a8c2ecc080762f84b5b784da1b41d2ccb1492d112c521b4b82973589285dfbcfbb6c423c559ff4e.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json deleted file mode 120000 index 9bad4bde..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/765d0de07adc4de8aa6060a9c579c70938f0a6e998d76ad75363945fdb998b8019d4d42a00642141ac8a86346098dfb40bc7be32d684077be5aae06495f57cfa.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json deleted file mode 120000 index eed61239..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/7c7a5e381e1e8c3f10bc4ab1c1d33f6460f741a5c0bbeb8be4f206de58e9ce67964bef7cef0738d22d5c55238d2062a2a9a72c99f6df0c57a2bece6435a3e461.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json deleted file mode 120000 index 9e5a79b0..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262.targets.json deleted file mode 100644 index 3f07d3d1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262.targets.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json deleted file mode 120000 index 557a1575..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/93b38df5b9cb993dd7e2e16e9b8dd07386b35936f21c36b7527e1587052dce86f64b5eb5669fffe86b4aae4c581a2bbba6e49d780d8687dd6c304fae9b6fe098.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json deleted file mode 120000 index 60975e48..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/bdcbdfe0a1ecaaf9c0c5dc9728bc2eebb1c931b17e57676bd251f8b05640826dcf923ed854c235247329e7068c0d01ad6920b4454a976feb0c9f29b64e338ee4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json deleted file mode 120000 index abbc6bdd..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/bf4f7f4a062fd3780055d98572619db84d6d6c9b9b647bf6bca1190e984963ffb86189fb455110f4c13956ce9cbe72d95d03c5e6d72295414ac6bbcc3d1957c3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json deleted file mode 120000 index b786bfab..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/c86fd75fe946b88488ece0fa399857a75f3cc80bd85bc71f3fcc030ad6201c559370cbc67a8a547f1964355911fc0ef8000dd8e9f0ff84a3cc8e45cbd42ec7db.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json deleted file mode 120000 index ef1e4439..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/dce60b87bbc2b98c1e4cc86cc5798d381561600934b0da7d044ed72511dafefc5e4e640a76e59ea96f6c9edf1a002974180e1562b0496127fcb44ca6b08c294c.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/root.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/snapshot.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/snapshot.json deleted file mode 100644 index 15ab63b9..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/snapshot.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "8aae80ec8056a31ca28304ed0b0b35f0dacb11c5d6684cc7200086ff237fec23dc1e3fc2b43afb968d780c8053bd4081f4ae7ca71a066894042b1d24983fc0fd" - }, - "length": 3831, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "8ec9b98766edfe6acc23bb700183532a990b966ceb7b62784f6c80d4b1bfe5661df3cc2765b57bd0e78eb4b5c2b136f5ab7a365665c6e918d4137b83cb7e2262" - }, - "length": 1871, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - }, - { - "keyid": "ad7c98dfb3b99024f8b49e33f3d92e66537f0abab78a84f1e4b667dfbf52bf60", - "method": "ed25519", - "sig": "61f3a52657285ee76cac838dcf7bd605c8b895dadd7877f5ef3aaa8b22ec0e952fa44c9d9145d5740e56568d5c772c4ca46f96458c813d24c61596cfddff350b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets.json deleted file mode 100644 index 3f07d3d1..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - }, - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - }, - { - "keyid": "0efcc6a8d07a1cb5955fb698b8ea57e903b6924854f5a025c90f16c9a52b2700", - "method": "ed25519", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.0 deleted file mode 120000 index 28473bd3..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.1 deleted file mode 120000 index e371cbf8..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.2 deleted file mode 120000 index 4819cabf..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.3 deleted file mode 120000 index 86d22912..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.4 deleted file mode 120000 index 8ad49cb7..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0.4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.5 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/0.5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index c70b61bd..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 1e66cb1b..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index a02a2316..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 74d1328f..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 120000 index 73a65ad2..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/timestamp.json b/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/timestamp.json deleted file mode 100644 index fb031588..00000000 --- a/client/testdata/go-tuf-transition-M3/consistent-snapshot-true/5/repository/timestamp.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "63c16cc2225e77b7c94ec3b143271e02d97a1bfba828e11820392b9108412ef22f09732694673331f386b6f8a281103e20d07c21db78f487e1b046d9968173c8" - }, - "length": 1126, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - }, - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "method": "ed25519", - "sig": "93de7e13e6ad7b03be3c299169aba2cf1fed7a6bac8b3059ca858e4a709063b6a0237b78614e9101c9beed0d9f470bfcd77644108246688d75cf58b243ea1f0c" - }, - { - "keyid": "e23c19fb64db7146965700b9983df63d2dd4362b1f99d74da2383234da4ab20d", - "method": "ed25519", - "sig": "93de7e13e6ad7b03be3c299169aba2cf1fed7a6bac8b3059ca858e4a709063b6a0237b78614e9101c9beed0d9f470bfcd77644108246688d75cf58b243ea1f0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M3/generate.go b/client/testdata/go-tuf-transition-M3/generate.go deleted file mode 100644 index 2a9d20f3..00000000 --- a/client/testdata/go-tuf-transition-M3/generate.go +++ /dev/null @@ -1,150 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "log" - "os" - "os/exec" - "path/filepath" - "time" - - tuf "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -var expirationDate = time.Date(2100, time.January, 1, 0, 0, 0, 0, time.UTC) - -type persistedKeys struct { - Encrypted bool `json:"encrypted"` - Data []*data.PrivateKey `json:"data"` -} - -func assertNoError(err error) { - if err != nil { - panic(fmt.Sprintf("assertion failed: %s", err)) - } -} - -func copyRepo(src string, dst string) { - cmd := exec.Command("cp", "-r", src, dst) - assertNoError(cmd.Run()) -} - -func newRepo(dir string) *tuf.Repo { - repo, err := tuf.NewRepoIndent(tuf.FileSystemStore(dir, nil), "", "\t") - assertNoError(err) - - return repo -} - -func commit(dir string, repo *tuf.Repo) { - assertNoError(repo.SnapshotWithExpires(expirationDate)) - assertNoError(repo.TimestampWithExpires(expirationDate)) - assertNoError(repo.Commit()) - - // Remove the keys directory to make sure we don't accidentally use a key. - assertNoError(os.RemoveAll(filepath.Join(dir, "keys"))) -} - -func addKeys(repo *tuf.Repo, roleKeys map[string][]*data.PrivateKey) { - for role, keyList := range roleKeys { - for _, key := range keyList { - signer, err := keys.GetSigner(key) - assertNoError(err) - assertNoError(repo.AddPrivateKeyWithExpires(role, signer, expirationDate)) - } - } -} - -func addTargets(repo *tuf.Repo, dir string, files map[string][]byte) { - paths := []string{} - for file, data := range files { - path := filepath.Join(dir, "staged", "targets", file) - assertNoError(os.MkdirAll(filepath.Dir(path), 0755)) - assertNoError(os.WriteFile(path, data, 0644)) - paths = append(paths, file) - } - assertNoError(repo.AddTargetsWithExpires(paths, nil, expirationDate)) -} - -func revokeKeys(repo *tuf.Repo, role string, keyList []*data.PrivateKey) { - for _, key := range keyList { - signer, err := keys.GetSigner(key) - assertNoError(err) - assertNoError(repo.RevokeKeyWithExpires(role, signer.PublicData().IDs()[0], expirationDate)) - } -} - -func generateRepos(dir string, consistentSnapshot bool) { - f, err := os.Open("../keys.json") - assertNoError(err) - - var roleKeys map[string][][]*data.PrivateKey - assertNoError(json.NewDecoder(f).Decode(&roleKeys)) - - // Collect all the initial keys we'll use when creating repositories. - // We'll modify this to reflect rotated keys. - keys := map[string][]*data.PrivateKey{ - "root": roleKeys["root"][0], - "targets": roleKeys["targets"][0], - "snapshot": roleKeys["snapshot"][0], - "timestamp": roleKeys["timestamp"][0], - } - - // Create the initial repo. - dir0 := filepath.Join(dir, "0") - repo0 := newRepo(dir0) - repo0.Init(consistentSnapshot) - addKeys(repo0, keys) - addTargets(repo0, dir0, map[string][]byte{"0": []byte("0")}) - commit(dir0, repo0) - - // Rotate all the keys to make sure that works. - oldDir := dir0 - i := 1 - for _, role := range []string{"root", "targets", "snapshot", "timestamp"} { - // Setup the repo. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - copyRepo(oldDir, d) - repo := newRepo(d) - addKeys(repo, keys) - - // Actually rotate the keys - revokeKeys(repo, role, roleKeys[role][0]) - addKeys(repo, map[string][]*data.PrivateKey{ - role: roleKeys[role][1], - }) - keys[role] = roleKeys[role][1] - - // Add a target to make sure that works, then commit. - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) - - i += 1 - oldDir = d - } - - // Add another target file to make sure the workflow worked. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - copyRepo(oldDir, d) - repo := newRepo(d) - addKeys(repo, keys) - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) -} - -func main() { - cwd, err := os.Getwd() - assertNoError(err) - - for _, consistentSnapshot := range []bool{false, true} { - name := fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot) - log.Printf("generating %s", name) - generateRepos(filepath.Join(cwd, name), consistentSnapshot) - } - -} diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/1.root.json deleted file mode 100644 index f02c25bd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/1.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "4d84952574a5ef31fa9f8d97a3159305b8b99c011b27327e969d88f8f88a5d56ef4a3d03b19134d0f8a1627de8d03b11847ffb7ed0e15c2fad0d8cfd5a57ae0f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/root.json deleted file mode 100644 index f02c25bd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "4d84952574a5ef31fa9f8d97a3159305b8b99c011b27327e969d88f8f88a5d56ef4a3d03b19134d0f8a1627de8d03b11847ffb7ed0e15c2fad0d8cfd5a57ae0f" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/snapshot.json deleted file mode 100644 index a846dde6..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "0c2eb81db397d04faed82a5b75c4e5980d3fb2dafb13ff6892a7bdc131a6d698fe635ee369a016a4a8e47964a77f56f834cc432853d76feccc70e3fbb9dcc70a" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "d2a63252478ef0e4baef238f277261b469dac193d731c618194d37492dcd57eb391563fe065c2df054628dc28ae9896f20670a41b1264507a739ff36dab85d9f" - }, - "length": 2118, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "257ae8c4653e9ecd1580d0f95ece3cbd03d67ace62e670c0493cde2afde96670a1620fcdf4a2e81ecbf8a67c7b0af9e03e6f9c5c8195d4b1940f7e0e61cc04c8" - }, - "length": 588, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets.json deleted file mode 100644 index 7e9ac2d8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets/0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/timestamp.json deleted file mode 100644 index f03cdb6a..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/0/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "cff803896a6af526281ad8ae7e3c3039bd850a4f56afc23e50564b9259719d2dd9e2f7956bf89f04d405a6f2c836db0ae98fa21846921bba39ed43adbf728c0e" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "9f96c109f0d6a53fa01567d1577fdbc02a34c4a755cba6cfb2e3dd9f6c87596755b9285317c6640a139abad25dcbac22da79208f37ecffd17c67fb87fc89ce1c" - }, - "length": 847, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/2.root.json deleted file mode 100644 index 7c2571f3..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "2c7952346c8f899b15f33048bfc22db078a2ee5df5ae4dfc1c7e4eb303ee5dd99b6957d8bddd39ddddbc2e49b0abd76e27c0b0439984ae36e23db5bafb51d104" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "a9ae363c57c79235e0fb646f364a747e88d61a25eef9e92e44f13f6849bb62ee1a91db6ba021cbef330e9a5b3e2131a45b5922bbd1a30596a11973743aedc404" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/root.json deleted file mode 100644 index 7c2571f3..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "2c7952346c8f899b15f33048bfc22db078a2ee5df5ae4dfc1c7e4eb303ee5dd99b6957d8bddd39ddddbc2e49b0abd76e27c0b0439984ae36e23db5bafb51d104" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "a9ae363c57c79235e0fb646f364a747e88d61a25eef9e92e44f13f6849bb62ee1a91db6ba021cbef330e9a5b3e2131a45b5922bbd1a30596a11973743aedc404" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/snapshot.json deleted file mode 100644 index aee62e66..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "3b170ced5f99155d617d933721eb8b1bc37d53bacd13787495f5b65f8e217898b0432391ddc76ddf350d367a590f39c44ef89350c67119d7c3cf869375da6004" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "fac18f6f1804305c960c48700111947a77b6249659a43ebc1caffb701784a16a3967bb640b7ad612235f6b5078b9c9f178b0cb5acaf9d2a49cabd4bd8ec418de" - }, - "length": 2348, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "0fa0d9f7f64ffaf2a52bda808851c71ae87c7c47aaec4ce2ba28c19123a0d4394156dce76012a5253c1c02ccdf88843cdb980042eab746e1a93ce2541f89d91c" - }, - "length": 789, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets.json deleted file mode 100644 index eb115384..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/0 deleted file mode 120000 index aced6879..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/timestamp.json deleted file mode 100644 index e3596528..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/1/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "df50c702b51dec901cd5d6f548b4c551ab578aaf8e791d7d3fc85697f291e6102c64e9d758fb4291d09dd28bcfd442cdb7598167821b7b50247b4af3f763780c" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "c150afd2864d6b6f0f14e4549c592418abf4b390ca6c88f0a50c4e615f54cc449cd9cf9dfbc227bea900fd3007921fb64ff6fd30bf5cfa2877682af66368a2f6" - }, - "length": 847, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/3.root.json deleted file mode 100644 index 923eafc4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/3.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "ea2529b895eeabd2aaf00c06d5789fc3152aab134d8f1265954304c89f4a6eeca4e7f0be6620c8fce14caf4c447b8c472483438d74273d2a50ea86f5de59aa06" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/root.json deleted file mode 100644 index 923eafc4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "ea2529b895eeabd2aaf00c06d5789fc3152aab134d8f1265954304c89f4a6eeca4e7f0be6620c8fce14caf4c447b8c472483438d74273d2a50ea86f5de59aa06" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/snapshot.json deleted file mode 100644 index f68be591..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "e4a00bb62fb3c1efd1b949050d952d89023461ab6db280f2b5233bafd8b672abfc23b22453eb1becb5d850eb70c7e201ee6780555fabd5f6c4d68b69c82f1406" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "cd1af4dae35649774a2090ea0471ccaf677dddd080973807faa37c0744649f316052603c43032fc308c85c60379bf5067201957622061ad91acd942a1b55b274" - }, - "length": 2118, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "33835f152dcc9ab1396e0f44dff841eca2c747dfd8cccc079dd0f4a88e7920f29cfaa3d895618c39463bed3997d6ba83c7791749483f2df8f3589fff3f4c379d" - }, - "length": 990, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets.json deleted file mode 100644 index 6c7e9196..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/0 deleted file mode 120000 index 2ac1d8be..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/1 deleted file mode 120000 index 8e78bc37..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/timestamp.json deleted file mode 100644 index 55ef71fa..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/2/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "3c11c4fea59b6433d678dfa7e6405182d7337f66bfcbe74c82602c689f2bfcca8cb5663ddf8d325fcc3e434c50bea08777e07d34ff439264f1e7cb688921ef00" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "0ab33430ecbe903acaafa3158ad1bfe2cfc22968b5966a6816c16d16a72bfa5da09426d98b547fc5c8784a6502972977c331956ed84c525f1e85fb385a36fb58" - }, - "length": 847, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/4.root.json deleted file mode 100644 index c71e3b75..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/4.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "ec7e22d27d5b5c43d350ae7b6345fd0acc37b7106063081f637f49fe09cc8f4c6db664f2198d53f930dc061c1ab25d1b015336a12085ee582e823eaf309b1202" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/root.json deleted file mode 100644 index c71e3b75..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "ec7e22d27d5b5c43d350ae7b6345fd0acc37b7106063081f637f49fe09cc8f4c6db664f2198d53f930dc061c1ab25d1b015336a12085ee582e823eaf309b1202" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/snapshot.json deleted file mode 100644 index e67fb808..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "fb791108edb246566da93f43af287fc8bb7ac03d6a7c615b4c14622a95a9f029fe1b1ad97c14554bc5fa681d39df2b67858a3b63e5d49578c87f1a1a134bdb0e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "52f836fc2bdeec872c621b84a87a1ab9e2d46763d640bbb775f862306b060ba51370ff838b9589a732f86938509c3a55731d2e3e6f1601d14c42c47efe990ddc" - }, - "length": 2118, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "518518c1f03d874f9832390dea5bc12ab0061400bd0b3b8b44e4a353087d802accde1ec3dc94e0be4931f572960a0192bd84e667c02e6ac99d0a3bf28f5f9802" - }, - "length": 1191, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets.json deleted file mode 100644 index 4ed9d72e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/0 deleted file mode 120000 index 2e6dba05..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/1 deleted file mode 120000 index 14fee5d8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/2 deleted file mode 120000 index dcd19e04..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/timestamp.json deleted file mode 100644 index d6a3549d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/3/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "f93295631c148c1f4949c44cb07e1daca4b0cf587e5d3b999740b3e012e0dd2780803b3aec44c9fa1f27d0f5fa28136073331c41d81de5e4b82a7d7df5591509" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "6455d62f5676402784607019dbb9a23ab31ee61b47a67a4fcd2a69bf3a3b5ec60b602b42112626f17ef2ec0177c4392e61d587637c06f636831ff63c3317827d" - }, - "length": 848, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/5.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/5.root.json deleted file mode 100644 index d112eae2..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/5.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "fc0f92883c9c89135505c1ae59ec11bf4bbd82ead0dca1d719eda4251345830514f0bd1b264d36d26b971ab58d7ee3f10110190cadee753b24fc98eaa61d2004" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/root.json deleted file mode 100644 index d112eae2..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "fc0f92883c9c89135505c1ae59ec11bf4bbd82ead0dca1d719eda4251345830514f0bd1b264d36d26b971ab58d7ee3f10110190cadee753b24fc98eaa61d2004" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": false, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/snapshot.json deleted file mode 100644 index 94ed0e99..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "074a04f426d423f2675b58c8db38814bfe1bded4717c6c748ff2484cbc94fe2b67cb166cfe4550908565759018427042ebc59fc95005c105d12c1c0c1d779808" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "6393ac77695995ad751bf33c885882088a4f5c3b1c58ed75433007a5c79aef45aeea10881094686254198e12fc78be781f777947f23ed5bef0bdb157ef55e74d" - }, - "length": 2118, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "25ba8ef109680040b2e28dde51389397c51f4ba12acb1ea1b70dfc7e1bc5eceec71b1cbfb4747c47af8d9cdf76baa53ab5b2403eef226be1ae7a8d7794474ebf" - }, - "length": 1392, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets.json deleted file mode 100644 index 163e9e86..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/0 deleted file mode 120000 index efe18e41..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/1 deleted file mode 120000 index b4a40c47..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/2 deleted file mode 120000 index 1c681715..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/3 deleted file mode 120000 index 1dc4d27e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/4 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/timestamp.json deleted file mode 100644 index f028ca8d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/4/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "sig": "5f5f3f30efa3531c4a8174283820a7c499b15c36f93e5f0e179b32be898e4a43810cc46e3bd06cda75b16237a258f909884ae3718189830f6e2991b5d4968b04" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "26e8fa7db5884e5b8c6868898d8ad2fa26d37da07255364b48d4e09560e83b25586767ee53e2c39eb372d6ef0db0c8d7ae72a50bfb0bdab57510439d5e3ceef8" - }, - "length": 848, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/5.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/snapshot.json deleted file mode 100644 index 4c3731e3..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "a44ce7ca76f178c41acf92e6cb6cacc5c4cd17e1e99cc0d7ba8fb37d11b468b8475ad2801adeef7a246947595f845545be420ee912bfcb7091708530fab3eb01" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "6393ac77695995ad751bf33c885882088a4f5c3b1c58ed75433007a5c79aef45aeea10881094686254198e12fc78be781f777947f23ed5bef0bdb157ef55e74d" - }, - "length": 2118, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c57a6fd231341bea3adb36d5a9c07167ef26bf9b037470bef1dadfeb2cdafa73b39b30965e39175fa9be5426065073bbf859f149c366ae07ea2a0f6fb6730b00" - }, - "length": 1593, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets.json deleted file mode 100644 index c528a435..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/0 deleted file mode 120000 index 94cc2872..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/1 deleted file mode 120000 index 51c7c9a9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/2 deleted file mode 120000 index 46e3032e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/3 deleted file mode 120000 index ca268e91..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/4 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/4 deleted file mode 120000 index 19339ad4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/5 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/targets/5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/timestamp.json deleted file mode 100644 index 4a6a11fc..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-false/5/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "sig": "5de52850930dc5e8e6c5c1d85d84e8d968f170904c958de30473f81f8293e7b48e27e9d2afa1592eb1d527a0937553ee5e2540f0255837d2f93c5af12d510f08" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "c0fb132da6b90f31ba8c1122388c13d37e4a553ff5b5fa0a65dcf19c53af41965a62b7f88526b4363b288005bfc286c4480fa6d8d63ba54a0ec491f14329b549" - }, - "length": 848, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.root.json deleted file mode 100644 index 53cd5460..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "971ed150895f0dc14d5a2cfb7d805131ba7d0152f315f1e8498f5a0119fa0254c4f4dd4cdbb6401e8d2e1649df1dd91ed56cf5623986a81135b5e94f40dbda08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.snapshot.json deleted file mode 100644 index 38848bd9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "baefc778a9aaa93cfa86bd9d0f5b4d05c58c48e1abdff6d44f1c0b3ffac7c18989c357f78222f4decc52f0372251679ca074b3969e11991a424c6c2f3bda9709" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "c125be40b37191d913a727873ff99224f2641d665534211641c7bf8bc7813e3b9b90a80380d118c5815188f799ba8e43d3ccc7dcb2ea42563e7250ac7791c1db" - }, - "length": 2117, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "257ae8c4653e9ecd1580d0f95ece3cbd03d67ace62e670c0493cde2afde96670a1620fcdf4a2e81ecbf8a67c7b0af9e03e6f9c5c8195d4b1940f7e0e61cc04c8" - }, - "length": 588, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.targets.json deleted file mode 100644 index 7e9ac2d8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/1.targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/root.json deleted file mode 100644 index 53cd5460..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "971ed150895f0dc14d5a2cfb7d805131ba7d0152f315f1e8498f5a0119fa0254c4f4dd4cdbb6401e8d2e1649df1dd91ed56cf5623986a81135b5e94f40dbda08" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/snapshot.json deleted file mode 100644 index 38848bd9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "baefc778a9aaa93cfa86bd9d0f5b4d05c58c48e1abdff6d44f1c0b3ffac7c18989c357f78222f4decc52f0372251679ca074b3969e11991a424c6c2f3bda9709" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "c125be40b37191d913a727873ff99224f2641d665534211641c7bf8bc7813e3b9b90a80380d118c5815188f799ba8e43d3ccc7dcb2ea42563e7250ac7791c1db" - }, - "length": 2117, - "version": 1 - }, - "targets.json": { - "hashes": { - "sha512": "257ae8c4653e9ecd1580d0f95ece3cbd03d67ace62e670c0493cde2afde96670a1620fcdf4a2e81ecbf8a67c7b0af9e03e6f9c5c8195d4b1940f7e0e61cc04c8" - }, - "length": 588, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets.json deleted file mode 100644 index 7e9ac2d8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/timestamp.json deleted file mode 100644 index 93fb20b3..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/0/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "d66dc8ec2ede5c442ec600c22c46a5e0661bfdaae9a24ace66fedafe6a8f7a8d20cbe8685d3e0947c5d84bc4e9fdd4f4a442477c1544316678eef537fcdd0e06" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "67b27e18e00391e67d5ce85d60cc8aaf862cff0d22e541d044c39373ed7d524969ab8a31a826722a94ee42ff1e81eedcefba379b2f02f0116b4c30c5285692f3" - }, - "length": 847, - "version": 1 - } - }, - "spec_version": "1.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.snapshot.json deleted file mode 120000 index 840f843e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.targets.json deleted file mode 120000 index 4d11148d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.root.json deleted file mode 100644 index b0d7ec38..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "953fe3874eeb876b137ff4449d6e3d49d61a0b9e7bd339a47f9df3bd19e197aeee1e6b2b89a0ed4425c66e551b396ec53ea73f46d772ca81e27a3daf917e130d" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "09cd32bfed745ebdd6c8f69c3dca6ac74ddaf0121098442414ef4cb141f4916b14cc2127223f9ffaec2a4e0bde03c04f33aba3c357f7f8c3544666bfe84ede02" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.snapshot.json deleted file mode 100644 index 592682f7..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "b0298a786de3c14313b5a8f5afe8bbab0a407699a91062b8ead172f3afc74fc27210a7a042978c7d42b4ae9874f4bb139628be8a7be5b57c7bacc9f5a4cec809" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "df686bed8fac62391d47356f6be52fe3316bf856a415a7a2102369289d23d274a739a1071f6095a712654e6b75296b726198e67604666d808c2e7caa3964f419" - }, - "length": 2347, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "0fa0d9f7f64ffaf2a52bda808851c71ae87c7c47aaec4ce2ba28c19123a0d4394156dce76012a5253c1c02ccdf88843cdb980042eab746e1a93ce2541f89d91c" - }, - "length": 789, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.targets.json deleted file mode 100644 index eb115384..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/2.targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/root.json deleted file mode 100644 index b0d7ec38..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "160f5ae5e7017bc783bbbe26c5419bbeeeb87f507b140ef474da0517d56549f7", - "sig": "953fe3874eeb876b137ff4449d6e3d49d61a0b9e7bd339a47f9df3bd19e197aeee1e6b2b89a0ed4425c66e551b396ec53ea73f46d772ca81e27a3daf917e130d" - }, - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "09cd32bfed745ebdd6c8f69c3dca6ac74ddaf0121098442414ef4cb141f4916b14cc2127223f9ffaec2a4e0bde03c04f33aba3c357f7f8c3544666bfe84ede02" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/snapshot.json deleted file mode 100644 index 592682f7..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "b0298a786de3c14313b5a8f5afe8bbab0a407699a91062b8ead172f3afc74fc27210a7a042978c7d42b4ae9874f4bb139628be8a7be5b57c7bacc9f5a4cec809" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "df686bed8fac62391d47356f6be52fe3316bf856a415a7a2102369289d23d274a739a1071f6095a712654e6b75296b726198e67604666d808c2e7caa3964f419" - }, - "length": 2347, - "version": 2 - }, - "targets.json": { - "hashes": { - "sha512": "0fa0d9f7f64ffaf2a52bda808851c71ae87c7c47aaec4ce2ba28c19123a0d4394156dce76012a5253c1c02ccdf88843cdb980042eab746e1a93ce2541f89d91c" - }, - "length": 789, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets.json deleted file mode 100644 index eb115384..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b1eb1d74c0e65524c85f96f9badf09a4d2ed1259fb427fc689fc2279ebb4d867", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index b0c459f9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/timestamp.json deleted file mode 100644 index 96de50ec..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/1/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "d55dc9bd3e7a5a56cada46ca40858b7dd48fd994de1ea0067e20e9fc6401faf5d25b20ddc8f93a966d82d4f0eabf7ef03c3612dd01339bb7527a5271b1c41b07" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "41a2de22c5a4b972102e2c65b9f5024c384be52a03c345a36736c3bee79e30a7aa3853c4dfdc7dfc3d5ddb713258454f0ef9140ac52e832f3ca927030013ca8e" - }, - "length": 847, - "version": 2 - } - }, - "spec_version": "1.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.snapshot.json deleted file mode 120000 index 1307f574..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.targets.json deleted file mode 120000 index 85e1ecc2..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.snapshot.json deleted file mode 120000 index 24d10752..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.targets.json deleted file mode 120000 index f6a17494..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.root.json deleted file mode 100644 index 8ac5eb01..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "46ef3256d2df1f7259ec3044030cc6af71536aee4976b8858a46b0f0e98763679794546bcc21736231c0dac8cfbad936bdd18437d02a1c97e7ef347c16ddeb0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.snapshot.json deleted file mode 100644 index 7363452d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "42974be1e70b41809ab6c5bfaaef53508c3c1184cd045ee38cd737b0c9debaddbc0244731cbd208ead966561ab1103bae40d26fa3236ac974cb589ad77019c0e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "c113580e6b210d8cdaf93530870555cac34cd7a394a91ffd0462ed38326766f09c5712b1fb1c3ad53e7b2c24feac0180649b4fdcea7722e5c1ab05635709b4d4" - }, - "length": 2117, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "33835f152dcc9ab1396e0f44dff841eca2c747dfd8cccc079dd0f4a88e7920f29cfaa3d895618c39463bed3997d6ba83c7791749483f2df8f3589fff3f4c379d" - }, - "length": 990, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.targets.json deleted file mode 100644 index 6c7e9196..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/3.targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/root.json deleted file mode 100644 index 8ac5eb01..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "46ef3256d2df1f7259ec3044030cc6af71536aee4976b8858a46b0f0e98763679794546bcc21736231c0dac8cfbad936bdd18437d02a1c97e7ef347c16ddeb0c" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/snapshot.json deleted file mode 100644 index 7363452d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d792ff8cf3c5d9a8fe0fdfa585b25028fa9f49aa29c62a658140d4b98cc2c917", - "sig": "42974be1e70b41809ab6c5bfaaef53508c3c1184cd045ee38cd737b0c9debaddbc0244731cbd208ead966561ab1103bae40d26fa3236ac974cb589ad77019c0e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "c113580e6b210d8cdaf93530870555cac34cd7a394a91ffd0462ed38326766f09c5712b1fb1c3ad53e7b2c24feac0180649b4fdcea7722e5c1ab05635709b4d4" - }, - "length": 2117, - "version": 3 - }, - "targets.json": { - "hashes": { - "sha512": "33835f152dcc9ab1396e0f44dff841eca2c747dfd8cccc079dd0f4a88e7920f29cfaa3d895618c39463bed3997d6ba83c7791749483f2df8f3589fff3f4c379d" - }, - "length": 990, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets.json deleted file mode 100644 index 6c7e9196..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index de9aac3a..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 2ebb2d33..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/timestamp.json deleted file mode 100644 index 81071466..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/2/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "6344ddf5432d68616adb91cb81ad5017d17d95c238f15e4a5fe291e145d19d30b4834917a233c4c897ede7ba2d61dd23cdb285134de2b09b84ab62e8fea0120a" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "78828a5b8f961563240c4037cb8c90778ec5b14c54fbd2fc4e3c9ace67c55061d23cb532713ce23bfa71c1699f33dba928046749c1a70b0bf83688df12850353" - }, - "length": 847, - "version": 3 - } - }, - "spec_version": "1.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.snapshot.json deleted file mode 120000 index 4dfb0d02..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.targets.json deleted file mode 120000 index 1eeb5642..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.snapshot.json deleted file mode 120000 index 65445cb4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.targets.json deleted file mode 120000 index 3600a0f4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.snapshot.json deleted file mode 120000 index 7d86b95a..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.targets.json deleted file mode 120000 index d1df10e4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.root.json deleted file mode 100644 index a889f176..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "78594f8ff3160bfef32c85e58a795d8dc6831e4ec2596e6a93d17f2bcb183c3c2e2ec99a28cf9467ab9a947c5803f3c16703f9fada8b43f33ccd3c49bf8fe707" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.snapshot.json deleted file mode 100644 index dce624dd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "c186db540040a5f552e34365f62a497164ffe1a657bfd30ff5d7fa9eec7f1cf0a4302f99a28233b64492d27bd5a85f7a6114a7dba875f087f7ea27d553d0a80e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "1ab59b54e351d71820aff7a1a8c845e1d6820793ab542e798989bd28d2db80a05f1382dd4b403f387793be5bacbc179be429ee13e8ff5cb6a4b7d6e73b3e30bc" - }, - "length": 2117, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "518518c1f03d874f9832390dea5bc12ab0061400bd0b3b8b44e4a353087d802accde1ec3dc94e0be4931f572960a0192bd84e667c02e6ac99d0a3bf28f5f9802" - }, - "length": 1191, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.targets.json deleted file mode 100644 index 4ed9d72e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/4.targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/root.json deleted file mode 100644 index a889f176..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "78594f8ff3160bfef32c85e58a795d8dc6831e4ec2596e6a93d17f2bcb183c3c2e2ec99a28cf9467ab9a947c5803f3c16703f9fada8b43f33ccd3c49bf8fe707" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/snapshot.json deleted file mode 100644 index dce624dd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "c186db540040a5f552e34365f62a497164ffe1a657bfd30ff5d7fa9eec7f1cf0a4302f99a28233b64492d27bd5a85f7a6114a7dba875f087f7ea27d553d0a80e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "1ab59b54e351d71820aff7a1a8c845e1d6820793ab542e798989bd28d2db80a05f1382dd4b403f387793be5bacbc179be429ee13e8ff5cb6a4b7d6e73b3e30bc" - }, - "length": 2117, - "version": 4 - }, - "targets.json": { - "hashes": { - "sha512": "518518c1f03d874f9832390dea5bc12ab0061400bd0b3b8b44e4a353087d802accde1ec3dc94e0be4931f572960a0192bd84e667c02e6ac99d0a3bf28f5f9802" - }, - "length": 1191, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets.json deleted file mode 100644 index 4ed9d72e..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - } - }, - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index f8203976..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index 7cbcc2a6..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 180cdb4f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/timestamp.json deleted file mode 100644 index 6df0aafd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/3/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "b59406a55fbe2492022f2951dacd01fc7b400b7b41ec4028b8356161a5a71a33", - "sig": "d854e4d42a126ba8b7d643c5f8d721d9e3bef4e950a8c61f521148888dbda1f7f7ac6f665029a15d1c1e52787c3677611be4a1cb7251e93a3fbc0229f6e5a40f" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "9af21a02c5b066aea02f0216fc22cb66e40c95d0bcbd50d35f16e32636beb0ffd41f1547ec86e2d0640322953d3ffb8285bb495065898cd8b95faf54fd5a3309" - }, - "length": 848, - "version": 4 - } - }, - "spec_version": "1.0", - "version": 4 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.snapshot.json deleted file mode 120000 index f87f7ed7..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.targets.json deleted file mode 120000 index b0002ec9..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.snapshot.json deleted file mode 120000 index e96983b5..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.targets.json deleted file mode 120000 index dbb2a759..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.snapshot.json deleted file mode 120000 index f2fd5601..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.targets.json deleted file mode 120000 index ca61e77d..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.snapshot.json deleted file mode 120000 index a2f839ac..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.targets.json deleted file mode 120000 index 9f7a7841..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.root.json deleted file mode 100644 index 4e4912d6..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "a8bf62746b62a58f80c81bdbbdc67d142f1db9e6681ac0e46bf7d33aeac527e86af8294a35fea4cfd6c750d4f1333287c201837b2b37fce7a440ea58bdb0d907" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.snapshot.json deleted file mode 100644 index e62aef93..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "6c6b90af042c63f79a7d8079a26bd58fdcb8d84c829fd62aa554b4e9df6d31dfb5a6efb7744b814f7536ace6196c2e0b2768794fa40abf85b49dcc661d0f9a06" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "7a60ff2c4e027e05c318e9a0dc891c46e9899994b50c2ac0dad0bd6f439c69a71486606adf309969f981de6b20630e27f0e529e020c41c638b9f0895ccbd797b" - }, - "length": 2117, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "25ba8ef109680040b2e28dde51389397c51f4ba12acb1ea1b70dfc7e1bc5eceec71b1cbfb4747c47af8d9cdf76baa53ab5b2403eef226be1ae7a8d7794474ebf" - }, - "length": 1392, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.targets.json deleted file mode 100644 index 163e9e86..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/5.targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/root.json deleted file mode 100644 index 4e4912d6..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/root.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "signatures": [ - { - "keyid": "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d", - "sig": "a8bf62746b62a58f80c81bdbbdc67d142f1db9e6681ac0e46bf7d33aeac527e86af8294a35fea4cfd6c750d4f1333287c201837b2b37fce7a440ea58bdb0d907" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - }, - "scheme": "ed25519" - }, - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - }, - "scheme": "ed25519" - }, - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - }, - "scheme": "ed25519" - }, - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f": { - "keyid_hash_algorithms": [ - "sha256" - ], - "keytype": "ed25519", - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "4c663b6d0b9f2c74a19b6791c1417c8d1916e2d84461be1a8148e4386c89582d" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0" - ], - "threshold": 1 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/snapshot.json deleted file mode 100644 index e62aef93..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "6c6b90af042c63f79a7d8079a26bd58fdcb8d84c829fd62aa554b4e9df6d31dfb5a6efb7744b814f7536ace6196c2e0b2768794fa40abf85b49dcc661d0f9a06" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "7a60ff2c4e027e05c318e9a0dc891c46e9899994b50c2ac0dad0bd6f439c69a71486606adf309969f981de6b20630e27f0e529e020c41c638b9f0895ccbd797b" - }, - "length": 2117, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "25ba8ef109680040b2e28dde51389397c51f4ba12acb1ea1b70dfc7e1bc5eceec71b1cbfb4747c47af8d9cdf76baa53ab5b2403eef226be1ae7a8d7794474ebf" - }, - "length": 1392, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets.json deleted file mode 100644 index 163e9e86..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - } - }, - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index 8bca78fb..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 814339fc..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index dc5c46dc..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 16b79678..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/timestamp.json deleted file mode 100644 index 028d6314..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/4/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "sig": "6341fa975ecf98a7144a458ed4dc6a32b4d3bd0121fc0831679a582a9628cff71f8b13fe5b14f4fc8227f5ae8cfbc40998ed3ccfec84a91ee1e7ce6996678003" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "d1e96adc64da3b4d67016060b8ee9034e486e288595d51d5c24fcd037d4e756a6cff8a9e244da5de9b2bb6ab5bb7f3e7238ffebad0a1a3d50587d01c28f98c15" - }, - "length": 848, - "version": 5 - } - }, - "spec_version": "1.0", - "version": 5 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.snapshot.json deleted file mode 120000 index f7fb0982..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.targets.json deleted file mode 120000 index 127f6097..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.snapshot.json deleted file mode 120000 index 5b418d6a..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.targets.json deleted file mode 120000 index 04b0be44..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.snapshot.json deleted file mode 120000 index d23c05ca..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.targets.json deleted file mode 120000 index 2854154a..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.snapshot.json deleted file mode 120000 index b7aefb24..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.targets.json deleted file mode 120000 index fef64e45..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.snapshot.json deleted file mode 120000 index 4e98537c..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.targets.json deleted file mode 120000 index f8771442..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/5.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.snapshot.json deleted file mode 100644 index 7c199965..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "0e8dc07c124c26108fea54bf637b8133a6b9ba9defee8820ed8ebade9ed1f9b178163e712329179d3fe681e734d7d2078b3714e69e5e9d2a72abad3611c9560e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "7a60ff2c4e027e05c318e9a0dc891c46e9899994b50c2ac0dad0bd6f439c69a71486606adf309969f981de6b20630e27f0e529e020c41c638b9f0895ccbd797b" - }, - "length": 2117, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c57a6fd231341bea3adb36d5a9c07167ef26bf9b037470bef1dadfeb2cdafa73b39b30965e39175fa9be5426065073bbf859f149c366ae07ea2a0f6fb6730b00" - }, - "length": 1593, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.targets.json deleted file mode 100644 index c528a435..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/6.targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/root.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/snapshot.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/snapshot.json deleted file mode 100644 index 7c199965..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/snapshot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "signatures": [ - { - "keyid": "bed15bf57ba4deb4e09667099d45d119504420983d16fd0927ebfb0c25184e7f", - "sig": "0e8dc07c124c26108fea54bf637b8133a6b9ba9defee8820ed8ebade9ed1f9b178163e712329179d3fe681e734d7d2078b3714e69e5e9d2a72abad3611c9560e" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "root.json": { - "hashes": { - "sha512": "7a60ff2c4e027e05c318e9a0dc891c46e9899994b50c2ac0dad0bd6f439c69a71486606adf309969f981de6b20630e27f0e529e020c41c638b9f0895ccbd797b" - }, - "length": 2117, - "version": 5 - }, - "targets.json": { - "hashes": { - "sha512": "c57a6fd231341bea3adb36d5a9c07167ef26bf9b037470bef1dadfeb2cdafa73b39b30965e39175fa9be5426065073bbf859f149c366ae07ea2a0f6fb6730b00" - }, - "length": 1593, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets.json deleted file mode 100644 index c528a435..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signatures": [ - { - "keyid": "a3eba2113e37b749b908101bdb7b856a44f2853641830c0f939730aca3e30360", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ], - "signed": { - "_type": "targets", - "expires": "2100-01-01T00:00:00Z", - "spec_version": "1.0", - "targets": { - "0": { - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - }, - "length": 1 - }, - "1": { - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - }, - "length": 1 - }, - "2": { - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - }, - "length": 1 - }, - "3": { - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - }, - "length": 1 - }, - "4": { - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - }, - "length": 1 - }, - "5": { - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - }, - "length": 1 - } - }, - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index c70b61bd..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 1e66cb1b..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index a02a2316..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 74d1328f..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 120000 index 73a65ad2..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/timestamp.json b/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/timestamp.json deleted file mode 100644 index 85dd0d68..00000000 --- a/client/testdata/go-tuf-transition-M4/consistent-snapshot-true/5/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signatures": [ - { - "keyid": "79b5760e4c96b6becc12bec4260c9c1d533b9b70628ade2b229ef02b772b10b0", - "sig": "c928d7bd646cf71f1bc97efef782e5eccb7c88ebe0187708735a39f68dddd4e233702f72ba79a94f27cdb3cab3f568bc3c89598191d2f2dc6cfb968a0906c40d" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha512": "afa8cb95af9715cbf1ef4cf0497daec22e43c96012fd0e34de928c3adef7b4c9e71f10188ffa6d83c06d81c9182421acb03d20bcd7cc32df9b051bf37a728e89" - }, - "length": 848, - "version": 6 - } - }, - "spec_version": "1.0", - "version": 6 - } -} \ No newline at end of file diff --git a/client/testdata/go-tuf-transition-M4/generate.go b/client/testdata/go-tuf-transition-M4/generate.go deleted file mode 100644 index 6dc567c4..00000000 --- a/client/testdata/go-tuf-transition-M4/generate.go +++ /dev/null @@ -1,148 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "log" - "os" - "os/exec" - "path/filepath" - "time" - - tuf "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -var expirationDate = time.Date(2100, time.January, 1, 0, 0, 0, 0, time.UTC) - -type persistedKeys struct { - Encrypted bool `json:"encrypted"` - Data []*data.PrivateKey `json:"data"` -} - -func assertNoError(err error) { - if err != nil { - panic(fmt.Sprintf("assertion failed: %s", err)) - } -} - -func copyRepo(src string, dst string) { - cmd := exec.Command("cp", "-r", src, dst) - assertNoError(cmd.Run()) -} - -func newRepo(dir string) *tuf.Repo { - repo, err := tuf.NewRepoIndent(tuf.FileSystemStore(dir, nil), "", "\t") - assertNoError(err) - - return repo -} - -func commit(dir string, repo *tuf.Repo) { - assertNoError(repo.SnapshotWithExpires(expirationDate)) - assertNoError(repo.TimestampWithExpires(expirationDate)) - assertNoError(repo.Commit()) - - // Remove the keys directory to make sure we don't accidentally use a key. - assertNoError(os.RemoveAll(filepath.Join(dir, "keys"))) -} - -func addKeys(repo *tuf.Repo, roleKeys map[string][]*data.PrivateKey) { - for role, keys := range roleKeys { - for _, key := range keys { - assertNoError(repo.AddPrivateKeyWithExpires(role, key, expirationDate)) - } - } -} - -func addTargets(repo *tuf.Repo, dir string, files map[string][]byte) { - paths := []string{} - for file, data := range files { - path := filepath.Join(dir, "staged", "targets", file) - assertNoError(os.MkdirAll(filepath.Dir(path), 0755)) - assertNoError(os.WriteFile(path, data, 0644)) - paths = append(paths, file) - } - assertNoError(repo.AddTargetsWithExpires(paths, nil, expirationDate)) -} - -func revokeKeys(repo *tuf.Repo, role string, keyList []*data.PrivateKey) { - for _, key := range keyList { - signer, err := keys.GetSigner(key) - assertNoError(err) - assertNoError(repo.RevokeKeyWithExpires(role, signer.PublicData().IDs()[0], expirationDate)) - } -} - -func generateRepos(dir string, consistentSnapshot bool) { - f, err := os.Open("../keys.json") - assertNoError(err) - - var roleKeys map[string][][]*data.PrivateKey - assertNoError(json.NewDecoder(f).Decode(&roleKeys)) - - // Collect all the initial keys we'll use when creating repositories. - // We'll modify this to reflect rotated keys. - keys := map[string][]*data.PrivateKey{ - "root": roleKeys["root"][0], - "targets": roleKeys["targets"][0], - "snapshot": roleKeys["snapshot"][0], - "timestamp": roleKeys["timestamp"][0], - } - - // Create the initial repo. - dir0 := filepath.Join(dir, "0") - repo0 := newRepo(dir0) - repo0.Init(consistentSnapshot) - addKeys(repo0, keys) - addTargets(repo0, dir0, map[string][]byte{"0": []byte("0")}) - commit(dir0, repo0) - - // Rotate all the keys to make sure that works. - oldDir := dir0 - i := 1 - for _, role := range []string{"root", "targets", "snapshot", "timestamp"} { - // Setup the repo. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - copyRepo(oldDir, d) - repo := newRepo(d) - addKeys(repo, keys) - - // Actually rotate the keys - revokeKeys(repo, role, roleKeys[role][0]) - addKeys(repo, map[string][]*data.PrivateKey{ - role: roleKeys[role][1], - }) - keys[role] = roleKeys[role][1] - - // Add a target to make sure that works, then commit. - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) - - i += 1 - oldDir = d - } - - // Add another target file to make sure the workflow worked. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - copyRepo(oldDir, d) - repo := newRepo(d) - addKeys(repo, keys) - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) -} - -func main() { - cwd, err := os.Getwd() - assertNoError(err) - - for _, consistentSnapshot := range []bool{false, true} { - name := fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot) - log.Printf("generating %s", name) - generateRepos(filepath.Join(cwd, name), consistentSnapshot) - } - -} diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/1.root.json deleted file mode 100644 index a9ac50a0..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - } - } - }, - "roles": { - "root": { - "keyids": [ - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "afab8b34f93c99e200505cc6f0d6a9c4e757a7229f96bd31ab618f8bc4c3abe491b372bfec9d231136de46c1e183df194d372360ee9d32652f8c04d7574e2608" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/root.json deleted file mode 100644 index a9ac50a0..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - } - } - }, - "roles": { - "root": { - "keyids": [ - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "afab8b34f93c99e200505cc6f0d6a9c4e757a7229f96bd31ab618f8bc4c3abe491b372bfec9d231136de46c1e183df194d372360ee9d32652f8c04d7574e2608" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/snapshot.json deleted file mode 100644 index 5d2428fd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 588, - "hashes": { - "sha512": "2532c645262d3a15db2afc561d9ae75db96c3b42abe8bd994c173e45ea70177bc1b080e211d92b6f244d267dcb0a0bc2fbcd1c2b008881c19f950c5e8c0035ec" - }, - "version": 1 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "6efc0efbc7a3b849a58e9cb394af10fe6d199d2ead18e6931932c85f44269d5d73e8f18808d0d9b66fbfd9926b0bda9d2d26a7508a960758c0b84eb8aa31ac0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets.json deleted file mode 100644 index 6a822008..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets/0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/0/repository/timestamp.json deleted file mode 100644 index 92d160db..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/0/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "6fd318e2cc3bca35d2f597e504c095137263ffe3e72f5e5c64e6c7860bea1207448c8994066ffc1cf20898a9d1586cdf09be4e3ea06f69593ed5c7d772f8dfd1" - }, - "version": 1 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "943b219ab6c651793da08d8cf38c7d25fb959c75161b5b86562983841433f9f38c237bb87cf6ecfbb3cb7c78113a3ed2651ee57d3515e7edfc3bebbf349f2809" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/2.root.json deleted file mode 100644 index 38d2617a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/2.root.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "20e91b55c995989b270091b714347b15169285cb636ef05d68d49ed7b7a96ebfda13898e0d9ef928c382873b9dba90dca492dbf705d56a4b293adaaed574340f" - }, - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "65f63745aa8bd39132f827c427ea6d87f620ec805d9f376b6a8400dc3db7eb964e5423d31ed08867916d039661a70d6bf255bca552248021a4e78b5d357c2b0f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/root.json deleted file mode 100644 index 38d2617a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/root.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "20e91b55c995989b270091b714347b15169285cb636ef05d68d49ed7b7a96ebfda13898e0d9ef928c382873b9dba90dca492dbf705d56a4b293adaaed574340f" - }, - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "65f63745aa8bd39132f827c427ea6d87f620ec805d9f376b6a8400dc3db7eb964e5423d31ed08867916d039661a70d6bf255bca552248021a4e78b5d357c2b0f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/snapshot.json deleted file mode 100644 index aed7835d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 789, - "hashes": { - "sha512": "7a919ed2a5fb7cf80252c9307ac4d27bc2ab54f9bb803389977dcc3d09ae7dff533639c1b19a810d2b212a5c5e904e0f73ab01324ba79dffbb9f7488204caf2a" - }, - "version": 2 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "9a3734441c38daa3275ba60a2178b8dfe5f98296f408bf434144b4bd4f68af73b7f6860e6f2e638b93144ac5bebe361642bbff66a1195596bb8c841429b34508" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets.json deleted file mode 100644 index 0ae4c794..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/0 deleted file mode 120000 index aced6879..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/1 b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/1/repository/timestamp.json deleted file mode 100644 index ab60e90d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/1/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "d7204efe9ded4f18d679d75054f43b02b20d74189ea81ad90a67399a8884a810e380a4d343e284c4b6fde506e22a464038871d06950166548a84a76344e2bf3a" - }, - "version": 2 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "85c5afdd9dd3777d2cb31721519ab2942edffc9e1282b65b2cede505a469051ac5e86388461db49f948a5998b132dddb5ce0156d21622a6d2201fb93322de20f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/3.root.json deleted file mode 100644 index fab2f0a2..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/3.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "cfe8b0919d1707ca6c23501909b77c8b94d1ede2b85a3081ab7146244cc6fe436b06ad58163919276f2e37ddbcc13a0dde4851301053dcea2a9bcabc5e1cd004" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/root.json deleted file mode 100644 index fab2f0a2..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "cfe8b0919d1707ca6c23501909b77c8b94d1ede2b85a3081ab7146244cc6fe436b06ad58163919276f2e37ddbcc13a0dde4851301053dcea2a9bcabc5e1cd004" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/snapshot.json deleted file mode 100644 index ded8ac93..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 990, - "hashes": { - "sha512": "987022c23793b3d234d422c3ed4525f8c3771887db610fb2e7d6b455d27ad8b1b4a957a699d519c03754fe4feeb387ec84c95e1edac1d4e9b186bfbdff76ad10" - }, - "version": 3 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "31896c9165a37aa54cf1c4d5f936035e092b1cf4c233ef35cd12c987aaa02de7ec99f26c198984fe0dcc21765d096b25cd67e7ca058613b2b2abef3193dd880d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets.json deleted file mode 100644 index b22a1d7a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/0 deleted file mode 120000 index 2ac1d8be..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/1 b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/1 deleted file mode 120000 index 8e78bc37..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/2 b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/2/repository/timestamp.json deleted file mode 100644 index 4856974c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/2/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "70d2f64bc810a0ae1c827c28eed47304c3a9c57402447d129aa3ac851d809a48bd0421aaa99e9e49055984e77f221510415cf27aca8f30f4db1767d6b7bd6024" - }, - "version": 3 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "22367ebcf7c5265260b288e9fec6110257b8c8745af25f2b14c5d347ddab94f46893926bdd37c58d142089419708e446c5e3c1af5c47c51187fe69ca95038605" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/4.root.json deleted file mode 100644 index 8f1b843b..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/4.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "3004c4b60645c6cca18e33835837a1639eead05355aa549f1d1304a22304e7058a50fb6188fc3617a47248eb7481de7a625f036cc69b53daf04a103b12768401" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/root.json deleted file mode 100644 index 8f1b843b..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "3004c4b60645c6cca18e33835837a1639eead05355aa549f1d1304a22304e7058a50fb6188fc3617a47248eb7481de7a625f036cc69b53daf04a103b12768401" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/snapshot.json deleted file mode 100644 index 41e4ac68..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1191, - "hashes": { - "sha512": "2bf10fb9469cb5f44ccae3c8dac2f70c19e7c58479f74f21aca7a424774ed7ef43295fff3c05f7cfe457b5832366b64e0550874775e277d7233c060e9f94e140" - }, - "version": 4 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c5efdc1b461ae319c991fd1840771d94dfc8a3e655ac233901a27959e9f2c3e7ab61b83e3d674caf9e2a6043e776d7c32a2c36dbf0922f7f08059d08fc26720a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets.json deleted file mode 100644 index 8265b26f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/0 deleted file mode 120000 index 2e6dba05..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/1 b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/1 deleted file mode 120000 index 14fee5d8..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/2 b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/2 deleted file mode 120000 index dcd19e04..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/3 b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/3/repository/timestamp.json deleted file mode 100644 index c87022e7..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/3/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "4ddee1c0c54af1a3dc54897af33c2457525963059c29583e6df65b9b238732070bd8eb470201154f2d2fa5f8bdf37e01a86e6a53c2bcfe0ff302571458c1898d" - }, - "version": 4 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "585cdcc87c23711642449d469df8bedb53a67b65ac75c303d13b7022c8c34c1db70c926e009c2438639af3be1d613f7ce4c7e28020865ad5ad93a5b085a76005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/5.root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/5.root.json deleted file mode 100644 index b4113364..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/5.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "bd2edde6ba4f5cb3a0cc28dca272e2fc0be691575082479f86b82cea4e541a686a0c132c3a7eca231a5782e52e629df92f8f3f89a5b1f57e8b5368986bddfa0e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/root.json deleted file mode 100644 index b4113364..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315" - ], - "threshold": 1 - } - }, - "consistent_snapshot": false - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "bd2edde6ba4f5cb3a0cc28dca272e2fc0be691575082479f86b82cea4e541a686a0c132c3a7eca231a5782e52e629df92f8f3f89a5b1f57e8b5368986bddfa0e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/snapshot.json deleted file mode 100644 index 489ec316..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1392, - "hashes": { - "sha512": "93146957ab1f54fe1e8687f408c21a19ad6c033518148bb730b7e635e02f96d9297f1edf12ea5f50354cfcb90385eec9f594d04a08ee876c83759e2314ec8b1a" - }, - "version": 5 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c9da15fd5b0b359a46503d0a23fa3a4e8e481cb2bdb72d6dbec4852ed6f9d32e186b35071b6ca70ec947e1688458c3476d33991af202b177ffd79ff89955e703" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets.json deleted file mode 100644 index d81d1a69..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/0 deleted file mode 120000 index efe18e41..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/1 b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/1 deleted file mode 120000 index b4a40c47..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/2 b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/2 deleted file mode 120000 index 1c681715..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/3 b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/3 deleted file mode 120000 index 1dc4d27e..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/4 b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/4/repository/timestamp.json deleted file mode 100644 index 1eb6f40a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/4/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "066115510f2f7fbb2f5cb0a1c1d00759161d8a92329e9ce54d4b17c06466b5a4423bb8bcc9e47c0a37db5c7d8d3bc01df10c4ea25605778e788a76e3e9ca1e0e" - }, - "version": 5 - } - } - }, - "signatures": [ - { - "keyid": "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315", - "sig": "84b9e41c93b32eed4bdb6febe70f9bd4db39bbc7f0c7f820f6a078bbb7146df080a9ceaa237303e3f69e49eb33cc63f8ddff8fba8330904f5fe8d7a66f70400e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/5.root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/snapshot.json deleted file mode 100644 index 45a607b4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1593, - "hashes": { - "sha512": "96fa32225e88f9e98db51369fce606039040efc51f098552594132b301228a78c2f2034d059e4d7d6d7bea14ae9862dd8a995056c5f2ed5ff0d6dc09b9da01df" - }, - "version": 6 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "7da0cd1e09be0b8161a1048e08a645e5c8d1558137b2934418bf4e28d4d380b6df2306f5cc89e87e41e5abf079547a709fccd2548bf00fd5acfe5ad2496d670b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets.json deleted file mode 100644 index 241d29bd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - }, - "5": { - "length": 1, - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/0 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/0 deleted file mode 120000 index 94cc2872..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/1 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/1 deleted file mode 120000 index 51c7c9a9..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/2 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/2 deleted file mode 120000 index 46e3032e..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/3 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/3 deleted file mode 120000 index ca268e91..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/4 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/4 deleted file mode 120000 index 19339ad4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/5 b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/targets/5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-false/5/repository/timestamp.json deleted file mode 100644 index 1129005f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-false/5/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "7113ee370f6e1b35df7fd8203d27760e8eb8c32195e8a895f140584caff81256ccdf2d03ed43a5efac45ee4f869908cee2275c0f7e6b54969602e0542c9f78f9" - }, - "version": 6 - } - } - }, - "signatures": [ - { - "keyid": "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315", - "sig": "85758e7d1cdbedfd3d363136924a6e7878a2b9b68486ecc65658a29f96b55fcfeeda0f94fcae30fa3ceafc3ef5f82df8c68ad2774b6e4f4ea0e6cdbafdce8e0f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.root.json deleted file mode 100644 index a564c6a3..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - } - } - }, - "roles": { - "root": { - "keyids": [ - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "104eb78cba674adfc7ade1d4396c99466a7d4480e50aab89df53117faffd3d4d4ea87833fe6f83b8dc7f6e1e4a62c0329244c6e5f910627772df3c4d61a8900f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.snapshot.json deleted file mode 100644 index 5d2428fd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 588, - "hashes": { - "sha512": "2532c645262d3a15db2afc561d9ae75db96c3b42abe8bd994c173e45ea70177bc1b080e211d92b6f244d267dcb0a0bc2fbcd1c2b008881c19f950c5e8c0035ec" - }, - "version": 1 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "6efc0efbc7a3b849a58e9cb394af10fe6d199d2ead18e6931932c85f44269d5d73e8f18808d0d9b66fbfd9926b0bda9d2d26a7508a960758c0b84eb8aa31ac0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.targets.json deleted file mode 100644 index 6a822008..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/1.targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/root.json deleted file mode 100644 index a564c6a3..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - } - } - }, - "roles": { - "root": { - "keyids": [ - "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "104eb78cba674adfc7ade1d4396c99466a7d4480e50aab89df53117faffd3d4d4ea87833fe6f83b8dc7f6e1e4a62c0329244c6e5f910627772df3c4d61a8900f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/snapshot.json deleted file mode 100644 index 5d2428fd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 588, - "hashes": { - "sha512": "2532c645262d3a15db2afc561d9ae75db96c3b42abe8bd994c173e45ea70177bc1b080e211d92b6f244d267dcb0a0bc2fbcd1c2b008881c19f950c5e8c0035ec" - }, - "version": 1 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "6efc0efbc7a3b849a58e9cb394af10fe6d199d2ead18e6931932c85f44269d5d73e8f18808d0d9b66fbfd9926b0bda9d2d26a7508a960758c0b84eb8aa31ac0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets.json deleted file mode 100644 index 6a822008..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "4d5c3a5da43f3792d077c1128fa28585982ff2957fae59be02a831fc920d0b91cbeaa99fd6c15066ec4da8bf12f993440a90d1624fd7b0a68070e5d60ed2500f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 100644 index c2270834..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/0/repository/timestamp.json deleted file mode 100644 index 92d160db..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/0/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 1, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "6fd318e2cc3bca35d2f597e504c095137263ffe3e72f5e5c64e6c7860bea1207448c8994066ffc1cf20898a9d1586cdf09be4e3ea06f69593ed5c7d772f8dfd1" - }, - "version": 1 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "943b219ab6c651793da08d8cf38c7d25fb959c75161b5b86562983841433f9f38c237bb87cf6ecfbb3cb7c78113a3ed2651ee57d3515e7edfc3bebbf349f2809" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.root.json deleted file mode 120000 index 0ffd2b6d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.snapshot.json deleted file mode 120000 index 840f843e..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.targets.json deleted file mode 120000 index 4d11148d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../0/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.root.json deleted file mode 100644 index 92ff6b2c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.root.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "7ac71619b21fe3a076fbbf3e17f92177c5374f005c32f1818e7c92eee107e3c726ccf906e800878035a9caf7679610147d72cb515cd76164b08b5c8bf93c0f0e" - }, - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "e560f386c0c270bb44cedda965ad21526e65162b41a2c30d84fb3a80f58913432e8dc74e5e7b0635ccdf51a2b951dae3b0ba28b4aac4088641a2b2cd2933dd04" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.snapshot.json deleted file mode 100644 index aed7835d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 789, - "hashes": { - "sha512": "7a919ed2a5fb7cf80252c9307ac4d27bc2ab54f9bb803389977dcc3d09ae7dff533639c1b19a810d2b212a5c5e904e0f73ab01324ba79dffbb9f7488204caf2a" - }, - "version": 2 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "9a3734441c38daa3275ba60a2178b8dfe5f98296f408bf434144b4bd4f68af73b7f6860e6f2e638b93144ac5bebe361642bbff66a1195596bb8c841429b34508" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.targets.json deleted file mode 100644 index 0ae4c794..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/2.targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/root.json deleted file mode 100644 index 92ff6b2c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/root.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "7ac71619b21fe3a076fbbf3e17f92177c5374f005c32f1818e7c92eee107e3c726ccf906e800878035a9caf7679610147d72cb515cd76164b08b5c8bf93c0f0e" - }, - { - "keyid": "ce72db3f938914205461a415c9b7b91267a2079df991fd6283aa8461988c1add", - "sig": "e560f386c0c270bb44cedda965ad21526e65162b41a2c30d84fb3a80f58913432e8dc74e5e7b0635ccdf51a2b951dae3b0ba28b4aac4088641a2b2cd2933dd04" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/snapshot.json deleted file mode 100644 index aed7835d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 789, - "hashes": { - "sha512": "7a919ed2a5fb7cf80252c9307ac4d27bc2ab54f9bb803389977dcc3d09ae7dff533639c1b19a810d2b212a5c5e904e0f73ab01324ba79dffbb9f7488204caf2a" - }, - "version": 2 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "9a3734441c38daa3275ba60a2178b8dfe5f98296f408bf434144b4bd4f68af73b7f6860e6f2e638b93144ac5bebe361642bbff66a1195596bb8c841429b34508" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets.json deleted file mode 100644 index 0ae4c794..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - } - } - }, - "signatures": [ - { - "keyid": "808aa256a8172bb0cb961767c6768e55ccf732c99afccc6145752d7a328b7937", - "sig": "81bcf5921834a20b8b0946815ad4316f43ffce20b3793e6653dc5fd4b98f1c6318ce2243948574e82414a102717a6f2d731250b3191c54abc8391fd867503e0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index b0c459f9..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../0/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 100644 index 56a6051c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/1/repository/timestamp.json deleted file mode 100644 index ab60e90d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/1/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 2, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "d7204efe9ded4f18d679d75054f43b02b20d74189ea81ad90a67399a8884a810e380a4d343e284c4b6fde506e22a464038871d06950166548a84a76344e2bf3a" - }, - "version": 2 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "85c5afdd9dd3777d2cb31721519ab2942edffc9e1282b65b2cede505a469051ac5e86388461db49f948a5998b132dddb5ce0156d21622a6d2201fb93322de20f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.root.json deleted file mode 120000 index cd730513..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.snapshot.json deleted file mode 120000 index 1307f574..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.targets.json deleted file mode 120000 index 85e1ecc2..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.root.json deleted file mode 120000 index bbdcb128..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.snapshot.json deleted file mode 120000 index 24d10752..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.targets.json deleted file mode 120000 index f6a17494..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../1/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.root.json deleted file mode 100644 index 3b1c2e28..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "475436056dca79fd151ae830ad2f4dbc7ecc5b146a79319c20a1167d4f214047d8f3847d1cda4ccd32a48acb13acbea55ba7e8254cffaa07e3de9ecdd0c13d03" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.snapshot.json deleted file mode 100644 index ded8ac93..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 990, - "hashes": { - "sha512": "987022c23793b3d234d422c3ed4525f8c3771887db610fb2e7d6b455d27ad8b1b4a957a699d519c03754fe4feeb387ec84c95e1edac1d4e9b186bfbdff76ad10" - }, - "version": 3 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "31896c9165a37aa54cf1c4d5f936035e092b1cf4c233ef35cd12c987aaa02de7ec99f26c198984fe0dcc21765d096b25cd67e7ca058613b2b2abef3193dd880d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.targets.json deleted file mode 100644 index b22a1d7a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/3.targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/root.json deleted file mode 100644 index 3b1c2e28..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - }, - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "475436056dca79fd151ae830ad2f4dbc7ecc5b146a79319c20a1167d4f214047d8f3847d1cda4ccd32a48acb13acbea55ba7e8254cffaa07e3de9ecdd0c13d03" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/snapshot.json deleted file mode 100644 index ded8ac93..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 990, - "hashes": { - "sha512": "987022c23793b3d234d422c3ed4525f8c3771887db610fb2e7d6b455d27ad8b1b4a957a699d519c03754fe4feeb387ec84c95e1edac1d4e9b186bfbdff76ad10" - }, - "version": 3 - } - } - }, - "signatures": [ - { - "keyid": "289e5a9e71afd7909326aa4caea92f7557ee0e2283d8c31f0c3401ce67248a45", - "sig": "31896c9165a37aa54cf1c4d5f936035e092b1cf4c233ef35cd12c987aaa02de7ec99f26c198984fe0dcc21765d096b25cd67e7ca058613b2b2abef3193dd880d" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets.json deleted file mode 100644 index b22a1d7a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "09593c7b47f4dbf1e8ac949fa010279ffbbd36070a54a89b689378441e8111602d4236fa2962063778c82027d4746a8973ba8fea86e9c105190da9fa362d8b0c" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index de9aac3a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 100644 index d8263ee9..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 2ebb2d33..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../1/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/2/repository/timestamp.json deleted file mode 100644 index 4856974c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/2/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 3, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 617, - "hashes": { - "sha512": "70d2f64bc810a0ae1c827c28eed47304c3a9c57402447d129aa3ac851d809a48bd0421aaa99e9e49055984e77f221510415cf27aca8f30f4db1767d6b7bd6024" - }, - "version": 3 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "22367ebcf7c5265260b288e9fec6110257b8c8745af25f2b14c5d347ddab94f46893926bdd37c58d142089419708e446c5e3c1af5c47c51187fe69ca95038605" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.root.json deleted file mode 120000 index fb4fe81b..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.snapshot.json deleted file mode 120000 index 4dfb0d02..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.targets.json deleted file mode 120000 index 1eeb5642..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.root.json deleted file mode 120000 index 55f8b9d4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.snapshot.json deleted file mode 120000 index 65445cb4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.targets.json deleted file mode 120000 index 3600a0f4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.root.json deleted file mode 120000 index b4564b7f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.snapshot.json deleted file mode 120000 index 7d86b95a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.targets.json deleted file mode 120000 index d1df10e4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../2/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.root.json deleted file mode 100644 index a389f497..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "15431a0217deb636e2e79876cfdfc8b78fdda1119e6c8512c7dc61af240a7d2303f172e7fc28de7dfe58d92c84f5118ccd09d0f29f49aaa3f7ef95edf21e2d0a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.snapshot.json deleted file mode 100644 index 41e4ac68..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1191, - "hashes": { - "sha512": "2bf10fb9469cb5f44ccae3c8dac2f70c19e7c58479f74f21aca7a424774ed7ef43295fff3c05f7cfe457b5832366b64e0550874775e277d7233c060e9f94e140" - }, - "version": 4 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c5efdc1b461ae319c991fd1840771d94dfc8a3e655ac233901a27959e9f2c3e7ab61b83e3d674caf9e2a6043e776d7c32a2c36dbf0922f7f08059d08fc26720a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.targets.json deleted file mode 100644 index 8265b26f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/4.targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/root.json deleted file mode 100644 index a389f497..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "15431a0217deb636e2e79876cfdfc8b78fdda1119e6c8512c7dc61af240a7d2303f172e7fc28de7dfe58d92c84f5118ccd09d0f29f49aaa3f7ef95edf21e2d0a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/snapshot.json deleted file mode 100644 index 41e4ac68..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1191, - "hashes": { - "sha512": "2bf10fb9469cb5f44ccae3c8dac2f70c19e7c58479f74f21aca7a424774ed7ef43295fff3c05f7cfe457b5832366b64e0550874775e277d7233c060e9f94e140" - }, - "version": 4 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c5efdc1b461ae319c991fd1840771d94dfc8a3e655ac233901a27959e9f2c3e7ab61b83e3d674caf9e2a6043e776d7c32a2c36dbf0922f7f08059d08fc26720a" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets.json deleted file mode 100644 index 8265b26f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "7bfe0a63ee324034807b5341336d9d2d64e9ef3936086577b5bbcc6d021b4656bd6bf14d817bbb3908e4dcb05391d1b4031b527c14d942c2d1e38275d5ff1308" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index f8203976..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 100644 index e440e5c8..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index 7cbcc2a6..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 180cdb4f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../2/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/3/repository/timestamp.json deleted file mode 100644 index c87022e7..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/3/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 4, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "4ddee1c0c54af1a3dc54897af33c2457525963059c29583e6df65b9b238732070bd8eb470201154f2d2fa5f8bdf37e01a86e6a53c2bcfe0ff302571458c1898d" - }, - "version": 4 - } - } - }, - "signatures": [ - { - "keyid": "aa3255b4e8e17e566d2bdbea0e5842978f9fa1d2fa9ec76ae76b146164acbfc8", - "sig": "585cdcc87c23711642449d469df8bedb53a67b65ac75c303d13b7022c8c34c1db70c926e009c2438639af3be1d613f7ce4c7e28020865ad5ad93a5b085a76005" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.root.json deleted file mode 120000 index 741d2189..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.snapshot.json deleted file mode 120000 index f87f7ed7..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.targets.json deleted file mode 120000 index b0002ec9..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.root.json deleted file mode 120000 index fb9b350d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.snapshot.json deleted file mode 120000 index e96983b5..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.targets.json deleted file mode 120000 index dbb2a759..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.root.json deleted file mode 120000 index 65e6c5b4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.snapshot.json deleted file mode 120000 index f2fd5601..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.targets.json deleted file mode 120000 index ca61e77d..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.root.json deleted file mode 120000 index c3662ce8..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.snapshot.json deleted file mode 120000 index a2f839ac..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.targets.json deleted file mode 120000 index 9f7a7841..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../3/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.root.json deleted file mode 100644 index dcb0e92f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "2b6f30258eaf8b4b2d900a2efb4a597b45a9c0c5a0720d5521dd37d63c34d1db62aafaa1d95b6d881f9c991615ab68930c24ef247d2f45836bca3659e36d9c0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.snapshot.json deleted file mode 100644 index 489ec316..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1392, - "hashes": { - "sha512": "93146957ab1f54fe1e8687f408c21a19ad6c033518148bb730b7e635e02f96d9297f1edf12ea5f50354cfcb90385eec9f594d04a08ee876c83759e2314ec8b1a" - }, - "version": 5 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c9da15fd5b0b359a46503d0a23fa3a4e8e481cb2bdb72d6dbec4852ed6f9d32e186b35071b6ca70ec947e1688458c3476d33991af202b177ffd79ff89955e703" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.targets.json deleted file mode 100644 index d81d1a69..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/5.targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/root.json deleted file mode 100644 index dcb0e92f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signed": { - "_type": "root", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "keys": { - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - } - }, - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - }, - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - }, - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1": { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - }, - "roles": { - "root": { - "keyids": [ - "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315" - ], - "threshold": 1 - } - }, - "consistent_snapshot": true - }, - "signatures": [ - { - "keyid": "b2403f96ae9b1089d8cbc15bbc35e9acbacd7984571f951b43aab56aedcfa84f", - "sig": "2b6f30258eaf8b4b2d900a2efb4a597b45a9c0c5a0720d5521dd37d63c34d1db62aafaa1d95b6d881f9c991615ab68930c24ef247d2f45836bca3659e36d9c0b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/snapshot.json deleted file mode 100644 index 489ec316..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1392, - "hashes": { - "sha512": "93146957ab1f54fe1e8687f408c21a19ad6c033518148bb730b7e635e02f96d9297f1edf12ea5f50354cfcb90385eec9f594d04a08ee876c83759e2314ec8b1a" - }, - "version": 5 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "c9da15fd5b0b359a46503d0a23fa3a4e8e481cb2bdb72d6dbec4852ed6f9d32e186b35071b6ca70ec947e1688458c3476d33991af202b177ffd79ff89955e703" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets.json deleted file mode 100644 index d81d1a69..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "68f2346cdbe045e8558b2ccd86be66e15466955167557c704b51d7163838f670c53ab9247c16a4ed0cd4ecc981a7e2a04a350b01548f97654499d6f9c17c4202" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index 8bca78fb..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 814339fc..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index dc5c46dc..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 16b79678..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../3/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 100644 index bf0d87ab..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -4 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/4/repository/timestamp.json deleted file mode 100644 index 1eb6f40a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/4/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 5, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "066115510f2f7fbb2f5cb0a1c1d00759161d8a92329e9ce54d4b17c06466b5a4423bb8bcc9e47c0a37db5c7d8d3bc01df10c4ea25605778e788a76e3e9ca1e0e" - }, - "version": 5 - } - } - }, - "signatures": [ - { - "keyid": "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315", - "sig": "84b9e41c93b32eed4bdb6febe70f9bd4db39bbc7f0c7f820f6a078bbb7146df080a9ceaa237303e3f69e49eb33cc63f8ddff8fba8330904f5fe8d7a66f70400e" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.root.json deleted file mode 120000 index fb796e32..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.snapshot.json deleted file mode 120000 index f7fb0982..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.targets.json deleted file mode 120000 index 127f6097..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/1.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/1.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.root.json deleted file mode 120000 index 5a3e4546..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.snapshot.json deleted file mode 120000 index 5b418d6a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.targets.json deleted file mode 120000 index 04b0be44..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/2.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/2.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.root.json deleted file mode 120000 index d1cb2513..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.snapshot.json deleted file mode 120000 index d23c05ca..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.targets.json deleted file mode 120000 index 2854154a..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/3.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/3.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.root.json deleted file mode 120000 index bda6d089..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.snapshot.json deleted file mode 120000 index b7aefb24..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.targets.json deleted file mode 120000 index fef64e45..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/4.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/4.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.root.json deleted file mode 120000 index f99552a4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.snapshot.json deleted file mode 120000 index 4e98537c..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.snapshot.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.snapshot.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.targets.json deleted file mode 120000 index f8771442..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/5.targets.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/5.targets.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.snapshot.json deleted file mode 100644 index 45a607b4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1593, - "hashes": { - "sha512": "96fa32225e88f9e98db51369fce606039040efc51f098552594132b301228a78c2f2034d059e4d7d6d7bea14ae9862dd8a995056c5f2ed5ff0d6dc09b9da01df" - }, - "version": 6 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "7da0cd1e09be0b8161a1048e08a645e5c8d1558137b2934418bf4e28d4d380b6df2306f5cc89e87e41e5abf079547a709fccd2548bf00fd5acfe5ad2496d670b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.targets.json deleted file mode 100644 index 241d29bd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/6.targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - }, - "5": { - "length": 1, - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/root.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/root.json deleted file mode 120000 index 3d140581..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/root.json +++ /dev/null @@ -1 +0,0 @@ -../../4/repository/root.json \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/snapshot.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/snapshot.json deleted file mode 100644 index 45a607b4..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/snapshot.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "snapshot", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "targets.json": { - "length": 1593, - "hashes": { - "sha512": "96fa32225e88f9e98db51369fce606039040efc51f098552594132b301228a78c2f2034d059e4d7d6d7bea14ae9862dd8a995056c5f2ed5ff0d6dc09b9da01df" - }, - "version": 6 - } - } - }, - "signatures": [ - { - "keyid": "b096bc2d67080cec22e6c0bbaa69cfd9d714b9e9ad847d255f950b2728855fef", - "sig": "7da0cd1e09be0b8161a1048e08a645e5c8d1558137b2934418bf4e28d4d380b6df2306f5cc89e87e41e5abf079547a709fccd2548bf00fd5acfe5ad2496d670b" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets.json deleted file mode 100644 index 241d29bd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "signed": { - "_type": "targets", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "targets": { - "0": { - "length": 1, - "hashes": { - "sha512": "31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99" - } - }, - "1": { - "length": 1, - "hashes": { - "sha512": "4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a" - } - }, - "2": { - "length": 1, - "hashes": { - "sha512": "40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114" - } - }, - "3": { - "length": 1, - "hashes": { - "sha512": "3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb" - } - }, - "4": { - "length": 1, - "hashes": { - "sha512": "a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568" - } - }, - "5": { - "length": 1, - "hashes": { - "sha512": "06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25" - } - } - } - }, - "signatures": [ - { - "keyid": "bc8f087663855564b358ddf314d5932ab920af17bd1df2f58b397afd82d76dc1", - "sig": "1e80ae84c4badf194e2fd7225c120999d8f628598fa0e994a2ff7cac705ec2f14601a64ba5370fc668f3fb114975dd81c554400d757f41762c4e12eb4db35d02" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 deleted file mode 100644 index 7813681f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/06df05371981a237d0ed11472fae7c94c9ac0eff1d05413516710d17b10a4fb6f4517bda4a695f02d0a73dd4db543b4653df28f5d09dab86f92ffb9b86d01e25.5 +++ /dev/null @@ -1 +0,0 @@ -5 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 deleted file mode 120000 index c70b61bd..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/31bca02094eb78126a517b206a88c73cfa9ec6f704c7030d18212cace820f025f00bf0ea68dbf3f3a5436ca63b53bf7bf80ad8d5de7d8359d0b7fed9dbc3ab99.0 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 deleted file mode 120000 index 1e66cb1b..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/3bafbf08882a2d10133093a1b8433f50563b93c14acd05b79028eb1d12799027241450980651994501423a66c276ae26c43b739bc65c4e16b10c3af6c202aebb.3 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 deleted file mode 120000 index a02a2316..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/40b244112641dd78dd4f93b6c9190dd46e0099194d5a44257b7efad6ef9ff4683da1eda0244448cb343aa688f5d3efd7314dafe580ac0bcbf115aeca9e8dc114.2 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 deleted file mode 120000 index 74d1328f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a.1 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 deleted file mode 120000 index 73a65ad2..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 +++ /dev/null @@ -1 +0,0 @@ -../../../4/repository/targets/a321d8b405e3ef2604959847b36d171eebebc4a8941dc70a4784935a4fca5d5813de84dfa049f06549aa61b20848c1633ce81b675286ea8fb53db240d831c568.4 \ No newline at end of file diff --git a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/timestamp.json b/client/testdata/go-tuf/consistent-snapshot-true/5/repository/timestamp.json deleted file mode 100644 index 1129005f..00000000 --- a/client/testdata/go-tuf/consistent-snapshot-true/5/repository/timestamp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "signed": { - "_type": "timestamp", - "spec_version": "1.0", - "version": 6, - "expires": "2100-01-01T00:00:00Z", - "meta": { - "snapshot.json": { - "length": 618, - "hashes": { - "sha512": "7113ee370f6e1b35df7fd8203d27760e8eb8c32195e8a895f140584caff81256ccdf2d03ed43a5efac45ee4f869908cee2275c0f7e6b54969602e0542c9f78f9" - }, - "version": 6 - } - } - }, - "signatures": [ - { - "keyid": "a8eaf6de5aecfd0a72b60295b1e1cd12f349079ebcbbb63dbe7072f162e85315", - "sig": "85758e7d1cdbedfd3d363136924a6e7878a2b9b68486ecc65658a29f96b55fcfeeda0f94fcae30fa3ceafc3ef5f82df8c68ad2774b6e4f4ea0e6cdbafdce8e0f" - } - ] -} \ No newline at end of file diff --git a/client/testdata/go-tuf/generate.go b/client/testdata/go-tuf/generate.go deleted file mode 100644 index 51629bd3..00000000 --- a/client/testdata/go-tuf/generate.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "log" - "os" - "path/filepath" - - "github.com/theupdateframework/go-tuf/client/testdata/go-tuf/generator" -) - -func main() { - cwd, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - - generator.Generate(filepath.Join(cwd, "consistent-snapshot-false"), "../keys.json", false) - generator.Generate(filepath.Join(cwd, "consistent-snapshot-true"), "../keys.json", true) -} diff --git a/client/testdata/go-tuf/generator/generator.go b/client/testdata/go-tuf/generator/generator.go deleted file mode 100644 index 43903ace..00000000 --- a/client/testdata/go-tuf/generator/generator.go +++ /dev/null @@ -1,177 +0,0 @@ -package generator - -import ( - "encoding/json" - "fmt" - "io" - "io/fs" - "log" - "os" - "path/filepath" - "time" - - tuf "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -var expirationDate = time.Date(2100, time.January, 1, 0, 0, 0, 0, time.UTC) - -type persistedKeys struct { - Encrypted bool `json:"encrypted"` - Data []*data.PrivateKey `json:"data"` -} - -func assertNoError(err error) { - if err != nil { - panic(fmt.Sprintf("assertion failed: %s", err)) - } -} - -// copyRepo recursively copies all regular files and directories under src -// to dst. In the case where any destination file/directory exists -// (including dst itself), an error is returned. -func copyRepo(src string, dst string) error { - copyToDest := func(path string, info fs.FileInfo, err error) error { - if err != nil { - return err - } - rel, err := filepath.Rel(src, path) - if err != nil { - return err - } - target := filepath.Join(dst, rel) - mode := info.Mode() - if mode.IsDir() { - return os.Mkdir(target, mode.Perm()) - } else if mode.IsRegular() { - sfile, err := os.Open(path) - if err != nil { - return err - } - defer sfile.Close() - dfile, err := os.OpenFile(target, os.O_WRONLY|os.O_CREATE|os.O_EXCL, mode.Perm()) - if err != nil { - return err - } - defer dfile.Close() - if _, err := io.Copy(dfile, sfile); err != nil { - return err - } - return nil - } - return fmt.Errorf("unknown mode %v", mode) - } - return filepath.Walk(src, copyToDest) -} - -func newRepo(dir string) *tuf.Repo { - repo, err := tuf.NewRepoIndent(tuf.FileSystemStore(dir, nil), "", "\t") - assertNoError(err) - - return repo -} - -func commit(dir string, repo *tuf.Repo) { - assertNoError(repo.SnapshotWithExpires(expirationDate)) - assertNoError(repo.TimestampWithExpires(expirationDate)) - assertNoError(repo.Commit()) - - // Remove the keys directory to make sure we don't accidentally use a key. - assertNoError(os.RemoveAll(filepath.Join(dir, "keys"))) -} - -func addKeys(repo *tuf.Repo, roleKeys map[string][]*data.PrivateKey) { - for role, keyList := range roleKeys { - for _, key := range keyList { - signer, err := keys.GetSigner(key) - assertNoError(err) - assertNoError(repo.AddPrivateKeyWithExpires(role, signer, expirationDate)) - } - } -} - -func addTargets(repo *tuf.Repo, dir string, files map[string][]byte) { - paths := []string{} - for file, data := range files { - path := filepath.Join(dir, "staged", "targets", file) - assertNoError(os.MkdirAll(filepath.Dir(path), 0755)) - assertNoError(os.WriteFile(path, data, 0644)) - paths = append(paths, file) - } - assertNoError(repo.AddTargetsWithExpires(paths, nil, expirationDate)) -} - -func revokeKeys(repo *tuf.Repo, role string, keyList []*data.PrivateKey) { - for _, key := range keyList { - signer, err := keys.GetSigner(key) - assertNoError(err) - assertNoError(repo.RevokeKeyWithExpires(role, signer.PublicData().IDs()[0], expirationDate)) - } -} - -func generateRepos(dir string, roleKeys map[string][][]*data.PrivateKey, consistentSnapshot bool) { - // Collect all the initial keys we'll use when creating repositories. - // We'll modify this to reflect rotated keys. - keys := map[string][]*data.PrivateKey{ - "root": roleKeys["root"][0], - "targets": roleKeys["targets"][0], - "snapshot": roleKeys["snapshot"][0], - "timestamp": roleKeys["timestamp"][0], - } - - // Create the initial repo. - dir0 := filepath.Join(dir, "0") - repo0 := newRepo(dir0) - repo0.Init(consistentSnapshot) - addKeys(repo0, keys) - addTargets(repo0, dir0, map[string][]byte{"0": []byte("0")}) - commit(dir0, repo0) - - // Rotate all the keys to make sure that works. - oldDir := dir0 - i := 1 - for _, role := range []string{"root", "targets", "snapshot", "timestamp"} { - // Setup the repo. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - assertNoError(copyRepo(oldDir, d)) - repo := newRepo(d) - addKeys(repo, keys) - - // Actually rotate the keys - revokeKeys(repo, role, roleKeys[role][0]) - addKeys(repo, map[string][]*data.PrivateKey{ - role: roleKeys[role][1], - }) - keys[role] = roleKeys[role][1] - - // Add a target to make sure that works, then commit. - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) - - i += 1 - oldDir = d - } - - // Add another target file to make sure the workflow worked. - stepName := fmt.Sprintf("%d", i) - d := filepath.Join(dir, stepName) - assertNoError(copyRepo(oldDir, d)) - repo := newRepo(d) - addKeys(repo, keys) - addTargets(repo, d, map[string][]byte{stepName: []byte(stepName)}) - commit(d, repo) -} - -func Generate(dir string, keysPath string, consistentSnapshot bool) { - f, err := os.Open(keysPath) - assertNoError(err) - - var roleKeys map[string][][]*data.PrivateKey - assertNoError(json.NewDecoder(f).Decode(&roleKeys)) - - log.Printf("generating %s", dir) - - generateRepos(dir, roleKeys, consistentSnapshot) -} diff --git a/client/testdata/go-tuf/regenerate-metadata.sh b/client/testdata/go-tuf/regenerate-metadata.sh deleted file mode 100755 index ea286a03..00000000 --- a/client/testdata/go-tuf/regenerate-metadata.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -eu - -cd `dirname $0` - -for d in consistent-snapshot-false consistent-snapshot-true; do - if [[ -e $d ]]; then - rm -r $d - fi -done - -go run generate.go -go run ../tools/linkify-metadata.go diff --git a/client/testdata/keys.json b/client/testdata/keys.json deleted file mode 100644 index 0edf9e3a..00000000 --- a/client/testdata/keys.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "root": [ - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca", - "private": "68c2a06583ce83dabb1fc5d2b3697015b936f341f21be1be1397670a650ebd53bca152214dbfd3e7a1b7a7b3e2cc179fb00520fd7212c8a60ba99f14dfc0e1ca" - } - } - ], - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54", - "private": "e53595d99a85a33d7c228d28b25c856148c65be36558d0d61faa7e018a51db5c153986a7370e002f377dd68797e7466c421180c1571e233de2f8ab41c8af4f54" - } - } - ] - ], - "snapshot": [ - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94", - "private": "28de1763cc4cc78702167bd6cf862fc3977afc2404c5eebbdfb948bab55f14f0d482fa4805a50870aa1356ace6b764f7ab47ed4dc38f49b1a189afa25f179e94" - } - } - ], - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f", - "private": "fb85703e9c1c77cfe87c18eda24d5637d997503fef4107f6c04777b0fbec2b8c722dbc861813bb5b568524d62083e875c08e66fed1694d9161d253fa163dd86f" - } - } - ] - ], - "targets": [ - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a", - "private": "dee6d1fa7f041bee48a4e783d416e12c72ecdbd164202a71b23149adbb1c3d1f62f71f99c788f16bcdc8bb252455e3a690350e4ddea5a6aab1f9a3aaabcf369a" - } - } - ], - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "aee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42", - "private": "9f51d6d05cda79b80dad73d7e1611df50555d5090bf9fe6bfac5ad3690b57e2aaee574e56780ea1709a8b56e02d4ffdd9a3a1deaed61e2eb0701f376a4422e42" - } - } - ] - ], - "timestamp": [ - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "8656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160", - "private": "2ef838a6f0aa4bc0a746b8086098683f96bb5118c4dca7d3caa3dee5c86ea8398656ad20568cd3534c405e4d9a84b0c6e6163f7f66434df77416502835b9b160" - } - } - ], - [ - { - "keytype": "ed25519", - "scheme": "ed25519", - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keyval": { - "public": "3ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76", - "private": "1d9a579675ee85074a7c5d8a3e4a58a21e82bddc53bbfe1bef547d681d4049783ab34b0c2d4eadccaa0f0cf22ced07b552394063a9de2806993d022360dffc76" - } - } - ] - ] -} diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.c.json deleted file mode 100755 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.root.json deleted file mode 100755 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.snapshot.json deleted file mode 100755 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.targets.json deleted file mode 100755 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.timestamp.json deleted file mode 100755 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.root.json deleted file mode 100755 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.snapshot.json deleted file mode 100755 index 428c358d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "699125952eb773b09461a25fee03cf5a00237625e5dcb4e20334a13f09212daf6c97aff36fc1ac09ee302142eaec81447d57ba46d0831becb98d1526cb035106" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.targets.json deleted file mode 100755 index 9f9d94b6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "3b54f35d6c03622b723fe38d0115e9d98d47e147eaaa1d60e2f2925199c19e520a3a0de8842b16b1e4e73c0e71d8ca26169fa2b4063f544fb1613185f616f704" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.timestamp.json deleted file mode 100755 index 82737adc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "36db44bdcb33c37f259e8a12098e9a9114f0cffde4a7d4db0d88d04d7c93add316333e671c2c2305b081fe6a9a56f365ee3000ccf8675f43d5c663d66d3edb00" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "35c207d52640e403b9df82386a2258e093091538c7d77a641295e7b0262d6ca0", - "sha512": "0a89bb735c8324ff1e661ad25c4017c0c330f09cbd3213ffac7104540c5fa01a35787ae3f517fc2966a89f53f7c91754de852988776cc59b2a574f28a0434139" - }, - "length": 545, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/c.json deleted file mode 100755 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/root.json deleted file mode 100755 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/snapshot.json deleted file mode 100755 index 428c358d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "699125952eb773b09461a25fee03cf5a00237625e5dcb4e20334a13f09212daf6c97aff36fc1ac09ee302142eaec81447d57ba46d0831becb98d1526cb035106" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/targets.json deleted file mode 100755 index 9f9d94b6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "3b54f35d6c03622b723fe38d0115e9d98d47e147eaaa1d60e2f2925199c19e520a3a0de8842b16b1e4e73c0e71d8ca26169fa2b4063f544fb1613185f616f704" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/timestamp.json deleted file mode 100755 index 82737adc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "36db44bdcb33c37f259e8a12098e9a9114f0cffde4a7d4db0d88d04d7c93add316333e671c2c2305b081fe6a9a56f365ee3000ccf8675f43d5c663d66d3edb00" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "35c207d52640e403b9df82386a2258e093091538c7d77a641295e7b0262d6ca0", - "sha512": "0a89bb735c8324ff1e661ad25c4017c0c330f09cbd3213ffac7104540c5fa01a35787ae3f517fc2966a89f53f7c91754de852988776cc59b2a574f28a0434139" - }, - "length": 545, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.root.json deleted file mode 100755 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.snapshot.json deleted file mode 100755 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.targets.json deleted file mode 100755 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.timestamp.json deleted file mode 100755 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/root.json deleted file mode 100755 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/snapshot.json deleted file mode 100755 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/targets.json deleted file mode 100755 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/timestamp.json deleted file mode 100755 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/hash.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/hash.txt deleted file mode 100644 index 08714f7d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/hash.txt +++ /dev/null @@ -1 +0,0 @@ -cc7b129f475232ee357a05756746938abe35b652ec9c53a9ffb93d3c67103b20 \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.c.json deleted file mode 100755 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.root.json deleted file mode 100755 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.snapshot.json deleted file mode 100755 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.targets.json deleted file mode 100755 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.timestamp.json deleted file mode 100755 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.c.json deleted file mode 100755 index b3289663..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.c.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c2f5f087f1bb9708f48657789cf8516b3d974e2250d3ec0268e347e89fa6f9eaa9e9441f5402ce32735fe31750013c5dc1b53f4e9a93d748ff060fa94ad3fd07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.root.json deleted file mode 100755 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.snapshot.json deleted file mode 100755 index 428c358d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "699125952eb773b09461a25fee03cf5a00237625e5dcb4e20334a13f09212daf6c97aff36fc1ac09ee302142eaec81447d57ba46d0831becb98d1526cb035106" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.targets.json deleted file mode 100755 index 9f9d94b6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "3b54f35d6c03622b723fe38d0115e9d98d47e147eaaa1d60e2f2925199c19e520a3a0de8842b16b1e4e73c0e71d8ca26169fa2b4063f544fb1613185f616f704" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.timestamp.json deleted file mode 100755 index 82737adc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "36db44bdcb33c37f259e8a12098e9a9114f0cffde4a7d4db0d88d04d7c93add316333e671c2c2305b081fe6a9a56f365ee3000ccf8675f43d5c663d66d3edb00" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "35c207d52640e403b9df82386a2258e093091538c7d77a641295e7b0262d6ca0", - "sha512": "0a89bb735c8324ff1e661ad25c4017c0c330f09cbd3213ffac7104540c5fa01a35787ae3f517fc2966a89f53f7c91754de852988776cc59b2a574f28a0434139" - }, - "length": 545, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.root.json deleted file mode 100755 index 85a9f0c6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "bd598e8bc29a3eb07aa71caceb0644977d73df87aae8f84c98aff5e87ea2de642c4950232fc2f4065b12a9c19ecf33e511f4e4ac78da7dcd75b3779802f39504" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.snapshot.json deleted file mode 100755 index 9a9a016e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "563e4fa25cf88c0d029ac30608b219f27d9389945c7afd46c118eda1931fb64cae0f376780fee5ddbc66ab768733e2a5b640f3cc19ea687a3e71ae4116e5dd0f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 2 - }, - "targets.json": { - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.targets.json deleted file mode 100755 index 44f46760..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ced6f3e967a4366731f268a72a0f78aac0025641345a869baa013bb903502d7812ff22086834ab6b45f5c47cb7832139048663549d4e87d9219a0be7145c2807" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.timestamp.json deleted file mode 100755 index 5d64bbdd..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/3.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "65d615183cd58d8a6df898e8f7d6e886a44ca111d6cce95e9a86414b369703b2e9e897bfde405d0c0688b26a11c8f74217d0e0f62b4307d30919ce0f2cb0f700" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "83d637428ffc782a3f762dc6d983548aad231680f2d0d84270e02b538ecd0f68", - "sha512": "3bcc5c70fe8c65d8103dcb60a0773ff436719159854d8d24242fb1f39721e9648b849b2a495487986aba1fdc53382ce604e6ddcd1fde72cbb81f8e8149bfd2f1" - }, - "length": 545, - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/c.json deleted file mode 100755 index b3289663..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/c.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c2f5f087f1bb9708f48657789cf8516b3d974e2250d3ec0268e347e89fa6f9eaa9e9441f5402ce32735fe31750013c5dc1b53f4e9a93d748ff060fa94ad3fd07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/root.json deleted file mode 100755 index 85a9f0c6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "bd598e8bc29a3eb07aa71caceb0644977d73df87aae8f84c98aff5e87ea2de642c4950232fc2f4065b12a9c19ecf33e511f4e4ac78da7dcd75b3779802f39504" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/snapshot.json deleted file mode 100755 index 9a9a016e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "563e4fa25cf88c0d029ac30608b219f27d9389945c7afd46c118eda1931fb64cae0f376780fee5ddbc66ab768733e2a5b640f3cc19ea687a3e71ae4116e5dd0f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 2 - }, - "targets.json": { - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/targets.json deleted file mode 100755 index 44f46760..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ced6f3e967a4366731f268a72a0f78aac0025641345a869baa013bb903502d7812ff22086834ab6b45f5c47cb7832139048663549d4e87d9219a0be7145c2807" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/timestamp.json deleted file mode 100755 index 5d64bbdd..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata.staged/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "65d615183cd58d8a6df898e8f7d6e886a44ca111d6cce95e9a86414b369703b2e9e897bfde405d0c0688b26a11c8f74217d0e0f62b4307d30919ce0f2cb0f700" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "83d637428ffc782a3f762dc6d983548aad231680f2d0d84270e02b538ecd0f68", - "sha512": "3bcc5c70fe8c65d8103dcb60a0773ff436719159854d8d24242fb1f39721e9648b849b2a495487986aba1fdc53382ce604e6ddcd1fde72cbb81f8e8149bfd2f1" - }, - "length": 545, - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.c.json deleted file mode 100755 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.root.json deleted file mode 100755 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.snapshot.json deleted file mode 100755 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.targets.json deleted file mode 100755 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.timestamp.json deleted file mode 100755 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.c.json deleted file mode 100755 index b3289663..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.c.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c2f5f087f1bb9708f48657789cf8516b3d974e2250d3ec0268e347e89fa6f9eaa9e9441f5402ce32735fe31750013c5dc1b53f4e9a93d748ff060fa94ad3fd07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.root.json deleted file mode 100755 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.snapshot.json deleted file mode 100755 index 428c358d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "699125952eb773b09461a25fee03cf5a00237625e5dcb4e20334a13f09212daf6c97aff36fc1ac09ee302142eaec81447d57ba46d0831becb98d1526cb035106" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.targets.json deleted file mode 100755 index 9f9d94b6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "3b54f35d6c03622b723fe38d0115e9d98d47e147eaaa1d60e2f2925199c19e520a3a0de8842b16b1e4e73c0e71d8ca26169fa2b4063f544fb1613185f616f704" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.timestamp.json deleted file mode 100755 index 82737adc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "36db44bdcb33c37f259e8a12098e9a9114f0cffde4a7d4db0d88d04d7c93add316333e671c2c2305b081fe6a9a56f365ee3000ccf8675f43d5c663d66d3edb00" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "35c207d52640e403b9df82386a2258e093091538c7d77a641295e7b0262d6ca0", - "sha512": "0a89bb735c8324ff1e661ad25c4017c0c330f09cbd3213ffac7104540c5fa01a35787ae3f517fc2966a89f53f7c91754de852988776cc59b2a574f28a0434139" - }, - "length": 545, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.root.json deleted file mode 100755 index 85a9f0c6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "bd598e8bc29a3eb07aa71caceb0644977d73df87aae8f84c98aff5e87ea2de642c4950232fc2f4065b12a9c19ecf33e511f4e4ac78da7dcd75b3779802f39504" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.snapshot.json deleted file mode 100755 index 9a9a016e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "563e4fa25cf88c0d029ac30608b219f27d9389945c7afd46c118eda1931fb64cae0f376780fee5ddbc66ab768733e2a5b640f3cc19ea687a3e71ae4116e5dd0f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 2 - }, - "targets.json": { - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.targets.json deleted file mode 100755 index 44f46760..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ced6f3e967a4366731f268a72a0f78aac0025641345a869baa013bb903502d7812ff22086834ab6b45f5c47cb7832139048663549d4e87d9219a0be7145c2807" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.timestamp.json deleted file mode 100755 index 5d64bbdd..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/3.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "65d615183cd58d8a6df898e8f7d6e886a44ca111d6cce95e9a86414b369703b2e9e897bfde405d0c0688b26a11c8f74217d0e0f62b4307d30919ce0f2cb0f700" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "83d637428ffc782a3f762dc6d983548aad231680f2d0d84270e02b538ecd0f68", - "sha512": "3bcc5c70fe8c65d8103dcb60a0773ff436719159854d8d24242fb1f39721e9648b849b2a495487986aba1fdc53382ce604e6ddcd1fde72cbb81f8e8149bfd2f1" - }, - "length": 545, - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/a.json deleted file mode 100755 index ef485a9c..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "72b215c194090407abc8b7c513d69fd340abbe63037d26cbc2e4dd88c095a14da8d6e4aae0561f265e97d5c658b0260be2031af73c26e157e5f062c5f4aceb00" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - }, - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/b.json deleted file mode 100755 index b3c9ffd4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/b.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "6a4f4bb63d7b6db4b6c09ce081fd229052ca087c98d25653c8d187de04dbedfc219aa9482774b939d84eb404fd51cfe383f9ea65e19a1d3cc79b642701bcff0d" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/c.json deleted file mode 100755 index b3289663..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/c.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "c2f5f087f1bb9708f48657789cf8516b3d974e2250d3ec0268e347e89fa6f9eaa9e9441f5402ce32735fe31750013c5dc1b53f4e9a93d748ff060fa94ad3fd07" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/root.json deleted file mode 100755 index 85a9f0c6..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "bd598e8bc29a3eb07aa71caceb0644977d73df87aae8f84c98aff5e87ea2de642c4950232fc2f4065b12a9c19ecf33e511f4e4ac78da7dcd75b3779802f39504" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/snapshot.json deleted file mode 100755 index 9a9a016e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/snapshot.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "563e4fa25cf88c0d029ac30608b219f27d9389945c7afd46c118eda1931fb64cae0f376780fee5ddbc66ab768733e2a5b640f3cc19ea687a3e71ae4116e5dd0f" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 2 - }, - "targets.json": { - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/targets.json deleted file mode 100755 index 44f46760..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/targets.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "ced6f3e967a4366731f268a72a0f78aac0025641345a869baa013bb903502d7812ff22086834ab6b45f5c47cb7832139048663549d4e87d9219a0be7145c2807" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/timestamp.json deleted file mode 100755 index 5d64bbdd..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "65d615183cd58d8a6df898e8f7d6e886a44ca111d6cce95e9a86414b369703b2e9e897bfde405d0c0688b26a11c8f74217d0e0f62b4307d30919ce0f2cb0f700" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "83d637428ffc782a3f762dc6d983548aad231680f2d0d84270e02b538ecd0f68", - "sha512": "3bcc5c70fe8c65d8103dcb60a0773ff436719159854d8d24242fb1f39721e9648b849b2a495487986aba1fdc53382ce604e6ddcd1fde72cbb81f8e8149bfd2f1" - }, - "length": 545, - "version": 3 - } - }, - "spec_version": "1.0.0", - "version": 3 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture2LevelDelegation/server/targets/targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/__init__.py b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/__init__.py deleted file mode 100644 index 36285a68..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -# Delegation tree -# -# Targets -# / \ -# a f -# / \ -# b e -# / \ -# c d -# -# No terminating delegations. -# -# Roles should be evaluated in the order: -# Targets > a > b > c > d > e > f - -from fixtures.builder import FixtureBuilder - - -def build(): - FixtureBuilder('TUFTestFixture3LevelDelegation')\ - .publish(with_client=True)\ - .create_target('targets.txt')\ - .delegate('a', ['*.txt'])\ - .create_target('a.txt', signing_role='a')\ - .delegate('b', ['*.txt'], parent='a') \ - .create_target('b.txt', signing_role='b') \ - .delegate('c', ['*.txt'], parent='b') \ - .create_target('c.txt', signing_role='c') \ - .delegate('d', ['*.txt'], parent='b') \ - .create_target('d.txt', signing_role='d') \ - .delegate('e', ['*.txt'], parent='a') \ - .create_target('e.txt', signing_role='e') \ - .delegate('f', ['*.txt']) \ - .create_target('f.txt', signing_role='f') \ - .publish() diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.root.json deleted file mode 100644 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.snapshot.json deleted file mode 100644 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.targets.json deleted file mode 100644 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.timestamp.json deleted file mode 100644 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/root.json deleted file mode 100644 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/snapshot.json deleted file mode 100644 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/targets.json deleted file mode 100644 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/timestamp.json deleted file mode 100644 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/current/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.root.json deleted file mode 100644 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.snapshot.json deleted file mode 100644 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.targets.json deleted file mode 100644 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.timestamp.json deleted file mode 100644 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/root.json deleted file mode 100644 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/snapshot.json deleted file mode 100644 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/targets.json deleted file mode 100644 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/timestamp.json deleted file mode 100644 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/client/metadata/previous/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.a.json deleted file mode 100644 index 90237d1e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "35eae38d12b845e5e2fb89c957b1e4b16bccfb5717160e0c1a36924b3ae89972d78e0837639e266cf5957ddf9d1f7eb184148ef2d242d7ff99b844342b48020a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586" - ], - "name": "e", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.b.json deleted file mode 100644 index bee9490e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.b.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "a99aa2bd1aa6473f48fc9c3a93289de4efea45071906bc4deecd3a85ffe0e6bc2c1b1751a2b0975e8f28d1b8114ac964f6dc55e5e160f602d56eff51d25c7907" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62" - ], - "name": "d", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.c.json deleted file mode 100644 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.d.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.d.json deleted file mode 100644 index 2c9f1117..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.d.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "04d8264dd6d75fad106d599603801842057de038803935cf9b043fff4d5ee2618675c85291822f18efff770fa89056ed960de35309356a24baef45d9f64c8c0f" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "d.txt": { - "custom": {}, - "hashes": { - "sha256": "b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55", - "sha512": "79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.e.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.e.json deleted file mode 100644 index a473d7dc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.e.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "11ea2f743a5e5ec7f5bea84804c1fdc2e70f42a1f955668b0072fc6bed00e6535574c129270f97e8849e589a57f48a077903244250ab970eac45f7c46c43b003" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "e.txt": { - "custom": {}, - "hashes": { - "sha256": "027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86", - "sha512": "ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.f.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.f.json deleted file mode 100644 index 941ae66f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.f.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "ff5f1d3bfc5d31f71997b1c020c06d7c1683e0f7e747cfdbdf6c718f608181b4c81f3212a93ff8e109b377a73af5883e1568257b050a5b6137058a10463f640e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "f.txt": { - "custom": {}, - "hashes": { - "sha256": "f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e", - "sha512": "b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.root.json deleted file mode 100644 index 08986107..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.snapshot.json deleted file mode 100644 index dcbd2f47..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.snapshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "targets.json": { - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.targets.json deleted file mode 100644 index 820691ec..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.targets.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.timestamp.json deleted file mode 100644 index aae05fba..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/1.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0", - "sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195" - }, - "length": 431, - "version": 1 - } - }, - "spec_version": "1.0.0", - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.root.json deleted file mode 100644 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.snapshot.json deleted file mode 100644 index 11e7e071..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.snapshot.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "a12c5320e165f6a674b5d030c1c2f6a1716ad413ad6bda8942febab0af19f510958998d36c76bb47274fe20d3531f67f99f6f6dde8bc3bc0bca7098d8042510c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "d.json": { - "version": 1 - }, - "e.json": { - "version": 1 - }, - "f.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.targets.json deleted file mode 100644 index bece42a9..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.targets.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "91abfb44e844a293837d1e081953acc4a7d179ff695353ea0472eb71846f8aee9903b352fa595084243218bec93336defc184ed0b4a1bc50e497878ed7f03c0c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be" - ], - "name": "f", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.timestamp.json deleted file mode 100644 index 218e6de7..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/2.timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c48177d304312637216cfa3e424e1f7a214dfbd2121597e2b6ef10b40c000d48720078742503d68d19e50dd39da093e5d25d72ff6a634e7e8880bd9992fc110b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "b5a9218242238080aa294948c18f9d48022b1c3ca68ebdde92fed68bbc0c3c09", - "sha512": "ffb8446b2517a5db4a0ca7b59f4800bcd00f807e918b884af53c7c82b941df242d790e64feaba08ae33edd92902c494f85c9f7c25e8b7071ab0f0b8a1e61206d" - }, - "length": 659, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/a.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/a.json deleted file mode 100644 index 90237d1e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/a.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b", - "sig": "35eae38d12b845e5e2fb89c957b1e4b16bccfb5717160e0c1a36924b3ae89972d78e0837639e266cf5957ddf9d1f7eb184148ef2d242d7ff99b844342b48020a" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e104199cda6e018d7d9044fa6225aa5dc9c2af5ee4e1c0fe6d16ad002220390d" - }, - "scheme": "ed25519" - }, - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "82f52e4503dbb364fabe8e5567f1cf909d4175d45468a021dfe75653db9ac98c" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68" - ], - "name": "b", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586" - ], - "name": "e", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "a.txt": { - "custom": {}, - "hashes": { - "sha256": "3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985", - "sha512": "f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/b.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/b.json deleted file mode 100644 index bee9490e..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/b.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "signatures": [ - { - "keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68", - "sig": "a99aa2bd1aa6473f48fc9c3a93289de4efea45071906bc4deecd3a85ffe0e6bc2c1b1751a2b0975e8f28d1b8114ac964f6dc55e5e160f602d56eff51d25c7907" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "06e4dee0de7826c8d539a6112940b7459892b4ecaf696e67dc064aea0923f95c" - }, - "scheme": "ed25519" - }, - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "fa386632ae9cc358ad0b56565edef362ad10d7fadb05bc8dc8995627372b990e" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b" - ], - "name": "c", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62" - ], - "name": "d", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "b.txt": { - "custom": {}, - "hashes": { - "sha256": "949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e", - "sha512": "f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/c.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/c.json deleted file mode 100644 index 9305d64f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/c.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b", - "sig": "9f0c5ef7e0a11012256c4a47ed757f9e90e930238f6a6e5c758a014f1b768519acb2b7d9aa9bd0456d71ba09b032598086e42d832830391e307c926c16f5b303" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "c.txt": { - "custom": {}, - "hashes": { - "sha256": "946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd", - "sha512": "ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/d.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/d.json deleted file mode 100644 index 2c9f1117..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/d.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e9829d3f2fdff6d6f31002c17cf7f20cf0398e215ca0c0c44d075ccd76a26f62", - "sig": "04d8264dd6d75fad106d599603801842057de038803935cf9b043fff4d5ee2618675c85291822f18efff770fa89056ed960de35309356a24baef45d9f64c8c0f" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "d.txt": { - "custom": {}, - "hashes": { - "sha256": "b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55", - "sha512": "79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/e.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/e.json deleted file mode 100644 index a473d7dc..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/e.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "15024498e03f033ec92758a1dc7107b34eebe759b09827b02a7fb3c64ca3e586", - "sig": "11ea2f743a5e5ec7f5bea84804c1fdc2e70f42a1f955668b0072fc6bed00e6535574c129270f97e8849e589a57f48a077903244250ab970eac45f7c46c43b003" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "e.txt": { - "custom": {}, - "hashes": { - "sha256": "027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86", - "sha512": "ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/f.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/f.json deleted file mode 100644 index 941ae66f..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/f.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "signatures": [ - { - "keyid": "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be", - "sig": "ff5f1d3bfc5d31f71997b1c020c06d7c1683e0f7e747cfdbdf6c718f608181b4c81f3212a93ff8e109b377a73af5883e1568257b050a5b6137058a10463f640e" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": {}, - "roles": [] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "f.txt": { - "custom": {}, - "hashes": { - "sha256": "f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e", - "sha512": "b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207" - }, - "length": 15 - } - }, - "version": 1 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/root.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/root.json deleted file mode 100644 index 2d5222c3..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/root.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "signatures": [ - { - "keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129", - "sig": "e911db300e8eb378a2cabc48979e4c8f72beca30335db0579a7a1d81ae90c8bc63c27d92ce5a17846e3b1adb63a45a411bb4308e018e0d3cc4c9908311b5f208" - } - ], - "signed": { - "_type": "root", - "consistent_snapshot": true, - "expires": "2020-12-31T05:48:20Z", - "keys": { - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35" - }, - "scheme": "ed25519" - }, - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1" - }, - "scheme": "ed25519" - }, - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089" - }, - "scheme": "ed25519" - }, - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46" - }, - "scheme": "ed25519" - } - }, - "roles": { - "root": { - "keyids": [ - "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129" - ], - "threshold": 1 - }, - "snapshot": { - "keyids": [ - "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93" - ], - "threshold": 1 - }, - "targets": { - "keyids": [ - "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4" - ], - "threshold": 1 - }, - "timestamp": { - "keyids": [ - "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae" - ], - "threshold": 1 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/snapshot.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/snapshot.json deleted file mode 100644 index 11e7e071..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/snapshot.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "signatures": [ - { - "keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93", - "sig": "a12c5320e165f6a674b5d030c1c2f6a1716ad413ad6bda8942febab0af19f510958998d36c76bb47274fe20d3531f67f99f6f6dde8bc3bc0bca7098d8042510c" - } - ], - "signed": { - "_type": "snapshot", - "expires": "2020-01-08T00:00:00Z", - "meta": { - "a.json": { - "version": 1 - }, - "b.json": { - "version": 1 - }, - "c.json": { - "version": 1 - }, - "d.json": { - "version": 1 - }, - "e.json": { - "version": 1 - }, - "f.json": { - "version": 1 - }, - "targets.json": { - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/targets.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/targets.json deleted file mode 100644 index bece42a9..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/targets.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "signatures": [ - { - "keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4", - "sig": "91abfb44e844a293837d1e081953acc4a7d179ff695353ea0472eb71846f8aee9903b352fa595084243218bec93336defc184ed0b4a1bc50e497878ed7f03c0c" - } - ], - "signed": { - "_type": "targets", - "delegations": { - "keys": { - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "f758af464295e62a1da4d3267be6d13f4aba9c7d52166d01b6bd5b4559496c9d" - }, - "scheme": "ed25519" - }, - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be": { - "keyid_hash_algorithms": [ - "sha256", - "sha512" - ], - "keytype": "ed25519", - "keyval": { - "public": "683d345a948a9baa343be4e44c076ca115da3838e72c28a06340c8ec1b3ef6be" - }, - "scheme": "ed25519" - } - }, - "roles": [ - { - "keyids": [ - "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b" - ], - "name": "a", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - }, - { - "keyids": [ - "f581c9aeff9989106aeeea35319d1d1f067149619a2ff005249d6f60560557be" - ], - "name": "f", - "paths": [ - "*.txt" - ], - "terminating": false, - "threshold": 1 - } - ] - }, - "expires": "2020-04-01T07:27:10Z", - "spec_version": "1.0.0", - "targets": { - "targets.txt": { - "hashes": { - "sha256": "6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6", - "sha512": "0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a" - }, - "length": 21 - } - }, - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/timestamp.json b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/timestamp.json deleted file mode 100644 index 218e6de7..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/metadata/timestamp.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "signatures": [ - { - "keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae", - "sig": "c48177d304312637216cfa3e424e1f7a214dfbd2121597e2b6ef10b40c000d48720078742503d68d19e50dd39da093e5d25d72ff6a634e7e8880bd9992fc110b" - } - ], - "signed": { - "_type": "timestamp", - "expires": "2020-01-02T00:00:00Z", - "meta": { - "snapshot.json": { - "hashes": { - "sha256": "b5a9218242238080aa294948c18f9d48022b1c3ca68ebdde92fed68bbc0c3c09", - "sha512": "ffb8446b2517a5db4a0ca7b59f4800bcd00f807e918b884af53c7c82b941df242d790e64feaba08ae33edd92902c494f85c9f7c25e8b7071ab0f0b8a1e61206d" - }, - "length": 659, - "version": 2 - } - }, - "spec_version": "1.0.0", - "version": 2 - } -} \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86.e.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86.e.txt deleted file mode 100644 index 7bece393..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/027b3d1814dae8547aed3d7e7b99aa0d59d82cc18411037b0ef0318eb754ce86.e.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: e.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/0951c719b5adf26a55700bd1ac6b657fb513b04e4adb335a935a0da7f12f2ac99834b47442d0b832e5f4ffdd365ef538f14d3a52221c0cf81ef7b68ce312476a.targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/3f90cedf303207851bbdc5f857e018daf93b4c0083306cef17df547b42e4e985.a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/6da6f624811b0d7792c57dc9ed58f1af8cbf4ebfaaaa3ea2011b57b4af63f7e6.targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589.d.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589.d.txt deleted file mode 100644 index 36ce6ad4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/79b44a183eaa0025f3997b856537502ac1759de74263985ad1dd9ab0bb5cc8ce46b6c45c1bf37adb87c2839cca54ae784c3d3488e994d29f003decc81638d589.d.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: d.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/946e2ea9180de673891ae09ce0edfb207966bc32bd6324ebdad2c50c82075ffd.c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/949c6a4318dabe8bbd140cef99ea669ba031919ccf9bce0f5b4d0b61d1c0aa2e.b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55.d.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55.d.txt deleted file mode 100644 index 36ce6ad4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b2ce56612fa7e840d56d263f75804f60baaad5d6e0a7d544e65e1791f2df5e55.d.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: d.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207.f.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207.f.txt deleted file mode 100644 index f7c5df53..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/b8061c4c83d478aaadc6758a74861f749420e83dd6bf07e931738b0619404a75d12758429b12f8d047643d6d13047ec0b65bb253cf5f5b961515658864301207.f.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: f.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/d.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/d.txt deleted file mode 100644 index 36ce6ad4..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/d.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: d.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt deleted file mode 100644 index 924df500..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ddb5fb256a368d778b5fdd03d497ad79944c766245f3cccfc8b098b14c488ec424a68b86a6a2add36db4ef0f0214f15dbe0d63fbc5ca7a9619fb4c39544d78a9.c.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: c.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/e.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/e.txt deleted file mode 100644 index 7bece393..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/e.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: e.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f.txt deleted file mode 100644 index f7c5df53..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: f.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e.f.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e.f.txt deleted file mode 100644 index f7c5df53..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f0b07df15d4a3e98ffc6ee6a4c00d04623b0171de458d94dbec4abb7646bc60e.f.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: f.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt deleted file mode 100644 index 3c405619..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4631ef7ea7b015d7b88e411842fafeb78a72f0181bec72ea9754604ede74ea0e491bf8411659aabc96304fc764d0131ce49ba86066ab5f7b7480dde719e0bfd.a.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: a.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt deleted file mode 100644 index 976e178d..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/f4cc9ce5c73b37e2a6707af7a0ea614ea5fa428bd2509e3af4528a5d330ce98a09c4dd98c859ad9b27b8aba24e1eacbf1af8393fdbfed899cecb995c87a11e3c.b.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: b.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6.e.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6.e.txt deleted file mode 100644 index 7bece393..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/ffca8c347335e5e019deba8a15212297fe25afc734ac06fcd01b4d9dae12b16d750d7a44bdafcada254148990aa6611bc9ed2f2841da2c0dd70bb870be7275f6.e.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: e.txt \ No newline at end of file diff --git a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/targets.txt b/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/targets.txt deleted file mode 100644 index 5f1e6033..00000000 --- a/client/testdata/php-tuf-fixtures/TUFTestFixture3LevelDelegation/server/targets/targets.txt +++ /dev/null @@ -1 +0,0 @@ -Contents: targets.txt \ No newline at end of file diff --git a/client/testdata/tools/gen-keys.go b/client/testdata/tools/gen-keys.go deleted file mode 100644 index f4db562e..00000000 --- a/client/testdata/tools/gen-keys.go +++ /dev/null @@ -1,50 +0,0 @@ -// This helper files generates a bunch of ed25519 keys to be used by the test -// runners. This is done such that the signatures stay stable when the metadata -// is regenerated. - -package main - -import ( - "encoding/json" - "fmt" - "os" - "time" - - "github.com/theupdateframework/go-tuf/data" -) - -var expirationDate = time.Date(2100, time.January, 1, 0, 0, 0, 0, time.UTC) - -func main() { - rolenames := []string{ - "root", - "snapshot", - "targets", - "timestamp", - } - - roles := make(map[string][][]*data.PrivateKey) - - for _, name := range rolenames { - keys := [][]*data.PrivateKey{} - - for i := 0; i < 2; i++ { - signer, err := keys.GenerateEd25519Key() - assertNoError(err) - keys = append(keys, []*data.PrivateKey{signer}) - } - - roles[name] = keys - } - - s, err := json.MarshalIndent(&roles, "", " ") - assertNoError(err) - - os.WriteFile("keys.json", []byte(s), 0644) -} - -func assertNoError(err error) { - if err != nil { - panic(fmt.Sprintf("assertion failed: %s", err)) - } -} diff --git a/client/testdata/tools/linkify-metadata.go b/client/testdata/tools/linkify-metadata.go deleted file mode 100644 index 17886808..00000000 --- a/client/testdata/tools/linkify-metadata.go +++ /dev/null @@ -1,112 +0,0 @@ -// This helper command identifies duplicated metadata across multiple test -// stages, and replaces them with symlinks in order to make changes to them -// easier to read. - -package main - -import ( - "crypto/sha256" - "fmt" - "log" - "os" - "path/filepath" -) - -func main() { - for _, consistentSnapshot := range []bool{false, true} { - err := linkifyDir(fmt.Sprintf("consistent-snapshot-%t", consistentSnapshot)) - if err != nil { - log.Fatal(err) - } - } -} - -func linkifyDir(rootDir string) error { - stepDirs, err := readStepDirs(rootDir) - if err != nil { - return err - } - - oldDir := stepDirs[0] - oldHashes := computeHashes(oldDir) - - for _, dir := range stepDirs[1:] { - log.Printf("checking: %s", dir) - - hashes := computeHashes(dir) - - for path, hash := range hashes { - if oldHashes[path] == hash { - newPath := filepath.Join(dir, path) - oldPath := filepath.Join(oldDir, path) - if err = linkifyPath(oldPath, newPath); err != nil { - return err - } - } - } - - oldDir = dir - oldHashes = hashes - log.Printf("-----") - } - - return nil -} - -func readStepDirs(rootDir string) ([]string, error) { - dirEntries, err := os.ReadDir(rootDir) - if err != nil { - return []string{}, err - } - - // We only want to consider linkifying directories. - var dirs []string - for _, dirEntry := range dirEntries { - if dirEntry.IsDir() { - dirs = append(dirs, filepath.Join(rootDir, dirEntry.Name())) - } - } - - return dirs, nil -} - -func computeHashes(dir string) map[string][32]byte { - hashes := make(map[string][32]byte) - - err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - if info.IsDir() || !info.Mode().IsRegular() { - return nil - } - - bytes, err := os.ReadFile(path) - if err != nil { - return err - } - - hashes[path[len(dir)+1:]] = sha256.Sum256(bytes) - - return nil - }) - if err != nil { - log.Fatalf("failed to linkify: %s", err) - } - - return hashes -} - -func linkifyPath(oldPath string, newPath string) error { - p, err := filepath.Rel(filepath.Dir(newPath), oldPath) - if err != nil { - return err - } - log.Printf("symlinking %s to %s", newPath, p) - - if err = os.Remove(newPath); err != nil { - return err - } - if err = os.Symlink(p, newPath); err != nil { - return err - } - - return nil -} diff --git a/cmd/tuf-client/README.md b/cmd/tuf-client/README.md deleted file mode 100644 index 1fe80385..00000000 --- a/cmd/tuf-client/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# go-tuf client CLI - -## Install - -``` -go get github.com/theupdateframework/go-tuf/cmd/tuf-client -``` - -## Usage - -The CLI provides three commands: - -* `tuf-client init` - initialize a local file store using root keys (e.g. from - the output of `tuf root-keys`) -* `tuf-client list` - list available targets and their file sizes -* `tuf-client get` - get a target file and write to STDOUT - -All commands require the base URL of the TUF repository as the first non-flag -argument, and accept an optional `--store` flag which is the path to the local -storage. - -Run `tuf-client help` from the command line to get more detailed usage -information. - -## Examples - -``` -# init -$ tuf-client init https://example.com/path/to/repo - -# init with a custom store path -$ tuf-client init --store /tmp/tuf.db https://example.com/path/to/repo - -# list available targets -$ tuf-client list https://example.com/path/to/repo -PATH SIZE -/foo.txt 1.6KB -/bar.txt 336B -/baz.txt 1.5KB - -# get a target -$ tuf-client get https://example.com/path/to/repo /foo.txt -the contents of foo.txt - -# the prefixed / is optional -$ tuf-client get https://example.com/path/to/repo foo.txt -the contents of foo.txt -``` diff --git a/cmd/tuf-client/get.go b/cmd/tuf-client/get.go deleted file mode 100644 index 60df6461..00000000 --- a/cmd/tuf-client/get.go +++ /dev/null @@ -1,51 +0,0 @@ -package main - -import ( - "io" - "os" - - "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf/client" - "github.com/theupdateframework/go-tuf/util" -) - -func init() { - register("get", cmdGet, ` -usage: tuf-client get [-s|--store=] - -Options: - -s The path to the local file store [default: tuf.db] - -Get a target from the repository. - `) -} - -type tmpFile struct { - *os.File -} - -func (t *tmpFile) Delete() error { - t.Close() - return os.Remove(t.Name()) -} - -func cmdGet(args *docopt.Args, client *tuf.Client) error { - if _, err := client.Update(); err != nil { - return err - } - target := util.NormalizeTarget(args.String[""]) - file, err := os.CreateTemp("", "go-tuf") - if err != nil { - return err - } - tmp := tmpFile{file} - if err := client.Download(target, &tmp); err != nil { - return err - } - defer tmp.Delete() - if _, err := tmp.Seek(0, io.SeekStart); err != nil { - return err - } - _, err = io.Copy(os.Stdout, file) - return err -} diff --git a/cmd/tuf-client/init.go b/cmd/tuf-client/init.go deleted file mode 100644 index b3a0f6ae..00000000 --- a/cmd/tuf-client/init.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - "io" - "os" - - "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf/client" -) - -func init() { - register("init", cmdInit, ` -usage: tuf-client init [-s|--store=] [] - -Options: - -s The path to the local file store [default: tuf.db] - -Initialize the local file store with root metadata. - `) -} - -func cmdInit(args *docopt.Args, client *tuf.Client) error { - file := args.String[""] - var in io.Reader - if file == "" || file == "-" { - in = os.Stdin - } else { - var err error - in, err = os.Open(file) - if err != nil { - return err - } - } - bytes, err := io.ReadAll(in) - if err != nil { - return err - } - return client.Init(bytes) -} diff --git a/cmd/tuf-client/list.go b/cmd/tuf-client/list.go deleted file mode 100644 index f00209d8..00000000 --- a/cmd/tuf-client/list.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - "fmt" - "os" - "text/tabwriter" - - "github.com/dustin/go-humanize" - "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf/client" -) - -func init() { - register("list", cmdList, ` -usage: tuf-client list [-s|--store=] - -Options: - -s The path to the local file store [default: tuf.db] - -List available target files. - `) -} - -func cmdList(args *docopt.Args, client *tuf.Client) error { - if _, err := client.Update(); err != nil { - return err - } - targets, err := client.Targets() - if err != nil { - return err - } - w := tabwriter.NewWriter(os.Stdout, 1, 2, 2, ' ', 0) - defer w.Flush() - fmt.Fprintln(w, "PATH\tSIZE") - for path, meta := range targets { - fmt.Fprintf(w, "%s\t%s\n", path, humanize.Bytes(uint64(meta.Length))) - } - return nil -} diff --git a/cmd/tuf-client/main.go b/cmd/tuf-client/main.go deleted file mode 100644 index df3632b2..00000000 --- a/cmd/tuf-client/main.go +++ /dev/null @@ -1,98 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - - docopt "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf/client" - tuf_leveldbstore "github.com/theupdateframework/go-tuf/client/leveldbstore" -) - -func main() { - log.SetFlags(0) - - usage := `usage: tuf-client [-h|--help] [...] - -Options: - -h, --help - -Commands: - help Show usage for a specific command - init Initialize with root keys - list List available target files - get Get a target file - -See "tuf-client help " for more information on a specific command. -` - - args, _ := docopt.Parse(usage, nil, true, "", true) - cmd := args.String[""] - cmdArgs := args.All[""].([]string) - - if cmd == "help" { - if len(cmdArgs) == 0 { // `tuf-client help` - fmt.Fprint(os.Stdout, usage) - return - } else { // `tuf-client help ` - cmd = cmdArgs[0] - cmdArgs = []string{"--help"} - } - } - - if err := runCommand(cmd, cmdArgs); err != nil { - log.Fatalln("ERROR:", err) - } -} - -type cmdFunc func(*docopt.Args, *tuf.Client) error - -type command struct { - usage string - f cmdFunc -} - -var commands = make(map[string]*command) - -func register(name string, f cmdFunc, usage string) { - commands[name] = &command{usage: usage, f: f} -} - -func runCommand(name string, args []string) error { - argv := make([]string, 1, 1+len(args)) - argv[0] = name - argv = append(argv, args...) - - cmd, ok := commands[name] - if !ok { - return fmt.Errorf("%s is not a tuf-client command. See 'tuf-client help'", name) - } - - parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", true) - if err != nil { - return err - } - - client, err := tufClient(parsedArgs) - if err != nil { - return err - } - return cmd.f(parsedArgs, client) -} - -func tufClient(args *docopt.Args) (*tuf.Client, error) { - store, ok := args.String["--store"] - if !ok { - store = args.String["-s"] - } - local, err := tuf_leveldbstore.FileLocalStore(store) - if err != nil { - return nil, err - } - remote, err := tuf.HTTPRemoteStore(args.String[""], nil, nil) - if err != nil { - return nil, err - } - return tuf.NewClient(local, remote), nil -} diff --git a/cmd/tuf/add.go b/cmd/tuf/add.go deleted file mode 100644 index 39dd0a11..00000000 --- a/cmd/tuf/add.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - "encoding/json" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("add", cmdAdd, ` -usage: tuf add [--expires=] [--custom=] [...] - -Add target file(s). - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE - -Options: - --expires= Set the targets metadata file to expire days from now. - --custom= Set custom JSON data for the target(s). -`) -} - -func cmdAdd(args *docopt.Args, repo *tuf.Repo) error { - var custom json.RawMessage - if c := args.String["--custom"]; c != "" { - custom = json.RawMessage(c) - } - paths := args.All[""].([]string) - if arg := args.String["--expires"]; arg != "" { - expires, err := parseExpires(arg) - if err != nil { - return err - } - return repo.AddTargetsWithExpires(paths, custom, expires) - } - return repo.AddTargets(paths, custom) -} diff --git a/cmd/tuf/add_key.go b/cmd/tuf/add_key.go deleted file mode 100644 index e88e25d8..00000000 --- a/cmd/tuf/add_key.go +++ /dev/null @@ -1,77 +0,0 @@ -package main - -import ( - "fmt" - "os" - "time" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - register("add-key", cmdAddKey, ` -usage: tuf add-key [--scheme=] [--expires=] [--public-key=] - -Adds a new signing key for the given role. - -The root metadata file will be staged -with the addition of the key's ID to the role's list of key IDs. - -Options: - --public-key= The Path to the file containing value of the public key. If absent, will be read from stdin. - --expires= Set the metadata file to expire days from now. - --scheme= Set the key scheme to use [default: ed25519]. -`) -} - -func cmdAddKey(args *docopt.Args, repo *tuf.Repo) error { - role := args.String[""] - var keyids []string - - var keyScheme data.KeyScheme - switch t := args.String["--scheme"]; t { - case string(data.KeySchemeEd25519), - string(data.KeySchemeECDSA_SHA2_P256), - string(data.KeySchemeRSASSA_PSS_SHA256): - keyScheme = data.KeyScheme(t) - default: - fmt.Fprintf(os.Stderr, "tuf: key schema %s not recognised\n", t) - return nil - } - f := args.String["--public-key"] - var publicValue string - if f != "" { - bytes, err := os.ReadFile(f) - if err != nil { - return err - } - publicValue = string(bytes) - } else { - var input string - _, err := fmt.Scan(&input) - if err != nil { - return err - } - publicValue = input - } - var err error - var expires time.Time - if arg := args.String["--expires"]; arg != "" { - expires, err = parseExpires(arg) - if err != nil { - return err - } - } else { - expires = data.DefaultExpires(role) - } - keyids, err = repo.AddKeyWithSchemeAndExpires(role, expires, keyScheme, publicValue) - if err != nil { - return err - } - for _, id := range keyids { - fmt.Fprintf(os.Stdout, "Add key with ID %s\n", id) - } - return nil -} diff --git a/cmd/tuf/add_signatures.go b/cmd/tuf/add_signatures.go deleted file mode 100644 index adb24e5d..00000000 --- a/cmd/tuf/add_signatures.go +++ /dev/null @@ -1,75 +0,0 @@ -package main - -import ( - "encoding/base64" - "encoding/json" - "fmt" - "os" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - register("add-signatures", cmdAddSignature, ` -usage: tuf add-signatures [--signatures ] [--format=] [--key-id=] - -Adds signatures (the output of "sign-payload") to the given role metadata file. - -If the signature does not verify, it will not be added. - -Options: - --signatures= The path to the file containing the signatures to add. If not present, the contents are read from stdin - --format= One of 'json', 'hex', or 'base64'. Defaults to 'json' - --key-id= The key-id of the signature being added. Only required if the format is not 'json' -`) -} - -func cmdAddSignature(args *docopt.Args, repo *tuf.Repo) error { - roleFilename := args.String[""] - - f := args.String["--signatures"] - var sigBytes []byte - var err error - if f != "" { - sigBytes, err = os.ReadFile(f) - if err != nil { - return err - } - } else { - var input string - _, err := fmt.Scan(&input) - if err != nil { - return err - } - sigBytes = []byte(input) - } - sigs := []data.Signature{} - switch args.String["--format"] { - case "base64": - base64bytes, err := base64.StdEncoding.DecodeString(string(sigBytes)) - if err != nil { - return err - } - sigs = append(sigs, data.Signature{KeyID: args.String["--key-id"], Signature: base64bytes}) - case "hex": - hex := data.HexBytes{} - if err = hex.FromString(sigBytes); err != nil { - return err - } - sigs = append(sigs, data.Signature{KeyID: args.String["--key-id"], Signature: hex}) - case "json": - default: - if err = json.Unmarshal(sigBytes, &sigs); err != nil { - return err - } - } - for _, sig := range sigs { - if err = repo.AddOrUpdateSignature(roleFilename, sig); err != nil { - return err - } - } - fmt.Fprintln(os.Stderr, "tuf: added", len(sigs), "new signature(s)") - return nil -} diff --git a/cmd/tuf/change_passphrase.go b/cmd/tuf/change_passphrase.go deleted file mode 100644 index be685ad3..00000000 --- a/cmd/tuf/change_passphrase.go +++ /dev/null @@ -1,22 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("change-passphrase", cmdChangePassphrase, ` -usage: tuf change-passphrase - -Changes the passphrase for given role keys file. - -Alternatively, passphrases can be passed via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE for existing ones and -TUF_NEW_{{ROLE}}_PASSPHRASE for setting new ones. -`) -} - -func cmdChangePassphrase(args *docopt.Args, repo *tuf.Repo) error { - return repo.ChangePassphrase(args.String[""]) -} diff --git a/cmd/tuf/clean.go b/cmd/tuf/clean.go deleted file mode 100644 index 303662bd..00000000 --- a/cmd/tuf/clean.go +++ /dev/null @@ -1,26 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("clean", cmdClean, ` -usage: tuf clean - -Remove all staged metadata files. -`) -} - -func cmdClean(args *docopt.Args, repo *tuf.Repo) error { - err := repo.Clean() - if err == tuf.ErrNewRepository { - fmt.Fprintln(os.Stderr, "tuf: refusing to clean new repository") - return nil - } - return err -} diff --git a/cmd/tuf/commit.go b/cmd/tuf/commit.go deleted file mode 100644 index 0bff3b28..00000000 --- a/cmd/tuf/commit.go +++ /dev/null @@ -1,18 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("commit", cmdCommit, ` -usage: tuf commit - -Commit staged files to the repository. -`) -} - -func cmdCommit(args *docopt.Args, repo *tuf.Repo) error { - return repo.Commit() -} diff --git a/cmd/tuf/gen_key.go b/cmd/tuf/gen_key.go deleted file mode 100644 index 2ad77a58..00000000 --- a/cmd/tuf/gen_key.go +++ /dev/null @@ -1,64 +0,0 @@ -package main - -import ( - "fmt" - "os" - "time" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - register("gen-key", cmdGenKey, ` -usage: tuf gen-key [--expires=] [--scheme=] - -Generate a new signing key for the given role. - -The key will be serialized to JSON and written to the "keys" directory with -filename pattern "ROLE-KEYID.json". The root metadata file will also be staged -with the addition of the key's ID to the role's list of key IDs. - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE - -Options: - --expires= Set the root metadata file to expire days from now. - --scheme= Set the key scheme to use [default: ed25519]. -`) -} - -func cmdGenKey(args *docopt.Args, repo *tuf.Repo) error { - role := args.String[""] - var keyids []string - - keyScheme := data.KeySchemeEd25519 - switch t := args.String["--scheme"]; t { - case string(data.KeySchemeEd25519), - string(data.KeySchemeECDSA_SHA2_P256), - string(data.KeySchemeRSASSA_PSS_SHA256): - keyScheme = data.KeyScheme(t) - default: - fmt.Fprint(os.Stderr, "Using default key scheme", keyScheme) - } - - var err error - var expires time.Time - if arg := args.String["--expires"]; arg != "" { - expires, err = parseExpires(arg) - if err != nil { - return err - } - } else { - expires = data.DefaultExpires(role) - } - keyids, err = repo.GenKeyWithSchemeAndExpires(role, expires, keyScheme) - if err != nil { - return err - } - for _, id := range keyids { - fmt.Fprintf(os.Stdout, "Generated %s %s key with ID %s", role, keyScheme, id) - } - return nil -} diff --git a/cmd/tuf/get_threshold.go b/cmd/tuf/get_threshold.go deleted file mode 100644 index a0d78fdd..00000000 --- a/cmd/tuf/get_threshold.go +++ /dev/null @@ -1,29 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("get-threshold", cmdGetThreshold, ` -usage: tuf get-threshold - -Gets the threshold for a role. -`) -} - -func cmdGetThreshold(args *docopt.Args, repo *tuf.Repo) error { - role := args.String[""] - - threshold, err := repo.GetThreshold(role) - if err != nil { - return err - } - - fmt.Fprintf(os.Stdout, "The threshold for %s role is %d", role, threshold) - return nil -} diff --git a/cmd/tuf/init.go b/cmd/tuf/init.go deleted file mode 100644 index 7c785494..00000000 --- a/cmd/tuf/init.go +++ /dev/null @@ -1,23 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("init", cmdInit, ` -usage: tuf init [--consistent-snapshot=false] - -Initialize a new repository. - -This is only required if the repository should not generate consistent -snapshots (i.e. by passing "--consistent-snapshot=false"). If consistent -snapshots should be generated, the repository will be implicitly -initialized to do so when generating keys. - `) -} - -func cmdInit(args *docopt.Args, repo *tuf.Repo) error { - return repo.Init(args.String["--consistent-snapshot"] != "false") -} diff --git a/cmd/tuf/main.go b/cmd/tuf/main.go deleted file mode 100644 index 1c9439ea..00000000 --- a/cmd/tuf/main.go +++ /dev/null @@ -1,176 +0,0 @@ -package main - -import ( - "bytes" - "errors" - "fmt" - "log" - "os" - "strconv" - "strings" - "syscall" - "time" - - docopt "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/util" - "golang.org/x/term" -) - -func main() { - log.SetFlags(0) - - usage := `usage: tuf [-h|--help] [-d|--dir=] [--insecure-plaintext] [...] - -Options: - -h, --help - -d The path to the repository (defaults to the current working directory) - --insecure-plaintext Don't encrypt signing keys - -Commands: - help Show usage for a specific command - init Initialize a new repository - add-key Adds a new signing key for a specific role - gen-key Generate a new signing key for a specific metadata file - revoke-key Revoke a signing key - add Add target file(s) - remove Remove a target file - snapshot Update the snapshot metadata file - timestamp Update the timestamp metadata file - payload Output a role's metadata file for signing - add-signatures Adds signatures generated offline - sign Sign a role's metadata file - sign-payload Sign a file from the "payload" command. - status Check if a role's metadata has expired - commit Commit staged files to the repository - regenerate Recreate the targets metadata file [Not supported yet] - set-threshold Sets the threshold for a role - get-threshold Outputs the threshold for a role - change-passphrase Changes the passphrase for given role keys file - root-keys Output a JSON serialized array of root keys to STDOUT - clean Remove all staged metadata files - -See "tuf help " for more information on a specific command -` - - args, _ := docopt.Parse(usage, nil, true, "", true) - cmd := args.String[""] - cmdArgs := args.All[""].([]string) - - if cmd == "help" { - if len(cmdArgs) == 0 { // `tuf help` - fmt.Fprint(os.Stdout, usage) - return - } else { // `tuf help ` - cmd = cmdArgs[0] - cmdArgs = []string{"--help"} - } - } - - dir, ok := args.String["-d"] - if !ok { - dir = args.String["--dir"] - } - if dir == "" { - var err error - dir, err = os.Getwd() - if err != nil { - log.Fatal(err) - } - } - - if err := runCommand(cmd, cmdArgs, dir, args.Bool["--insecure-plaintext"]); err != nil { - log.Fatalln("ERROR:", err) - } -} - -type cmdFunc func(*docopt.Args, *tuf.Repo) error - -type command struct { - usage string - f cmdFunc -} - -var commands = make(map[string]*command) - -func register(name string, f cmdFunc, usage string) { - commands[name] = &command{usage: usage, f: f} -} - -func runCommand(name string, args []string, dir string, insecure bool) error { - argv := make([]string, 1, 1+len(args)) - argv[0] = name - argv = append(argv, args...) - - cmd, ok := commands[name] - if !ok { - return fmt.Errorf("%s is not a tuf command. See 'tuf help'", name) - } - - parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", true) - if err != nil { - return err - } - - var p util.PassphraseFunc - if !insecure { - p = getPassphrase - } - logger := log.New(os.Stdout, "", 0) - storeOpts := tuf.StoreOpts{Logger: logger, PassFunc: p} - - repo, err := tuf.NewRepoWithOpts(tuf.FileSystemStoreWithOpts(dir, storeOpts), - tuf.WithLogger(logger)) - if err != nil { - return err - } - return cmd.f(parsedArgs, repo) -} - -func parseExpires(arg string) (time.Time, error) { - days, err := strconv.Atoi(arg) - if err != nil { - return time.Time{}, fmt.Errorf("failed to parse --expires arg: %s", err) - } - return time.Now().AddDate(0, 0, days).UTC(), nil -} - -func getPassphrase(role string, confirm bool, change bool) ([]byte, error) { - // In case of change we need to prompt explicitly for a new passphrase - // and not read it from the environment variable, if present - if pass := os.Getenv(fmt.Sprintf("TUF_%s_PASSPHRASE", strings.ToUpper(role))); pass != "" && !change { - return []byte(pass), nil - } - // Alter role string if we are prompting for a passphrase change - if change { - // Check if environment variable for new passphrase exist - if new_pass := os.Getenv(fmt.Sprintf("TUF_NEW_%s_PASSPHRASE", strings.ToUpper(role))); new_pass != "" { - // If so, just read the new passphrase from it and return - return []byte(new_pass), nil - } - // No environment variable set, so proceed prompting for new passphrase - role = fmt.Sprintf("new %s", role) - } - fmt.Fprintf(os.Stderr, "Enter %s keys passphrase: ", role) - passphrase, err := term.ReadPassword(int(syscall.Stdin)) - fmt.Fprintln(os.Stderr) - if err != nil { - return nil, err - } - - if !confirm { - return passphrase, nil - } - - fmt.Fprintf(os.Stderr, "Repeat %s keys passphrase: ", role) - confirmation, err := term.ReadPassword(int(syscall.Stdin)) - fmt.Fprintln(os.Stderr) - if err != nil { - return nil, err - } - - if !bytes.Equal(passphrase, confirmation) { - return nil, errors.New("the entered passphrases do not match") - } - return passphrase, nil -} diff --git a/cmd/tuf/payload.go b/cmd/tuf/payload.go deleted file mode 100644 index 3ae2c891..00000000 --- a/cmd/tuf/payload.go +++ /dev/null @@ -1,26 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("payload", cmdPayload, ` -usage: tuf payload - -Outputs the metadata file for a role in a ready-to-sign (canonicalized) format. -`) -} - -func cmdPayload(args *docopt.Args, repo *tuf.Repo) error { - p, err := repo.Payload(args.String[""]) - if err != nil { - return err - } - fmt.Fprint(os.Stdout, string(p)) - return nil -} diff --git a/cmd/tuf/regenerate.go b/cmd/tuf/regenerate.go deleted file mode 100644 index bfcbbadc..00000000 --- a/cmd/tuf/regenerate.go +++ /dev/null @@ -1,25 +0,0 @@ -package main - -import ( - "log" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("regenerate", cmdRegenerate, ` -usage: tuf regenerate [--consistent-snapshot=false] - -Recreate the targets metadata file. Important: Not supported yet - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE -`) -} - -func cmdRegenerate(args *docopt.Args, repo *tuf.Repo) error { - // TODO: implement this - log.Println("Not supported yet") - return nil -} diff --git a/cmd/tuf/remove.go b/cmd/tuf/remove.go deleted file mode 100644 index e1e0b771..00000000 --- a/cmd/tuf/remove.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "errors" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("remove", cmdRemove, ` -usage: tuf remove [--expires=] [--all] [...] - -Remove target file(s). - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE - -Options: - --all Remove all target files. - --expires= Set the targets metadata file to expire days from now. -`) -} - -func cmdRemove(args *docopt.Args, repo *tuf.Repo) error { - paths := args.All[""].([]string) - if len(paths) == 0 && !args.Bool["--all"] { - return errors.New("either specify some paths or set the --all flag to remove all targets") - } - if arg := args.String["--expires"]; arg != "" { - expires, err := parseExpires(arg) - if err != nil { - return err - } - return repo.RemoveTargetsWithExpires(paths, expires) - } - return repo.RemoveTargets(paths) -} diff --git a/cmd/tuf/revoke_key.go b/cmd/tuf/revoke_key.go deleted file mode 100644 index 8aff2e09..00000000 --- a/cmd/tuf/revoke_key.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("revoke-key", cmdRevokeKey, ` -usage: tuf revoke-key [--expires=] - -Revoke a signing key - -The key will be removed from the root metadata file, but the key will remain in the -"keys" directory if present. - -Options: - --expires= Set the root metadata file to expire days from now. -`) -} - -func cmdRevokeKey(args *docopt.Args, repo *tuf.Repo) error { - if arg := args.String["--expires"]; arg != "" { - expires, err := parseExpires(arg) - if err != nil { - return err - } - return repo.RevokeKeyWithExpires(args.String[""], args.String[""], expires) - } - return repo.RevokeKey(args.String[""], args.String[""]) -} diff --git a/cmd/tuf/root_keys.go b/cmd/tuf/root_keys.go deleted file mode 100644 index e3397648..00000000 --- a/cmd/tuf/root_keys.go +++ /dev/null @@ -1,33 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("root-keys", cmdRootKeys, ` -usage: tuf root-keys - -Outputs a JSON serialized array of root keys to STDOUT. - -The resulting JSON should be distributed to clients for performing initial updates. -`) -} - -func cmdRootKeys(args *docopt.Args, repo *tuf.Repo) error { - keys, err := repo.RootKeys() - if err != nil { - return err - } - data, err := json.Marshal(keys) - if err == nil { - fmt.Fprintf(os.Stderr, "The resulting JSON should be distributed to clients for performing initial updates:\n\n") - fmt.Fprintln(os.Stdout, string(data)) - } - return err -} diff --git a/cmd/tuf/set_threshold.go b/cmd/tuf/set_threshold.go deleted file mode 100644 index 29149ff9..00000000 --- a/cmd/tuf/set_threshold.go +++ /dev/null @@ -1,34 +0,0 @@ -package main - -import ( - "fmt" - "os" - "strconv" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("set-threshold", cmdSetThreshold, ` -usage: tuf set-threshold - -Set the threshold for a role. -`) -} - -func cmdSetThreshold(args *docopt.Args, repo *tuf.Repo) error { - role := args.String[""] - thresholdStr := args.String[""] - threshold, err := strconv.Atoi(thresholdStr) - if err != nil { - return err - } - - if err := repo.SetThreshold(role, threshold); err != nil { - return err - } - - fmt.Fprintf(os.Stdout, "The threshold for %s role is now %d", role, threshold) - return nil -} diff --git a/cmd/tuf/sign.go b/cmd/tuf/sign.go deleted file mode 100644 index ee8917bb..00000000 --- a/cmd/tuf/sign.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("sign", cmdSign, ` -usage: tuf sign - -Sign a role's metadata file. - -Signs the given role's staged metadata file with all keys present in the 'keys' -directory for that role. -`) -} - -func cmdSign(args *docopt.Args, repo *tuf.Repo) error { - return repo.Sign(args.String[""]) -} diff --git a/cmd/tuf/sign_payload.go b/cmd/tuf/sign_payload.go deleted file mode 100644 index 1905fd2e..00000000 --- a/cmd/tuf/sign_payload.go +++ /dev/null @@ -1,41 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - - "github.com/flynn/go-docopt" - tuf "github.com/theupdateframework/go-tuf" -) - -func init() { - register("sign-payload", cmdSignPayload, ` -usage: tuf sign-payload --role= - -Sign a file (outside of the TUF repo) using keys for the given role (from the TUF repo). - -Typically, path will be the output of "tuf payload". -`) -} - -func cmdSignPayload(args *docopt.Args, repo *tuf.Repo) error { - payload, err := os.ReadFile(args.String[""]) - if err != nil { - return err - } - - signatures, err := repo.SignRaw(args.String["--role"], payload) - if err != nil { - return err - } - fmt.Fprintln(os.Stderr, "tuf: signed") - - bytes, err := json.Marshal(signatures) - if err != nil { - return err - } - fmt.Fprint(os.Stdout, string(bytes)) - - return nil -} diff --git a/cmd/tuf/snapshot.go b/cmd/tuf/snapshot.go deleted file mode 100644 index dfffb696..00000000 --- a/cmd/tuf/snapshot.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("snapshot", cmdSnapshot, ` -usage: tuf snapshot [--expires=] - -Update the snapshot metadata file. - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE - -Options: - --expires= Set the snapshot metadata file to expire days from now. -`) -} - -func cmdSnapshot(args *docopt.Args, repo *tuf.Repo) error { - if arg := args.String["--expires"]; arg != "" { - expires, err := parseExpires(arg) - if err != nil { - return err - } - return repo.SnapshotWithExpires(expires) - } - return repo.Snapshot() -} diff --git a/cmd/tuf/status.go b/cmd/tuf/status.go deleted file mode 100644 index 97568e78..00000000 --- a/cmd/tuf/status.go +++ /dev/null @@ -1,47 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("status", cmdStatus, ` -usage: tuf status --valid-at= - -Check if the role's metadata will be expired on the given date. - -The command's exit status will be 1 if the role has expired, 0 otherwise. - -Example: - # See if timestamp metadata is expiring in the next hour: - tuf status --valid-at "$(date -d '+1 hour')" timestamp || echo "Time to refresh" - -Options: - --valid-at= Must be in one of the formats: - * RFC3339 - 2006-01-02T15:04:05Z07:00 - * RFC822 - 02 Jan 06 15:04 MST - * UnixDate - Mon Jan _2 15:04:05 MST 2006 -`) -} - -func cmdStatus(args *docopt.Args, repo *tuf.Repo) error { - role := args.String[""] - validAtStr := args.String["--valid-at"] - - formats := []string{ - time.RFC3339, - time.RFC822, - time.UnixDate, - } - for _, fmt := range formats { - validAt, err := time.Parse(fmt, validAtStr) - if err == nil { - return repo.CheckRoleUnexpired(role, validAt) - } - } - return fmt.Errorf("failed to parse --valid-at arg") -} diff --git a/cmd/tuf/timestamp.go b/cmd/tuf/timestamp.go deleted file mode 100644 index 646f174e..00000000 --- a/cmd/tuf/timestamp.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "github.com/flynn/go-docopt" - "github.com/theupdateframework/go-tuf" -) - -func init() { - register("timestamp", cmdTimestamp, ` -usage: tuf timestamp [--expires=] - -Update the timestamp metadata file. - -Alternatively, passphrases can be set via environment variables in the -form of TUF_{{ROLE}}_PASSPHRASE - -Options: - --expires= Set the timestamp metadata file to expire days from now. -`) -} - -func cmdTimestamp(args *docopt.Args, repo *tuf.Repo) error { - if arg := args.String["--expires"]; arg != "" { - expires, err := parseExpires(arg) - if err != nil { - return err - } - return repo.TimestampWithExpires(expires) - } - return repo.Timestamp() -} diff --git a/data/hex_bytes.go b/data/hex_bytes.go deleted file mode 100644 index 36e5a5a3..00000000 --- a/data/hex_bytes.go +++ /dev/null @@ -1,51 +0,0 @@ -package data - -import ( - "crypto/sha256" - "encoding/hex" - "errors" -) - -type HexBytes []byte - -func (b *HexBytes) UnmarshalJSON(data []byte) error { - if len(data) < 2 || len(data)%2 != 0 || data[0] != '"' || data[len(data)-1] != '"' { - return errors.New("tuf: invalid JSON hex bytes") - } - res := make([]byte, hex.DecodedLen(len(data)-2)) - _, err := hex.Decode(res, data[1:len(data)-1]) - if err != nil { - return err - } - *b = res - return nil -} -func (b *HexBytes) FromString(data []byte) error { - res := make([]byte, hex.DecodedLen(len(data))) - _, err := hex.Decode(res, data) - if err != nil { - return err - } - *b = res - return nil -} - -func (b HexBytes) MarshalJSON() ([]byte, error) { - res := make([]byte, hex.EncodedLen(len(b))+2) - res[0] = '"' - res[len(res)-1] = '"' - hex.Encode(res[1:], b) - return res, nil -} - -func (b HexBytes) String() string { - return hex.EncodeToString(b) -} - -// 4.5. File formats: targets.json and delegated target roles: -// ...each target path, when hashed with the SHA-256 hash function to produce -// a 64-byte hexadecimal digest (HEX_DIGEST)... -func PathHexDigest(s string) string { - b := sha256.Sum256([]byte(s)) - return hex.EncodeToString(b[:]) -} diff --git a/data/hex_bytes_test.go b/data/hex_bytes_test.go deleted file mode 100644 index 8c11623e..00000000 --- a/data/hex_bytes_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package data - -import ( - "encoding/json" - "testing" - - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type HexBytesSuite struct{} - -var _ = Suite(&HexBytesSuite{}) - -func (HexBytesSuite) TestUnmarshalJSON(c *C) { - var data HexBytes - err := json.Unmarshal([]byte(`"666f6f"`), &data) - c.Assert(err, IsNil) - c.Assert(string(data), Equals, "foo") -} - -func (HexBytesSuite) TestUnmarshalJSONError(c *C) { - var data HexBytes - - // uneven length - err := json.Unmarshal([]byte(`"a"`), &data) - c.Assert(err, Not(IsNil)) - - // invalid hex - err = json.Unmarshal([]byte(`"zz"`), &data) - c.Assert(err, Not(IsNil)) - - // wrong type - err = json.Unmarshal([]byte("6"), &data) - c.Assert(err, Not(IsNil)) -} - -func (HexBytesSuite) TestMarshalJSON(c *C) { - data, err := json.Marshal(HexBytes("foo")) - c.Assert(err, IsNil) - c.Assert(data, DeepEquals, []byte(`"666f6f"`)) -} diff --git a/data/types.go b/data/types.go deleted file mode 100644 index eb00489b..00000000 --- a/data/types.go +++ /dev/null @@ -1,348 +0,0 @@ -package data - -import ( - "bytes" - "crypto/sha256" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - "path" - "strings" - "sync" - "time" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" -) - -type KeyType string - -type KeyScheme string - -type HashAlgorithm string - -const ( - KeyIDLength = sha256.Size * 2 - - KeyTypeEd25519 KeyType = "ed25519" - // From version 1.0.32, the reference implementation defines 'ecdsa', - // not 'ecdsa-sha2-nistp256' for NIST P-256 curves. - KeyTypeECDSA_SHA2_P256 KeyType = "ecdsa" - KeyTypeECDSA_SHA2_P256_OLD_FMT KeyType = "ecdsa-sha2-nistp256" - KeyTypeRSASSA_PSS_SHA256 KeyType = "rsa" - - KeySchemeEd25519 KeyScheme = "ed25519" - KeySchemeECDSA_SHA2_P256 KeyScheme = "ecdsa-sha2-nistp256" - KeySchemeRSASSA_PSS_SHA256 KeyScheme = "rsassa-pss-sha256" - - HashAlgorithmSHA256 HashAlgorithm = "sha256" - HashAlgorithmSHA512 HashAlgorithm = "sha512" -) - -var ( - HashAlgorithms = []HashAlgorithm{HashAlgorithmSHA256, HashAlgorithmSHA512} - ErrPathsAndPathHashesSet = errors.New("tuf: failed validation of delegated target: paths and path_hash_prefixes are both set") -) - -type Signed struct { - Signed json.RawMessage `json:"signed"` - Signatures []Signature `json:"signatures"` -} - -type Signature struct { - KeyID string `json:"keyid"` - Signature HexBytes `json:"sig"` -} - -type PublicKey struct { - Type KeyType `json:"keytype"` - Scheme KeyScheme `json:"scheme"` - Algorithms []HashAlgorithm `json:"keyid_hash_algorithms,omitempty"` - Value json.RawMessage `json:"keyval"` - - ids []string - idOnce sync.Once -} - -type PrivateKey struct { - Type KeyType `json:"keytype"` - Scheme KeyScheme `json:"scheme,omitempty"` - Algorithms []HashAlgorithm `json:"keyid_hash_algorithms,omitempty"` - Value json.RawMessage `json:"keyval"` -} - -func (k *PublicKey) IDs() []string { - k.idOnce.Do(func() { - data, err := cjson.EncodeCanonical(k) - if err != nil { - panic(fmt.Errorf("tuf: error creating key ID: %w", err)) - } - digest := sha256.Sum256(data) - k.ids = []string{hex.EncodeToString(digest[:])} - }) - return k.ids -} - -func (k *PublicKey) ContainsID(id string) bool { - for _, keyid := range k.IDs() { - if id == keyid { - return true - } - } - return false -} - -func DefaultExpires(role string) time.Time { - var t time.Time - switch role { - case "root": - t = time.Now().AddDate(1, 0, 0) - case "snapshot": - t = time.Now().AddDate(0, 0, 7) - case "timestamp": - t = time.Now().AddDate(0, 0, 1) - default: - // targets and delegated targets - t = time.Now().AddDate(0, 3, 0) - } - return t.UTC().Round(time.Second) -} - -type Root struct { - Type string `json:"_type"` - SpecVersion string `json:"spec_version"` - Version int64 `json:"version"` - Expires time.Time `json:"expires"` - Keys map[string]*PublicKey `json:"keys"` - Roles map[string]*Role `json:"roles"` - Custom *json.RawMessage `json:"custom,omitempty"` - - ConsistentSnapshot bool `json:"consistent_snapshot"` -} - -func NewRoot() *Root { - return &Root{ - Type: "root", - SpecVersion: "1.0", - Expires: DefaultExpires("root"), - Keys: make(map[string]*PublicKey), - Roles: make(map[string]*Role), - ConsistentSnapshot: true, - } -} - -func (r *Root) AddKey(key *PublicKey) bool { - changed := false - for _, id := range key.IDs() { - if _, ok := r.Keys[id]; !ok { - changed = true - r.Keys[id] = key - } - } - return changed -} - -type Role struct { - KeyIDs []string `json:"keyids"` - Threshold int `json:"threshold"` -} - -func (r *Role) AddKeyIDs(ids []string) bool { - roleIDs := make(map[string]struct{}) - for _, id := range r.KeyIDs { - roleIDs[id] = struct{}{} - } - changed := false - for _, id := range ids { - if _, ok := roleIDs[id]; !ok { - changed = true - r.KeyIDs = append(r.KeyIDs, id) - } - } - return changed -} - -type Files map[string]TargetFileMeta - -type Hashes map[string]HexBytes - -func (f Hashes) HashAlgorithms() []string { - funcs := make([]string, 0, len(f)) - for name := range f { - funcs = append(funcs, name) - } - return funcs -} - -type metapathFileMeta struct { - Length int64 `json:"length,omitempty"` - Hashes Hashes `json:"hashes,omitempty"` - Version int64 `json:"version"` - Custom *json.RawMessage `json:"custom,omitempty"` -} - -// SnapshotFileMeta is the meta field of a snapshot -// Note: Contains a `custom` field -type SnapshotFileMeta metapathFileMeta - -type SnapshotFiles map[string]SnapshotFileMeta - -type Snapshot struct { - Type string `json:"_type"` - SpecVersion string `json:"spec_version"` - Version int64 `json:"version"` - Expires time.Time `json:"expires"` - Meta SnapshotFiles `json:"meta"` - Custom *json.RawMessage `json:"custom,omitempty"` -} - -func NewSnapshot() *Snapshot { - return &Snapshot{ - Type: "snapshot", - SpecVersion: "1.0", - Expires: DefaultExpires("snapshot"), - Meta: make(SnapshotFiles), - } -} - -type FileMeta struct { - Length int64 `json:"length"` - Hashes Hashes `json:"hashes"` -} - -type TargetFiles map[string]TargetFileMeta - -type TargetFileMeta struct { - FileMeta - Custom *json.RawMessage `json:"custom,omitempty"` -} - -func (f TargetFileMeta) HashAlgorithms() []string { - return f.FileMeta.Hashes.HashAlgorithms() -} - -type Targets struct { - Type string `json:"_type"` - SpecVersion string `json:"spec_version"` - Version int64 `json:"version"` - Expires time.Time `json:"expires"` - Targets TargetFiles `json:"targets"` - Delegations *Delegations `json:"delegations,omitempty"` - Custom *json.RawMessage `json:"custom,omitempty"` -} - -// Delegations represents the edges from a parent Targets role to one or more -// delegated target roles. See spec v1.0.19 section 4.5. -type Delegations struct { - Keys map[string]*PublicKey `json:"keys"` - Roles []DelegatedRole `json:"roles"` -} - -// DelegatedRole describes a delegated role, including what paths it is -// reponsible for. See spec v1.0.19 section 4.5. -type DelegatedRole struct { - Name string `json:"name"` - KeyIDs []string `json:"keyids"` - Threshold int `json:"threshold"` - Terminating bool `json:"terminating"` - PathHashPrefixes []string `json:"path_hash_prefixes,omitempty"` - Paths []string `json:"paths"` -} - -// MatchesPath evaluates whether the path patterns or path hash prefixes match -// a given file. This determines whether a delegated role is responsible for -// signing and verifying the file. -func (d *DelegatedRole) MatchesPath(file string) (bool, error) { - if err := d.validatePaths(); err != nil { - return false, err - } - - for _, pattern := range d.Paths { - if matched, _ := path.Match(pattern, file); matched { - return true, nil - } - } - - pathHash := PathHexDigest(file) - for _, hashPrefix := range d.PathHashPrefixes { - if strings.HasPrefix(pathHash, hashPrefix) { - return true, nil - } - } - - return false, nil -} - -// validatePaths enforces the spec -// https://theupdateframework.github.io/specification/v1.0.19/index.html#file-formats-targets -// 'role MUST specify only one of the "path_hash_prefixes" or "paths"' -// Marshalling and unmarshalling JSON will fail and return -// ErrPathsAndPathHashesSet if both fields are set and not empty. -func (d *DelegatedRole) validatePaths() error { - if len(d.PathHashPrefixes) > 0 && len(d.Paths) > 0 { - return ErrPathsAndPathHashesSet - } - - return nil -} - -// MarshalJSON is called when writing the struct to JSON. We validate prior to -// marshalling to ensure that an invalid delegated role can not be serialized -// to JSON. -func (d *DelegatedRole) MarshalJSON() ([]byte, error) { - type delegatedRoleAlias DelegatedRole - - if err := d.validatePaths(); err != nil { - return nil, err - } - - return json.Marshal((*delegatedRoleAlias)(d)) -} - -// UnmarshalJSON is called when reading the struct from JSON. We validate once -// unmarshalled to ensure that an error is thrown if an invalid delegated role -// is read. -func (d *DelegatedRole) UnmarshalJSON(b []byte) error { - type delegatedRoleAlias DelegatedRole - - // Prepare decoder - dec := json.NewDecoder(bytes.NewReader(b)) - - // Unmarshal delegated role - if err := dec.Decode((*delegatedRoleAlias)(d)); err != nil { - return err - } - - return d.validatePaths() -} - -func NewTargets() *Targets { - return &Targets{ - Type: "targets", - SpecVersion: "1.0", - Expires: DefaultExpires("targets"), - Targets: make(TargetFiles), - } -} - -type TimestampFileMeta metapathFileMeta - -type TimestampFiles map[string]TimestampFileMeta - -type Timestamp struct { - Type string `json:"_type"` - SpecVersion string `json:"spec_version"` - Version int64 `json:"version"` - Expires time.Time `json:"expires"` - Meta TimestampFiles `json:"meta"` - Custom *json.RawMessage `json:"custom,omitempty"` -} - -func NewTimestamp() *Timestamp { - return &Timestamp{ - Type: "timestamp", - SpecVersion: "1.0", - Expires: DefaultExpires("timestamp"), - Meta: make(TimestampFiles), - } -} diff --git a/data/types_test.go b/data/types_test.go deleted file mode 100644 index b9523fa4..00000000 --- a/data/types_test.go +++ /dev/null @@ -1,287 +0,0 @@ -package data - -import ( - "encoding/json" - "testing" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/stretchr/testify/assert" - . "gopkg.in/check.v1" -) - -const ( - // This public key is from the TUF specs: - // - // https://github.com/theupdateframework/specification - // - public = `"72378e5bc588793e58f81c8533da64a2e8f1565c1fcc7f253496394ffc52542c"` - keyid10 = "1bf1c6e3cdd3d3a8420b19199e27511999850f4b376c4547b2f32fba7e80fca3" - keyid10algos = "506a349b85945d0d99c7289c3f0f1f6c550218089d1d38a3f64824db31e827ac" -) - -type TypesSuite struct{} - -var _ = Suite(&TypesSuite{}) - -type ed25519Public struct { - PublicKey HexBytes `json:"public"` -} - -func (TypesSuite) TestKeyIDs(c *C) { - var hexbytes HexBytes - err := json.Unmarshal([]byte(public), &hexbytes) - c.Assert(err, IsNil) - keyValBytes, err := json.Marshal(ed25519Public{PublicKey: hexbytes}) - c.Assert(err, IsNil) - - key := PublicKey{ - Type: KeyTypeEd25519, - Scheme: KeySchemeEd25519, - Value: keyValBytes, - } - c.Assert(key.IDs(), DeepEquals, []string{keyid10}) - - key = PublicKey{ - Type: KeyTypeEd25519, - Scheme: KeySchemeEd25519, - Algorithms: HashAlgorithms, - Value: keyValBytes, - } - c.Assert(key.IDs(), DeepEquals, []string{keyid10algos}) -} - -func (TypesSuite) TestRootAddKey(c *C) { - var hexbytes HexBytes - err := json.Unmarshal([]byte(public), &hexbytes) - c.Assert(err, IsNil) - keyValBytes, err := json.Marshal(ed25519Public{PublicKey: hexbytes}) - c.Assert(err, IsNil) - - key := &PublicKey{ - Type: KeyTypeEd25519, - Scheme: KeySchemeEd25519, - Value: keyValBytes, - } - - root := NewRoot() - - c.Assert(root.AddKey(key), Equals, true) - c.Assert(root.AddKey(key), Equals, false) -} - -func (TypesSuite) TestRoleAddKeyIDs(c *C) { - var hexbytes HexBytes - err := json.Unmarshal([]byte(public), &hexbytes) - c.Assert(err, IsNil) - keyValBytes, err := json.Marshal(ed25519Public{PublicKey: hexbytes}) - c.Assert(err, IsNil) - - key := &PublicKey{ - Type: KeyTypeEd25519, - Scheme: KeySchemeEd25519, - Value: keyValBytes, - } - - role := &Role{} - c.Assert(role.KeyIDs, HasLen, 0) - - c.Assert(role.AddKeyIDs(key.IDs()), Equals, true) - c.Assert(role.KeyIDs, DeepEquals, []string{keyid10}) - - // Adding the key again doesn't modify the array. - c.Assert(role.AddKeyIDs(key.IDs()), Equals, false) - c.Assert(role.KeyIDs, DeepEquals, []string{keyid10}) - - // Add another key. - key = &PublicKey{ - Type: KeyTypeEd25519, - Scheme: KeySchemeEd25519, - Algorithms: HashAlgorithms, - Value: keyValBytes, - } - - // Adding the key again doesn't modify the array. - c.Assert(role.AddKeyIDs(key.IDs()), Equals, true) - c.Assert(role.KeyIDs, DeepEquals, []string{keyid10, keyid10algos}) -} - -func TestDelegatedRolePathMatch(t *testing.T) { - var tts = []struct { - testName string - pathPatterns []string - pathHashPrefixes []string - file string - shouldMatch bool - }{ - { - testName: "no path", - file: "licence.txt", - }, - { - testName: "match path *", - pathPatterns: []string{"null", "targets/*.tgz"}, - file: "targets/foo.tgz", - shouldMatch: true, - }, - { - testName: "does not match path *", - pathPatterns: []string{"null", "targets/*.tgz"}, - file: "targets/foo.txt", - shouldMatch: false, - }, - { - testName: "match path ?", - pathPatterns: []string{"foo-version-?.tgz"}, - file: "foo-version-a.tgz", - shouldMatch: true, - }, - { - testName: "does not match ?", - pathPatterns: []string{"foo-version-?.tgz"}, - file: "foo-version-alpha.tgz", - shouldMatch: false, - }, - // picked from https://github.com/theupdateframework/tuf/blob/30ba6e9f9ab25e0370e29ce574dada2d8809afa0/tests/test_updater.py#L1726-L1734 - { - testName: "match hash prefix", - pathHashPrefixes: []string{"badd", "8baf"}, - file: "/file3.txt", - shouldMatch: true, - }, - { - testName: "does not match hash prefix", - pathHashPrefixes: []string{"badd"}, - file: "/file3.txt", - shouldMatch: false, - }, - { - testName: "hash prefix first char", - pathHashPrefixes: []string{"2"}, - file: "/a/b/c/file_d.txt", - shouldMatch: true, - }, - { - testName: "full hash prefix", - pathHashPrefixes: []string{"34c85d1ee84f61f10d7dc633472a49096ed87f8f764bd597831eac371f40ac39"}, - file: "/e/f/g.txt", - shouldMatch: true, - }, - } - for _, tt := range tts { - t.Run(tt.testName, func(t *testing.T) { - d := DelegatedRole{ - Paths: tt.pathPatterns, - PathHashPrefixes: tt.pathHashPrefixes, - } - assert.NoError(t, d.validatePaths()) - - matchesPath, err := d.MatchesPath(tt.file) - assert.NoError(t, err) - assert.Equal(t, tt.shouldMatch, matchesPath) - }) - - } -} - -func TestDelegatedRoleJSON(t *testing.T) { - var tts = []struct { - testName string - d *DelegatedRole - rawCJSON string - }{{ - testName: "all fields with hashes", - d: &DelegatedRole{ - Name: "n1", - KeyIDs: []string{"k1"}, - Threshold: 5, - Terminating: true, - PathHashPrefixes: []string{"8f"}, - }, - rawCJSON: `{"keyids":["k1"],"name":"n1","path_hash_prefixes":["8f"],"paths":null,"terminating":true,"threshold":5}`, - }, - { - testName: "paths only", - d: &DelegatedRole{ - Name: "n2", - KeyIDs: []string{"k1", "k3"}, - Threshold: 12, - Paths: []string{"*.txt"}, - }, - rawCJSON: `{"keyids":["k1","k3"],"name":"n2","paths":["*.txt"],"terminating":false,"threshold":12}`, - }, - { - testName: "default", - d: &DelegatedRole{}, - rawCJSON: `{"keyids":null,"name":"","paths":null,"terminating":false,"threshold":0}`, - }, - } - - for _, tt := range tts { - t.Run(tt.testName, func(t *testing.T) { - b, err := cjson.EncodeCanonical(tt.d) - assert.NoError(t, err) - assert.Equal(t, tt.rawCJSON, string(b)) - - newD := &DelegatedRole{} - err = json.Unmarshal(b, newD) - assert.NoError(t, err) - assert.Equal(t, tt.d, newD) - }) - } -} - -func TestDelegatedRoleUnmarshalErr(t *testing.T) { - targetsWithBothMatchers := []byte(`{"keyids":null,"name":"","paths":["*.txt"],"path_hash_prefixes":["8f"],"terminating":false,"threshold":0}`) - var d DelegatedRole - assert.Equal(t, ErrPathsAndPathHashesSet, json.Unmarshal(targetsWithBothMatchers, &d)) - - // test for type errors - err := json.Unmarshal([]byte(`{"keyids":"a"}`), &d) - assert.Equal(t, "keyids", err.(*json.UnmarshalTypeError).Field) -} - -func TestCustomField(t *testing.T) { - testCustomJSON := json.RawMessage([]byte(`{"test":true}`)) - - root := Root{ - Type: "root", - SpecVersion: "1.0", - Keys: make(map[string]*PublicKey), - Roles: make(map[string]*Role), - ConsistentSnapshot: true, - Custom: &testCustomJSON, - } - rootJSON, err := json.Marshal(&root) - assert.NoError(t, err) - assert.Equal(t, []byte("{\"_type\":\"root\",\"spec_version\":\"1.0\",\"version\":0,\"expires\":\"0001-01-01T00:00:00Z\",\"keys\":{},\"roles\":{},\"custom\":{\"test\":true},\"consistent_snapshot\":true}"), rootJSON) - - targets := Targets{ - Type: "targets", - SpecVersion: "1.0", - Targets: make(TargetFiles), - Custom: &testCustomJSON, - } - targetsJSON, err := json.Marshal(&targets) - assert.NoError(t, err) - assert.Equal(t, []byte("{\"_type\":\"targets\",\"spec_version\":\"1.0\",\"version\":0,\"expires\":\"0001-01-01T00:00:00Z\",\"targets\":{},\"custom\":{\"test\":true}}"), targetsJSON) - - snapshot := Snapshot{ - Type: "snapshot", - SpecVersion: "1.0", - Meta: make(SnapshotFiles), - Custom: &testCustomJSON, - } - snapshotJSON, err := json.Marshal(&snapshot) - assert.NoError(t, err) - assert.Equal(t, []byte("{\"_type\":\"snapshot\",\"spec_version\":\"1.0\",\"version\":0,\"expires\":\"0001-01-01T00:00:00Z\",\"meta\":{},\"custom\":{\"test\":true}}"), snapshotJSON) - - timestamp := Timestamp{ - Type: "timestamp", - SpecVersion: "1.0", - Meta: make(TimestampFiles), - Custom: &testCustomJSON, - } - timestampJSON, err := json.Marshal(×tamp) - assert.NoError(t, err) - assert.Equal(t, []byte("{\"_type\":\"timestamp\",\"spec_version\":\"1.0\",\"version\":0,\"expires\":\"0001-01-01T00:00:00Z\",\"meta\":{},\"custom\":{\"test\":true}}"), timestampJSON) -} diff --git a/docs/ALUMNI b/docs/ALUMNI deleted file mode 100644 index 294df413..00000000 --- a/docs/ALUMNI +++ /dev/null @@ -1,4 +0,0 @@ -Christian Rebischke (github: shibumi) -Erick Tryzelaar (github: erickt) -Jonathan Rudenberg (github: titanous) -Lewis Marshall (github: lmars) \ No newline at end of file diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index e9fdc17c..00000000 --- a/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,4 +0,0 @@ -## The Update Framework Community Code of Conduct - -The Update Framework follows the [CNCF Code of -Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index 4336fec1..00000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,62 +0,0 @@ -# Contributing Guide - -We welcome and encourage community contributions to go-tuf. - -Please familiarize yourself with these Contribution Guidelines before contributing. - -There are many ways to help go-tuf besides contributing code: - -- Fix bugs or file issues. -- Provide feedback on the CLI experience or suggest feature enhancements. -- Improve documentation. - -Please follow the [code of conduct](CODE_OF_CONDUCT.md) when contributing to this project. - -## Contributing Code - -Unless you are fixing a known bug, we strongly recommend discussing it with the community via a GitHub issue or Slack (see [Communication](#communication) below for details) before getting started to ensure that your work is consistent with TUF's specification. - -All contributions are made via pull request. All patches from all contributors get reviewed. See the [Pull Request procedure](#pull-request-procedure). - - -## Pull Request Procedure - -To make a pull request, you will need a GitHub account. See GitHub's documentation on [forking](https://help.github.com/articles/fork-a-repo) and [pull requests](https://help.github.com/articles/using-pull-requests). - -Pull requests should be targeted at the `master` branch. Before creating a pull request, go through this checklist: - -1. Create a feature branch off of `master` so that changes do not get mixed up. -2. If your PR adds new code, it should include tests covering the new code. If your PR fixes a bug, it should include a regression test. -3. PRs that change user-facing behavior or the command-line interface must have associated documentation. -4. All code comments and documentation are expected to have proper English grammar and punctuation. -5. [Rebase](http://git-scm.com/book/en/Git-Branching-Rebasing) your local changes against the `master` branch. -6. Run the full project test suite with the `go test ./...` command and confirm that it passes (see [TESTING.md](TESTING.md) for details). -7. Run `go fmt ./...`. -8. You must agree to the [Developer Certificate of Origin](https://developercertificate.org/) for your contributions; use `git commit -s` ([detailed information here](https://wiki.linuxfoundation.org/dco)). - -When creating a PR: - -1. Your PR title should be descriptive, and follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification (start with `fix:`, `feat:`, or similar). -2. Your PR commit message will be used as the commit message when your PR is merged. Update this field if your PR diverges during review. -3. Your PR description should have details on what the PR does. If it fixes an existing issue, include a line like "Fixes #XXXX". - -When all of the tests are passing, maintainer(s) will be assigned to review and merge the PR. If you're having trouble getting tests to pass, feel free to tag in [MAINTAINERS](MAINTAINERS) for help, or ask in Slack (see [Communication](#communication) below). - - -## Communication - -We use the [#tuf](https://cloud-native.slack.com/archives/C8NMD3QJ3) and [#go-tuf](https://cloud-native.slack.com/archives/C02D577GX54) channel on [CNCF Slack](https://slack.cncf.io/). You are welcome to drop in and ask questions, discuss bugs, etc. - -You might also be interested in the TUF community beyond go-tuf; good places to start include: - -- [TUF mailing list](https://groups.google.com/g/theupdateframework) -- TUF community meetings (monthly; join the mailing list or watch the Slack channel to see invitations) - - -## Pull Request Review Policy - -* Anyone is welcome to review any PR, whether they are a maintainer or not! -* Maintainers should aim to turn around reviews within five business days; feel free to ping, or tag in specific maintainers if a PR is taking longer than that. -* See [MAINTAINERS](MAINTAINERS) for the current list of maintainers. - -Maintainers should look in [MAINTAINERS.md](MAINTAINERS.md) for detailed quidelines. diff --git a/docs/MAINTAINERS b/docs/MAINTAINERS deleted file mode 100644 index 41d0f366..00000000 --- a/docs/MAINTAINERS +++ /dev/null @@ -1,7 +0,0 @@ -Trishank Karthik Kuppusamy (github: trishankatdatadog) -Joshua Lock (github: joshuagl) -Marina Moore (github: mnm678) -Zack Newman (github: znewman01) -Radoslav Dimitrov (github: rdimitrov) -Fredrik Skogman (github: kommendorkapten) -Marvin Drees (github: MDr164) diff --git a/docs/MAINTAINERS.md b/docs/MAINTAINERS.md deleted file mode 100644 index eb8d8a0a..00000000 --- a/docs/MAINTAINERS.md +++ /dev/null @@ -1,57 +0,0 @@ -# go-tuf maintainer guidelines - -These are expectations for the [MAINTAINERS](MAINTAINERS) of go-tuf; if you are not able to meet these requirements, please remove yourself from the list of maintainers. - -## Process - -Speedy communication makes contributors happy! - -- You should get notifications for all activity in this repository (using the "Watch" feature) and quickly triage each issue/PR as it comes in. - - (non-draft) PRs should have assigned reviewers. - - Important bugs and questions should have assignees. -- If you are assigned to review a PR, please try to *acknowledge* it within one business day (no need if you are OOO). -- Please review all PRs within five business days (of course, it's okay if you're OOO). -- Please use the review checklist below. -- We should make sure there's an assigned reviewer for every PR which has passing tests. - -Versioning: - -- go-tuf releases follow [SemVer](https://semver.org/) with the following modification: - - While go-tuf is pre-1.0, increment the minor version for any breaking changes (in SemVer, there are no guarantees about API stability before 1.0). -- Releases should be tagged in this repository as usual in Go (e.g. `v0.3.1`; see [Publishing a module](https://go.dev/doc/modules/publishing)). - - All maintainers should have permissions to push an appropriately-named `tag`, which will trigger the full release process. - - A patch release can happen at any point, but give the other maintainers 1 day's notice via Slack or GitHub first. - - For a minor release, see the "Project management" tag below. - - We may revisit this policy post-1.0. - -Project management: - -- Try to keep issues up-to-date with status updates! - - Feel free to ping open issues to check on them. - - Use the "assignee" field to indicate when you are working on an issue. - - Use GitHub issue labels to describe the issue (exact labels are still changing, so just look through and add those that seem like a good fit). -- Before publishing a new minor release, there should be an associated [GitHub project](https://github.com/theupdateframework/go-tuf/projects?type=beta) to track issues. -- We will develop more process around project management after we get through the v0.4.0 release. - -## Review checklist - -Code review: - -- [ ] Tests pass (enforced by CI). -- [ ] There should be tests for any new functionality, and regression tests for any bugs. -- [ ] Any user-facing functionality changes/additions (public APIs, command-line interface) should be documented. -- [ ] Changes should be compliant with the [TUF specification](https://theupdateframework.github.io/specification/latest/). - -Pre-merge (check everything again before hitting the merge button!): - -- [ ] Approvals from two different organizations. - - This is *not* currently enforced by CI, though PRs must have at least 2 approvals. - - This may be waived for PRs which only update docs or comments, or trivial changes to tests. -- Make sure that the PR title, commit message, and description are updated if the PR changes significantly during review. - -New version of the TUF specification: - -- There's an automated workflow which monitors and opens an issue in case there's newer version of the [TUF specification](https://theupdateframework.github.io/specification/latest/) -- Closing the issue should happen after completing the following steps: - - Review the changes to the specification and make sure they're addressed (possibly requires breaking out a few relevant issues). - - Bump the `tuf-version` in the `.github/workflows/specification-version-check.yml` workflow. diff --git a/docs/SECURITY.md b/docs/SECURITY.md deleted file mode 100644 index eb26fed7..00000000 --- a/docs/SECURITY.md +++ /dev/null @@ -1,21 +0,0 @@ -# Security Policy - -The go-tuf community is committed to maintaining a reliable and consistent TUF client implementation. If you believe you have identified a security issue in go-tuf's client protocol, please follow these guidelines for responsible disclosure. - -## Supported Versions - -You may report issues for the most recent version of go-tuf. We will not retroactively make changes to older versions. - -## Reporting a Vulnerability - -If you discover a potential security issue in this project we ask that you notify the go-tuf maintainers via [Github's private reporting feature](https://github.com/theupdateframework/go-tuf/security/advisories/new) (requires being signed in to GitHub). At the minimum, the report must contain the following: - -* A description of the issue. -* A specific version or commit SHA of `go-tuf` where the issue reproduces. -* Instructions to reproduce the issue. - -Please do **not** create a public GitHub issue or pull request to submit vulnerability reports. These public trackers are intended for non-time-sensitive and non-security-related bug reports and feature requests. Major feature requests, such as design changes to the specification, should be proposed via a [TUF Augmentation Protocol](https://theupdateframework.github.io/specification/latest/#tuf-augmentation-proposal-tap-support) (TAP). - -## Disclosure - -This project follows a 90 day disclosure timeline. diff --git a/docs/TESTING.md b/docs/TESTING.md deleted file mode 100644 index 5549853c..00000000 --- a/docs/TESTING.md +++ /dev/null @@ -1,18 +0,0 @@ -# Testing - -The [Python interoperability tests](../client/python_interop/) require Python 3 -(available as `python` on the `$PATH`) and the [`python-tuf` -package](https://github.com/theupdateframework/python-tuf) installed. To use the correct versions of the packages, it is recommended to use a [virtual environment](https://docs.python.org/3/library/venv.html#module-venv) and install the dependencies via: - -``` -python -m pip install --upgrade -r requirements-test.txt -``` - -You may run the full set of tests using -``` -go test ./... -``` - - -To update the data for these tests requires Docker and make (see -test data [README.md](../client/python_interop/testdata/README.md) for details). diff --git a/docs/audit/X41-go-tuf-Audit-2023-Final-Report-PUBLIC.pdf b/docs/audit/X41-go-tuf-Audit-2023-Final-Report-PUBLIC.pdf deleted file mode 100644 index 0ac12c37..00000000 Binary files a/docs/audit/X41-go-tuf-Audit-2023-Final-Report-PUBLIC.pdf and /dev/null differ diff --git a/docs/audit/blog-post.md b/docs/audit/blog-post.md deleted file mode 100644 index 2b6d127d..00000000 --- a/docs/audit/blog-post.md +++ /dev/null @@ -1,33 +0,0 @@ -# Security audit of go-tuf - -## The Update Framework - -## Radoslav Dimitrov - 06/13/2023 - -go-tuf, a Go implementation of The Update Framework (TUF), plays a critical role in securely managing -software updates. Recently, a security assessment conducted by X41 D-Sec GmbH uncovered a few -security-related findings in go-tuf. The following blog post provides a concise overview of the -assessment's key findings and recommendations. - -The assessment identified two vulnerabilities of medium and low severity in go-tuf, along with -four additional issues without immediate security implications. Even though there are no -high-severity issues, these vulnerabilities still pose risks in update integrity and local file -overwrite scenarios. - -To address the vulnerabilities, it was recommended to implement measures such as linking versions -and making root metadata project-specific. Additionally, validating signatures for all files -processed by go-tuf will enhance protection against file manipulation during transit. Alongside -the identified vulnerabilities, the security assessment highlighted that the β€œkeys” directory had -been assigned with world-readable permissions. Although this does not directly expose key files to -local attackers, it is considered a best practice to assign only the minimum necessary permissions. - -Despite the discovery of only a few vulnerabilities and weaknesses, go-tuf demonstrates a high level -of maturity in terms of security. The security assessment conducted by X41 D-Sec GmbH underscores -the importance of continuously improving the project's security posture and implementing best practices. -Alongside maintaining the project, the maintainers of go-tuf are also working on a new code base -which is based on the positive redesign of python-tuf. This new code base is designed to be more -efficient, user-friendly, and easier to maintain. The ongoing efforts of the maintainers to improve -the project's design and simplicity will contribute to the overall health and long-term success -of go-tuf. By implementing the recommended measures, adhering to best practices, and leveraging -the advancements in the new code base, go-tuf will continue to provide a reliable and secure solution -for managing software updates. diff --git a/encrypted/encrypted.go b/encrypted/encrypted.go deleted file mode 100644 index b884d611..00000000 --- a/encrypted/encrypted.go +++ /dev/null @@ -1,294 +0,0 @@ -// Package encrypted provides a simple, secure system for encrypting data -// symmetrically with a passphrase. -// -// It uses scrypt derive a key from the passphrase and the NaCl secret box -// cipher for authenticated encryption. -// -// Deprecated: The encrypted package from go-tuf is already moved to -// https://github.com/secure-systems-lab/go-securesystemslib and will be deprecated here. -// Use github.com/secure-systems-lab/go-securesystemslib/encrypted instead. -package encrypted - -import ( - "crypto/rand" - "encoding/json" - "errors" - "fmt" - "io" - - "golang.org/x/crypto/nacl/secretbox" - "golang.org/x/crypto/scrypt" -) - -const saltSize = 32 - -const ( - boxKeySize = 32 - boxNonceSize = 24 -) - -// KDFParameterStrength defines the KDF parameter strength level to be used for -// encryption key derivation. -type KDFParameterStrength uint8 - -const ( - // Legacy defines legacy scrypt parameters (N:2^15, r:8, p:1) - Legacy KDFParameterStrength = iota + 1 - // Standard defines standard scrypt parameters which is focusing 100ms of computation (N:2^16, r:8, p:1) - Standard - // OWASP defines OWASP recommended scrypt parameters (N:2^17, r:8, p:1) - OWASP -) - -var ( - // legacyParams represents old scrypt derivation parameters for backward - // compatibility. - legacyParams = scryptParams{ - N: 32768, // 2^15 - R: 8, - P: 1, - } - - // standardParams defines scrypt parameters based on the scrypt creator - // recommendation to limit key derivation in time boxed to 100ms. - standardParams = scryptParams{ - N: 65536, // 2^16 - R: 8, - P: 1, - } - - // owaspParams defines scrypt parameters recommended by OWASP - owaspParams = scryptParams{ - N: 131072, // 2^17 - R: 8, - P: 1, - } - - // defaultParams defines scrypt parameters which will be used to generate a - // new key. - defaultParams = standardParams -) - -const ( - nameScrypt = "scrypt" - nameSecretBox = "nacl/secretbox" -) - -type data struct { - KDF scryptKDF `json:"kdf"` - Cipher secretBoxCipher `json:"cipher"` - Ciphertext []byte `json:"ciphertext"` -} - -type scryptParams struct { - N int `json:"N"` - R int `json:"r"` - P int `json:"p"` -} - -func (sp *scryptParams) Equal(in *scryptParams) bool { - return in != nil && sp.N == in.N && sp.P == in.P && sp.R == in.R -} - -func newScryptKDF(level KDFParameterStrength) (scryptKDF, error) { - salt := make([]byte, saltSize) - if err := fillRandom(salt); err != nil { - return scryptKDF{}, fmt.Errorf("unable to generate a random salt: %w", err) - } - - var params scryptParams - switch level { - case Legacy: - params = legacyParams - case Standard: - params = standardParams - case OWASP: - params = owaspParams - default: - // Fallback to default parameters - params = defaultParams - } - - return scryptKDF{ - Name: nameScrypt, - Params: params, - Salt: salt, - }, nil -} - -type scryptKDF struct { - Name string `json:"name"` - Params scryptParams `json:"params"` - Salt []byte `json:"salt"` -} - -func (s *scryptKDF) Key(passphrase []byte) ([]byte, error) { - return scrypt.Key(passphrase, s.Salt, s.Params.N, s.Params.R, s.Params.P, boxKeySize) -} - -// CheckParams checks that the encoded KDF parameters are what we expect them to -// be. If we do not do this, an attacker could cause a DoS by tampering with -// them. -func (s *scryptKDF) CheckParams() error { - switch { - case legacyParams.Equal(&s.Params): - case standardParams.Equal(&s.Params): - case owaspParams.Equal(&s.Params): - default: - return errors.New("unsupported scrypt parameters") - } - - return nil -} - -func newSecretBoxCipher() (secretBoxCipher, error) { - nonce := make([]byte, boxNonceSize) - if err := fillRandom(nonce); err != nil { - return secretBoxCipher{}, err - } - return secretBoxCipher{ - Name: nameSecretBox, - Nonce: nonce, - }, nil -} - -type secretBoxCipher struct { - Name string `json:"name"` - Nonce []byte `json:"nonce"` - - encrypted bool -} - -func (s *secretBoxCipher) Encrypt(plaintext, key []byte) []byte { - var keyBytes [boxKeySize]byte - var nonceBytes [boxNonceSize]byte - - if len(key) != len(keyBytes) { - panic("incorrect key size") - } - if len(s.Nonce) != len(nonceBytes) { - panic("incorrect nonce size") - } - - copy(keyBytes[:], key) - copy(nonceBytes[:], s.Nonce) - - // ensure that we don't re-use nonces - if s.encrypted { - panic("Encrypt must only be called once for each cipher instance") - } - s.encrypted = true - - return secretbox.Seal(nil, plaintext, &nonceBytes, &keyBytes) -} - -func (s *secretBoxCipher) Decrypt(ciphertext, key []byte) ([]byte, error) { - var keyBytes [boxKeySize]byte - var nonceBytes [boxNonceSize]byte - - if len(key) != len(keyBytes) { - panic("incorrect key size") - } - if len(s.Nonce) != len(nonceBytes) { - // return an error instead of panicking since the nonce is user input - return nil, errors.New("encrypted: incorrect nonce size") - } - - copy(keyBytes[:], key) - copy(nonceBytes[:], s.Nonce) - - res, ok := secretbox.Open(nil, ciphertext, &nonceBytes, &keyBytes) - if !ok { - return nil, errors.New("encrypted: decryption failed") - } - return res, nil -} - -// Encrypt takes a passphrase and plaintext, and returns a JSON object -// containing ciphertext and the details necessary to decrypt it. -func Encrypt(plaintext, passphrase []byte) ([]byte, error) { - return EncryptWithCustomKDFParameters(plaintext, passphrase, Standard) -} - -// EncryptWithCustomKDFParameters takes a passphrase, the plaintext and a KDF -// parameter level (Legacy, Standard, or OWASP), and returns a JSON object -// containing ciphertext and the details necessary to decrypt it. -func EncryptWithCustomKDFParameters(plaintext, passphrase []byte, kdfLevel KDFParameterStrength) ([]byte, error) { - k, err := newScryptKDF(kdfLevel) - if err != nil { - return nil, err - } - key, err := k.Key(passphrase) - if err != nil { - return nil, err - } - - c, err := newSecretBoxCipher() - if err != nil { - return nil, err - } - - data := &data{ - KDF: k, - Cipher: c, - } - data.Ciphertext = c.Encrypt(plaintext, key) - - return json.Marshal(data) -} - -// Marshal encrypts the JSON encoding of v using passphrase. -func Marshal(v interface{}, passphrase []byte) ([]byte, error) { - return MarshalWithCustomKDFParameters(v, passphrase, Standard) -} - -// MarshalWithCustomKDFParameters encrypts the JSON encoding of v using passphrase. -func MarshalWithCustomKDFParameters(v interface{}, passphrase []byte, kdfLevel KDFParameterStrength) ([]byte, error) { - data, err := json.MarshalIndent(v, "", "\t") - if err != nil { - return nil, err - } - return EncryptWithCustomKDFParameters(data, passphrase, kdfLevel) -} - -// Decrypt takes a JSON-encoded ciphertext object encrypted using Encrypt and -// tries to decrypt it using passphrase. If successful, it returns the -// plaintext. -func Decrypt(ciphertext, passphrase []byte) ([]byte, error) { - data := &data{} - if err := json.Unmarshal(ciphertext, data); err != nil { - return nil, err - } - - if data.KDF.Name != nameScrypt { - return nil, fmt.Errorf("encrypted: unknown kdf name %q", data.KDF.Name) - } - if data.Cipher.Name != nameSecretBox { - return nil, fmt.Errorf("encrypted: unknown cipher name %q", data.Cipher.Name) - } - if err := data.KDF.CheckParams(); err != nil { - return nil, err - } - - key, err := data.KDF.Key(passphrase) - if err != nil { - return nil, err - } - - return data.Cipher.Decrypt(data.Ciphertext, key) -} - -// Unmarshal decrypts the data using passphrase and unmarshals the resulting -// plaintext into the value pointed to by v. -func Unmarshal(data []byte, v interface{}, passphrase []byte) error { - decrypted, err := Decrypt(data, passphrase) - if err != nil { - return err - } - return json.Unmarshal(decrypted, v) -} - -func fillRandom(b []byte) error { - _, err := io.ReadFull(rand.Reader, b) - return err -} diff --git a/encrypted/encrypted_test.go b/encrypted/encrypted_test.go deleted file mode 100644 index bdffff9e..00000000 --- a/encrypted/encrypted_test.go +++ /dev/null @@ -1,158 +0,0 @@ -package encrypted - -import ( - "encoding/json" - "strings" - "testing" - - . "gopkg.in/check.v1" -) - -var ( - kdfVectors = map[KDFParameterStrength][]byte{ - Legacy: []byte(`{"kdf":{"name":"scrypt","params":{"N":32768,"r":8,"p":1},"salt":"WO3mVvyTwJ9vwT5/Tk5OW5WPIBUofMjcpEfrLnfY4uA="},"cipher":{"name":"nacl/secretbox","nonce":"tCy7HcTFr4uxv4Nrg/DWmncuZ148U1MX"},"ciphertext":"08n43p5G5yviPEZpO7tPPF4aZQkWiWjkv4taFdhDBA0tamKH4nw="}`), - Standard: []byte(`{"kdf":{"name":"scrypt","params":{"N":65536,"r":8,"p":1},"salt":"FhzPOt9/bJG4PTq6lQ6ecG6GzaOuOy/ynG5+yRiFlNs="},"cipher":{"name":"nacl/secretbox","nonce":"aw1ng1jHaDz/tQ7V2gR9O2+IGQ8xJEuE"},"ciphertext":"HycvuLZL4sYH0BrYTh4E/H20VtAW6u5zL5Pr+IBjYLYnCPzDkq8="}`), - OWASP: []byte(`{"kdf":{"name":"scrypt","params":{"N":131072,"r":8,"p":1},"salt":"m38E3kouJTtiheLQN22NQ8DTito5hrjpUIskqcd375k="},"cipher":{"name":"nacl/secretbox","nonce":"Y6PM13yA+o44pE/W1ZBwczeGnTV/m9Zc"},"ciphertext":"6H8sqj1K6B6yDjtH5AQ6lbFigg/C2yDDJc4rYJ79w9aVPImFIPI="}`), - } -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type EncryptedSuite struct{} - -var _ = Suite(&EncryptedSuite{}) - -var plaintext = []byte("reallyimportant") - -func (EncryptedSuite) TestRoundtrip(c *C) { - passphrase := []byte("supersecret") - - enc, err := Encrypt(plaintext, passphrase) - c.Assert(err, IsNil) - - // successful decrypt - dec, err := Decrypt(enc, passphrase) - c.Assert(err, IsNil) - c.Assert(dec, DeepEquals, plaintext) - - // wrong passphrase - passphrase[0] = 0 - dec, err = Decrypt(enc, passphrase) - c.Assert(err, NotNil) - c.Assert(dec, IsNil) -} - -func (EncryptedSuite) TestTamperedRoundtrip(c *C) { - passphrase := []byte("supersecret") - - enc, err := Encrypt(plaintext, passphrase) - c.Assert(err, IsNil) - - data := &data{} - err = json.Unmarshal(enc, data) - c.Assert(err, IsNil) - - data.Ciphertext[0] = ^data.Ciphertext[0] - - enc, _ = json.Marshal(data) - - dec, err := Decrypt(enc, passphrase) - c.Assert(err, NotNil) - c.Assert(dec, IsNil) -} - -func (EncryptedSuite) TestDecrypt(c *C) { - enc := []byte(`{"kdf":{"name":"scrypt","params":{"N":32768,"r":8,"p":1},"salt":"N9a7x5JFGbrtB2uBR81jPwp0eiLR4A7FV3mjVAQrg1g="},"cipher":{"name":"nacl/secretbox","nonce":"2h8HxMmgRfuYdpswZBQaU3xJ1nkA/5Ik"},"ciphertext":"SEW6sUh0jf2wfdjJGPNS9+bkk2uB+Cxamf32zR8XkQ=="}`) - passphrase := []byte("supersecret") - - dec, err := Decrypt(enc, passphrase) - c.Assert(err, IsNil) - c.Assert(dec, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestMarshalUnmarshal(c *C) { - passphrase := []byte("supersecret") - - wrapped, err := Marshal(plaintext, passphrase) - c.Assert(err, IsNil) - c.Assert(wrapped, NotNil) - - var protected []byte - err = Unmarshal(wrapped, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestInvalidKDFSettings(c *C) { - passphrase := []byte("supersecret") - - wrapped, err := MarshalWithCustomKDFParameters(plaintext, passphrase, 0) - c.Assert(err, IsNil) - c.Assert(wrapped, NotNil) - - var protected []byte - err = Unmarshal(wrapped, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestLegacyKDFSettings(c *C) { - passphrase := []byte("supersecret") - - wrapped, err := MarshalWithCustomKDFParameters(plaintext, passphrase, Legacy) - c.Assert(err, IsNil) - c.Assert(wrapped, NotNil) - - var protected []byte - err = Unmarshal(wrapped, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestStandardKDFSettings(c *C) { - passphrase := []byte("supersecret") - - wrapped, err := MarshalWithCustomKDFParameters(plaintext, passphrase, Standard) - c.Assert(err, IsNil) - c.Assert(wrapped, NotNil) - - var protected []byte - err = Unmarshal(wrapped, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestOWASPKDFSettings(c *C) { - passphrase := []byte("supersecret") - - wrapped, err := MarshalWithCustomKDFParameters(plaintext, passphrase, OWASP) - c.Assert(err, IsNil) - c.Assert(wrapped, NotNil) - - var protected []byte - err = Unmarshal(wrapped, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) -} - -func (EncryptedSuite) TestKDFSettingVectors(c *C) { - passphrase := []byte("supersecret") - - for _, v := range kdfVectors { - var protected []byte - err := Unmarshal(v, &protected, passphrase) - c.Assert(err, IsNil) - c.Assert(protected, DeepEquals, plaintext) - } -} - -func (EncryptedSuite) TestUnsupportedKDFParameters(c *C) { - enc := []byte(`{"kdf":{"name":"scrypt","params":{"N":99,"r":99,"p":99},"salt":"cZFcQJdwPhPyhU1R4qkl0qVOIjZd4V/7LYYAavq166k="},"cipher":{"name":"nacl/secretbox","nonce":"7vhRS7j0hEPBWV05skAdgLj81AkGeE7U"},"ciphertext":"6WYU/YSXVbYzl/NzaeAzmjLyfFhOOjLc0d8/GFV0aBFdJvyCcXc="}`) - passphrase := []byte("supersecret") - - dec, err := Decrypt(enc, passphrase) - c.Assert(err, NotNil) - c.Assert(dec, IsNil) - c.Assert(strings.Contains(err.Error(), "unsupported scrypt parameters"), Equals, true) -} diff --git a/errors.go b/errors.go deleted file mode 100644 index 0051c439..00000000 --- a/errors.go +++ /dev/null @@ -1,98 +0,0 @@ -package tuf - -import ( - "errors" - "fmt" - "time" -) - -var ( - ErrInitNotAllowed = errors.New("tuf: repository already initialized") - ErrNewRepository = errors.New("tuf: repository not yet committed") - ErrChangePassphraseNotSupported = errors.New("tuf: store does not support changing passphrase") -) - -type ErrMissingMetadata struct { - Name string -} - -func (e ErrMissingMetadata) Error() string { - return fmt.Sprintf("tuf: missing metadata file %s", e.Name) -} - -type ErrFileNotFound struct { - Path string -} - -func (e ErrFileNotFound) Error() string { - return fmt.Sprintf("tuf: file not found %s", e.Path) -} - -type ErrNoKeys struct { - Name string -} - -func (e ErrNoKeys) Error() string { - return fmt.Sprintf("tuf: no keys available to sign %s", e.Name) -} - -type ErrInsufficientSignatures struct { - Name string - Err error -} - -func (e ErrInsufficientSignatures) Error() string { - return fmt.Sprintf("tuf: insufficient signatures for %s: %s", e.Name, e.Err) -} - -type ErrInvalidRole struct { - Role string - Reason string -} - -func (e ErrInvalidRole) Error() string { - return fmt.Sprintf("tuf: invalid role %s: %s", e.Role, e.Reason) -} - -type ErrInvalidExpires struct { - Expires time.Time -} - -func (e ErrInvalidExpires) Error() string { - return fmt.Sprintf("tuf: invalid expires: %s", e.Expires) -} - -type ErrKeyNotFound struct { - Role string - KeyID string -} - -func (e ErrKeyNotFound) Error() string { - return fmt.Sprintf(`tuf: no key with id "%s" exists for the %s role`, e.KeyID, e.Role) -} - -type ErrNotEnoughKeys struct { - Role string - Keys int - Threshold int -} - -func (e ErrNotEnoughKeys) Error() string { - return fmt.Sprintf("tuf: %s role has insufficient keys for threshold (has %d keys, threshold is %d)", e.Role, e.Keys, e.Threshold) -} - -type ErrPassphraseRequired struct { - Role string -} - -func (e ErrPassphraseRequired) Error() string { - return fmt.Sprintf("tuf: a passphrase is required to access the encrypted %s keys file", e.Role) -} - -type ErrNoDelegatedTarget struct { - Path string -} - -func (e ErrNoDelegatedTarget) Error() string { - return fmt.Sprintf("tuf: no delegated target for path %s", e.Path) -} diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..3b85ca49 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,53 @@ +# Examples + +---------------------------- + +## Repository + +---------------------------- + +See the [basic_repository.go](repository/basic_repository.go) example which demonstrates how to *manually* create and +maintain repository metadata using the low-level Metadata API. + +The example highlights the following functionality supported by the metadata API: + +* creation of top-level metadata +* target file handling +* consistent snapshots +* support a mixture of key types - ED25519, RSA and ECDSA +* top-level delegation and signing thresholds +* metadata verification +* target delegation +* in-band and out-of-band metadata signing +* writing and reading metadata files +* root key rotation + +## Client + +---------------------------- +There's also a [client_example.go](client/client_example.go) which demonstrates how to implement a client using the [updater](metadata/updater/updater.go) package. + +* it uses [https://jku.github.io/tuf-demo](https://jku.github.io/tuf-demo), a live TUF repository hosted on GitHub +* shows an example of how to initialize a client +* shows an example of how to download a target file +* the repository is based on python-tuf so it also highlights the interoperability between the two implementations + +## Multi-repository client + +---------------------------- +There's a [client_example.go](multirepo/client/client_example.go) which demonstrates how to implement a multi-repository client using the [multirepo](metadata/multirepo/multirepo.go) package which implements [TAP 4 - Multiple repository consensus on entrusted targets](https://github.com/theupdateframework/taps/blob/master/tap4.md). The example consists of the following: + +* The `map.json` along with the root files for each repository are distributed via a trusted repository used for initialization + * The metadata, these target files and the script generating them are located in the [examples/multirepo/repository](../repository/) folder +* These files are then used to bootstrap the multi-repository TUF client +* Shows the API provided by the `multirepo` package + +## CLI tools + +---------------------------- + +The following CLIs are experimental replacements of the CLI tools provided by the go-tuf package. At some point these will be moved to a separate repository. + +* [tuf-client](cli/tuf-client/README.md) - a CLI tool that implements the client workflow specified by The Update Framework (TUF) specification + +* [tuf](cli/tuf/README.md) - Not implemented diff --git a/examples/cli/README.md b/examples/cli/README.md new file mode 100644 index 00000000..d4b40235 --- /dev/null +++ b/examples/cli/README.md @@ -0,0 +1,13 @@ +# tuf and tuf-client CLI tools + +---------------------------- + +## Overview + +---------------------------- + +The following CLIs are experimental replacements of the CLI tools provided by the go-tuf package: + +* [tuf-client](tuf-client/README.md) - a CLI tool that implements the client workflow specified by The Update Framework (TUF) specification + +* [tuf](tuf/README.md) - Not implemented diff --git a/examples/cli/tuf-client/README.md b/examples/cli/tuf-client/README.md new file mode 100644 index 00000000..5813a628 --- /dev/null +++ b/examples/cli/tuf-client/README.md @@ -0,0 +1,58 @@ +# tuf-client CLI + +---------------------------- + +## Overview + +---------------------------- + +`tuf-client` is a CLI tool that implements the client workflow specified by The Update Framework (TUF) specification. + +The tuf-client can be used to query for available targets and to download them in a secure manner. + +All downloaded files are verified by signed metadata. + +The CLI provides three commands: + +* `tuf-client init` - Initialize the client with trusted root.json metadata +* `tuf-client get` - Download a target file +* `tuf-client reset` - Resets the local environment. Warning: this deletes both the metadata and download folders and all of their contents + +All commands except `reset` require the URL of the TUF repository passed as a flag via `--url/u` + +Run `tuf-client help` from the command line to get more detailed usage information. + +## Usage + +---------------------------- + +```bash +# Initialize by providing a root.json +# +# Usage: tuf-client init --url -f root.json +# +$ tuf-client init --url https://jku.github.io/tuf-demo/metadata -f root.json + +# Initialize without providing a root.json +# +# Usage: tuf-client init --url +# +$ tuf-client init --url https://jku.github.io/tuf-demo/metadata + +# Get a target +# +# Usage: tuf-client get --url +# +$ tuf-client get --url https://jku.github.io/tuf-demo/metadata demo/succinctly-delegated-5.txt + +# Get a target by providing a URL of where target files are located +# +# Usage: tuf-client get --url -t +# +# Use --nonprefixed for non-prefixed target files +# +$ tuf-client get --url https://jku.github.io/tuf-demo/metadata --turl https://jku.github.io/tuf-demo/targets --nonprefixed demo/succinctly-delegated-5.txt + +# Reset your local environment +$ tuf-client reset +``` diff --git a/examples/cli/tuf-client/cmd/get.go b/examples/cli/tuf-client/cmd/get.go new file mode 100644 index 00000000..84771c4d --- /dev/null +++ b/examples/cli/tuf-client/cmd/get.go @@ -0,0 +1,159 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "fmt" + stdlog "log" + "os" + "path/filepath" + + "github.com/go-logr/stdr" + "github.com/spf13/cobra" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/metadata/updater" +) + +var targetsURL string +var useNonHashPrefixedTargetFiles bool + +type localConfig struct { + MetadataDir string + DownloadDir string + MetadataURL string + TargetsURL string +} + +var getCmd = &cobra.Command{ + Use: "get", + Aliases: []string{"g"}, + Short: "Download a target file", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + if RepositoryURL == "" { + fmt.Println("Error: required flag(s) \"url\" not set") + os.Exit(1) + } + return GetCmd(args[0]) + }, +} + +func init() { + getCmd.Flags().StringVarP(&targetsURL, "turl", "t", "", "URL of where the target files are hosted") + getCmd.Flags().BoolVarP(&useNonHashPrefixedTargetFiles, "nonprefixed", "", false, "Do not use hash-prefixed target files with consistent snapshots") + rootCmd.AddCommand(getCmd) +} + +func GetCmd(target string) error { + // set logger and debug verbosity level + metadata.SetLogger(stdr.New(stdlog.New(os.Stdout, "get_cmd", stdlog.LstdFlags))) + if Verbosity { + stdr.SetVerbosity(5) + } + + // verify the client environment was initialized and fetch path names + env, err := verifyEnv() + if err != nil { + return err + } + // read the trusted root metadata + rootBytes, err := os.ReadFile(filepath.Join(env.MetadataDir, "root.json")) + if err != nil { + return err + } + + // updater configuration + cfg, err := config.New(env.MetadataURL, rootBytes) // default config + if err != nil { + return err + } + cfg.LocalMetadataDir = env.MetadataDir + cfg.LocalTargetsDir = env.DownloadDir + cfg.RemoteTargetsURL = env.TargetsURL + cfg.PrefixTargetsWithHash = !useNonHashPrefixedTargetFiles + + // create an Updater instance + up, err := updater.New(cfg) + if err != nil { + return fmt.Errorf("failed to create Updater instance: %w", err) + } + + // try to build the top-level metadata + err = up.Refresh() + if err != nil { + return fmt.Errorf("failed to refresh trusted metadata: %w", err) + } + + // search if the desired target is available + targetInfo, err := up.GetTargetInfo(target) + if err != nil { + return fmt.Errorf("target %s not found: %w", target, err) + } + + // target is available, so let's see if the target is already present locally + path, _, err := up.FindCachedTarget(targetInfo, "") + if err != nil { + return fmt.Errorf("failed while finding a cached target: %w", err) + } + + if path != "" { + fmt.Printf("Target %s is already present at - %s\n", target, path) + return nil + } + + // target is not present locally, so let's try to download it + path, _, err = up.DownloadTarget(targetInfo, "", "") + if err != nil { + return fmt.Errorf("failed to download target file %s - %w", target, err) + } + + fmt.Printf("Successfully downloaded target %s at - %s\n", target, path) + + return nil +} + +func verifyEnv() (*localConfig, error) { + // get working directory + cwd, err := os.Getwd() + if err != nil { + return nil, err + } + // if no targetsURL is set, we expect that the target files are located at the same location where the metadata is + if targetsURL == "" { + targetsURL = RepositoryURL + } + // start populating what we need + env := &localConfig{ + MetadataDir: filepath.Join(cwd, DefaultMetadataDir), + DownloadDir: filepath.Join(cwd, DefaultDownloadDir), + MetadataURL: RepositoryURL, + TargetsURL: targetsURL, + } + + // verify there's local metadata folder + _, err = os.Stat(env.MetadataDir) + if err != nil { + return nil, fmt.Errorf("no local metadata folder: %w", err) + } + // verify there's local download folder + _, err = os.Stat(env.DownloadDir) + if err != nil { + return nil, fmt.Errorf("no local download folder: %w", err) + } + // verify there's a local root.json available for bootstrapping trust + _, err = os.Stat(fmt.Sprintf("%s/%s.json", env.MetadataDir, metadata.ROOT)) + if err != nil { + return nil, fmt.Errorf("no local download folder: %w", err) + } + return env, nil +} diff --git a/examples/cli/tuf-client/cmd/init.go b/examples/cli/tuf-client/cmd/init.go new file mode 100644 index 00000000..7dc2c101 --- /dev/null +++ b/examples/cli/tuf-client/cmd/init.go @@ -0,0 +1,159 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "fmt" + "io" + stdlog "log" + "net/http" + "net/url" + "os" + "path/filepath" + + "github.com/go-logr/stdr" + "github.com/spf13/cobra" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/trustedmetadata" +) + +var rootPath string + +var initCmd = &cobra.Command{ + Use: "init", + Aliases: []string{"i"}, + Short: "Initialize the client with trusted root.json metadata", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + if RepositoryURL == "" { + fmt.Println("Error: required flag(s) \"url\" not set") + os.Exit(1) + } + return InitializeCmd() + }, +} + +func init() { + initCmd.Flags().StringVarP(&rootPath, "file", "f", "", "location of the trusted root metadata file") + rootCmd.AddCommand(initCmd) +} + +func InitializeCmd() error { + copyTrusted := true + // set logger and debug verbosity level + metadata.SetLogger(stdr.New(stdlog.New(os.Stdout, "ini_cmd", stdlog.LstdFlags))) + if Verbosity { + stdr.SetVerbosity(5) + } + + // prepare the local environment + localMetadataDir, err := prepareEnvironment() + if err != nil { + return err + } + + // if there's no root.json file passed, try to download the 1.root.json from the repository URL + if rootPath == "" { + + fmt.Printf("No root.json file was provided. Trying to download one from %s\n", RepositoryURL) + rootPath, err = fetchTrustedRoot(localMetadataDir) + if err != nil { + return err + } + rootPath = fmt.Sprintf("%s/%s.json", rootPath, metadata.ROOT) + // no need to copy root.json to the metadata folder as we already download it in the expected location + copyTrusted = false + } + + // read the content of root.json + rootBytes, err := ReadFile(rootPath) + if err != nil { + return err + } + + // verify the content + _, err = trustedmetadata.New(rootBytes) + if err != nil { + return err + } + + // Save the trusted root.json file to the metadata folder so it is available for future operations (if we haven't downloaded it) + if copyTrusted { + err = os.WriteFile(filepath.Join(localMetadataDir, rootPath), rootBytes, 0644) + if err != nil { + return err + } + } + + fmt.Println("Initialization successful") + + return nil +} + +// prepareEnvironment prepares the local environment +func prepareEnvironment() (string, error) { + // get working directory + cwd, err := os.Getwd() + if err != nil { + return "", fmt.Errorf("failed to get current working directory: %w", err) + } + metadataPath := filepath.Join(cwd, DefaultMetadataDir) + downloadPath := filepath.Join(cwd, DefaultDownloadDir) + + // create a folder for storing the artifacts + err = os.Mkdir(metadataPath, 0750) + if err != nil { + return "", fmt.Errorf("failed to create local metadata folder: %w", err) + } + + // create a destination folder for storing the downloaded target + err = os.Mkdir(downloadPath, 0750) + if err != nil { + return "", fmt.Errorf("failed to create download folder: %w", err) + } + return metadataPath, nil +} + +// fetchTrustedRoot downloads the initial root metadata +func fetchTrustedRoot(metadataDir string) (string, error) { + // download the initial root metadata so we can bootstrap Trust-On-First-Use + rootURL, err := url.JoinPath(RepositoryURL, "1.root.json") + if err != nil { + return "", fmt.Errorf("failed to create URL path for 1.root.json: %w", err) + } + + req, err := http.NewRequest("GET", rootURL, nil) + if err != nil { + return "", fmt.Errorf("failed to create http request: %w", err) + } + + client := http.DefaultClient + + res, err := client.Do(req) + if err != nil { + return "", fmt.Errorf("failed to executed the http request: %w", err) + } + + defer res.Body.Close() + + data, err := io.ReadAll(res.Body) + if err != nil { + return "", fmt.Errorf("failed to read the http request body: %w", err) + } + + // write the downloaded root metadata to file + err = os.WriteFile(filepath.Join(metadataDir, "root.json"), data, 0644) + if err != nil { + return "", fmt.Errorf("failed to write root.json metadata: %w", err) + } + return metadataDir, nil +} diff --git a/examples/cli/tuf-client/cmd/reset.go b/examples/cli/tuf-client/cmd/reset.go new file mode 100644 index 00000000..7bb5e482 --- /dev/null +++ b/examples/cli/tuf-client/cmd/reset.go @@ -0,0 +1,88 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/spf13/cobra" +) + +var ForceDelete bool + +var resetCmd = &cobra.Command{ + Use: "reset", + Aliases: []string{"r"}, + Short: "Resets the local environment. Warning: this deletes both the metadata and download folders and all of their contents", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + return ResetCmd() + }, +} + +func init() { + resetCmd.Flags().BoolVarP(&ForceDelete, "force", "f", false, "force delete without waiting for confirmation") + rootCmd.AddCommand(resetCmd) +} + +func ResetCmd() error { + // get working directory + cwd, err := os.Getwd() + if err != nil { + return fmt.Errorf("failed to get current working directory: %w", err) + } + + // folders to delete + metadataPath := filepath.Join(cwd, DefaultMetadataDir) + downloadPath := filepath.Join(cwd, DefaultDownloadDir) + + // warning: deletes the metadata folder and all of its contents + fmt.Printf("Warning: Are you sure you want to delete the \"%s\" folder and all of its contents? (y/n)\n", metadataPath) + if ForceDelete || askForConfirmation() { + os.RemoveAll(metadataPath) + fmt.Printf("Folder %s was successfully deleted\n", metadataPath) + } else { + fmt.Printf("Folder \"%s\" was not deleted\n", metadataPath) + } + + // warning: deletes the download folder and all of its contents + fmt.Printf("Warning: Are you sure you want to delete the \"%s\" folder and all of its contents? (y/n)\n", downloadPath) + if ForceDelete || askForConfirmation() { + os.RemoveAll(downloadPath) + fmt.Printf("Folder %s was successfully deleted\n", downloadPath) + } else { + fmt.Printf("Folder \"%s\" was not deleted\n", downloadPath) + } + + return nil +} + +func askForConfirmation() bool { + var response string + _, err := fmt.Scanln(&response) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + switch strings.ToLower(response) { + case "y", "yes": + return true + case "n", "no": + return false + default: + fmt.Println("I'm sorry but I didn't get what you meant, please type (y)es or (n)o and then press enter:") + return askForConfirmation() + } +} diff --git a/examples/cli/tuf-client/cmd/root.go b/examples/cli/tuf-client/cmd/root.go new file mode 100644 index 00000000..d2de6274 --- /dev/null +++ b/examples/cli/tuf-client/cmd/root.go @@ -0,0 +1,67 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "io" + "os" + + "github.com/spf13/cobra" +) + +const ( + DefaultMetadataDir = "tuf_metadata" + DefaultDownloadDir = "tuf_download" +) + +var Verbosity bool +var RepositoryURL string + +var rootCmd = &cobra.Command{ + Use: "tuf-client", + Short: "tuf-client - a client-side CLI tool for The Update Framework (TUF)", + Long: `tuf-client is a CLI tool that implements the client workflow specified by The Update Framework (TUF) specification. + +The tuf-client can be used to query for available targets and to download them in a secure manner. + +All downloaded files are verified by signed metadata.`, + Run: func(cmd *cobra.Command, args []string) { + // show the help message if no command has been used + if len(args) == 0 { + _ = cmd.Help() + os.Exit(0) + } + }, +} + +func Execute() { + rootCmd.PersistentFlags().BoolVarP(&Verbosity, "verbose", "v", false, "verbose output") + rootCmd.PersistentFlags().StringVarP(&RepositoryURL, "url", "u", "", "URL of the TUF repository") + + if err := rootCmd.Execute(); err != nil { + os.Exit(1) + } +} + +// ReadFile reads the content of a file and return its bytes +func ReadFile(name string) ([]byte, error) { + in, err := os.Open(name) + if err != nil { + return nil, err + } + defer in.Close() + data, err := io.ReadAll(in) + if err != nil { + return nil, err + } + return data, nil +} diff --git a/examples/cli/tuf-client/main.go b/examples/cli/tuf-client/main.go new file mode 100644 index 00000000..f38381b0 --- /dev/null +++ b/examples/cli/tuf-client/main.go @@ -0,0 +1,20 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + tufclient "github.com/theupdateframework/go-tuf/v2/examples/cli/tuf-client/cmd" +) + +func main() { + tufclient.Execute() +} diff --git a/examples/cli/tuf/README.md b/examples/cli/tuf/README.md new file mode 100644 index 00000000..f6dd0b92 --- /dev/null +++ b/examples/cli/tuf/README.md @@ -0,0 +1,9 @@ +# tuf CLI + +---------------------------- + +## Overview + +---------------------------- + +Not implemented diff --git a/examples/cli/tuf/cmd/init.go b/examples/cli/tuf/cmd/init.go new file mode 100644 index 00000000..4ab1979c --- /dev/null +++ b/examples/cli/tuf/cmd/init.go @@ -0,0 +1,48 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "fmt" + stdlog "log" + "os" + + "github.com/go-logr/stdr" + "github.com/spf13/cobra" + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +var initCmd = &cobra.Command{ + Use: "init", + Aliases: []string{"i"}, + Short: "Initialize a repository", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + return InitializeCmd() + }, +} + +func init() { + rootCmd.AddCommand(initCmd) +} + +func InitializeCmd() error { + // set logger and debug verbosity level + metadata.SetLogger(stdr.New(stdlog.New(os.Stdout, "ini_cmd", stdlog.LstdFlags))) + if Verbosity { + stdr.SetVerbosity(5) + } + + fmt.Println("Initialization successful") + + return nil +} diff --git a/examples/cli/tuf/cmd/root.go b/examples/cli/tuf/cmd/root.go new file mode 100644 index 00000000..3c34fefc --- /dev/null +++ b/examples/cli/tuf/cmd/root.go @@ -0,0 +1,52 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package cmd + +import ( + "io" + "os" + + "github.com/spf13/cobra" +) + +var Verbosity bool + +var rootCmd = &cobra.Command{ + Use: "tuf", + Short: "tuf - a repository-side CLI tool for The Update Framework (TUF)", + Long: "tuf - a repository-side CLI tool for The Update Framework (TUF)", + Run: func(cmd *cobra.Command, args []string) { + + }, +} + +func Execute() { + rootCmd.PersistentFlags().BoolVarP(&Verbosity, "verbose", "v", false, "verbose output") + + if err := rootCmd.Execute(); err != nil { + os.Exit(1) + } +} + +// ReadFile reads the content of a file and return its bytes +func ReadFile(name string) ([]byte, error) { + in, err := os.Open(name) + if err != nil { + return nil, err + } + defer in.Close() + data, err := io.ReadAll(in) + if err != nil { + return nil, err + } + return data, nil +} diff --git a/examples/cli/tuf/main.go b/examples/cli/tuf/main.go new file mode 100644 index 00000000..cec87d48 --- /dev/null +++ b/examples/cli/tuf/main.go @@ -0,0 +1,25 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + "fmt" + "os" + + tuf "github.com/theupdateframework/go-tuf/v2/examples/cli/tuf/cmd" +) + +func main() { + fmt.Println("Not implemented") + os.Exit(1) + tuf.Execute() +} diff --git a/examples/client/client_example.go b/examples/client/client_example.go new file mode 100644 index 00000000..01881ee3 --- /dev/null +++ b/examples/client/client_example.go @@ -0,0 +1,188 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + "fmt" + "io" + stdlog "log" + "net/http" + "net/url" + "os" + "path/filepath" + + "github.com/go-logr/stdr" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/metadata/updater" +) + +// The following config is used to fetch a target from Jussi's GitHub repository example +const ( + metadataURL = "https://jku.github.io/tuf-demo/metadata" + targetsURL = "https://jku.github.io/tuf-demo/targets" + targetName = "rdimitrov/artifact-example.md" + verbosity = 4 + generateRandomFolder = false +) + +func main() { + // set logger to stdout with info level + metadata.SetLogger(stdr.New(stdlog.New(os.Stdout, "client_example", stdlog.LstdFlags))) + stdr.SetVerbosity(verbosity) + + log := metadata.GetLogger() + + // initialize environment - temporary folders, etc. + metadataDir, err := InitEnvironment() + if err != nil { + log.Error(err, "Failed to initialize environment") + } + + // initialize client with Trust-On-First-Use + err = InitTrustOnFirstUse(metadataDir) + if err != nil { + log.Error(err, "Trust-On-First-Use failed") + } + + // download the desired target + err = DownloadTarget(metadataDir, targetName) + if err != nil { + log.Error(err, "Download failed") + } +} + +// InitEnvironment prepares the local environment - temporary folders, etc. +func InitEnvironment() (string, error) { + var tmpDir string + // get working directory + cwd, err := os.Getwd() + if err != nil { + return "", fmt.Errorf("failed to get current working directory: %w", err) + } + if !generateRandomFolder { + tmpDir = filepath.Join(cwd, "tmp") + // create a temporary folder for storing the demo artifacts + os.Mkdir(tmpDir, 0750) + } else { + // create a temporary folder for storing the demo artifacts + tmpDir, err = os.MkdirTemp(cwd, "tmp") + if err != nil { + return "", fmt.Errorf("failed to create a temporary folder: %w", err) + } + } + + // create a destination folder for storing the downloaded target + os.Mkdir(filepath.Join(tmpDir, "download"), 0750) + return tmpDir, nil +} + +// InitTrustOnFirstUse initialize local trusted metadata (Trust-On-First-Use) +func InitTrustOnFirstUse(metadataDir string) error { + // check if there's already a local root.json available for bootstrapping trust + _, err := os.Stat(filepath.Join(metadataDir, "root.json")) + if err == nil { + return nil + } + + // download the initial root metadata so we can bootstrap Trust-On-First-Use + rootURL, err := url.JoinPath(metadataURL, "1.root.json") + if err != nil { + return fmt.Errorf("failed to create URL path for 1.root.json: %w", err) + } + + req, err := http.NewRequest("GET", rootURL, nil) + if err != nil { + return fmt.Errorf("failed to create http request: %w", err) + } + + client := http.DefaultClient + + res, err := client.Do(req) + if err != nil { + return fmt.Errorf("failed to executed the http request: %w", err) + } + + defer res.Body.Close() + + data, err := io.ReadAll(res.Body) + if err != nil { + return fmt.Errorf("failed to read the http request body: %w", err) + } + + // write the downloaded root metadata to file + err = os.WriteFile(filepath.Join(metadataDir, "root.json"), data, 0644) + if err != nil { + return fmt.Errorf("failed to write root.json metadata: %w", err) + } + + return nil +} + +// DownloadTarget downloads the target file using Updater. The Updater refreshes the top-level metadata, +// get the target information, verifies if the target is already cached, and in case it +// is not cached, downloads the target file. +func DownloadTarget(localMetadataDir, target string) error { + log := metadata.GetLogger() + + rootBytes, err := os.ReadFile(filepath.Join(localMetadataDir, "root.json")) + if err != nil { + return err + } + // create updater configuration + cfg, err := config.New(metadataURL, rootBytes) // default config + if err != nil { + return err + } + cfg.LocalMetadataDir = localMetadataDir + cfg.LocalTargetsDir = filepath.Join(localMetadataDir, "download") + cfg.RemoteTargetsURL = targetsURL + cfg.PrefixTargetsWithHash = true + + // create a new Updater instance + up, err := updater.New(cfg) + if err != nil { + return fmt.Errorf("failed to create Updater instance: %w", err) + } + + // try to build the top-level metadata + err = up.Refresh() + if err != nil { + return fmt.Errorf("failed to refresh trusted metadata: %w", err) + } + + // search if the desired target is available + targetInfo, err := up.GetTargetInfo(target) + if err != nil { + return fmt.Errorf("target %s not found: %w", target, err) + } + + // target is available, so let's see if the target is already present locally + path, _, err := up.FindCachedTarget(targetInfo, "") + if err != nil { + return fmt.Errorf("failed while finding a cached target: %w", err) + } + if path != "" { + log.Info("Target is already present", "target", target, "path", path) + } + + // target is not present locally, so let's try to download it + path, _, err = up.DownloadTarget(targetInfo, "", "") + if err != nil { + return fmt.Errorf("failed to download target file %s - %w", target, err) + } + + log.Info("Successfully downloaded target", "target", target, "path", path) + + return nil +} diff --git a/examples/multirepo/client/README.md b/examples/multirepo/client/README.md new file mode 100644 index 00000000..15940256 --- /dev/null +++ b/examples/multirepo/client/README.md @@ -0,0 +1,8 @@ +# Example repository showing a multi repository TUF client (TAP 4) + +The following is a TUF multi-repository client example of the `multirepo` package which implements [TAP 4 - Multiple repository consensus on entrusted targets](https://github.com/theupdateframework/taps/blob/master/tap4.md): + +- The `map.json` along with the root files for each repository are distributed via a trusted repository used for initialization + - The metadata, these target files and the script generating them are located in the [examples/multirepo/repository](../repository/) folder +- These files are then used to bootstrap the multi-repository TUF client +- Shows the API provided by the `multirepo` package diff --git a/examples/multirepo/client/client_example.go b/examples/multirepo/client/client_example.go new file mode 100644 index 00000000..ea0f1b2c --- /dev/null +++ b/examples/multirepo/client/client_example.go @@ -0,0 +1,178 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + "fmt" + stdlog "log" + "os" + "path/filepath" + "strings" + + "github.com/go-logr/stdr" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/metadata/multirepo" + "github.com/theupdateframework/go-tuf/v2/metadata/updater" +) + +const ( + metadataURL = "https://raw.githubusercontent.com/rdimitrov/go-tuf-metadata/main/examples/multirepo/repository/metadata" + targetsURL = "https://raw.githubusercontent.com/rdimitrov/go-tuf-metadata/main/examples/multirepo/repository/targets" + verbosity = 4 +) + +func main() { + // set logger to stdout with info level + metadata.SetLogger(stdr.New(stdlog.New(os.Stdout, "multirepo_client_example", stdlog.LstdFlags))) + stdr.SetVerbosity(verbosity) + + // Bootstrap TUF + fmt.Printf("Bootstrapping the initial TUF repo - fetching map.json file and necessary trusted root files\n\n") + mapBytes, trustedRoots, err := BootstrapTUF() // returns the map.json and the trusted root files + if err != nil { + panic(err) + } + + // Initialize the multi-repository TUF client + fmt.Printf("Initializing the multi-repository TUF client with the given map.json file\n\n") + client, err := InitMultiRepoTUF(mapBytes, trustedRoots) + if err != nil { + panic(err) + } + + // Refresh all repositories + fmt.Printf("Refreshing each TUF client (updating metadata/client update workflow)\n\n") + err = client.Refresh() + if err != nil { + panic(err) + } + + // Get target info for the given target + fmt.Printf("Searching for a target using the multi-repository TUF client\n\n") + targetInfo, repositories, err := client.GetTargetInfo("rekor.pub") // rekor.pub trusted_root.json fulcio_v1.crt.pem + if err != nil { + panic(err) + } + + // Download the target using that target info + fmt.Println("Downloading a target using the multi-repository TUF client") + _, _, err = client.DownloadTarget(repositories, targetInfo, "", "") + if err != nil { + panic(err) + } +} + +// BootstrapTUF returns the map file and the related trusted root metadata files +func BootstrapTUF() ([]byte, map[string][]byte, error) { + log := metadata.GetLogger() + + trustedRoots := map[string][]byte{} + mapBytes := []byte{} + // get working directory + cwd, err := os.Getwd() + if err != nil { + return nil, nil, fmt.Errorf("failed to get current working directory: %w", err) + } + targetsDir := filepath.Join(cwd, "bootstrap/targets") + + // ensure the necessary folder layout + err = os.MkdirAll(targetsDir, os.ModePerm) + if err != nil { + return nil, nil, err + } + + // read the trusted root metadata + rootBytes, err := os.ReadFile(filepath.Join(cwd, "root.json")) + if err != nil { + return nil, nil, err + } + + // create updater configuration + cfg, err := config.New(metadataURL, rootBytes) // default config + if err != nil { + return nil, nil, err + } + cfg.LocalMetadataDir = filepath.Join(cwd, "bootstrap") + cfg.LocalTargetsDir = targetsDir + cfg.RemoteTargetsURL = targetsURL + + // create a new Updater instance + up, err := updater.New(cfg) + if err != nil { + return nil, nil, fmt.Errorf("failed to create Updater instance: %w", err) + } + + // build the top-level metadata + err = up.Refresh() + if err != nil { + return nil, nil, fmt.Errorf("failed to refresh trusted metadata: %w", err) + } + + // download all target files + for name, targetInfo := range up.GetTopLevelTargets() { + // see if the target is already present locally + path, _, err := up.FindCachedTarget(targetInfo, "") + if err != nil { + return nil, nil, fmt.Errorf("failed while finding a cached target: %w", err) + } + if path != "" { + log.Info("Target is already present", "target", name, "path", path) + } + + // target is not present locally, so let's try to download it + // keeping the same path layout as its target path + expectedTargetLocation := filepath.Join(targetsDir, name) + dirName, _ := filepath.Split(expectedTargetLocation) + err = os.MkdirAll(dirName, os.ModePerm) + if err != nil { + return nil, nil, err + } + + // download targets (we don't have to actually store them other than for the sake of the example) + path, bytes, err := up.DownloadTarget(targetInfo, expectedTargetLocation, "") + if err != nil { + return nil, nil, fmt.Errorf("failed to download target file %s - %w", name, err) + } + + // populate the return values + if name == "map.json" { + mapBytes = bytes + } else { + repositoryName := strings.Split(name, string(os.PathSeparator)) + trustedRoots[repositoryName[0]] = bytes + } + log.Info("Successfully downloaded target", "target", name, "path", path) + } + + return mapBytes, trustedRoots, nil +} + +func InitMultiRepoTUF(mapBytes []byte, trustedRoots map[string][]byte) (*multirepo.MultiRepoClient, error) { + // get working directory + cwd, err := os.Getwd() + if err != nil { + return nil, fmt.Errorf("failed to get current working directory: %w", err) + } + + // create a new configuration for a multi-repository client + cfg, err := multirepo.NewConfig(mapBytes, trustedRoots) + if err != nil { + return nil, err + } + cfg.LocalMetadataDir = filepath.Join(cwd, "metadata") + cfg.LocalTargetsDir = filepath.Join(cwd, "download") + + // create a new instance of a multi-repository TUF client + return multirepo.New(cfg) +} diff --git a/examples/multirepo/client/root.json b/examples/multirepo/client/root.json new file mode 100644 index 00000000..243a4b07 --- /dev/null +++ b/examples/multirepo/client/root.json @@ -0,0 +1,71 @@ +{ + "signatures": [ + { + "keyid": "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138", + "sig": "b434f25bd61a5cb7c53883b3d91c53b94e9312cd17e19f2b1e1089d73772fad542c0a91ef109404fe4cfabbd2d4cf3b0f7eaaca4fd012555014f75a23d49460a" + } + ], + "signed": { + "_type": "root", + "consistent_snapshot": true, + "expires": "2033-11-28T19:51:01.794266Z", + "keys": { + "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138": { + "keytype": "ed25519", + "keyval": { + "public": "3b70174991642fd8cfd4b1a4d834843f785db02ad98372b24eb54d06750dd732" + }, + "scheme": "ed25519" + }, + "8dcef43f9966d6b5c88cb10f7b5258361532de2151c65378bb8a21c281658696": { + "keytype": "ed25519", + "keyval": { + "public": "2f70d3d75e50f50cf9af3adcc20754ba2d17601801f36d61cacb9f73a7f798f9" + }, + "scheme": "ed25519" + }, + "a606e603cc4974a8fa894928cb165ce38a3f9948c245414bc71ef681caae9dc5": { + "keytype": "ed25519", + "keyval": { + "public": "3c3769ac5f74c8f2f84748586344ab8bbda9f0096859d5f37450dec1f5675434" + }, + "scheme": "ed25519" + }, + "e92842caf93e6e50a64ec0a467dee5bbd06669a6474895b3d5133c69de33545b": { + "keytype": "ed25519", + "keyval": { + "public": "6b1daebaa9b926bb38c33fd7d4edc14e2e96f8795b2ffe6ed49adee6a1251b20" + }, + "scheme": "ed25519" + } + }, + "roles": { + "root": { + "keyids": [ + "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138" + ], + "threshold": 1 + }, + "snapshot": { + "keyids": [ + "8dcef43f9966d6b5c88cb10f7b5258361532de2151c65378bb8a21c281658696" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "a606e603cc4974a8fa894928cb165ce38a3f9948c245414bc71ef681caae9dc5" + ], + "threshold": 1 + }, + "timestamp": { + "keyids": [ + "e92842caf93e6e50a64ec0a467dee5bbd06669a6474895b3d5133c69de33545b" + ], + "threshold": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/examples/multirepo/repository/README.md b/examples/multirepo/repository/README.md new file mode 100644 index 00000000..2f58172d --- /dev/null +++ b/examples/multirepo/repository/README.md @@ -0,0 +1,7 @@ +# Example repository used for bootstrapping a multi repository TUF client (TAP 4) + +The following is a helper TUF repository which serves several targets: + +- `map.json` which holds repository mappings and can be used to bootstrap a TUF client supporting multiple repositories +- A set of trusted root files for each repository listed in the `map.json` file +- The `examples/multirepo/client/client_example.go`(../client/client_example.go) is a client which uses this repository to bootstrap a multi-repository TUF client diff --git a/examples/multirepo/repository/generate_metadata.go b/examples/multirepo/repository/generate_metadata.go new file mode 100644 index 00000000..45e19b53 --- /dev/null +++ b/examples/multirepo/repository/generate_metadata.go @@ -0,0 +1,192 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + "crypto" + "fmt" + "os" + "path/filepath" + "strings" + "time" + + "github.com/sigstore/sigstore/pkg/signature" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/repository" + "golang.org/x/crypto/ed25519" +) + +func main() { + // Create top-level metadata + roles := repository.New() + keys := map[string]ed25519.PrivateKey{} + + // Create Targets metadata + targets := metadata.Targets(helperExpireIn(10)) + roles.SetTargets("targets", targets) + + // Add each target to Targets metadata + for _, targetName := range []string{"targets/map.json", "targets/sigstore-tuf-root/root.json", "targets/staging/root.json"} { + targetPath, localPath := helperGetPathForTarget(targetName) + targetFileInfo, err := metadata.TargetFile().FromFile(localPath, "sha256") + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "generating target file info failed", err)) + } + roles.Targets("targets").Signed.Targets[strings.TrimPrefix(targetPath, "targets/")] = targetFileInfo + for _, eachHashValue := range targetFileInfo.Hashes { + err := copyHashPrefixed(localPath, eachHashValue.String()) + if err != nil { + panic(err) + } + } + } + + // Create Snapshot metadata + snapshot := metadata.Snapshot(helperExpireIn(10)) + roles.SetSnapshot(snapshot) + + // Create Timestamp metadata + timestamp := metadata.Timestamp(helperExpireIn(10)) + roles.SetTimestamp(timestamp) + + // Create Root metadata + root := metadata.Root(helperExpireIn(10)) + roles.SetRoot(root) + + // For this example, we generate one private key of type 'ed25519' for each top-level role + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + _, private, err := ed25519.GenerateKey(nil) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "key generation failed", err)) + } + keys[name] = private + key, err := metadata.KeyFromPublicKey(private.Public()) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "key conversion failed", err)) + } + err = roles.Root().Signed.AddKey(key, name) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "adding key to root failed", err)) + } + } + + // Sign top-level metadata (in-band) + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + key := keys[name] + signer, err := signature.LoadSigner(key, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "loading a signer failed", err)) + } + switch name { + case "targets": + _, err = roles.Targets("targets").Sign(signer) + case "snapshot": + _, err = roles.Snapshot().Sign(signer) + case "timestamp": + _, err = roles.Timestamp().Sign(signer) + case "root": + _, err = roles.Root().Sign(signer) + } + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "metadata signing failed", err)) + } + } + + // Persist metadata (consistent snapshot) + cwd, err := os.Getwd() + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "getting cwd failed", err)) + } + // Save to metadata folder + cwd = filepath.Join(cwd, "metadata") + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + switch name { + case "targets": + filename := fmt.Sprintf("%d.%s.json", roles.Targets("targets").Signed.Version, name) + err = roles.Targets("targets").ToFile(filepath.Join(cwd, filename), true) + case "snapshot": + filename := fmt.Sprintf("%d.%s.json", roles.Snapshot().Signed.Version, name) + err = roles.Snapshot().ToFile(filepath.Join(cwd, filename), true) + case "timestamp": + filename := fmt.Sprintf("%s.json", name) + err = roles.Timestamp().ToFile(filepath.Join(cwd, filename), true) + case "root": + filename := fmt.Sprintf("%d.%s.json", roles.Root().Signed.Version, name) + err = roles.Root().ToFile(filepath.Join(cwd, filename), true) + } + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "saving metadata to file failed", err)) + } + } + + // Save the created root metadata in the client folder, this is the initial trusted root metadata + err = roles.Root().ToFile(filepath.Join(cwd, "../../client/root.json"), true) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "saving trusted root metadata to client folder failed", err)) + } + + // Verify that metadata is signed correctly + // Verify root + err = roles.Root().VerifyDelegate("root", roles.Root()) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "verifying root metadata failed", err)) + } + + // Verify targets + err = roles.Root().VerifyDelegate("targets", roles.Targets("targets")) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "verifying targets metadata failed", err)) + } + + // Verify snapshot + err = roles.Root().VerifyDelegate("snapshot", roles.Snapshot()) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "verifying snapshot metadata failed", err)) + } + + // Verify timestamp + err = roles.Root().VerifyDelegate("timestamp", roles.Timestamp()) + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "verifying timestamp metadata failed", err)) + } + + fmt.Println("Done! Metadata files location:", cwd) +} + +// helperExpireIn returns time offset by years (for the sake of the example) +func helperExpireIn(years int) time.Time { + return time.Now().AddDate(years, 0, 0).UTC() +} + +// helperGetPathForTarget returns local and target paths for target +func helperGetPathForTarget(name string) (string, string) { + cwd, err := os.Getwd() + if err != nil { + panic(fmt.Sprintln("generate_metadata.go:", "getting cwd failed", err)) + } + // _, dir := filepath.Split(cwd) + // return filepath.Join(dir, name), filepath.Join(cwd, name) + return name, filepath.Join(cwd, name) +} + +func copyHashPrefixed(src string, hash string) error { + data, err := os.ReadFile(src) + if err != nil { + return err + } + dirName, fileName := filepath.Split(src) + err = os.WriteFile(filepath.Join(dirName, fmt.Sprintf("%s.%s", hash, fileName)), data, 0644) + if err != nil { + return err + } + return nil +} diff --git a/examples/multirepo/repository/metadata/1.root.json b/examples/multirepo/repository/metadata/1.root.json new file mode 100644 index 00000000..243a4b07 --- /dev/null +++ b/examples/multirepo/repository/metadata/1.root.json @@ -0,0 +1,71 @@ +{ + "signatures": [ + { + "keyid": "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138", + "sig": "b434f25bd61a5cb7c53883b3d91c53b94e9312cd17e19f2b1e1089d73772fad542c0a91ef109404fe4cfabbd2d4cf3b0f7eaaca4fd012555014f75a23d49460a" + } + ], + "signed": { + "_type": "root", + "consistent_snapshot": true, + "expires": "2033-11-28T19:51:01.794266Z", + "keys": { + "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138": { + "keytype": "ed25519", + "keyval": { + "public": "3b70174991642fd8cfd4b1a4d834843f785db02ad98372b24eb54d06750dd732" + }, + "scheme": "ed25519" + }, + "8dcef43f9966d6b5c88cb10f7b5258361532de2151c65378bb8a21c281658696": { + "keytype": "ed25519", + "keyval": { + "public": "2f70d3d75e50f50cf9af3adcc20754ba2d17601801f36d61cacb9f73a7f798f9" + }, + "scheme": "ed25519" + }, + "a606e603cc4974a8fa894928cb165ce38a3f9948c245414bc71ef681caae9dc5": { + "keytype": "ed25519", + "keyval": { + "public": "3c3769ac5f74c8f2f84748586344ab8bbda9f0096859d5f37450dec1f5675434" + }, + "scheme": "ed25519" + }, + "e92842caf93e6e50a64ec0a467dee5bbd06669a6474895b3d5133c69de33545b": { + "keytype": "ed25519", + "keyval": { + "public": "6b1daebaa9b926bb38c33fd7d4edc14e2e96f8795b2ffe6ed49adee6a1251b20" + }, + "scheme": "ed25519" + } + }, + "roles": { + "root": { + "keyids": [ + "492e4e5660058c39cae70b380750e4f8ea86d0fc2047c795af9bbbe73cedd138" + ], + "threshold": 1 + }, + "snapshot": { + "keyids": [ + "8dcef43f9966d6b5c88cb10f7b5258361532de2151c65378bb8a21c281658696" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "a606e603cc4974a8fa894928cb165ce38a3f9948c245414bc71ef681caae9dc5" + ], + "threshold": 1 + }, + "timestamp": { + "keyids": [ + "e92842caf93e6e50a64ec0a467dee5bbd06669a6474895b3d5133c69de33545b" + ], + "threshold": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/examples/multirepo/repository/metadata/1.snapshot.json b/examples/multirepo/repository/metadata/1.snapshot.json new file mode 100644 index 00000000..b668878b --- /dev/null +++ b/examples/multirepo/repository/metadata/1.snapshot.json @@ -0,0 +1,19 @@ +{ + "signatures": [ + { + "keyid": "8dcef43f9966d6b5c88cb10f7b5258361532de2151c65378bb8a21c281658696", + "sig": "e0f197531eec1a8aeea48014f4459206d59546c1a6a3ab5ea18910b229b51fe6475822fae0005fd8ff611944ca6e8b5c3b286a572d1812e561d55fdeafad9704" + } + ], + "signed": { + "_type": "snapshot", + "expires": "2033-11-28T19:51:01.794264Z", + "meta": { + "targets.json": { + "version": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/examples/multirepo/repository/metadata/1.targets.json b/examples/multirepo/repository/metadata/1.targets.json new file mode 100644 index 00000000..5c3cbec2 --- /dev/null +++ b/examples/multirepo/repository/metadata/1.targets.json @@ -0,0 +1,34 @@ +{ + "signatures": [ + { + "keyid": "a606e603cc4974a8fa894928cb165ce38a3f9948c245414bc71ef681caae9dc5", + "sig": "4c2ad791fe1b2d23b4a7292120b493c61795cb23519b2f23b9c17a25a1078b7cdf72f052fe4ddc583e45ef6ab6ca809f35c192bdf60649ba371bc063a62cbd05" + } + ], + "signed": { + "_type": "targets", + "expires": "2033-11-28T19:51:01.793233Z", + "spec_version": "1.0.31", + "targets": { + "map.json": { + "hashes": { + "sha256": "9bb72b3c684f4e489e7fdce1afabff64b4e3f4b7877ac8cb78a684c2c65fc6d8" + }, + "length": 645 + }, + "sigstore-tuf-root/root.json": { + "hashes": { + "sha256": "e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4" + }, + "length": 6388 + }, + "staging/root.json": { + "hashes": { + "sha256": "e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4" + }, + "length": 6388 + } + }, + "version": 1 + } +} \ No newline at end of file diff --git a/examples/multirepo/repository/metadata/timestamp.json b/examples/multirepo/repository/metadata/timestamp.json new file mode 100644 index 00000000..2e68e1e3 --- /dev/null +++ b/examples/multirepo/repository/metadata/timestamp.json @@ -0,0 +1,19 @@ +{ + "signatures": [ + { + "keyid": "e92842caf93e6e50a64ec0a467dee5bbd06669a6474895b3d5133c69de33545b", + "sig": "41670fd3ca12b41a5f3109e6537646586099108c693c913d75570a47ff72e8910b32858a80be6f2ba058c0993af84de4f26a7b5a93b3322e0cf8d10e37352609" + } + ], + "signed": { + "_type": "timestamp", + "expires": "2033-11-28T19:51:01.794266Z", + "meta": { + "snapshot.json": { + "version": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/examples/multirepo/repository/targets/9bb72b3c684f4e489e7fdce1afabff64b4e3f4b7877ac8cb78a684c2c65fc6d8.map.json b/examples/multirepo/repository/targets/9bb72b3c684f4e489e7fdce1afabff64b4e3f4b7877ac8cb78a684c2c65fc6d8.map.json new file mode 100644 index 00000000..1a0f4e22 --- /dev/null +++ b/examples/multirepo/repository/targets/9bb72b3c684f4e489e7fdce1afabff64b4e3f4b7877ac8cb78a684c2c65fc6d8.map.json @@ -0,0 +1,27 @@ + +{ + "repositories": { + "sigstore-tuf-root": ["https://tuf-repo-cdn.sigstore.dev"], + "staging": ["https://raw.githubusercontent.com/sigstore/root-signing/main/repository/repository"] + }, + "mapping": [ + { + "paths": ["fulcio*", "*.json"], + "repositories": ["staging"], + "threshold": 1, + "terminating": true + }, + { + "paths": ["*.pub"], + "repositories": ["sigstore-tuf-root", "staging"], + "threshold": 2, + "terminating": false + }, + { + "paths": ["*"], + "repositories": ["sigstore-tuf-root"], + "terminating": true, + "threshold": 1 + } + ] +} diff --git a/examples/multirepo/repository/targets/map.json b/examples/multirepo/repository/targets/map.json new file mode 100644 index 00000000..1a0f4e22 --- /dev/null +++ b/examples/multirepo/repository/targets/map.json @@ -0,0 +1,27 @@ + +{ + "repositories": { + "sigstore-tuf-root": ["https://tuf-repo-cdn.sigstore.dev"], + "staging": ["https://raw.githubusercontent.com/sigstore/root-signing/main/repository/repository"] + }, + "mapping": [ + { + "paths": ["fulcio*", "*.json"], + "repositories": ["staging"], + "threshold": 1, + "terminating": true + }, + { + "paths": ["*.pub"], + "repositories": ["sigstore-tuf-root", "staging"], + "threshold": 2, + "terminating": false + }, + { + "paths": ["*"], + "repositories": ["sigstore-tuf-root"], + "terminating": true, + "threshold": 1 + } + ] +} diff --git a/examples/multirepo/repository/targets/sigstore-tuf-root/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json b/examples/multirepo/repository/targets/sigstore-tuf-root/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json new file mode 100644 index 00000000..38f80f94 --- /dev/null +++ b/examples/multirepo/repository/targets/sigstore-tuf-root/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json @@ -0,0 +1,156 @@ +{ + "signed": { + "_type": "root", + "spec_version": "1.0", + "version": 5, + "expires": "2023-04-18T18:13:43Z", + "keys": { + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEXsz3SZXFb8jMV42j6pJlyjbjR8K\nN3Bwocexq6LMIb5qsWKOQvLN16NUefLc4HswOoumRsVVaajSpQS6fobkRw==\n-----END PUBLIC KEY-----\n" + } + }, + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0ghrh92Lw1Yr3idGV5WqCtMDB8Cx\n+D8hdC4w2ZLNIplVRoVGLskYa3gheMyOjiJ8kPi15aQ2//7P+oj7UvJPGw==\n-----END PUBLIC KEY-----\n" + } + }, + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELrWvNt94v4R085ELeeCMxHp7PldF\n0/T1GxukUh2ODuggLGJE0pc1e8CSBf6CS91Fwo9FUOuRsjBUld+VqSyCdQ==\n-----END PUBLIC KEY-----\n" + } + }, + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEinikSsAQmYkNeH5eYq/CnIzLaacO\nxlSaawQDOwqKy/tCqxq5xxPSJc21K4WIhs9GyOkKfzueY3GILzcMJZ4cWw==\n-----END PUBLIC KEY-----\n" + } + }, + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWRiGr5+j+3J5SsH+Ztr5nE2H2wO7\nBV+nO3s93gLca18qTOzHY1oWyAGDykMSsGTUBSt9D+An0KfKsD2mfSM42Q==\n-----END PUBLIC KEY-----\n" + } + }, + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzBzVOmHCPojMVLSI364WiiV8NPrD\n6IgRxVliskz/v+y3JER5mcVGcONliDcWMC5J2lfHmjPNPhb4H7xm8LzfSA==\n-----END PUBLIC KEY-----\n" + } + }, + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy8XKsmhBYDI8Jc0GwzBxeKax0cm5\nSTKEU65HPFunUn41sT8pi0FjM4IkHz/YUmwmLUO0Wt7lxhj6BkLIK4qYAw==\n-----END PUBLIC KEY-----\n" + } + } + }, + "roles": { + "root": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "snapshot": { + "keyids": [ + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "timestamp": { + "keyids": [ + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a" + ], + "threshold": 1 + } + }, + "consistent_snapshot": true + }, + "signatures": [ + { + "keyid": "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + }, + { + "keyid": "2f64fb5eac0cf94dd39bb45308b98920055e9a0d8e012a7220787834c60aef97", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "eaf22372f417dd618a46f6c627dbc276e9fd30a004fc94f9be946e73f8bd090b", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "f505595165a177a41750a8e864ed1719b1edfccd5a426fd2c0ffda33ce7ff209", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "75e867ab10e121fdef32094af634707f43ddd79c6bab8ad6c5ab9f03f4ea8c90", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + } + ] +} \ No newline at end of file diff --git a/examples/multirepo/repository/targets/sigstore-tuf-root/root.json b/examples/multirepo/repository/targets/sigstore-tuf-root/root.json new file mode 100644 index 00000000..38f80f94 --- /dev/null +++ b/examples/multirepo/repository/targets/sigstore-tuf-root/root.json @@ -0,0 +1,156 @@ +{ + "signed": { + "_type": "root", + "spec_version": "1.0", + "version": 5, + "expires": "2023-04-18T18:13:43Z", + "keys": { + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEXsz3SZXFb8jMV42j6pJlyjbjR8K\nN3Bwocexq6LMIb5qsWKOQvLN16NUefLc4HswOoumRsVVaajSpQS6fobkRw==\n-----END PUBLIC KEY-----\n" + } + }, + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0ghrh92Lw1Yr3idGV5WqCtMDB8Cx\n+D8hdC4w2ZLNIplVRoVGLskYa3gheMyOjiJ8kPi15aQ2//7P+oj7UvJPGw==\n-----END PUBLIC KEY-----\n" + } + }, + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELrWvNt94v4R085ELeeCMxHp7PldF\n0/T1GxukUh2ODuggLGJE0pc1e8CSBf6CS91Fwo9FUOuRsjBUld+VqSyCdQ==\n-----END PUBLIC KEY-----\n" + } + }, + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEinikSsAQmYkNeH5eYq/CnIzLaacO\nxlSaawQDOwqKy/tCqxq5xxPSJc21K4WIhs9GyOkKfzueY3GILzcMJZ4cWw==\n-----END PUBLIC KEY-----\n" + } + }, + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWRiGr5+j+3J5SsH+Ztr5nE2H2wO7\nBV+nO3s93gLca18qTOzHY1oWyAGDykMSsGTUBSt9D+An0KfKsD2mfSM42Q==\n-----END PUBLIC KEY-----\n" + } + }, + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzBzVOmHCPojMVLSI364WiiV8NPrD\n6IgRxVliskz/v+y3JER5mcVGcONliDcWMC5J2lfHmjPNPhb4H7xm8LzfSA==\n-----END PUBLIC KEY-----\n" + } + }, + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy8XKsmhBYDI8Jc0GwzBxeKax0cm5\nSTKEU65HPFunUn41sT8pi0FjM4IkHz/YUmwmLUO0Wt7lxhj6BkLIK4qYAw==\n-----END PUBLIC KEY-----\n" + } + } + }, + "roles": { + "root": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "snapshot": { + "keyids": [ + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "timestamp": { + "keyids": [ + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a" + ], + "threshold": 1 + } + }, + "consistent_snapshot": true + }, + "signatures": [ + { + "keyid": "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + }, + { + "keyid": "2f64fb5eac0cf94dd39bb45308b98920055e9a0d8e012a7220787834c60aef97", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "eaf22372f417dd618a46f6c627dbc276e9fd30a004fc94f9be946e73f8bd090b", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "f505595165a177a41750a8e864ed1719b1edfccd5a426fd2c0ffda33ce7ff209", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "75e867ab10e121fdef32094af634707f43ddd79c6bab8ad6c5ab9f03f4ea8c90", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + } + ] +} \ No newline at end of file diff --git a/examples/multirepo/repository/targets/staging/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json b/examples/multirepo/repository/targets/staging/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json new file mode 100644 index 00000000..38f80f94 --- /dev/null +++ b/examples/multirepo/repository/targets/staging/e2a930b2d1d4053dd56e8faf66fd113658545d522e35d222ccf58fea87ccccf4.root.json @@ -0,0 +1,156 @@ +{ + "signed": { + "_type": "root", + "spec_version": "1.0", + "version": 5, + "expires": "2023-04-18T18:13:43Z", + "keys": { + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEXsz3SZXFb8jMV42j6pJlyjbjR8K\nN3Bwocexq6LMIb5qsWKOQvLN16NUefLc4HswOoumRsVVaajSpQS6fobkRw==\n-----END PUBLIC KEY-----\n" + } + }, + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0ghrh92Lw1Yr3idGV5WqCtMDB8Cx\n+D8hdC4w2ZLNIplVRoVGLskYa3gheMyOjiJ8kPi15aQ2//7P+oj7UvJPGw==\n-----END PUBLIC KEY-----\n" + } + }, + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELrWvNt94v4R085ELeeCMxHp7PldF\n0/T1GxukUh2ODuggLGJE0pc1e8CSBf6CS91Fwo9FUOuRsjBUld+VqSyCdQ==\n-----END PUBLIC KEY-----\n" + } + }, + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEinikSsAQmYkNeH5eYq/CnIzLaacO\nxlSaawQDOwqKy/tCqxq5xxPSJc21K4WIhs9GyOkKfzueY3GILzcMJZ4cWw==\n-----END PUBLIC KEY-----\n" + } + }, + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWRiGr5+j+3J5SsH+Ztr5nE2H2wO7\nBV+nO3s93gLca18qTOzHY1oWyAGDykMSsGTUBSt9D+An0KfKsD2mfSM42Q==\n-----END PUBLIC KEY-----\n" + } + }, + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzBzVOmHCPojMVLSI364WiiV8NPrD\n6IgRxVliskz/v+y3JER5mcVGcONliDcWMC5J2lfHmjPNPhb4H7xm8LzfSA==\n-----END PUBLIC KEY-----\n" + } + }, + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy8XKsmhBYDI8Jc0GwzBxeKax0cm5\nSTKEU65HPFunUn41sT8pi0FjM4IkHz/YUmwmLUO0Wt7lxhj6BkLIK4qYAw==\n-----END PUBLIC KEY-----\n" + } + } + }, + "roles": { + "root": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "snapshot": { + "keyids": [ + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "timestamp": { + "keyids": [ + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a" + ], + "threshold": 1 + } + }, + "consistent_snapshot": true + }, + "signatures": [ + { + "keyid": "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + }, + { + "keyid": "2f64fb5eac0cf94dd39bb45308b98920055e9a0d8e012a7220787834c60aef97", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "eaf22372f417dd618a46f6c627dbc276e9fd30a004fc94f9be946e73f8bd090b", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "f505595165a177a41750a8e864ed1719b1edfccd5a426fd2c0ffda33ce7ff209", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "75e867ab10e121fdef32094af634707f43ddd79c6bab8ad6c5ab9f03f4ea8c90", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + } + ] +} \ No newline at end of file diff --git a/examples/multirepo/repository/targets/staging/root.json b/examples/multirepo/repository/targets/staging/root.json new file mode 100644 index 00000000..38f80f94 --- /dev/null +++ b/examples/multirepo/repository/targets/staging/root.json @@ -0,0 +1,156 @@ +{ + "signed": { + "_type": "root", + "spec_version": "1.0", + "version": 5, + "expires": "2023-04-18T18:13:43Z", + "keys": { + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEXsz3SZXFb8jMV42j6pJlyjbjR8K\nN3Bwocexq6LMIb5qsWKOQvLN16NUefLc4HswOoumRsVVaajSpQS6fobkRw==\n-----END PUBLIC KEY-----\n" + } + }, + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0ghrh92Lw1Yr3idGV5WqCtMDB8Cx\n+D8hdC4w2ZLNIplVRoVGLskYa3gheMyOjiJ8kPi15aQ2//7P+oj7UvJPGw==\n-----END PUBLIC KEY-----\n" + } + }, + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELrWvNt94v4R085ELeeCMxHp7PldF\n0/T1GxukUh2ODuggLGJE0pc1e8CSBf6CS91Fwo9FUOuRsjBUld+VqSyCdQ==\n-----END PUBLIC KEY-----\n" + } + }, + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEinikSsAQmYkNeH5eYq/CnIzLaacO\nxlSaawQDOwqKy/tCqxq5xxPSJc21K4WIhs9GyOkKfzueY3GILzcMJZ4cWw==\n-----END PUBLIC KEY-----\n" + } + }, + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWRiGr5+j+3J5SsH+Ztr5nE2H2wO7\nBV+nO3s93gLca18qTOzHY1oWyAGDykMSsGTUBSt9D+An0KfKsD2mfSM42Q==\n-----END PUBLIC KEY-----\n" + } + }, + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzBzVOmHCPojMVLSI364WiiV8NPrD\n6IgRxVliskz/v+y3JER5mcVGcONliDcWMC5J2lfHmjPNPhb4H7xm8LzfSA==\n-----END PUBLIC KEY-----\n" + } + }, + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c": { + "keytype": "ecdsa-sha2-nistp256", + "scheme": "ecdsa-sha2-nistp256", + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy8XKsmhBYDI8Jc0GwzBxeKax0cm5\nSTKEU65HPFunUn41sT8pi0FjM4IkHz/YUmwmLUO0Wt7lxhj6BkLIK4qYAw==\n-----END PUBLIC KEY-----\n" + } + } + }, + "roles": { + "root": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "snapshot": { + "keyids": [ + "45b283825eb184cabd582eb17b74fc8ed404f68cf452acabdad2ed6f90ce216b" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "f5312f542c21273d9485a49394386c4575804770667f2ddb59b3bf0669fddd2f", + "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de" + ], + "threshold": 3 + }, + "timestamp": { + "keyids": [ + "e1863ba02070322ebc626dcecf9d881a3a38c35c3b41a83765b6ad6c37eaec2a" + ], + "threshold": 1 + } + }, + "consistent_snapshot": true + }, + "signatures": [ + { + "keyid": "ff51e17fcf253119b7033f6f57512631da4a0969442afcf9fc8b141c7f2be99c", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "25a0eb450fd3ee2bd79218c963dce3f1cc6118badf251bf149f0bd07d5cabe99", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "7f7513b25429a64473e10ce3ad2f3da372bbdd14b65d07bbaf547e7c8bbbe62b", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "2e61cd0cbf4a8f45809bda9f7f78c0d33ad11842ff94ae340873e2664dc843de", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + }, + { + "keyid": "2f64fb5eac0cf94dd39bb45308b98920055e9a0d8e012a7220787834c60aef97", + "sig": "3045022100fc1c2be509ce50ea917bbad1d9efe9d96c8c2ebea04af2717aa3d9c6fe617a75022012eef282a19f2d8bd4818aa333ef48a06489f49d4d34a20b8fe8fc867bb25a7a" + }, + { + "keyid": "eaf22372f417dd618a46f6c627dbc276e9fd30a004fc94f9be946e73f8bd090b", + "sig": "30450221008a4392ae5057fc00778b651e61fea244766a4ae58db84d9f1d3810720ab0f3b702207c49e59e8031318caf02252ecea1281cecc1e5986c309a9cef61f455ecf7165d" + }, + { + "keyid": "f505595165a177a41750a8e864ed1719b1edfccd5a426fd2c0ffda33ce7ff209", + "sig": "3046022100da1b8dc5d53aaffbbfac98de3e23ee2d2ad3446a7bed09fac0f88bae19be2587022100b681c046afc3919097dfe794e0d819be891e2e850aade315bec06b0c4dea221b" + }, + { + "keyid": "75e867ab10e121fdef32094af634707f43ddd79c6bab8ad6c5ab9f03f4ea8c90", + "sig": "3046022100b534e0030e1b271133ecfbdf3ba9fbf3becb3689abea079a2150afbb63cdb7c70221008c39a718fd9495f249b4ab8788d5b9dc269f0868dbe38b272f48207359d3ded9" + } + ] +} \ No newline at end of file diff --git a/examples/repository/basic_repository.go b/examples/repository/basic_repository.go new file mode 100644 index 00000000..bd73e247 --- /dev/null +++ b/examples/repository/basic_repository.go @@ -0,0 +1,593 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package main + +import ( + "crypto" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/rsa" + "fmt" + "os" + "path/filepath" + "time" + + "github.com/sigstore/sigstore/pkg/signature" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/repository" + "golang.org/x/crypto/ed25519" +) + +// A TUF repository example using the low-level TUF Metadata API. + +// The example code in this file demonstrates how to *manually* create and +// maintain repository metadata using the low-level Metadata API. +// Contents: +// * creation of top-level metadata +// * target file handling +// * consistent snapshots +// * key management +// * top-level delegation and signing thresholds +// * metadata verification +// * target delegation +// * in-band and out-of-band metadata signing +// * writing and reading metadata files +// * root key rotation + +// NOTE: Metadata files will be written to a 'tmp*'-directory in CWD. + +func main() { + // Create top-level metadata + // ========================= + // Every TUF repository has at least four roles, i.e. the top-level roles + // 'targets', 'snapshot', 'timestamp' and 'root'. Below we will discuss their + // purpose, show how to create the corresponding metadata, and how to use them + // to provide integrity, consistency and freshness for the files TUF aims to + // protect, i.e. target files. + + // Define containers for metadata objects and cryptographic keys created below. This + // allows us to sign and write metadata in a batch more easily. The repository.New() instance + // doesn't provide anything else yet other than serving as a placeholder for all metadata. + roles := repository.New() + keys := map[string]ed25519.PrivateKey{} + + // Targets (integrity) + // ------------------- + // The targets role guarantees integrity for the files that TUF aims to protect, + // i.e. target files. It does so by listing the relevant target files, along + // with their hash and length. + targets := metadata.Targets(helperExpireIn(7)) + roles.SetTargets("targets", targets) + + // For the purpose of this example we use the top-level targets role to protect + // the integrity of this very example script. The metadata entry contains the + // hash and length of this file at the local path. In addition, it specifies the + // 'target path', which a client uses to locate the target file relative to a + // configured mirror base URL. + // |----base URL---||--------target path--------| + // e.g. tuf-examples.org/examples/basic_repository.py + targetPath, localPath := helperGetPathForTarget("basic_repository.go") + targetFileInfo, err := metadata.TargetFile().FromFile(localPath, "sha256") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "generating target file info failed", err)) + } + roles.Targets("targets").Signed.Targets[targetPath] = targetFileInfo + + // Snapshot (consistency) + // ---------------------- + // The snapshot role guarantees consistency of the entire repository. It does so + // by listing all available targets metadata files at their latest version. This + // becomes relevant, when there are multiple targets metadata files in a + // repository and we want to protect the client against mix-and-match attacks. + snapshot := metadata.Snapshot(helperExpireIn(7)) + roles.SetSnapshot(snapshot) + + // Timestamp (freshness) + // --------------------- + // The timestamp role guarantees freshness of the repository metadata. It does + // so by listing the latest snapshot (which in turn lists all the latest + // targets) metadata. A short expiration interval requires the repository to + // regularly issue new timestamp metadata and thus protects the client against + // freeze attacks. + // Note that snapshot and timestamp use the same generic wireline metadata + // format. + timestamp := metadata.Timestamp(helperExpireIn(1)) + roles.SetTimestamp(timestamp) + + // Root (root of trust) + // -------------------- + // The root role serves as root of trust for all top-level roles, including + // itself. It does so by mapping cryptographic keys to roles, i.e. the keys that + // are authorized to sign any top-level role metadata, and signing thresholds, + // i.e. how many authorized keys are required for a given role (see 'roles' + // field). This is called top-level delegation. + + // In addition, root provides all public keys to verify these signatures (see + // 'keys' field), and a configuration parameter that describes whether a + // repository uses consistent snapshots (see section 'Persist metadata' below + // for more details). + + // Create root metadata object + root := metadata.Root(helperExpireIn(365)) + roles.SetRoot(root) + + // For this example, we generate one private key of type 'ed25519' for each top-level role + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + _, private, err := ed25519.GenerateKey(nil) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key generation failed", err)) + } + keys[name] = private + key, err := metadata.KeyFromPublicKey(private.Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key conversion failed", err)) + } + err = roles.Root().Signed.AddKey(key, name) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "adding key to root failed", err)) + } + } + // NOTE: We only need the public part to populate root, so it is possible to use + // out-of-band mechanisms to generate key pairs and only expose the public part + // to whoever maintains the root role. As a matter of fact, the very purpose of + // signature thresholds is to avoid having private keys all in one place. + + // Signature thresholds + // -------------------- + // Given the importance of the root role, it is highly recommended to require a + // threshold of multiple keys to sign root metadata. For this example we + // generate another root key (you can pretend it's out-of-band) and increase the + // required signature threshold. + _, anotherRootKey, err := ed25519.GenerateKey(nil) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key generation failed", err)) + } + + anotherKey, err := metadata.KeyFromPublicKey(anotherRootKey.Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key conversion failed", err)) + } + err = roles.Root().Signed.AddKey(anotherKey, "root") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "adding another key to root failed", err)) + } + roles.Root().Signed.Roles["root"].Threshold = 2 + + // Sign top-level metadata (in-band) + // ================================= + // In this example we have access to all top-level signing keys, so we can use + // them to create and add a signature for each role metadata. + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + key := keys[name] + signer, err := signature.LoadSigner(key, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading a signer failed", err)) + } + switch name { + case "targets": + _, err = roles.Targets("targets").Sign(signer) + case "snapshot": + _, err = roles.Snapshot().Sign(signer) + case "timestamp": + _, err = roles.Timestamp().Sign(signer) + case "root": + _, err = roles.Root().Sign(signer) + } + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "metadata signing failed", err)) + } + } + + // Persist metadata (consistent snapshot) + // ====================================== + // It is time to publish the first set of metadata for a client to safely + // download the target file that we have registered for this example repository. + + // For the purpose of this example we will follow the consistent snapshot naming + // convention for all metadata. This means that each metadata file, must be + // prefixed with its version number, except for timestamp. The naming convention + // also affects the target files, but we don't cover this in the example. See + // the TUF specification for more details: + // https://theupdateframework.github.io/specification/latest/#writing-consistent-snapshots + + // Also note that the TUF specification does not mandate a wireline format. In + // this demo we use a non-compact JSON format and store all metadata in + // temporary directory at CWD for review. + cwd, err := os.Getwd() + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "getting cwd failed", err)) + } + tmpDir, err := os.MkdirTemp(cwd, "tmp") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "creating a temporary folder failed", err)) + } + + for _, name := range []string{"targets", "snapshot", "timestamp", "root"} { + switch name { + case "targets": + filename := fmt.Sprintf("%d.%s.json", roles.Targets("targets").Signed.Version, name) + err = roles.Targets("targets").ToFile(filepath.Join(tmpDir, filename), true) + case "snapshot": + filename := fmt.Sprintf("%d.%s.json", roles.Snapshot().Signed.Version, name) + err = roles.Snapshot().ToFile(filepath.Join(tmpDir, filename), true) + case "timestamp": + filename := fmt.Sprintf("%s.json", name) + err = roles.Timestamp().ToFile(filepath.Join(tmpDir, filename), true) + case "root": + filename := fmt.Sprintf("%d.%s.json", roles.Root().Signed.Version, name) + err = roles.Root().ToFile(filepath.Join(tmpDir, filename), true) + } + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "saving metadata to file failed", err)) + } + } + + // Threshold signing (out-of-band) + // =============================== + // As mentioned above, using signature thresholds usually entails that not all + // signing keys for a given role are in the same place. Let's briefly pretend + // this is the case for the second root key we registered above, and we are now + // on that key owner's computer. All the owner has to do is read the metadata + // file, sign it, and write it back to the same file, and this can be repeated + // until the threshold is satisfied. + _, err = roles.Root().FromFile(filepath.Join(tmpDir, "1.root.json")) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading root metadata from file failed", err)) + } + outofbandSigner, err := signature.LoadSigner(anotherRootKey, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading a signer failed", err)) + } + _, err = roles.Root().Sign(outofbandSigner) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing root failed", err)) + } + err = roles.Root().ToFile(filepath.Join(tmpDir, "1.root.json"), true) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "saving root metadata to file failed", err)) + } + + // Verify that metadata is signed correctly + // ==================================== + // Verify root + err = roles.Root().VerifyDelegate("root", roles.Root()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying root metadata failed", err)) + } + + // Verify targets + err = roles.Root().VerifyDelegate("targets", roles.Targets("targets")) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying targets metadata failed", err)) + } + + // Verify snapshot + err = roles.Root().VerifyDelegate("snapshot", roles.Snapshot()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying snapshot metadata failed", err)) + } + + // Verify timestamp + err = roles.Root().VerifyDelegate("timestamp", roles.Timestamp()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying timestamp metadata failed", err)) + } + + // Targets delegation + // ================== + // Similar to how the root role delegates responsibilities about integrity, + // consistency and freshness to the corresponding top-level roles, a targets + // role may further delegate its responsibility for target files (or a subset + // thereof) to other targets roles. This allows creation of a granular trust + // hierarchy, and further reduces the impact of a single role compromise. + + // In this example the top-level targets role trusts a new "go-scripts" + // targets role to provide integrity for any target file that ends with ".go". + delegateeName := "go-scripts" + _, delegateePrivateKey, err := ed25519.GenerateKey(nil) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key generation failed", err)) + } + keys[delegateeName] = delegateePrivateKey + + // Delegatee + // --------- + // Create a new targets role, akin to how we created top-level targets above, and + // add target file info from above according to the delegatee's responsibility. + delegatee := metadata.Targets(helperExpireIn(7)) + delegatee.Signed.Targets[targetPath] = targetFileInfo + roles.SetTargets(delegateeName, delegatee) + + // Delegator + // --------- + // Akin to top-level delegation, the delegator expresses its trust in the + // delegatee by authorizing a threshold of cryptographic keys to provide + // signatures for the delegatee metadata. It also provides the corresponding + // public key store. + // The delegation info defined by the delegator further requires the provision + // of a unique delegatee name and constraints about the target files the + // delegatee is responsible for, e.g. a list of path patterns. For details about + // all configuration parameters see + // https://theupdateframework.github.io/specification/latest/#delegations + delegateeKey, _ := metadata.KeyFromPublicKey(delegateePrivateKey.Public()) + roles.Targets("targets").Signed.Delegations = &metadata.Delegations{ + Keys: map[string]*metadata.Key{ + delegateeKey.ID(): delegateeKey, + }, + Roles: []metadata.DelegatedRole{ + { + Name: delegateeName, + KeyIDs: []string{delegateeKey.ID()}, + Threshold: 1, + Terminating: true, + Paths: []string{"*.go"}, + }, + }, + } + + // Remove target file info from top-level targets (delegatee is now responsible) + delete(roles.Targets("targets").Signed.Targets, targetPath) + + // Increase expiry (delegators should be less volatile) + roles.Targets("targets").Signed.Expires = helperExpireIn(365) + + // Snapshot + Timestamp + Sign + Persist + // ------------------------------------- + // In order to publish a new consistent set of metadata, we need to update + // dependent roles (snapshot, timestamp) accordingly, bumping versions of all + // changed metadata. + + // Bump targets version + roles.Targets("targets").Signed.Version += 1 + + // Update snapshot to account for changed and new targets(delegatee) metadata + roles.Snapshot().Signed.Meta["targets.json"] = metadata.MetaFile(roles.Targets("targets").Signed.Version) + roles.Snapshot().Signed.Meta[fmt.Sprintf("%s.json", delegateeName)] = metadata.MetaFile(1) + roles.Snapshot().Signed.Version += 1 + + // Update timestamp to account for changed snapshot metadata + roles.Timestamp().Signed.Meta["snapshot.json"] = metadata.MetaFile(roles.Snapshot().Signed.Version) + roles.Timestamp().Signed.Version += 1 + + // Sign and write metadata for all changed roles, i.e. all but root + for _, name := range []string{"targets", "snapshot", "timestamp", delegateeName} { + key := keys[name] + signer, err := signature.LoadSigner(key, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading a signer failed", err)) + } + switch name { + case "targets": + roles.Targets("targets").ClearSignatures() + _, err = roles.Targets("targets").Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing metadata failed", err)) + } + filename := fmt.Sprintf("%d.%s.json", roles.Targets("targets").Signed.Version, name) + err = roles.Targets("targets").ToFile(filepath.Join(tmpDir, filename), true) + case "snapshot": + roles.Snapshot().ClearSignatures() + _, err = roles.Snapshot().Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing metadata failed", err)) + } + filename := fmt.Sprintf("%d.%s.json", roles.Snapshot().Signed.Version, name) + err = roles.Snapshot().ToFile(filepath.Join(tmpDir, filename), true) + case "timestamp": + roles.Timestamp().ClearSignatures() + _, err = roles.Timestamp().Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing metadata failed", err)) + } + filename := fmt.Sprintf("%s.json", name) + err = roles.Timestamp().ToFile(filepath.Join(tmpDir, filename), true) + case delegateeName: + roles.Targets(delegateeName).ClearSignatures() + _, err = roles.Targets(delegateeName).Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing metadata failed", err)) + } + filename := fmt.Sprintf("%d.%s.json", roles.Targets(delegateeName).Signed.Version, name) + err = roles.Targets(delegateeName).ToFile(filepath.Join(tmpDir, filename), true) + } + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "saving metadata to file failed", err)) + } + } + + // Root key rotation (recover from a compromise / key loss) + // ======================================================== + // TUF makes it easy to recover from a key compromise in-band. Given the trust + // hierarchy through top-level and targets delegation you can easily + // replace compromised or lost keys for any role using the delegating role, even + // for the root role. + // However, since root authorizes its own keys, it always has to be signed with + // both the threshold of keys from the previous version and the threshold of + // keys from the new version. This establishes a trusted line of continuity. + + // In this example we will replace a root key, and sign a new version of root + // with the threshold of old and new keys. Since one of the previous root keys + // remains in place, it can be used to count towards the old and new threshold. + _, newRootKey, err := ed25519.GenerateKey(nil) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key generation failed", err)) + } + oldRootKey, err := metadata.KeyFromPublicKey(keys["root"].Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key conversion failed", err)) + } + err = roles.Root().Signed.RevokeKey(oldRootKey.ID(), "root") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "revoking key failed", err)) + } + // Add new key for root + newRootKeyTUF, err := metadata.KeyFromPublicKey(newRootKey.Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "key conversion failed", err)) + } + err = roles.Root().Signed.AddKey(newRootKeyTUF, "root") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "adding key to root failed", err)) + } + roles.Root().Signed.Version += 1 + roles.Root().ClearSignatures() + + // Sign root + for _, k := range []ed25519.PrivateKey{keys["root"], anotherRootKey, newRootKey} { + signer, err := signature.LoadSigner(k, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading a signer failed", err)) + } + _, err = roles.Root().Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing root failed", err)) + } + } + filename := fmt.Sprintf("%d.%s.json", roles.Root().Signed.Version, "root") + err = roles.Root().ToFile(filepath.Join(tmpDir, filename), true) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "saving root to file failed", err)) + } + + // Verify again that metadata is signed correctly + // ============================================== + // Verify root + err = roles.Root().VerifyDelegate("root", roles.Root()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying root metadata failed", err)) + } + + // Verify targets + err = roles.Root().VerifyDelegate("targets", roles.Targets("targets")) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying targets metadata failed", err)) + } + + // Verify snapshot + err = roles.Root().VerifyDelegate("snapshot", roles.Snapshot()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying snapshot metadata failed", err)) + } + + // Verify timestamp + err = roles.Root().VerifyDelegate("timestamp", roles.Timestamp()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying timestamp metadata failed", err)) + } + + // Verify delegatee + err = roles.Targets("targets").VerifyDelegate(delegateeName, roles.Targets(delegateeName)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying delegatee metadata failed", err)) + } + + // Use a mixture of key types + // ========================== + // Create an RSA key + anotherRootKeyRSA, _ := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "RSA key generation failed", err)) + } + anotherKeyRSA, err := metadata.KeyFromPublicKey(anotherRootKeyRSA.Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "RSA key conversion failed", err)) + } + + // Create an ECDSA key + anotherRootKeyECDSA, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "ECDSA key generation failed", err)) + } + anotherKeyECDSA, err := metadata.KeyFromPublicKey(anotherRootKeyECDSA.Public()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "ECDSA key conversion failed", err)) + } + + // Add the RSA key to root keys + err = roles.Root().Signed.AddKey(anotherKeyRSA, "root") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "adding RSA key to root failed", err)) + } + + // Add the ECDSA key to root keys + err = roles.Root().Signed.AddKey(anotherKeyECDSA, "root") + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "adding ECDSA key to root failed", err)) + } + + // Clear existing signatures, bump version and threshold + roles.Root().Signed.Roles["root"].Threshold = 4 + roles.Root().Signed.Version += 1 + roles.Root().ClearSignatures() + + // Sign root with existing ed25519 keys + for _, k := range []ed25519.PrivateKey{keys["root"], anotherRootKey, newRootKey} { + signer, err := signature.LoadSigner(k, crypto.Hash(0)) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading a signer failed", err)) + } + _, err = roles.Root().Sign(signer) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing root failed", err)) + } + } + + // Sign root with the new RSA and ECDSA keys + outofbandSignerRSA, err := signature.LoadSigner(anotherRootKeyRSA, crypto.SHA256) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading RSA signer failed", err)) + } + outofbandSignerECDSA, err := signature.LoadSigner(anotherRootKeyECDSA, crypto.SHA256) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "loading ECDSA signer failed", err)) + } + _, err = roles.Root().Sign(outofbandSignerRSA) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing root failed", err)) + } + _, err = roles.Root().Sign(outofbandSignerECDSA) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "signing root failed", err)) + } + + // Verify that root is signed correctly + // ==================================== + err = roles.Root().VerifyDelegate("root", roles.Root()) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "verifying root metadata failed", err)) + } + + // Save root to file + filename = fmt.Sprintf("%d.%s.json", roles.Root().Signed.Version, "root") + err = roles.Root().ToFile(filepath.Join(tmpDir, filename), true) + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "saving root to file failed", err)) + } + fmt.Println("Done! Metadata files location:", tmpDir) +} + +// helperExpireIn returns time offset by days +func helperExpireIn(days int) time.Time { + return time.Now().AddDate(0, 0, days).UTC() +} + +// helperGetPathForTarget returns local and target paths for target +func helperGetPathForTarget(name string) (string, string) { + cwd, err := os.Getwd() + if err != nil { + panic(fmt.Sprintln("basic_repository.go:", "getting cwd failed", err)) + } + // _, dir := filepath.Split(cwd) + // return filepath.Join(dir, name), filepath.Join(cwd, name) + return name, filepath.Join(cwd, name) +} diff --git a/go.mod b/go.mod index c77ac70c..2617d4af 100644 --- a/go.mod +++ b/go.mod @@ -1,25 +1,32 @@ -module github.com/theupdateframework/go-tuf +module github.com/theupdateframework/go-tuf/v2 -go 1.20 +go 1.21.5 require ( - github.com/dustin/go-humanize v1.0.1 - github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e - github.com/google/gofuzz v1.2.0 + github.com/go-logr/stdr v1.2.2 github.com/secure-systems-lab/go-securesystemslib v0.8.0 + github.com/sigstore/sigstore v1.8.0 + github.com/sirupsen/logrus v1.9.3 + github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 - github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d golang.org/x/crypto v0.18.0 - golang.org/x/term v0.16.0 - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 + golang.org/x/sys v0.16.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/kr/pretty v0.2.1 // indirect - github.com/kr/text v0.1.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/google/go-containerregistry v0.17.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/sys v0.16.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect + golang.org/x/term v0.16.0 // indirect + google.golang.org/grpc v1.56.3 // indirect + gopkg.in/go-jose/go-jose.v2 v2.6.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 880d2e0e..0694a14b 100644 --- a/go.sum +++ b/go.sum @@ -1,140 +1,93 @@ -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e h1:Ss/B3/5wWRh8+emnK0++g5zQzwDTi30W10pKxKc4JXI= -github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e/go.mod h1:HyVoz1Mz5Co8TFO8EupIdlcpwShBmY98dkT2xeHkvEI= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.17.0 h1:5p+zYs/R4VGHkhyvgWurWrpJ2hW4Vv9fQI+GzdcwXLk= +github.com/google/go-containerregistry v0.17.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs= +github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e h1:RLTpX495BXToqxpM90Ws4hXEo4Wfh81jr9DX1n/4WOo= +github.com/letsencrypt/boulder v0.0.0-20230907030200-6d76a0f91e1e/go.mod h1:EAuqr9VFWxBi9nD5jc/EA2MT1RFty9288TF6zdtYoCU= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= +github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= +github.com/sigstore/sigstore v1.8.0 h1:sSRWXv1JiDsK4T2wNWVYcvKCgxcSrhQ/QUJxsfCO4OM= +github.com/sigstore/sigstore v1.8.0/go.mod h1:l12B1gFlLIpBIVeqk/q1Lb+6YSOGNuN3xLExIjYH+qc= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= +github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs= +go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= +go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= +go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= +go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/go-jose/go-jose.v2 v2.6.1 h1:qEzJlIDmG9q5VO0M/o8tGS65QMHMS1w01TQJB1VPJ4U= +gopkg.in/go-jose/go-jose.v2 v2.6.1/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/fsutil/fsutil.go b/internal/fsutil/fsutil.go deleted file mode 100644 index 138f2103..00000000 --- a/internal/fsutil/fsutil.go +++ /dev/null @@ -1,23 +0,0 @@ -// Package fsutil defiens a set of internal utility functions used to -// interact with the file system. -package fsutil - -import ( - "fmt" - "os" - "path/filepath" -) - -// IsMetaFile tests wheter a DirEntry appears to be a metadata file or not. -func IsMetaFile(e os.DirEntry) (bool, error) { - if e.IsDir() || filepath.Ext(e.Name()) != ".json" { - return false, nil - } - - info, err := e.Info() - if err != nil { - return false, fmt.Errorf("error retrieving FileInfo for %s: %w", e.Name(), err) - } - - return info.Mode().IsRegular(), nil -} diff --git a/internal/fsutil/perm.go b/internal/fsutil/perm.go deleted file mode 100644 index f94add60..00000000 --- a/internal/fsutil/perm.go +++ /dev/null @@ -1,30 +0,0 @@ -//go:build !windows -// +build !windows - -package fsutil - -import ( - "fmt" - "os" -) - -// EnsureMaxPermissions tests the provided file info, returning an error if the -// file's permission bits contain excess permissions not set in maxPerms. -// -// For example, a file with permissions -rw------- will successfully validate -// with maxPerms -rw-r--r-- or -rw-rw-r--, but will not validate with maxPerms -// -r-------- (due to excess --w------- permission) or --w------- (due to -// excess -r-------- permission). -// -// Only permission bits of the file modes are considered. -func EnsureMaxPermissions(fi os.FileInfo, maxPerms os.FileMode) error { - gotPerm := fi.Mode().Perm() - forbiddenPerms := (^maxPerms).Perm() - excessPerms := gotPerm & forbiddenPerms - - if excessPerms != 0 { - return fmt.Errorf("permission bits for file %v failed validation: want at most %v, got %v with excess perms %v", fi.Name(), maxPerms.Perm(), gotPerm, excessPerms) - } - - return nil -} diff --git a/internal/fsutil/perm_test.go b/internal/fsutil/perm_test.go deleted file mode 100644 index f80ef94a..00000000 --- a/internal/fsutil/perm_test.go +++ /dev/null @@ -1,69 +0,0 @@ -//go:build !windows -// +build !windows - -package fsutil - -import ( - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestEnsureMaxPermissions(t *testing.T) { - tmp := t.TempDir() - p := filepath.Join(tmp, "file.txt") - - // Start with 0644 and change using os.Chmod so umask doesn't interfere. - err := os.WriteFile(p, []byte(`AAA`), 0644) - assert.NoError(t, err) - - // Check matching (1) - err = os.Chmod(p, 0464) - assert.NoError(t, err) - fi, err := os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.FileMode(0464)) - assert.NoError(t, err) - - // Check matching (2) - err = os.Chmod(p, 0642) - assert.NoError(t, err) - fi, err = os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.FileMode(0642)) - assert.NoError(t, err) - - // Check matching with file mode bits - err = os.Chmod(p, 0444) - assert.NoError(t, err) - fi, err = os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.ModeSymlink|os.ModeAppend|os.FileMode(0444)) - assert.NoError(t, err) - - // Check not matching (1) - err = os.Chmod(p, 0444) - assert.NoError(t, err) - fi, err = os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.FileMode(0400)) - assert.Error(t, err) - - // Check not matching (2) - err = os.Chmod(p, 0444) - assert.NoError(t, err) - fi, err = os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.FileMode(0222)) - assert.Error(t, err) - - // Check matching due to more restrictive perms on file - err = os.Chmod(p, 0444) - assert.NoError(t, err) - fi, err = os.Stat(p) - assert.NoError(t, err) - err = EnsureMaxPermissions(fi, os.FileMode(0666)) - assert.NoError(t, err) -} diff --git a/internal/fsutil/perm_windows.go b/internal/fsutil/perm_windows.go deleted file mode 100644 index cecfee65..00000000 --- a/internal/fsutil/perm_windows.go +++ /dev/null @@ -1,17 +0,0 @@ -package fsutil - -import ( - "os" -) - -// EnsureMaxPermissions tests the provided file info to make sure the -// permission bits matches the provided. -// On Windows system the permission bits are not really compatible with -// UNIX-like permission bits. By setting the UNIX-like permission bits -// on a Windows system only read/write by all users can be achieved. -// See this issue for tracking and more details: -// https://github.com/theupdateframework/go-tuf/issues/360 -// Currently this method will always return nil. -func EnsureMaxPermissions(fi os.FileInfo, perm os.FileMode) error { - return nil -} diff --git a/internal/roles/roles.go b/internal/roles/roles.go deleted file mode 100644 index 0b134b2a..00000000 --- a/internal/roles/roles.go +++ /dev/null @@ -1,48 +0,0 @@ -package roles - -import ( - "strconv" - "strings" -) - -var TopLevelRoles = map[string]struct{}{ - "root": {}, - "targets": {}, - "snapshot": {}, - "timestamp": {}, -} - -func IsTopLevelRole(name string) bool { - _, ok := TopLevelRoles[name] - return ok -} - -func IsDelegatedTargetsRole(name string) bool { - return !IsTopLevelRole(name) -} - -func IsTopLevelManifest(name string) bool { - if IsVersionedManifest(name) { - var found bool - _, name, found = strings.Cut(name, ".") - if !found { - panic("expected a versioned manifest of the form x.role.json") - } - } - return IsTopLevelRole(strings.TrimSuffix(name, ".json")) -} - -func IsDelegatedTargetsManifest(name string) bool { - return !IsTopLevelManifest(name) -} - -func IsVersionedManifest(name string) bool { - parts := strings.Split(name, ".") - // Versioned manifests have the form "x.role.json" - if len(parts) < 3 { - return false - } - - _, err := strconv.Atoi(parts[0]) - return err == nil -} diff --git a/internal/roles/roles_test.go b/internal/roles/roles_test.go deleted file mode 100644 index 8af1b02c..00000000 --- a/internal/roles/roles_test.go +++ /dev/null @@ -1,54 +0,0 @@ -package roles - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestIsTopLevelRole(t *testing.T) { - assert.True(t, IsTopLevelRole("root")) - assert.True(t, IsTopLevelRole("targets")) - assert.True(t, IsTopLevelRole("timestamp")) - assert.True(t, IsTopLevelRole("snapshot")) - assert.False(t, IsTopLevelRole("bins")) -} - -func TestIsDelegatedTargetsRole(t *testing.T) { - assert.False(t, IsDelegatedTargetsRole("root")) - assert.False(t, IsDelegatedTargetsRole("targets")) - assert.False(t, IsDelegatedTargetsRole("timestamp")) - assert.False(t, IsDelegatedTargetsRole("snapshot")) - assert.True(t, IsDelegatedTargetsRole("deleg")) -} - -func TestIsTopLevelManifest(t *testing.T) { - assert.True(t, IsTopLevelManifest("root.json")) - assert.True(t, IsTopLevelManifest("1.root.json")) - assert.True(t, IsTopLevelManifest("targets.json")) - assert.True(t, IsTopLevelManifest("timestamp.json")) - assert.True(t, IsTopLevelManifest("snapshot.json")) - assert.True(t, IsTopLevelManifest("2.snapshot.json")) - assert.False(t, IsTopLevelManifest("bins.json")) - assert.False(t, IsTopLevelManifest("3.bins.json")) -} - -func TestIsDelegatedTargetsManifest(t *testing.T) { - assert.False(t, IsDelegatedTargetsManifest("root.json")) - assert.False(t, IsDelegatedTargetsManifest("1.root.json")) - assert.False(t, IsDelegatedTargetsManifest("targets.json")) - assert.False(t, IsDelegatedTargetsManifest("2.targets.json")) - assert.False(t, IsDelegatedTargetsManifest("timestamp.json")) - assert.False(t, IsDelegatedTargetsManifest("snapshot.json")) - assert.True(t, IsDelegatedTargetsManifest("bins.json")) - assert.True(t, IsDelegatedTargetsManifest("2.bins.json")) -} - -func TestIsVersionedManifest(t *testing.T) { - assert.False(t, IsVersionedManifest("a.b")) - assert.False(t, IsVersionedManifest("a.b.c")) - assert.False(t, IsVersionedManifest("a.b.json")) - assert.False(t, IsVersionedManifest("1.a")) - assert.True(t, IsVersionedManifest("1.a.json")) - assert.True(t, IsVersionedManifest("2.a.json")) -} diff --git a/internal/sets/strings.go b/internal/sets/strings.go deleted file mode 100644 index 7eee57d0..00000000 --- a/internal/sets/strings.go +++ /dev/null @@ -1,24 +0,0 @@ -package sets - -func StringSliceToSet(items []string) map[string]struct{} { - s := map[string]struct{}{} - for _, item := range items { - s[item] = struct{}{} - } - return s -} - -func StringSetToSlice(items map[string]struct{}) []string { - ret := []string{} - - for k := range items { - ret = append(ret, k) - } - - return ret -} - -func DeduplicateStrings(items []string) []string { - s := StringSliceToSet(items) - return StringSetToSlice(s) -} diff --git a/internal/sets/strings_test.go b/internal/sets/strings_test.go deleted file mode 100644 index 6e0b91d0..00000000 --- a/internal/sets/strings_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package sets - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestStringSliceToSet(t *testing.T) { - assert.Equal(t, - map[string]struct{}{ - "a": {}, - "b": {}, - "c": {}, - }, - StringSliceToSet([]string{"a", "c", "b", "c", "b"})) -} - -func TestStringSetToSlice(t *testing.T) { - assert.ElementsMatch(t, - []string{"a", "b", "c"}, - StringSetToSlice(map[string]struct{}{ - "a": {}, - "b": {}, - "c": {}, - }), - ) -} - -func TestDeduplicateStrings(t *testing.T) { - assert.ElementsMatch(t, - []string{"a", "b", "c"}, - DeduplicateStrings([]string{"a", "c", "b", "c", "b"}), - ) -} diff --git a/internal/signer/sort.go b/internal/signer/sort.go deleted file mode 100644 index 777e201e..00000000 --- a/internal/signer/sort.go +++ /dev/null @@ -1,49 +0,0 @@ -package signer - -import ( - "sort" - - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -// ByIDs implements sort.Interface for []keys.Signer based on -// the sorted public IDs() for each Signer. This facilitates -// deterministic order of signatures, which prevents tests -// that use fixtures from being flaky. -type ByIDs []keys.Signer - -func (b ByIDs) Len() int { - return len(b) -} - -func (b ByIDs) Swap(i, j int) { - b[i], b[j] = b[j], b[i] -} - -func (b ByIDs) Less(i, j int) bool { - ids := b[i].PublicData().IDs() - iIDs := make([]string, len(ids)) - copy(iIDs, ids) - sort.Strings(iIDs) - - ids = b[j].PublicData().IDs() - jIDs := make([]string, len(ids)) - copy(jIDs, ids) - sort.Strings(jIDs) - - minLen := len(iIDs) - if len(jIDs) < minLen { - minLen = len(jIDs) - } - - // Compare iIDs[:minLen] to jIDs[:minLen] element-wise. - for c := 0; c < minLen; c++ { - if iIDs[c] == jIDs[c] { - continue - } - return iIDs[c] < jIDs[c] - } - - // iIDs[:minLen] is equal to jIDs[:minLen], so sort based on length. - return len(iIDs) < len(jIDs) -} diff --git a/internal/signer/sort_test.go b/internal/signer/sort_test.go deleted file mode 100644 index afda5f87..00000000 --- a/internal/signer/sort_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package signer_test - -import ( - "encoding/json" - "sort" - "testing" - - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/signer" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -type mockSigner struct { - value json.RawMessage -} - -func (s *mockSigner) MarshalPrivateKey() (*data.PrivateKey, error) { - panic("not implemented") -} - -func (s *mockSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { - panic("not implemented") -} - -func (s *mockSigner) PublicData() *data.PublicKey { - return &data.PublicKey{ - Type: "mock", - Scheme: "mock", - Algorithms: []data.HashAlgorithm{"mock"}, - Value: s.value, - } -} -func (s *mockSigner) SignMessage(message []byte) ([]byte, error) { - panic("not implemented") -} - -func TestSignerSortByIDs(t *testing.T) { - s1 := &mockSigner{ - value: json.RawMessage(`{"mock": 1}`), - } - s2 := &mockSigner{ - value: json.RawMessage(`{"mock": 2}`), - } - s3 := &mockSigner{ - value: json.RawMessage(`{"mock": 3}`), - } - s4 := &mockSigner{ - value: json.RawMessage(`{"mock": 4}`), - } - s5 := &mockSigner{ - value: json.RawMessage(`{"mock": 5}`), - } - - s := []keys.Signer{ - s1, s2, s3, s4, s5, - } - - sort.Sort(signer.ByIDs(s)) - - signerIDs := []string{} - - for i, signer := range s { - ids := signer.PublicData().IDs() - if len(ids) != 1 { - t.Errorf("Signer %v IDs %v should have length 1", i, ids) - } - signerIDs = append(signerIDs, ids[0]) - } - - if !sort.StringsAreSorted(signerIDs) { - t.Errorf("Signers incorrectly sorted: %+v", signerIDs) - } -} diff --git a/local_store.go b/local_store.go deleted file mode 100644 index b59721e6..00000000 --- a/local_store.go +++ /dev/null @@ -1,741 +0,0 @@ -package tuf - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/fs" - "log" - "os" - "path/filepath" - "strings" - - "github.com/secure-systems-lab/go-securesystemslib/encrypted" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/fsutil" - "github.com/theupdateframework/go-tuf/internal/sets" - "github.com/theupdateframework/go-tuf/pkg/keys" - "github.com/theupdateframework/go-tuf/util" -) - -type LocalStore interface { - // GetMeta returns a map from metadata file names (e.g. root.json) to their raw JSON payload or an error. - GetMeta() (map[string]json.RawMessage, error) - - // SetMeta is used to update a metadata file name with a JSON payload. - SetMeta(name string, meta json.RawMessage) error - - // WalkStagedTargets calls targetsFn for each staged target file in paths. - // If paths is empty, all staged target files will be walked. - WalkStagedTargets(paths []string, targetsFn TargetsWalkFunc) error - - // FileIsStaged determines if a metadata file is currently staged, to avoid incrementing - // version numbers repeatedly while staged. - FileIsStaged(filename string) bool - - // Commit is used to publish staged files to the repository - // - // This will also reset the staged meta to signal incrementing version numbers. - // TUF 1.0 requires that the root metadata version numbers in the repository does not - // gaps. To avoid this, we will only increment the number once until we commit. - Commit(bool, map[string]int64, map[string]data.Hashes) error - - // GetSigners return a list of signers for a role. - // This may include revoked keys, so the signers should not - // be used without filtering. - GetSigners(role string) ([]keys.Signer, error) - - // SaveSigner adds a signer to a role. - SaveSigner(role string, signer keys.Signer) error - - // SignersForRole return a list of signing keys for a role. - SignersForKeyIDs(keyIDs []string) []keys.Signer - - // Clean is used to remove all staged manifests. - Clean() error -} - -type PassphraseChanger interface { - // ChangePassphrase changes the passphrase for a role keys file. - ChangePassphrase(string) error -} - -func MemoryStore(meta map[string]json.RawMessage, files map[string][]byte) LocalStore { - if meta == nil { - meta = make(map[string]json.RawMessage) - } - return &memoryStore{ - meta: meta, - stagedMeta: make(map[string]json.RawMessage), - files: files, - signerForKeyID: make(map[string]keys.Signer), - keyIDsForRole: make(map[string][]string), - } -} - -type memoryStore struct { - meta map[string]json.RawMessage - stagedMeta map[string]json.RawMessage - files map[string][]byte - - signerForKeyID map[string]keys.Signer - keyIDsForRole map[string][]string -} - -func (m *memoryStore) GetMeta() (map[string]json.RawMessage, error) { - meta := make(map[string]json.RawMessage, len(m.meta)+len(m.stagedMeta)) - for key, value := range m.meta { - meta[key] = value - } - for key, value := range m.stagedMeta { - meta[key] = value - } - return meta, nil -} - -func (m *memoryStore) SetMeta(name string, meta json.RawMessage) error { - m.stagedMeta[name] = meta - return nil -} - -func (m *memoryStore) FileIsStaged(name string) bool { - _, ok := m.stagedMeta[name] - return ok -} - -func (m *memoryStore) WalkStagedTargets(paths []string, targetsFn TargetsWalkFunc) error { - if len(paths) == 0 { - for path, data := range m.files { - if err := targetsFn(path, bytes.NewReader(data)); err != nil { - return err - } - } - return nil - } - - for _, path := range paths { - data, ok := m.files[path] - if !ok { - return ErrFileNotFound{path} - } - if err := targetsFn(path, bytes.NewReader(data)); err != nil { - return err - } - } - return nil -} - -func (m *memoryStore) Commit(consistentSnapshot bool, versions map[string]int64, hashes map[string]data.Hashes) error { - for name, meta := range m.stagedMeta { - paths := computeMetadataPaths(consistentSnapshot, name, versions) - for _, path := range paths { - m.meta[path] = meta - } - // Remove from staged metadata. - // This will prompt incrementing version numbers again now that we've - // successfully committed the metadata to the local store. - delete(m.stagedMeta, name) - } - return nil -} - -func (m *memoryStore) GetSigners(role string) ([]keys.Signer, error) { - keyIDs, ok := m.keyIDsForRole[role] - if ok { - return m.SignersForKeyIDs(keyIDs), nil - } - - return nil, nil -} - -func (m *memoryStore) SaveSigner(role string, signer keys.Signer) error { - keyIDs := signer.PublicData().IDs() - - for _, keyID := range keyIDs { - m.signerForKeyID[keyID] = signer - } - - mergedKeyIDs := sets.DeduplicateStrings(append(m.keyIDsForRole[role], keyIDs...)) - m.keyIDsForRole[role] = mergedKeyIDs - return nil -} - -func (m *memoryStore) SignersForKeyIDs(keyIDs []string) []keys.Signer { - signers := []keys.Signer{} - keyIDsSeen := map[string]struct{}{} - - for _, keyID := range keyIDs { - signer, ok := m.signerForKeyID[keyID] - if !ok { - continue - } - addSigner := false - - for _, skid := range signer.PublicData().IDs() { - if _, seen := keyIDsSeen[skid]; !seen { - addSigner = true - } - - keyIDsSeen[skid] = struct{}{} - } - - if addSigner { - signers = append(signers, signer) - } - } - - return signers -} - -func (m *memoryStore) Clean() error { - return nil -} - -type persistedKeys struct { - Encrypted bool `json:"encrypted"` - Data json.RawMessage `json:"data"` -} - -type StoreOpts struct { - Logger *log.Logger - PassFunc util.PassphraseFunc -} - -func FileSystemStore(dir string, p util.PassphraseFunc) LocalStore { - return &fileSystemStore{ - dir: dir, - passphraseFunc: p, - logger: log.New(io.Discard, "", 0), - signerForKeyID: make(map[string]keys.Signer), - keyIDsForRole: make(map[string][]string), - } -} - -func FileSystemStoreWithOpts(dir string, opts ...StoreOpts) LocalStore { - store := &fileSystemStore{ - dir: dir, - passphraseFunc: nil, - logger: log.New(io.Discard, "", 0), - signerForKeyID: make(map[string]keys.Signer), - keyIDsForRole: make(map[string][]string), - } - for _, opt := range opts { - if opt.Logger != nil { - store.logger = opt.Logger - } - if opt.PassFunc != nil { - store.passphraseFunc = opt.PassFunc - } - } - return store -} - -type fileSystemStore struct { - dir string - passphraseFunc util.PassphraseFunc - logger *log.Logger - - signerForKeyID map[string]keys.Signer - keyIDsForRole map[string][]string -} - -func (f *fileSystemStore) repoDir() string { - return filepath.Join(f.dir, "repository") -} - -func (f *fileSystemStore) stagedDir() string { - return filepath.Join(f.dir, "staged") -} - -func (f *fileSystemStore) GetMeta() (map[string]json.RawMessage, error) { - // Build a map of metadata names (e.g. root.json) to their full paths - // (whether in the committed repo dir, or in the staged repo dir). - metaPaths := map[string]string{} - - rd := f.repoDir() - committed, err := os.ReadDir(f.repoDir()) - if err != nil && !errors.Is(err, fs.ErrNotExist) { - return nil, fmt.Errorf("could not list repo dir: %w", err) - } - - for _, e := range committed { - imf, err := fsutil.IsMetaFile(e) - if err != nil { - return nil, err - } - if imf { - name := e.Name() - metaPaths[name] = filepath.Join(rd, name) - } - } - - sd := f.stagedDir() - staged, err := os.ReadDir(sd) - if err != nil && !errors.Is(err, fs.ErrNotExist) { - return nil, fmt.Errorf("could not list staged dir: %w", err) - } - - for _, e := range staged { - imf, err := fsutil.IsMetaFile(e) - if err != nil { - return nil, err - } - if imf { - name := e.Name() - metaPaths[name] = filepath.Join(sd, name) - } - } - - meta := make(map[string]json.RawMessage) - for name, path := range metaPaths { - f, err := os.ReadFile(path) - if err != nil { - return nil, err - } - meta[name] = f - } - return meta, nil -} - -func (f *fileSystemStore) SetMeta(name string, meta json.RawMessage) error { - if err := f.createDirs(); err != nil { - return err - } - if err := util.AtomicallyWriteFile(filepath.Join(f.stagedDir(), name), meta, 0644); err != nil { - return err - } - return nil -} - -func (f *fileSystemStore) FileIsStaged(name string) bool { - _, err := os.Stat(filepath.Join(f.stagedDir(), name)) - return err == nil -} - -func (f *fileSystemStore) createDirs() error { - for _, dir := range []string{"keys", "repository", "staged/targets"} { - if err := os.MkdirAll(filepath.Join(f.dir, dir), 0755); err != nil { - return err - } - } - return nil -} - -func (f *fileSystemStore) WalkStagedTargets(paths []string, targetsFn TargetsWalkFunc) error { - if len(paths) == 0 { - walkFunc := func(fpath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() || !info.Mode().IsRegular() { - return nil - } - rel, err := filepath.Rel(filepath.Join(f.stagedDir(), "targets"), fpath) - if err != nil { - return err - } - file, err := os.Open(fpath) - if err != nil { - return err - } - defer file.Close() - return targetsFn(filepath.ToSlash(rel), file) - } - return filepath.Walk(filepath.Join(f.stagedDir(), "targets"), walkFunc) - } - - // check all the files exist before processing any files - for _, path := range paths { - realFilepath := filepath.Join(f.stagedDir(), "targets", path) - if _, err := os.Stat(realFilepath); err != nil { - if os.IsNotExist(err) { - return ErrFileNotFound{realFilepath} - } - return err - } - } - - for _, path := range paths { - realFilepath := filepath.Join(f.stagedDir(), "targets", path) - file, err := os.Open(realFilepath) - if err != nil { - if os.IsNotExist(err) { - return ErrFileNotFound{realFilepath} - } - return err - } - err = targetsFn(path, file) - file.Close() - if err != nil { - return err - } - } - return nil -} - -func (f *fileSystemStore) createRepoFile(path string) (*os.File, error) { - dst := filepath.Join(f.repoDir(), path) - if err := os.MkdirAll(filepath.Dir(dst), 0755); err != nil { - return nil, err - } - return os.Create(dst) -} - -func (f *fileSystemStore) Commit(consistentSnapshot bool, versions map[string]int64, hashes map[string]data.Hashes) error { - isTarget := func(path string) bool { - return strings.HasPrefix(path, "targets/") - } - copyToRepo := func(fpath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() || !info.Mode().IsRegular() { - return nil - } - rel, err := filepath.Rel(f.stagedDir(), fpath) - if err != nil { - return err - } - relpath := filepath.ToSlash(rel) - - var paths []string - if isTarget(relpath) { - paths = computeTargetPaths(consistentSnapshot, relpath, hashes) - } else { - paths = computeMetadataPaths(consistentSnapshot, relpath, versions) - } - var files []io.Writer - for _, path := range paths { - file, err := f.createRepoFile(path) - if err != nil { - return err - } - defer file.Close() - files = append(files, file) - } - staged, err := os.Open(fpath) - if err != nil { - return err - } - defer staged.Close() - if _, err = io.Copy(io.MultiWriter(files...), staged); err != nil { - return err - } - return nil - } - // Checks if target file should be deleted - needsRemoval := func(fpath string) bool { - if consistentSnapshot { - // strip out the hash - name := strings.SplitN(filepath.Base(fpath), ".", 2) - if len(name) != 2 || name[1] == "" { - return false - } - fpath = filepath.Join(filepath.Dir(fpath), name[1]) - } - _, ok := hashes[filepath.ToSlash(fpath)] - return !ok - } - // Checks if folder is empty - folderNeedsRemoval := func(fpath string) bool { - f, err := os.Open(fpath) - if err != nil { - return false - } - defer f.Close() - _, err = f.Readdirnames(1) - return err == io.EOF - } - removeFile := func(fpath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - rel, err := filepath.Rel(f.repoDir(), fpath) - if err != nil { - return err - } - relpath := filepath.ToSlash(rel) - if !info.IsDir() && isTarget(relpath) && needsRemoval(rel) { - // Delete the target file - if err := os.Remove(fpath); err != nil { - return err - } - // Delete the target folder too if it's empty - targetFolder := filepath.Dir(fpath) - if folderNeedsRemoval(targetFolder) { - if err := os.Remove(targetFolder); err != nil { - return err - } - } - } - return nil - } - if err := filepath.Walk(f.stagedDir(), copyToRepo); err != nil { - return err - } - if err := filepath.Walk(f.repoDir(), removeFile); err != nil { - return err - } - return f.Clean() -} - -func (f *fileSystemStore) GetSigners(role string) ([]keys.Signer, error) { - keyIDs, ok := f.keyIDsForRole[role] - if ok { - return f.SignersForKeyIDs(keyIDs), nil - } - - privKeys, _, err := f.loadPrivateKeys(role) - if err != nil { - if os.IsNotExist(err) { - return nil, nil - } - return nil, err - } - - signers := []keys.Signer{} - for _, key := range privKeys { - signer, err := keys.GetSigner(key) - if err != nil { - return nil, err - } - - // Cache the signers. - for _, keyID := range signer.PublicData().IDs() { - f.keyIDsForRole[role] = append(f.keyIDsForRole[role], keyID) - f.signerForKeyID[keyID] = signer - } - signers = append(signers, signer) - } - - return signers, nil -} - -func (f *fileSystemStore) SignersForKeyIDs(keyIDs []string) []keys.Signer { - signers := []keys.Signer{} - keyIDsSeen := map[string]struct{}{} - - for _, keyID := range keyIDs { - signer, ok := f.signerForKeyID[keyID] - if !ok { - continue - } - - addSigner := false - - for _, skid := range signer.PublicData().IDs() { - if _, seen := keyIDsSeen[skid]; !seen { - addSigner = true - } - - keyIDsSeen[skid] = struct{}{} - } - - if addSigner { - signers = append(signers, signer) - } - } - - return signers -} - -// ChangePassphrase changes the passphrase for a role keys file. Implements -// PassphraseChanger interface. -func (f *fileSystemStore) ChangePassphrase(role string) error { - // No need to proceed if passphrase func is not set - if f.passphraseFunc == nil { - return ErrPassphraseRequired{role} - } - // Read the existing keys (if any) - // If encrypted, will prompt for existing passphrase - keys, _, err := f.loadPrivateKeys(role) - if err != nil { - if os.IsNotExist(err) { - f.logger.Printf("Failed to change passphrase. Missing keys file for %s role. \n", role) - } - return err - } - // Prompt for new passphrase - pass, err := f.passphraseFunc(role, true, true) - if err != nil { - return err - } - // Proceed saving the keys - pk := &persistedKeys{Encrypted: true} - pk.Data, err = encrypted.Marshal(keys, pass) - if err != nil { - return err - } - data, err := json.MarshalIndent(pk, "", "\t") - if err != nil { - return err - } - if err := util.AtomicallyWriteFile(f.keysPath(role), append(data, '\n'), 0600); err != nil { - return err - } - f.logger.Printf("Successfully changed passphrase for %s keys file\n", role) - return nil -} - -func (f *fileSystemStore) SaveSigner(role string, signer keys.Signer) error { - if err := f.createDirs(); err != nil { - return err - } - - // add the key to the existing keys (if any) - privKeys, pass, err := f.loadPrivateKeys(role) - if err != nil && !os.IsNotExist(err) { - return err - } - key, err := signer.MarshalPrivateKey() - if err != nil { - return err - } - privKeys = append(privKeys, key) - - // if loadPrivateKeys didn't return a passphrase (because no keys yet exist) - // and passphraseFunc is set, get the passphrase so the keys file can - // be encrypted later (passphraseFunc being nil indicates the keys file - // should not be encrypted) - if pass == nil && f.passphraseFunc != nil { - pass, err = f.passphraseFunc(role, true, false) - if err != nil { - return err - } - } - - pk := &persistedKeys{} - if pass != nil { - pk.Data, err = encrypted.Marshal(privKeys, pass) - if err != nil { - return err - } - pk.Encrypted = true - } else { - pk.Data, err = json.MarshalIndent(privKeys, "", "\t") - if err != nil { - return err - } - } - data, err := json.MarshalIndent(pk, "", "\t") - if err != nil { - return err - } - if err := util.AtomicallyWriteFile(f.keysPath(role), append(data, '\n'), 0600); err != nil { - return err - } - - // Merge privKeys into f.keyIDsForRole and register signers with - // f.signerForKeyID. - keyIDsForRole := f.keyIDsForRole[role] - for _, key := range privKeys { - signer, err := keys.GetSigner(key) - if err != nil { - return err - } - - keyIDs := signer.PublicData().IDs() - - for _, keyID := range keyIDs { - f.signerForKeyID[keyID] = signer - } - - keyIDsForRole = append(keyIDsForRole, keyIDs...) - } - - f.keyIDsForRole[role] = sets.DeduplicateStrings(keyIDsForRole) - - return nil -} - -// loadPrivateKeys loads keys for the given role and returns them along with the -// passphrase (if read) so that callers don't need to re-read it. -func (f *fileSystemStore) loadPrivateKeys(role string) ([]*data.PrivateKey, []byte, error) { - file, err := os.Open(f.keysPath(role)) - if err != nil { - return nil, nil, err - } - defer file.Close() - - pk := &persistedKeys{} - if err := json.NewDecoder(file).Decode(pk); err != nil { - return nil, nil, err - } - - var keys []*data.PrivateKey - if !pk.Encrypted { - if err := json.Unmarshal(pk.Data, &keys); err != nil { - return nil, nil, err - } - return keys, nil, nil - } - - // the keys are encrypted so cannot be loaded if passphraseFunc is not set - if f.passphraseFunc == nil { - return nil, nil, ErrPassphraseRequired{role} - } - - // try the empty string as the password first - pass := []byte("") - if err := encrypted.Unmarshal(pk.Data, &keys, pass); err != nil { - pass, err = f.passphraseFunc(role, false, false) - if err != nil { - return nil, nil, err - } - if err = encrypted.Unmarshal(pk.Data, &keys, pass); err != nil { - return nil, nil, err - } - } - return keys, pass, nil -} - -func (f *fileSystemStore) keysPath(role string) string { - return filepath.Join(f.dir, "keys", role+".json") -} - -func (f *fileSystemStore) Clean() error { - _, err := os.Stat(filepath.Join(f.repoDir(), "root.json")) - if os.IsNotExist(err) { - return ErrNewRepository - } else if err != nil { - return err - } - if err := os.RemoveAll(f.stagedDir()); err != nil { - return err - } - return os.MkdirAll(filepath.Join(f.stagedDir(), "targets"), 0755) -} - -func computeTargetPaths(consistentSnapshot bool, name string, hashes map[string]data.Hashes) []string { - if consistentSnapshot { - return util.HashedPaths(name, hashes[name]) - } else { - return []string{name} - } -} - -func computeMetadataPaths(consistentSnapshot bool, name string, versions map[string]int64) []string { - copyVersion := false - - switch name { - case "root.json": - copyVersion = true - case "timestamp.json": - copyVersion = false - default: - if consistentSnapshot { - copyVersion = true - } else { - copyVersion = false - } - } - - paths := []string{name} - if copyVersion { - paths = append(paths, util.VersionedPath(name, versions[name])) - } - - return paths -} diff --git a/local_store_test.go b/local_store_test.go deleted file mode 100644 index 8badcfc8..00000000 --- a/local_store_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package tuf - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -func TestLocalStoreSigners(t *testing.T) { - tmpdir, err := os.MkdirTemp("", "") - if err != nil { - t.Fatal(err) - } - defer func() { - os.RemoveAll(tmpdir) - }() - - stores := map[string]LocalStore{ - "MemoryStore": MemoryStore(nil, nil), - "FileSystemStore": FileSystemStore(tmpdir, nil), - } - - for name, store := range stores { - t.Run(name, func(t *testing.T) { - signers, err := store.GetSigners("abc") - assert.NoError(t, err) - assert.Equal(t, len(signers), 0) - - // Add two signers to role "a". - aSigner1, err := keys.GenerateEd25519Key() - assert.NoError(t, err) - err = store.SaveSigner("a", aSigner1) - assert.NoError(t, err) - - aSigner2, err := keys.GenerateEd25519Key() - assert.NoError(t, err) - err = store.SaveSigner("a", aSigner2) - assert.NoError(t, err) - - // Add one signer to role "b". - bSigner, err := keys.GenerateEd25519Key() - assert.NoError(t, err) - err = store.SaveSigner("b", bSigner) - assert.NoError(t, err) - - // Add to b again to test deduplication. - err = store.SaveSigner("b", bSigner) - assert.NoError(t, err) - - signers, err = store.GetSigners("a") - assert.NoError(t, err) - assert.ElementsMatch(t, []keys.Signer{aSigner1, aSigner2}, signers) - - signers, err = store.GetSigners("b") - assert.NoError(t, err) - assert.ElementsMatch(t, []keys.Signer{bSigner}, signers) - - a1KeyIDs := aSigner1.PublicData().IDs() - a2KeyIDs := aSigner2.PublicData().IDs() - bKeyIDs := bSigner.PublicData().IDs() - - assert.Equal(t, []keys.Signer{aSigner1}, store.SignersForKeyIDs(a1KeyIDs)) - assert.Equal(t, []keys.Signer{aSigner2}, store.SignersForKeyIDs(a2KeyIDs)) - assert.ElementsMatch(t, []keys.Signer{aSigner1, aSigner2}, store.SignersForKeyIDs(append(a1KeyIDs, a2KeyIDs...))) - assert.Equal(t, []keys.Signer{bSigner}, store.SignersForKeyIDs(bKeyIDs)) - }) - } -} diff --git a/metadata/config/config.go b/metadata/config/config.go new file mode 100644 index 00000000..3d04fc7c --- /dev/null +++ b/metadata/config/config.go @@ -0,0 +1,83 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package config + +import ( + "net/url" + "os" + + "github.com/theupdateframework/go-tuf/v2/metadata/fetcher" +) + +type UpdaterConfig struct { + // TUF configuration + MaxRootRotations int64 + MaxDelegations int + RootMaxLength int64 + TimestampMaxLength int64 + SnapshotMaxLength int64 + TargetsMaxLength int64 + // Updater configuration + Fetcher fetcher.Fetcher + LocalTrustedRoot []byte + LocalMetadataDir string + LocalTargetsDir string + RemoteMetadataURL string + RemoteTargetsURL string + DisableLocalCache bool + PrefixTargetsWithHash bool + // UnsafeLocalMode only uses the metadata as written on disk + // if the metadata is incomplete, calling updater.Refresh will fail + UnsafeLocalMode bool +} + +// New creates a new UpdaterConfig instance used by the Updater to +// store configuration +func New(remoteURL string, rootBytes []byte) (*UpdaterConfig, error) { + // Default URL for target files - /targets + targetsURL, err := url.JoinPath(remoteURL, "targets") + if err != nil { + return nil, err + } + + return &UpdaterConfig{ + // TUF configuration + MaxRootRotations: 32, + MaxDelegations: 32, + RootMaxLength: 512000, // bytes + TimestampMaxLength: 16384, // bytes + SnapshotMaxLength: 2000000, // bytes + TargetsMaxLength: 5000000, // bytes + // Updater configuration + Fetcher: &fetcher.DefaultFetcher{}, // use the default built-in download fetcher + LocalTrustedRoot: rootBytes, // trusted root.json + RemoteMetadataURL: remoteURL, // URL of where the TUF metadata is + RemoteTargetsURL: targetsURL, // URL of where the target files should be downloaded from + DisableLocalCache: false, // enable local caching of trusted metadata + PrefixTargetsWithHash: true, // use hash-prefixed target files with consistent snapshots + UnsafeLocalMode: false, + }, nil +} + +func (cfg *UpdaterConfig) EnsurePathsExist() error { + if cfg.DisableLocalCache { + return nil + } + + for _, path := range []string{cfg.LocalMetadataDir, cfg.LocalTargetsDir} { + if err := os.MkdirAll(path, os.ModePerm); err != nil { + return err + } + } + + return nil +} diff --git a/metadata/config/config_test.go b/metadata/config/config_test.go new file mode 100644 index 00000000..81b85053 --- /dev/null +++ b/metadata/config/config_test.go @@ -0,0 +1,144 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package config + +import ( + "net/url" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/v2/metadata/fetcher" +) + +func TestNewUpdaterConfig(t *testing.T) { + // setup testing table (tt) and create subtest for each entry + for _, tt := range []struct { + name string + desc string + remoteURL string + rootBytes []byte + config *UpdaterConfig + wantErr error + }{ + { + name: "success", + desc: "No errors expected", + remoteURL: "somepath", + rootBytes: []byte("somerootbytes"), + config: &UpdaterConfig{ + MaxRootRotations: 32, + MaxDelegations: 32, + RootMaxLength: 512000, + TimestampMaxLength: 16384, + SnapshotMaxLength: 2000000, + TargetsMaxLength: 5000000, + Fetcher: &fetcher.DefaultFetcher{}, + LocalTrustedRoot: []byte("somerootbytes"), + RemoteMetadataURL: "somepath", + RemoteTargetsURL: "somepath/targets", + DisableLocalCache: false, + PrefixTargetsWithHash: true, + }, + wantErr: nil, + }, + { + name: "invalid character in URL", + desc: "Invalid ASCII control sequence in input", + remoteURL: string([]byte{0x7f}), + rootBytes: []byte("somerootbytes"), + config: nil, + wantErr: &url.Error{}, // just make sure this is non-nil, url pkg has no exported errors + }, + } { + t.Run(tt.name, func(t *testing.T) { + // this will only be printed if run in verbose mode or if test fails + t.Logf("Desc: %s", tt.desc) + // run the function under test + updaterConfig, err := New(tt.remoteURL, tt.rootBytes) + // special case if we expect no error + if tt.wantErr == nil { + assert.NoErrorf(t, err, "expected no error but got %v", err) + assert.EqualExportedValuesf(t, *tt.config, *updaterConfig, "expected %#+v but got %#+v", tt.config, updaterConfig) + return + } + // compare the error with our expected error + assert.Nilf(t, updaterConfig, "expected nil but got %#+v", updaterConfig) + assert.Errorf(t, err, "expected %v but got %v", tt.wantErr, err) + }) + } +} + +func TestEnsurePathsExist(t *testing.T) { + // setup testing table (tt) and create subtest for each entry + for _, tt := range []struct { + name string + desc string + config *UpdaterConfig + setup func(t *testing.T, cfg *UpdaterConfig) + wantErr error + }{ + { + name: "success", + desc: "No errors expected", + config: &UpdaterConfig{ + DisableLocalCache: false, + }, + setup: func(t *testing.T, cfg *UpdaterConfig) { + t.Helper() + tmp := t.TempDir() + cfg.LocalTargetsDir = filepath.Join(tmp, "targets") + cfg.LocalMetadataDir = filepath.Join(tmp, "metadata") + }, + wantErr: nil, + }, + { + name: "path not exist", + desc: "No local directories error", + config: &UpdaterConfig{ + DisableLocalCache: false, + }, + setup: func(t *testing.T, cfg *UpdaterConfig) { + t.Helper() + }, + wantErr: os.ErrNotExist, + }, + { + name: "no local cache", + desc: "Test if method no-op works", + config: &UpdaterConfig{ + DisableLocalCache: true, + }, + setup: func(t *testing.T, cfg *UpdaterConfig) { + t.Helper() + }, + wantErr: nil, + }, + } { + t.Run(tt.name, func(t *testing.T) { + // this will only be printed if run in verbose mode or if test fails + t.Logf("Desc: %s", tt.desc) + // run special test setup in case it is needed for any subtest + tt.setup(t, tt.config) + // run the method under test + err := tt.config.EnsurePathsExist() + // special case if we expect no error + if tt.wantErr == nil { + assert.NoErrorf(t, err, "expected no error but got %v", err) + return + } + // compare the error with our expected error + assert.ErrorIsf(t, err, tt.wantErr, "expected %v but got %v", tt.wantErr, err) + }) + } +} diff --git a/metadata/errors.go b/metadata/errors.go new file mode 100644 index 00000000..40867203 --- /dev/null +++ b/metadata/errors.go @@ -0,0 +1,170 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "fmt" +) + +// Define TUF error types used inside the new modern implementation. +// The names chosen for TUF error types should start in 'Err' except where +// there is a good reason not to, and provide that reason in those cases. + +// Repository errors + +// ErrRepository - an error with a repository's state, such as a missing file. +// It covers all exceptions that come from the repository side when +// looking from the perspective of users of metadata API or client +type ErrRepository struct { + Msg string +} + +func (e ErrRepository) Error() string { + return fmt.Sprintf("repository error: %s", e.Msg) +} + +// ErrUnsignedMetadata - An error about metadata object with insufficient threshold of signatures +type ErrUnsignedMetadata struct { + Msg string +} + +func (e ErrUnsignedMetadata) Error() string { + return fmt.Sprintf("unsigned metadata error: %s", e.Msg) +} + +// ErrUnsignedMetadata is a subset of ErrRepository +func (e ErrUnsignedMetadata) Is(target error) bool { + return target == ErrRepository{} || target == ErrUnsignedMetadata{} +} + +// ErrBadVersionNumber - An error for metadata that contains an invalid version number +type ErrBadVersionNumber struct { + Msg string +} + +func (e ErrBadVersionNumber) Error() string { + return fmt.Sprintf("bad version number error: %s", e.Msg) +} + +// ErrBadVersionNumber is a subset of ErrRepository +func (e ErrBadVersionNumber) Is(target error) bool { + return target == ErrRepository{} || target == ErrBadVersionNumber{} +} + +// ErrEqualVersionNumber - An error for metadata containing a previously verified version number +type ErrEqualVersionNumber struct { + Msg string +} + +func (e ErrEqualVersionNumber) Error() string { + return fmt.Sprintf("equal version number error: %s", e.Msg) +} + +// ErrEqualVersionNumber is a subset of both ErrRepository and ErrBadVersionNumber +func (e ErrEqualVersionNumber) Is(target error) bool { + return target == ErrRepository{} || target == ErrBadVersionNumber{} || target == ErrEqualVersionNumber{} +} + +// ErrExpiredMetadata - Indicate that a TUF Metadata file has expired +type ErrExpiredMetadata struct { + Msg string +} + +func (e ErrExpiredMetadata) Error() string { + return fmt.Sprintf("expired metadata error: %s", e.Msg) +} + +// ErrExpiredMetadata is a subset of ErrRepository +func (e ErrExpiredMetadata) Is(target error) bool { + return target == ErrRepository{} || target == ErrExpiredMetadata{} +} + +// ErrLengthOrHashMismatch - An error while checking the length and hash values of an object +type ErrLengthOrHashMismatch struct { + Msg string +} + +func (e ErrLengthOrHashMismatch) Error() string { + return fmt.Sprintf("length/hash verification error: %s", e.Msg) +} + +// ErrLengthOrHashMismatch is a subset of ErrRepository +func (e ErrLengthOrHashMismatch) Is(target error) bool { + return target == ErrRepository{} || target == ErrLengthOrHashMismatch{} +} + +// Download errors + +// ErrDownload - An error occurred while attempting to download a file +type ErrDownload struct { + Msg string +} + +func (e ErrDownload) Error() string { + return fmt.Sprintf("download error: %s", e.Msg) +} + +// ErrDownloadLengthMismatch - Indicate that a mismatch of lengths was seen while downloading a file +type ErrDownloadLengthMismatch struct { + Msg string +} + +func (e ErrDownloadLengthMismatch) Error() string { + return fmt.Sprintf("download length mismatch error: %s", e.Msg) +} + +// ErrDownloadLengthMismatch is a subset of ErrDownload +func (e ErrDownloadLengthMismatch) Is(target error) bool { + return target == ErrDownload{} || target == ErrDownloadLengthMismatch{} +} + +// ErrDownloadHTTP - Returned by Fetcher interface implementations for HTTP errors +type ErrDownloadHTTP struct { + StatusCode int + URL string +} + +func (e ErrDownloadHTTP) Error() string { + return fmt.Sprintf("failed to download %s, http status code: %d", e.URL, e.StatusCode) +} + +// ErrDownloadHTTP is a subset of ErrDownload +func (e ErrDownloadHTTP) Is(target error) bool { + return target == ErrDownload{} || target == ErrDownloadHTTP{} +} + +// ValueError +type ErrValue struct { + Msg string +} + +func (e ErrValue) Error() string { + return fmt.Sprintf("value error: %s", e.Msg) +} + +// TypeError +type ErrType struct { + Msg string +} + +func (e ErrType) Error() string { + return fmt.Sprintf("type error: %s", e.Msg) +} + +// RuntimeError +type ErrRuntime struct { + Msg string +} + +func (e ErrRuntime) Error() string { + return fmt.Sprintf("runtime error: %s", e.Msg) +} diff --git a/metadata/fetcher/fetcher.go b/metadata/fetcher/fetcher.go new file mode 100644 index 00000000..cf32f4c5 --- /dev/null +++ b/metadata/fetcher/fetcher.go @@ -0,0 +1,83 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package fetcher + +import ( + "fmt" + "io" + "net/http" + "strconv" + "time" + + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +// Fetcher interface +type Fetcher interface { + DownloadFile(urlPath string, maxLength int64, timeout time.Duration) ([]byte, error) +} + +// DefaultFetcher implements Fetcher +type DefaultFetcher struct { + httpUserAgent string +} + +// DownloadFile downloads a file from urlPath, errors out if it failed, +// its length is larger than maxLength or the timeout is reached. +func (d *DefaultFetcher) DownloadFile(urlPath string, maxLength int64, timeout time.Duration) ([]byte, error) { + client := &http.Client{Timeout: timeout} + req, err := http.NewRequest("GET", urlPath, nil) + if err != nil { + return nil, err + } + // Use in case of multiple sessions. + if d.httpUserAgent != "" { + req.Header.Set("User-Agent", d.httpUserAgent) + } + // Execute the request. + res, err := client.Do(req) + if err != nil { + return nil, err + } + defer res.Body.Close() + // Handle HTTP status codes. + if res.StatusCode == http.StatusNotFound || res.StatusCode == http.StatusForbidden || res.StatusCode != http.StatusOK { + return nil, metadata.ErrDownloadHTTP{StatusCode: res.StatusCode, URL: urlPath} + } + var length int64 + // Get content length from header (might not be accurate, -1 or not set). + if header := res.Header.Get("Content-Length"); header != "" { + length, err = strconv.ParseInt(header, 10, 0) + if err != nil { + return nil, err + } + // Error if the reported size is greater than what is expected. + if length > maxLength { + return nil, metadata.ErrDownloadLengthMismatch{Msg: fmt.Sprintf("download failed for %s, length %d is larger than expected %d", urlPath, length, maxLength)} + } + } + // Although the size has been checked above, use a LimitReader in case + // the reported size is inaccurate, or size is -1 which indicates an + // unknown length. We read maxLength + 1 in order to check if the read data + // surpased our set limit. + data, err := io.ReadAll(io.LimitReader(res.Body, maxLength+1)) + if err != nil { + return nil, err + } + // Error if the reported size is greater than what is expected. + length = int64(len(data)) + if length > maxLength { + return nil, metadata.ErrDownloadLengthMismatch{Msg: fmt.Sprintf("download failed for %s, length %d is larger than expected %d", urlPath, length, maxLength)} + } + + return data, nil +} diff --git a/metadata/fetcher/fetcher_test.go b/metadata/fetcher/fetcher_test.go new file mode 100644 index 00000000..fddc3041 --- /dev/null +++ b/metadata/fetcher/fetcher_test.go @@ -0,0 +1,88 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package fetcher + +import ( + "net/url" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +func TestDownLoadFile(t *testing.T) { + for _, tt := range []struct { + name string + desc string + url string + maxLength int64 + timeout time.Duration + data []byte + wantErr error + }{ + { + name: "success", + desc: "No errors expected", + url: "https://jku.github.io/tuf-demo/metadata/1.root.json", + maxLength: 512000, + timeout: 15 * time.Second, + data: []byte{123, 10, 32, 34, 115, 105, 103, 110, 97, 116, 117, 114, 101, 115, 34, 58, 32, 91, 10, 32, 32, 123, 10, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 52, 99, 53, 54, 100, 101, 53, 98, 54, 50, 102, 100, 48, 54, 52, 102, 99, 57, 52, 52, 53, 51, 98, 54, 56, 48, 100, 102, 100, 51, 102, 97, 102, 54, 97, 48, 49, 98, 97, 97, 97, 98, 51, 98, 101, 97, 99, 50, 57, 54, 57, 50, 48, 102, 48, 99, 99, 102, 97, 50, 50, 55, 55, 53, 34, 44, 10, 32, 32, 32, 34, 115, 105, 103, 34, 58, 32, 34, 57, 54, 57, 98, 100, 101, 99, 51, 54, 100, 54, 102, 51, 100, 99, 53, 57, 99, 49, 55, 50, 48, 50, 97, 56, 53, 50, 56, 98, 98, 51, 53, 54, 97, 54, 101, 97, 53, 52, 100, 55, 99, 99, 57, 54, 98, 98, 51, 55, 49, 101, 101, 101, 52, 56, 101, 50, 52, 48, 49, 57, 50, 98, 99, 97, 99, 100, 53, 48, 53, 49, 51, 56, 56, 50, 52, 53, 49, 52, 52, 97, 97, 99, 97, 49, 48, 51, 57, 100, 51, 101, 98, 55, 48, 54, 50, 101, 48, 56, 55, 54, 55, 57, 53, 101, 56, 49, 101, 49, 100, 53, 54, 54, 102, 56, 100, 101, 100, 50, 99, 50, 56, 52, 97, 101, 101, 48, 102, 34, 10, 32, 32, 125, 44, 10, 32, 32, 123, 10, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 52, 53, 97, 57, 53, 55, 55, 99, 97, 52, 56, 51, 102, 51, 53, 56, 98, 100, 97, 52, 97, 50, 49, 97, 102, 57, 51, 98, 55, 54, 54, 48, 98, 56, 50, 98, 100, 57, 99, 48, 101, 49, 57, 51, 48, 97, 54, 98, 55, 100, 53, 50, 49, 98, 52, 50, 56, 57, 55, 97, 48, 102, 97, 51, 34, 44, 10, 32, 32, 32, 34, 115, 105, 103, 34, 58, 32, 34, 101, 100, 102, 97, 102, 51, 99, 53, 51, 56, 97, 48, 50, 51, 101, 55, 99, 102, 53, 98, 50, 54, 51, 97, 101, 52, 101, 54, 51, 99, 51, 51, 99, 57, 52, 97, 50, 98, 102, 99, 57, 102, 101, 56, 48, 56, 53, 57, 99, 52, 57, 51, 52, 100, 52, 97, 54, 54, 98, 48, 49, 53, 98, 54, 53, 98, 57, 48, 49, 101, 99, 53, 100, 53, 50, 57, 48, 101, 97, 53, 50, 52, 51, 51, 57, 101, 54, 97, 52, 48, 98, 53, 98, 56, 100, 98, 56, 97, 57, 53, 54, 49, 102, 51, 99, 49, 48, 51, 101, 50, 97, 101, 56, 55, 98, 57, 101, 101, 48, 51, 50, 97, 57, 101, 51, 48, 48, 49, 34, 10, 32, 32, 125, 10, 32, 93, 44, 10, 32, 34, 115, 105, 103, 110, 101, 100, 34, 58, 32, 123, 10, 32, 32, 34, 95, 116, 121, 112, 101, 34, 58, 32, 34, 114, 111, 111, 116, 34, 44, 10, 32, 32, 34, 99, 111, 110, 115, 105, 115, 116, 101, 110, 116, 95, 115, 110, 97, 112, 115, 104, 111, 116, 34, 58, 32, 116, 114, 117, 101, 44, 10, 32, 32, 34, 101, 120, 112, 105, 114, 101, 115, 34, 58, 32, 34, 50, 48, 50, 49, 45, 48, 55, 45, 49, 56, 84, 49, 51, 58, 51, 55, 58, 51, 56, 90, 34, 44, 10, 32, 32, 34, 107, 101, 121, 115, 34, 58, 32, 123, 10, 32, 32, 32, 34, 51, 56, 54, 48, 48, 56, 50, 48, 102, 49, 49, 97, 53, 102, 55, 100, 55, 102, 102, 52, 50, 101, 54, 100, 102, 99, 57, 98, 48, 51, 102, 100, 54, 48, 50, 55, 50, 97, 51, 98, 101, 54, 102, 56, 57, 53, 100, 97, 50, 100, 56, 56, 50, 99, 101, 97, 56, 98, 98, 49, 101, 50, 48, 102, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 51, 56, 54, 48, 48, 56, 50, 48, 102, 49, 49, 97, 53, 102, 55, 100, 55, 102, 102, 52, 50, 101, 54, 100, 102, 99, 57, 98, 48, 51, 102, 100, 54, 48, 50, 55, 50, 97, 51, 98, 101, 54, 102, 56, 57, 53, 100, 97, 50, 100, 56, 56, 50, 99, 101, 97, 56, 98, 98, 49, 101, 50, 48, 102, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 116, 121, 112, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 118, 97, 108, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 34, 112, 117, 98, 108, 105, 99, 34, 58, 32, 34, 53, 48, 102, 52, 56, 54, 53, 57, 54, 54, 53, 98, 51, 101, 101, 98, 50, 50, 100, 52, 57, 51, 55, 52, 101, 49, 56, 51, 49, 57, 55, 101, 101, 102, 56, 101, 52, 50, 56, 55, 54, 97, 53, 99, 98, 57, 48, 57, 99, 57, 49, 97, 98, 55, 55, 101, 52, 50, 98, 49, 101, 99, 99, 54, 34, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 52, 53, 97, 57, 53, 55, 55, 99, 97, 52, 56, 51, 102, 51, 53, 56, 98, 100, 97, 52, 97, 50, 49, 97, 102, 57, 51, 98, 55, 54, 54, 48, 98, 56, 50, 98, 100, 57, 99, 48, 101, 49, 57, 51, 48, 97, 54, 98, 55, 100, 53, 50, 49, 98, 52, 50, 56, 57, 55, 97, 48, 102, 97, 51, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 52, 53, 97, 57, 53, 55, 55, 99, 97, 52, 56, 51, 102, 51, 53, 56, 98, 100, 97, 52, 97, 50, 49, 97, 102, 57, 51, 98, 55, 54, 54, 48, 98, 56, 50, 98, 100, 57, 99, 48, 101, 49, 57, 51, 48, 97, 54, 98, 55, 100, 53, 50, 49, 98, 52, 50, 56, 57, 55, 97, 48, 102, 97, 51, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 116, 121, 112, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 118, 97, 108, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 34, 112, 117, 98, 108, 105, 99, 34, 58, 32, 34, 49, 56, 101, 98, 50, 52, 56, 51, 49, 57, 54, 98, 55, 97, 97, 50, 53, 102, 97, 102, 98, 56, 49, 50, 55, 54, 99, 55, 48, 52, 102, 55, 57, 48, 51, 99, 99, 57, 98, 49, 101, 51, 52, 99, 97, 100, 99, 52, 101, 97, 102, 54, 55, 55, 98, 55, 97, 54, 55, 52, 100, 54, 102, 53, 34, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 52, 99, 53, 54, 100, 101, 53, 98, 54, 50, 102, 100, 48, 54, 52, 102, 99, 57, 52, 52, 53, 51, 98, 54, 56, 48, 100, 102, 100, 51, 102, 97, 102, 54, 97, 48, 49, 98, 97, 97, 97, 98, 51, 98, 101, 97, 99, 50, 57, 54, 57, 50, 48, 102, 48, 99, 99, 102, 97, 50, 50, 55, 55, 53, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 52, 99, 53, 54, 100, 101, 53, 98, 54, 50, 102, 100, 48, 54, 52, 102, 99, 57, 52, 52, 53, 51, 98, 54, 56, 48, 100, 102, 100, 51, 102, 97, 102, 54, 97, 48, 49, 98, 97, 97, 97, 98, 51, 98, 101, 97, 99, 50, 57, 54, 57, 50, 48, 102, 48, 99, 99, 102, 97, 50, 50, 55, 55, 53, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 116, 121, 112, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 118, 97, 108, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 34, 112, 117, 98, 108, 105, 99, 34, 58, 32, 34, 57, 50, 49, 101, 99, 99, 56, 54, 101, 101, 57, 49, 102, 100, 100, 51, 97, 53, 53, 49, 52, 48, 50, 51, 100, 102, 49, 57, 99, 100, 56, 53, 57, 49, 53, 57, 52, 54, 55, 55, 54, 52, 102, 54, 48, 102, 99, 52, 49, 101, 49, 101, 101, 97, 99, 56, 53, 48, 51, 53, 49, 49, 54, 49, 34, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 56, 102, 51, 99, 50, 55, 57, 52, 102, 50, 52, 52, 50, 54, 48, 49, 52, 102, 99, 50, 54, 97, 100, 99, 98, 98, 56, 101, 102, 100, 57, 52, 52, 49, 49, 102, 99, 101, 56, 56, 49, 102, 97, 54, 48, 102, 99, 56, 55, 50, 53, 97, 56, 57, 57, 49, 49, 53, 55, 53, 48, 101, 102, 97, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 56, 102, 51, 99, 50, 55, 57, 52, 102, 50, 52, 52, 50, 54, 48, 49, 52, 102, 99, 50, 54, 97, 100, 99, 98, 98, 56, 101, 102, 100, 57, 52, 52, 49, 49, 102, 99, 101, 56, 56, 49, 102, 97, 54, 48, 102, 99, 56, 55, 50, 53, 97, 56, 57, 57, 49, 49, 53, 55, 53, 48, 101, 102, 97, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 116, 121, 112, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 118, 97, 108, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 34, 112, 117, 98, 108, 105, 99, 34, 58, 32, 34, 56, 57, 53, 55, 54, 57, 49, 55, 100, 49, 54, 48, 50, 56, 52, 51, 56, 52, 97, 52, 55, 55, 53, 57, 101, 101, 99, 49, 102, 99, 48, 102, 53, 98, 55, 52, 54, 99, 97, 51, 100, 102, 97, 100, 56, 49, 51, 101, 101, 51, 48, 56, 55, 53, 99, 51, 50, 98, 97, 99, 51, 54, 57, 99, 34, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 57, 100, 55, 56, 53, 52, 51, 98, 53, 48, 56, 102, 57, 57, 97, 57, 53, 97, 51, 99, 51, 49, 102, 97, 100, 51, 99, 102, 102, 101, 102, 48, 54, 52, 52, 49, 51, 52, 102, 49, 97, 48, 50, 56, 98, 51, 48, 53, 48, 49, 97, 99, 99, 49, 50, 48, 53, 56, 99, 55, 99, 51, 101, 56, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 34, 58, 32, 34, 57, 100, 55, 56, 53, 52, 51, 98, 53, 48, 56, 102, 57, 57, 97, 57, 53, 97, 51, 99, 51, 49, 102, 97, 100, 51, 99, 102, 102, 101, 102, 48, 54, 52, 52, 49, 51, 52, 102, 49, 97, 48, 50, 56, 98, 51, 48, 53, 48, 49, 97, 99, 99, 49, 50, 48, 53, 56, 99, 55, 99, 51, 101, 56, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 116, 121, 112, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 44, 10, 32, 32, 32, 32, 34, 107, 101, 121, 118, 97, 108, 34, 58, 32, 123, 10, 32, 32, 32, 32, 32, 34, 112, 117, 98, 108, 105, 99, 34, 58, 32, 34, 48, 52, 101, 102, 51, 51, 53, 54, 102, 98, 53, 99, 100, 48, 48, 57, 55, 53, 100, 102, 99, 101, 57, 102, 56, 102, 52, 50, 100, 53, 98, 49, 50, 98, 55, 98, 56, 51, 102, 56, 98, 97, 49, 53, 99, 50, 101, 57, 56, 102, 100, 48, 52, 49, 53, 49, 52, 99, 55, 52, 98, 101, 98, 50, 34, 10, 32, 32, 32, 32, 125, 44, 10, 32, 32, 32, 32, 34, 115, 99, 104, 101, 109, 101, 34, 58, 32, 34, 101, 100, 50, 53, 53, 49, 57, 34, 10, 32, 32, 32, 125, 10, 32, 32, 125, 44, 10, 32, 32, 34, 114, 111, 108, 101, 115, 34, 58, 32, 123, 10, 32, 32, 32, 34, 114, 111, 111, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 34, 52, 53, 97, 57, 53, 55, 55, 99, 97, 52, 56, 51, 102, 51, 53, 56, 98, 100, 97, 52, 97, 50, 49, 97, 102, 57, 51, 98, 55, 54, 54, 48, 98, 56, 50, 98, 100, 57, 99, 48, 101, 49, 57, 51, 48, 97, 54, 98, 55, 100, 53, 50, 49, 98, 52, 50, 56, 57, 55, 97, 48, 102, 97, 51, 34, 44, 10, 32, 32, 32, 32, 32, 34, 52, 99, 53, 54, 100, 101, 53, 98, 54, 50, 102, 100, 48, 54, 52, 102, 99, 57, 52, 52, 53, 51, 98, 54, 56, 48, 100, 102, 100, 51, 102, 97, 102, 54, 97, 48, 49, 98, 97, 97, 97, 98, 51, 98, 101, 97, 99, 50, 57, 54, 57, 50, 48, 102, 48, 99, 99, 102, 97, 50, 50, 55, 55, 53, 34, 10, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 34, 116, 104, 114, 101, 115, 104, 111, 108, 100, 34, 58, 32, 50, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 115, 110, 97, 112, 115, 104, 111, 116, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 34, 57, 100, 55, 56, 53, 52, 51, 98, 53, 48, 56, 102, 57, 57, 97, 57, 53, 97, 51, 99, 51, 49, 102, 97, 100, 51, 99, 102, 102, 101, 102, 48, 54, 52, 52, 49, 51, 52, 102, 49, 97, 48, 50, 56, 98, 51, 48, 53, 48, 49, 97, 99, 99, 49, 50, 48, 53, 56, 99, 55, 99, 51, 101, 56, 34, 10, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 34, 116, 104, 114, 101, 115, 104, 111, 108, 100, 34, 58, 32, 49, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 116, 97, 114, 103, 101, 116, 115, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 34, 56, 102, 51, 99, 50, 55, 57, 52, 102, 50, 52, 52, 50, 54, 48, 49, 52, 102, 99, 50, 54, 97, 100, 99, 98, 98, 56, 101, 102, 100, 57, 52, 52, 49, 49, 102, 99, 101, 56, 56, 49, 102, 97, 54, 48, 102, 99, 56, 55, 50, 53, 97, 56, 57, 57, 49, 49, 53, 55, 53, 48, 101, 102, 97, 34, 10, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 34, 116, 104, 114, 101, 115, 104, 111, 108, 100, 34, 58, 32, 49, 10, 32, 32, 32, 125, 44, 10, 32, 32, 32, 34, 116, 105, 109, 101, 115, 116, 97, 109, 112, 34, 58, 32, 123, 10, 32, 32, 32, 32, 34, 107, 101, 121, 105, 100, 115, 34, 58, 32, 91, 10, 32, 32, 32, 32, 32, 34, 51, 56, 54, 48, 48, 56, 50, 48, 102, 49, 49, 97, 53, 102, 55, 100, 55, 102, 102, 52, 50, 101, 54, 100, 102, 99, 57, 98, 48, 51, 102, 100, 54, 48, 50, 55, 50, 97, 51, 98, 101, 54, 102, 56, 57, 53, 100, 97, 50, 100, 56, 56, 50, 99, 101, 97, 56, 98, 98, 49, 101, 50, 48, 102, 34, 10, 32, 32, 32, 32, 93, 44, 10, 32, 32, 32, 32, 34, 116, 104, 114, 101, 115, 104, 111, 108, 100, 34, 58, 32, 49, 10, 32, 32, 32, 125, 10, 32, 32, 125, 44, 10, 32, 32, 34, 115, 112, 101, 99, 95, 118, 101, 114, 115, 105, 111, 110, 34, 58, 32, 34, 49, 46, 48, 46, 49, 57, 34, 44, 10, 32, 32, 34, 118, 101, 114, 115, 105, 111, 110, 34, 58, 32, 49, 44, 10, 32, 32, 34, 120, 45, 116, 117, 102, 114, 101, 112, 111, 45, 101, 120, 112, 105, 114, 121, 45, 112, 101, 114, 105, 111, 100, 34, 58, 32, 56, 54, 52, 48, 48, 10, 32, 125, 10, 125}, + wantErr: nil, + }, + { + name: "invalid url", + desc: "URL does not exist", + url: "https://somebadtufrepourl.com/metadata/", + data: nil, + wantErr: &url.Error{}, + }, + { + name: "invalid url format", + desc: "URL is malformed", + url: string([]byte{0x7f}), + data: nil, + wantErr: &url.Error{}, + }, + { + name: "invalid path", + desc: "Path does not exist", + url: "https://jku.github.io/tuf-demo/metadata/badPath.json", + data: nil, + wantErr: metadata.ErrDownloadHTTP{}, + }, + { + name: "data too long", + desc: "Returned data is longer than maxLength", + url: "https://jku.github.io/tuf-demo/metadata/1.root.json", + maxLength: 1, + data: nil, + wantErr: metadata.ErrDownloadLengthMismatch{}, + }, + } { + t.Run(tt.name, func(t *testing.T) { + // this will only be printed if run in verbose mode or if test fails + t.Logf("Desc: %s", tt.desc) + // run the function under test + fetcher := DefaultFetcher{httpUserAgent: "Metadata_Unit_Test/1.0"} + data, err := fetcher.DownloadFile(tt.url, tt.maxLength, tt.timeout) + // special case if we expect no error + if tt.wantErr == nil { + assert.NoErrorf(t, err, "expected no error but got %v", err) + return + } + // compare the error and data with our expected error and data + assert.Equal(t, tt.data, data, "fetched data did not match") + assert.IsTypef(t, tt.wantErr, err, "expected %v but got %v", tt.wantErr, err) + }) + } +} diff --git a/metadata/keys.go b/metadata/keys.go new file mode 100644 index 00000000..f5150a62 --- /dev/null +++ b/metadata/keys.go @@ -0,0 +1,126 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "crypto" + "crypto/ecdsa" + "crypto/ed25519" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "encoding/hex" + "fmt" + + "github.com/secure-systems-lab/go-securesystemslib/cjson" + "github.com/sigstore/sigstore/pkg/cryptoutils" +) + +const ( + KeyTypeEd25519 = "ed25519" + KeyTypeECDSA_SHA2_P256_COMPAT = "ecdsa-sha2-nistp256" + KeyTypeECDSA_SHA2_P256 = "ecdsa" + KeyTypeRSASSA_PSS_SHA256 = "rsa" + KeySchemeEd25519 = "ed25519" + KeySchemeECDSA_SHA2_P256 = "ecdsa-sha2-nistp256" + KeySchemeRSASSA_PSS_SHA256 = "rsassa-pss-sha256" +) + +// ToPublicKey generate crypto.PublicKey from metadata type Key +func (k *Key) ToPublicKey() (crypto.PublicKey, error) { + switch k.Type { + case KeyTypeRSASSA_PSS_SHA256: + publicKey, err := cryptoutils.UnmarshalPEMToPublicKey([]byte(k.Value.PublicKey)) + if err != nil { + return nil, err + } + rsaKey, ok := publicKey.(*rsa.PublicKey) + if !ok { + return nil, fmt.Errorf("invalid rsa public key") + } + // done for verification - ref. https://github.com/theupdateframework/go-tuf/pull/357 + if _, err := x509.MarshalPKIXPublicKey(rsaKey); err != nil { + return nil, err + } + return rsaKey, nil + case KeyTypeECDSA_SHA2_P256, KeyTypeECDSA_SHA2_P256_COMPAT: // handle "ecdsa" too as python-tuf/sslib keys are using it for keytype instead of https://theupdateframework.github.io/specification/latest/index.html#keytype-ecdsa-sha2-nistp256 + publicKey, err := cryptoutils.UnmarshalPEMToPublicKey([]byte(k.Value.PublicKey)) + if err != nil { + return nil, err + } + ecdsaKey, ok := publicKey.(*ecdsa.PublicKey) + if !ok { + return nil, fmt.Errorf("invalid ecdsa public key") + } + // done for verification - ref. https://github.com/theupdateframework/go-tuf/pull/357 + if _, err := x509.MarshalPKIXPublicKey(ecdsaKey); err != nil { + return nil, err + } + return ecdsaKey, nil + case KeyTypeEd25519: + publicKey, err := hex.DecodeString(k.Value.PublicKey) + if err != nil { + return nil, err + } + ed25519Key := ed25519.PublicKey(publicKey) + // done for verification - ref. https://github.com/theupdateframework/go-tuf/pull/357 + if _, err := x509.MarshalPKIXPublicKey(ed25519Key); err != nil { + return nil, err + } + return ed25519Key, nil + } + return nil, fmt.Errorf("unsupported public key type") +} + +// KeyFromPublicKey generate metadata type Key from crypto.PublicKey +func KeyFromPublicKey(k crypto.PublicKey) (*Key, error) { + key := &Key{} + switch k := k.(type) { + case *rsa.PublicKey: + key.Type = KeyTypeRSASSA_PSS_SHA256 + key.Scheme = KeySchemeRSASSA_PSS_SHA256 + pemKey, err := cryptoutils.MarshalPublicKeyToPEM(k) + if err != nil { + return nil, err + } + key.Value.PublicKey = string(pemKey) + case *ecdsa.PublicKey: + key.Type = KeyTypeECDSA_SHA2_P256 + key.Scheme = KeySchemeECDSA_SHA2_P256 + pemKey, err := cryptoutils.MarshalPublicKeyToPEM(k) + if err != nil { + return nil, err + } + key.Value.PublicKey = string(pemKey) + case ed25519.PublicKey: + key.Type = KeyTypeEd25519 + key.Scheme = KeySchemeEd25519 + key.Value.PublicKey = hex.EncodeToString(k) + default: + return nil, fmt.Errorf("unsupported public key type") + } + return key, nil +} + +// ID returns the keyID value for the given Key +func (k *Key) ID() string { + // the identifier is a hexdigest of the SHA-256 hash of the canonical form of the key + if k.id == "" { + data, err := cjson.EncodeCanonical(k) + if err != nil { + panic(fmt.Errorf("error creating key ID: %w", err)) + } + digest := sha256.Sum256(data) + k.id = hex.EncodeToString(digest[:]) + } + return k.id +} diff --git a/metadata/logger.go b/metadata/logger.go new file mode 100644 index 00000000..7bca4a2f --- /dev/null +++ b/metadata/logger.go @@ -0,0 +1,39 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +var log Logger = DiscardLogger{} + +// Logger partially implements the go-log/logr's interface: +// https://github.com/go-logr/logr/blob/master/logr.go +type Logger interface { + // Info logs a non-error message with key/value pairs + Info(msg string, kv ...any) + // Error logs an error with a given message and key/value pairs. + Error(err error, msg string, kv ...any) +} + +type DiscardLogger struct{} + +func (d DiscardLogger) Info(msg string, kv ...any) { +} + +func (d DiscardLogger) Error(err error, msg string, kv ...any) { +} + +func SetLogger(logger Logger) { + log = logger +} + +func GetLogger() Logger { + return log +} diff --git a/metadata/logger_test.go b/metadata/logger_test.go new file mode 100644 index 00000000..195fb38e --- /dev/null +++ b/metadata/logger_test.go @@ -0,0 +1,34 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + stdlog "log" + "os" + "testing" + + "github.com/go-logr/stdr" + "github.com/stretchr/testify/assert" +) + +func TestSetLogger(t *testing.T) { + // This function is just a simple setter, no need for testing table + testLogger := stdr.New(stdlog.New(os.Stdout, "test", stdlog.LstdFlags)) + SetLogger(testLogger) + assert.Equal(t, testLogger, log, "setting package global logger was unsuccessful") +} + +func TestGetLogger(t *testing.T) { + // This function is just a simple getter, no need for testing table + testLogger := GetLogger() + assert.Equal(t, log, testLogger, "function did not return current logger") +} diff --git a/metadata/marshal.go b/metadata/marshal.go new file mode 100644 index 00000000..7d262c71 --- /dev/null +++ b/metadata/marshal.go @@ -0,0 +1,561 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "encoding/hex" + "encoding/json" + "errors" +) + +// The following marshal/unmarshal methods override the default behavior for for each TUF type +// in order to support unrecognized fields + +func (signed RootType) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + dict["_type"] = signed.Type + dict["spec_version"] = signed.SpecVersion + dict["consistent_snapshot"] = signed.ConsistentSnapshot + dict["version"] = signed.Version + dict["expires"] = signed.Expires + dict["keys"] = signed.Keys + dict["roles"] = signed.Roles + return json.Marshal(dict) +} + +func (signed *RootType) UnmarshalJSON(data []byte) error { + type Alias RootType + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = RootType(s) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "_type") + delete(dict, "spec_version") + delete(dict, "consistent_snapshot") + delete(dict, "version") + delete(dict, "expires") + delete(dict, "keys") + delete(dict, "roles") + signed.UnrecognizedFields = dict + return nil +} + +func (signed SnapshotType) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + dict["_type"] = signed.Type + dict["spec_version"] = signed.SpecVersion + dict["version"] = signed.Version + dict["expires"] = signed.Expires + dict["meta"] = signed.Meta + return json.Marshal(dict) +} + +func (signed *SnapshotType) UnmarshalJSON(data []byte) error { + type Alias SnapshotType + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = SnapshotType(s) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "_type") + delete(dict, "spec_version") + delete(dict, "version") + delete(dict, "expires") + delete(dict, "meta") + signed.UnrecognizedFields = dict + return nil +} + +func (signed TimestampType) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + dict["_type"] = signed.Type + dict["spec_version"] = signed.SpecVersion + dict["version"] = signed.Version + dict["expires"] = signed.Expires + dict["meta"] = signed.Meta + return json.Marshal(dict) +} + +func (signed *TimestampType) UnmarshalJSON(data []byte) error { + type Alias TimestampType + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = TimestampType(s) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "_type") + delete(dict, "spec_version") + delete(dict, "version") + delete(dict, "expires") + delete(dict, "meta") + signed.UnrecognizedFields = dict + return nil +} + +func (signed TargetsType) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + dict["_type"] = signed.Type + dict["spec_version"] = signed.SpecVersion + dict["version"] = signed.Version + dict["expires"] = signed.Expires + dict["targets"] = signed.Targets + if signed.Delegations != nil { + dict["delegations"] = signed.Delegations + } + return json.Marshal(dict) +} + +func (signed *TargetsType) UnmarshalJSON(data []byte) error { + type Alias TargetsType + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = TargetsType(s) + + // populate the path field for each target + for name, targetFile := range signed.Targets { + targetFile.Path = name + } + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "_type") + delete(dict, "spec_version") + delete(dict, "version") + delete(dict, "expires") + delete(dict, "targets") + delete(dict, "delegations") + signed.UnrecognizedFields = dict + return nil +} + +func (signed MetaFiles) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + // length and hashes are optional + if signed.Length != 0 { + dict["length"] = signed.Length + } + if len(signed.Hashes) != 0 { + dict["hashes"] = signed.Hashes + } + dict["version"] = signed.Version + return json.Marshal(dict) +} + +func (signed *MetaFiles) UnmarshalJSON(data []byte) error { + type Alias MetaFiles + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = MetaFiles(s) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "length") + delete(dict, "hashes") + delete(dict, "version") + signed.UnrecognizedFields = dict + return nil +} + +func (signed TargetFiles) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(signed.UnrecognizedFields) != 0 { + copyMapValues(signed.UnrecognizedFields, dict) + } + dict["length"] = signed.Length + dict["hashes"] = signed.Hashes + if signed.Custom != nil { + dict["custom"] = signed.Custom + } + return json.Marshal(dict) +} + +func (signed *TargetFiles) UnmarshalJSON(data []byte) error { + type Alias TargetFiles + var s Alias + if err := json.Unmarshal(data, &s); err != nil { + return err + } + *signed = TargetFiles(s) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "length") + delete(dict, "hashes") + delete(dict, "custom") + signed.UnrecognizedFields = dict + return nil +} + +func (key Key) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(key.UnrecognizedFields) != 0 { + copyMapValues(key.UnrecognizedFields, dict) + } + dict["keytype"] = key.Type + dict["scheme"] = key.Scheme + dict["keyval"] = key.Value + return json.Marshal(dict) +} + +func (key *Key) UnmarshalJSON(data []byte) error { + type Alias Key + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + // nolint + *key = Key(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "keytype") + delete(dict, "scheme") + delete(dict, "keyval") + key.UnrecognizedFields = dict + return nil +} + +func (meta Metadata[T]) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(meta.UnrecognizedFields) != 0 { + copyMapValues(meta.UnrecognizedFields, dict) + } + dict["signed"] = meta.Signed + dict["signatures"] = meta.Signatures + return json.Marshal(dict) +} + +func (meta *Metadata[T]) UnmarshalJSON(data []byte) error { + tmp := any(new(T)) + var m map[string]any + if err := json.Unmarshal(data, &m); err != nil { + return err + } + switch tmp.(type) { + case *RootType: + dict := struct { + Signed RootType `json:"signed"` + Signatures []Signature `json:"signatures"` + }{} + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + var i interface{} = dict.Signed + meta.Signed = i.(T) + meta.Signatures = dict.Signatures + case *SnapshotType: + dict := struct { + Signed SnapshotType `json:"signed"` + Signatures []Signature `json:"signatures"` + }{} + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + var i interface{} = dict.Signed + meta.Signed = i.(T) + meta.Signatures = dict.Signatures + case *TimestampType: + dict := struct { + Signed TimestampType `json:"signed"` + Signatures []Signature `json:"signatures"` + }{} + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + var i interface{} = dict.Signed + meta.Signed = i.(T) + meta.Signatures = dict.Signatures + case *TargetsType: + dict := struct { + Signed TargetsType `json:"signed"` + Signatures []Signature `json:"signatures"` + }{} + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + var i interface{} = dict.Signed + meta.Signed = i.(T) + meta.Signatures = dict.Signatures + default: + return ErrValue{Msg: "unrecognized metadata type"} + } + delete(m, "signed") + delete(m, "signatures") + meta.UnrecognizedFields = m + return nil +} + +func (s Signature) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(s.UnrecognizedFields) != 0 { + copyMapValues(s.UnrecognizedFields, dict) + } + dict["keyid"] = s.KeyID + dict["sig"] = s.Signature + return json.Marshal(dict) +} + +func (s *Signature) UnmarshalJSON(data []byte) error { + type Alias Signature + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *s = Signature(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "keyid") + delete(dict, "sig") + s.UnrecognizedFields = dict + return nil +} + +func (kv KeyVal) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(kv.UnrecognizedFields) != 0 { + copyMapValues(kv.UnrecognizedFields, dict) + } + dict["public"] = kv.PublicKey + return json.Marshal(dict) +} + +func (kv *KeyVal) UnmarshalJSON(data []byte) error { + type Alias KeyVal + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *kv = KeyVal(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "public") + kv.UnrecognizedFields = dict + return nil +} + +func (role Role) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(role.UnrecognizedFields) != 0 { + copyMapValues(role.UnrecognizedFields, dict) + } + dict["keyids"] = role.KeyIDs + dict["threshold"] = role.Threshold + return json.Marshal(dict) +} + +func (role *Role) UnmarshalJSON(data []byte) error { + type Alias Role + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *role = Role(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "keyids") + delete(dict, "threshold") + role.UnrecognizedFields = dict + return nil +} + +func (d Delegations) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(d.UnrecognizedFields) != 0 { + copyMapValues(d.UnrecognizedFields, dict) + } + // only one is allowed + dict["keys"] = d.Keys + if d.Roles != nil { + dict["roles"] = d.Roles + } else if d.SuccinctRoles != nil { + dict["succinct_roles"] = d.SuccinctRoles + } + return json.Marshal(dict) +} + +func (d *Delegations) UnmarshalJSON(data []byte) error { + type Alias Delegations + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *d = Delegations(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "keys") + delete(dict, "roles") + delete(dict, "succinct_roles") + d.UnrecognizedFields = dict + return nil +} + +func (role DelegatedRole) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(role.UnrecognizedFields) != 0 { + copyMapValues(role.UnrecognizedFields, dict) + } + dict["name"] = role.Name + dict["keyids"] = role.KeyIDs + dict["threshold"] = role.Threshold + dict["terminating"] = role.Terminating + // make sure we have only one of the two (per spec) + if role.Paths != nil && role.PathHashPrefixes != nil { + return nil, ErrValue{Msg: "failed to marshal: not allowed to have both \"paths\" and \"path_hash_prefixes\" present"} + } + if role.Paths != nil { + dict["paths"] = role.Paths + } else if role.PathHashPrefixes != nil { + dict["path_hash_prefixes"] = role.PathHashPrefixes + } + return json.Marshal(dict) +} + +func (role *DelegatedRole) UnmarshalJSON(data []byte) error { + type Alias DelegatedRole + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *role = DelegatedRole(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "name") + delete(dict, "keyids") + delete(dict, "threshold") + delete(dict, "terminating") + delete(dict, "paths") + delete(dict, "path_hash_prefixes") + role.UnrecognizedFields = dict + return nil +} + +func (role SuccinctRoles) MarshalJSON() ([]byte, error) { + dict := map[string]any{} + if len(role.UnrecognizedFields) != 0 { + copyMapValues(role.UnrecognizedFields, dict) + } + dict["keyids"] = role.KeyIDs + dict["threshold"] = role.Threshold + dict["bit_length"] = role.BitLength + dict["name_prefix"] = role.NamePrefix + return json.Marshal(dict) +} + +func (role *SuccinctRoles) UnmarshalJSON(data []byte) error { + type Alias SuccinctRoles + var a Alias + if err := json.Unmarshal(data, &a); err != nil { + return err + } + *role = SuccinctRoles(a) + + var dict map[string]any + if err := json.Unmarshal(data, &dict); err != nil { + return err + } + delete(dict, "keyids") + delete(dict, "threshold") + delete(dict, "bit_length") + delete(dict, "name_prefix") + role.UnrecognizedFields = dict + return nil +} + +func (b *HexBytes) UnmarshalJSON(data []byte) error { + if len(data) < 2 || len(data)%2 != 0 || data[0] != '"' || data[len(data)-1] != '"' { + return errors.New("tuf: invalid JSON hex bytes") + } + res := make([]byte, hex.DecodedLen(len(data)-2)) + _, err := hex.Decode(res, data[1:len(data)-1]) + if err != nil { + return err + } + *b = res + return nil +} + +func (b HexBytes) MarshalJSON() ([]byte, error) { + res := make([]byte, hex.EncodedLen(len(b))+2) + res[0] = '"' + res[len(res)-1] = '"' + hex.Encode(res[1:], b) + return res, nil +} + +func (b HexBytes) String() string { + return hex.EncodeToString(b) +} + +// copyMapValues copies the values of the src map to dst +func copyMapValues(src, dst map[string]any) { + for k, v := range src { + dst[k] = v + } +} diff --git a/metadata/metadata.go b/metadata/metadata.go new file mode 100644 index 00000000..c017773f --- /dev/null +++ b/metadata/metadata.go @@ -0,0 +1,907 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "bytes" + "crypto" + "crypto/hmac" + "crypto/sha256" + "crypto/sha512" + "encoding/base64" + "encoding/binary" + "encoding/hex" + "encoding/json" + "fmt" + "hash" + "io" + "math" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + "github.com/secure-systems-lab/go-securesystemslib/cjson" + "github.com/sigstore/sigstore/pkg/signature" + "golang.org/x/exp/slices" +) + +// Root return new metadata instance of type Root +func Root(expires ...time.Time) *Metadata[RootType] { + // expire now if there's nothing set + if len(expires) == 0 { + expires = []time.Time{time.Now().UTC()} + } + // populate Roles + roles := map[string]*Role{} + for _, r := range []string{ROOT, SNAPSHOT, TARGETS, TIMESTAMP} { + roles[r] = &Role{ + KeyIDs: []string{}, + Threshold: 1, + } + } + log.Info("Created metadata", "type", ROOT) + return &Metadata[RootType]{ + Signed: RootType{ + Type: ROOT, + SpecVersion: SPECIFICATION_VERSION, + Version: 1, + Expires: expires[0], + Keys: map[string]*Key{}, + Roles: roles, + ConsistentSnapshot: true, + }, + Signatures: []Signature{}, + } +} + +// Snapshot return new metadata instance of type Snapshot +func Snapshot(expires ...time.Time) *Metadata[SnapshotType] { + // expire now if there's nothing set + if len(expires) == 0 { + expires = []time.Time{time.Now().UTC()} + } + log.Info("Created metadata", "type", SNAPSHOT) + return &Metadata[SnapshotType]{ + Signed: SnapshotType{ + Type: SNAPSHOT, + SpecVersion: SPECIFICATION_VERSION, + Version: 1, + Expires: expires[0], + Meta: map[string]*MetaFiles{ + "targets.json": { + Version: 1, + }, + }, + }, + Signatures: []Signature{}, + } +} + +// Timestamp return new metadata instance of type Timestamp +func Timestamp(expires ...time.Time) *Metadata[TimestampType] { + // expire now if there's nothing set + if len(expires) == 0 { + expires = []time.Time{time.Now().UTC()} + } + log.Info("Created metadata", "type", TIMESTAMP) + return &Metadata[TimestampType]{ + Signed: TimestampType{ + Type: TIMESTAMP, + SpecVersion: SPECIFICATION_VERSION, + Version: 1, + Expires: expires[0], + Meta: map[string]*MetaFiles{ + "snapshot.json": { + Version: 1, + }, + }, + }, + Signatures: []Signature{}, + } +} + +// Targets return new metadata instance of type Targets +func Targets(expires ...time.Time) *Metadata[TargetsType] { + // expire now if there's nothing set + if len(expires) == 0 { + expires = []time.Time{time.Now().UTC()} + } + log.Info("Created metadata", "type", TARGETS) + return &Metadata[TargetsType]{ + Signed: TargetsType{ + Type: TARGETS, + SpecVersion: SPECIFICATION_VERSION, + Version: 1, + Expires: expires[0], + Targets: map[string]*TargetFiles{}, + }, + Signatures: []Signature{}, + } +} + +// TargetFile return new metadata instance of type TargetFiles +func TargetFile() *TargetFiles { + return &TargetFiles{ + Length: 0, + Hashes: Hashes{}, + } +} + +// MetaFile return new metadata instance of type MetaFile +func MetaFile(version int64) *MetaFiles { + if version < 1 { + // attempting to set incorrect version + log.Info("Attempting to set incorrect version for MetaFile", "version", version) + version = 1 + } + return &MetaFiles{ + Length: 0, + Hashes: Hashes{}, + Version: version, + } +} + +// FromFile load metadata from file +func (meta *Metadata[T]) FromFile(name string) (*Metadata[T], error) { + in, err := os.Open(name) + if err != nil { + return nil, err + } + defer in.Close() + data, err := io.ReadAll(in) + if err != nil { + return nil, err + } + m, err := fromBytes[T](data) + if err != nil { + return nil, err + } + *meta = *m + log.Info("Loaded metadata from file", "name", name) + return meta, nil +} + +// FromBytes deserialize metadata from bytes +func (meta *Metadata[T]) FromBytes(data []byte) (*Metadata[T], error) { + m, err := fromBytes[T](data) + if err != nil { + return nil, err + } + *meta = *m + log.Info("Loaded metadata from bytes") + return meta, nil +} + +// ToBytes serialize metadata to bytes +func (meta *Metadata[T]) ToBytes(pretty bool) ([]byte, error) { + log.Info("Writing metadata to bytes") + if pretty { + return json.MarshalIndent(*meta, "", "\t") + } + return json.Marshal(*meta) +} + +// ToFile save metadata to file +func (meta *Metadata[T]) ToFile(name string, pretty bool) error { + log.Info("Writing metadata to file", "name", name) + data, err := meta.ToBytes(pretty) + if err != nil { + return err + } + return os.WriteFile(name, data, 0644) +} + +// Sign create signature over Signed and assign it to Signatures +func (meta *Metadata[T]) Sign(signer signature.Signer) (*Signature, error) { + // encode the Signed part to canonical JSON so signatures are consistent + payload, err := cjson.EncodeCanonical(meta.Signed) + if err != nil { + return nil, err + } + // sign the Signed part + sb, err := signer.SignMessage(bytes.NewReader(payload)) + if err != nil { + return nil, ErrUnsignedMetadata{Msg: "problem signing metadata"} + } + // get the signer's PublicKey + publ, err := signer.PublicKey() + if err != nil { + return nil, err + } + // convert to TUF Key type to get keyID + key, err := KeyFromPublicKey(publ) + if err != nil { + return nil, err + } + // build signature + sig := &Signature{ + KeyID: key.ID(), + Signature: sb, + } + // update the Signatures part + meta.Signatures = append(meta.Signatures, *sig) + // return the new signature + log.Info("Signed metadata with key", "ID", key.ID()) + return sig, nil +} + +// VerifyDelegate verifies that delegatedMetadata is signed with the required +// threshold of keys for the delegated role delegatedRole +func (meta *Metadata[T]) VerifyDelegate(delegatedRole string, delegatedMetadata any) error { + i := any(meta) + signingKeys := map[string]bool{} + var keys map[string]*Key + var roleKeyIDs []string + var roleThreshold int + + log.Info("Verifying", "role", delegatedRole) + + // collect keys, keyIDs and threshold based on delegator type + switch i := i.(type) { + // Root delegator + case *Metadata[RootType]: + keys = i.Signed.Keys + if role, ok := (*i).Signed.Roles[delegatedRole]; ok { + roleKeyIDs = role.KeyIDs + roleThreshold = role.Threshold + } else { + // the delegated role was not found, no need to proceed + return ErrValue{Msg: fmt.Sprintf("no delegation found for %s", delegatedRole)} + } + // Targets delegator + case *Metadata[TargetsType]: + if i.Signed.Delegations == nil { + return ErrValue{Msg: "no delegations found"} + } + keys = i.Signed.Delegations.Keys + if i.Signed.Delegations.Roles != nil { + found := false + for _, v := range i.Signed.Delegations.Roles { + if v.Name == delegatedRole { + found = true + roleKeyIDs = v.KeyIDs + roleThreshold = v.Threshold + break + } + } + // the delegated role was not found, no need to proceed + if !found { + return ErrValue{Msg: fmt.Sprintf("no delegation found for %s", delegatedRole)} + } + } else if i.Signed.Delegations.SuccinctRoles != nil { + roleKeyIDs = i.Signed.Delegations.SuccinctRoles.KeyIDs + roleThreshold = i.Signed.Delegations.SuccinctRoles.Threshold + } + default: + return ErrType{Msg: "call is valid only on delegator metadata (should be either root or targets)"} + } + // if there are no keyIDs for that role it means there's no delegation found + if len(roleKeyIDs) == 0 { + return ErrValue{Msg: fmt.Sprintf("no delegation found for %s", delegatedRole)} + } + // loop through each role keyID + for _, keyID := range roleKeyIDs { + key, ok := keys[keyID] + if !ok { + return ErrValue{Msg: fmt.Sprintf("key with ID %s not found in %s keyids", keyID, delegatedRole)} + } + sign := Signature{} + var payload []byte + // convert to a PublicKey type + publicKey, err := key.ToPublicKey() + if err != nil { + return err + } + // use corresponding hash function for key type + hash := crypto.Hash(0) + if key.Type != KeyTypeEd25519 { + hash = crypto.SHA256 + } + // load a verifier based on that key + verifier, err := signature.LoadVerifier(publicKey, hash) + if err != nil { + return err + } + // collect the signature for that key and build the payload we'll verify + // based on the Signed part of the delegated metadata + switch d := delegatedMetadata.(type) { + case *Metadata[RootType]: + for _, signature := range d.Signatures { + if signature.KeyID == keyID { + sign = signature + } + } + payload, err = cjson.EncodeCanonical(d.Signed) + if err != nil { + return err + } + case *Metadata[SnapshotType]: + for _, signature := range d.Signatures { + if signature.KeyID == keyID { + sign = signature + } + } + payload, err = cjson.EncodeCanonical(d.Signed) + if err != nil { + return err + } + case *Metadata[TimestampType]: + for _, signature := range d.Signatures { + if signature.KeyID == keyID { + sign = signature + } + } + payload, err = cjson.EncodeCanonical(d.Signed) + if err != nil { + return err + } + case *Metadata[TargetsType]: + for _, signature := range d.Signatures { + if signature.KeyID == keyID { + sign = signature + } + } + payload, err = cjson.EncodeCanonical(d.Signed) + if err != nil { + return err + } + default: + return ErrType{Msg: "unknown delegated metadata type"} + } + // verify if the signature for that payload corresponds to the given key + if err := verifier.VerifySignature(bytes.NewReader(sign.Signature), bytes.NewReader(payload)); err != nil { + // failed to verify the metadata with that key ID + log.Info("Failed to verify %s with key ID %s", delegatedRole, keyID) + } else { + // save the verified keyID only if verification passed + signingKeys[keyID] = true + log.Info("Verified with key", "role", delegatedRole, "ID", keyID) + } + } + // check if the amount of valid signatures is enough + if len(signingKeys) < roleThreshold { + log.Info("Verifying failed, not enough signatures", "role", delegatedRole, "got", len(signingKeys), "want", roleThreshold) + return ErrUnsignedMetadata{Msg: fmt.Sprintf("Verifying %s failed, not enough signatures, got %d, want %d", delegatedRole, len(signingKeys), roleThreshold)} + } + log.Info("Verified successfully", "role", delegatedRole) + return nil +} + +// IsExpired returns true if metadata is expired. +// It checks if referenceTime is after Signed.Expires +func (signed *RootType) IsExpired(referenceTime time.Time) bool { + return referenceTime.After(signed.Expires) +} + +// IsExpired returns true if metadata is expired. +// It checks if referenceTime is after Signed.Expires +func (signed *SnapshotType) IsExpired(referenceTime time.Time) bool { + return referenceTime.After(signed.Expires) +} + +// IsExpired returns true if metadata is expired. +// It checks if referenceTime is after Signed.Expires +func (signed *TimestampType) IsExpired(referenceTime time.Time) bool { + return referenceTime.After(signed.Expires) +} + +// IsExpired returns true if metadata is expired. +// It checks if referenceTime is after Signed.Expires +func (signed *TargetsType) IsExpired(referenceTime time.Time) bool { + return referenceTime.After(signed.Expires) +} + +// VerifyLengthHashes checks whether the MetaFiles data matches its corresponding +// length and hashes +func (f *MetaFiles) VerifyLengthHashes(data []byte) error { + // hashes and length are optional for MetaFiles + if len(f.Hashes) > 0 { + err := verifyHashes(data, f.Hashes) + if err != nil { + return err + } + } + if f.Length != 0 { + err := verifyLength(data, f.Length) + if err != nil { + return err + } + } + return nil +} + +// VerifyLengthHashes checks whether the TargetFiles data matches its corresponding +// length and hashes +func (f *TargetFiles) VerifyLengthHashes(data []byte) error { + err := verifyHashes(data, f.Hashes) + if err != nil { + return err + } + err = verifyLength(data, f.Length) + if err != nil { + return err + } + return nil +} + +// Equal checks whether the source target file matches another +func (source *TargetFiles) Equal(expected TargetFiles) bool { + if source.Length == expected.Length && source.Hashes.Equal(expected.Hashes) { + return true + } + return false +} + +// FromFile generate TargetFiles from file +func (t *TargetFiles) FromFile(localPath string, hashes ...string) (*TargetFiles, error) { + log.Info("Generating target file from file", "path", localPath) + // open file + in, err := os.Open(localPath) + if err != nil { + return nil, err + } + defer in.Close() + // read file + data, err := io.ReadAll(in) + if err != nil { + return nil, err + } + return t.FromBytes(localPath, data, hashes...) +} + +// FromBytes generate TargetFiles from bytes +func (t *TargetFiles) FromBytes(localPath string, data []byte, hashes ...string) (*TargetFiles, error) { + log.Info("Generating target file from bytes", "path", localPath) + var hasher hash.Hash + targetFile := &TargetFiles{ + Hashes: map[string]HexBytes{}, + } + // use default hash algorithm if not set + if len(hashes) == 0 { + hashes = []string{"sha256"} + } + // calculate length + len, err := io.Copy(io.Discard, bytes.NewReader(data)) + if err != nil { + return nil, err + } + targetFile.Length = len + for _, v := range hashes { + switch v { + case "sha256": + hasher = sha256.New() + case "sha512": + hasher = sha512.New() + default: + return nil, ErrValue{Msg: fmt.Sprintf("failed generating TargetFile - unsupported hashing algorithm - %s", v)} + } + _, err := hasher.Write(data) + if err != nil { + return nil, err + } + targetFile.Hashes[v] = hasher.Sum(nil) + } + targetFile.Path = localPath + return targetFile, nil +} + +// ClearSignatures clears Signatures +func (meta *Metadata[T]) ClearSignatures() { + log.Info("Cleared signatures") + meta.Signatures = []Signature{} +} + +// IsDelegatedPath determines whether the given "targetFilepath" is in one of +// the paths that "DelegatedRole" is trusted to provide +func (role *DelegatedRole) IsDelegatedPath(targetFilepath string) (bool, error) { + if len(role.Paths) > 0 { + // standard delegations + for _, pathPattern := range role.Paths { + // A delegated role path may be an explicit path or glob + // pattern (Unix shell-style wildcards). + if isTargetInPathPattern(targetFilepath, pathPattern) { + return true, nil + } + } + } else if len(role.PathHashPrefixes) > 0 { + // hash bin delegations - calculate the hash of the filepath to determine in which bin to find the target. + targetFilepathHash := sha256.Sum256([]byte(targetFilepath)) + for _, pathHashPrefix := range role.PathHashPrefixes { + if strings.HasPrefix(base64.URLEncoding.EncodeToString(targetFilepathHash[:]), pathHashPrefix) { + return true, nil + } + } + } + return false, nil +} + +// Determine whether β€œtargetpathβ€œ matches the β€œpathpatternβ€œ. +func isTargetInPathPattern(targetpath string, pathpattern string) bool { + // We need to make sure that targetpath and pathpattern are pointing to + // the same directory as fnmatch doesn't threat "/" as a special symbol. + targetParts := strings.Split(targetpath, "/") + patternParts := strings.Split(pathpattern, "/") + if len(targetParts) != len(patternParts) { + return false + } + + // Every part in the pathpattern could include a glob pattern, that's why + // each of the target and pathpattern parts should match. + for i := 0; i < len(targetParts); i++ { + if ok, _ := filepath.Match(patternParts[i], targetParts[i]); !ok { + return false + } + } + + return true +} + +// GetRolesForTarget return the names and terminating status of all +// delegated roles who are responsible for targetFilepath +func (role *Delegations) GetRolesForTarget(targetFilepath string) map[string]bool { + res := map[string]bool{} + // standard delegations + if role.Roles != nil { + for _, r := range role.Roles { + ok, err := r.IsDelegatedPath(targetFilepath) + if err == nil && ok { + res[r.Name] = r.Terminating + } + } + } else if role.SuccinctRoles != nil { + // SuccinctRoles delegations + res = role.SuccinctRoles.GetRolesForTarget(targetFilepath) + } + return res +} + +// GetRolesForTarget calculate the name of the delegated role responsible for "targetFilepath". +// The target at path "targetFilepath" is assigned to a bin by casting +// the left-most "BitLength" of bits of the file path hash digest to +// int, using it as bin index between 0 and β€œ2**BitLength - 1β€œ. +func (role *SuccinctRoles) GetRolesForTarget(targetFilepath string) map[string]bool { + // calculate the suffixLen value based on the total number of bins in + // hex. If bit_length = 10 then numberOfBins = 1024 or bin names will + // have a suffix between "000" and "3ff" in hex and suffixLen will be 3 + // meaning the third bin will have a suffix of "003" + numberOfBins := math.Pow(2, float64(role.BitLength)) + // suffixLen is calculated based on "numberOfBins - 1" as the name + // of the last bin contains the number "numberOfBins -1" as a suffix. + suffixLen := len(strconv.FormatInt(int64(numberOfBins-1), 16)) + + targetFilepathHash := sha256.Sum256([]byte(targetFilepath)) + // we can't ever need more than 4 bytes (32 bits) + hashBytes := targetFilepathHash[:4] + + // right shift hash bytes, so that we only have the leftmost + // bit_length bits that we care about + shiftValue := 32 - role.BitLength + binNumber := binary.BigEndian.Uint32(hashBytes) >> shiftValue + // add zero padding if necessary and cast to hex the suffix + suffix := fmt.Sprintf("%0*x", suffixLen, binNumber) + // we consider all succinct_roles as terminating. + // for more information read TAP 15. + return map[string]bool{fmt.Sprintf("%s-%s", role.NamePrefix, suffix): true} +} + +// GetRoles returns the names of all different delegated roles +func (role *SuccinctRoles) GetRoles() []string { + res := []string{} + suffixLen, numberOfBins := role.GetSuffixLen() + + for binNumber := 0; binNumber < numberOfBins; binNumber++ { + suffix := fmt.Sprintf("%0*x", suffixLen, binNumber) + res = append(res, fmt.Sprintf("%s-%s", role.NamePrefix, suffix)) + } + return res +} + +func (role *SuccinctRoles) GetSuffixLen() (int, int) { + numberOfBins := int(math.Pow(2, float64(role.BitLength))) + return len(strconv.FormatInt(int64(numberOfBins-1), 16)), numberOfBins +} + +// IsDelegatedRole returns whether the given roleName is in one of +// the delegated roles that β€œSuccinctRolesβ€œ represents +func (role *SuccinctRoles) IsDelegatedRole(roleName string) bool { + suffixLen, numberOfBins := role.GetSuffixLen() + + expectedPrefix := fmt.Sprintf("%s-", role.NamePrefix) + + // check if the roleName prefix is what we would expect + if !strings.HasPrefix(roleName, expectedPrefix) { + return false + } + + // check if the roleName suffix length is what we would expect + suffix := roleName[len(expectedPrefix):] + if len(suffix) != suffixLen { + return false + } + + // make sure suffix is hex value and get bin number + value, err := strconv.ParseInt(suffix, 16, 64) + if err != nil { + return false + } + + // check if the bin we calculated is indeed within the range of what we support + return (value >= 0) && (value < int64(numberOfBins)) +} + +// AddKey adds new signing key for delegated role "role" +// keyID: Identifier of the key to be added for β€œroleβ€œ. +// key: Signing key to be added for β€œroleβ€œ. +// role: Name of the role, for which β€œkeyβ€œ is added. +func (signed *RootType) AddKey(key *Key, role string) error { + // verify role is present + if _, ok := signed.Roles[role]; !ok { + return ErrValue{Msg: fmt.Sprintf("role %s doesn't exist", role)} + } + // add keyID to role + if !slices.Contains(signed.Roles[role].KeyIDs, key.ID()) { + signed.Roles[role].KeyIDs = append(signed.Roles[role].KeyIDs, key.ID()) + } + // update Keys + signed.Keys[key.ID()] = key // TODO: should we check if we don't accidentally override an existing keyID with another key value? + return nil +} + +// RevokeKey revoke key from β€œroleβ€œ and updates the Keys store. +// keyID: Identifier of the key to be removed for β€œroleβ€œ. +// role: Name of the role, for which a signing key is removed. +func (signed *RootType) RevokeKey(keyID, role string) error { + // verify role is present + if _, ok := signed.Roles[role]; !ok { + return ErrValue{Msg: fmt.Sprintf("role %s doesn't exist", role)} + } + // verify keyID is present for given role + if !slices.Contains(signed.Roles[role].KeyIDs, keyID) { + return ErrValue{Msg: fmt.Sprintf("key with id %s is not used by %s", keyID, role)} + } + // remove keyID from role + filteredKeyIDs := []string{} + for _, k := range signed.Roles[role].KeyIDs { + if k != keyID { + filteredKeyIDs = append(filteredKeyIDs, k) + } + } + // overwrite the old keyID slice + signed.Roles[role].KeyIDs = filteredKeyIDs + // check if keyID is used by other roles too + for _, r := range signed.Roles { + if slices.Contains(r.KeyIDs, keyID) { + return nil + } + } + // delete the keyID from Keys if it's not used anywhere else + delete(signed.Keys, keyID) + return nil +} + +// AddKey adds new signing key for delegated role "role" +// key: Signing key to be added for β€œroleβ€œ. +// role: Name of the role, for which β€œkeyβ€œ is added. +// If SuccinctRoles is used then the "role" argument can be ignored. +func (signed *TargetsType) AddKey(key *Key, role string) error { + // check if Delegations are even present + if signed.Delegations == nil { + return ErrValue{Msg: fmt.Sprintf("delegated role %s doesn't exist", role)} + } + // standard delegated roles + if signed.Delegations.Roles != nil { + // loop through all delegated roles + isDelegatedRole := false + for i, d := range signed.Delegations.Roles { + // if role is found + if d.Name == role { + isDelegatedRole = true + // add key if keyID is not already part of keyIDs for that role + if !slices.Contains(d.KeyIDs, key.ID()) { + signed.Delegations.Roles[i].KeyIDs = append(signed.Delegations.Roles[i].KeyIDs, key.ID()) + signed.Delegations.Keys[key.ID()] = key // TODO: should we check if we don't accidentally override an existing keyID with another key value? + return nil + } + log.Info("Delegated role already has keyID", "role", role, "ID", key.ID()) + } + } + if !isDelegatedRole { + return ErrValue{Msg: fmt.Sprintf("delegated role %s doesn't exist", role)} + } + } else if signed.Delegations.SuccinctRoles != nil { + // add key if keyID is not already part of keyIDs for the SuccinctRoles role + if !slices.Contains(signed.Delegations.SuccinctRoles.KeyIDs, key.ID()) { + signed.Delegations.SuccinctRoles.KeyIDs = append(signed.Delegations.SuccinctRoles.KeyIDs, key.ID()) + signed.Delegations.Keys[key.ID()] = key // TODO: should we check if we don't accidentally override an existing keyID with another key value? + return nil + } + log.Info("SuccinctRoles role already has keyID", "ID", key.ID()) + + } + signed.Delegations.Keys[key.ID()] = key // TODO: should we check if we don't accidentally override an existing keyID with another key value? + return nil +} + +// RevokeKey revokes key from delegated role "role" and updates the delegations key store +// keyID: Identifier of the key to be removed for β€œroleβ€œ. +// role: Name of the role, for which a signing key is removed. +func (signed *TargetsType) RevokeKey(keyID string, role string) error { + // check if Delegations are even present + if signed.Delegations == nil { + return ErrValue{Msg: fmt.Sprintf("delegated role %s doesn't exist", role)} + } + // standard delegated roles + if signed.Delegations.Roles != nil { + // loop through all delegated roles + for i, d := range signed.Delegations.Roles { + // if role is found + if d.Name == role { + // check if keyID is present in keyIDs for that role + if !slices.Contains(d.KeyIDs, keyID) { + return ErrValue{Msg: fmt.Sprintf("key with id %s is not used by %s", keyID, role)} + } + // remove keyID from role + filteredKeyIDs := []string{} + for _, k := range signed.Delegations.Roles[i].KeyIDs { + if k != keyID { + filteredKeyIDs = append(filteredKeyIDs, k) + } + } + // overwrite the old keyID slice for that role + signed.Delegations.Roles[i].KeyIDs = filteredKeyIDs + // check if keyID is used by other roles too + for _, r := range signed.Delegations.Roles { + if slices.Contains(r.KeyIDs, keyID) { + return nil + } + } + // delete the keyID from Keys if it's not used anywhere else + delete(signed.Delegations.Keys, keyID) + return nil + } + } + // we haven't found the delegated role + return ErrValue{Msg: fmt.Sprintf("delegated role %s doesn't exist", role)} + } else if signed.Delegations.SuccinctRoles != nil { + // check if keyID is used by SuccinctRoles role + if !slices.Contains(signed.Delegations.SuccinctRoles.KeyIDs, keyID) { + return ErrValue{Msg: fmt.Sprintf("key with id %s is not used by SuccinctRoles", keyID)} + } + // remove keyID from the SuccinctRoles role + filteredKeyIDs := []string{} + for _, k := range signed.Delegations.SuccinctRoles.KeyIDs { + if k != keyID { + filteredKeyIDs = append(filteredKeyIDs, k) + } + } + // overwrite the old keyID slice for SuccinctRoles role + signed.Delegations.SuccinctRoles.KeyIDs = filteredKeyIDs + + // delete the keyID from Keys since it can not be used anywhere else + delete(signed.Delegations.Keys, keyID) + return nil + } + return ErrValue{Msg: fmt.Sprintf("delegated role %s doesn't exist", role)} +} + +// Equal checks whether one hash set equals another +func (source Hashes) Equal(expected Hashes) bool { + hashChecked := false + for typ, hash := range expected { + if h, ok := source[typ]; ok { + // hash type match found + hashChecked = true + if !hmac.Equal(h, hash) { + // hash values don't match + return false + } + } + } + return hashChecked +} + +// verifyLength verifies if the passed data has the corresponding length +func verifyLength(data []byte, length int64) error { + len, err := io.Copy(io.Discard, bytes.NewReader(data)) + if err != nil { + return err + } + if length != len { + return ErrLengthOrHashMismatch{Msg: fmt.Sprintf("length verification failed - expected %d, got %d", length, len)} + } + return nil +} + +// verifyHashes verifies if the hash of the passed data corresponds to it +func verifyHashes(data []byte, hashes Hashes) error { + var hasher hash.Hash + for k, v := range hashes { + switch k { + case "sha256": + hasher = sha256.New() + case "sha512": + hasher = sha512.New() + default: + return ErrLengthOrHashMismatch{Msg: fmt.Sprintf("hash verification failed - unknown hashing algorithm - %s", k)} + } + hasher.Write(data) + if hex.EncodeToString(v) != hex.EncodeToString(hasher.Sum(nil)) { + return ErrLengthOrHashMismatch{Msg: fmt.Sprintf("hash verification failed - mismatch for algorithm %s", k)} + } + } + return nil +} + +// fromBytes return a *Metadata[T] object from bytes and verifies +// that the data corresponds to the caller struct type +func fromBytes[T Roles](data []byte) (*Metadata[T], error) { + meta := &Metadata[T]{} + // verify that the type we used to create the object is the same as the type of the metadata file + if err := checkType[T](data); err != nil { + return nil, err + } + // if all is okay, unmarshal meta to the desired Metadata[T] type + if err := json.Unmarshal(data, meta); err != nil { + return nil, err + } + // Make sure signature key IDs are unique + if err := checkUniqueSignatures(*meta); err != nil { + return nil, err + } + return meta, nil +} + +// checkUniqueSignatures verifies if the signature key IDs are unique for that metadata +func checkUniqueSignatures[T Roles](meta Metadata[T]) error { + signatures := []string{} + for _, sig := range meta.Signatures { + if slices.Contains(signatures, sig.KeyID) { + return ErrValue{Msg: fmt.Sprintf("multiple signatures found for key ID %s", sig.KeyID)} + } + signatures = append(signatures, sig.KeyID) + } + return nil +} + +// checkType verifies if the generic type used to create the object is the same as the type of the metadata file in bytes +func checkType[T Roles](data []byte) error { + var m map[string]any + i := any(new(T)) + if err := json.Unmarshal(data, &m); err != nil { + return err + } + signedType := m["signed"].(map[string]any)["_type"].(string) + switch i.(type) { + case *RootType: + if ROOT != signedType { + return ErrValue{Msg: fmt.Sprintf("expected metadata type %s, got - %s", ROOT, signedType)} + } + case *SnapshotType: + if SNAPSHOT != signedType { + return ErrValue{Msg: fmt.Sprintf("expected metadata type %s, got - %s", SNAPSHOT, signedType)} + } + case *TimestampType: + if TIMESTAMP != signedType { + return ErrValue{Msg: fmt.Sprintf("expected metadata type %s, got - %s", TIMESTAMP, signedType)} + } + case *TargetsType: + if TARGETS != signedType { + return ErrValue{Msg: fmt.Sprintf("expected metadata type %s, got - %s", TARGETS, signedType)} + } + default: + return ErrValue{Msg: fmt.Sprintf("unrecognized metadata type - %s", signedType)} + } + // all okay + return nil +} diff --git a/metadata/metadata_api_test.go b/metadata/metadata_api_test.go new file mode 100644 index 00000000..54682f19 --- /dev/null +++ b/metadata/metadata_api_test.go @@ -0,0 +1,971 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "bytes" + "crypto" + "crypto/sha256" + "encoding/json" + "fmt" + "io/fs" + "os" + "strconv" + "strings" + "testing" + "time" + + "github.com/sigstore/sigstore/pkg/cryptoutils" + "github.com/sigstore/sigstore/pkg/signature" + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/v2/testutils/testutils" + "golang.org/x/sys/unix" +) + +func TestMain(m *testing.M) { + + repoPath := "../testutils/repository_data/repository/metadata" + targetsPath := "../testutils/repository_data/repository/targets" + keystorePath := "../testutils/repository_data/keystore" + err := testutils.SetupTestDirs(repoPath, targetsPath, keystorePath) + defer testutils.Cleanup() + + if err != nil { + log.Error(err, "failed to setup test dirs") + os.Exit(1) + } + m.Run() +} + +func TestGenericRead(t *testing.T) { + // Assert that it chokes correctly on an unknown metadata type + badMetadata := "{\"signed\": {\"_type\": \"bad-metadata\"}}" + _, err := Root().FromBytes([]byte(badMetadata)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type root, got - bad-metadata"}) + _, err = Snapshot().FromBytes([]byte(badMetadata)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type snapshot, got - bad-metadata"}) + _, err = Targets().FromBytes([]byte(badMetadata)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type targets, got - bad-metadata"}) + _, err = Timestamp().FromBytes([]byte(badMetadata)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type timestamp, got - bad-metadata"}) + + badMetadataPath := fmt.Sprintf("%s/bad-metadata.json", testutils.RepoDir) + err = os.WriteFile(badMetadataPath, []byte(badMetadata), 0644) + assert.NoError(t, err) + assert.FileExists(t, badMetadataPath) + + _, err = Root().FromFile(badMetadataPath) + assert.ErrorIs(t, err, ErrValue{"expected metadata type root, got - bad-metadata"}) + _, err = Snapshot().FromFile(badMetadataPath) + assert.ErrorIs(t, err, ErrValue{"expected metadata type snapshot, got - bad-metadata"}) + _, err = Targets().FromFile(badMetadataPath) + assert.ErrorIs(t, err, ErrValue{"expected metadata type targets, got - bad-metadata"}) + _, err = Timestamp().FromFile(badMetadataPath) + assert.ErrorIs(t, err, ErrValue{"expected metadata type timestamp, got - bad-metadata"}) + + err = os.RemoveAll(badMetadataPath) + assert.NoError(t, err) + assert.NoFileExists(t, badMetadataPath) +} + +func TestGenericReadFromMismatchingRoles(t *testing.T) { + // Test failing to load other roles from root metadata + _, err := Snapshot().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type snapshot, got - root"}) + _, err = Timestamp().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type timestamp, got - root"}) + _, err = Targets().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type targets, got - root"}) + + // Test failing to load other roles from targets metadata + _, err = Snapshot().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type snapshot, got - targets"}) + _, err = Timestamp().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type timestamp, got - targets"}) + _, err = Root().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type root, got - targets"}) + + // Test failing to load other roles from timestamp metadata + _, err = Snapshot().FromFile(fmt.Sprintf("%s/timestamp.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type snapshot, got - timestamp"}) + _, err = Targets().FromFile(fmt.Sprintf("%s/timestamp.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type targets, got - timestamp"}) + _, err = Root().FromFile(fmt.Sprintf("%s/timestamp.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type root, got - timestamp"}) + + // Test failing to load other roles from snapshot metadata + _, err = Targets().FromFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type targets, got - snapshot"}) + _, err = Timestamp().FromFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type timestamp, got - snapshot"}) + _, err = Root().FromFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.ErrorIs(t, err, ErrValue{"expected metadata type root, got - snapshot"}) +} + +func TestMDReadWriteFileExceptions(t *testing.T) { + // Test writing to a file with bad filename + badMetadataPath := fmt.Sprintf("%s/bad-metadata.json", testutils.RepoDir) + _, err := Root().FromFile(badMetadataPath) + expectedErr := fs.PathError{ + Op: "open", + Path: badMetadataPath, + Err: unix.ENOENT, + } + assert.ErrorIs(t, err, expectedErr.Err) + + // Test serializing to a file with bad filename + root := Root(fixedExpire) + err = root.ToFile("", false) + expectedErr = fs.PathError{ + Op: "open", + Path: "", + Err: unix.ENOENT, + } + assert.ErrorIs(t, err, expectedErr.Err) +} + +func TestCompareFromBytesFromFileToBytes(t *testing.T) { + rootBytesWant, err := os.ReadFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.NoError(t, err) + root, err := Root().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.NoError(t, err) + rootBytesActual, err := root.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, rootBytesWant, rootBytesActual) + + targetsBytesWant, err := os.ReadFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.NoError(t, err) + targets, err := Targets().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.NoError(t, err) + targetsBytesActual, err := targets.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, targetsBytesWant, targetsBytesActual) + + snapshotBytesWant, err := os.ReadFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.NoError(t, err) + snapshot, err := Snapshot().FromFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.NoError(t, err) + snapshotBytesActual, err := snapshot.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, snapshotBytesWant, snapshotBytesActual) + + timestampBytesWant, err := os.ReadFile(fmt.Sprintf("%s/timestamp.json", testutils.RepoDir)) + assert.NoError(t, err) + timestamp, err := Timestamp().FromFile(fmt.Sprintf("%s/timestamp.json", testutils.RepoDir)) + assert.NoError(t, err) + timestampBytesActual, err := timestamp.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, timestampBytesWant, timestampBytesActual) +} + +func TestRootReadWriteReadCompare(t *testing.T) { + src := testutils.RepoDir + "/root.json" + srcRoot, err := Root().FromFile(src) + assert.NoError(t, err) + + dst := src + ".tmp" + err = srcRoot.ToFile(dst, false) + assert.NoError(t, err) + + dstRoot, err := Root().FromFile(dst) + assert.NoError(t, err) + + srcBytes, err := srcRoot.ToBytes(false) + assert.NoError(t, err) + dstBytes, err := dstRoot.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, srcBytes, dstBytes) + + err = os.RemoveAll(dst) + assert.NoError(t, err) +} + +func TestSnapshotReadWriteReadCompare(t *testing.T) { + path1 := testutils.RepoDir + "/snapshot.json" + snaphot1, err := Snapshot().FromFile(path1) + assert.NoError(t, err) + + path2 := path1 + ".tmp" + err = snaphot1.ToFile(path2, false) + assert.NoError(t, err) + + snapshot2, err := Snapshot().FromFile(path2) + assert.NoError(t, err) + + bytes1, err := snaphot1.ToBytes(false) + assert.NoError(t, err) + bytes2, err := snapshot2.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, bytes1, bytes2) + + err = os.RemoveAll(path2) + assert.NoError(t, err) +} + +func TestTargetsReadWriteReadCompare(t *testing.T) { + path1 := testutils.RepoDir + "/targets.json" + targets1, err := Targets().FromFile(path1) + assert.NoError(t, err) + + path2 := path1 + ".tmp" + err = targets1.ToFile(path2, false) + assert.NoError(t, err) + + targets2, err := Targets().FromFile(path2) + assert.NoError(t, err) + + bytes1, err := targets1.ToBytes(false) + assert.NoError(t, err) + bytes2, err := targets2.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, bytes1, bytes2) + + err = os.RemoveAll(path2) + assert.NoError(t, err) +} + +func TestTimestampReadWriteReadCompare(t *testing.T) { + path1 := testutils.RepoDir + "/timestamp.json" + timestamp1, err := Timestamp().FromFile(path1) + assert.NoError(t, err) + + path2 := path1 + ".tmp" + err = timestamp1.ToFile(path2, false) + assert.NoError(t, err) + + timestamp2, err := Timestamp().FromFile(path2) + assert.NoError(t, err) + + bytes1, err := timestamp1.ToBytes(false) + assert.NoError(t, err) + bytes2, err := timestamp2.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, bytes1, bytes2) + + err = os.RemoveAll(path2) + assert.NoError(t, err) +} + +func TestToFromBytes(t *testing.T) { + // ROOT + data, err := os.ReadFile(testutils.RepoDir + "/root.json") + assert.NoError(t, err) + root, err := Root().FromBytes(data) + assert.NoError(t, err) + + // Comparate that from_bytes/to_bytes doesn't change the content + // for two cases for the serializer: noncompact and compact. + + // Case 1: test noncompact by overriding the default serializer. + rootBytesWant, err := root.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, data, rootBytesWant) + + // Case 2: test compact by using the default serializer. + root2, err := Root().FromBytes(rootBytesWant) + assert.NoError(t, err) + rootBytesActual, err := root2.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, rootBytesWant, rootBytesActual) + + // SNAPSHOT + data, err = os.ReadFile(testutils.RepoDir + "/snapshot.json") + assert.NoError(t, err) + snapshot, err := Snapshot().FromBytes(data) + assert.NoError(t, err) + + // Case 1: test noncompact by overriding the default serializer. + snapshotBytesWant, err := snapshot.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, data, snapshotBytesWant) + + // Case 2: test compact by using the default serializer. + snapshot2, err := Snapshot().FromBytes(snapshotBytesWant) + assert.NoError(t, err) + snapshotBytesActual, err := snapshot2.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, snapshotBytesWant, snapshotBytesActual) + + // TARGETS + data, err = os.ReadFile(testutils.RepoDir + "/targets.json") + assert.NoError(t, err) + targets, err := Targets().FromBytes(data) + assert.NoError(t, err) + + // Case 1: test noncompact by overriding the default serializer. + targetsBytesWant, err := targets.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, data, targetsBytesWant) + + // Case 2: test compact by using the default serializer. + targets2, err := Targets().FromBytes(targetsBytesWant) + assert.NoError(t, err) + targetsBytesActual, err := targets2.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, targetsBytesWant, targetsBytesActual) + + // TIMESTAMP + data, err = os.ReadFile(testutils.RepoDir + "/timestamp.json") + assert.NoError(t, err) + timestamp, err := Timestamp().FromBytes(data) + assert.NoError(t, err) + + // Case 1: test noncompact by overriding the default serializer. + timestampBytesWant, err := timestamp.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, data, timestampBytesWant) + + // Case 2: test compact by using the default serializer. + timestamp2, err := Timestamp().FromBytes(timestampBytesWant) + assert.NoError(t, err) + timestampBytesActual, err := timestamp2.ToBytes(true) + assert.NoError(t, err) + assert.Equal(t, timestampBytesWant, timestampBytesActual) + +} + +func TestSignVerify(t *testing.T) { + root, err := Root().FromFile(testutils.RepoDir + "/root.json") + assert.NoError(t, err) + + // Locate the public keys we need from root + assert.NotEmpty(t, root.Signed.Roles[TARGETS].KeyIDs) + targetsKeyID := root.Signed.Roles[TARGETS].KeyIDs[0] + assert.NotEmpty(t, root.Signed.Roles[SNAPSHOT].KeyIDs) + snapshotKeyID := root.Signed.Roles[SNAPSHOT].KeyIDs[0] + assert.NotEmpty(t, root.Signed.Roles[TIMESTAMP].KeyIDs) + timestampKeyID := root.Signed.Roles[TIMESTAMP].KeyIDs[0] + + // Load sample metadata (targets) and assert ... + targets, err := Targets().FromFile(testutils.RepoDir + "/targets.json") + assert.NoError(t, err) + sig, _ := getSignatureByKeyID(targets.Signatures, targetsKeyID) + data, err := targets.Signed.MarshalJSON() + assert.NoError(t, err) + + // ... it has a single existing signature, + assert.Equal(t, 1, len(targets.Signatures)) + + // ... which is valid for the correct key. + targetsKey := root.Signed.Keys[targetsKeyID] + targetsPublicKey, err := targetsKey.ToPublicKey() + assert.NoError(t, err) + targetsHash := crypto.SHA256 + targetsVerifier, err := signature.LoadVerifier(targetsPublicKey, targetsHash) + assert.NoError(t, err) + err = targetsVerifier.VerifySignature(bytes.NewReader(sig), bytes.NewReader(data)) + assert.NoError(t, err) + + // ... and invalid for an unrelated key + snapshotKey := root.Signed.Keys[snapshotKeyID] + snapshotPublicKey, err := snapshotKey.ToPublicKey() + assert.NoError(t, err) + snapshotHash := crypto.SHA256 + snapshotVerifier, err := signature.LoadVerifier(snapshotPublicKey, snapshotHash) + assert.NoError(t, err) + err = snapshotVerifier.VerifySignature(bytes.NewReader(sig), bytes.NewReader(data)) + assert.ErrorContains(t, err, "crypto/rsa: verification error") + + // Append a new signature with the unrelated key and assert that ... + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/snapshot_key", crypto.SHA256, cryptoutils.SkipPassword) + assert.NoError(t, err) + snapshotSig, err := targets.Sign(signer) + assert.NoError(t, err) + // ... there are now two signatures, and + assert.Equal(t, 2, len(targets.Signatures)) + // ... both are valid for the corresponding keys. + err = targetsVerifier.VerifySignature(bytes.NewReader(sig), bytes.NewReader(data)) + assert.NoError(t, err) + err = snapshotVerifier.VerifySignature(bytes.NewReader(snapshotSig.Signature), bytes.NewReader(data)) + assert.NoError(t, err) + // ... the returned (appended) signature is for snapshot key + assert.Equal(t, snapshotSig.KeyID, snapshotKeyID) + + // Clear all signatures and add a new signature with the unrelated key and assert that ... + signer, err = signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/timestamp_key", crypto.SHA256, cryptoutils.SkipPassword) + assert.NoError(t, err) + targets.ClearSignatures() + assert.Equal(t, 0, len(targets.Signatures)) + timestampSig, err := targets.Sign(signer) + assert.NoError(t, err) + // ... there now is only one signature, + assert.Equal(t, 1, len(targets.Signatures)) + // ... valid for that key. + timestampKey := root.Signed.Keys[timestampKeyID] + timestampPublicKey, err := timestampKey.ToPublicKey() + assert.NoError(t, err) + timestampHash := crypto.SHA256 + timestampVerifier, err := signature.LoadVerifier(timestampPublicKey, timestampHash) + assert.NoError(t, err) + + err = timestampVerifier.VerifySignature(bytes.NewReader(timestampSig.Signature), bytes.NewReader(data)) + assert.NoError(t, err) + err = targetsVerifier.VerifySignature(bytes.NewReader(timestampSig.Signature), bytes.NewReader(data)) + assert.ErrorContains(t, err, "crypto/rsa: verification error") +} + +func TestKeyVerifyFailures(t *testing.T) { + root, err := Root().FromFile(testutils.RepoDir + "/root.json") + assert.NoError(t, err) + + // Locate the timestamp public key we need from root + assert.NotEmpty(t, root.Signed.Roles[TIMESTAMP].KeyIDs) + timestampKeyID := root.Signed.Roles[TIMESTAMP].KeyIDs[0] + + // Load sample metadata (timestamp) + timestamp, err := Timestamp().FromFile(testutils.RepoDir + "/timestamp.json") + assert.NoError(t, err) + + timestampSig, _ := getSignatureByKeyID(timestamp.Signatures, timestampKeyID) + data, err := timestamp.Signed.MarshalJSON() + assert.NoError(t, err) + + // Test failure on unknown type + // Originally this test should cover unknown scheme, + // but in our case scheme changes do not affect any + // further functionality + timestampKey := root.Signed.Keys[timestampKeyID] + ttype := timestampKey.Type + timestampKey.Type = "foo" + + timestampPublicKey, err := timestampKey.ToPublicKey() + assert.Error(t, err, "unsupported public key type") + timestampHash := crypto.SHA256 + timestampVerifier, err := signature.LoadVerifier(timestampPublicKey, timestampHash) + assert.Error(t, err, "unsupported public key type") + assert.Nil(t, timestampVerifier) + + timestampKey.Type = ttype + timestampPublicKey, err = timestampKey.ToPublicKey() + assert.NoError(t, err) + timestampHash = crypto.SHA256 + timestampVerifier, err = signature.LoadVerifier(timestampPublicKey, timestampHash) + assert.NoError(t, err) + err = timestampVerifier.VerifySignature(bytes.NewReader(timestampSig), bytes.NewReader(data)) + assert.NoError(t, err) + timestampKey.Type = ttype + + // Test failure on broken public key data + public := timestampKey.Value.PublicKey + timestampKey.Value.PublicKey = "ffff" + timestampBrokenPublicKey, err := timestampKey.ToPublicKey() + assert.ErrorContains(t, err, "PEM decoding failed") + timestampHash = crypto.SHA256 + timestampNilVerifier, err := signature.LoadVerifier(timestampBrokenPublicKey, timestampHash) + assert.ErrorContains(t, err, "unsupported public key type") + assert.Nil(t, timestampNilVerifier) + timestampKey.Value.PublicKey = public + + // Test failure with invalid signature + sigData := []byte("foo") + h32 := sha256.Sum256(sigData) + incorrectTimestampSig := h32[:] + err = timestampVerifier.VerifySignature(bytes.NewReader(incorrectTimestampSig), bytes.NewReader(data)) + assert.ErrorContains(t, err, "crypto/rsa: verification error") + + // Test failure with valid but incorrect signature + anotherSig := root.Signatures[0] + h32 = sha256.Sum256([]byte(anotherSig.Signature.String())) + incorrectValidTimestampSig := h32[:] + err = timestampVerifier.VerifySignature(bytes.NewReader(incorrectValidTimestampSig), bytes.NewReader(data)) + assert.ErrorContains(t, err, "crypto/rsa: verification error") +} + +func TestMetadataSignedIsExpired(t *testing.T) { + // Use of Snapshot is arbitrary, we're just testing the base class + // features with real data + snapshot, err := Snapshot().FromFile(testutils.RepoDir + "/snapshot.json") + assert.NoError(t, err) + assert.Equal(t, time.Date(2030, 8, 15, 14, 30, 45, 100, time.UTC), snapshot.Signed.Expires) + + // Test IsExpired with reference time provided + // In the Go implementation IsExpired tests >= rather than only >, + // which results in snapshot.Signed.Expires IsExpired check + // being false by default, so we skip the default assertion + isExpired := snapshot.Signed.IsExpired(snapshot.Signed.Expires.Add(time.Microsecond)) + assert.True(t, isExpired) + isExpired = snapshot.Signed.IsExpired(snapshot.Signed.Expires.Add(-time.Microsecond)) + assert.False(t, isExpired) +} + +func TestMetadataVerifyDelegate(t *testing.T) { + + root, err := Root().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.NoError(t, err) + snapshot, err := Snapshot().FromFile(fmt.Sprintf("%s/snapshot.json", testutils.RepoDir)) + assert.NoError(t, err) + targets, err := Targets().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.NoError(t, err) + role1, err := Targets().FromFile(fmt.Sprintf("%s/role1.json", testutils.RepoDir)) + assert.NoError(t, err) + role2, err := Targets().FromFile(fmt.Sprintf("%s/role2.json", testutils.RepoDir)) + assert.NoError(t, err) + + // Test the expected delegation tree + err = root.VerifyDelegate(ROOT, root) + assert.NoError(t, err) + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.NoError(t, err) + err = root.VerifyDelegate(TARGETS, targets) + assert.NoError(t, err) + err = targets.VerifyDelegate("role1", role1) + assert.NoError(t, err) + err = role1.VerifyDelegate("role2", role2) + assert.NoError(t, err) + + // Only root and targets can verify delegates + err = snapshot.VerifyDelegate(SNAPSHOT, snapshot) + assert.ErrorIs(t, err, ErrType{"call is valid only on delegator metadata (should be either root or targets)"}) + // Verify fails for roles that are not delegated by delegator + err = root.VerifyDelegate("role1", role1) + assert.ErrorIs(t, err, ErrValue{"no delegation found for role1"}) + err = targets.VerifyDelegate(TARGETS, targets) + assert.ErrorIs(t, err, ErrValue{"no delegation found for targets"}) + // Verify fails when delegator has no delegations + err = role2.VerifyDelegate("role1", role1) + assert.ErrorIs(t, err, ErrValue{"no delegations found"}) + + // Verify fails when delegate content is modified + expires := snapshot.Signed.Expires + snapshot.Signed.Expires = snapshot.Signed.Expires.Add(time.Hour * 24) + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.ErrorIs(t, err, ErrUnsignedMetadata{"Verifying snapshot failed, not enough signatures, got 0, want 1"}) + snapshot.Signed.Expires = expires + + // Verify fails with verification error + // (in this case signature is malformed) + keyID := root.Signed.Roles[SNAPSHOT].KeyIDs[0] + goodSig, idx := getSignatureByKeyID(snapshot.Signatures, keyID) + assert.NotEmpty(t, goodSig) + snapshot.Signatures[idx].Signature = []byte("foo") + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.ErrorIs(t, err, ErrUnsignedMetadata{"Verifying snapshot failed, not enough signatures, got 0, want 1"}) + snapshot.Signatures[idx].Signature = goodSig + + // Verify fails if roles keys do not sign the metadata + err = root.VerifyDelegate(TIMESTAMP, snapshot) + assert.ErrorIs(t, err, ErrUnsignedMetadata{"Verifying timestamp failed, not enough signatures, got 0, want 1"}) + + // Add a key to snapshot role, make sure the new sig fails to verify + tsKeyID := root.Signed.Roles[TIMESTAMP].KeyIDs[0] + err = root.Signed.AddKey(root.Signed.Keys[tsKeyID], SNAPSHOT) + assert.NoError(t, err) + newSig := Signature{ + KeyID: tsKeyID, + Signature: []byte(strings.Repeat("ff", 64)), + } + snapshot.Signatures = append(snapshot.Signatures, newSig) + + // Verify succeeds if threshold is reached even if some signatures + // fail to verify + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.NoError(t, err) + + // Verify fails if threshold of signatures is not reached + root.Signed.Roles[SNAPSHOT].Threshold = 2 + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.ErrorIs(t, err, ErrUnsignedMetadata{"Verifying snapshot failed, not enough signatures, got 1, want 2"}) + + // Verify succeeds when we correct the new signature and reach the + // threshold of 2 keys + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/timestamp_key", crypto.SHA256, cryptoutils.SkipPassword) + assert.NoError(t, err) + _, err = snapshot.Sign(signer) + assert.NoError(t, err) + err = root.VerifyDelegate(SNAPSHOT, snapshot) + assert.NoError(t, err) +} + +func TestRootAddKeyAndRevokeKey(t *testing.T) { + root, err := Root().FromFile(fmt.Sprintf("%s/root.json", testutils.RepoDir)) + assert.NoError(t, err) + + // Create a new key + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/root_key2", crypto.SHA256, cryptoutils.SkipPassword) + assert.NoError(t, err) + key, err := signer.PublicKey() + assert.NoError(t, err) + rootKey2, err := KeyFromPublicKey(key) + assert.NoError(t, err) + + // Assert that root does not contain the new key + assert.NotContains(t, root.Signed.Roles[ROOT].KeyIDs, rootKey2.id) + assert.NotContains(t, root.Signed.Keys, rootKey2.id) + + // Add new root key + err = root.Signed.AddKey(rootKey2, ROOT) + assert.NoError(t, err) + + // Assert that key is added + assert.Contains(t, root.Signed.Roles[ROOT].KeyIDs, rootKey2.id) + assert.Contains(t, root.Signed.Keys, rootKey2.id) + + // Confirm that the newly added key does not break + // the object serialization + _, err = root.Signed.MarshalJSON() + assert.NoError(t, err) + + // Try adding the same key again and assert its ignored. + preAddKeyIDs := make([]string, len(root.Signed.Roles[ROOT].KeyIDs)) + copy(preAddKeyIDs, root.Signed.Roles[ROOT].KeyIDs) + err = root.Signed.AddKey(rootKey2, ROOT) + assert.NoError(t, err) + assert.Equal(t, preAddKeyIDs, root.Signed.Roles[ROOT].KeyIDs) + + // Add the same key to targets role as well + err = root.Signed.AddKey(rootKey2, TARGETS) + assert.NoError(t, err) + + // Add the same key to a nonexistent role. + err = root.Signed.AddKey(rootKey2, "nosuchrole") + assert.ErrorIs(t, err, ErrValue{"role nosuchrole doesn't exist"}) + + // Remove the key from root role (targets role still uses it) + err = root.Signed.RevokeKey(rootKey2.id, ROOT) + assert.NoError(t, err) + assert.NotContains(t, root.Signed.Roles[ROOT].KeyIDs, rootKey2.id) + assert.Contains(t, root.Signed.Keys, rootKey2.id) + + // Remove the key from targets as well + err = root.Signed.RevokeKey(rootKey2.id, TARGETS) + assert.NoError(t, err) + assert.NotContains(t, root.Signed.Roles[ROOT].KeyIDs, rootKey2.id) + assert.NotContains(t, root.Signed.Keys, rootKey2.id) + + err = root.Signed.RevokeKey("nosuchkey", ROOT) + assert.ErrorIs(t, err, ErrValue{"key with id nosuchkey is not used by root"}) + err = root.Signed.RevokeKey(rootKey2.id, "nosuchrole") + assert.ErrorIs(t, err, ErrValue{"role nosuchrole doesn't exist"}) +} + +func TestTargetsKeyAPI(t *testing.T) { + targets, err := Targets().FromFile(fmt.Sprintf("%s/targets.json", testutils.RepoDir)) + assert.NoError(t, err) + + delegatedRole := DelegatedRole{ + Name: "role2", + Paths: []string{"fn3", "fn4"}, + KeyIDs: []string{}, + Terminating: false, + Threshold: 1, + } + targets.Signed.Delegations.Roles = append(targets.Signed.Delegations.Roles, delegatedRole) + + key := &Key{ + Type: "ed25519", + Value: KeyVal{PublicKey: "edcd0a32a07dce33f7c7873aaffbff36d20ea30787574ead335eefd337e4dacd"}, + Scheme: "ed25519", + } + + // Assert that delegated role "role1" does not contain the new key + assert.Equal(t, "role1", targets.Signed.Delegations.Roles[0].Name) + assert.NotContains(t, targets.Signed.Delegations.Roles[0].KeyIDs, key.id) + err = targets.Signed.AddKey(key, "role1") + assert.NoError(t, err) + + // Assert that the new key is added to the delegated role "role1" + assert.Contains(t, targets.Signed.Delegations.Roles[0].KeyIDs, key.id) + + // Try adding the same key again and assert its ignored. + pastKeyIDs := make([]string, len(targets.Signed.Delegations.Roles[0].KeyIDs)) + copy(pastKeyIDs, targets.Signed.Delegations.Roles[0].KeyIDs) + err = targets.Signed.AddKey(key, "role1") + assert.NoError(t, err) + assert.Equal(t, pastKeyIDs, targets.Signed.Delegations.Roles[0].KeyIDs) + + // Try adding a key to a delegated role that doesn't exists + err = targets.Signed.AddKey(key, "nosuchrole") + assert.ErrorIs(t, err, ErrValue{"delegated role nosuchrole doesn't exist"}) + + // Add the same key to "role2" as well + err = targets.Signed.AddKey(key, "role2") + assert.NoError(t, err) + + // Remove the key from "role1" role ("role2" still uses it) + err = targets.Signed.RevokeKey(key.id, "role1") + assert.NoError(t, err) + + // Assert that delegated role "role1" doesn't contain the key. + assert.Equal(t, "role1", targets.Signed.Delegations.Roles[0].Name) + assert.Equal(t, "role2", targets.Signed.Delegations.Roles[1].Name) + assert.NotContains(t, targets.Signed.Delegations.Roles[0].KeyIDs, key.id) + assert.Contains(t, targets.Signed.Delegations.Roles[1].KeyIDs, key.id) + + // Remove the key from "role2" as well + err = targets.Signed.RevokeKey(key.id, "role2") + assert.NoError(t, err) + assert.NotContains(t, targets.Signed.Delegations.Roles[1].KeyIDs, key.id) + + // Try remove key not used by "role1" + err = targets.Signed.RevokeKey(key.id, "role1") + assert.ErrorIs(t, err, ErrValue{fmt.Sprintf("key with id %s is not used by role1", key.id)}) + + // Try removing a key from delegated role that doesn't exists + err = targets.Signed.RevokeKey(key.id, "nosuchrole") + assert.ErrorIs(t, err, ErrValue{"delegated role nosuchrole doesn't exist"}) + + // Remove delegations as a whole + targets.Signed.Delegations = nil + + //Test that calling add_key and revoke_key throws an error + // and that delegations is still None after each of the api calls + err = targets.Signed.AddKey(key, "role1") + assert.ErrorIs(t, err, ErrValue{"delegated role role1 doesn't exist"}) + err = targets.Signed.RevokeKey(key.id, "role1") + assert.ErrorIs(t, err, ErrValue{"delegated role role1 doesn't exist"}) + assert.Nil(t, targets.Signed.Delegations) +} + +func TestTargetsKeyAPIWithSuccinctRoles(t *testing.T) { + targets, err := Targets().FromFile(testutils.RepoDir + "/targets.json") + assert.NoError(t, err) + + // Remove delegated roles + assert.NotNil(t, targets.Signed.Delegations) + assert.NotNil(t, targets.Signed.Delegations.Roles) + targets.Signed.Delegations.Roles = nil + targets.Signed.Delegations.Keys = map[string]*Key{} + + // Add succinct roles information + targets.Signed.Delegations.SuccinctRoles = &SuccinctRoles{ + KeyIDs: []string{}, + Threshold: 1, + BitLength: 8, + NamePrefix: "foo", + } + assert.Equal(t, 0, len(targets.Signed.Delegations.Keys)) + assert.Equal(t, 0, len(targets.Signed.Delegations.SuccinctRoles.KeyIDs)) + + // Add a key to succinct_roles and verify it's saved. + key := &Key{ + Type: "ed25519", + Value: KeyVal{PublicKey: "edcd0a32a07dce33f7c7873aaffbff36d20ea30787574ead335eefd337e4dacd"}, + Scheme: "ed25519", + } + err = targets.Signed.AddKey(key, "foo") + assert.NoError(t, err) + assert.Contains(t, targets.Signed.Delegations.Keys, key.id) + assert.Contains(t, targets.Signed.Delegations.SuccinctRoles.KeyIDs, key.id) + assert.Equal(t, 1, len(targets.Signed.Delegations.Keys)) + + // Try adding the same key again and verify that noting is added. + err = targets.Signed.AddKey(key, "foo") + assert.NoError(t, err) + assert.Equal(t, 1, len(targets.Signed.Delegations.Keys)) + + // Remove the key and verify it's not stored anymore. + err = targets.Signed.RevokeKey(key.id, "foo") + assert.NoError(t, err) + assert.NotContains(t, targets.Signed.Delegations.Keys, key.id) + assert.NotContains(t, targets.Signed.Delegations.SuccinctRoles.KeyIDs, key.id) + assert.Equal(t, 0, len(targets.Signed.Delegations.Keys)) + + // Try removing it again. + err = targets.Signed.RevokeKey(key.id, "foo") + assert.ErrorIs(t, err, ErrValue{fmt.Sprintf("key with id %s is not used by SuccinctRoles", key.id)}) +} + +func TestLengthAndHashValidation(t *testing.T) { + // Test metadata files' hash and length verification. + // Use timestamp to get a MetaFile object and snapshot + // for untrusted metadata file to verify. + + timestamp, err := Timestamp().FromFile(testutils.RepoDir + "/timestamp.json") + assert.NoError(t, err) + + snapshotMetafile := timestamp.Signed.Meta["snapshot.json"] + assert.NotNil(t, snapshotMetafile) + + snapshotData, err := os.ReadFile(testutils.RepoDir + "/snapshot.json") + assert.NoError(t, err) + h32 := sha256.Sum256(snapshotData) + h := h32[:] + snapshotMetafile.Hashes = map[string]HexBytes{ + "sha256": h, + } + snapshotMetafile.Length = 652 + + data, err := os.ReadFile(testutils.RepoDir + "/snapshot.json") + assert.NoError(t, err) + err = snapshotMetafile.VerifyLengthHashes(data) + assert.NoError(t, err) + + // test exceptions + originalLength := snapshotMetafile.Length + snapshotMetafile.Length = 2345 + err = snapshotMetafile.VerifyLengthHashes(data) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{fmt.Sprintf("length verification failed - expected %d, got %d", 2345, originalLength)}) + + snapshotMetafile.Length = originalLength + originalHashSHA256 := snapshotMetafile.Hashes["sha256"] + snapshotMetafile.Hashes["sha256"] = []byte("incorrecthash") + err = snapshotMetafile.VerifyLengthHashes(data) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{"hash verification failed - mismatch for algorithm sha256"}) + + snapshotMetafile.Hashes["sha256"] = originalHashSHA256 + snapshotMetafile.Hashes["unsupported-alg"] = []byte("72c5cabeb3e8079545a5f4d2b067f8e35f18a0de3c2b00d3cb8d05919c19c72d") + err = snapshotMetafile.VerifyLengthHashes(data) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{"hash verification failed - unknown hashing algorithm - unsupported-alg"}) + + // test optional length and hashes + snapshotMetafile.Length = 0 + snapshotMetafile.Hashes = nil + err = snapshotMetafile.VerifyLengthHashes(data) + assert.NoError(t, err) + + // Test target files' hash and length verification + targets, err := Targets().FromFile(testutils.RepoDir + "/targets.json") + assert.NoError(t, err) + targetFile := targets.Signed.Targets["file1.txt"] + targetFileData, err := os.ReadFile(testutils.TargetsDir + "/" + targetFile.Path) + assert.NoError(t, err) + + // test exceptions + originalLength = targetFile.Length + targetFile.Length = 2345 + err = targetFile.VerifyLengthHashes(targetFileData) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{fmt.Sprintf("length verification failed - expected %d, got %d", 2345, originalLength)}) + + targetFile.Length = originalLength + targetFile.Hashes["sha256"] = []byte("incorrecthash") + err = targetFile.VerifyLengthHashes(targetFileData) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{"hash verification failed - mismatch for algorithm sha256"}) +} + +func TestTargetFileFromFile(t *testing.T) { + // Test with an existing file and valid hash algorithm + targetFileFromFile, err := TargetFile().FromFile(testutils.TargetsDir+"/file1.txt", "sha256") + assert.NoError(t, err) + targetFileData, err := os.ReadFile(testutils.TargetsDir + "/file1.txt") + assert.NoError(t, err) + err = targetFileFromFile.VerifyLengthHashes(targetFileData) + assert.NoError(t, err) + + // Test with mismatching target file data + mismatchingTargetFileData, err := os.ReadFile(testutils.TargetsDir + "/file2.txt") + assert.NoError(t, err) + err = targetFileFromFile.VerifyLengthHashes(mismatchingTargetFileData) + assert.ErrorIs(t, err, ErrLengthOrHashMismatch{"hash verification failed - mismatch for algorithm sha256"}) + + // Test with an unsupported algorithm + _, err = TargetFile().FromFile(testutils.TargetsDir+"/file1.txt", "123") + assert.ErrorIs(t, err, ErrValue{"failed generating TargetFile - unsupported hashing algorithm - 123"}) +} + +func TestTargetFileCustom(t *testing.T) { + // Test creating TargetFile and accessing custom. + targetFile := TargetFile() + customJSON := json.RawMessage([]byte(`{"foo":"bar"}`)) + targetFile.Custom = &customJSON + custom, err := targetFile.Custom.MarshalJSON() + assert.NoError(t, err) + assert.Equal(t, "{\"foo\":\"bar\"}", string(custom)) +} + +func TestTargetFileFromBytes(t *testing.T) { + data := []byte("Inline test content") + + // Test with a valid hash algorithm + targetFileFromData, err := TargetFile().FromBytes(testutils.TargetsDir+"/file1.txt", data, "sha256") + assert.NoError(t, err) + err = targetFileFromData.VerifyLengthHashes(data) + assert.NoError(t, err) + + // Test with no algorithms specified + targetFileFromDataWithNoAlg, err := TargetFile().FromBytes(testutils.TargetsDir+"/file1.txt", data) + assert.NoError(t, err) + err = targetFileFromDataWithNoAlg.VerifyLengthHashes(data) + assert.NoError(t, err) +} + +func TestIsDelegatedRole(t *testing.T) { + // Test path matches + role := &DelegatedRole{ + Name: "", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"a/path", "otherpath", "a/path", "*/?ath"}, + } + nonMatching, err := role.IsDelegatedPath("a/non-matching-path") + assert.NoError(t, err) + assert.False(t, nonMatching) + matching, err := role.IsDelegatedPath("a/path") + assert.NoError(t, err) + assert.True(t, matching) + + // Test path hash prefix matches: sha256 sum of "a/path" is 927b0ecf9... + role = &DelegatedRole{ + Name: "", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + PathHashPrefixes: []string{"knsOz5xYT", "other prefix", "knsOz5xYT", "knsOz", "kn"}, + } + nonMatching, err = role.IsDelegatedPath("a/non-matching-path") + assert.NoError(t, err) + assert.False(t, nonMatching) + matching, err = role.IsDelegatedPath("a/path") + assert.NoError(t, err) + assert.True(t, matching) +} + +func TestIsDelegatedRoleInSuccinctRoles(t *testing.T) { + succinctRoles := &SuccinctRoles{ + KeyIDs: []string{}, + Threshold: 1, + BitLength: 5, + NamePrefix: "bin", + } + + falseRoleNmaeExamples := []string{ + "foo", + "bin-", + "bin-s", + "bin-0t", + "bin-20", + "bin-100", + } + for _, roleName := range falseRoleNmaeExamples { + res := succinctRoles.IsDelegatedRole(roleName) + assert.False(t, res) + } + + // Delegated role name suffixes are in hex format. + trueNameExamples := []string{"bin-00", "bin-0f", "bin-1f"} + for _, roleName := range trueNameExamples { + res := succinctRoles.IsDelegatedRole(roleName) + assert.True(t, res) + } +} + +func TestGetRolesInSuccinctRoles(t *testing.T) { + succinctRoles := &SuccinctRoles{ + KeyIDs: []string{}, + Threshold: 1, + BitLength: 16, + NamePrefix: "bin", + } + // bin names are in hex format and 4 hex digits are enough to represent + // all bins between 0 and 2^16 - 1 meaning suffix_len must be 4 + expectedSuffixLength := 4 + suffixLen, _ := succinctRoles.GetSuffixLen() + assert.Equal(t, expectedSuffixLength, suffixLen) + + allRoles := succinctRoles.GetRoles() + for binNumer, roleName := range allRoles { + // This adds zero-padding if the bin_numer is represented by a hex + // number with a length less than expected_suffix_length. + expectedBinSuffix := fmt.Sprintf("%0"+strconv.Itoa(expectedSuffixLength)+"x", binNumer) + assert.Equal(t, fmt.Sprintf("bin-%s", expectedBinSuffix), roleName) + } +} diff --git a/metadata/metadata_test.go b/metadata/metadata_test.go new file mode 100644 index 00000000..e581e479 --- /dev/null +++ b/metadata/metadata_test.go @@ -0,0 +1,672 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "crypto/ed25519" + "crypto/sha256" + "encoding/json" + "fmt" + "os" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +var testRootBytes = []byte("{\"signatures\":[{\"keyid\":\"roothash\",\"sig\":\"1307990e6ba5ca145eb35e99182a9bec46531bc54ddf656a602c780fa0240dee\"}],\"signed\":{\"_type\":\"root\",\"consistent_snapshot\":true,\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"keys\":{\"roothash\":{\"keytype\":\"ed25519\",\"keyval\":{\"public\":\"pubrootval\"},\"scheme\":\"ed25519\"},\"snapshothash\":{\"keytype\":\"ed25519\",\"keyval\":{\"public\":\"pubsval\"},\"scheme\":\"ed25519\"},\"targetshash\":{\"keytype\":\"ed25519\",\"keyval\":{\"public\":\"pubtrval\"},\"scheme\":\"ed25519\"},\"timestamphash\":{\"keytype\":\"ed25519\",\"keyval\":{\"public\":\"pubtmval\"},\"scheme\":\"ed25519\"}},\"roles\":{\"root\":{\"keyids\":[\"roothash\"],\"threshold\":1},\"snapshot\":{\"keyids\":[\"snapshothash\"],\"threshold\":1},\"targets\":{\"keyids\":[\"targetshash\"],\"threshold\":1},\"timestamp\":{\"keyids\":[\"timestamphash\"],\"threshold\":1}},\"spec_version\":\"1.0.31\",\"version\":1}}") + +const TEST_REPOSITORY_DATA = "../testutils/repository_data/repository/metadata" + +var fixedExpire = time.Date(2030, 8, 15, 14, 30, 45, 100, time.UTC) + +func getSignatureByKeyID(signatures []Signature, keyID string) (HexBytes, int) { + for i, sig := range signatures { + if sig.KeyID == keyID { + return sig.Signature, i + } + } + return []byte{}, 0 +} + +func TestDefaultValuesRoot(t *testing.T) { + // without setting expiration + meta := Root() + assert.NotNil(t, meta) + assert.GreaterOrEqual(t, []time.Time{time.Now().UTC()}[0], meta.Signed.Expires) + + // setting expiration + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Root(expire) + assert.NotNil(t, meta) + assert.Equal(t, expire, meta.Signed.Expires) + + // Type + assert.Equal(t, ROOT, meta.Signed.Type) + + // SpecVersion + assert.Equal(t, SPECIFICATION_VERSION, meta.Signed.SpecVersion) + + // Version + assert.Equal(t, int64(1), meta.Signed.Version) + + // Threshold and KeyIDs for Roles + for _, role := range []string{ROOT, SNAPSHOT, TARGETS, TIMESTAMP} { + assert.Equal(t, 1, meta.Signed.Roles[role].Threshold) + assert.Equal(t, []string{}, meta.Signed.Roles[role].KeyIDs) + } + + // Keys + assert.Equal(t, map[string]*Key{}, meta.Signed.Keys) + + // Consistent snapshot + assert.True(t, meta.Signed.ConsistentSnapshot) + + // Signatures + assert.Equal(t, []Signature{}, meta.Signatures) +} + +func TestDefaultValuesSnapshot(t *testing.T) { + // without setting expiration + meta := Snapshot() + assert.NotNil(t, meta) + assert.GreaterOrEqual(t, []time.Time{time.Now().UTC()}[0], meta.Signed.Expires) + + // setting expiration + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Snapshot(expire) + assert.NotNil(t, meta) + assert.Equal(t, expire, meta.Signed.Expires) + + // Type + assert.Equal(t, SNAPSHOT, meta.Signed.Type) + + // SpecVersion + assert.Equal(t, SPECIFICATION_VERSION, meta.Signed.SpecVersion) + + // Version + assert.Equal(t, int64(1), meta.Signed.Version) + + // Targets meta + assert.Equal(t, map[string]*MetaFiles{"targets.json": {Version: 1}}, meta.Signed.Meta) + + // Signatures + assert.Equal(t, []Signature{}, meta.Signatures) +} + +func TestDefaultValuesTimestamp(t *testing.T) { + // without setting expiration + meta := Timestamp() + assert.NotNil(t, meta) + assert.GreaterOrEqual(t, []time.Time{time.Now().UTC()}[0], meta.Signed.Expires) + + // setting expiration + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Timestamp(expire) + assert.NotNil(t, meta) + assert.Equal(t, expire, meta.Signed.Expires) + + // Type + assert.Equal(t, TIMESTAMP, meta.Signed.Type) + + // SpecVersion + assert.Equal(t, SPECIFICATION_VERSION, meta.Signed.SpecVersion) + + // Version + assert.Equal(t, int64(1), meta.Signed.Version) + + // Snapshot meta + assert.Equal(t, map[string]*MetaFiles{"snapshot.json": {Version: 1}}, meta.Signed.Meta) + + // Signatures + assert.Equal(t, []Signature{}, meta.Signatures) +} + +func TestDefaultValuesTargets(t *testing.T) { + // without setting expiration + meta := Targets() + assert.NotNil(t, meta) + assert.GreaterOrEqual(t, []time.Time{time.Now().UTC()}[0], meta.Signed.Expires) + + // setting expiration + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Targets(expire) + assert.NotNil(t, meta) + assert.Equal(t, expire, meta.Signed.Expires) + + // Type + assert.Equal(t, TARGETS, meta.Signed.Type) + + // SpecVersion + assert.Equal(t, SPECIFICATION_VERSION, meta.Signed.SpecVersion) + + // Version + assert.Equal(t, int64(1), meta.Signed.Version) + + // Target files + assert.Equal(t, map[string]*TargetFiles{}, meta.Signed.Targets) + + // Signatures + assert.Equal(t, []Signature{}, meta.Signatures) +} + +func TestDefaultValuesTargetFile(t *testing.T) { + targetFile := TargetFile() + assert.NotNil(t, targetFile) + assert.Equal(t, int64(0), targetFile.Length) + assert.Equal(t, Hashes{}, targetFile.Hashes) +} + +func TestMetaFileDefaultValues(t *testing.T) { + version := int64(0) + metaFile := MetaFile(version) + assert.NotNil(t, metaFile) + assert.Equal(t, int64(0), metaFile.Length) + assert.Equal(t, Hashes{}, metaFile.Hashes) + assert.Equal(t, int64(1), metaFile.Version) + + version = int64(-1) + metaFile = MetaFile(version) + assert.NotNil(t, metaFile) + assert.Equal(t, int64(0), metaFile.Length) + assert.Equal(t, Hashes{}, metaFile.Hashes) + assert.Equal(t, int64(1), metaFile.Version) + + version = int64(1) + metaFile = MetaFile(version) + assert.NotNil(t, metaFile) + assert.Equal(t, int64(0), metaFile.Length) + assert.Equal(t, Hashes{}, metaFile.Hashes) + assert.Equal(t, int64(1), metaFile.Version) + + version = int64(2) + metaFile = MetaFile(version) + assert.NotNil(t, metaFile) + assert.Equal(t, int64(0), metaFile.Length) + assert.Equal(t, Hashes{}, metaFile.Hashes) + assert.Equal(t, int64(2), metaFile.Version) +} + +func TestIsDelegatedPath(t *testing.T) { + type pathMatch struct { + Pattern []string + TargetPath string + Expected bool + } + // As per - https://theupdateframework.github.io/specification/latest/#pathpattern + matches := []pathMatch{ + // a PATHPATTERN of "targets/*.tgz" would match file paths "targets/foo.tgz" and "targets/bar.tgz", but not "targets/foo.txt". + { + Pattern: []string{"targets/*.tgz"}, + TargetPath: "targets/foo.tgz", + Expected: true, + }, + { + Pattern: []string{"targets/*.tgz"}, + TargetPath: "targets/bar.tgz", + Expected: true, + }, + { + Pattern: []string{"targets/*.tgz"}, + TargetPath: "targets/foo.txt", + Expected: false, + }, + // a PATHPATTERN of "foo-version-?.tgz" matches "foo-version-2.tgz" and "foo-version-a.tgz", but not "foo-version-alpha.tgz". + { + Pattern: []string{"foo-version-?.tgz"}, + TargetPath: "foo-version-2.tgz", + Expected: true, + }, + { + Pattern: []string{"foo-version-?.tgz"}, + TargetPath: "foo-version-a.tgz", + Expected: true, + }, + { + Pattern: []string{"foo-version-?.tgz"}, + TargetPath: "foo-version-alpha.tgz", + Expected: false, + }, + // a PATHPATTERN of "*.tgz" would match "foo.tgz" and "bar.tgz", but not "targets/foo.tgz" + { + Pattern: []string{"*.tgz"}, + TargetPath: "foo.tgz", + Expected: true, + }, + { + Pattern: []string{"*.tgz"}, + TargetPath: "bar.tgz", + Expected: true, + }, + { + Pattern: []string{"*.tgz"}, + TargetPath: "targets/foo.tgz", + Expected: false, + }, + // a PATHPATTERN of "foo.tgz" would match only "foo.tgz" + { + Pattern: []string{"foo.tgz"}, + TargetPath: "foo.tgz", + Expected: true, + }, + { + Pattern: []string{"foo.tgz"}, + TargetPath: "foosy.tgz", + Expected: false, + }, + } + for _, match := range matches { + role := &DelegatedRole{ + Paths: match.Pattern, + } + ok, err := role.IsDelegatedPath(match.TargetPath) + assert.Equal(t, match.Expected, ok) + assert.Nil(t, err) + } +} + +func TestClearSignatures(t *testing.T) { + meta := Root() + // verify signatures is empty + assert.Equal(t, []Signature{}, meta.Signatures) + // create a signature + sig := &Signature{ + KeyID: "keyid", + Signature: HexBytes{}, + } + // update the Signatures part + meta.Signatures = append(meta.Signatures, *sig) + // verify signatures is not empty + assert.NotEqual(t, []Signature{}, meta.Signatures) + // clear signatures + meta.ClearSignatures() + // verify signatures is empty + assert.Equal(t, []Signature{}, meta.Signatures) +} + +func TestIsExpiredRoot(t *testing.T) { + // without setting expiration + meta := Root() + assert.NotNil(t, meta) + // ensure time passed + time.Sleep(1 * time.Microsecond) + assert.True(t, meta.Signed.IsExpired(time.Now().UTC())) + + // setting expiration in 2 days from now + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Root(expire) + assert.NotNil(t, meta) + assert.False(t, meta.Signed.IsExpired(time.Now().UTC())) +} + +func TestIsExpiredSnapshot(t *testing.T) { + // without setting expiration + meta := Snapshot() + assert.NotNil(t, meta) + // ensure time passed + time.Sleep(1 * time.Microsecond) + assert.True(t, meta.Signed.IsExpired(time.Now().UTC())) + + // setting expiration in 2 days from now + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Snapshot(expire) + assert.NotNil(t, meta) + assert.False(t, meta.Signed.IsExpired(time.Now().UTC())) +} + +func TestIsExpiredTimestamp(t *testing.T) { + // without setting expiration + meta := Timestamp() + assert.NotNil(t, meta) + // ensure time passed + time.Sleep(1 * time.Microsecond) + assert.True(t, meta.Signed.IsExpired(time.Now().UTC())) + + // setting expiration in 2 days from now + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Timestamp(expire) + assert.NotNil(t, meta) + assert.False(t, meta.Signed.IsExpired(time.Now().UTC())) +} + +func TestIsExpiredTargets(t *testing.T) { + // without setting expiration + meta := Targets() + assert.NotNil(t, meta) + // ensure time passed + time.Sleep(1 * time.Microsecond) + assert.True(t, meta.Signed.IsExpired(time.Now().UTC())) + + // setting expiration in 2 days from now + expire := time.Now().AddDate(0, 0, 2).UTC() + meta = Targets(expire) + assert.NotNil(t, meta) + assert.False(t, meta.Signed.IsExpired(time.Now().UTC())) +} + +func TestUnrecognizedFieldRolesSigned(t *testing.T) { + // unrecognized field to test + // added to the Signed portion of each role type + testUnrecognizedField := map[string]any{"test": "true"} + + root := Root(fixedExpire) + root.Signed.UnrecognizedFields = testUnrecognizedField + rootJSON, err := root.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"root\",\"consistent_snapshot\":true,\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"keys\":{},\"roles\":{\"root\":{\"keyids\":[],\"threshold\":1},\"snapshot\":{\"keyids\":[],\"threshold\":1},\"targets\":{\"keyids\":[],\"threshold\":1},\"timestamp\":{\"keyids\":[],\"threshold\":1}},\"spec_version\":\"1.0.31\",\"test\":\"true\",\"version\":1}}"), rootJSON) + + targets := Targets(fixedExpire) + targets.Signed.UnrecognizedFields = testUnrecognizedField + targetsJSON, err := targets.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"targets\",\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"spec_version\":\"1.0.31\",\"targets\":{},\"test\":\"true\",\"version\":1}}"), targetsJSON) + + snapshot := Snapshot(fixedExpire) + snapshot.Signed.UnrecognizedFields = testUnrecognizedField + snapshotJSON, err := snapshot.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"snapshot\",\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"meta\":{\"targets.json\":{\"version\":1}},\"spec_version\":\"1.0.31\",\"test\":\"true\",\"version\":1}}"), snapshotJSON) + + timestamp := Timestamp(fixedExpire) + timestamp.Signed.UnrecognizedFields = testUnrecognizedField + timestampJSON, err := timestamp.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"timestamp\",\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"meta\":{\"snapshot.json\":{\"version\":1}},\"spec_version\":\"1.0.31\",\"test\":\"true\",\"version\":1}}"), timestampJSON) +} +func TestUnrecognizedFieldGenericMetadata(t *testing.T) { + // fixed expire + expire := time.Date(2030, 8, 15, 14, 30, 45, 100, time.UTC) + + // unrecognized field to test + // added to the generic metadata type + testUnrecognizedField := map[string]any{"test": "true"} + + root := Root(expire) + root.UnrecognizedFields = testUnrecognizedField + rootJSON, err := root.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"root\",\"consistent_snapshot\":true,\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"keys\":{},\"roles\":{\"root\":{\"keyids\":[],\"threshold\":1},\"snapshot\":{\"keyids\":[],\"threshold\":1},\"targets\":{\"keyids\":[],\"threshold\":1},\"timestamp\":{\"keyids\":[],\"threshold\":1}},\"spec_version\":\"1.0.31\",\"version\":1},\"test\":\"true\"}"), rootJSON) +} +func TestTargetFilesCustomField(t *testing.T) { + // custom JSON to test + testCustomJSON := json.RawMessage([]byte(`{"test":true}`)) + + // create a targets metadata + targets := Targets(fixedExpire) + assert.NotNil(t, targets) + + // create a targetfile with the custom JSON + targetFile := TargetFile() + targetFile.Custom = &testCustomJSON + + // add the targetfile to targets metadata + targets.Signed.Targets["testTarget"] = targetFile + targetsJSON, err := targets.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, []byte("{\"signatures\":[],\"signed\":{\"_type\":\"targets\",\"expires\":\"2030-08-15T14:30:45.0000001Z\",\"spec_version\":\"1.0.31\",\"targets\":{\"testTarget\":{\"custom\":{\"test\":true},\"hashes\":{},\"length\":0}},\"version\":1}}"), targetsJSON) +} + +func TestFromBytes(t *testing.T) { + root := Root(fixedExpire) + assert.Equal(t, fixedExpire, root.Signed.Expires) + + _, err := root.FromBytes(testRootBytes) + assert.NoError(t, err) + + assert.Equal(t, fixedExpire, root.Signed.Expires) + assert.Equal(t, fixedExpire, root.Signed.Expires) + assert.Equal(t, ROOT, root.Signed.Type) + assert.True(t, root.Signed.ConsistentSnapshot) + + assert.Equal(t, 4, len(root.Signed.Keys)) + assert.Contains(t, root.Signed.Roles, ROOT) + assert.Equal(t, 1, root.Signed.Roles[ROOT].Threshold) + assert.NotEmpty(t, root.Signed.Roles[ROOT].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[ROOT].KeyIDs[0]) + assert.Equal(t, "roothash", root.Signed.Roles[ROOT].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, SNAPSHOT) + assert.Equal(t, 1, root.Signed.Roles[SNAPSHOT].Threshold) + assert.NotEmpty(t, root.Signed.Roles[SNAPSHOT].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[SNAPSHOT].KeyIDs[0]) + assert.Equal(t, "snapshothash", root.Signed.Roles[SNAPSHOT].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, TARGETS) + assert.Equal(t, 1, root.Signed.Roles[TARGETS].Threshold) + assert.NotEmpty(t, root.Signed.Roles[TARGETS].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[TARGETS].KeyIDs[0]) + assert.Equal(t, "targetshash", root.Signed.Roles[TARGETS].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, TIMESTAMP) + assert.Equal(t, 1, root.Signed.Roles[TIMESTAMP].Threshold) + assert.NotEmpty(t, root.Signed.Roles[TIMESTAMP].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[TIMESTAMP].KeyIDs[0]) + assert.Equal(t, "timestamphash", root.Signed.Roles[TIMESTAMP].KeyIDs[0]) + + assert.Equal(t, int64(1), root.Signed.Version) + assert.NotEmpty(t, root.Signatures) + assert.Equal(t, "roothash", root.Signatures[0].KeyID) + data := []byte("some data") + h32 := sha256.Sum256(data) + h := h32[:] + assert.Equal(t, HexBytes(h), root.Signatures[0].Signature) +} + +func TestToByte(t *testing.T) { + rootBytesExpireStr := "2030-08-15T14:30:45.0000001Z" + rootBytesExpire, err := time.Parse(time.RFC3339, rootBytesExpireStr) + assert.NoError(t, err) + + root := Root(rootBytesExpire) + root.Signed.Keys["roothash"] = &Key{Type: "ed25519", Value: KeyVal{PublicKey: "pubrootval"}, Scheme: "ed25519"} + root.Signed.Keys["snapshothash"] = &Key{Type: "ed25519", Value: KeyVal{PublicKey: "pubsval"}, Scheme: "ed25519"} + root.Signed.Keys["targetshash"] = &Key{Type: "ed25519", Value: KeyVal{PublicKey: "pubtrval"}, Scheme: "ed25519"} + root.Signed.Keys["timestamphash"] = &Key{Type: "ed25519", Value: KeyVal{PublicKey: "pubtmval"}, Scheme: "ed25519"} + root.Signed.Roles[ROOT] = &Role{ + Threshold: 1, + KeyIDs: []string{"roothash"}, + } + root.Signed.Roles[SNAPSHOT] = &Role{ + Threshold: 1, + KeyIDs: []string{"snapshothash"}, + } + root.Signed.Roles[TARGETS] = &Role{ + Threshold: 1, + KeyIDs: []string{"targetshash"}, + } + root.Signed.Roles[TIMESTAMP] = &Role{ + Threshold: 1, + KeyIDs: []string{"timestamphash"}, + } + + data := []byte("some data") + h32 := sha256.Sum256(data) + h := h32[:] + hash := map[string]HexBytes{"ed25519": h} + root.Signatures = append(root.Signatures, Signature{KeyID: "roothash", Signature: hash["ed25519"]}) + rootBytes, err := root.ToBytes(false) + assert.NoError(t, err) + assert.Equal(t, string(testRootBytes), string(rootBytes)) +} + +func TestFromFile(t *testing.T) { + root := Root(fixedExpire) + _, err := root.FromFile(fmt.Sprintf("%s/1.root.json", TEST_REPOSITORY_DATA)) + assert.NoError(t, err) + + assert.Equal(t, fixedExpire, root.Signed.Expires) + assert.Equal(t, fixedExpire, root.Signed.Expires) + assert.Equal(t, ROOT, root.Signed.Type) + assert.True(t, root.Signed.ConsistentSnapshot) + assert.Equal(t, 4, len(root.Signed.Keys)) + + assert.Contains(t, root.Signed.Roles, ROOT) + assert.Equal(t, 1, root.Signed.Roles[ROOT].Threshold) + assert.NotEmpty(t, root.Signed.Roles[ROOT].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[ROOT].KeyIDs[0]) + assert.Equal(t, "d5fa855fce82db75ec64283e828cc90517df5edf5cdc57e7958a890d6556f5b7", root.Signed.Roles[ROOT].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, SNAPSHOT) + assert.Equal(t, 1, root.Signed.Roles[SNAPSHOT].Threshold) + assert.NotEmpty(t, root.Signed.Roles[SNAPSHOT].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[SNAPSHOT].KeyIDs[0]) + assert.Equal(t, "700464ea12f4cb5f06a7512c75b73c0b6eeb2cd42854b085eed5b3c993607cba", root.Signed.Roles[SNAPSHOT].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, TARGETS) + assert.Equal(t, 1, root.Signed.Roles[TARGETS].Threshold) + assert.NotEmpty(t, root.Signed.Roles[TARGETS].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[TARGETS].KeyIDs[0]) + assert.Equal(t, "409fb816e403e0c00646665eac21cb8adfab8e318272ca7589b2d1fc0bccb255", root.Signed.Roles[TARGETS].KeyIDs[0]) + + assert.Contains(t, root.Signed.Roles, TIMESTAMP) + assert.Equal(t, 1, root.Signed.Roles[TIMESTAMP].Threshold) + assert.NotEmpty(t, root.Signed.Roles[TIMESTAMP].KeyIDs) + assert.Contains(t, root.Signed.Keys, root.Signed.Roles[TIMESTAMP].KeyIDs[0]) + assert.Equal(t, "0a5842e65e9c8c428354f40708435de6793ac379a275effe40d6358be2de835c", root.Signed.Roles[TIMESTAMP].KeyIDs[0]) + + assert.Equal(t, SPECIFICATION_VERSION, root.Signed.SpecVersion) + assert.Contains(t, root.Signed.UnrecognizedFields, "test") + assert.Equal(t, "true", root.Signed.UnrecognizedFields["test"]) + + assert.Equal(t, int64(1), root.Signed.Version) + assert.NotEmpty(t, root.Signatures) + assert.Equal(t, "d5fa855fce82db75ec64283e828cc90517df5edf5cdc57e7958a890d6556f5b7", root.Signatures[0].KeyID) + +} + +func TestToFile(t *testing.T) { + tmp := os.TempDir() + tmpDir, err := os.MkdirTemp(tmp, "0750") + assert.NoError(t, err) + + fileName := fmt.Sprintf("%s/1.root.json", tmpDir) + assert.NoFileExists(t, fileName) + root, err := Root().FromBytes(testRootBytes) + assert.NoError(t, err) + + err = root.ToFile(fileName, false) + assert.NoError(t, err) + + assert.FileExists(t, fileName) + data, err := os.ReadFile(fileName) + assert.NoError(t, err) + assert.Equal(t, string(testRootBytes), string(data)) + + err = os.RemoveAll(tmpDir) + assert.NoError(t, err) + assert.NoFileExists(t, fileName) + +} + +func TestVerifyDelegate(t *testing.T) { + root := Root(fixedExpire) + err := root.VerifyDelegate("test", root) + assert.EqualError(t, err, "value error: no delegation found for test") + + targets := Targets(fixedExpire) + err = targets.VerifyDelegate("test", targets) + assert.EqualError(t, err, "value error: no delegations found") + + key, _, err := ed25519.GenerateKey(nil) + assert.NoError(t, err) + + delegateeKey, _ := KeyFromPublicKey(key) + delegations := &Delegations{ + Keys: map[string]*Key{ + delegateeKey.ID(): delegateeKey, + }, + Roles: []DelegatedRole{ + { + Name: "test", + KeyIDs: []string{delegateeKey.ID()}, + }, + }, + } + targets.Signed.Delegations = delegations + err = targets.VerifyDelegate("test", root) + assert.NoError(t, err) + err = targets.VerifyDelegate("test", targets) + assert.NoError(t, err) + + err = targets.VerifyDelegate("non-existing", root) + assert.EqualError(t, err, "value error: no delegation found for non-existing") + err = targets.VerifyDelegate("non-existing", targets) + assert.EqualError(t, err, "value error: no delegation found for non-existing") + + targets.Signed.Delegations.Roles[0].Threshold = 1 + err = targets.VerifyDelegate("test", targets) + assert.Errorf(t, err, "Verifying test failed, not enough signatures, got %d, want %d", 0, 1) + + delegations.Keys["incorrectkey"] = delegations.Keys[delegateeKey.ID()] + delete(delegations.Keys, delegateeKey.ID()) + err = targets.VerifyDelegate("test", root) + assert.Errorf(t, err, "key with ID %s not found in test keyids", delegateeKey.ID()) + + timestamp := Timestamp(fixedExpire) + err = timestamp.VerifyDelegate("test", timestamp) + assert.EqualError(t, err, "type error: call is valid only on delegator metadata (should be either root or targets)") + + snapshot := Snapshot(fixedExpire) + err = snapshot.VerifyDelegate("test", snapshot) + assert.EqualError(t, err, "type error: call is valid only on delegator metadata (should be either root or targets)") +} + +func TestVerifyLengthHashesTargetFiles(t *testing.T) { + targetFiles := TargetFile() + targetFiles.Hashes = map[string]HexBytes{} + + data := []byte{} + err := targetFiles.VerifyLengthHashes(data) + assert.NoError(t, err) + + data = []byte("some data") + err = targetFiles.VerifyLengthHashes(data) + assert.Error(t, err, "length/hash verification error: length verification failed - expected 0, got 9") + + h32 := sha256.Sum256(data) + h := h32[:] + targetFiles.Hashes["sha256"] = h + targetFiles.Length = int64(len(data)) + err = targetFiles.VerifyLengthHashes(data) + assert.NoError(t, err) + + targetFiles.Hashes = map[string]HexBytes{"unknownAlg": data} + err = targetFiles.VerifyLengthHashes(data) + assert.Error(t, err, "length/hash verification error: hash verification failed - unknown hashing algorithm - unknownArg") + + targetFiles.Hashes = map[string]HexBytes{"sha256": data} + err = targetFiles.VerifyLengthHashes(data) + assert.Error(t, err, "length/hash verification error: hash verification failed - mismatch for algorithm sha256") +} + +func TestVerifyLengthHashesMetaFiles(t *testing.T) { + version := int64(0) + metaFile := MetaFile(version) + data := []byte("some data") + metaFile.Hashes = map[string]HexBytes{"unknownAlg": data} + err := metaFile.VerifyLengthHashes(data) + assert.Error(t, err, "length/hash verification error: hash verification failed - unknown hashing algorithm - unknownArg") + + metaFile.Hashes = map[string]HexBytes{"sha256": data} + err = metaFile.VerifyLengthHashes(data) + assert.Error(t, err, "length/hash verification error: hash verification failed - mismatch for algorithm sha256") + + h32 := sha256.Sum256(data) + h := h32[:] + metaFile.Hashes = map[string]HexBytes{"sha256": h} + err = metaFile.VerifyLengthHashes(data) + assert.NoError(t, err) + + incorrectData := []byte("another data") + err = metaFile.VerifyLengthHashes(incorrectData) + assert.Error(t, err, "length/hash verification error: length verification failed - expected 0, got 9") +} diff --git a/metadata/multirepo/multirepo.go b/metadata/multirepo/multirepo.go new file mode 100644 index 00000000..03d8986c --- /dev/null +++ b/metadata/multirepo/multirepo.go @@ -0,0 +1,344 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package multirepo + +import ( + "encoding/json" + "fmt" + "os" + "path/filepath" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/metadata/updater" + "golang.org/x/exp/slices" +) + +// The following represent the map file described in TAP 4 +type Mapping struct { + Paths []string `json:"paths"` + Repositories []string `json:"repositories"` + Threshold int `json:"threshold"` + Terminating bool `json:"terminating"` +} + +type MultiRepoMapType struct { + Repositories map[string][]string `json:"repositories"` + Mapping []*Mapping `json:"mapping"` +} + +// MultiRepoConfig represents the configuration for a set of trusted TUF clients +type MultiRepoConfig struct { + RepoMap *MultiRepoMapType + TrustedRoots map[string][]byte + LocalMetadataDir string + LocalTargetsDir string + DisableLocalCache bool +} + +// MultiRepoClient represents a multi-repository TUF client +type MultiRepoClient struct { + TUFClients map[string]*updater.Updater + Config *MultiRepoConfig +} + +type targetMatch struct { + targetInfo *metadata.TargetFiles + repositories []string +} + +// NewConfig returns configuration for a multi-repo TUF client +func NewConfig(repoMap []byte, roots map[string][]byte) (*MultiRepoConfig, error) { + // error if we don't have the necessary arguments + if len(repoMap) == 0 || len(roots) == 0 { + return nil, fmt.Errorf("failed to create multi-repository config: no map file and/or trusted root metadata is provided") + } + + // unmarshal the map file (note: should we expect/support unrecognized values here?) + var mapFile *MultiRepoMapType + if err := json.Unmarshal(repoMap, &mapFile); err != nil { + return nil, err + } + + // make sure we have enough trusted root metadata files provided based on the repository list + for repo := range mapFile.Repositories { + // check if we have a trusted root metadata for this repository + _, ok := roots[repo] + if !ok { + return nil, fmt.Errorf("no trusted root metadata provided for repository - %s", repo) + } + } + + return &MultiRepoConfig{ + RepoMap: mapFile, + TrustedRoots: roots, + }, nil +} + +// New returns a multi-repository TUF client. All repositories described in the provided map file are initialized too +func New(config *MultiRepoConfig) (*MultiRepoClient, error) { + // create a multi repo client instance + client := &MultiRepoClient{ + Config: config, + TUFClients: map[string]*updater.Updater{}, + } + + // create TUF clients for each repository listed in the map file + if err := client.initTUFClients(); err != nil { + return nil, err + } + return client, nil +} + +// initTUFClients loop through all repositories listed in the map file and create a TUF client for each +func (client *MultiRepoClient) initTUFClients() error { + log := metadata.GetLogger() + + // loop through each repository listed in the map file and initialize it + for repoName, repoURL := range client.Config.RepoMap.Repositories { + log.Info("Initializing", "name", repoName, "url", repoURL[0]) + + // get the trusted root file from the location specified in the map file relevant to its path + // NOTE: the root.json file is expected to be in a folder named after the repository it corresponds to placed in the same folder as the map file + // i.e //root.json + rootBytes, ok := client.Config.TrustedRoots[repoName] + if !ok { + return fmt.Errorf("failed to get trusted root metadata from config for repository - %s", repoName) + } + + // path of where each of the repository's metadata files will be persisted + metadataDir := filepath.Join(client.Config.LocalMetadataDir, repoName) + + // location of where the target files will be downloaded (propagated to each client from the multi-repo config) + // WARNING: Do note that using a single folder for storing targets from various repositories as it might lead to a conflict + targetsDir := client.Config.LocalTargetsDir + if len(client.Config.LocalTargetsDir) == 0 { + // if it was not set, create a targets folder under each repository so there's no chance of conflict + targetsDir = filepath.Join(metadataDir, "targets") + } + + // ensure paths exist, doesn't do anything if caching is disabled + err := client.Config.EnsurePathsExist() + if err != nil { + return err + } + + // default config for a TUF Client + cfg, err := config.New(repoURL[0], rootBytes) // support only one mirror for the time being + if err != nil { + return err + } + cfg.LocalMetadataDir = metadataDir + cfg.LocalTargetsDir = targetsDir + cfg.DisableLocalCache = client.Config.DisableLocalCache // propagate global cache policy + + // create a new Updater instance for each repository + repoTUFClient, err := updater.New(cfg) + if err != nil { + return fmt.Errorf("failed to create Updater instance: %w", err) + } + + // save the client + client.TUFClients[repoName] = repoTUFClient + log.Info("Successfully initialized", "name", repoName, "url", repoURL) + } + return nil +} + +// Refresh refreshes all repository clients +func (client *MultiRepoClient) Refresh() error { + log := metadata.GetLogger() + + // loop through each initialized TUF client and refresh it + for name, repoTUFClient := range client.TUFClients { + log.Info("Refreshing", "name", name) + err := repoTUFClient.Refresh() + if err != nil { + return err + } + } + return nil +} + +// GetTopLevelTargets returns the top-level target files for all repositories +func (client *MultiRepoClient) GetTopLevelTargets() (map[string]*metadata.TargetFiles, error) { + // collection of all target files for all clients + result := map[string]*metadata.TargetFiles{} + + // loop through each repository + for _, tufClient := range client.TUFClients { + // loop through the top level targets for each repository + for targetName := range tufClient.GetTopLevelTargets() { + // see if this target should be kept, this goes through the TAP4 search algorithm + targetInfo, _, err := client.GetTargetInfo(targetName) + if err != nil { + // we skip saving this target since there's no way/policy do download it with this map.json file + // possible causes like not enough repositories for that threshold, target info mismatch, etc. + return nil, err + } + // check if this target file is already present in the collection + if val, ok := result[targetName]; ok { + // target file is already present + if !val.Equal(*targetInfo) { + // target files have the same target name but have different target infos + // this means the map.json file allows downloading two different target infos mapped to the same target name + // TODO: confirm if this should raise an error + return nil, fmt.Errorf("target name conflict") + } + // same target info, no need to do anything + } else { + // save the target + result[targetName] = targetInfo + } + } + } + return result, nil +} + +// GetTargetInfo returns metadata.TargetFiles instance with information +// for targetPath and a list of repositories that serve the matching target. +// It implements the TAP 4 search algorithm. +func (client *MultiRepoClient) GetTargetInfo(targetPath string) (*metadata.TargetFiles, []string, error) { + terminated := false + // loop through each mapping + for _, eachMap := range client.Config.RepoMap.Mapping { + // loop through each path for this mapping + for _, pathPattern := range eachMap.Paths { + // check if the targetPath matches each path mapping + patternMatched, err := filepath.Match(pathPattern, targetPath) + if err != nil { + // error looking for a match + return nil, nil, err + } else { + if patternMatched { + // if there's a pattern match, loop through all of the repositories listed for that mapping + // and see if we can find a consensus among them to cover the threshold for that mapping + var matchedTargetGroups []targetMatch + for _, repoName := range eachMap.Repositories { + // get target info from that repository + newTargetInfo, err := client.TUFClients[repoName].GetTargetInfo(targetPath) + if err != nil { + // failed to get target info for the given target + // there's probably no such target + // skip the rest and proceed trying to get target info from the next repository + continue + } + found := false + // loop through all target infos we found so far + for i, target := range matchedTargetGroups { + // see if we already have found one like that + if target.targetInfo.Equal(*newTargetInfo) { + found = true + // if so, update its repository list + if slices.Contains(target.repositories, repoName) { + // we have a duplicate repository listed in the mapping + // decide if we should error out here + // nevertheless we won't take it into account when we calculate the threshold + } else { + // a new repository vouched for this target + matchedTargetGroups[i].repositories = append(target.repositories, repoName) + } + } + } + // this target as not part of the list so far, so we should add it + if !found { + matchedTargetGroups = append(matchedTargetGroups, targetMatch{ + targetInfo: newTargetInfo, + repositories: []string{repoName}, + }) + } + // proceed with searching for this target in the next repository + } + // we went through all repositories listed in that mapping + // lets see if we have matched the threshold consensus for the given target file + var result *targetMatch + for _, target := range matchedTargetGroups { + // compare thresholds for each target info we found with the value stated for its mapping + if len(target.repositories) >= eachMap.Threshold { + // this target has enough repositories signed for it + if result != nil { + // it seems there's more than one target info matching the threshold for this mapping + // it is a conflict since it's impossible to establish a consensus which of the found targets + // we should actually trust, so we error out + return nil, nil, fmt.Errorf("more than one target info matching the necessary threshold value") + } else { + // this is the first target we found matching the necessary threshold so save it + result = &target + } + } + } + // search finished, see if we have found a matching target + if result != nil { + return result.targetInfo, result.repositories, nil + } + // if we are here, we haven't found enough target infos to match the threshold number + // for this mapping + if eachMap.Terminating { + // stop the search if this was a terminating map + terminated = eachMap.Terminating + break + } + } + } + // no match, continue looking at the next path pattern from this mapping + } + // stop the search if this was a terminating map, otherwise continue with the next mapping + if terminated { + break + } + } + // looped through all mappings and there was nothing, not even a terminating one + return nil, nil, fmt.Errorf("target info not found") +} + +// DownloadTarget downloads the target file specified by targetFile +func (client *MultiRepoClient) DownloadTarget(repos []string, targetFile *metadata.TargetFiles, filePath, targetBaseURL string) (string, []byte, error) { + log := metadata.GetLogger() + + for _, repoName := range repos { + // see if the target is already present locally + targetPath, targetBytes, err := client.TUFClients[repoName].FindCachedTarget(targetFile, filePath) + if err != nil { + return "", nil, err + } + if len(targetPath) != 0 && len(targetBytes) != 0 { + // we already got the target for this target info cached locally, so return it + log.Info("Target already present locally from repo", "target", targetFile.Path, "repo", repoName) + return targetPath, targetBytes, nil + } + // not present locally, so let's try to download it + targetPath, targetBytes, err = client.TUFClients[repoName].DownloadTarget(targetFile, filePath, targetBaseURL) + if err != nil { + // TODO: decide if we should error if one repository serves the expected target info, but we fail to download the actual target + // try downloading the target from the next available repository + continue + } + // we got the target for this target info, so return it + log.Info("Downloaded target from repo", "target", targetFile.Path, "repo", repoName) + return targetPath, targetBytes, nil + } + // error out as we haven't succeeded downloading the target file + return "", nil, fmt.Errorf("failed to download target file %s", targetFile.Path) +} + +func (cfg *MultiRepoConfig) EnsurePathsExist() error { + if cfg.DisableLocalCache { + return nil + } + for _, path := range []string{cfg.LocalMetadataDir, cfg.LocalTargetsDir} { + err := os.MkdirAll(path, os.ModePerm) + if err != nil { + return err + } + } + return nil +} diff --git a/metadata/repository/repository.go b/metadata/repository/repository.go new file mode 100644 index 00000000..a00ff033 --- /dev/null +++ b/metadata/repository/repository.go @@ -0,0 +1,71 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package repository + +import ( + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +// repositoryType struct for storing metadata +type repositoryType struct { + root *metadata.Metadata[metadata.RootType] + snapshot *metadata.Metadata[metadata.SnapshotType] + timestamp *metadata.Metadata[metadata.TimestampType] + targets map[string]*metadata.Metadata[metadata.TargetsType] +} + +// New creates an empty repository instance +func New() *repositoryType { + return &repositoryType{ + targets: map[string]*metadata.Metadata[metadata.TargetsType]{}, + } +} + +// Root returns metadata of type Root +func (r *repositoryType) Root() *metadata.Metadata[metadata.RootType] { + return r.root +} + +// SetRoot sets metadata of type Root +func (r *repositoryType) SetRoot(meta *metadata.Metadata[metadata.RootType]) { + r.root = meta +} + +// Snapshot returns metadata of type Snapshot +func (r *repositoryType) Snapshot() *metadata.Metadata[metadata.SnapshotType] { + return r.snapshot +} + +// SetSnapshot sets metadata of type Snapshot +func (r *repositoryType) SetSnapshot(meta *metadata.Metadata[metadata.SnapshotType]) { + r.snapshot = meta +} + +// Timestamp returns metadata of type Timestamp +func (r *repositoryType) Timestamp() *metadata.Metadata[metadata.TimestampType] { + return r.timestamp +} + +// SetTimestamp sets metadata of type Timestamp +func (r *repositoryType) SetTimestamp(meta *metadata.Metadata[metadata.TimestampType]) { + r.timestamp = meta +} + +// Targets returns metadata of type Targets +func (r *repositoryType) Targets(name string) *metadata.Metadata[metadata.TargetsType] { + return r.targets[name] +} + +// SetTargets sets metadata of type Targets +func (r *repositoryType) SetTargets(name string, meta *metadata.Metadata[metadata.TargetsType]) { + r.targets[name] = meta +} diff --git a/metadata/repository/repository_test.go b/metadata/repository/repository_test.go new file mode 100644 index 00000000..a13f222c --- /dev/null +++ b/metadata/repository/repository_test.go @@ -0,0 +1,52 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package repository + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +func TestNewRepository(t *testing.T) { + repo := New() + + now := time.Now().UTC() + safeExpiry := now.Truncate(time.Second).AddDate(0, 0, 30) + + root := metadata.Root(safeExpiry) + repo.SetRoot(root) + assert.Equal(t, "root", repo.Root().Signed.Type) + assert.Equal(t, int64(1), repo.Root().Signed.Version) + assert.Equal(t, metadata.SPECIFICATION_VERSION, repo.Root().Signed.SpecVersion) + + targets := metadata.Targets(safeExpiry) + repo.SetTargets("targets", targets) + assert.Equal(t, "targets", repo.Targets("targets").Signed.Type) + assert.Equal(t, int64(1), repo.Targets("targets").Signed.Version) + assert.Equal(t, metadata.SPECIFICATION_VERSION, repo.Targets("targets").Signed.SpecVersion) + + timestamp := metadata.Timestamp(safeExpiry) + repo.SetTimestamp(timestamp) + // repo.SetRoot(root) + assert.Equal(t, "timestamp", repo.Timestamp().Signed.Type) + assert.Equal(t, int64(1), repo.Timestamp().Signed.Version) + assert.Equal(t, metadata.SPECIFICATION_VERSION, repo.Timestamp().Signed.SpecVersion) + + snapshot := metadata.Snapshot(safeExpiry) + repo.SetSnapshot(snapshot) + assert.Equal(t, "snapshot", repo.Snapshot().Signed.Type) + assert.Equal(t, int64(1), repo.Snapshot().Signed.Version) + assert.Equal(t, metadata.SPECIFICATION_VERSION, repo.Snapshot().Signed.SpecVersion) +} diff --git a/metadata/trustedmetadata/trustedmetadata.go b/metadata/trustedmetadata/trustedmetadata.go new file mode 100644 index 00000000..4202453a --- /dev/null +++ b/metadata/trustedmetadata/trustedmetadata.go @@ -0,0 +1,351 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package trustedmetadata + +import ( + "fmt" + "time" + + "github.com/theupdateframework/go-tuf/v2/metadata" +) + +// TrustedMetadata struct for storing trusted metadata +type TrustedMetadata struct { + Root *metadata.Metadata[metadata.RootType] + Snapshot *metadata.Metadata[metadata.SnapshotType] + Timestamp *metadata.Metadata[metadata.TimestampType] + Targets map[string]*metadata.Metadata[metadata.TargetsType] + RefTime time.Time +} + +// New creates a new TrustedMetadata instance which ensures that the +// collection of metadata in it is valid and trusted through the whole +// client update workflow. It provides easy ways to update the metadata +// with the caller making decisions on what is updated +func New(rootData []byte) (*TrustedMetadata, error) { + res := &TrustedMetadata{ + Targets: map[string]*metadata.Metadata[metadata.TargetsType]{}, + RefTime: time.Now().UTC(), + } + // load and validate the local root metadata + // valid initial trusted root metadata is required + err := res.loadTrustedRoot(rootData) + if err != nil { + return nil, err + } + return res, nil +} + +// UpdateRoot verifies and loads β€œrootDataβ€œ as new root metadata. +// Note that an expired intermediate root is considered valid: expiry is +// only checked for the final root in UpdateTimestamp() +func (trusted *TrustedMetadata) UpdateRoot(rootData []byte) (*metadata.Metadata[metadata.RootType], error) { + log := metadata.GetLogger() + + if trusted.Timestamp != nil { + return nil, metadata.ErrRuntime{Msg: "cannot update root after timestamp"} + } + log.Info("Updating root") + // generate root metadata + newRoot, err := metadata.Root().FromBytes(rootData) + if err != nil { + return nil, err + } + // check metadata type matches root + if newRoot.Signed.Type != metadata.ROOT { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("expected %s, got %s", metadata.ROOT, newRoot.Signed.Type)} + } + // verify that new root is signed by trusted root + err = trusted.Root.VerifyDelegate(metadata.ROOT, newRoot) + if err != nil { + return nil, err + } + // verify version + if newRoot.Signed.Version != trusted.Root.Signed.Version+1 { + return nil, metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("bad version number, expected %d, got %d", trusted.Root.Signed.Version+1, newRoot.Signed.Version)} + } + // verify that new root is signed by itself + err = newRoot.VerifyDelegate(metadata.ROOT, newRoot) + if err != nil { + return nil, err + } + // save root if verified + trusted.Root = newRoot + log.Info("Updated root", "version", trusted.Root.Signed.Version) + return trusted.Root, nil +} + +// UpdateTimestamp verifies and loads β€œtimestampDataβ€œ as new timestamp metadata. +// Note that an intermediate timestamp is allowed to be expired. "TrustedMetadata" +// will error in this case but the intermediate timestamp will be loaded. +// This way a newer timestamp can still be loaded (and the intermediate +// timestamp will be used for rollback protection). Expired timestamp will +// prevent loading snapshot metadata. +func (trusted *TrustedMetadata) UpdateTimestamp(timestampData []byte) (*metadata.Metadata[metadata.TimestampType], error) { + log := metadata.GetLogger() + + if trusted.Snapshot != nil { + return nil, metadata.ErrRuntime{Msg: "cannot update timestamp after snapshot"} + } + // client workflow 5.3.10: Make sure final root is not expired. + if trusted.Root.Signed.IsExpired(trusted.RefTime) { + // no need to check for 5.3.11 (fast forward attack recovery): + // timestamp/snapshot can not yet be loaded at this point + return nil, metadata.ErrExpiredMetadata{Msg: "final root.json is expired"} + } + log.Info("Updating timestamp") + newTimestamp, err := metadata.Timestamp().FromBytes(timestampData) + if err != nil { + return nil, err + } + // check metadata type matches timestamp + if newTimestamp.Signed.Type != metadata.TIMESTAMP { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("expected %s, got %s", metadata.TIMESTAMP, newTimestamp.Signed.Type)} + } + // verify that new timestamp is signed by trusted root + err = trusted.Root.VerifyDelegate(metadata.TIMESTAMP, newTimestamp) + if err != nil { + return nil, err + } + // if an existing trusted timestamp is updated, + // check for a rollback attack + if trusted.Timestamp != nil { + // prevent rolling back timestamp version + if newTimestamp.Signed.Version < trusted.Timestamp.Signed.Version { + return nil, metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("new timestamp version %d must be >= %d", newTimestamp.Signed.Version, trusted.Timestamp.Signed.Version)} + } + // keep using old timestamp if versions are equal + if newTimestamp.Signed.Version == trusted.Timestamp.Signed.Version { + log.Info("New timestamp version equals the old one", "new", newTimestamp.Signed.Version, "old", trusted.Timestamp.Signed.Version) + return nil, metadata.ErrEqualVersionNumber{Msg: fmt.Sprintf("new timestamp version %d equals the old one %d", newTimestamp.Signed.Version, trusted.Timestamp.Signed.Version)} + } + // prevent rolling back snapshot version + snapshotMeta := trusted.Timestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] + newSnapshotMeta := newTimestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] + if newSnapshotMeta.Version < snapshotMeta.Version { + return nil, metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("new snapshot version %d must be >= %d", newSnapshotMeta.Version, snapshotMeta.Version)} + } + } + // expiry not checked to allow old timestamp to be used for rollback + // protection of new timestamp: expiry is checked in UpdateSnapshot() + // save root if verified + trusted.Timestamp = newTimestamp + log.Info("Updated timestamp", "version", trusted.Timestamp.Signed.Version) + + // timestamp is loaded: error if it is not valid _final_ timestamp + err = trusted.checkFinalTimestamp() + if err != nil { + return nil, err + } + // all okay + return trusted.Timestamp, nil +} + +// checkFinalTimestamp verifies if trusted timestamp is not expired +func (trusted *TrustedMetadata) checkFinalTimestamp() error { + if trusted.Timestamp.Signed.IsExpired(trusted.RefTime) { + return metadata.ErrExpiredMetadata{Msg: "timestamp.json is expired"} + } + return nil +} + +// UpdateSnapshot verifies and loads β€œsnapshotDataβ€œ as new snapshot metadata. +// Note that an intermediate snapshot is allowed to be expired and version +// is allowed to not match timestamp meta version: TrustedMetadata +// will error for case of expired metadata or when using bad versions but the +// intermediate snapshot will be loaded. This way a newer snapshot can still +// be loaded (and the intermediate snapshot will be used for rollback protection). +// Expired snapshot or snapshot that does not match timestamp meta version will +// prevent loading targets. +func (trusted *TrustedMetadata) UpdateSnapshot(snapshotData []byte, isTrusted bool) (*metadata.Metadata[metadata.SnapshotType], error) { + log := metadata.GetLogger() + + if trusted.Timestamp == nil { + return nil, metadata.ErrRuntime{Msg: "cannot update snapshot before timestamp"} + } + if trusted.Targets[metadata.TARGETS] != nil { + return nil, metadata.ErrRuntime{Msg: "cannot update snapshot after targets"} + } + log.Info("Updating snapshot") + + // snapshot cannot be loaded if final timestamp is expired + err := trusted.checkFinalTimestamp() + if err != nil { + return nil, err + } + snapshotMeta := trusted.Timestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] + // verify non-trusted data against the hashes in timestamp, if any. + // trusted snapshot data has already been verified once. + if !isTrusted { + err = snapshotMeta.VerifyLengthHashes(snapshotData) + if err != nil { + return nil, err + } + } + newSnapshot, err := metadata.Snapshot().FromBytes(snapshotData) + if err != nil { + return nil, err + } + // check metadata type matches snapshot + if newSnapshot.Signed.Type != metadata.SNAPSHOT { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("expected %s, got %s", metadata.SNAPSHOT, newSnapshot.Signed.Type)} + } + // verify that new snapshot is signed by trusted root + err = trusted.Root.VerifyDelegate(metadata.SNAPSHOT, newSnapshot) + if err != nil { + return nil, err + } + + // version not checked against meta version to allow old snapshot to be + // used in rollback protection: it is checked when targets is updated + + // if an existing trusted snapshot is updated, check for rollback attack + if trusted.Snapshot != nil { + for name, info := range trusted.Snapshot.Signed.Meta { + newFileInfo, ok := newSnapshot.Signed.Meta[name] + // prevent removal of any metadata in meta + if !ok { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("new snapshot is missing info for %s", name)} + } + // prevent rollback of any metadata versions + if newFileInfo.Version < info.Version { + return nil, metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("expected %s version %d, got %d", name, newFileInfo.Version, info.Version)} + } + } + } + + // expiry not checked to allow old snapshot to be used for rollback + // protection of new snapshot: it is checked when targets is updated + trusted.Snapshot = newSnapshot + log.Info("Updated snapshot", "version", trusted.Snapshot.Signed.Version) + + // snapshot is loaded, but we error if it's not valid _final_ snapshot + err = trusted.checkFinalSnapshot() + if err != nil { + return nil, err + } + // all okay + return trusted.Snapshot, nil +} + +// checkFinalSnapshot verifies if it's not expired and snapshot version matches timestamp meta version +func (trusted *TrustedMetadata) checkFinalSnapshot() error { + if trusted.Snapshot.Signed.IsExpired(trusted.RefTime) { + return metadata.ErrExpiredMetadata{Msg: "snapshot.json is expired"} + } + snapshotMeta := trusted.Timestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] + if trusted.Snapshot.Signed.Version != snapshotMeta.Version { + return metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("expected %d, got %d", snapshotMeta.Version, trusted.Snapshot.Signed.Version)} + } + return nil +} + +// UpdateTargets verifies and loads β€œtargetsDataβ€œ as new top-level targets metadata. +func (trusted *TrustedMetadata) UpdateTargets(targetsData []byte) (*metadata.Metadata[metadata.TargetsType], error) { + return trusted.UpdateDelegatedTargets(targetsData, metadata.TARGETS, metadata.ROOT) +} + +// UpdateDelegatedTargets verifies and loads β€œtargetsDataβ€œ as new metadata for target β€œroleNameβ€œ +func (trusted *TrustedMetadata) UpdateDelegatedTargets(targetsData []byte, roleName, delegatorName string) (*metadata.Metadata[metadata.TargetsType], error) { + log := metadata.GetLogger() + + var ok bool + if trusted.Snapshot == nil { + return nil, metadata.ErrRuntime{Msg: "cannot load targets before snapshot"} + } + // targets cannot be loaded if final snapshot is expired or its version + // does not match meta version in timestamp + err := trusted.checkFinalSnapshot() + if err != nil { + return nil, err + } + // check if delegator metadata is present + if delegatorName == metadata.ROOT { + if trusted.Root != nil { + ok = true + } else { + ok = false + } + } else { + _, ok = trusted.Targets[delegatorName] + } + if !ok { + return nil, metadata.ErrRuntime{Msg: "cannot load targets before delegator"} + } + log.Info("Updating delegated role", "role", roleName, "delegator", delegatorName) + // Verify against the hashes in snapshot, if any + meta, ok := trusted.Snapshot.Signed.Meta[fmt.Sprintf("%s.json", roleName)] + if !ok { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("snapshot does not contain information for %s", roleName)} + } + err = meta.VerifyLengthHashes(targetsData) + if err != nil { + return nil, err + } + newDelegate, err := metadata.Targets().FromBytes(targetsData) + if err != nil { + return nil, err + } + // check metadata type matches targets + if newDelegate.Signed.Type != metadata.TARGETS { + return nil, metadata.ErrRepository{Msg: fmt.Sprintf("expected %s, got %s", metadata.TARGETS, newDelegate.Signed.Type)} + } + // get delegator metadata and verify the new delegatee + if delegatorName == metadata.ROOT { + err = trusted.Root.VerifyDelegate(roleName, newDelegate) + if err != nil { + return nil, err + } + } else { + err = trusted.Targets[delegatorName].VerifyDelegate(roleName, newDelegate) + if err != nil { + return nil, err + } + } + // check versions + if newDelegate.Signed.Version != meta.Version { + return nil, metadata.ErrBadVersionNumber{Msg: fmt.Sprintf("expected %s version %d, got %d", roleName, meta.Version, newDelegate.Signed.Version)} + } + // check expiration + if newDelegate.Signed.IsExpired(trusted.RefTime) { + return nil, metadata.ErrExpiredMetadata{Msg: fmt.Sprintf("new %s is expired", roleName)} + } + trusted.Targets[roleName] = newDelegate + log.Info("Updated role", "role", roleName, "version", trusted.Targets[roleName].Signed.Version) + return trusted.Targets[roleName], nil +} + +// loadTrustedRoot verifies and loads "data" as trusted root metadata. +// Note that an expired initial root is considered valid: expiry is +// only checked for the final root in β€œUpdateTimestamp()β€œ. +func (trusted *TrustedMetadata) loadTrustedRoot(rootData []byte) error { + log := metadata.GetLogger() + + // generate root metadata + newRoot, err := metadata.Root().FromBytes(rootData) + if err != nil { + return err + } + // check metadata type matches root + if newRoot.Signed.Type != metadata.ROOT { + return metadata.ErrRepository{Msg: fmt.Sprintf("expected %s, got %s", metadata.ROOT, newRoot.Signed.Type)} + } + // verify root by itself + err = newRoot.VerifyDelegate(metadata.ROOT, newRoot) + if err != nil { + return err + } + // save root if verified + trusted.Root = newRoot + log.Info("Loaded trusted root", "version", trusted.Root.Signed.Version) + return nil +} diff --git a/metadata/trustedmetadata/trustedmetadata_test.go b/metadata/trustedmetadata/trustedmetadata_test.go new file mode 100644 index 00000000..3d9765f6 --- /dev/null +++ b/metadata/trustedmetadata/trustedmetadata_test.go @@ -0,0 +1,690 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package trustedmetadata + +import ( + "crypto" + "fmt" + "os" + "testing" + "time" + + "github.com/sigstore/sigstore/pkg/cryptoutils" + "github.com/sigstore/sigstore/pkg/signature" + "github.com/stretchr/testify/assert" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/testutils/testutils" + "golang.org/x/exp/maps" +) + +var allRoles map[string][]byte + +func setAllRolesBytes(path string) { + log := metadata.GetLogger() + + allRoles = make(map[string][]byte) + root, err := os.ReadFile(fmt.Sprintf("%s/root.json", path)) + if err != nil { + log.Error(err, "failed to root bytes") + os.Exit(1) + } + allRoles[metadata.ROOT] = root + targets, err := os.ReadFile(fmt.Sprintf("%s/targets.json", path)) + if err != nil { + log.Error(err, "failed to targets bytes") + os.Exit(1) + } + allRoles[metadata.TARGETS] = targets + snapshot, err := os.ReadFile(fmt.Sprintf("%s/snapshot.json", path)) + if err != nil { + log.Error(err, "failed to snapshot bytes") + os.Exit(1) + } + allRoles[metadata.SNAPSHOT] = snapshot + timestamp, err := os.ReadFile(fmt.Sprintf("%s/timestamp.json", path)) + if err != nil { + log.Error(err, "failed to timestamp bytes") + os.Exit(1) + } + allRoles[metadata.TIMESTAMP] = timestamp + role1, err := os.ReadFile(fmt.Sprintf("%s/role1.json", path)) + if err != nil { + log.Error(err, "failed to role1 bytes") + os.Exit(1) + } + allRoles["role1"] = role1 + role2, err := os.ReadFile(fmt.Sprintf("%s/role2.json", path)) + if err != nil { + log.Error(err, "failed to role2 bytes") + os.Exit(1) + } + allRoles["role2"] = role2 +} + +func TestMain(m *testing.M) { + log := metadata.GetLogger() + + repoPath := "../../testutils/repository_data/repository/metadata" + keystorePath := "../../testutils/repository_data/keystore" + targetsPath := "../../testutils/repository_data/repository/targets" + err := testutils.SetupTestDirs(repoPath, targetsPath, keystorePath) + defer testutils.Cleanup() + + if err != nil { + log.Error(err, "failed to setup test dirs") + os.Exit(1) + } + setAllRolesBytes(testutils.RepoDir) + m.Run() +} + +type modifyRoot func(*metadata.Metadata[metadata.RootType]) + +func modifyRootMetadata(fn modifyRoot) ([]byte, error) { + log := metadata.GetLogger() + + root, err := metadata.Root().FromBytes(allRoles[metadata.ROOT]) + if err != nil { + log.Error(err, "failed to create root metadata from bytes") + } + fn(root) + + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/root_key", crypto.SHA256, cryptoutils.SkipPassword) + if err != nil { + log.Error(err, "failed to load signer from pem file") + } + root.ClearSignatures() + _, err = root.Sign(signer) + if err != nil { + log.Error(err, "failed to sign root") + } + return root.ToBytes(true) +} + +type modifyTimestamp func(*metadata.Metadata[metadata.TimestampType]) + +func modifyTimestamptMetadata(fn modifyTimestamp) ([]byte, error) { + log := metadata.GetLogger() + + timestamp, err := metadata.Timestamp().FromBytes(allRoles[metadata.TIMESTAMP]) + if err != nil { + log.Error(err, "failed to create timestamp metadata from bytes") + } + fn(timestamp) + + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/timestamp_key", crypto.SHA256, cryptoutils.SkipPassword) + if err != nil { + log.Error(err, "failed to load signer from pem file") + } + timestamp.ClearSignatures() + _, err = timestamp.Sign(signer) + if err != nil { + log.Error(err, "failed to sign timestamp") + } + return timestamp.ToBytes(true) +} + +type modifySnapshot func(*metadata.Metadata[metadata.SnapshotType]) + +func modifySnapshotMetadata(fn modifySnapshot) ([]byte, error) { + log := metadata.GetLogger() + + snapshot, err := metadata.Snapshot().FromBytes(allRoles[metadata.SNAPSHOT]) + if err != nil { + log.Error(err, "failed to create snapshot metadata from bytes") + } + fn(snapshot) + + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/snapshot_key", crypto.SHA256, cryptoutils.SkipPassword) + if err != nil { + log.Error(err, "failed to load signer from pem file") + } + snapshot.ClearSignatures() + _, err = snapshot.Sign(signer) + if err != nil { + log.Error(err, "failed to sign snapshot") + } + return snapshot.ToBytes(true) +} + +type modifyTargets func(*metadata.Metadata[metadata.TargetsType]) + +func modifyTargetsMetadata(fn modifyTargets) ([]byte, error) { + log := metadata.GetLogger() + + targets, err := metadata.Targets().FromBytes(allRoles[metadata.TARGETS]) + if err != nil { + log.Error(err, "failed to create targets metadata from bytes") + } + fn(targets) + + signer, err := signature.LoadSignerFromPEMFile(testutils.KeystoreDir+"/targets_key", crypto.SHA256, cryptoutils.SkipPassword) + if err != nil { + log.Error(err, "failed to load signer from pem file") + } + targets.ClearSignatures() + _, err = targets.Sign(signer) + if err != nil { + log.Error(err, "failed to sign targets") + } + return targets.ToBytes(true) +} + +func TestUpdate(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.NoError(t, err) + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.NoError(t, err) + _, err = trustedSet.UpdateDelegatedTargets(allRoles["role1"], "role1", metadata.TARGETS) + assert.NoError(t, err) + _, err = trustedSet.UpdateDelegatedTargets(allRoles["role2"], "role2", "role1") + assert.NoError(t, err) + + // The 4 top level metadata objects + 2 additional delegated targets + // self.assertTrue(len(self.trusted_set), 6) + assert.NotNil(t, trustedSet.Root) + assert.NotNil(t, trustedSet.Timestamp) + assert.NotNil(t, trustedSet.Snapshot) + assert.NotNil(t, trustedSet.Targets) +} + +func TestOutOfOrderOps(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + + // Update snapshot before timestamp + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot update snapshot before timestamp"}) + + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + // Update root after timestamp + _, err = trustedSet.UpdateRoot(allRoles[metadata.ROOT]) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot update root after timestamp"}) + + // Update targets before snapshot + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot load targets before snapshot"}) + + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.NoError(t, err) + + // Update timestamp after snapshot + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot update timestamp after snapshot"}) + + // Update delegated targets before targets + _, err = trustedSet.UpdateDelegatedTargets(allRoles["role1"], "role1", metadata.TARGETS) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot load targets before delegator"}) + + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.NoError(t, err) + + // Update snapshot after sucessful targets update + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrRuntime{Msg: "cannot update snapshot after targets"}) + + _, err = trustedSet.UpdateDelegatedTargets(allRoles["role1"], "role1", metadata.TARGETS) + assert.NoError(t, err) +} + +func TestRootWithInvalidJson(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + + // Test loading initial root and root update + + // root is not json + _, err = trustedSet.UpdateRoot([]byte("")) + assert.ErrorContains(t, err, "unexpected end of JSON input") + + // root is not valid + root, err := metadata.Root().FromBytes(allRoles[metadata.ROOT]) + assert.NoError(t, err) + root.Signed.Version += 1 + rootBytes, err := root.ToBytes(true) + assert.NoError(t, err) + _, err = trustedSet.UpdateRoot(rootBytes) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying root failed, not enough signatures, got 0, want 1"}) + + // metadata is of wrong type + _, err = trustedSet.UpdateRoot(allRoles[metadata.SNAPSHOT]) + assert.ErrorIs(t, err, metadata.ErrValue{Msg: "expected metadata type root, got - snapshot"}) +} + +func TestTopLevelMetadataWithInvalidJSON(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + + //TIMESTAMP + // timestamp is not json + _, err = trustedSet.UpdateTimestamp([]byte("")) + assert.ErrorContains(t, err, "unexpected end of JSON input") + + // timestamp is not valid + timestamp, err := metadata.Timestamp().FromBytes(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + properTimestampBytes, err := timestamp.ToBytes(true) + assert.NoError(t, err) + timestamp.Signed.Version += 1 + timestampBytes, err := timestamp.ToBytes(true) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestampBytes) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying timestamp failed, not enough signatures, got 0, want 1"}) + + // timestamp is of wrong type + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.ROOT]) + assert.ErrorIs(t, err, metadata.ErrValue{Msg: "expected metadata type timestamp, got - root"}) + + // SNAPSHOT + _, err = trustedSet.UpdateTimestamp(properTimestampBytes) + assert.NoError(t, err) + // snapshot is not json + _, err = trustedSet.UpdateSnapshot([]byte(""), false) + assert.ErrorContains(t, err, "unexpected end of JSON input") + + // snapshot is not valid + snapshot, err := metadata.Snapshot().FromBytes(allRoles[metadata.SNAPSHOT]) + assert.NoError(t, err) + properSnapshotBytes, err := snapshot.ToBytes(true) + assert.NoError(t, err) + snapshot.Signed.Version += 1 + snapshotBytes, err := snapshot.ToBytes(true) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(snapshotBytes, false) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying snapshot failed, not enough signatures, got 0, want 1"}) + + // snapshot is of wrong type + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.ROOT], false) + assert.ErrorIs(t, err, metadata.ErrValue{Msg: "expected metadata type snapshot, got - root"}) + + // TARGETS + _, err = trustedSet.UpdateSnapshot(properSnapshotBytes, false) + assert.NoError(t, err) + // targets is not json + _, err = trustedSet.UpdateTargets([]byte("")) + assert.ErrorContains(t, err, "unexpected end of JSON input") + + // targets is not valid + targets, err := metadata.Targets().FromBytes(allRoles[metadata.TARGETS]) + assert.NoError(t, err) + targets.Signed.Version += 1 + targetsBytes, err := targets.ToBytes(true) + assert.NoError(t, err) + _, err = trustedSet.UpdateTargets(targetsBytes) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying targets failed, not enough signatures, got 0, want 1"}) + + // targets is of wrong type + _, err = trustedSet.UpdateTargets(allRoles[metadata.ROOT]) + assert.ErrorIs(t, err, metadata.ErrValue{Msg: "expected metadata type targets, got - root"}) +} + +func TestUpdateRootNewRoot(t *testing.T) { + // Test that root can be updated with a new valid version + modifyRootVersion := func(root *metadata.Metadata[metadata.RootType]) { + root.Signed.Version += 1 + } + + root, err := modifyRootMetadata(modifyRootVersion) + assert.NoError(t, err) + + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateRoot(root) + assert.NoError(t, err) +} + +func TestUpdateRootNewRootFailTreshholdVerification(t *testing.T) { + // Increase threshold in new root, do not add enough keys + bumpRootThreshold := func(root *metadata.Metadata[metadata.RootType]) { + root.Signed.Version += 1 + root.Signed.Roles[metadata.ROOT].Threshold += 1 + } + root, err := modifyRootMetadata(bumpRootThreshold) + assert.NoError(t, err) + + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateRoot(root) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying root failed, not enough signatures, got 1, want 2"}) +} + +func TestUpdateRootNewRootVerSameAsTrustedRootVer(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + + _, err = trustedSet.UpdateRoot(allRoles[metadata.ROOT]) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "bad version number, expected 2, got 1"}) +} + +func TestRootExpiredFinalRoot(t *testing.T) { + // test that root can be updated with a new valid version + modifyRootExpiry := func(root *metadata.Metadata[metadata.RootType]) { + root.Signed.Expires = time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) + } + + // Intermediate root can be expired + root, err := modifyRootMetadata(modifyRootExpiry) + assert.NoError(t, err) + trustedSet, err := New(root) + assert.NoError(t, err) + + // Update timestamp to trigger final root expiry check + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "final root.json is expired"}) +} + +func TestUpdateTimestampNewTimestampVerBelowTrustedVer(t *testing.T) { + // newTimestamp.Version < trustedTimestamp.Version + modifyTimestampVersion := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Version = 3 + } + timestamp, err := modifyTimestamptMetadata(modifyTimestampVersion) + assert.NoError(t, err) + + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestamp) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new timestamp version 1 must be >= 3"}) +} + +func TestUpdateTimestampWithSameTimestamp(t *testing.T) { + // Test that timestamp is NOT updated if: + // newTimestamp.Version = trustedTimestamp.Version + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + initialTimestamp := trustedSet.Timestamp + // Update timestamp with the same version. + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + // EqualVersionNumberError + assert.ErrorIs(t, err, metadata.ErrEqualVersionNumber{Msg: "new timestamp version 1 equals the old one 1"}) + + // Verify that the timestamp object was not updated. + assert.Equal(t, initialTimestamp, trustedSet.Timestamp) +} + +func TestUpdateTimestampSnapshotCerBellowCurrent(t *testing.T) { + bumpSnapshotVersion := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Meta["snapshot.json"].Version = 2 + // The timestamp version must be increased to initiate a update. + timestamp.Signed.Version += 1 + } + // Set current known snapshot.json version to 2 + timestamp, err := modifyTimestamptMetadata(bumpSnapshotVersion) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestamp) + assert.NoError(t, err) + + // new timestamp meta version < trusted timestamp meta version + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new timestamp version 1 must be >= 2"}) +} + +func TestUpdateTimestampExpired(t *testing.T) { + // New timestamp has expired + modifyTimestampExpiry := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Expires = time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) + } + // Expired intermediate timestamp is loaded but raises ExpiredMetadataError + timestamp, err := modifyTimestamptMetadata(modifyTimestampExpiry) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestamp) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "timestamp.json is expired"}) + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "timestamp.json is expired"}) +} + +func TestUpdateSnapshotLengthOrHashMismatch(t *testing.T) { + modifySnapshotLength := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Meta["snapshot.json"].Length = 1 + } + // Set known snapshot.json length to 1 + timestamp, err := modifyTimestamptMetadata(modifySnapshotLength) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestamp) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrLengthOrHashMismatch{Msg: "length verification failed - expected 1, got 652"}) +} + +func TestUpdateSnapshotFailThreshholdVerification(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + snapshot, err := metadata.Snapshot().FromBytes(allRoles[metadata.SNAPSHOT]) + assert.NoError(t, err) + snapshot.ClearSignatures() + snapshotBytes, err := snapshot.ToBytes(true) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(snapshotBytes, false) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying snapshot failed, not enough signatures, got 0, want 1"}) +} + +func TestUpdateSnapshotVersionDivergeTimestampSnapshotVersion(t *testing.T) { + modifyTimestampVersion := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Meta["snapshot.json"].Version = 2 + } + timestamp, err := modifyTimestamptMetadata(modifyTimestampVersion) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(timestamp) + assert.NoError(t, err) + + // If intermediate snapshot version is incorrect, load it but also raise + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected 2, got 1"}) + + // Targets update starts but fails if snapshot version does not match + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected 2, got 1"}) +} + +// Update all metadata roles besides targets. +func updateAllBesidesTargets(trustedSet *TrustedMetadata, timestampBytes []byte, snapshotBytes []byte) error { + if len(timestampBytes) <= 0 { + timestampBytes = allRoles[metadata.TIMESTAMP] + } + _, err := trustedSet.UpdateTimestamp(timestampBytes) + if err != nil { + return err + } + if len(snapshotBytes) <= 0 { + snapshotBytes = allRoles[metadata.SNAPSHOT] + } + _, err = trustedSet.UpdateSnapshot(snapshotBytes, false) + if err != nil { + return err + } + return nil +} + +func TestUpdateSnapshotFileRemovedFromMeta(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + err = updateAllBesidesTargets(trustedSet, allRoles[metadata.TIMESTAMP], []byte{}) + assert.NoError(t, err) + removeFileFromMeta := func(snaphot *metadata.Metadata[metadata.SnapshotType]) { + delete(snaphot.Signed.Meta, "targets.json") + } + // Test removing a meta_file in new_snapshot compared to the old snapshot + snapshot, err := modifySnapshotMetadata(removeFileFromMeta) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(snapshot, false) + assert.ErrorIs(t, err, metadata.ErrRepository{Msg: "new snapshot is missing info for targets.json"}) +} + +func TestUpdateSnapshotMetaVersionDecreases(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + modifyMetaVersion := func(snaphot *metadata.Metadata[metadata.SnapshotType]) { + snaphot.Signed.Meta["targets.json"].Version += 1 + } + snapshot, err := modifySnapshotMetadata(modifyMetaVersion) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(snapshot, false) + assert.NoError(t, err) + + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected targets.json version 1, got 2"}) +} + +func TestUpdateSnapshotExpiredNewSnapshot(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + modifySnapshotExpired := func(snaphot *metadata.Metadata[metadata.SnapshotType]) { + snaphot.Signed.Expires = time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) + } + // Expired intermediate snapshot is loaded but will raise + snapshot, err := modifySnapshotMetadata(modifySnapshotExpired) + assert.NoError(t, err) + + _, err = trustedSet.UpdateSnapshot(snapshot, false) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "snapshot.json is expired"}) + + // Targets update does start but fails because snapshot is expired + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "snapshot.json is expired"}) + +} + +func TestUpdateSnapshotSuccessfulRollbackChecks(t *testing.T) { + // Load a "local" timestamp, then update to newer one: + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(allRoles[metadata.TIMESTAMP]) + assert.NoError(t, err) + + bumpMetaVersion := func(timestamp *metadata.Metadata[metadata.TimestampType]) { + timestamp.Signed.Meta["snapshot.json"].Version += 1 + // The timestamp version must be increased to initiate a update. + timestamp.Signed.Version += 1 + } + newTimestamp, err := modifyTimestamptMetadata(bumpMetaVersion) + assert.NoError(t, err) + _, err = trustedSet.UpdateTimestamp(newTimestamp) + assert.NoError(t, err) + + // Load a "local" snapshot with mismatching version (loading happens but + // ErrBadVersionNumber is raised), then update to newer one: + _, err = trustedSet.UpdateSnapshot(allRoles[metadata.SNAPSHOT], false) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected 2, got 1"}) + + bumpVersion := func(snapahot *metadata.Metadata[metadata.SnapshotType]) { + snapahot.Signed.Version += 1 + } + newSnapshot, err := modifySnapshotMetadata(bumpVersion) + assert.NoError(t, err) + _, err = trustedSet.UpdateSnapshot(newSnapshot, false) + assert.NoError(t, err) + + // Update targets to trigger final snapshot meta version check + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.NoError(t, err) +} + +func TestUpdateTargetsMoMetaInSnapshot(t *testing.T) { + + clearMeta := func(snapahot *metadata.Metadata[metadata.SnapshotType]) { + maps.Clear(snapahot.Signed.Meta) + } + snapshot, err := modifySnapshotMetadata(clearMeta) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + err = updateAllBesidesTargets(trustedSet, allRoles[metadata.TIMESTAMP], snapshot) + assert.NoError(t, err) + + // Remove meta information with information about targets from snapshot + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrRepository{Msg: "snapshot does not contain information for targets"}) + +} + +func TestUpdateTargetsHashDiverfeFromSnapshotMetaHash(t *testing.T) { + modifyMetaLength := func(snapshot *metadata.Metadata[metadata.SnapshotType]) { + for metafilePath := range snapshot.Signed.Meta { + snapshot.Signed.Meta[metafilePath] = &metadata.MetaFiles{ + Version: 1, + Length: 1, + } + } + } + snapshot, err := modifySnapshotMetadata(modifyMetaLength) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + err = updateAllBesidesTargets(trustedSet, allRoles[metadata.TIMESTAMP], snapshot) + assert.NoError(t, err) + + // Observed hash != stored hash in snapshot meta for targets + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrLengthOrHashMismatch{Msg: "length verification failed - expected 1, got 1266"}) +} + +func TestUpdateTargetsVersionDivergeSnapshotMetaVersion(t *testing.T) { + modifyMeta := func(snapshot *metadata.Metadata[metadata.SnapshotType]) { + for metafilePath := range snapshot.Signed.Meta { + snapshot.Signed.Meta[metafilePath] = &metadata.MetaFiles{Version: 2} + } + } + snapshot, err := modifySnapshotMetadata(modifyMeta) + assert.NoError(t, err) + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + err = updateAllBesidesTargets(trustedSet, allRoles[metadata.TIMESTAMP], snapshot) + assert.NoError(t, err) + + // New delegate sigfned version != meta version stored in snapshot + _, err = trustedSet.UpdateTargets(allRoles[metadata.TARGETS]) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected targets version 2, got 1"}) +} + +func TestUpdateTargetsExpiredMewTarget(t *testing.T) { + trustedSet, err := New(allRoles[metadata.ROOT]) + assert.NoError(t, err) + err = updateAllBesidesTargets(trustedSet, allRoles[metadata.TIMESTAMP], allRoles[metadata.SNAPSHOT]) + assert.NoError(t, err) + + // New delegated target has expired + modifyTargetExpiry := func(targets *metadata.Metadata[metadata.TargetsType]) { + targets.Signed.Expires = time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC) + } + targets, err := modifyTargetsMetadata(modifyTargetExpiry) + assert.NoError(t, err) + _, err = trustedSet.UpdateTargets(targets) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "new targets is expired"}) +} diff --git a/metadata/types.go b/metadata/types.go new file mode 100644 index 00000000..81f8cbc9 --- /dev/null +++ b/metadata/types.go @@ -0,0 +1,167 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package metadata + +import ( + "encoding/json" + "time" +) + +// Generic type constraint +type Roles interface { + RootType | SnapshotType | TimestampType | TargetsType +} + +// Define version of the TUF specification +const ( + SPECIFICATION_VERSION = "1.0.31" +) + +// Define top level role names +const ( + ROOT = "root" + SNAPSHOT = "snapshot" + TARGETS = "targets" + TIMESTAMP = "timestamp" +) + +var TOP_LEVEL_ROLE_NAMES = [...]string{ROOT, TIMESTAMP, SNAPSHOT, TARGETS} + +// Metadata[T Roles] represents a TUF metadata. +// Provides methods to read and write to and +// from file and bytes, also to create, verify and clear metadata signatures. +type Metadata[T Roles] struct { + Signed T `json:"signed"` + Signatures []Signature `json:"signatures"` + UnrecognizedFields map[string]any `json:"-"` +} + +// Signature represents the Signature part of a TUF metadata +type Signature struct { + KeyID string `json:"keyid"` + Signature HexBytes `json:"sig"` + UnrecognizedFields map[string]any `json:"-"` +} + +// RootType represents the Signed portion of a root metadata +type RootType struct { + Type string `json:"_type"` + SpecVersion string `json:"spec_version"` + ConsistentSnapshot bool `json:"consistent_snapshot"` + Version int64 `json:"version"` + Expires time.Time `json:"expires"` + Keys map[string]*Key `json:"keys"` + Roles map[string]*Role `json:"roles"` + UnrecognizedFields map[string]any `json:"-"` +} + +// SnapshotType represents the Signed portion of a snapshot metadata +type SnapshotType struct { + Type string `json:"_type"` + SpecVersion string `json:"spec_version"` + Version int64 `json:"version"` + Expires time.Time `json:"expires"` + Meta map[string]*MetaFiles `json:"meta"` + UnrecognizedFields map[string]any `json:"-"` +} + +// TargetsType represents the Signed portion of a targets metadata +type TargetsType struct { + Type string `json:"_type"` + SpecVersion string `json:"spec_version"` + Version int64 `json:"version"` + Expires time.Time `json:"expires"` + Targets map[string]*TargetFiles `json:"targets"` + Delegations *Delegations `json:"delegations,omitempty"` + UnrecognizedFields map[string]any `json:"-"` +} + +// TimestampType represents the Signed portion of a timestamp metadata +type TimestampType struct { + Type string `json:"_type"` + SpecVersion string `json:"spec_version"` + Version int64 `json:"version"` + Expires time.Time `json:"expires"` + Meta map[string]*MetaFiles `json:"meta"` + UnrecognizedFields map[string]any `json:"-"` +} + +// Key represents a key in TUF +type Key struct { + Type string `json:"keytype"` + Scheme string `json:"scheme"` + Value KeyVal `json:"keyval"` + id string `json:"-"` + UnrecognizedFields map[string]any `json:"-"` +} + +type KeyVal struct { + PublicKey string `json:"public"` + UnrecognizedFields map[string]any `json:"-"` +} + +// Role represents one of the top-level roles in TUF +type Role struct { + KeyIDs []string `json:"keyids"` + Threshold int `json:"threshold"` + UnrecognizedFields map[string]any `json:"-"` +} + +type HexBytes []byte + +type Hashes map[string]HexBytes + +// MetaFiles represents the value portion of METAFILES in TUF (used in Snapshot and Timestamp metadata). Used to store information about a particular meta file. +type MetaFiles struct { + Length int64 `json:"length,omitempty"` + Hashes Hashes `json:"hashes,omitempty"` + Version int64 `json:"version"` + UnrecognizedFields map[string]any `json:"-"` +} + +// TargetFiles represents the value portion of TARGETS in TUF (used Targets metadata). Used to store information about a particular target file. +type TargetFiles struct { + Length int64 `json:"length"` + Hashes Hashes `json:"hashes"` + Custom *json.RawMessage `json:"custom,omitempty"` + Path string `json:"-"` + UnrecognizedFields map[string]any `json:"-"` +} + +// Delegations is an optional object which represents delegation roles and their corresponding keys +type Delegations struct { + Keys map[string]*Key `json:"keys"` + Roles []DelegatedRole `json:"roles,omitempty"` + SuccinctRoles *SuccinctRoles `json:"succinct_roles,omitempty"` + UnrecognizedFields map[string]any `json:"-"` +} + +// DelegatedRole represents a delegated role in TUF +type DelegatedRole struct { + Name string `json:"name"` + KeyIDs []string `json:"keyids"` + Threshold int `json:"threshold"` + Terminating bool `json:"terminating"` + PathHashPrefixes []string `json:"path_hash_prefixes,omitempty"` + Paths []string `json:"paths,omitempty"` + UnrecognizedFields map[string]any `json:"-"` +} + +// SuccinctRoles represents a delegation graph that covers all targets, +// distributing them uniformly over the delegated roles (i.e. bins) in the graph. +type SuccinctRoles struct { + KeyIDs []string `json:"keyids"` + Threshold int `json:"threshold"` + BitLength int `json:"bit_length"` + NamePrefix string `json:"name_prefix"` + UnrecognizedFields map[string]any `json:"-"` +} diff --git a/metadata/updater/updater.go b/metadata/updater/updater.go new file mode 100644 index 00000000..4eda9a30 --- /dev/null +++ b/metadata/updater/updater.go @@ -0,0 +1,672 @@ +// Copyright 2022-2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package updater + +import ( + "encoding/hex" + "errors" + "fmt" + "io" + "net/http" + "net/url" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/metadata/trustedmetadata" +) + +// Client update workflow implementation +// +// The "Updater" provides an implementation of the TUF client workflow (ref. https://theupdateframework.github.io/specification/latest/#detailed-client-workflow). +// "Updater" provides an API to query available targets and to download them in a +// secure manner: All downloaded files are verified by signed metadata. +// High-level description of "Updater" functionality: +// - Initializing an "Updater" loads and validates the trusted local root +// metadata: This root metadata is used as the source of trust for all other +// metadata. +// - Refresh() can optionally be called to update and load all top-level +// metadata as described in the specification, using both locally cached +// metadata and metadata downloaded from the remote repository. If refresh is +// not done explicitly, it will happen automatically during the first target +// info lookup. +// - Updater can be used to download targets. For each target: +// - GetTargetInfo() is first used to find information about a +// specific target. This will load new targets metadata as needed (from +// local cache or remote repository). +// - FindCachedTarget() can optionally be used to check if a +// target file is already locally cached. +// - DownloadTarget() downloads a target file and ensures it is +// verified correct by the metadata. +type Updater struct { + trusted *trustedmetadata.TrustedMetadata + cfg *config.UpdaterConfig +} + +type roleParentTuple struct { + Role string + Parent string +} + +// New creates a new Updater instance and loads trusted root metadata +func New(config *config.UpdaterConfig) (*Updater, error) { + // make sure the trusted root metadata and remote URL were provided + if len(config.LocalTrustedRoot) == 0 || len(config.RemoteMetadataURL) == 0 { + return nil, fmt.Errorf("no initial trusted root metadata or remote URL provided") + } + // create a new trusted metadata instance using the trusted root.json + trustedMetadataSet, err := trustedmetadata.New(config.LocalTrustedRoot) + if err != nil { + return nil, err + } + // create an updater instance + updater := &Updater{ + cfg: config, + trusted: trustedMetadataSet, // save trusted metadata set + } + // ensure paths exist, doesn't do anything if caching is disabled + err = updater.cfg.EnsurePathsExist() + if err != nil { + return nil, err + } + // persist the initial root metadata to the local metadata folder + err = updater.persistMetadata(metadata.ROOT, updater.cfg.LocalTrustedRoot) + if err != nil { + return nil, err + } + // all okay, return the updater instance + return updater, nil +} + +// Refresh loads and possibly refreshes top-level metadata. +// Downloads, verifies, and loads metadata for the top-level roles in the +// specified order (root -> timestamp -> snapshot -> targets) implementing +// all the checks required in the TUF client workflow. +// A Refresh() can be done only once during the lifetime of an Updater. +// If Refresh() has not been explicitly called before the first +// GetTargetInfo() call, it will be done implicitly at that time. +// The metadata for delegated roles is not updated by Refresh(): +// that happens on demand during GetTargetInfo(). However, if the +// repository uses consistent snapshots (ref. https://theupdateframework.github.io/specification/latest/#consistent-snapshots), +// then all metadata downloaded by the Updater will use the same consistent repository state. +// +// If UnsafeLocalMode is set, no network interaction is performed, only +// the cached files on disk are used. If the cached data is not complete, +// this call will fail. +func (update *Updater) Refresh() error { + if update.cfg.UnsafeLocalMode { + return update.unsafeLocalRefresh() + } + return update.onlineRefresh() +} + +// onlineRefresh implements the TUF client workflow as described for +// the Refresh function. +func (update *Updater) onlineRefresh() error { + err := update.loadRoot() + if err != nil { + return err + } + err = update.loadTimestamp() + if err != nil { + return err + } + err = update.loadSnapshot() + if err != nil { + return err + } + _, err = update.loadTargets(metadata.TARGETS, metadata.ROOT) + if err != nil { + return err + } + return nil +} + +// unsafeLoadRefresh tries to load the persisted metadata already cached +// on disk. Note that this is an usafe function, and does deviate from the +// TUF specification section 5.3 to 5.7 (update phases). +// The metadata on disk are verified against the provided root though, +// and expiration dates are verified. +func (update *Updater) unsafeLocalRefresh() error { + // Root is already loaded + // load timestamp + var p = filepath.Join(update.cfg.LocalMetadataDir, metadata.TIMESTAMP) + data, err := update.loadLocalMetadata(p) + if err != nil { + return err + } + _, err = update.trusted.UpdateTimestamp(data) + if err != nil { + return err + } + + // load snapshot + p = filepath.Join(update.cfg.LocalMetadataDir, metadata.SNAPSHOT) + data, err = update.loadLocalMetadata(p) + if err != nil { + return err + } + _, err = update.trusted.UpdateSnapshot(data, false) + if err != nil { + return err + } + + // targets + p = filepath.Join(update.cfg.LocalMetadataDir, metadata.TARGETS) + data, err = update.loadLocalMetadata(p) + if err != nil { + return err + } + // verify and load the new target metadata + _, err = update.trusted.UpdateDelegatedTargets(data, metadata.TARGETS, metadata.ROOT) + if err != nil { + return err + } + + return nil +} + +// GetTargetInfo returns metadata.TargetFiles instance with information +// for targetPath. The return value can be used as an argument to +// DownloadTarget() and FindCachedTarget(). +// If Refresh() has not been called before calling +// GetTargetInfo(), the refresh will be done implicitly. +// As a side-effect this method downloads all the additional (delegated +// targets) metadata it needs to return the target information. +func (update *Updater) GetTargetInfo(targetPath string) (*metadata.TargetFiles, error) { + // do a Refresh() in case there's no trusted targets.json yet + if update.trusted.Targets[metadata.TARGETS] == nil { + err := update.Refresh() + if err != nil { + return nil, err + } + } + return update.preOrderDepthFirstWalk(targetPath) +} + +// DownloadTarget downloads the target file specified by targetFile +func (update *Updater) DownloadTarget(targetFile *metadata.TargetFiles, filePath, targetBaseURL string) (string, []byte, error) { + log := metadata.GetLogger() + + var err error + if filePath == "" { + filePath, err = update.generateTargetFilePath(targetFile) + if err != nil { + return "", nil, err + } + } + if targetBaseURL == "" { + if update.cfg.RemoteTargetsURL == "" { + return "", nil, metadata.ErrValue{Msg: "targetBaseURL must be set in either DownloadTarget() or the Updater struct"} + } + targetBaseURL = ensureTrailingSlash(update.cfg.RemoteTargetsURL) + } else { + targetBaseURL = ensureTrailingSlash(targetBaseURL) + } + targetFilePath := targetFile.Path + consistentSnapshot := update.trusted.Root.Signed.ConsistentSnapshot + if consistentSnapshot && update.cfg.PrefixTargetsWithHash { + hashes := "" + // get first hex value of hashes + for _, v := range targetFile.Hashes { + hashes = hex.EncodeToString(v) + break + } + dirName, baseName, ok := strings.Cut(targetFilePath, "/") + if !ok { + // . + targetFilePath = fmt.Sprintf("%s.%s", hashes, dirName) + } else { + // /. + targetFilePath = fmt.Sprintf("%s/%s.%s", dirName, hashes, baseName) + } + } + fullURL := fmt.Sprintf("%s%s", targetBaseURL, targetFilePath) + data, err := update.cfg.Fetcher.DownloadFile(fullURL, targetFile.Length, time.Second*15) + if err != nil { + return "", nil, err + } + err = targetFile.VerifyLengthHashes(data) + if err != nil { + return "", nil, err + } + + // do not persist the target file if cache is disabled + if !update.cfg.DisableLocalCache { + err = os.WriteFile(filePath, data, 0644) + if err != nil { + return "", nil, err + } + } + log.Info("Downloaded target", "path", targetFile.Path) + return filePath, data, nil +} + +// FindCachedTarget checks whether a local file is an up to date target +func (update *Updater) FindCachedTarget(targetFile *metadata.TargetFiles, filePath string) (string, []byte, error) { + var err error + targetFilePath := "" + // do not look for cached target file if cache is disabled + if update.cfg.DisableLocalCache { + return "", nil, nil + } + // get its path if not provided + if filePath == "" { + targetFilePath, err = update.generateTargetFilePath(targetFile) + if err != nil { + return "", nil, err + } + } else { + targetFilePath = filePath + } + // get file content + data, err := readFile(targetFilePath) + if err != nil { + // do not want to return err, instead we say that there's no cached target available + return "", nil, nil + } + // verify if the length and hashes of this target file match the expected values + err = targetFile.VerifyLengthHashes(data) + if err != nil { + // do not want to return err, instead we say that there's no cached target available + return "", nil, nil + } + // if all okay, return its path + return targetFilePath, data, nil +} + +// loadTimestamp load local and remote timestamp metadata +func (update *Updater) loadTimestamp() error { + log := metadata.GetLogger() + // try to read local timestamp + data, err := update.loadLocalMetadata(filepath.Join(update.cfg.LocalMetadataDir, metadata.TIMESTAMP)) + if err != nil { + // this means there's no existing local timestamp so we should proceed downloading it without the need to UpdateTimestamp + log.Info("Local timestamp does not exist") + } else { + // local timestamp exists, let's try to verify it and load it to the trusted metadata set + _, err := update.trusted.UpdateTimestamp(data) + if err != nil { + if errors.Is(err, metadata.ErrRepository{}) { + // local timestamp is not valid, proceed downloading from remote; note that this error type includes several other subset errors + log.Info("Local timestamp is not valid") + } else { + // another error + return err + } + } + log.Info("Local timestamp is valid") + // all okay, local timestamp exists and it is valid, nevertheless proceed with downloading from remote + } + // load from remote (whether local load succeeded or not) + data, err = update.downloadMetadata(metadata.TIMESTAMP, update.cfg.TimestampMaxLength, "") + if err != nil { + return err + } + // try to verify and load the newly downloaded timestamp + _, err = update.trusted.UpdateTimestamp(data) + if err != nil { + if errors.Is(err, metadata.ErrEqualVersionNumber{}) { + // if the new timestamp version is the same as current, discard the + // new timestamp; this is normal and it shouldn't raise any error + return nil + } else { + // another error + return err + } + } + // proceed with persisting the new timestamp + err = update.persistMetadata(metadata.TIMESTAMP, data) + if err != nil { + return err + } + return nil +} + +// loadSnapshot load local (and if needed remote) snapshot metadata +func (update *Updater) loadSnapshot() error { + log := metadata.GetLogger() + // try to read local snapshot + data, err := update.loadLocalMetadata(filepath.Join(update.cfg.LocalMetadataDir, metadata.SNAPSHOT)) + if err != nil { + // this means there's no existing local snapshot so we should proceed downloading it without the need to UpdateSnapshot + log.Info("Local snapshot does not exist") + } else { + // successfully read a local snapshot metadata, so let's try to verify and load it to the trusted metadata set + _, err = update.trusted.UpdateSnapshot(data, true) + if err != nil { + // this means snapshot verification/loading failed + if errors.Is(err, metadata.ErrRepository{}) { + // local snapshot is not valid, proceed downloading from remote; note that this error type includes several other subset errors + log.Info("Local snapshot is not valid") + } else { + // another error + return err + } + } else { + // this means snapshot verification/loading succeeded + log.Info("Local snapshot is valid: not downloading new one") + return nil + } + } + // local snapshot does not exist or is invalid, update from remote + log.Info("Failed to load local snapshot") + if update.trusted.Timestamp == nil { + return fmt.Errorf("trusted timestamp not set") + } + // extract the snapshot meta from the trusted timestamp metadata + snapshotMeta := update.trusted.Timestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] + // extract the length of the snapshot metadata to be downloaded + length := snapshotMeta.Length + if length == 0 { + length = update.cfg.SnapshotMaxLength + } + // extract which snapshot version should be downloaded in case of consistent snapshots + version := "" + if update.trusted.Root.Signed.ConsistentSnapshot { + version = strconv.FormatInt(snapshotMeta.Version, 10) + } + // download snapshot metadata + data, err = update.downloadMetadata(metadata.SNAPSHOT, length, version) + if err != nil { + return err + } + // verify and load the new snapshot + _, err = update.trusted.UpdateSnapshot(data, false) + if err != nil { + return err + } + // persist the new snapshot + err = update.persistMetadata(metadata.SNAPSHOT, data) + if err != nil { + return err + } + return nil +} + +// loadTargets load local (and if needed remote) metadata for roleName +func (update *Updater) loadTargets(roleName, parentName string) (*metadata.Metadata[metadata.TargetsType], error) { + log := metadata.GetLogger() + // avoid loading "roleName" more than once during "GetTargetInfo" + role, ok := update.trusted.Targets[roleName] + if ok { + return role, nil + } + // try to read local targets + data, err := update.loadLocalMetadata(filepath.Join(update.cfg.LocalMetadataDir, roleName)) + if err != nil { + // this means there's no existing local target file so we should proceed downloading it without the need to UpdateDelegatedTargets + log.Info("Local role does not exist", "role", roleName) + } else { + // successfully read a local targets metadata, so let's try to verify and load it to the trusted metadata set + delegatedTargets, err := update.trusted.UpdateDelegatedTargets(data, roleName, parentName) + if err != nil { + // this means targets verification/loading failed + if errors.Is(err, metadata.ErrRepository{}) { + // local target file is not valid, proceed downloading from remote; note that this error type includes several other subset errors + log.Info("Local role is not valid", "role", roleName) + } else { + // another error + return nil, err + } + } else { + // this means targets verification/loading succeeded + log.Info("Local role is valid: not downloading new one", "role", roleName) + return delegatedTargets, nil + } + } + // local "roleName" does not exist or is invalid, update from remote + log.Info("Failed to load local role", "role", roleName) + if update.trusted.Snapshot == nil { + return nil, fmt.Errorf("trusted snapshot not set") + } + // extract the targets meta from the trusted snapshot metadata + metaInfo := update.trusted.Snapshot.Signed.Meta[fmt.Sprintf("%s.json", roleName)] + // extract the length of the target metadata to be downloaded + length := metaInfo.Length + if length == 0 { + length = update.cfg.TargetsMaxLength + } + // extract which target metadata version should be downloaded in case of consistent snapshots + version := "" + if update.trusted.Root.Signed.ConsistentSnapshot { + version = strconv.FormatInt(metaInfo.Version, 10) + } + // download targets metadata + data, err = update.downloadMetadata(roleName, length, version) + if err != nil { + return nil, err + } + // verify and load the new target metadata + delegatedTargets, err := update.trusted.UpdateDelegatedTargets(data, roleName, parentName) + if err != nil { + return nil, err + } + // persist the new target metadata + err = update.persistMetadata(roleName, data) + if err != nil { + return nil, err + } + return delegatedTargets, nil +} + +// loadRoot load remote root metadata. Sequentially load and +// persist on local disk every newer root metadata version +// available on the remote +func (update *Updater) loadRoot() error { + // calculate boundaries + lowerBound := update.trusted.Root.Signed.Version + 1 + upperBound := lowerBound + update.cfg.MaxRootRotations + + // loop until we find the latest available version of root (download -> verify -> load -> persist) + for nextVersion := lowerBound; nextVersion < upperBound; nextVersion++ { + data, err := update.downloadMetadata(metadata.ROOT, update.cfg.RootMaxLength, strconv.FormatInt(nextVersion, 10)) + if err != nil { + // downloading the root metadata failed for some reason + var tmpErr metadata.ErrDownloadHTTP + if errors.As(err, &tmpErr) { + if tmpErr.StatusCode != http.StatusNotFound && tmpErr.StatusCode != http.StatusForbidden { + // unexpected HTTP status code + return err + } + // 404/403 means current root is newest available, so we can stop the loop and move forward + break + } + // some other error ocurred + return err + } else { + // downloading root metadata succeeded, so let's try to verify and load it + _, err = update.trusted.UpdateRoot(data) + if err != nil { + return err + } + // persist root metadata to disk + err = update.persistMetadata(metadata.ROOT, data) + if err != nil { + return err + } + } + } + return nil +} + +// preOrderDepthFirstWalk interrogates the tree of target delegations +// in order of appearance (which implicitly order trustworthiness), +// and returns the matching target found in the most trusted role. +func (update *Updater) preOrderDepthFirstWalk(targetFilePath string) (*metadata.TargetFiles, error) { + log := metadata.GetLogger() + // list of delegations to be interrogated. A (role, parent role) pair + // is needed to load and verify the delegated targets metadata + delegationsToVisit := []roleParentTuple{{ + Role: metadata.TARGETS, + Parent: metadata.ROOT, + }} + visitedRoleNames := map[string]bool{} + // pre-order depth-first traversal of the graph of target delegations + for len(visitedRoleNames) <= update.cfg.MaxDelegations && len(delegationsToVisit) > 0 { + // pop the role name from the top of the stack + delegation := delegationsToVisit[len(delegationsToVisit)-1] + delegationsToVisit = delegationsToVisit[:len(delegationsToVisit)-1] + // skip any visited current role to prevent cycles + _, ok := visitedRoleNames[delegation.Role] + if ok { + log.Info("Skipping visited current role", "role", delegation.Role) + continue + } + // the metadata for delegation.Role must be downloaded/updated before + // its targets, delegations, and child roles can be inspected + targets, err := update.loadTargets(delegation.Role, delegation.Parent) + if err != nil { + return nil, err + } + target, ok := targets.Signed.Targets[targetFilePath] + if ok { + log.Info("Found target in current role", "role", delegation.Role) + return target, nil + } + // after pre-order check, add current role to set of visited roles + visitedRoleNames[delegation.Role] = true + if targets.Signed.Delegations != nil { + childRolesToVisit := []roleParentTuple{} + // note that this may be a slow operation if there are many + // delegated roles + roles := targets.Signed.Delegations.GetRolesForTarget(targetFilePath) + for child, terminating := range roles { + log.Info("Adding child role", "role", child) + childRolesToVisit = append(childRolesToVisit, roleParentTuple{Role: child, Parent: delegation.Role}) + if terminating { + log.Info("Not backtracking to other roles") + delegationsToVisit = []roleParentTuple{} + break + } + } + // push childRolesToVisit in reverse order of appearance + // onto delegationsToVisit. Roles are popped from the end of + // the list + reverseSlice(childRolesToVisit) + delegationsToVisit = append(delegationsToVisit, childRolesToVisit...) + } + } + if len(delegationsToVisit) > 0 { + log.Info("Too many roles left to visit for max allowed delegations", + "roles-left", len(delegationsToVisit), + "allowed-delegations", update.cfg.MaxDelegations) + } + // if this point is reached then target is not found, return nil + return nil, fmt.Errorf("target %s not found", targetFilePath) +} + +// persistMetadata writes metadata to disk atomically to avoid data loss +func (update *Updater) persistMetadata(roleName string, data []byte) error { + log := metadata.GetLogger() + // do not persist the metadata if we have disabled local caching + if update.cfg.DisableLocalCache { + return nil + } + // caching enabled, proceed with persisting the metadata locally + fileName := filepath.Join(update.cfg.LocalMetadataDir, fmt.Sprintf("%s.json", url.QueryEscape(roleName))) + cwd, err := os.Getwd() + if err != nil { + return err + } + // create a temporary file + file, err := os.CreateTemp(cwd, "tuf_tmp") + if err != nil { + return err + } + // write the data content to the temporary file + err = os.WriteFile(file.Name(), data, 0644) + if err != nil { + // delete the temporary file if there was an error while writing + errRemove := os.Remove(file.Name()) + if errRemove != nil { + log.Info("Failed to delete temporary file", "name", file.Name()) + } + return err + } + // if all okay, rename the temporary file to the desired one + err = os.Rename(file.Name(), fileName) + if err != nil { + return err + } + return nil +} + +// downloadMetadata download a metadata file and return it as bytes +func (update *Updater) downloadMetadata(roleName string, length int64, version string) ([]byte, error) { + urlPath := ensureTrailingSlash(update.cfg.RemoteMetadataURL) + // build urlPath + if version == "" { + urlPath = fmt.Sprintf("%s%s.json", urlPath, url.QueryEscape(roleName)) + } else { + urlPath = fmt.Sprintf("%s%s.%s.json", urlPath, version, url.QueryEscape(roleName)) + } + return update.cfg.Fetcher.DownloadFile(urlPath, length, time.Second*15) +} + +// generateTargetFilePath generates path from TargetFiles +func (update *Updater) generateTargetFilePath(tf *metadata.TargetFiles) (string, error) { + // LocalTargetsDir can be omitted if caching is disabled + if update.cfg.LocalTargetsDir == "" && !update.cfg.DisableLocalCache { + return "", metadata.ErrValue{Msg: "LocalTargetsDir must be set if filepath is not given"} + } + // Use URL encoded target path as filename + return url.JoinPath(update.cfg.LocalTargetsDir, url.QueryEscape(tf.Path)) +} + +// loadLocalMetadata reads a local .json file and returns its bytes +func (update *Updater) loadLocalMetadata(roleName string) ([]byte, error) { + return readFile(fmt.Sprintf("%s.json", roleName)) +} + +// GetTopLevelTargets returns the top-level target files +func (update *Updater) GetTopLevelTargets() map[string]*metadata.TargetFiles { + return update.trusted.Targets[metadata.TARGETS].Signed.Targets +} + +// GetTrustedMetadataSet returns the trusted metadata set +func (update *Updater) GetTrustedMetadataSet() trustedmetadata.TrustedMetadata { + return *update.trusted +} + +// ensureTrailingSlash ensures url ends with a slash +func ensureTrailingSlash(url string) string { + if strings.HasSuffix(url, "/") { + return url + } + return url + "/" +} + +// reverseSlice reverses the elements in a generic type of slice +func reverseSlice[S ~[]E, E any](s S) { + for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { + s[i], s[j] = s[j], s[i] + } +} + +// readFile reads the content of a file and return its bytes +func readFile(name string) ([]byte, error) { + in, err := os.Open(name) + if err != nil { + return nil, err + } + defer in.Close() + data, err := io.ReadAll(in) + if err != nil { + return nil, err + } + return data, nil +} diff --git a/metadata/updater/updater_consistent_snapshot_test.go b/metadata/updater/updater_consistent_snapshot_test.go new file mode 100644 index 00000000..cd742476 --- /dev/null +++ b/metadata/updater/updater_consistent_snapshot_test.go @@ -0,0 +1,213 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package updater + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/testutils/simulator" +) + +func TestTopLevelRolesUpdateWithConsistentSnapshotDisabled(t *testing.T) { + // Test if the client fetches and stores metadata files with the + // correct version prefix when ConsistentSnapshot is false + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + simulator.Sim.MDRoot.Signed.ConsistentSnapshot = false + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + + // cleanup fetch tracker metadata + simulator.Sim.FetchTracker.Metadata = []simulator.FTMetadata{} + err = updater.Refresh() + assert.NoError(t, err) + + // metadata files are fetched with the expected version (or None) + expectedsnapshotEnabled := []simulator.FTMetadata{ + {Name: "root", Value: 2}, + {Name: "root", Value: 3}, + {Name: "timestamp", Value: -1}, + {Name: "snapshot", Value: -1}, + {Name: "targets", Value: -1}, + } + assert.EqualValues(t, expectedsnapshotEnabled, simulator.Sim.FetchTracker.Metadata) + // metadata files are always persisted without a version prefix + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) +} + +func TestTopLevelRolesUpdateWithConsistentSnapshotEnabled(t *testing.T) { + // Test if the client fetches and stores metadata files with the + // correct version prefix when ConsistentSnapshot is true + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + simulator.Sim.MDRoot.Signed.ConsistentSnapshot = true + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + + // cleanup fetch tracker metadata + simulator.Sim.FetchTracker.Metadata = []simulator.FTMetadata{} + err = updater.Refresh() + assert.NoError(t, err) + + // metadata files are fetched with the expected version (or None) + expectedSnapshotDisabled := []simulator.FTMetadata{ + {Name: "root", Value: 2}, + {Name: "root", Value: 3}, + {Name: "timestamp", Value: -1}, + {Name: "snapshot", Value: 1}, + {Name: "targets", Value: 1}, + } + assert.EqualValues(t, expectedSnapshotDisabled, simulator.Sim.FetchTracker.Metadata) + // metadata files are always persisted without a version prefix + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) +} + +func TestDelegatesRolesUpdateWithConsistentSnapshotDisabled(t *testing.T) { + // Test if the client fetches and stores delegated metadata files with + // the correct version prefix when ConsistentSnapshot is false + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + simulator.Sim.MDRoot.Signed.ConsistentSnapshot = false + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + target := metadata.Targets(simulator.Sim.SafeExpiry) + + delegatedRole := metadata.DelegatedRole{ + Name: "role1", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + delegatedRole = metadata.DelegatedRole{ + Name: "..", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + delegatedRole = metadata.DelegatedRole{ + Name: ".", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + simulator.Sim.UpdateSnapshot() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + + err = updater.Refresh() + assert.NoError(t, err) + + // cleanup fetch tracker metadata + simulator.Sim.FetchTracker.Metadata = []simulator.FTMetadata{} + // trigger updater to fetch the delegated metadata + _, err = updater.GetTargetInfo("anything") + assert.ErrorContains(t, err, "target anything not found") + + // metadata files are fetched with the expected version (or None) + expectedsnapshotEnabled := []simulator.FTMetadata{ + {Name: "role1", Value: -1}, + {Name: "..", Value: -1}, + {Name: ".", Value: -1}, + } + assert.EqualValues(t, expectedsnapshotEnabled, simulator.Sim.FetchTracker.Metadata) + // metadata files are always persisted without a version prefix + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) +} + +func TestDelegatesRolesUpdateWithConsistentSnapshotEnabled(t *testing.T) { + // Test if the client fetches and stores delegated metadata files with + // the correct version prefix when ConsistentSnapshot is true + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + simulator.Sim.MDRoot.Signed.ConsistentSnapshot = true + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + target := metadata.Targets(simulator.Sim.SafeExpiry) + + delegatedRole := metadata.DelegatedRole{ + Name: "role1", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + delegatedRole = metadata.DelegatedRole{ + Name: "..", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + delegatedRole = metadata.DelegatedRole{ + Name: ".", + KeyIDs: []string{}, + Threshold: 1, + Terminating: false, + Paths: []string{"*"}, + } + simulator.Sim.AddDelegation("targets", delegatedRole, target.Signed) + + simulator.Sim.UpdateSnapshot() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + + err = updater.Refresh() + assert.NoError(t, err) + + // cleanup fetch tracker metadata + simulator.Sim.FetchTracker.Metadata = []simulator.FTMetadata{} + // trigger updater to fetch the delegated metadata + _, err = updater.GetTargetInfo("anything") + assert.ErrorContains(t, err, "target anything not found") + + // metadata files are fetched with the expected version (or None) + expectedsnapshotEnabled := []simulator.FTMetadata{ + {Name: "role1", Value: 1}, + {Name: "..", Value: 1}, + {Name: ".", Value: 1}, + } + assert.ElementsMatch(t, expectedsnapshotEnabled, simulator.Sim.FetchTracker.Metadata) + // metadata files are always persisted without a version prefix + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) +} diff --git a/metadata/updater/updater_top_level_update_test.go b/metadata/updater/updater_top_level_update_test.go new file mode 100644 index 00000000..a14013ab --- /dev/null +++ b/metadata/updater/updater_top_level_update_test.go @@ -0,0 +1,1071 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package updater + +import ( + "fmt" + "os" + "testing" + "time" + + "github.com/sigstore/sigstore/pkg/signature" + log "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" + + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/config" + "github.com/theupdateframework/go-tuf/v2/testutils/simulator" + "github.com/theupdateframework/go-tuf/v2/testutils/testutils" +) + +func TestMain(m *testing.M) { + err := loadOrResetTrustedRootMetadata() + simulator.PastDateTime = time.Now().UTC().Truncate(24 * time.Hour).Add(-5 * 24 * time.Hour) + + if err != nil { + simulator.RepositoryCleanup(simulator.MetadataDir) + log.Fatalf("failed to load TrustedRootMetadata: %v\n", err) + } + + defer simulator.RepositoryCleanup(simulator.MetadataDir) + m.Run() +} + +func loadOrResetTrustedRootMetadata() error { + var err error + + simulator.Sim, simulator.MetadataDir, testutils.TargetsDir, err = simulator.InitMetadataDir() + if err != nil { + log.Printf("failed to initialize metadata dir: %v", err) + return err + } + + simulator.RootBytes, err = simulator.GetRootBytes(simulator.MetadataDir) + if err != nil { + log.Printf("failed to load root bytes: %v", err) + return err + } + return nil +} + +func loadUpdaterConfig() (*config.UpdaterConfig, error) { + updaterConfig, err := config.New(simulator.MetadataDir, simulator.RootBytes) + updaterConfig.Fetcher = simulator.Sim + updaterConfig.LocalMetadataDir = simulator.MetadataDir + updaterConfig.LocalTargetsDir = testutils.TargetsDir + return updaterConfig, err +} + +func loadUnsafeUpdaterConfig() (*config.UpdaterConfig, error) { + updaterConfig, err := loadUpdaterConfig() + if err != nil { + return nil, err + } + updaterConfig.UnsafeLocalMode = true + + return updaterConfig, nil +} + +// runRefresh creates new Updater instance and runs Refresh +func runRefresh(updaterConfig *config.UpdaterConfig, moveInTime time.Time) (Updater, error) { + if len(simulator.Sim.DumpDir) > 0 { + simulator.Sim.Write() + } + + updater, err := New(updaterConfig) + if err != nil { + log.Debugf("failed to create new updater config: %v", err) + return Updater{}, err + } + if moveInTime != time.Now() { + updater.trusted.RefTime = moveInTime + } + err = updater.Refresh() + return *updater, err +} + +func initUpdater(updaterConfig *config.UpdaterConfig) Updater { + if len(simulator.Sim.DumpDir) > 0 { + simulator.Sim.Write() + } + + updater, err := New(updaterConfig) + if err != nil { + log.Debugf("failed to create new updater config: %v", err) + } + return *updater +} + +// Asserts that local metadata files exist for 'roles' +func assertFilesExist(t *testing.T, roles []string) { + expectedFiles := []string{} + + for _, role := range roles { + expectedFiles = append(expectedFiles, fmt.Sprintf("%s.json", role)) + } + localMetadataFiles, err := os.ReadDir(simulator.MetadataDir) + assert.NoError(t, err) + + actual := []string{} + for _, file := range localMetadataFiles { + actual = append(actual, file.Name()) + } + + for _, file := range expectedFiles { + assert.Contains(t, actual, file) + } +} + +func assertFilesExact(t *testing.T, roles []string) { + expectedFiles := []string{} + + for _, role := range roles { + expectedFiles = append(expectedFiles, fmt.Sprintf("%s.json", role)) + } + localMetadataFiles, err := os.ReadDir(simulator.MetadataDir) + assert.NoError(t, err) + + actual := []string{} + for _, file := range localMetadataFiles { + actual = append(actual, file.Name()) + } + + assert.ElementsMatch(t, actual, expectedFiles) +} + +// Asserts that local file content is the expected +func assertContentEquals(t *testing.T, role string, version *int) { + expectedContent, err := simulator.Sim.FetchMetadata(role, version) + assert.NoError(t, err) + + content, err := os.ReadFile(fmt.Sprintf("%s/%s.json", simulator.MetadataDir, role)) + assert.NoError(t, err) + assert.Equal(t, string(expectedContent), string(content)) +} + +func assertVersionEquals(t *testing.T, role string, expectedVersion int64) { + path := fmt.Sprintf("%s/%s.json", simulator.MetadataDir, role) + switch role { + case metadata.ROOT: + md, err := simulator.Sim.MDRoot.FromFile(path) + assert.NoError(t, err) + assert.Equal(t, md.Signed.Version, expectedVersion) + case metadata.TARGETS: + md, err := simulator.Sim.MDTargets.FromFile(path) + assert.NoError(t, err) + assert.Equal(t, md.Signed.Version, expectedVersion) + case metadata.TIMESTAMP: + md, err := simulator.Sim.MDTimestamp.FromFile(path) + assert.NoError(t, err) + assert.Equal(t, md.Signed.Version, expectedVersion) + case metadata.SNAPSHOT: + md, err := simulator.Sim.MDSnapshot.FromFile(path) + assert.NoError(t, err) + assert.Equal(t, md.Signed.Version, expectedVersion) + } +} + +func TestLoadTrustedRootMetadata(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater, err := New(updaterConfig) + assert.NoError(t, err) + + assert.Nil(t, err) + if assert.NotNil(t, updater) { + assert.Equal(t, metadata.ROOT, updater.trusted.Root.Signed.Type) + assert.Equal(t, metadata.SPECIFICATION_VERSION, updater.trusted.Root.Signed.SpecVersion) + assert.True(t, updater.trusted.Root.Signed.ConsistentSnapshot) + assert.Equal(t, int64(1), updater.trusted.Root.Signed.Version) + assert.Nil(t, updater.trusted.Snapshot) + assert.Nil(t, updater.trusted.Timestamp) + assert.Empty(t, updater.trusted.Targets) + } +} + +func TestUnsafeLoadTrustedRootMetadata(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + updaterConfig, err := loadUnsafeUpdaterConfig() + assert.NoError(t, err) + updater, err := New(updaterConfig) + assert.NoError(t, err) + + assert.Nil(t, err) + if assert.NotNil(t, updater) { + assert.Equal(t, metadata.ROOT, updater.trusted.Root.Signed.Type) + assert.Equal(t, metadata.SPECIFICATION_VERSION, updater.trusted.Root.Signed.SpecVersion) + assert.True(t, updater.trusted.Root.Signed.ConsistentSnapshot) + assert.Equal(t, int64(1), updater.trusted.Root.Signed.Version) + assert.Nil(t, updater.trusted.Snapshot) + assert.Nil(t, updater.trusted.Timestamp) + assert.Empty(t, updater.trusted.Targets) + } +} + +func TestFirstTimeRefresh(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + assertFilesExist(t, []string{metadata.ROOT}) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) + + for _, role := range metadata.TOP_LEVEL_ROLE_NAMES { + var version int + if role == metadata.ROOT { + version = 2 + } + assertContentEquals(t, role, &version) + } +} + +func TestFirstUnsafeTimeRefresh(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + assertFilesExist(t, []string{metadata.ROOT}) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUnsafeUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.Error(t, err) + // As no update was made only the root file should be present + assertFilesExact(t, []string{metadata.ROOT}) +} + +func TestUnsafeRefresh(t *testing.T) { + // First run a "real" refresh + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + assertFilesExist(t, []string{metadata.ROOT}) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) + + // Create a new unsafe updater, verify content is still valid + updaterConfig, err = loadUnsafeUpdaterConfig() + assert.NoError(t, err) + updater, err := runRefresh(updaterConfig, time.Now()) + assert.NotNil(t, updater) + assert.NoError(t, err) + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) + + for _, role := range metadata.TOP_LEVEL_ROLE_NAMES { + var version int + if role == metadata.ROOT { + // The root file is written when the updater is + // created, so the version is reset. + version = 1 + } + assertContentEquals(t, role, &version) + } + + assert.Equal(t, metadata.ROOT, updater.trusted.Root.Signed.Type) + assert.Equal(t, metadata.SPECIFICATION_VERSION, updater.trusted.Root.Signed.SpecVersion) + assert.True(t, updater.trusted.Root.Signed.ConsistentSnapshot) + assert.Equal(t, int64(1), updater.trusted.Root.Signed.Version) + assert.NotNil(t, updater.trusted.Snapshot) + assert.NotNil(t, updater.trusted.Timestamp) + assert.Equal(t, 1, len(updater.trusted.Targets)) +} + +func TestTrustedRootMissing(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + localTrusedRoot := updaterConfig.LocalTrustedRoot + updaterConfig.LocalTrustedRoot = []byte{} + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorContains(t, err, "no initial trusted root metadata or remote URL provided") + updaterConfig.LocalTrustedRoot = localTrusedRoot +} + +func TestTrustedRootExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + simulator.Sim.MDRoot.Signed.Expires = simulator.PastDateTime + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "final root.json is expired"}) + + assertFilesExist(t, []string{metadata.ROOT}) + version := 2 + assertContentEquals(t, metadata.ROOT, &version) + + updater = initUpdater(updaterConfig) + + simulator.Sim.MDRoot.Signed.Expires = simulator.Sim.SafeExpiry + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + err = updater.Refresh() + assert.NoError(t, err) + + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) + version = 3 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestTrustedRootUnsigned(t *testing.T) { + // Local trusted root is not signed + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + rootPath := fmt.Sprintf("%s/%s.json", simulator.MetadataDir, metadata.ROOT) + mdRoot, err := simulator.Sim.MDRoot.FromFile(rootPath) + assert.NoError(t, err) + + mdRoot.ClearSignatures() + err = mdRoot.ToFile(rootPath, true) + assert.NoError(t, err) + newRootBytes, err := os.ReadFile(rootPath) + assert.NoError(t, err) + simulator.RootBytes = newRootBytes + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying root failed, not enough signatures, got 0, want 1"}) + + assertFilesExist(t, []string{metadata.ROOT}) + mdRootAfter, err := simulator.Sim.MDRoot.FromFile(rootPath) + assert.NoError(t, err) + expected, err := mdRoot.ToBytes(false) + assert.NoError(t, err) + actual, err := mdRootAfter.ToBytes(false) + assert.NoError(t, err) + + assert.Equal(t, expected, actual) +} + +func TestMaxRootRotations(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + updater.cfg.MaxRootRotations = 3 + + for simulator.Sim.MDRoot.Signed.Version < updater.cfg.MaxRootRotations+3 { + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + } + + rootPath := fmt.Sprintf("%s/%s.json", simulator.MetadataDir, metadata.ROOT) + mdRoot, err := simulator.Sim.MDRoot.FromFile(rootPath) + assert.NoError(t, err) + initialRootVersion := mdRoot.Signed.Version + + err = updater.Refresh() + assert.NoError(t, err) + + assertVersionEquals(t, metadata.ROOT, initialRootVersion+updaterConfig.MaxRootRotations) +} + +func TestIntermediateRootInclorrectlySigned(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + simulator.Sim.MDRoot.Signed.Version += 1 + rootSigners := make(map[string]*signature.Signer) + for k, v := range simulator.Sim.Signers[metadata.ROOT] { + rootSigners[k] = v + } + for k := range simulator.Sim.Signers[metadata.ROOT] { + delete(simulator.Sim.Signers[metadata.ROOT], k) + } + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying root failed, not enough signatures, got 0, want 1"}) + + assertFilesExist(t, []string{metadata.ROOT}) + version := 1 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestIntermediateRootExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // The expiration of the new (intermediate) root metadata file + // does not matter yet + + // Intermediate root v2 is expired + simulator.Sim.MDRoot.Signed.Expires = simulator.PastDateTime + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + // Final root v3 is up to date + simulator.Sim.MDRoot.Signed.Expires = simulator.Sim.SafeExpiry + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // Successfully updated to root v3 + assertFilesExist(t, metadata.TOP_LEVEL_ROLE_NAMES[:]) + version := 3 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestNewRootSameVersion(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a rollback_attack + // Repository serves a root file with the same version as previous + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "bad version number, expected 2, got 1"}) + + // The update failed, latest root version is v1 + assertFilesExist(t, []string{metadata.ROOT}) + version := 1 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestNewRootNonconsecutiveVersion(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Repository serves non-consecutive root version + simulator.Sim.MDRoot.Signed.Version += 2 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "bad version number, expected 2, got 3"}) + + // The update failed, latest root version is v1 + assertFilesExist(t, []string{metadata.ROOT}) + version := 1 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestFinalRootExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a freeze attack + // Final root is expired + simulator.Sim.MDRoot.Signed.Expires = simulator.PastDateTime + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "final root.json is expired"}) + + // The update failed but final root is persisted on the file system + assertFilesExist(t, []string{metadata.ROOT}) + version := 2 + assertContentEquals(t, metadata.ROOT, &version) +} + +func TestNewTimestampUnsigned(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for an arbitrary software attack + delete(simulator.Sim.Signers, metadata.TIMESTAMP) + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying timestamp failed, not enough signatures, got 0, want 1"}) + + assertFilesExist(t, []string{metadata.ROOT}) +} + +func TestExpiredTimestampVersionRollback(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Verifies that local timestamp is used in rollback checks even if it is expired. + // The timestamp updates and rollback checks are performed + // with the following timing: + // - Timestamp v1 expiry set to day 7 + // - First updater refresh performed on day 0 + // - Repository publishes timestamp v2 on day 0 + // - Timestamp v2 expiry set to day 21 + // - Second updater refresh performed on day 18: + // assert that rollback check uses expired timestamp v1 + + now := time.Now() + simulator.Sim.MDTimestamp.Signed.Expires = now.Add(time.Hour * 7 * 24) + simulator.Sim.MDTimestamp.Signed.Version = 2 + + // Make a successful update of valid metadata which stores it in cache + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + simulator.Sim.MDTimestamp.Signed.Expires = now.Add(time.Hour * 21 * 24) + simulator.Sim.MDTimestamp.Signed.Version = 1 + + // Check that a rollback protection is performed even if + // local timestamp has expired + moveInTime := time.Now().Add(time.Hour * 18 * 24) + _, err = runRefresh(updaterConfig, moveInTime) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new timestamp version 1 must be >= 2"}) + assertVersionEquals(t, metadata.TIMESTAMP, 2) +} + +func TestNewTimestampVersionRollback(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a rollback attack + simulator.Sim.MDTimestamp.Signed.Version = 2 + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + simulator.Sim.MDTimestamp.Signed.Version = 1 + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new timestamp version 1 must be >= 2"}) + assertVersionEquals(t, metadata.TIMESTAMP, 2) +} + +func TestNewTimestampSnapshotRollback(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a rollback attack. + simulator.Sim.MDSnapshot.Signed.Version = 2 + simulator.Sim.UpdateTimestamp() // timestamp v2 + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // Snapshot meta version is smaller than previous + simulator.Sim.MDTimestamp.Signed.Meta["snapshot.json"].Version = 1 + simulator.Sim.MDTimestamp.Signed.Version += 1 // timestamp v3 + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new snapshot version 1 must be >= 2"}) + assertVersionEquals(t, metadata.TIMESTAMP, 2) +} + +func TestNewTimestampExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a freeze attack + simulator.Sim.MDTimestamp.Signed.Expires = simulator.PastDateTime + simulator.Sim.UpdateTimestamp() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "timestamp.json is expired"}) + assertFilesExist(t, []string{metadata.ROOT}) +} + +func TestNewTimestampFastForwardRecovery(t *testing.T) { + //Test timestamp fast-forward recovery using key rotation. + + // The timestamp recovery is made by the following steps + // - Remove the timestamp key + // - Create and add a new key for timestamp + // - Bump and publish root + // - Rollback the timestamp version + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // attacker updates to a higher version + simulator.Sim.MDTimestamp.Signed.Version = 99999 + + // client refreshes the metadata and see the new timestamp version + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.TIMESTAMP, 99999) + + // repository rotates timestamp keys, rolls back timestamp version + simulator.Sim.RotateKeys(metadata.TIMESTAMP) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + simulator.Sim.MDTimestamp.Signed.Version = 1 + + // client refresh the metadata and see the initial timestamp version + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.TIMESTAMP, 1) +} + +func TestNewSnapshotHashMismatch(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check against timestamp role’s snapshot hash + + // Update timestamp with snapshot's hashes + simulator.Sim.ComputeMetafileHashesAndLength = true + simulator.Sim.UpdateTimestamp() // timestamp v2 + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // Modify snapshot contents without updating + // timestamp's snapshot hash + simulator.Sim.MDSnapshot.Signed.Expires = simulator.Sim.MDSnapshot.Signed.Expires.Add(time.Hour * 24) + simulator.Sim.MDSnapshot.Signed.Version += 1 // snapshot v2 + simulator.Sim.MDTimestamp.Signed.Meta["snapshot.json"].Version = simulator.Sim.MDSnapshot.Signed.Version + simulator.Sim.MDTimestamp.Signed.Version += 1 // timestamp v3 + + // Hash mismatch error + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrLengthOrHashMismatch{Msg: "hash verification failed - mismatch for algorithm sha256"}) + assertVersionEquals(t, metadata.TIMESTAMP, 3) + assertVersionEquals(t, metadata.SNAPSHOT, 1) +} + +func TestNewSnapshotUnsigned(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for an arbitrary software attack + delete(simulator.Sim.Signers, metadata.SNAPSHOT) + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying snapshot failed, not enough signatures, got 0, want 1"}) + + assertFilesExist(t, []string{metadata.ROOT, metadata.TIMESTAMP}) +} + +func TestNewSnapshotVersionMismatch(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check against timestamp role’s snapshot version + + // Increase snapshot version without updating timestamp + simulator.Sim.MDSnapshot.Signed.Version += 1 + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected 1, got 2"}) + + assertFilesExist(t, []string{metadata.ROOT, metadata.TIMESTAMP}) +} + +func TestNewSnapshotVersionRollback(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a rollback attack + simulator.Sim.MDSnapshot.Signed.Version = 2 + simulator.Sim.UpdateTimestamp() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + simulator.Sim.MDSnapshot.Signed.Version = 1 + simulator.Sim.UpdateTimestamp() + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "new snapshot version 1 must be >= 2"}) + + assertVersionEquals(t, metadata.SNAPSHOT, 2) +} + +func TestNewSnapshotFastForwardRecovery(t *testing.T) { + // Test snapshot fast-forward recovery using key rotation. + + // The snapshot recovery requires the snapshot and timestamp key rotation. + // It is made by the following steps: + // - Remove the snapshot and timestamp keys + // - Create and add a new key for snapshot and timestamp + // - Rollback snapshot version + // - Bump and publish root + // - Bump the timestamp + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // attacker updates to a higher version (bumping timestamp is required) + simulator.Sim.MDSnapshot.Signed.Version = 99999 + simulator.Sim.UpdateTimestamp() + + // client refreshes the metadata and see the new snapshot version + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.SNAPSHOT, 99999) + + // repository rotates snapshot & timestamp keys, rolls back snapshot + simulator.Sim.RotateKeys(metadata.SNAPSHOT) + simulator.Sim.RotateKeys(metadata.TIMESTAMP) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + simulator.Sim.MDSnapshot.Signed.Version = 1 + simulator.Sim.UpdateTimestamp() + + // client refresh the metadata and see the initial snapshot version + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.SNAPSHOT, 1) +} + +func TestNewSnapshotExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a freeze attack + simulator.Sim.MDSnapshot.Signed.Expires = simulator.PastDateTime + simulator.Sim.UpdateSnapshot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "snapshot.json is expired"}) + + assertFilesExist(t, []string{metadata.ROOT}) +} + +func TestNewTargetsHashMismatch(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check against snapshot role’s targets hashes + simulator.Sim.ComputeMetafileHashesAndLength = true + simulator.Sim.UpdateSnapshot() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // Modify targets contents without updating + // snapshot's targets hashes + simulator.Sim.MDTargets.Signed.Version += 1 + simulator.Sim.MDSnapshot.Signed.Meta["targets.json"].Version = simulator.Sim.MDTargets.Signed.Version + simulator.Sim.MDSnapshot.Signed.Version += 1 + simulator.Sim.UpdateTimestamp() + + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrLengthOrHashMismatch{Msg: "hash verification failed - mismatch for algorithm sha256"}) + + assertVersionEquals(t, metadata.SNAPSHOT, 3) + assertVersionEquals(t, metadata.TARGETS, 1) +} + +func TestNewTargetsUnsigned(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for an arbitrary software attack + delete(simulator.Sim.Signers, metadata.TARGETS) + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrUnsignedMetadata{Msg: "Verifying targets failed, not enough signatures, got 0, want 1"}) + + assertFilesExist(t, []string{metadata.ROOT, metadata.TIMESTAMP, metadata.SNAPSHOT}) +} + +func TestNewTargetsVersionMismatch(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check against snapshot role’s targets version + + // Increase targets version without updating snapshot + simulator.Sim.MDTargets.Signed.Version += 1 + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected targets version 1, got 2"}) + + assertFilesExist(t, []string{metadata.ROOT, metadata.TIMESTAMP, metadata.SNAPSHOT}) +} + +func TestNewTargetsExpired(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Check for a freeze attack. + simulator.Sim.MDTargets.Signed.Expires = simulator.PastDateTime + simulator.Sim.UpdateSnapshot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrExpiredMetadata{Msg: "new targets is expired"}) + + assertFilesExist(t, []string{metadata.ROOT, metadata.TIMESTAMP, metadata.SNAPSHOT}) +} + +func TestComputeMetafileHashesLength(t *testing.T) { + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + simulator.Sim.ComputeMetafileHashesAndLength = true + simulator.Sim.UpdateSnapshot() + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + assertVersionEquals(t, metadata.TIMESTAMP, 2) + assertVersionEquals(t, metadata.SNAPSHOT, 2) + + simulator.Sim.ComputeMetafileHashesAndLength = false + simulator.Sim.UpdateSnapshot() + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + assertVersionEquals(t, metadata.TIMESTAMP, 3) + assertVersionEquals(t, metadata.SNAPSHOT, 3) +} + +func TestNewTargetsFastForwardRecovery(t *testing.T) { + //Test targets fast-forward recovery using key rotation. + + // The targets recovery is made by issuing new Snapshot keys, by following + // steps: + // - Remove the snapshot key + // - Create and add a new key for snapshot + // - Bump and publish root + // - Rollback the target version + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // attacker updates to a higher version + simulator.Sim.MDTargets.Signed.Version = 99999 + simulator.Sim.UpdateSnapshot() + + // client refreshes the metadata and see the new targets version + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.TARGETS, 99999) + + // repository rotates snapshot keys, rolls back targets version + simulator.Sim.RotateKeys(metadata.SNAPSHOT) + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + simulator.Sim.MDTargets.Signed.Version = 1 + simulator.Sim.UpdateSnapshot() + + // client refreshes the metadata version and see initial targets version + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + assertVersionEquals(t, metadata.TARGETS, 1) +} + +func TestSnapshotRollbackWithLocalSnapshotHashMismatch(t *testing.T) { + // Test triggering snapshot rollback check on a newly downloaded snapshot + // when the local snapshot is loaded even when there is a hash mismatch + // with timestamp.snapshot_meta. + + // By raising this flag on timestamp update the simulator would: + // 1) compute the hash of the new modified version of snapshot + // 2) assign the hash to timestamp.snapshot_meta + // The purpose is to create a hash mismatch between timestamp.meta and + // the local snapshot, but to have hash match between timestamp.meta and + // the next snapshot version. + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + simulator.Sim.ComputeMetafileHashesAndLength = true + + // Initialize all metadata and assign targets version higher than 1. + simulator.Sim.MDTargets.Signed.Version = 2 + simulator.Sim.UpdateSnapshot() + + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // The new targets must have a lower version than the local trusted one. + simulator.Sim.MDTargets.Signed.Version = 1 + simulator.Sim.UpdateSnapshot() + + // During the snapshot update, the local snapshot will be loaded even if + // there is a hash mismatch with timestamp snapshot meta, because it will + // be considered as trusted. + // Should fail as a new version of snapshot will be fetched which lowers + // the snapshot meta "targets.json" version by 1 and throws an error. + _, err = runRefresh(updaterConfig, time.Now()) + assert.ErrorIs(t, err, metadata.ErrBadVersionNumber{Msg: "expected targets.json version 1, got 2"}) +} + +func TestExpiredMetadata(t *testing.T) { + // Verifies that expired local timestamp/snapshot can be used for + // updating from remote. + + // The updates and verifications are performed with the following timing: + // - Timestamp v1 expiry set to day 7 + // - First updater refresh performed on day 0 + // - Repository bumps snapshot and targets to v2 on day 0 + // - Timestamp v2 expiry set to day 21 + // - Second updater refresh performed on day 18, + // it is successful and timestamp/snaphot final versions are v2" + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + now := time.Now() + simulator.Sim.MDTimestamp.Signed.Expires = now.Add(time.Hour * 7 * 24) + + // Make a successful update of valid metadata which stores it in cache + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + simulator.Sim.MDTargets.Signed.Version += 1 + simulator.Sim.UpdateSnapshot() + simulator.Sim.MDTimestamp.Signed.Expires = now.Add(time.Hour * 21 * 24) + + // Mocking time so that local timestam has expired + // but the new timestamp has not + moveInTime := now.Add(time.Hour * 18 * 24) + _, err = runRefresh(updaterConfig, moveInTime) + assert.NoError(t, err) + + // Assert that the final version of timestamp/snapshot is version 2 + // which means a successful refresh is performed + // with expired local metadata + + mdTimestamp, err := metadata.Timestamp().FromFile(simulator.MetadataDir + "/timestamp.json") + assert.NoError(t, err) + assert.Equal(t, int64(2), mdTimestamp.Signed.Version) + + mdSnapshot, err := metadata.Snapshot().FromFile(simulator.MetadataDir + "/snapshot.json") + assert.NoError(t, err) + assert.Equal(t, int64(2), mdSnapshot.Signed.Version) + + mdTargets, err := metadata.Targets().FromFile(simulator.MetadataDir + "/targets.json") + assert.NoError(t, err) + assert.Equal(t, int64(2), mdTargets.Signed.Version) +} + +func TestMaxMetadataLengths(t *testing.T) { + // Test that clients configured max metadata lengths are respected + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // client has root v1 already: create a new one available for download + simulator.Sim.MDRoot.Signed.Version += 1 + simulator.Sim.PublishRoot() + + // make sure going over any length limit raises DownloadLengthMismatchError + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + updater := initUpdater(updaterConfig) + updater.cfg.RootMaxLength = 100 + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrDownloadLengthMismatch{Msg: "Downloaded 1567 bytes exceeding the maximum allowed length of 100"}) + + updater = initUpdater(updaterConfig) + updater.cfg.TimestampMaxLength = 100 + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrDownloadLengthMismatch{Msg: "Downloaded 1567 bytes exceeding the maximum allowed length of 100"}) + + updater = initUpdater(updaterConfig) + updater.cfg.SnapshotMaxLength = 100 + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrDownloadLengthMismatch{Msg: "Downloaded 1567 bytes exceeding the maximum allowed length of 100"}) + + updater = initUpdater(updaterConfig) + updater.cfg.TargetsMaxLength = 100 + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrDownloadLengthMismatch{Msg: "Downloaded 1567 bytes exceeding the maximum allowed length of 100"}) + + // All good with normal length limits + updater = initUpdater(updaterConfig) + err = updater.Refresh() + assert.ErrorIs(t, err, metadata.ErrDownloadLengthMismatch{Msg: "Downloaded 1567 bytes exceeding the maximum allowed length of 100"}) +} + +func TestTimestampEqVersionsCheck(t *testing.T) { + // Test that a modified timestamp with different content, but the same + // version doesn't replace the valid locally stored one. + + err := loadOrResetTrustedRootMetadata() + assert.NoError(t, err) + + // Make a successful update of valid metadata which stores it in cache + updaterConfig, err := loadUpdaterConfig() + assert.NoError(t, err) + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + initialTimestampMetadataVer := simulator.Sim.MDTimestamp.Signed.Meta["snapshot.json"].Version + // Change timestamp without bumping its version in order to test if a new + // timestamp with the same version will be persisted. + simulator.Sim.MDTimestamp.Signed.Meta["snapshot.json"].Version = 100 + _, err = runRefresh(updaterConfig, time.Now()) + assert.NoError(t, err) + + // If the local timestamp md file has the same snapshot_meta.version as + // the initial one, then the new modified timestamp has not been stored. + timestamp, err := metadata.Timestamp().FromFile(simulator.MetadataDir + "/timestamp.json") + assert.NoError(t, err) + assert.Equal(t, initialTimestampMetadataVer, timestamp.Signed.Meta["snapshot.json"].Version) +} diff --git a/pkg/deprecated/deprecated_repo_test.go b/pkg/deprecated/deprecated_repo_test.go deleted file mode 100644 index e65cb9e9..00000000 --- a/pkg/deprecated/deprecated_repo_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package deprecated - -import ( - "crypto" - "crypto/elliptic" - "crypto/rand" - "crypto/sha256" - "encoding/json" - "testing" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - repo "github.com/theupdateframework/go-tuf" - "github.com/theupdateframework/go-tuf/data" - _ "github.com/theupdateframework/go-tuf/pkg/deprecated/set_ecdsa" - "github.com/theupdateframework/go-tuf/pkg/keys" - . "gopkg.in/check.v1" -) - -func Test(t *testing.T) { TestingT(t) } - -type RepoSuite struct{} - -var _ = Suite(&RepoSuite{}) - -func genKey(c *C, r *repo.Repo, role string) []string { - keyids, err := r.GenKey(role) - c.Assert(err, IsNil) - c.Assert(len(keyids) > 0, Equals, true) - return keyids -} - -// Deprecated ecdsa key support: Support verification against roots that were -// signed with hex-encoded ecdsa keys. -func (rs *RepoSuite) TestDeprecatedHexEncodedKeysSucceed(c *C) { - type deprecatedP256Verifier struct { - PublicKey data.HexBytes `json:"public"` - } - files := map[string][]byte{"foo.txt": []byte("foo")} - local := repo.MemoryStore(make(map[string]json.RawMessage), files) - r, err := repo.NewRepo(local) - c.Assert(err, IsNil) - - r.Init(false) - - // Add a root key with hex-encoded ecdsa format - compliant "ecdsa" - signer, err := keys.GenerateEcdsaKey() - c.Assert(err, IsNil) - pub := signer.PublicKey - keyValBytes, err := json.Marshal(&deprecatedP256Verifier{PublicKey: elliptic.Marshal(pub.Curve, pub.X, pub.Y)}) - c.Assert(err, IsNil) - publicData := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } - err = r.AddVerificationKey("root", publicData) - c.Assert(err, IsNil) - - // Add a root key with hex-encoded ecdsa format - deprecated "ecdsa-sha2-nistp256" - signerDeprecated, err := keys.GenerateEcdsaKey() - c.Assert(err, IsNil) - pubDeprecated := signerDeprecated.PublicKey - keyValBytesDeprecated, err := json.Marshal(&deprecatedP256Verifier{PublicKey: elliptic.Marshal(pubDeprecated.Curve, pubDeprecated.X, pubDeprecated.Y)}) - c.Assert(err, IsNil) - publicDataDeprecated := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256_OLD_FMT, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytesDeprecated, - } - err = r.AddVerificationKey("root", publicDataDeprecated) - c.Assert(err, IsNil) - - // Add other keys as normal - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - - // Sign the root role manually - rootMeta, err := r.SignedMeta("root.json") - c.Assert(err, IsNil) - rootCanonical, err := cjson.EncodeCanonical(rootMeta.Signed) - c.Assert(err, IsNil) - hash := sha256.Sum256(rootCanonical) - rootSig, err := signer.PrivateKey.Sign(rand.Reader, hash[:], crypto.SHA256) - c.Assert(err, IsNil) - for _, id := range publicData.IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), IsNil) - } - - rootSigDeprecated, err := signerDeprecated.PrivateKey.Sign(rand.Reader, hash[:], crypto.SHA256) - c.Assert(err, IsNil) - for _, id := range publicDataDeprecated.IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSigDeprecated}), IsNil) - } - - // Committing should succeed because the deprecated key pkg is added. - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) -} diff --git a/pkg/deprecated/set_ecdsa/set_ecdsa.go b/pkg/deprecated/set_ecdsa/set_ecdsa.go deleted file mode 100644 index 13967e2f..00000000 --- a/pkg/deprecated/set_ecdsa/set_ecdsa.go +++ /dev/null @@ -1,26 +0,0 @@ -package set_ecdsa - -import ( - "errors" - - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -/* - Importing this package will allow support for both hex-encoded ECDSA - verifiers and PEM-encoded ECDSA verifiers. - Note that this package imports "github.com/theupdateframework/go-tuf/pkg/keys" - and overrides the ECDSA verifier loaded at init time in that package. -*/ - -func init() { - _, ok := keys.VerifierMap.Load(data.KeyTypeECDSA_SHA2_P256) - if !ok { - panic(errors.New("expected to override previously loaded PEM-only ECDSA verifier")) - } - // store a mapping for both data.KeyTypeECDSA_SHA2_P256_OLD_FMT and data.KeyTypeECDSA_SHA2_P256 - // in case a client is verifying using both the old non-compliant format and a newly generated root - keys.VerifierMap.Store(data.KeyTypeECDSA_SHA2_P256, keys.NewDeprecatedEcdsaVerifier) // compliant format - keys.VerifierMap.Store(data.KeyTypeECDSA_SHA2_P256_OLD_FMT, keys.NewDeprecatedEcdsaVerifier) // deprecated format -} diff --git a/pkg/keys/deprecated_ecdsa.go b/pkg/keys/deprecated_ecdsa.go deleted file mode 100644 index 6d48c9d6..00000000 --- a/pkg/keys/deprecated_ecdsa.go +++ /dev/null @@ -1,101 +0,0 @@ -package keys - -import ( - "bytes" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/sha256" - "encoding/json" - "errors" - "fmt" - "io" - - "github.com/theupdateframework/go-tuf/data" -) - -func NewDeprecatedEcdsaVerifier() Verifier { - return &ecdsaVerifierWithDeprecatedSupport{} -} - -type ecdsaVerifierWithDeprecatedSupport struct { - key *data.PublicKey - // This will switch based on whether this is a PEM-encoded key - // or a deprecated hex-encoded key. - Verifier -} - -func (p *ecdsaVerifierWithDeprecatedSupport) UnmarshalPublicKey(key *data.PublicKey) error { - p.key = key - pemVerifier := &EcdsaVerifier{} - if err := pemVerifier.UnmarshalPublicKey(key); err != nil { - // Try the deprecated hex-encoded verifier - hexVerifier := &deprecatedP256Verifier{} - if err := hexVerifier.UnmarshalPublicKey(key); err != nil { - return err - } - p.Verifier = hexVerifier - return nil - } - p.Verifier = pemVerifier - return nil -} - -/* - Deprecated ecdsaVerifier that used hex-encoded public keys. - This MAY be used to verify existing metadata that used this - old format. This will be deprecated soon, ensure that repositories - are re-signed and clients receieve a fully compliant root. -*/ - -type deprecatedP256Verifier struct { - PublicKey data.HexBytes `json:"public"` - key *data.PublicKey -} - -func (p *deprecatedP256Verifier) Public() string { - return p.PublicKey.String() -} - -func (p *deprecatedP256Verifier) Verify(msg, sigBytes []byte) error { - x, y := elliptic.Unmarshal(elliptic.P256(), p.PublicKey) - k := &ecdsa.PublicKey{ - Curve: elliptic.P256(), - X: x, - Y: y, - } - - hash := sha256.Sum256(msg) - - if !ecdsa.VerifyASN1(k, hash[:], sigBytes) { - return errors.New("tuf: deprecated ecdsa signature verification failed") - } - return nil -} - -func (p *deprecatedP256Verifier) MarshalPublicKey() *data.PublicKey { - return p.key -} - -func (p *deprecatedP256Verifier) UnmarshalPublicKey(key *data.PublicKey) error { - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(key.Value), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(p); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the public key is truncated or too large: %w", err) - } - return err - } - - curve := elliptic.P256() - - // Parse as uncompressed marshalled point. - x, _ := elliptic.Unmarshal(curve, p.PublicKey) - if x == nil { - return errors.New("tuf: invalid ecdsa public key point") - } - - p.key = key - return nil -} diff --git a/pkg/keys/deprecated_ecdsa_test.go b/pkg/keys/deprecated_ecdsa_test.go deleted file mode 100644 index ddfaa84d..00000000 --- a/pkg/keys/deprecated_ecdsa_test.go +++ /dev/null @@ -1,129 +0,0 @@ -package keys - -import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/sha256" - "encoding/json" - "errors" - - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -type DeprecatedECDSASuite struct{} - -var _ = Suite(DeprecatedECDSASuite{}) - -type deprecatedEcdsaSigner struct { - *ecdsa.PrivateKey -} - -type deprecatedEcdsaPublic struct { - PublicKey data.HexBytes `json:"public"` -} - -func (s deprecatedEcdsaSigner) PublicData() *data.PublicKey { - pub := s.Public().(*ecdsa.PublicKey) - keyValBytes, _ := json.Marshal(deprecatedEcdsaPublic{ - PublicKey: elliptic.Marshal(pub.Curve, pub.X, pub.Y)}) - return &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } -} - -func (s deprecatedEcdsaSigner) SignMessage(message []byte) ([]byte, error) { - hash := sha256.Sum256(message) - return s.PrivateKey.Sign(rand.Reader, hash[:], crypto.SHA256) -} - -func (s deprecatedEcdsaSigner) ContainsID(id string) bool { - return s.PublicData().ContainsID(id) -} - -func (deprecatedEcdsaSigner) MarshalPrivateKey() (*data.PrivateKey, error) { - return nil, errors.New("not implemented for test") -} - -func (deprecatedEcdsaSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { - return errors.New("not implemented for test") -} - -func generatedDeprecatedSigner() (*deprecatedEcdsaSigner, error) { - privkey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - return nil, err - } - return &deprecatedEcdsaSigner{privkey}, nil -} - -func (DeprecatedECDSASuite) TestSignVerifyDeprecatedFormat(c *C) { - // Create an ecdsa key with a deprecated format. - signer, err := generatedDeprecatedSigner() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - - pub := signer.PublicKey - - keyValBytes, err := json.Marshal(&deprecatedP256Verifier{PublicKey: elliptic.Marshal(pub.Curve, pub.X, pub.Y)}) - c.Assert(err, IsNil) - publicData := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } - - deprecatedEcdsa := NewDeprecatedEcdsaVerifier() - err = deprecatedEcdsa.UnmarshalPublicKey(publicData) - c.Assert(err, IsNil) - c.Assert(deprecatedEcdsa.Verify(msg, sig), IsNil) -} - -func (DeprecatedECDSASuite) TestECDSAVerifyMismatchMessage(c *C) { - signer, err := generatedDeprecatedSigner() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - deprecatedEcdsa := NewDeprecatedEcdsaVerifier() - err = deprecatedEcdsa.UnmarshalPublicKey(publicData) - c.Assert(err, IsNil) - c.Assert(deprecatedEcdsa.Verify([]byte("notfoo"), sig), ErrorMatches, "tuf: deprecated ecdsa signature verification failed") -} - -func (DeprecatedECDSASuite) TestECDSAVerifyMismatchPubKey(c *C) { - signer, err := generatedDeprecatedSigner() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - - signerNew, err := generatedDeprecatedSigner() - c.Assert(err, IsNil) - deprecatedEcdsa := NewDeprecatedEcdsaVerifier() - err = deprecatedEcdsa.UnmarshalPublicKey(signerNew.PublicData()) - c.Assert(err, IsNil) - c.Assert(deprecatedEcdsa.Verify([]byte("notfoo"), sig), ErrorMatches, "tuf: deprecated ecdsa signature verification failed") -} - -func (DeprecatedECDSASuite) TestMarshalUnmarshalPublicKey(c *C) { - signer, err := generatedDeprecatedSigner() - c.Assert(err, IsNil) - - pub := signer.PublicData() - - deprecatedEcdsa := NewDeprecatedEcdsaVerifier() - err = deprecatedEcdsa.UnmarshalPublicKey(pub) - c.Assert(err, IsNil) - - c.Assert(deprecatedEcdsa.MarshalPublicKey(), DeepEquals, pub) -} diff --git a/pkg/keys/ecdsa.go b/pkg/keys/ecdsa.go deleted file mode 100644 index 9740d1f3..00000000 --- a/pkg/keys/ecdsa.go +++ /dev/null @@ -1,173 +0,0 @@ -package keys - -import ( - "bytes" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/sha256" - "crypto/x509" - "encoding/json" - "encoding/pem" - "errors" - "fmt" - "io" - - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - // Note: we use LoadOrStore here to prevent accidentally overriding the - // an explicit deprecated ECDSA verifier. - // TODO: When deprecated ECDSA is removed, this can switch back to Store. - VerifierMap.LoadOrStore(data.KeyTypeECDSA_SHA2_P256_OLD_FMT, NewEcdsaVerifier) - VerifierMap.LoadOrStore(data.KeyTypeECDSA_SHA2_P256, NewEcdsaVerifier) - SignerMap.Store(data.KeyTypeECDSA_SHA2_P256_OLD_FMT, newEcdsaSigner) - SignerMap.Store(data.KeyTypeECDSA_SHA2_P256, newEcdsaSigner) -} - -func NewEcdsaVerifier() Verifier { - return &EcdsaVerifier{} -} - -func newEcdsaSigner() Signer { - return &ecdsaSigner{} -} - -type EcdsaVerifier struct { - PublicKey *PKIXPublicKey `json:"public"` - ecdsaKey *ecdsa.PublicKey - key *data.PublicKey -} - -func (p *EcdsaVerifier) Public() string { - // This is already verified to succeed when unmarshalling a public key. - r, err := x509.MarshalPKIXPublicKey(p.ecdsaKey) - if err != nil { - // TODO: Gracefully handle these errors. - // See https://github.com/theupdateframework/go-tuf/issues/363 - panic(err) - } - return string(r) -} - -func (p *EcdsaVerifier) Verify(msg, sigBytes []byte) error { - hash := sha256.Sum256(msg) - - if !ecdsa.VerifyASN1(p.ecdsaKey, hash[:], sigBytes) { - return errors.New("tuf: ecdsa signature verification failed") - } - return nil -} - -func (p *EcdsaVerifier) MarshalPublicKey() *data.PublicKey { - return p.key -} - -func (p *EcdsaVerifier) UnmarshalPublicKey(key *data.PublicKey) error { - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(key.Value), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(p); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the public key is truncated or too large: %w", err) - } - return err - } - - ecdsaKey, ok := p.PublicKey.PublicKey.(*ecdsa.PublicKey) - if !ok { - return fmt.Errorf("invalid public key") - } - - if _, err := x509.MarshalPKIXPublicKey(ecdsaKey); err != nil { - return fmt.Errorf("marshalling to PKIX key: invalid public key") - } - - p.ecdsaKey = ecdsaKey - p.key = key - return nil -} - -type ecdsaSigner struct { - *ecdsa.PrivateKey -} - -type ecdsaPrivateKeyValue struct { - Private string `json:"private"` - Public *PKIXPublicKey `json:"public"` -} - -func (s *ecdsaSigner) PublicData() *data.PublicKey { - // This uses a trusted public key JSON format with a trusted Public value. - keyValBytes, _ := json.Marshal(EcdsaVerifier{PublicKey: &PKIXPublicKey{PublicKey: s.Public()}}) - return &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } -} - -func (s *ecdsaSigner) SignMessage(message []byte) ([]byte, error) { - hash := sha256.Sum256(message) - return ecdsa.SignASN1(rand.Reader, s.PrivateKey, hash[:]) -} - -func (s *ecdsaSigner) MarshalPrivateKey() (*data.PrivateKey, error) { - priv, err := x509.MarshalECPrivateKey(s.PrivateKey) - if err != nil { - return nil, err - } - pemKey := pem.EncodeToMemory(&pem.Block{Type: "EC PRIVATE KEY", Bytes: priv}) - val, err := json.Marshal(ecdsaPrivateKeyValue{ - Private: string(pemKey), - Public: &PKIXPublicKey{PublicKey: s.Public()}, - }) - if err != nil { - return nil, err - } - return &data.PrivateKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: val, - }, nil -} - -func (s *ecdsaSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { - val := ecdsaPrivateKeyValue{} - if err := json.Unmarshal(key.Value, &val); err != nil { - return err - } - block, _ := pem.Decode([]byte(val.Private)) - if block == nil { - return errors.New("invalid PEM value") - } - if block.Type != "EC PRIVATE KEY" { - return fmt.Errorf("invalid block type: %s", block.Type) - } - k, err := x509.ParseECPrivateKey(block.Bytes) - if err != nil { - return err - } - if k.Curve != elliptic.P256() { - return errors.New("unsupported ecdsa curve") - } - if _, err := json.Marshal(EcdsaVerifier{ - PublicKey: &PKIXPublicKey{PublicKey: k.Public()}}); err != nil { - return fmt.Errorf("invalid public key: %s", err) - } - - s.PrivateKey = k - return nil -} - -func GenerateEcdsaKey() (*ecdsaSigner, error) { - privkey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - return nil, err - } - return &ecdsaSigner{privkey}, nil -} diff --git a/pkg/keys/ecdsa_test.go b/pkg/keys/ecdsa_test.go deleted file mode 100644 index 2fe6348e..00000000 --- a/pkg/keys/ecdsa_test.go +++ /dev/null @@ -1,163 +0,0 @@ -package keys - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "encoding/hex" - "encoding/json" - "errors" - "io" - "strings" - - fuzz "github.com/google/gofuzz" - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -type ECDSASuite struct{} - -var _ = Suite(ECDSASuite{}) - -func (ECDSASuite) TestSignVerify(c *C) { - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify(msg, sig), IsNil) -} - -func (ECDSASuite) TestECDSAVerifyMismatchMessage(c *C) { - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify([]byte("notfoo"), sig), ErrorMatches, "tuf: ecdsa signature verification failed") -} - -func (ECDSASuite) TestECDSAVerifyMismatchPubKey(c *C) { - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - - signerNew, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - pubKey, err := GetVerifier(signerNew.PublicData()) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify([]byte("notfoo"), sig), ErrorMatches, "tuf: ecdsa signature verification failed") -} - -func (ECDSASuite) TestSignVerifyDeprecatedFails(c *C) { - // Create an ecdsa key with a deprecated format. - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - - type deprecatedP256Verifier struct { - PublicKey data.HexBytes `json:"public"` - } - pub := signer.PublicKey - keyValBytes, err := json.Marshal(&deprecatedP256Verifier{PublicKey: elliptic.Marshal(pub.Curve, pub.X, pub.Y)}) - c.Assert(err, IsNil) - publicData := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } - - _, err = GetVerifier(publicData) - c.Assert(err, ErrorMatches, "tuf: error unmarshalling key: invalid PEM value") -} - -func (ECDSASuite) TestMarshalUnmarshalPublicKey(c *C) { - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.MarshalPublicKey(), DeepEquals, publicData) -} - -func (ECDSASuite) TestMarshalUnmarshalPrivateKey(c *C) { - signer, err := GenerateEcdsaKey() - c.Assert(err, IsNil) - privateData, err := signer.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(privateData.Type, Equals, data.KeyTypeECDSA_SHA2_P256) - c.Assert(privateData.Scheme, Equals, data.KeySchemeECDSA_SHA2_P256) - c.Assert(privateData.Algorithms, DeepEquals, data.HashAlgorithms) - s, err := GetSigner(privateData) - c.Assert(err, IsNil) - c.Assert(s, DeepEquals, signer) -} - -func (ECDSASuite) TestUnmarshalECDSA(c *C) { - priv, err := ecdsa.GenerateKey(elliptic.P256(), strings.NewReader("00001-deterministic-buffer-for-key-generation")) - c.Assert(err, IsNil) - - signer := &ecdsaSigner{priv} - goodKey := signer.PublicData() - - verifier := NewEcdsaVerifier() - c.Assert(verifier.UnmarshalPublicKey(goodKey), IsNil) -} - -func (ECDSASuite) TestUnmarshalECDSA_Invalid(c *C) { - badKeyValue, err := json.Marshal(true) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: badKeyValue, - } - verifier := NewEcdsaVerifier() - c.Assert(verifier.UnmarshalPublicKey(badKey), ErrorMatches, "json: cannot unmarshal.*") -} - -func (ECDSASuite) TestUnmarshalECDSA_FastFuzz(c *C) { - verifier := NewEcdsaVerifier() - for i := 0; i < 50; i++ { - // Ensure no basic panic - - f := fuzz.New() - var publicData data.PublicKey - f.Fuzz(&publicData) - - verifier.UnmarshalPublicKey(&publicData) - } -} - -func (ECDSASuite) TestUnmarshalECDSA_TooLongContent(c *C) { - randomSeed := make([]byte, MaxJSONKeySize) - _, err := io.ReadFull(rand.Reader, randomSeed) - c.Assert(err, IsNil) - - tooLongPayload, err := json.Marshal( - &ed25519Verifier{ - PublicKey: data.HexBytes(hex.EncodeToString(randomSeed)), - }, - ) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: tooLongPayload, - } - verifier := NewEcdsaVerifier() - err = verifier.UnmarshalPublicKey(badKey) - c.Assert(errors.Is(err, io.ErrUnexpectedEOF), Equals, true) -} diff --git a/pkg/keys/ed25519.go b/pkg/keys/ed25519.go deleted file mode 100644 index 1e4c66cc..00000000 --- a/pkg/keys/ed25519.go +++ /dev/null @@ -1,161 +0,0 @@ -package keys - -import ( - "bytes" - "crypto" - "crypto/ed25519" - "crypto/rand" - "crypto/subtle" - "encoding/json" - "errors" - "fmt" - "io" - - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - SignerMap.Store(data.KeyTypeEd25519, NewEd25519Signer) - VerifierMap.Store(data.KeyTypeEd25519, NewEd25519Verifier) -} - -func NewEd25519Signer() Signer { - return &ed25519Signer{} -} - -func NewEd25519Verifier() Verifier { - return &ed25519Verifier{} -} - -type ed25519Verifier struct { - PublicKey data.HexBytes `json:"public"` - key *data.PublicKey -} - -func (e *ed25519Verifier) Public() string { - return string(e.PublicKey) -} - -func (e *ed25519Verifier) Verify(msg, sig []byte) error { - if !ed25519.Verify([]byte(e.PublicKey), msg, sig) { - return errors.New("tuf: ed25519 signature verification failed") - } - return nil -} - -func (e *ed25519Verifier) MarshalPublicKey() *data.PublicKey { - return e.key -} - -func (e *ed25519Verifier) UnmarshalPublicKey(key *data.PublicKey) error { - e.key = key - - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(key.Value), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(e); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the public key is truncated or too large: %w", err) - } - return err - } - if n := len(e.PublicKey); n != ed25519.PublicKeySize { - return fmt.Errorf("tuf: unexpected public key length for ed25519 key, expected %d, got %d", ed25519.PublicKeySize, n) - } - return nil -} - -type Ed25519PrivateKeyValue struct { - Public data.HexBytes `json:"public"` - Private data.HexBytes `json:"private"` -} - -type ed25519Signer struct { - ed25519.PrivateKey -} - -func GenerateEd25519Key() (*ed25519Signer, error) { - _, private, err := ed25519.GenerateKey(rand.Reader) - if err != nil { - return nil, err - } - if err != nil { - return nil, err - } - return &ed25519Signer{ - PrivateKey: ed25519.PrivateKey(data.HexBytes(private)), - }, nil -} - -func NewEd25519SignerFromKey(keyValue Ed25519PrivateKeyValue) *ed25519Signer { - return &ed25519Signer{ - PrivateKey: ed25519.PrivateKey(data.HexBytes(keyValue.Private)), - } -} - -func (e *ed25519Signer) SignMessage(message []byte) ([]byte, error) { - return e.Sign(rand.Reader, message, crypto.Hash(0)) -} - -func (e *ed25519Signer) MarshalPrivateKey() (*data.PrivateKey, error) { - valueBytes, err := json.Marshal(Ed25519PrivateKeyValue{ - Public: data.HexBytes([]byte(e.PrivateKey.Public().(ed25519.PublicKey))), - Private: data.HexBytes(e.PrivateKey), - }) - if err != nil { - return nil, err - } - return &data.PrivateKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: valueBytes, - }, nil -} - -func (e *ed25519Signer) UnmarshalPrivateKey(key *data.PrivateKey) error { - keyValue := &Ed25519PrivateKeyValue{} - - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(key.Value), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(keyValue); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the private key is truncated or too large: %w", err) - } - } - - // Check private key length - if n := len(keyValue.Private); n != ed25519.PrivateKeySize { - return fmt.Errorf("tuf: invalid ed25519 private key length, expected %d, got %d", ed25519.PrivateKeySize, n) - } - - // Generate public key from private key - pub, _, err := ed25519.GenerateKey(bytes.NewReader(keyValue.Private)) - if err != nil { - return fmt.Errorf("tuf: unable to derive public key from private key: %w", err) - } - - // Compare keys - if subtle.ConstantTimeCompare(keyValue.Public, pub) != 1 { - return errors.New("tuf: public and private keys don't match") - } - - // Prepare signer - *e = ed25519Signer{ - PrivateKey: ed25519.PrivateKey(data.HexBytes(keyValue.Private)), - } - return nil -} - -func (e *ed25519Signer) PublicData() *data.PublicKey { - keyValBytes, _ := json.Marshal(ed25519Verifier{PublicKey: []byte(e.PrivateKey.Public().(ed25519.PublicKey))}) - return &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } -} diff --git a/pkg/keys/ed25519_test.go b/pkg/keys/ed25519_test.go deleted file mode 100644 index a17cc147..00000000 --- a/pkg/keys/ed25519_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package keys - -import ( - "crypto/ed25519" - "crypto/rand" - "encoding/hex" - "encoding/json" - "errors" - "io" - "strings" - - fuzz "github.com/google/gofuzz" - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -type Ed25519Suite struct{} - -var _ = Suite(&Ed25519Suite{}) - -func (Ed25519Suite) TestUnmarshalEd25519(c *C) { - pub, _, err := ed25519.GenerateKey(strings.NewReader("00001-deterministic-buffer-for-key-generation")) - c.Assert(err, IsNil) - - publicKey, err := json.Marshal(map[string]string{ - "public": hex.EncodeToString(pub), - }) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: publicKey, - } - verifier := NewEd25519Verifier() - c.Assert(verifier.UnmarshalPublicKey(badKey), IsNil) -} - -func (Ed25519Suite) TestUnmarshalEd25519_Invalid(c *C) { - badKeyValue, err := json.Marshal(true) - c.Assert(err, IsNil) - badKey := &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: badKeyValue, - } - verifier := NewEd25519Verifier() - c.Assert(verifier.UnmarshalPublicKey(badKey), ErrorMatches, "json: cannot unmarshal.*") -} - -func (Ed25519Suite) TestUnmarshalEd25519_FastFuzz(c *C) { - verifier := NewEd25519Verifier() - for i := 0; i < 50; i++ { - // Ensure no basic panic - - f := fuzz.New() - var publicData data.PublicKey - f.Fuzz(&publicData) - - verifier.UnmarshalPublicKey(&publicData) - } -} - -func (Ed25519Suite) TestUnmarshalEd25519_TooLongContent(c *C) { - randomSeed := make([]byte, MaxJSONKeySize) - _, err := io.ReadFull(rand.Reader, randomSeed) - c.Assert(err, IsNil) - - tooLongPayload, err := json.Marshal( - &ed25519Verifier{ - PublicKey: data.HexBytes(hex.EncodeToString(randomSeed)), - }, - ) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: tooLongPayload, - } - verifier := NewEd25519Verifier() - err = verifier.UnmarshalPublicKey(badKey) - c.Assert(errors.Is(err, io.ErrUnexpectedEOF), Equals, true) -} - -func (Ed25519Suite) TestSignVerify(c *C) { - signer, err := GenerateEd25519Key() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify(msg, sig), IsNil) -} diff --git a/pkg/keys/keys.go b/pkg/keys/keys.go deleted file mode 100644 index dc5f3ea2..00000000 --- a/pkg/keys/keys.go +++ /dev/null @@ -1,82 +0,0 @@ -package keys - -import ( - "errors" - "fmt" - "sync" - - "github.com/theupdateframework/go-tuf/data" -) - -// MaxJSONKeySize defines the maximum length of a JSON payload. -const MaxJSONKeySize = 512 * 1024 // 512Kb - -// SignerMap stores mapping between key type strings and signer constructors. -var SignerMap sync.Map - -// Verifier stores mapping between key type strings and verifier constructors. -var VerifierMap sync.Map - -var ( - ErrInvalid = errors.New("tuf: signature verification failed") - ErrInvalidKey = errors.New("invalid key") -) - -// A Verifier verifies public key signatures. -type Verifier interface { - // UnmarshalPublicKey takes key data to a working verifier implementation for the key type. - // This performs any validation over the data.PublicKey to ensure that the verifier is usable - // to verify signatures. - UnmarshalPublicKey(key *data.PublicKey) error - - // MarshalPublicKey returns the data.PublicKey object associated with the verifier. - MarshalPublicKey() *data.PublicKey - - // This is the public string used as a unique identifier for the verifier instance. - Public() string - - // Verify takes a message and signature, all as byte slices, - // and determines whether the signature is valid for the given - // key and message. - Verify(msg, sig []byte) error -} - -type Signer interface { - // MarshalPrivateKey returns the private key data. - MarshalPrivateKey() (*data.PrivateKey, error) - - // UnmarshalPrivateKey takes private key data to a working Signer implementation for the key type. - UnmarshalPrivateKey(key *data.PrivateKey) error - - // Returns the public data.PublicKey from the private key - PublicData() *data.PublicKey - - // Sign returns the signature of the message. - // The signer is expected to do its own hashing, so the full message will be - // provided as the message to Sign with a zero opts.HashFunc(). - SignMessage(message []byte) ([]byte, error) -} - -func GetVerifier(key *data.PublicKey) (Verifier, error) { - st, ok := VerifierMap.Load(key.Type) - if !ok { - return nil, ErrInvalidKey - } - s := st.(func() Verifier)() - if err := s.UnmarshalPublicKey(key); err != nil { - return nil, fmt.Errorf("tuf: error unmarshalling key: %w", err) - } - return s, nil -} - -func GetSigner(key *data.PrivateKey) (Signer, error) { - st, ok := SignerMap.Load(key.Type) - if !ok { - return nil, ErrInvalidKey - } - s := st.(func() Signer)() - if err := s.UnmarshalPrivateKey(key); err != nil { - return nil, fmt.Errorf("tuf: error unmarshalling key: %w", err) - } - return s, nil -} diff --git a/pkg/keys/keys_test.go b/pkg/keys/keys_test.go deleted file mode 100644 index c1a7d018..00000000 --- a/pkg/keys/keys_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package keys - -import ( - "testing" - - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type KeysSuite struct{} - -var _ = Suite(&KeysSuite{}) - -func (KeysSuite) TestSignerKeyIDs(c *C) { - _, err := GenerateEd25519Key() - c.Assert(err, IsNil) - - // If we have a TUF-0.9 key, we won't have a scheme. - signer, err := GenerateEd25519Key() - c.Assert(err, IsNil) - privKey, err := signer.MarshalPrivateKey() - c.Assert(err, IsNil) - privKey.Scheme = "" - err = signer.UnmarshalPrivateKey(privKey) - c.Assert(err, IsNil) - - // Make sure we preserve ids if we don't have any - // keyid_hash_algorithms. - signer, err = GenerateEd25519Key() - c.Assert(err, IsNil) - privKey, err = signer.MarshalPrivateKey() - c.Assert(err, IsNil) - privKey.Algorithms = []data.HashAlgorithm{} - err = signer.UnmarshalPrivateKey(privKey) - c.Assert(err, IsNil) -} diff --git a/pkg/keys/pkix.go b/pkg/keys/pkix.go deleted file mode 100644 index e58d4c9f..00000000 --- a/pkg/keys/pkix.go +++ /dev/null @@ -1,56 +0,0 @@ -package keys - -import ( - "bytes" - "crypto" - "crypto/x509" - "encoding/json" - "encoding/pem" - "errors" - "fmt" - "io" -) - -type PKIXPublicKey struct { - crypto.PublicKey -} - -func (p *PKIXPublicKey) MarshalJSON() ([]byte, error) { - bytes, err := x509.MarshalPKIXPublicKey(p.PublicKey) - if err != nil { - return nil, err - } - pemBytes := pem.EncodeToMemory(&pem.Block{ - Type: "PUBLIC KEY", - Bytes: bytes, - }) - return json.Marshal(string(pemBytes)) -} - -func (p *PKIXPublicKey) UnmarshalJSON(b []byte) error { - var pemValue string - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(b), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(&pemValue); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the public key is truncated or too large: %w", err) - } - return err - } - - block, _ := pem.Decode([]byte(pemValue)) - if block == nil { - return errors.New("invalid PEM value") - } - if block.Type != "PUBLIC KEY" { - return fmt.Errorf("invalid block type: %s", block.Type) - } - pub, err := x509.ParsePKIXPublicKey(block.Bytes) - if err != nil { - return err - } - p.PublicKey = pub - return nil -} diff --git a/pkg/keys/pkix_test.go b/pkg/keys/pkix_test.go deleted file mode 100644 index 4debddeb..00000000 --- a/pkg/keys/pkix_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package keys - -import ( - "crypto/ecdsa" - "crypto/rand" - "crypto/x509" - "encoding/json" - "encoding/pem" - "errors" - "io" - - . "gopkg.in/check.v1" -) - -const ecdsaKey = `-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEftgasQA68yvumeXZmcOTSIHKfbmx -WT1oYuRF0Un3tKxnzip6xAYwlz0Dt96DUh+0P7BruHH2O6s4MiRR9/TuNw== ------END PUBLIC KEY----- -` - -type PKIXSuite struct{} - -var _ = Suite(&PKIXSuite{}) - -func (PKIXSuite) TestMarshalJSON(c *C) { - block, _ := pem.Decode([]byte(ecdsaKey)) - key, err := x509.ParsePKIXPublicKey(block.Bytes) - c.Assert(err, IsNil) - k := PKIXPublicKey{PublicKey: key} - buf, err := json.Marshal(&k) - c.Assert(err, IsNil) - var val string - err = json.Unmarshal(buf, &val) - c.Assert(err, IsNil) - c.Assert(val, Equals, ecdsaKey) -} - -func (PKIXSuite) TestUnmarshalJSON(c *C) { - buf, err := json.Marshal(ecdsaKey) - c.Assert(err, IsNil) - var k PKIXPublicKey - err = json.Unmarshal(buf, &k) - c.Assert(err, IsNil) - c.Assert(k.PublicKey, FitsTypeOf, (*ecdsa.PublicKey)(nil)) -} - -func (PKIXSuite) TestUnmarshalPKIX_TooLongContent(c *C) { - randomSeed := make([]byte, MaxJSONKeySize) - _, err := io.ReadFull(rand.Reader, randomSeed) - c.Assert(err, IsNil) - - pemBytes := pem.EncodeToMemory(&pem.Block{ - Type: "PUBLIC KEY", - Bytes: randomSeed, - }) - tooLongPayload, err := json.Marshal(string(pemBytes)) - c.Assert(err, IsNil) - - var k PKIXPublicKey - err = json.Unmarshal(tooLongPayload, &k) - c.Assert(errors.Is(err, io.ErrUnexpectedEOF), Equals, true) -} diff --git a/pkg/keys/rsa.go b/pkg/keys/rsa.go deleted file mode 100644 index 07a4cd6b..00000000 --- a/pkg/keys/rsa.go +++ /dev/null @@ -1,162 +0,0 @@ -package keys - -import ( - "bytes" - "crypto" - "crypto/rand" - "crypto/rsa" - "crypto/sha256" - "crypto/x509" - "encoding/json" - "encoding/pem" - "errors" - "fmt" - "io" - - "github.com/theupdateframework/go-tuf/data" -) - -func init() { - VerifierMap.Store(data.KeyTypeRSASSA_PSS_SHA256, NewRsaVerifier) - SignerMap.Store(data.KeyTypeRSASSA_PSS_SHA256, newRsaSigner) -} - -func NewRsaVerifier() Verifier { - return &rsaVerifier{} -} - -func newRsaSigner() Signer { - return &rsaSigner{} -} - -type rsaVerifier struct { - PublicKey *PKIXPublicKey `json:"public"` - rsaKey *rsa.PublicKey - key *data.PublicKey -} - -func (p *rsaVerifier) Public() string { - // This is already verified to succeed when unmarshalling a public key. - r, err := x509.MarshalPKIXPublicKey(p.rsaKey) - if err != nil { - // TODO: Gracefully handle these errors. - // See https://github.com/theupdateframework/go-tuf/issues/363 - panic(err) - } - return string(r) -} - -func (p *rsaVerifier) Verify(msg, sigBytes []byte) error { - hash := sha256.Sum256(msg) - - return rsa.VerifyPSS(p.rsaKey, crypto.SHA256, hash[:], sigBytes, &rsa.PSSOptions{}) -} - -func (p *rsaVerifier) MarshalPublicKey() *data.PublicKey { - return p.key -} - -func (p *rsaVerifier) UnmarshalPublicKey(key *data.PublicKey) error { - // Prepare decoder limited to 512Kb - dec := json.NewDecoder(io.LimitReader(bytes.NewReader(key.Value), MaxJSONKeySize)) - - // Unmarshal key value - if err := dec.Decode(p); err != nil { - if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { - return fmt.Errorf("tuf: the public key is truncated or too large: %w", err) - } - return err - } - - rsaKey, ok := p.PublicKey.PublicKey.(*rsa.PublicKey) - if !ok { - return fmt.Errorf("invalid public key") - } - - if _, err := x509.MarshalPKIXPublicKey(rsaKey); err != nil { - return fmt.Errorf("marshalling to PKIX key: invalid public key") - } - - p.rsaKey = rsaKey - p.key = key - return nil -} - -type rsaSigner struct { - *rsa.PrivateKey -} - -type rsaPrivateKeyValue struct { - Private string `json:"private"` - Public *PKIXPublicKey `json:"public"` -} - -func (s *rsaSigner) PublicData() *data.PublicKey { - keyValBytes, _ := json.Marshal(rsaVerifier{PublicKey: &PKIXPublicKey{PublicKey: s.Public()}}) - return &data.PublicKey{ - Type: data.KeyTypeRSASSA_PSS_SHA256, - Scheme: data.KeySchemeRSASSA_PSS_SHA256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } -} - -func (s *rsaSigner) SignMessage(message []byte) ([]byte, error) { - hash := sha256.Sum256(message) - return rsa.SignPSS(rand.Reader, s.PrivateKey, crypto.SHA256, hash[:], &rsa.PSSOptions{}) -} - -func (s *rsaSigner) ContainsID(id string) bool { - return s.PublicData().ContainsID(id) -} - -func (s *rsaSigner) MarshalPrivateKey() (*data.PrivateKey, error) { - priv := x509.MarshalPKCS1PrivateKey(s.PrivateKey) - pemKey := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: priv}) - val, err := json.Marshal(rsaPrivateKeyValue{ - Private: string(pemKey), - Public: &PKIXPublicKey{PublicKey: s.Public()}, - }) - if err != nil { - return nil, err - } - return &data.PrivateKey{ - Type: data.KeyTypeRSASSA_PSS_SHA256, - Scheme: data.KeySchemeRSASSA_PSS_SHA256, - Algorithms: data.HashAlgorithms, - Value: val, - }, nil -} - -func (s *rsaSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { - val := rsaPrivateKeyValue{} - if err := json.Unmarshal(key.Value, &val); err != nil { - return err - } - block, _ := pem.Decode([]byte(val.Private)) - if block == nil { - return errors.New("invalid PEM value") - } - if block.Type != "RSA PRIVATE KEY" { - return fmt.Errorf("invalid block type: %s", block.Type) - } - k, err := x509.ParsePKCS1PrivateKey(block.Bytes) - if err != nil { - return err - } - if _, err := json.Marshal(rsaVerifier{ - PublicKey: &PKIXPublicKey{PublicKey: k.Public()}}); err != nil { - return fmt.Errorf("invalid public key: %s", err) - } - - s.PrivateKey = k - return nil -} - -func GenerateRsaKey() (*rsaSigner, error) { - privkey, err := rsa.GenerateKey(rand.Reader, 2048) - if err != nil { - return nil, err - } - return &rsaSigner{privkey}, nil -} diff --git a/pkg/keys/rsa_test.go b/pkg/keys/rsa_test.go deleted file mode 100644 index e5406c1a..00000000 --- a/pkg/keys/rsa_test.go +++ /dev/null @@ -1,125 +0,0 @@ -package keys - -import ( - "crypto/rand" - "encoding/hex" - "encoding/json" - "errors" - "io" - - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -type RsaSuite struct{} - -var _ = Suite(&RsaSuite{}) - -func (RsaSuite) TestSignVerify(c *C) { - signer, err := GenerateRsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify(msg, sig), IsNil) -} - -func (RsaSuite) TestRSAVerifyMismatchMessage(c *C) { - signer, err := GenerateRsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify([]byte("notfoo"), sig), ErrorMatches, "crypto/rsa: verification error") -} - -func (RsaSuite) TestRSAVerifyMismatchPubKey(c *C) { - signer, err := GenerateRsaKey() - c.Assert(err, IsNil) - msg := []byte("foo") - sig, err := signer.SignMessage(msg) - c.Assert(err, IsNil) - - signerNew, err := GenerateRsaKey() - c.Assert(err, IsNil) - - pubKey, err := GetVerifier(signerNew.PublicData()) - c.Assert(err, IsNil) - c.Assert(pubKey.Verify([]byte("notfoo"), sig), ErrorMatches, "crypto/rsa: verification error") -} - -func (RsaSuite) TestMarshalUnmarshalPublicKey(c *C) { - signer, err := GenerateRsaKey() - c.Assert(err, IsNil) - publicData := signer.PublicData() - pubKey, err := GetVerifier(publicData) - c.Assert(err, IsNil) - c.Assert(pubKey.MarshalPublicKey(), DeepEquals, publicData) -} - -func (RsaSuite) TestMarshalUnmarshalPrivateKey(c *C) { - signer, err := GenerateRsaKey() - c.Assert(err, IsNil) - privateData, err := signer.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(privateData.Type, Equals, data.KeyTypeRSASSA_PSS_SHA256) - c.Assert(privateData.Scheme, Equals, data.KeySchemeRSASSA_PSS_SHA256) - c.Assert(privateData.Algorithms, DeepEquals, data.HashAlgorithms) - s, err := GetSigner(privateData) - c.Assert(err, IsNil) - c.Assert(s, DeepEquals, signer) -} - -func (ECDSASuite) TestUnmarshalRSA_Invalid(c *C) { - badKeyValue, err := json.Marshal(true) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: badKeyValue, - } - verifier := NewEcdsaVerifier() - c.Assert(verifier.UnmarshalPublicKey(badKey), ErrorMatches, "json: cannot unmarshal.*") -} - -func (ECDSASuite) TestUnmarshalRSAPublicKey(c *C) { - priv, err := GenerateRsaKey() - c.Assert(err, IsNil) - - signer := &rsaSigner{priv.PrivateKey} - goodKey := signer.PublicData() - - verifier := NewRsaVerifier() - c.Assert(verifier.UnmarshalPublicKey(goodKey), IsNil) -} - -func (ECDSASuite) TestUnmarshalRSA_TooLongContent(c *C) { - randomSeed := make([]byte, MaxJSONKeySize) - _, err := io.ReadFull(rand.Reader, randomSeed) - c.Assert(err, IsNil) - - tooLongPayload, err := json.Marshal( - &ed25519Verifier{ - PublicKey: data.HexBytes(hex.EncodeToString(randomSeed)), - }, - ) - c.Assert(err, IsNil) - - badKey := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: tooLongPayload, - } - verifier := NewRsaVerifier() - err = verifier.UnmarshalPublicKey(badKey) - c.Assert(errors.Is(err, io.ErrUnexpectedEOF), Equals, true) -} diff --git a/pkg/targets/delegation.go b/pkg/targets/delegation.go deleted file mode 100644 index dce61710..00000000 --- a/pkg/targets/delegation.go +++ /dev/null @@ -1,102 +0,0 @@ -package targets - -import ( - "errors" - - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/sets" - "github.com/theupdateframework/go-tuf/verify" -) - -type Delegation struct { - Delegator string - Delegatee data.DelegatedRole - DB *verify.DB -} - -type delegationsIterator struct { - stack []Delegation - target string - visitedRoles map[string]struct{} - parents map[string]string -} - -var ErrTopLevelTargetsRoleMissing = errors.New("tuf: top level targets role missing from top level keys DB") - -// NewDelegationsIterator initialises an iterator with a first step -// on top level targets. -func NewDelegationsIterator(target string, topLevelKeysDB *verify.DB) (*delegationsIterator, error) { - targetsRole := topLevelKeysDB.GetRole("targets") - if targetsRole == nil { - return nil, ErrTopLevelTargetsRoleMissing - } - - i := &delegationsIterator{ - target: target, - stack: []Delegation{ - { - Delegatee: data.DelegatedRole{ - Name: "targets", - KeyIDs: sets.StringSetToSlice(targetsRole.KeyIDs), - Threshold: targetsRole.Threshold, - }, - DB: topLevelKeysDB, - }, - }, - visitedRoles: make(map[string]struct{}), - parents: make(map[string]string), - } - return i, nil -} - -func (d *delegationsIterator) Next() (value Delegation, ok bool) { - if len(d.stack) == 0 { - return Delegation{}, false - } - delegation := d.stack[len(d.stack)-1] - d.stack = d.stack[:len(d.stack)-1] - - // 5.6.7.1: If this role has been visited before, then skip this role (so - // that cycles in the delegation graph are avoided). - roleName := delegation.Delegatee.Name - if _, ok := d.visitedRoles[roleName]; ok { - return d.Next() - } - d.visitedRoles[roleName] = struct{}{} - - // 5.6.7.2 trim delegations to visit, only the current role and its delegations - // will be considered - // https://github.com/theupdateframework/specification/issues/168 - if delegation.Delegatee.Terminating { - // Empty the stack. - d.stack = d.stack[0:0] - } - return delegation, true -} - -func (d *delegationsIterator) Add(roles []data.DelegatedRole, delegator string, db *verify.DB) error { - for i := len(roles) - 1; i >= 0; i-- { - // Push the roles onto the stack in reverse so we get an preorder traversal - // of the delegations graph. - r := roles[i] - matchesPath, err := r.MatchesPath(d.target) - if err != nil { - return err - } - if matchesPath { - delegation := Delegation{ - Delegator: delegator, - Delegatee: r, - DB: db, - } - d.stack = append(d.stack, delegation) - d.parents[r.Name] = delegator - } - } - - return nil -} - -func (d *delegationsIterator) Parent(role string) string { - return d.parents[role] -} diff --git a/pkg/targets/delegation_test.go b/pkg/targets/delegation_test.go deleted file mode 100644 index 2e0c42b6..00000000 --- a/pkg/targets/delegation_test.go +++ /dev/null @@ -1,252 +0,0 @@ -package targets - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/verify" -) - -var ( - defaultPathPatterns = []string{"tmp", "*"} - noMatchPathPatterns = []string{"vars", "null"} -) - -func TestDelegationsIterator(t *testing.T) { - topTargetsPubKey := &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: []byte(`{"public":"aaaaec567e5901ba3976c34f7cd5169704292439bf71e6aa19c64b96706f95ef"}`), - } - delTargetsPubKey := &data.PublicKey{ - Type: data.KeyTypeEd25519, - Scheme: data.KeySchemeEd25519, - Algorithms: data.HashAlgorithms, - Value: []byte(`{"public":"bbbbec567e5901ba3976c34f7cd5169704292439bf71e6aa19c64b96706f95ef"}`), - } - - defaultKeyIDs := delTargetsPubKey.IDs() - var iteratorTests = []struct { - testName string - roles map[string][]data.DelegatedRole - file string - resultOrder []string - err error - }{ - { - testName: "no delegation", - roles: map[string][]data.DelegatedRole{ - "targets": {}, - }, - file: "test.txt", - resultOrder: []string{"targets"}, - }, - { - testName: "no termination", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "e", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "c": { - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "e": { - {Name: "f", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "g", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "g": { - {Name: "h", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "i", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "j", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "b", "c", "d", "e", "f", "g", "h", "i", "j"}, - }, - { - testName: "terminated in b", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs, Terminating: true}, - {Name: "e", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "b", "c", "d"}, - }, - { - testName: "path does not match b", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", Paths: noMatchPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "e", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "e"}, - }, - { - testName: "path does not match b - path prefixes", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", PathHashPrefixes: []string{"33472a4909"}, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "c", PathHashPrefixes: []string{"34c85d1ee84f61f10d7dc633"}, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "c": { - - {Name: "d", PathHashPrefixes: []string{"8baf"}, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "e", PathHashPrefixes: []string{"34c85d1ee84f61f10d7dc633472a49096ed87f8f764bd597831eac371f40ac39"}, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "/e/f/g.txt", - resultOrder: []string{"targets", "c", "e"}, - }, - { - testName: "err paths and pathHashPrefixes are set", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", Paths: defaultPathPatterns, PathHashPrefixes: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": {}, - }, - file: "", - resultOrder: []string{"targets"}, - err: data.ErrPathsAndPathHashesSet, - }, - { - testName: "cycle avoided 1", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "a": { - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "e", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "a", "b", "d", "e"}, - }, - { - testName: "cycle avoided 2", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "a": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "c": { - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "a", "b", "c"}, - }, - { - testName: "diamond delegation", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "b", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - {Name: "c", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "b": { - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "c": { - {Name: "d", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "b", "d", "c"}, - }, - { - testName: "simple cycle", - roles: map[string][]data.DelegatedRole{ - "targets": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - "a": { - {Name: "a", Paths: defaultPathPatterns, Threshold: 1, KeyIDs: defaultKeyIDs}, - }, - }, - file: "", - resultOrder: []string{"targets", "a"}, - }, - } - - for _, tt := range iteratorTests { - t.Run(tt.testName, func(t *testing.T) { - topLevelDB := verify.NewDB() - topLevelDB.AddKey(topTargetsPubKey.IDs()[0], topTargetsPubKey) - topLevelDB.AddRole("targets", &data.Role{ - KeyIDs: topTargetsPubKey.IDs(), - Threshold: 1, - }) - - d, err := NewDelegationsIterator(tt.file, topLevelDB) - assert.NoError(t, err) - - var iterationOrder []string - for { - r, ok := d.Next() - if !ok { - break - } - - // A delegation should have associated keys. Testing the exact keys - // isn't useful in this module since the keys are supplied by the - // caller in the arguments to Add(). - assert.Greater(t, len(r.Delegatee.KeyIDs), 0) - - iterationOrder = append(iterationOrder, r.Delegatee.Name) - delegations, ok := tt.roles[r.Delegatee.Name] - if !ok { - continue - } - - db, err := verify.NewDBFromDelegations(&data.Delegations{ - Roles: delegations, - }) - assert.NoError(t, err) - - err = d.Add(delegations, r.Delegatee.Name, db) - assert.Equal(t, tt.err, err) - } - assert.Equal(t, tt.resultOrder, iterationOrder) - }) - } -} - -func TestNewDelegationsIteratorError(t *testing.T) { - // Empty DB. It is supposed to have at least the top-level targets role and - // keys. - tldb := verify.NewDB() - - _, err := NewDelegationsIterator("targets", tldb) - assert.ErrorIs(t, err, ErrTopLevelTargetsRoleMissing) -} diff --git a/pkg/targets/hash_bins.go b/pkg/targets/hash_bins.go deleted file mode 100644 index 95f4405d..00000000 --- a/pkg/targets/hash_bins.go +++ /dev/null @@ -1,113 +0,0 @@ -package targets - -import ( - "fmt" - "strconv" - "strings" -) - -const MinDelegationHashPrefixBitLen = 1 -const MaxDelegationHashPrefixBitLen = 32 - -// hexEncode formats x as a hex string. The hex string is left padded with -// zeros to padWidth, if necessary. -func hexEncode(x uint64, padWidth int) string { - // Benchmarked to be more than 10x faster than padding with Sprintf. - s := strconv.FormatUint(x, 16) - if len(s) >= padWidth { - return s - } - return strings.Repeat("0", padWidth-len(s)) + s -} - -const bitsPerHexDigit = 4 - -// numHexDigits returns the number of hex digits required to encode the given -// number of bits. -func numHexDigits(numBits int) int { - // ceil(numBits / bitsPerHexDigit) - return ((numBits - 1) / bitsPerHexDigit) + 1 -} - -// HashBins represents an ordered list of hash bin target roles, which together -// partition the space of target path hashes equal-sized buckets based on path -// has prefix. -type HashBins struct { - rolePrefix string - bitLen int - hexDigitLen int - - numBins uint64 - numPrefixesPerBin uint64 -} - -// NewHashBins creates a HashBins partitioning with 2^bitLen buckets. -func NewHashBins(rolePrefix string, bitLen int) (*HashBins, error) { - if bitLen < MinDelegationHashPrefixBitLen || bitLen > MaxDelegationHashPrefixBitLen { - return nil, fmt.Errorf("bitLen is out of bounds, should be between %v and %v inclusive", MinDelegationHashPrefixBitLen, MaxDelegationHashPrefixBitLen) - } - - hexDigitLen := numHexDigits(bitLen) - numBins := uint64(1) << bitLen - - numPrefixesTotal := uint64(1) << (bitsPerHexDigit * hexDigitLen) - numPrefixesPerBin := numPrefixesTotal / numBins - - return &HashBins{ - rolePrefix: rolePrefix, - bitLen: bitLen, - hexDigitLen: hexDigitLen, - numBins: numBins, - numPrefixesPerBin: numPrefixesPerBin, - }, nil -} - -// NumBins returns the number of hash bin partitions. -func (hb *HashBins) NumBins() uint64 { - return hb.numBins -} - -// GetBin returns the HashBin at index i, or nil if i is out of bounds. -func (hb *HashBins) GetBin(i uint64) *HashBin { - if i >= hb.numBins { - return nil - } - - return &HashBin{ - rolePrefix: hb.rolePrefix, - hexDigitLen: hb.hexDigitLen, - first: i * hb.numPrefixesPerBin, - last: ((i + 1) * hb.numPrefixesPerBin) - 1, - } -} - -// HashBin represents a hex prefix range. First should be less than Last. -type HashBin struct { - rolePrefix string - hexDigitLen int - first uint64 - last uint64 -} - -// RoleName returns the name of the role that signs for the HashBin. -func (b *HashBin) RoleName() string { - if b.first == b.last { - return b.rolePrefix + hexEncode(b.first, b.hexDigitLen) - } - - return b.rolePrefix + hexEncode(b.first, b.hexDigitLen) + "-" + hexEncode(b.last, b.hexDigitLen) -} - -// HashPrefixes returns a slice of all hash prefixes in the bin. -func (b *HashBin) HashPrefixes() []string { - n := int(b.last - b.first + 1) - ret := make([]string, int(n)) - - x := b.first - for i := 0; i < n; i++ { - ret[i] = hexEncode(x, b.hexDigitLen) - x++ - } - - return ret -} diff --git a/pkg/targets/hash_bins_test.go b/pkg/targets/hash_bins_test.go deleted file mode 100644 index dce2ab86..00000000 --- a/pkg/targets/hash_bins_test.go +++ /dev/null @@ -1,119 +0,0 @@ -package targets - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func BenchmarkHexEncode1(b *testing.B) { - for n := 0; n <= b.N; n++ { - for x := uint64(0); x <= 0xf; x += 1 { - hexEncode(x, 1) - } - } -} - -func BenchmarkHexEncode4(b *testing.B) { - for n := 0; n <= b.N; n++ { - for x := uint64(0); x <= 0xffff; x += 1 { - hexEncode(x, 4) - } - } -} - -func TestHashBin(t *testing.T) { - tcs := []struct { - hb *HashBin - roleName string - hashPrefixes []string - }{ - { - hb: &HashBin{ - rolePrefix: "abc_", - hexDigitLen: 1, - first: 0x0, - last: 0x7, - }, - roleName: "abc_0-7", - hashPrefixes: []string{ - "0", "1", "2", "3", "4", "5", "6", "7", - }, - }, - { - hb: &HashBin{ - rolePrefix: "abc_", - hexDigitLen: 2, - first: 0x0, - last: 0xf, - }, - roleName: "abc_00-0f", - hashPrefixes: []string{ - "00", "01", "02", "03", "04", "05", "06", "07", - "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", - }, - }, - { - hb: &HashBin{ - rolePrefix: "cba_", - hexDigitLen: 4, - first: 0xcd, - last: 0xcf, - }, - roleName: "cba_00cd-00cf", - hashPrefixes: []string{"00cd", "00ce", "00cf"}, - }, - { - hb: &HashBin{ - rolePrefix: "cba_", - hexDigitLen: 3, - first: 0xc1, - last: 0xc1, - }, - roleName: "cba_0c1", - hashPrefixes: []string{"0c1"}, - }, - } - - for i, tc := range tcs { - assert.Equalf(t, tc.roleName, tc.hb.RoleName(), "test case %v: RoleName()", i) - assert.Equalf(t, tc.hashPrefixes, tc.hb.HashPrefixes(), "test case %v: HashPrefixes()", i) - } -} - -func TestHashBins(t *testing.T) { - tcs := []struct { - bitLen int - roleNames []string - }{ - {1, []string{"0-7", "8-f"}}, - {2, []string{"0-3", "4-7", "8-b", "c-f"}}, - {3, []string{"0-1", "2-3", "4-5", "6-7", "8-9", "a-b", "c-d", "e-f"}}, - {4, []string{ - "0", "1", "2", "3", "4", "5", "6", "7", - "8", "9", "a", "b", "c", "d", "e", "f", - }}, - {5, []string{ - "00-07", "08-0f", "10-17", "18-1f", "20-27", "28-2f", "30-37", "38-3f", - "40-47", "48-4f", "50-57", "58-5f", "60-67", "68-6f", "70-77", "78-7f", - "80-87", "88-8f", "90-97", "98-9f", "a0-a7", "a8-af", "b0-b7", "b8-bf", - "c0-c7", "c8-cf", "d0-d7", "d8-df", "e0-e7", "e8-ef", "f0-f7", "f8-ff", - }}, - } - for i, tc := range tcs { - got := []string{} - hbs, err := NewHashBins("", tc.bitLen) - assert.NoError(t, err) - n := hbs.NumBins() - for i := uint64(0); i < n; i += 1 { - hb := hbs.GetBin(i) - got = append(got, hb.RoleName()) - } - assert.Equalf(t, tc.roleNames, got, "test case %v", i) - } - - _, err := NewHashBins("", 0) - assert.Error(t, err) - _, err = NewHashBins("", 33) - assert.Error(t, err) -} diff --git a/repo.go b/repo.go deleted file mode 100644 index e9382ddb..00000000 --- a/repo.go +++ /dev/null @@ -1,1738 +0,0 @@ -package tuf - -import ( - "bytes" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - "io" - "log" - "path" - "sort" - "strings" - "time" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/roles" - "github.com/theupdateframework/go-tuf/internal/sets" - "github.com/theupdateframework/go-tuf/internal/signer" - "github.com/theupdateframework/go-tuf/pkg/keys" - "github.com/theupdateframework/go-tuf/pkg/targets" - "github.com/theupdateframework/go-tuf/sign" - "github.com/theupdateframework/go-tuf/util" - "github.com/theupdateframework/go-tuf/verify" -) - -const ( - // The maximum number of delegations to visit while traversing the delegations graph. - defaultMaxDelegations = 32 -) - -// topLevelMetadata determines the order signatures are verified when committing. -var topLevelMetadata = []string{ - "root.json", - "targets.json", - "snapshot.json", - "timestamp.json", -} - -// TargetsWalkFunc is a function of a target path name and a target payload used to -// execute some function on each staged target file. For example, it may normalize path -// names and generate target file metadata with additional custom metadata. -type TargetsWalkFunc func(path string, target io.Reader) error - -type Repo struct { - local LocalStore - hashAlgorithms []string - meta map[string]json.RawMessage - prefix string - indent string - logger *log.Logger -} - -type RepoOpts func(r *Repo) - -func WithLogger(logger *log.Logger) RepoOpts { - return func(r *Repo) { - r.logger = logger - } -} - -func WithHashAlgorithms(hashAlgorithms ...string) RepoOpts { - return func(r *Repo) { - r.hashAlgorithms = hashAlgorithms - } -} - -func WithPrefix(prefix string) RepoOpts { - return func(r *Repo) { - r.prefix = prefix - } -} - -func WithIndex(indent string) RepoOpts { - return func(r *Repo) { - r.indent = indent - } -} - -func NewRepo(local LocalStore, hashAlgorithms ...string) (*Repo, error) { - return NewRepoIndent(local, "", "", hashAlgorithms...) -} - -func NewRepoIndent(local LocalStore, prefix string, indent string, - hashAlgorithms ...string) (*Repo, error) { - r := &Repo{ - local: local, - hashAlgorithms: hashAlgorithms, - prefix: prefix, - indent: indent, - logger: log.New(io.Discard, "", 0), - } - - var err error - r.meta, err = local.GetMeta() - if err != nil { - return nil, err - } - return r, nil -} - -func NewRepoWithOpts(local LocalStore, opts ...RepoOpts) (*Repo, error) { - r, err := NewRepo(local) - if err != nil { - return nil, err - } - for _, opt := range opts { - opt(r) - } - return r, nil -} - -func (r *Repo) Init(consistentSnapshot bool) error { - t, err := r.topLevelTargets() - if err != nil { - return err - } - if len(t.Targets) > 0 { - return ErrInitNotAllowed - } - root := data.NewRoot() - root.ConsistentSnapshot = consistentSnapshot - // Set root version to 1 for a new root. - root.Version = 1 - if err = r.setMeta("root.json", root); err != nil { - return err - } - - t.Version = 1 - if err = r.setMeta("targets.json", t); err != nil { - return err - } - - r.logger.Println("Repository initialized") - return nil -} - -func (r *Repo) topLevelKeysDB() (*verify.DB, error) { - db := verify.NewDB() - root, err := r.root() - if err != nil { - return nil, err - } - for id, k := range root.Keys { - if err := db.AddKey(id, k); err != nil { - return nil, err - } - } - for name, role := range root.Roles { - if err := db.AddRole(name, role); err != nil { - return nil, err - } - } - return db, nil -} - -func (r *Repo) root() (*data.Root, error) { - rootJSON, ok := r.meta["root.json"] - if !ok { - return data.NewRoot(), nil - } - s := &data.Signed{} - if err := json.Unmarshal(rootJSON, s); err != nil { - return nil, err - } - root := &data.Root{} - if err := json.Unmarshal(s.Signed, root); err != nil { - return nil, err - } - return root, nil -} - -func (r *Repo) snapshot() (*data.Snapshot, error) { - snapshotJSON, ok := r.meta["snapshot.json"] - if !ok { - return data.NewSnapshot(), nil - } - s := &data.Signed{} - if err := json.Unmarshal(snapshotJSON, s); err != nil { - return nil, err - } - snapshot := &data.Snapshot{} - if err := json.Unmarshal(s.Signed, snapshot); err != nil { - return nil, err - } - return snapshot, nil -} - -func (r *Repo) RootVersion() (int64, error) { - root, err := r.root() - if err != nil { - return -1, err - } - return root.Version, nil -} - -func (r *Repo) GetThreshold(keyRole string) (int, error) { - if roles.IsDelegatedTargetsRole(keyRole) { - // The signature threshold for a delegated targets role - // depends on the incoming delegation edge. - return -1, ErrInvalidRole{keyRole, "only thresholds for top-level roles supported"} - } - root, err := r.root() - if err != nil { - return -1, err - } - role, ok := root.Roles[keyRole] - if !ok { - return -1, ErrInvalidRole{keyRole, "role missing from root metadata"} - } - - return role.Threshold, nil -} - -func (r *Repo) SetThreshold(keyRole string, t int) error { - if roles.IsDelegatedTargetsRole(keyRole) { - // The signature threshold for a delegated targets role - // depends on the incoming delegation edge. - return ErrInvalidRole{keyRole, "only thresholds for top-level roles supported"} - } - root, err := r.root() - if err != nil { - return err - } - role, ok := root.Roles[keyRole] - if !ok { - return ErrInvalidRole{keyRole, "role missing from root metadata"} - } - if role.Threshold == t { - // Change was a no-op. - return nil - } - role.Threshold = t - if !r.local.FileIsStaged("root.json") { - root.Version++ - } - return r.setMeta("root.json", root) -} - -func (r *Repo) Targets() (data.TargetFiles, error) { - targets, err := r.topLevelTargets() - if err != nil { - return nil, err - } - return targets.Targets, nil -} - -func (r *Repo) SetTargetsVersion(v int64) error { - t, err := r.topLevelTargets() - if err != nil { - return err - } - t.Version = v - return r.setMeta("targets.json", t) -} - -func (r *Repo) TargetsVersion() (int64, error) { - t, err := r.topLevelTargets() - if err != nil { - return -1, err - } - return t.Version, nil -} - -func (r *Repo) SetTimestampVersion(v int64) error { - ts, err := r.timestamp() - if err != nil { - return err - } - ts.Version = v - return r.setMeta("timestamp.json", ts) -} - -func (r *Repo) TimestampVersion() (int64, error) { - ts, err := r.timestamp() - if err != nil { - return -1, err - } - return ts.Version, nil -} - -func (r *Repo) SetSnapshotVersion(v int64) error { - s, err := r.snapshot() - if err != nil { - return err - } - - s.Version = v - return r.setMeta("snapshot.json", s) -} - -func (r *Repo) SnapshotVersion() (int64, error) { - s, err := r.snapshot() - if err != nil { - return -1, err - } - return s.Version, nil -} - -func (r *Repo) topLevelTargets() (*data.Targets, error) { - return r.targets("targets") -} - -func (r *Repo) targets(metaName string) (*data.Targets, error) { - targetsJSON, ok := r.meta[metaName+".json"] - if !ok { - return data.NewTargets(), nil - } - s := &data.Signed{} - if err := json.Unmarshal(targetsJSON, s); err != nil { - return nil, fmt.Errorf("error unmarshalling for targets %q: %w", metaName, err) - } - targets := &data.Targets{} - if err := json.Unmarshal(s.Signed, targets); err != nil { - return nil, fmt.Errorf("error unmarshalling signed data for targets %q: %w", metaName, err) - } - return targets, nil -} - -func (r *Repo) timestamp() (*data.Timestamp, error) { - timestampJSON, ok := r.meta["timestamp.json"] - if !ok { - return data.NewTimestamp(), nil - } - s := &data.Signed{} - if err := json.Unmarshal(timestampJSON, s); err != nil { - return nil, err - } - timestamp := &data.Timestamp{} - if err := json.Unmarshal(s.Signed, timestamp); err != nil { - return nil, err - } - return timestamp, nil -} - -func (r *Repo) ChangePassphrase(keyRole string) error { - if p, ok := r.local.(PassphraseChanger); ok { - return p.ChangePassphrase(keyRole) - } - - return ErrChangePassphraseNotSupported -} - -func (r *Repo) GenKey(role string) ([]string, error) { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - return r.GenKeyWithExpires(role, data.DefaultExpires(role)) -} - -func (r *Repo) GenKeyWithExpires(keyRole string, expires time.Time) (keyids []string, err error) { - return r.GenKeyWithSchemeAndExpires(keyRole, expires, data.KeySchemeEd25519) -} - -func (r *Repo) GenKeyWithSchemeAndExpires(role string, expires time.Time, keyScheme data.KeyScheme) ([]string, error) { - var signer keys.Signer - var err error - switch keyScheme { - case data.KeySchemeEd25519: - signer, err = keys.GenerateEd25519Key() - case data.KeySchemeECDSA_SHA2_P256: - signer, err = keys.GenerateEcdsaKey() - case data.KeySchemeRSASSA_PSS_SHA256: - signer, err = keys.GenerateRsaKey() - default: - return nil, errors.New("unknown key type") - } - if err != nil { - return nil, err - } - - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - if err = r.AddPrivateKeyWithExpires(role, signer, expires); err != nil { - return nil, err - } - return signer.PublicData().IDs(), nil -} - -func (r *Repo) AddKeyWithSchemeAndExpires(role string, expires time.Time, keyScheme data.KeyScheme, publicValue string) ([]string, error) { - var verifier keys.Verifier - var keyType data.KeyType - switch keyScheme { - case data.KeySchemeEd25519: - verifier = keys.NewEd25519Verifier() - keyType = data.KeyTypeEd25519 - case data.KeySchemeECDSA_SHA2_P256: - verifier = keys.NewEcdsaVerifier() - keyType = data.KeyTypeECDSA_SHA2_P256 - case data.KeySchemeRSASSA_PSS_SHA256: - verifier = keys.NewRsaVerifier() - keyType = data.KeyTypeRSASSA_PSS_SHA256 - default: - return nil, errors.New("unknown key type") - } - - publicValueData, err := json.Marshal(map[string]string{ - "public": publicValue, - }) - if err != nil { - return nil, err - } - - if err := verifier.UnmarshalPublicKey(&data.PublicKey{ - Type: keyType, - Scheme: keyScheme, - Algorithms: data.HashAlgorithms, - Value: publicValueData, - }); err != nil { - return nil, err - } - - publicKey := verifier.MarshalPublicKey() - - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - if err := r.AddVerificationKeyWithExpiration(role, publicKey, expires); err != nil { - return nil, err - } - return publicKey.IDs(), nil -} - -func (r *Repo) AddPrivateKey(role string, signer keys.Signer) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - return r.AddPrivateKeyWithExpires(role, signer, data.DefaultExpires(role)) -} - -func (r *Repo) AddPrivateKeyWithExpires(keyRole string, signer keys.Signer, expires time.Time) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - if roles.IsDelegatedTargetsRole(keyRole) { - return ErrInvalidRole{keyRole, "only support adding keys for top-level roles"} - } - - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - // Must add signer before adding verification key, so - // root.json can be signed when a new root key is added. - if err := r.local.SaveSigner(keyRole, signer); err != nil { - return err - } - - if err := r.AddVerificationKeyWithExpiration(keyRole, signer.PublicData(), expires); err != nil { - return err - } - - return nil -} - -func (r *Repo) AddVerificationKey(keyRole string, pk *data.PublicKey) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - return r.AddVerificationKeyWithExpiration(keyRole, pk, data.DefaultExpires(keyRole)) -} - -func (r *Repo) AddVerificationKeyWithExpiration(keyRole string, pk *data.PublicKey, expires time.Time) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - if roles.IsDelegatedTargetsRole(keyRole) { - return ErrInvalidRole{ - Role: keyRole, - Reason: "only top-level targets roles are supported", - } - } - - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - root, err := r.root() - if err != nil { - return err - } - - role, ok := root.Roles[keyRole] - if !ok { - role = &data.Role{KeyIDs: []string{}, Threshold: 1} - root.Roles[keyRole] = role - } - changed := false - if role.AddKeyIDs(pk.IDs()) { - changed = true - } - - if root.AddKey(pk) { - changed = true - } - - if !changed { - return nil - } - - root.Expires = expires.Round(time.Second) - if !r.local.FileIsStaged("root.json") { - root.Version++ - } - - return r.setMeta("root.json", root) -} - -func validExpires(expires time.Time) bool { - return time.Until(expires) > 0 -} - -func (r *Repo) RootKeys() ([]*data.PublicKey, error) { - root, err := r.root() - if err != nil { - return nil, err - } - role, ok := root.Roles["root"] - if !ok { - return nil, nil - } - - // We might have multiple key ids that correspond to the same key, so - // make sure we only return unique keys. - seen := make(map[string]struct{}) - rootKeys := []*data.PublicKey{} - for _, id := range role.KeyIDs { - key, ok := root.Keys[id] - if !ok { - return nil, fmt.Errorf("tuf: invalid root metadata") - } - found := false - if _, ok := seen[id]; ok { - found = true - break - } - if !found { - for _, id := range key.IDs() { - seen[id] = struct{}{} - } - rootKeys = append(rootKeys, key) - } - } - return rootKeys, nil -} - -func (r *Repo) RevokeKey(role, id string) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - return r.RevokeKeyWithExpires(role, id, data.DefaultExpires("root")) -} - -func (r *Repo) RevokeKeyWithExpires(keyRole, id string, expires time.Time) error { - // Not compatible with delegated targets roles, since delegated targets keys - // are associated with a delegation (edge), not a role (node). - - if roles.IsDelegatedTargetsRole(keyRole) { - return ErrInvalidRole{keyRole, "only revocations for top-level roles supported"} - } - - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - root, err := r.root() - if err != nil { - return err - } - - key, ok := root.Keys[id] - if !ok { - return ErrKeyNotFound{keyRole, id} - } - - role, ok := root.Roles[keyRole] - if !ok { - return ErrKeyNotFound{keyRole, id} - } - - // Create a list of filtered key IDs that do not contain the revoked key IDs. - filteredKeyIDs := make([]string, 0, len(role.KeyIDs)) - - // There may be multiple keyids that correspond to this key, so - // filter all of them out. - for _, keyID := range role.KeyIDs { - if !key.ContainsID(keyID) { - filteredKeyIDs = append(filteredKeyIDs, keyID) - } - } - if len(filteredKeyIDs) == len(role.KeyIDs) { - return ErrKeyNotFound{keyRole, id} - } - role.KeyIDs = filteredKeyIDs - root.Roles[keyRole] = role - - // Only delete the key from root.Keys if the key is no longer in use by - // any other role. - key_in_use := false - for _, role := range root.Roles { - for _, keyID := range role.KeyIDs { - if key.ContainsID(keyID) { - key_in_use = true - } - } - } - if !key_in_use { - for _, keyID := range key.IDs() { - delete(root.Keys, keyID) - } - } - root.Expires = expires.Round(time.Second) - if !r.local.FileIsStaged("root.json") { - root.Version++ - } - - err = r.setMeta("root.json", root) - if err == nil { - r.logger.Println("Revoked", keyRole, "key with ID", id, "in root metadata") - } - return err -} - -// AddDelegatedRole is equivalent to AddDelegatedRoleWithExpires, but -// with a default expiration time. -func (r *Repo) AddDelegatedRole(delegator string, delegatedRole data.DelegatedRole, keys []*data.PublicKey) error { - return r.AddDelegatedRoleWithExpires(delegator, delegatedRole, keys, data.DefaultExpires("targets")) -} - -// AddDelegatedRoleWithExpires adds a delegation from the delegator to the -// role specified in the role argument. Key IDs referenced in role.KeyIDs -// should have corresponding Key entries in the keys argument. New metadata is -// written with the given expiration time. -func (r *Repo) AddDelegatedRoleWithExpires(delegator string, delegatedRole data.DelegatedRole, keys []*data.PublicKey, expires time.Time) error { - expires = expires.Round(time.Second) - - t, err := r.targets(delegator) - if err != nil { - return fmt.Errorf("error getting delegator (%q) metadata: %w", delegator, err) - } - - if t.Delegations == nil { - t.Delegations = &data.Delegations{} - t.Delegations.Keys = make(map[string]*data.PublicKey) - } - - for _, keyID := range delegatedRole.KeyIDs { - for _, key := range keys { - if key.ContainsID(keyID) { - t.Delegations.Keys[keyID] = key - break - } - } - } - - for _, r := range t.Delegations.Roles { - if r.Name == delegatedRole.Name { - return fmt.Errorf("role: %s is already delegated to by %s", delegatedRole.Name, r.Name) - } - } - t.Delegations.Roles = append(t.Delegations.Roles, delegatedRole) - t.Expires = expires - - delegatorFile := delegator + ".json" - if !r.local.FileIsStaged(delegatorFile) { - t.Version++ - } - - err = r.setMeta(delegatorFile, t) - if err != nil { - return fmt.Errorf("error setting metadata for %q: %w", delegatorFile, err) - } - - delegatee := delegatedRole.Name - dt, err := r.targets(delegatee) - if err != nil { - return fmt.Errorf("error getting delegatee (%q) metadata: %w", delegatee, err) - } - dt.Expires = expires - - delegateeFile := delegatee + ".json" - if !r.local.FileIsStaged(delegateeFile) { - dt.Version++ - } - - err = r.setMeta(delegateeFile, dt) - if err != nil { - return fmt.Errorf("error setting metadata for %q: %w", delegateeFile, err) - } - - return nil -} - -// AddDelegatedRolesForPathHashBins is equivalent to -// AddDelegatedRolesForPathHashBinsWithExpires, but with a default -// expiration time. -func (r *Repo) AddDelegatedRolesForPathHashBins(delegator string, bins *targets.HashBins, keys []*data.PublicKey, threshold int) error { - return r.AddDelegatedRolesForPathHashBinsWithExpires(delegator, bins, keys, threshold, data.DefaultExpires("targets")) -} - -// AddDelegatedRolesForPathHashBinsWithExpires adds delegations to the -// delegator role for the given hash bins configuration. New metadata is -// written with the given expiration time. -func (r *Repo) AddDelegatedRolesForPathHashBinsWithExpires(delegator string, bins *targets.HashBins, keys []*data.PublicKey, threshold int, expires time.Time) error { - keyIDs := []string{} - for _, key := range keys { - keyIDs = append(keyIDs, key.IDs()...) - } - - n := bins.NumBins() - for i := uint64(0); i < n; i += 1 { - bin := bins.GetBin(i) - name := bin.RoleName() - err := r.AddDelegatedRoleWithExpires(delegator, data.DelegatedRole{ - Name: name, - KeyIDs: sets.DeduplicateStrings(keyIDs), - PathHashPrefixes: bin.HashPrefixes(), - Threshold: threshold, - }, keys, expires) - if err != nil { - return fmt.Errorf("error adding delegation from %v to %v: %w", delegator, name, err) - } - } - - return nil -} - -// ResetTargetsDelegation is equivalent to ResetTargetsDelegationsWithExpires -// with a default expiry time. -func (r *Repo) ResetTargetsDelegations(delegator string) error { - return r.ResetTargetsDelegationsWithExpires(delegator, data.DefaultExpires("targets")) -} - -// ResetTargetsDelegationsWithExpires removes all targets delegations from the -// given delegator role. New metadata is written with the given expiration -// time. -func (r *Repo) ResetTargetsDelegationsWithExpires(delegator string, expires time.Time) error { - t, err := r.targets(delegator) - if err != nil { - return fmt.Errorf("error getting delegator (%q) metadata: %w", delegator, err) - } - - t.Delegations = nil - - t.Expires = expires.Round(time.Second) - - delegatorFile := delegator + ".json" - if !r.local.FileIsStaged(delegatorFile) { - t.Version++ - } - - err = r.setMeta(delegatorFile, t) - if err != nil { - return fmt.Errorf("error setting metadata for %q: %w", delegatorFile, err) - } - - return nil -} - -func (r *Repo) jsonMarshal(v interface{}) ([]byte, error) { - if r.prefix == "" && r.indent == "" { - return json.Marshal(v) - } - return json.MarshalIndent(v, r.prefix, r.indent) -} - -func (r *Repo) dbsForRole(role string) ([]*verify.DB, error) { - dbs := []*verify.DB{} - - if roles.IsTopLevelRole(role) { - db, err := r.topLevelKeysDB() - if err != nil { - return nil, err - } - dbs = append(dbs, db) - } else { - ddbs, err := r.delegatorDBs(role) - if err != nil { - return nil, err - } - - dbs = append(dbs, ddbs...) - } - - return dbs, nil -} - -func (r *Repo) signersForRole(role string) ([]keys.Signer, error) { - dbs, err := r.dbsForRole(role) - if err != nil { - return nil, err - } - - signers := []keys.Signer{} - for _, db := range dbs { - ss, err := r.getSignersInDB(role, db) - if err != nil { - return nil, err - } - - signers = append(signers, ss...) - } - - return signers, nil -} - -func (r *Repo) setMeta(roleFilename string, meta interface{}) error { - role := strings.TrimSuffix(roleFilename, ".json") - - signers, err := r.signersForRole(role) - if err != nil { - return err - } - - s, err := sign.Marshal(meta, signers...) - if err != nil { - return err - } - b, err := r.jsonMarshal(s) - if err != nil { - return err - } - r.meta[roleFilename] = b - return r.local.SetMeta(roleFilename, b) -} - -// CanonicalizeAndSign canonicalizes the signed portion of signed, then signs it using the key(s) associated with role. -// -// It appends the signature to signed. -// -// It returns the total number of keys used for signing, 0 (along with -// ErrNoKeys) if no keys were found, or -1 (along with an error) in error cases. -func (r *Repo) CanonicalizeAndSign(role string, signed *data.Signed) (int, error) { - keys, err := r.signersForRole(role) - if err != nil { - return -1, err - } - if len(keys) == 0 { - return 0, ErrNoKeys{role} - } - for _, k := range keys { - if err = sign.Sign(signed, k); err != nil { - return -1, err - } - } - return len(keys), nil -} - -// SignPayload canonicalizes the signed portion of payload, then signs it using the key(s) associated with role. -// -// It returns the total number of keys used for signing, 0 (along with -// ErrNoKeys) if no keys were found, or -1 (along with an error) in error cases. -// -// DEPRECATED: please use CanonicalizeAndSign instead. -func (r *Repo) SignPayload(role string, payload *data.Signed) (int, error) { - return r.CanonicalizeAndSign(role, payload) -} - -// SignRaw signs the given (pre-canonicalized) payload using the key(s) associated with role. -// -// It returns the new data.Signatures. -func (r *Repo) SignRaw(role string, payload []byte) ([]data.Signature, error) { - keys, err := r.signersForRole(role) - if err != nil { - return nil, err - } - if len(keys) == 0 { - return nil, ErrNoKeys{role} - } - - allSigs := make([]data.Signature, 0, len(keys)) - for _, k := range keys { - sigs, err := sign.MakeSignatures(payload, k) - if err != nil { - return nil, err - } - allSigs = append(allSigs, sigs...) - } - return allSigs, nil -} - -func (r *Repo) Sign(roleFilename string) error { - signed, err := r.SignedMeta(roleFilename) - if err != nil { - return err - } - - role := strings.TrimSuffix(roleFilename, ".json") - numKeys, err := r.SignPayload(role, signed) - if errors.Is(err, ErrNoKeys{role}) { - return ErrNoKeys{roleFilename} - } else if err != nil { - return err - } - - b, err := r.jsonMarshal(signed) - if err != nil { - return err - } - r.meta[roleFilename] = b - err = r.local.SetMeta(roleFilename, b) - if err == nil { - r.logger.Println("Signed", roleFilename, "with", numKeys, "key(s)") - } - return err -} - -// AddOrUpdateSignature allows users to add or update a signature generated with an external tool. -// The name must be a valid metadata file name, like root.json. -func (r *Repo) AddOrUpdateSignature(roleFilename string, signature data.Signature) error { - role := strings.TrimSuffix(roleFilename, ".json") - - // Check key ID is in valid for the role. - dbs, err := r.dbsForRole(role) - if err != nil { - return err - } - - if len(dbs) == 0 { - return ErrInvalidRole{role, "no trusted keys for role"} - } - - s, err := r.SignedMeta(roleFilename) - if err != nil { - return err - } - - keyInDB := false - validSig := false - for _, db := range dbs { - roleData := db.GetRole(role) - if roleData == nil { - return ErrInvalidRole{role, "role is not in verifier DB"} - } - if roleData.ValidKey(signature.KeyID) { - keyInDB = true - - verifier, err := db.GetVerifier(signature.KeyID) - if err != nil { - continue - } - - // Now check if this validly signed the metadata. - if err := verify.VerifySignature(s.Signed, signature.Signature, - verifier); err == nil { - validSig = true - break - } - } - } - if !keyInDB { - // This key was not delegated for the role in any delegatee. - return verify.ErrInvalidKey - } - if !validSig { - // The signature was invalid. - return verify.ErrInvalid - } - - // Add or update signature. - signatures := make([]data.Signature, 0, len(s.Signatures)+1) - for _, sig := range s.Signatures { - if sig.KeyID != signature.KeyID { - signatures = append(signatures, sig) - } - } - signatures = append(signatures, signature) - s.Signatures = signatures - - b, err := r.jsonMarshal(s) - if err != nil { - return err - } - r.meta[roleFilename] = b - - return r.local.SetMeta(roleFilename, b) -} - -// getSignersInDB returns available signing interfaces, sorted by key ID. -// -// Only keys contained in the keys db are returned (i.e. local keys which have -// been revoked are omitted), except for the root role in which case all local -// keys are returned (revoked root keys still need to sign new root metadata so -// clients can verify the new root.json and update their keys db accordingly). -func (r *Repo) getSignersInDB(roleName string, db *verify.DB) ([]keys.Signer, error) { - signers, err := r.local.GetSigners(roleName) - if err != nil { - return nil, err - } - - if roleName == "root" { - sorted := make([]keys.Signer, len(signers)) - copy(sorted, signers) - sort.Sort(signer.ByIDs(sorted)) - return sorted, nil - } - - role := db.GetRole(roleName) - if role == nil { - return nil, nil - } - if len(role.KeyIDs) == 0 { - return nil, nil - } - - signersInDB := []keys.Signer{} - for _, s := range signers { - for _, id := range s.PublicData().IDs() { - if _, ok := role.KeyIDs[id]; ok { - signersInDB = append(signersInDB, s) - } - } - } - - sort.Sort(signer.ByIDs(signersInDB)) - - return signersInDB, nil -} - -// Used to retrieve the signable portion of the metadata when using an external signing tool. -func (r *Repo) SignedMeta(roleFilename string) (*data.Signed, error) { - b, ok := r.meta[roleFilename] - if !ok { - return nil, ErrMissingMetadata{roleFilename} - } - s := &data.Signed{} - if err := json.Unmarshal(b, s); err != nil { - return nil, err - } - return s, nil -} - -// delegatorDBs returns a list of key DBs for all incoming delegations. -func (r *Repo) delegatorDBs(delegateeRole string) ([]*verify.DB, error) { - delegatorDBs := []*verify.DB{} - for metaName := range r.meta { - if roles.IsTopLevelManifest(metaName) && metaName != "targets.json" { - continue - } - roleName := strings.TrimSuffix(metaName, ".json") - - t, err := r.targets(roleName) - if err != nil { - return nil, err - } - - if t.Delegations == nil { - continue - } - - delegatesToRole := false - for _, d := range t.Delegations.Roles { - if d.Name == delegateeRole { - delegatesToRole = true - break - } - } - if !delegatesToRole { - continue - } - - db, err := verify.NewDBFromDelegations(t.Delegations) - if err != nil { - return nil, err - } - - delegatorDBs = append(delegatorDBs, db) - } - - return delegatorDBs, nil -} - -// targetDelegationForPath finds the targets metadata for the role that should -// sign the given path. The final delegation that led to the returned target -// metadata is also returned. -// -// Since there may be multiple targets roles that are able to sign a specific -// path, we must choose which roles's metadata to return. If preferredRole is -// specified (non-empty string) and eligible to sign the given path by way of -// some delegation chain, targets metadata for that role is returned. If -// preferredRole is not specified (""), we return targets metadata for the -// final role visited in the depth-first delegation traversal. -func (r *Repo) targetDelegationForPath(path string, preferredRole string) (*data.Targets, *targets.Delegation, error) { - topLevelKeysDB, err := r.topLevelKeysDB() - if err != nil { - return nil, nil, err - } - - iterator, err := targets.NewDelegationsIterator(path, topLevelKeysDB) - if err != nil { - return nil, nil, err - } - d, ok := iterator.Next() - if !ok { - return nil, nil, ErrNoDelegatedTarget{Path: path} - } - - for i := 0; i < defaultMaxDelegations; i++ { - targetsMeta, err := r.targets(d.Delegatee.Name) - if err != nil { - return nil, nil, err - } - - if preferredRole != "" && d.Delegatee.Name == preferredRole { - // The preferredRole is eligible to sign for the given path, and we've - // found its metadata. Return it. - return targetsMeta, &d, nil - } - - if targetsMeta.Delegations != nil && len(targetsMeta.Delegations.Roles) > 0 { - db, err := verify.NewDBFromDelegations(targetsMeta.Delegations) - if err != nil { - return nil, nil, err - } - - // Add delegations to the iterator that are eligible to sign for the - // given path (there may be none). - iterator.Add(targetsMeta.Delegations.Roles, d.Delegatee.Name, db) - } - - next, ok := iterator.Next() - if !ok { // No more roles to traverse. - if preferredRole == "" { - // No preferredRole was given, so return metadata for the final role in the traversal. - return targetsMeta, &d, nil - } else { - // There are no more roles to traverse, so preferredRole is either an - // invalid role, or not eligible to sign the given path. - return nil, nil, ErrNoDelegatedTarget{Path: path} - } - } - - d = next - } - - return nil, nil, ErrNoDelegatedTarget{Path: path} -} - -func (r *Repo) AddTarget(path string, custom json.RawMessage) error { - return r.AddTargets([]string{path}, custom) -} - -func (r *Repo) AddTargetToPreferredRole(path string, custom json.RawMessage, preferredRole string) error { - return r.AddTargetsToPreferredRole([]string{path}, custom, preferredRole) -} - -func (r *Repo) AddTargets(paths []string, custom json.RawMessage) error { - return r.AddTargetsToPreferredRole(paths, custom, "") -} - -func (r *Repo) AddTargetsToPreferredRole(paths []string, custom json.RawMessage, preferredRole string) error { - return r.AddTargetsWithExpiresToPreferredRole(paths, custom, data.DefaultExpires("targets"), preferredRole) -} - -func (r *Repo) AddTargetsWithDigest(digest string, digestAlg string, length int64, path string, custom json.RawMessage) error { - // TODO: Rename this to AddTargetWithDigest - // https://github.com/theupdateframework/go-tuf/issues/242 - - expires := data.DefaultExpires("targets") - path = util.NormalizeTarget(path) - - targetsMeta, delegation, err := r.targetDelegationForPath(path, "") - if err != nil { - return err - } - // This is the targets role that needs to sign the target file. - targetsRoleName := delegation.Delegatee.Name - - meta := data.TargetFileMeta{FileMeta: data.FileMeta{Length: length, Hashes: make(data.Hashes, 1)}} - meta.Hashes[digestAlg], err = hex.DecodeString(digest) - if err != nil { - return err - } - - // If custom is provided, set custom, otherwise maintain existing custom - // metadata - if len(custom) > 0 { - meta.Custom = &custom - } else if t, ok := targetsMeta.Targets[path]; ok { - meta.Custom = t.Custom - } - - // What does G2 mean? Copying and pasting this comment from elsewhere in this file. - // G2 -> we no longer desire any readers to ever observe non-prefix targets. - delete(targetsMeta.Targets, "/"+path) - targetsMeta.Targets[path] = meta - - targetsMeta.Expires = expires.Round(time.Second) - - manifestName := targetsRoleName + ".json" - if !r.local.FileIsStaged(manifestName) { - targetsMeta.Version++ - } - - err = r.setMeta(manifestName, targetsMeta) - if err != nil { - return fmt.Errorf("error setting metadata for %q: %w", manifestName, err) - } - - return nil -} - -func (r *Repo) AddTargetWithExpires(path string, custom json.RawMessage, expires time.Time) error { - return r.AddTargetsWithExpires([]string{path}, custom, expires) -} - -func (r *Repo) AddTargetsWithExpires(paths []string, custom json.RawMessage, expires time.Time) error { - return r.AddTargetsWithExpiresToPreferredRole(paths, custom, expires, "") -} - -func (r *Repo) AddTargetWithExpiresToPreferredRole(path string, custom json.RawMessage, expires time.Time, preferredRole string) error { - return r.AddTargetsWithExpiresToPreferredRole([]string{path}, custom, expires, preferredRole) -} - -// AddTargetsWithExpiresToPreferredRole signs the staged targets at `paths`. -// -// If preferredRole is not the empty string, the target is added to the given -// role's manifest if delegations allow it. If delegations do not allow the -// preferredRole to sign the given path, an error is returned. -func (r *Repo) AddTargetsWithExpiresToPreferredRole(paths []string, custom json.RawMessage, expires time.Time, preferredRole string) error { - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - normalizedPaths := make([]string, len(paths)) - for i, path := range paths { - normalizedPaths[i] = util.NormalizeTarget(path) - } - - // As we iterate through staged targets files, we accumulate changes to their - // corresponding targets metadata. - updatedTargetsMeta := map[string]*data.Targets{} - - if err := r.local.WalkStagedTargets(normalizedPaths, func(path string, target io.Reader) (err error) { - originalMeta, delegation, err := r.targetDelegationForPath(path, preferredRole) - if err != nil { - return err - } - - // This is the targets role that needs to sign the target file. - targetsRoleName := delegation.Delegatee.Name - - targetsMeta := originalMeta - if tm, ok := updatedTargetsMeta[targetsRoleName]; ok { - // Metadata in updatedTargetsMeta overrides staged/commited metadata. - targetsMeta = tm - } - - fileMeta, err := util.GenerateTargetFileMeta(target, r.hashAlgorithms...) - if err != nil { - return err - } - - // If we have custom metadata, set it, otherwise maintain - // existing metadata if present - if len(custom) > 0 { - fileMeta.Custom = &custom - } else if tf, ok := targetsMeta.Targets[path]; ok { - fileMeta.Custom = tf.Custom - } - - // G2 -> we no longer desire any readers to ever observe non-prefix targets. - delete(targetsMeta.Targets, "/"+path) - targetsMeta.Targets[path] = fileMeta - - updatedTargetsMeta[targetsRoleName] = targetsMeta - - return nil - }); err != nil { - return err - } - - if len(updatedTargetsMeta) == 0 { - // This is potentially unexpected behavior kept for backwards compatibility. - // See https://github.com/theupdateframework/go-tuf/issues/243 - t, err := r.topLevelTargets() - if err != nil { - return err - } - - updatedTargetsMeta["targets"] = t - } - - exp := expires.Round(time.Second) - for roleName, targetsMeta := range updatedTargetsMeta { - targetsMeta.Expires = exp - - manifestName := roleName + ".json" - if !r.local.FileIsStaged(manifestName) { - targetsMeta.Version++ - } - - err := r.setMeta(manifestName, targetsMeta) - if err != nil { - return fmt.Errorf("error setting metadata for %q: %w", manifestName, err) - } - } - - return nil -} - -func (r *Repo) RemoveTarget(path string) error { - return r.RemoveTargets([]string{path}) -} - -func (r *Repo) RemoveTargets(paths []string) error { - return r.RemoveTargetsWithExpires(paths, data.DefaultExpires("targets")) -} - -func (r *Repo) RemoveTargetWithExpires(path string, expires time.Time) error { - return r.RemoveTargetsWithExpires([]string{path}, expires) -} - -// If paths is empty, all targets will be removed. -func (r *Repo) RemoveTargetsWithExpires(paths []string, expires time.Time) error { - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - for metaName := range r.meta { - if metaName != "targets.json" && !roles.IsDelegatedTargetsManifest(metaName) { - continue - } - - err := r.removeTargetsWithExpiresFromMeta(metaName, paths, expires) - if err != nil { - return fmt.Errorf("could not remove %v from %v: %w", paths, metaName, err) - } - } - - return nil -} - -func (r *Repo) removeTargetsWithExpiresFromMeta(metaName string, paths []string, expires time.Time) error { - roleName := strings.TrimSuffix(metaName, ".json") - t, err := r.targets(roleName) - if err != nil { - return err - } - removed_targets := []string{} - if len(paths) == 0 { - for rt := range t.Targets { - removed_targets = append(removed_targets, rt) - } - t.Targets = make(data.TargetFiles) - } else { - removed := false - for _, path := range paths { - path = util.NormalizeTarget(path) - if _, ok := t.Targets[path]; !ok { - r.logger.Printf("[%v] The following target is not present: %v\n", metaName, path) - continue - } - removed = true - // G2 -> we no longer desire any readers to ever observe non-prefix targets. - delete(t.Targets, "/"+path) - delete(t.Targets, path) - removed_targets = append(removed_targets, path) - } - if !removed { - return nil - } - } - t.Expires = expires.Round(time.Second) - if !r.local.FileIsStaged(metaName) { - t.Version++ - } - - err = r.setMeta(metaName, t) - if err == nil { - r.logger.Printf("[%v] Removed targets:\n", metaName) - for _, v := range removed_targets { - r.logger.Println("*", v) - } - if len(t.Targets) != 0 { - r.logger.Printf("[%v] Added/staged targets:\n", metaName) - for k := range t.Targets { - r.logger.Println("*", k) - } - } else { - r.logger.Printf("[%v] There are no added/staged targets\n", metaName) - } - } - return err -} - -func (r *Repo) Snapshot() error { - return r.SnapshotWithExpires(data.DefaultExpires("snapshot")) -} - -func (r *Repo) snapshotMetadata() []string { - ret := []string{"targets.json"} - - for name := range r.meta { - if !roles.IsVersionedManifest(name) && - roles.IsDelegatedTargetsManifest(name) { - ret = append(ret, name) - } - } - - return ret -} - -func (r *Repo) SnapshotWithExpires(expires time.Time) error { - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - snapshot, err := r.snapshot() - if err != nil { - return err - } - - // Verify root metadata before verifying signatures on role metadata. - if err := r.verifySignatures("root.json"); err != nil { - return err - } - - for _, metaName := range r.snapshotMetadata() { - if err := r.verifySignatures(metaName); err != nil { - return err - } - var err error - snapshot.Meta[metaName], err = r.snapshotFileMeta(metaName) - if err != nil { - return err - } - } - snapshot.Expires = expires.Round(time.Second) - if !r.local.FileIsStaged("snapshot.json") { - snapshot.Version++ - } - err = r.setMeta("snapshot.json", snapshot) - if err == nil { - r.logger.Println("Staged snapshot.json metadata with expiration date:", snapshot.Expires) - } - return err -} - -func (r *Repo) Timestamp() error { - return r.TimestampWithExpires(data.DefaultExpires("timestamp")) -} - -func (r *Repo) TimestampWithExpires(expires time.Time) error { - if !validExpires(expires) { - return ErrInvalidExpires{expires} - } - - if err := r.verifySignatures("snapshot.json"); err != nil { - return err - } - timestamp, err := r.timestamp() - if err != nil { - return err - } - timestamp.Meta["snapshot.json"], err = r.timestampFileMeta("snapshot.json") - if err != nil { - return err - } - timestamp.Expires = expires.Round(time.Second) - if !r.local.FileIsStaged("timestamp.json") { - timestamp.Version++ - } - - err = r.setMeta("timestamp.json", timestamp) - if err == nil { - r.logger.Println("Staged timestamp.json metadata with expiration date:", timestamp.Expires) - } - return err -} - -func (r *Repo) fileVersions() (map[string]int64, error) { - versions := make(map[string]int64) - - for fileName := range r.meta { - if roles.IsVersionedManifest(fileName) { - continue - } - - roleName := strings.TrimSuffix(fileName, ".json") - - var version int64 - - switch roleName { - case "root": - root, err := r.root() - if err != nil { - return nil, err - } - version = root.Version - case "snapshot": - snapshot, err := r.snapshot() - if err != nil { - return nil, err - } - version = snapshot.Version - case "timestamp": - continue - default: - // Targets or delegated targets manifest. - targets, err := r.targets(roleName) - if err != nil { - return nil, err - } - - version = targets.Version - } - - versions[fileName] = version - } - - return versions, nil -} - -func (r *Repo) fileHashes() (map[string]data.Hashes, error) { - hashes := make(map[string]data.Hashes) - - for fileName := range r.meta { - if roles.IsVersionedManifest(fileName) { - continue - } - - roleName := strings.TrimSuffix(fileName, ".json") - - switch roleName { - case "snapshot": - timestamp, err := r.timestamp() - if err != nil { - return nil, err - } - - if m, ok := timestamp.Meta[fileName]; ok { - hashes[fileName] = m.Hashes - } - case "timestamp": - continue - default: - snapshot, err := r.snapshot() - if err != nil { - return nil, err - } - if m, ok := snapshot.Meta[fileName]; ok { - hashes[fileName] = m.Hashes - } - - if roleName != "root" { - // Scalability issue: Commit/fileHashes loads all targets metadata into memory - // https://github.com/theupdateframework/go-tuf/issues/245 - t, err := r.targets(roleName) - if err != nil { - return nil, err - } - for name, m := range t.Targets { - hashes[path.Join("targets", name)] = m.Hashes - } - } - - } - - } - - return hashes, nil -} - -func (r *Repo) Commit() error { - // check we have all the metadata - for _, name := range topLevelMetadata { - if _, ok := r.meta[name]; !ok { - return ErrMissingMetadata{name} - } - } - - // check roles are valid - root, err := r.root() - if err != nil { - return err - } - for name, role := range root.Roles { - if len(role.KeyIDs) < role.Threshold { - return ErrNotEnoughKeys{name, len(role.KeyIDs), role.Threshold} - } - } - - // verify hashes in snapshot.json are up to date - snapshot, err := r.snapshot() - if err != nil { - return err - } - for _, name := range r.snapshotMetadata() { - expected, ok := snapshot.Meta[name] - if !ok { - return fmt.Errorf("tuf: snapshot.json missing hash for %s", name) - } - actual, err := r.snapshotFileMeta(name) - if err != nil { - return err - } - if err := util.SnapshotFileMetaEqual(actual, expected); err != nil { - return fmt.Errorf("tuf: invalid %s in snapshot.json: %s", name, err) - } - } - - // verify hashes in timestamp.json are up to date - timestamp, err := r.timestamp() - if err != nil { - return err - } - snapshotMeta, err := r.timestampFileMeta("snapshot.json") - if err != nil { - return err - } - if err := util.TimestampFileMetaEqual(snapshotMeta, timestamp.Meta["snapshot.json"]); err != nil { - return fmt.Errorf("tuf: invalid snapshot.json in timestamp.json: %s", err) - } - - for _, name := range topLevelMetadata { - if err := r.verifySignatures(name); err != nil { - return err - } - } - - versions, err := r.fileVersions() - if err != nil { - return err - } - hashes, err := r.fileHashes() - if err != nil { - return err - } - - err = r.local.Commit(root.ConsistentSnapshot, versions, hashes) - if err == nil { - r.logger.Println("Committed successfully") - } - return err -} - -func (r *Repo) Clean() error { - err := r.local.Clean() - if err == nil { - r.logger.Println("Removed all staged metadata and target files") - } - return err -} - -func (r *Repo) verifySignatures(metaFilename string) error { - s, err := r.SignedMeta(metaFilename) - if err != nil { - return err - } - - role := strings.TrimSuffix(metaFilename, ".json") - - dbs, err := r.dbsForRole(role) - if err != nil { - return err - } - - for _, db := range dbs { - if err := db.Verify(s, role, 0); err != nil { - return ErrInsufficientSignatures{metaFilename, err} - } - } - - return nil -} - -func (r *Repo) snapshotFileMeta(roleFilename string) (data.SnapshotFileMeta, error) { - b, ok := r.meta[roleFilename] - if !ok { - return data.SnapshotFileMeta{}, ErrMissingMetadata{roleFilename} - } - return util.GenerateSnapshotFileMeta(bytes.NewReader(b), r.hashAlgorithms...) -} - -func (r *Repo) timestampFileMeta(roleFilename string) (data.TimestampFileMeta, error) { - b, ok := r.meta[roleFilename] - if !ok { - return data.TimestampFileMeta{}, ErrMissingMetadata{roleFilename} - } - return util.GenerateTimestampFileMeta(bytes.NewReader(b), r.hashAlgorithms...) -} - -func (r *Repo) Payload(roleFilename string) ([]byte, error) { - s, err := r.SignedMeta(roleFilename) - if err != nil { - return nil, err - } - - p, err := cjson.EncodeCanonical(s.Signed) - if err != nil { - return nil, err - } - - return p, nil -} - -func (r *Repo) CheckRoleUnexpired(role string, validAt time.Time) error { - var expires time.Time - switch role { - case "root": - root, err := r.root() - if err != nil { - return err - } - expires = root.Expires - case "snapshot": - snapshot, err := r.snapshot() - if err != nil { - return err - } - expires = snapshot.Expires - case "timestamp": - timestamp, err := r.timestamp() - if err != nil { - return err - } - expires = timestamp.Expires - case "targets": - targets, err := r.topLevelTargets() - if err != nil { - return err - } - expires = targets.Expires - default: - return fmt.Errorf("invalid role: %s", role) - } - if expires.Before(validAt) || expires.Equal(validAt) { - return fmt.Errorf("role expired on: %s", expires) - } - return nil -} - -// GetMeta returns the underlying meta file map from the store. -func (r *Repo) GetMeta() (map[string]json.RawMessage, error) { - return r.local.GetMeta() -} diff --git a/repo_test.go b/repo_test.go deleted file mode 100644 index 01ae3416..00000000 --- a/repo_test.go +++ /dev/null @@ -1,2752 +0,0 @@ -package tuf - -import ( - "bytes" - "crypto" - "crypto/elliptic" - "crypto/rand" - "encoding/hex" - "encoding/json" - "errors" - "fmt" - "log" - "os" - "path" - "path/filepath" - "reflect" - "sort" - "strings" - "testing" - "time" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/secure-systems-lab/go-securesystemslib/encrypted" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/sets" - "github.com/theupdateframework/go-tuf/pkg/keys" - "github.com/theupdateframework/go-tuf/pkg/targets" - "github.com/theupdateframework/go-tuf/util" - "github.com/theupdateframework/go-tuf/verify" - "golang.org/x/crypto/ed25519" - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type RepoSuite struct{} - -var _ = Suite(&RepoSuite{}) - -func (RepoSuite) TestNewRepo(c *C) { - testNewRepo(c, NewRepo) -} - -func (RepoSuite) TestNewRepoIndent(c *C) { - testNewRepo(c, func(local LocalStore, hashAlgorithms ...string) (*Repo, error) { - return NewRepoIndent(local, "", "\t") - }) -} - -// UniqueKeys returns the unique keys for each associated role. -// We might have multiple key IDs that correspond to the same key. -func UniqueKeys(r *data.Root) map[string][]*data.PublicKey { - keysByRole := make(map[string][]*data.PublicKey) - for name, role := range r.Roles { - seen := make(map[string]struct{}) - roleKeys := []*data.PublicKey{} - for _, id := range role.KeyIDs { - // Double-check that there is actually a key with that ID. - if key, ok := r.Keys[id]; ok { - verifier, err := keys.GetVerifier(key) - if err != nil { - continue - } - val := verifier.Public() - if _, ok := seen[val]; ok { - continue - } - seen[val] = struct{}{} - roleKeys = append(roleKeys, key) - } - } - keysByRole[name] = roleKeys - } - return keysByRole -} - -// AssertNumUniqueKeys verifies that the number of unique root keys for a given role is as expected. -func (*RepoSuite) assertNumUniqueKeys(c *C, root *data.Root, role string, num int) { - c.Assert(UniqueKeys(root)[role], HasLen, num) -} - -func testNewRepo(c *C, newRepo func(local LocalStore, hashAlgorithms ...string) (*Repo, error)) { - meta := map[string]json.RawMessage{ - "root.json": []byte(`{ - "signed": { - "_type": "root", - "version": 1, - "expires": "2015-12-26T03:26:55.821520874Z", - "keys": {}, - "roles": {} - }, - "signatures": [] - }`), - "targets.json": []byte(`{ - "signed": { - "_type": "targets", - "version": 1, - "expires": "2015-03-26T03:26:55.82155686Z", - "targets": {} - }, - "signatures": [] - }`), - "snapshot.json": []byte(`{ - "signed": { - "_type": "snapshot", - "version": 1, - "expires": "2015-01-02T03:26:55.821585981Z", - "meta": {} - }, - "signatures": [] - }`), - "timestamp.json": []byte(`{ - "signed": { - "_type": "timestamp", - "version": 1, - "expires": "2014-12-27T03:26:55.821599702Z", - "meta": {} - }, - "signatures": [] - }`), - } - local := MemoryStore(meta, nil) - r, err := newRepo(local) - c.Assert(err, IsNil) - - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Type, Equals, "root") - c.Assert(root.Version, Equals, int64(1)) - c.Assert(root.Keys, NotNil) - c.Assert(root.Keys, HasLen, 0) - - targets, err := r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(targets.Type, Equals, "targets") - c.Assert(targets.Version, Equals, int64(1)) - c.Assert(targets.Targets, NotNil) - c.Assert(targets.Targets, HasLen, 0) - - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Type, Equals, "snapshot") - c.Assert(snapshot.Version, Equals, int64(1)) - c.Assert(snapshot.Meta, NotNil) - c.Assert(snapshot.Meta, HasLen, 0) - - timestamp, err := r.timestamp() - c.Assert(err, IsNil) - c.Assert(timestamp.Type, Equals, "timestamp") - c.Assert(timestamp.Version, Equals, int64(1)) - c.Assert(timestamp.Meta, NotNil) - c.Assert(timestamp.Meta, HasLen, 0) -} - -func (rs *RepoSuite) TestInit(c *C) { - local := MemoryStore( - make(map[string]json.RawMessage), - map[string][]byte{"foo.txt": []byte("foo")}, - ) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Init() sets root.ConsistentSnapshot - for _, v := range []bool{true, false} { - c.Assert(r.Init(v), IsNil) - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.ConsistentSnapshot, Equals, v) - } - - // Add a target. - generateAndAddPrivateKey(c, r, "targets") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - - // Init() fails if targets have been added - c.Assert(r.Init(true), Equals, ErrInitNotAllowed) -} - -func genKey(c *C, r *Repo, role string) []string { - keyids, err := r.GenKey(role) - c.Assert(err, IsNil) - c.Assert(len(keyids) > 0, Equals, true) - return keyids -} - -func (rs *RepoSuite) TestGenKey(c *C) { - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // generate a key for an unknown role - _, err = r.GenKey("foo") - c.Assert(err, Equals, ErrInvalidRole{"foo", "only support adding keys for top-level roles"}) - - // generate a root key - ids := genKey(c, r, "root") - - // check root metadata is correct - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 1) - rs.assertNumUniqueKeys(c, root, "root", 1) - rootRole, ok := root.Roles["root"] - if !ok { - c.Fatal("missing root role") - } - c.Assert(rootRole.KeyIDs, HasLen, 1) - c.Assert(rootRole.KeyIDs, DeepEquals, ids) - for _, keyID := range ids { - k, ok := root.Keys[keyID] - if !ok { - c.Fatal("missing key") - } - c.Assert(k.IDs(), DeepEquals, ids) - pk, err := keys.GetVerifier(k) - c.Assert(err, IsNil) - c.Assert(pk.Public(), HasLen, ed25519.PublicKeySize) - } - - // check root key + role are in db - db, err := r.topLevelKeysDB() - c.Assert(err, IsNil) - for _, keyID := range ids { - rootKey, err := db.GetVerifier(keyID) - c.Assert(err, IsNil) - c.Assert(rootKey.MarshalPublicKey().IDs(), DeepEquals, ids) - role := db.GetRole("root") - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(ids)) - - // check the key was saved correctly - localKeys, err := local.GetSigners("root") - c.Assert(err, IsNil) - c.Assert(localKeys, HasLen, 1) - c.Assert(localKeys[0].PublicData().IDs(), DeepEquals, ids) - - // check RootKeys() is correct - rootKeys, err := r.RootKeys() - c.Assert(err, IsNil) - c.Assert(rootKeys, HasLen, 1) - c.Assert(rootKeys[0].IDs(), DeepEquals, rootKey.MarshalPublicKey().IDs()) - pk, err := keys.GetVerifier(rootKeys[0]) - c.Assert(err, IsNil) - c.Assert(pk.Public(), DeepEquals, rootKey.Public()) - } - - rootKey, err := db.GetVerifier(ids[0]) - c.Assert(err, IsNil) - - // generate two targets keys - genKey(c, r, "targets") - genKey(c, r, "targets") - - // check root metadata is correct - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, HasLen, 2) - rs.assertNumUniqueKeys(c, root, "root", 1) - rs.assertNumUniqueKeys(c, root, "targets", 2) - targetsRole, ok := root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, 2) - targetKeyIDs := make(map[string]struct{}, 2) - db, err = r.topLevelKeysDB() - c.Assert(err, IsNil) - for _, id := range targetsRole.KeyIDs { - targetKeyIDs[id] = struct{}{} - _, ok = root.Keys[id] - if !ok { - c.Fatal("missing key") - } - verifier, err := db.GetVerifier(id) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().ContainsID(id), Equals, true) - } - role := db.GetRole("targets") - c.Assert(role.KeyIDs, DeepEquals, targetKeyIDs) - - // check RootKeys() is unchanged - rootKeys, err := r.RootKeys() - c.Assert(err, IsNil) - c.Assert(rootKeys, HasLen, 1) - c.Assert(rootKeys[0].IDs(), DeepEquals, rootKey.MarshalPublicKey().IDs()) - - // check the keys were saved correctly - localKeys, err := local.GetSigners("targets") - c.Assert(err, IsNil) - c.Assert(localKeys, HasLen, 2) - for _, key := range localKeys { - found := false - for _, id := range targetsRole.KeyIDs { - if key.PublicData().ContainsID(id) { - found = true - break - } - } - if !found { - c.Fatal("missing key") - } - } - - // check root.json got staged - meta, err := local.GetMeta() - c.Assert(err, IsNil) - rootJSON, ok := meta["root.json"] - if !ok { - c.Fatal("missing root metadata") - } - s := &data.Signed{} - c.Assert(json.Unmarshal(rootJSON, s), IsNil) - stagedRoot := &data.Root{} - c.Assert(json.Unmarshal(s.Signed, stagedRoot), IsNil) - c.Assert(stagedRoot.Type, Equals, root.Type) - c.Assert(stagedRoot.Version, Equals, root.Version) - c.Assert(stagedRoot.Expires.UnixNano(), Equals, root.Expires.UnixNano()) - - // make sure both root and stagedRoot have evaluated IDs(), otherwise - // DeepEquals will fail because those values might not have been - // computed yet. - for _, key := range root.Keys { - key.IDs() - } - for _, key := range stagedRoot.Keys { - key.IDs() - } - c.Assert(stagedRoot.Keys, DeepEquals, root.Keys) - c.Assert(stagedRoot.Roles, DeepEquals, root.Roles) -} - -func addPrivateKey(c *C, r *Repo, role string, key keys.Signer) []string { - err := r.AddPrivateKey(role, key) - c.Assert(err, IsNil) - keyids := key.PublicData().IDs() - c.Assert(len(keyids) > 0, Equals, true) - return keyids -} - -func generateAndAddPrivateKey(c *C, r *Repo, role string) []string { - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - return addPrivateKey(c, r, role, signer) -} - -func (rs *RepoSuite) TestAddPrivateKey(c *C) { - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // generate a key for an unknown role - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - err = r.AddPrivateKey("foo", signer) - c.Assert(err, Equals, ErrInvalidRole{"foo", "only support adding keys for top-level roles"}) - - // add a root key - ids := addPrivateKey(c, r, "root", signer) - - // check root metadata is correct - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Version, Equals, int64(1)) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 1) - rs.assertNumUniqueKeys(c, root, "root", 1) - rootRole, ok := root.Roles["root"] - if !ok { - c.Fatal("missing root role") - } - c.Assert(rootRole.KeyIDs, HasLen, 1) - c.Assert(rootRole.KeyIDs, DeepEquals, ids) - for _, keyID := range ids { - k, ok := root.Keys[keyID] - if !ok { - c.Fatalf("missing key %s", keyID) - } - c.Assert(k.IDs(), DeepEquals, ids) - pk, err := keys.GetVerifier(k) - c.Assert(err, IsNil) - c.Assert(pk.Public(), HasLen, ed25519.PublicKeySize) - } - - // check root key + role are in db - db, err := r.topLevelKeysDB() - c.Assert(err, IsNil) - for _, keyID := range ids { - rootKey, err := db.GetVerifier(keyID) - c.Assert(err, IsNil) - c.Assert(rootKey.MarshalPublicKey().IDs(), DeepEquals, ids) - role := db.GetRole("root") - c.Assert(role.KeyIDs, DeepEquals, sets.StringSliceToSet(ids)) - - // check the key was saved correctly - localKeys, err := local.GetSigners("root") - c.Assert(err, IsNil) - c.Assert(localKeys, HasLen, 1) - c.Assert(localKeys[0].PublicData().IDs(), DeepEquals, ids) - - // check RootKeys() is correct - rootKeys, err := r.RootKeys() - c.Assert(err, IsNil) - c.Assert(rootKeys, HasLen, 1) - c.Assert(rootKeys[0].IDs(), DeepEquals, rootKey.MarshalPublicKey().IDs()) - pk, err := keys.GetVerifier(rootKeys[0]) - c.Assert(err, IsNil) - c.Assert(pk.Public(), DeepEquals, rootKey.Public()) - } - - rootKey, err := db.GetVerifier(ids[0]) - c.Assert(err, IsNil) - - // generate two targets keys - generateAndAddPrivateKey(c, r, "targets") - generateAndAddPrivateKey(c, r, "targets") - - // check root metadata is correct - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, HasLen, 2) - rs.assertNumUniqueKeys(c, root, "root", 1) - rs.assertNumUniqueKeys(c, root, "targets", 2) - targetsRole, ok := root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, 2) - targetKeyIDs := make(map[string]struct{}, 2) - db, err = r.topLevelKeysDB() - c.Assert(err, IsNil) - for _, id := range targetsRole.KeyIDs { - targetKeyIDs[id] = struct{}{} - _, ok = root.Keys[id] - if !ok { - c.Fatal("missing key") - } - verifier, err := db.GetVerifier(id) - c.Assert(err, IsNil) - c.Assert(verifier.MarshalPublicKey().ContainsID(id), Equals, true) - } - role := db.GetRole("targets") - c.Assert(role.KeyIDs, DeepEquals, targetKeyIDs) - - // check RootKeys() is unchanged - rootKeys, err := r.RootKeys() - c.Assert(err, IsNil) - c.Assert(rootKeys, HasLen, 1) - c.Assert(rootKeys[0].IDs(), DeepEquals, rootKey.MarshalPublicKey().IDs()) - - // check the keys were saved correctly - localKeys, err := local.GetSigners("targets") - c.Assert(err, IsNil) - c.Assert(localKeys, HasLen, 2) - for _, key := range localKeys { - found := false - for _, id := range targetsRole.KeyIDs { - if key.PublicData().ContainsID(id) { - found = true - break - } - } - if !found { - c.Fatal("missing key") - } - } - - // check root.json got staged - meta, err := local.GetMeta() - c.Assert(err, IsNil) - rootJSON, ok := meta["root.json"] - if !ok { - c.Fatal("missing root metadata") - } - s := &data.Signed{} - c.Assert(json.Unmarshal(rootJSON, s), IsNil) - stagedRoot := &data.Root{} - c.Assert(json.Unmarshal(s.Signed, stagedRoot), IsNil) - c.Assert(stagedRoot.Type, Equals, root.Type) - c.Assert(stagedRoot.Version, Equals, root.Version) - c.Assert(stagedRoot.Expires.UnixNano(), Equals, root.Expires.UnixNano()) - - // make sure both root and stagedRoot have evaluated IDs(), otherwise - // DeepEquals will fail because those values might not have been - // computed yet. - for _, key := range root.Keys { - key.IDs() - } - for _, key := range stagedRoot.Keys { - key.IDs() - } - c.Assert(stagedRoot.Keys, DeepEquals, root.Keys) - c.Assert(stagedRoot.Roles, DeepEquals, root.Roles) - - // commit to make sure we don't modify metadata after committing metadata. - generateAndAddPrivateKey(c, r, "snapshot") - generateAndAddPrivateKey(c, r, "timestamp") - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // add the same root key to make sure the metadata is unmodified. - oldRoot, err := r.root() - c.Assert(err, IsNil) - addPrivateKey(c, r, "root", signer) - newRoot, err := r.root() - c.Assert(err, IsNil) - c.Assert(oldRoot, DeepEquals, newRoot) - if r.local.FileIsStaged("root.json") { - c.Fatal("root should not be marked dirty") - } -} - -func (rs *RepoSuite) TestRevokeKey(c *C) { - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // revoking a key for an unknown role returns ErrInvalidRole - c.Assert(r.RevokeKey("foo", ""), DeepEquals, ErrInvalidRole{"foo", "only revocations for top-level roles supported"}) - - // revoking a key which doesn't exist returns ErrKeyNotFound - c.Assert(r.RevokeKey("root", "nonexistent"), DeepEquals, ErrKeyNotFound{"root", "nonexistent"}) - - // generate keys - genKey(c, r, "root") - target1IDs := genKey(c, r, "targets") - target2IDs := genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 4) - c.Assert(root.Keys, NotNil) - rs.assertNumUniqueKeys(c, root, "root", 1) - rs.assertNumUniqueKeys(c, root, "targets", 2) - rs.assertNumUniqueKeys(c, root, "snapshot", 1) - rs.assertNumUniqueKeys(c, root, "timestamp", 1) - - // revoke a key - targetsRole, ok := root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, len(target1IDs)+len(target2IDs)) - id := targetsRole.KeyIDs[0] - c.Assert(r.RevokeKey("targets", id), IsNil) - - // make sure all the other key ids were also revoked - for _, id := range target1IDs { - c.Assert(r.RevokeKey("targets", id), DeepEquals, ErrKeyNotFound{"targets", id}) - } - - // check root was updated - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 4) - c.Assert(root.Keys, NotNil) - rs.assertNumUniqueKeys(c, root, "root", 1) - rs.assertNumUniqueKeys(c, root, "targets", 1) - rs.assertNumUniqueKeys(c, root, "snapshot", 1) - rs.assertNumUniqueKeys(c, root, "timestamp", 1) - targetsRole, ok = root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, 1) - c.Assert(targetsRole.KeyIDs, DeepEquals, target2IDs) -} - -func (rs *RepoSuite) TestRevokeKeyInMultipleRoles(c *C) { - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // generate keys. add a root key that is shared with the targets role - rootSigner, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("root", rootSigner.PublicData()), IsNil) - sharedSigner, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - sharedIDs := sharedSigner.PublicData().IDs() - c.Assert(r.AddVerificationKey("root", sharedSigner.PublicData()), IsNil) - c.Assert(r.AddVerificationKey("targets", sharedSigner.PublicData()), IsNil) - targetIDs := genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 4) - c.Assert(root.Keys, NotNil) - rs.assertNumUniqueKeys(c, root, "root", 2) - rs.assertNumUniqueKeys(c, root, "targets", 2) - rs.assertNumUniqueKeys(c, root, "snapshot", 1) - rs.assertNumUniqueKeys(c, root, "timestamp", 1) - - // revoke a key - targetsRole, ok := root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, len(targetIDs)+len(sharedIDs)) - id := targetsRole.KeyIDs[0] - c.Assert(r.RevokeKey("targets", id), IsNil) - - // make sure all the other key ids were also revoked - for _, id := range sharedIDs { - c.Assert(r.RevokeKey("targets", id), DeepEquals, ErrKeyNotFound{"targets", id}) - } - - // check root was updated - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Roles, NotNil) - c.Assert(root.Roles, HasLen, 4) - c.Assert(root.Keys, NotNil) - // the shared root/targets signer should still be present in root keys - c.Assert(UniqueKeys(root)["root"], DeepEquals, - []*data.PublicKey{rootSigner.PublicData(), sharedSigner.PublicData()}) - rs.assertNumUniqueKeys(c, root, "root", 2) - rs.assertNumUniqueKeys(c, root, "targets", 1) - rs.assertNumUniqueKeys(c, root, "snapshot", 1) - rs.assertNumUniqueKeys(c, root, "timestamp", 1) - targetsRole, ok = root.Roles["targets"] - if !ok { - c.Fatal("missing targets role") - } - c.Assert(targetsRole.KeyIDs, HasLen, 1) - c.Assert(targetsRole.KeyIDs, DeepEquals, targetIDs) -} - -func (rs *RepoSuite) TestSign(c *C) { - meta := map[string]json.RawMessage{"root.json": []byte(`{"signed":{},"signatures":[]}`)} - local := MemoryStore(meta, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - c.Assert(r.Sign("foo.json"), Equals, ErrMissingMetadata{"foo.json"}) - - // signing with no keys returns ErrNoKeys - c.Assert(r.Sign("root.json"), Equals, ErrNoKeys{"root.json"}) - - checkSigIDs := func(keyIDs ...string) { - meta, err := local.GetMeta() - c.Assert(err, IsNil) - rootJSON, ok := meta["root.json"] - if !ok { - c.Fatal("missing root.json") - } - s := &data.Signed{} - c.Assert(json.Unmarshal(rootJSON, s), IsNil) - c.Assert(s.Signatures, HasLen, len(keyIDs)) - - // Signatures may be in any order, so must sort key IDs before comparison. - wantKeyIDs := append([]string{}, keyIDs...) - sort.Strings(wantKeyIDs) - - gotKeyIDs := []string{} - for _, sig := range s.Signatures { - gotKeyIDs = append(gotKeyIDs, sig.KeyID) - } - sort.Strings(gotKeyIDs) - - c.Assert(wantKeyIDs, DeepEquals, gotKeyIDs) - } - - // signing with an available key generates a signature - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(local.SaveSigner("root", signer), IsNil) - c.Assert(r.Sign("root.json"), IsNil) - checkSigIDs(signer.PublicData().IDs()...) - - // signing again does not generate a duplicate signature - c.Assert(r.Sign("root.json"), IsNil) - checkSigIDs(signer.PublicData().IDs()...) - - // signing with a new available key generates another signature - newKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(local.SaveSigner("root", newKey), IsNil) - c.Assert(r.Sign("root.json"), IsNil) - checkSigIDs(append(signer.PublicData().IDs(), newKey.PublicData().IDs()...)...) - - // attempt to sign missing metadata - c.Assert(r.Sign("targets.json"), Equals, ErrMissingMetadata{"targets.json"}) -} - -func (rs *RepoSuite) TestStatus(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - c.Assert(r.SnapshotWithExpires(time.Now().Add(24*time.Hour)), IsNil) - c.Assert(r.TimestampWithExpires(time.Now().Add(1*time.Hour)), IsNil) - c.Assert(r.Commit(), IsNil) - - expires := time.Now().Add(2 * time.Hour) - c.Assert(r.CheckRoleUnexpired("timestamp", expires), ErrorMatches, "role expired on.*") - c.Assert(r.CheckRoleUnexpired("snapshot", expires), IsNil) - c.Assert(r.CheckRoleUnexpired("targets", expires), IsNil) - c.Assert(r.CheckRoleUnexpired("root", expires), IsNil) -} - -func (rs *RepoSuite) TestCommit(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo"), "bar.txt": []byte("bar")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // commit without root.json - c.Assert(r.Commit(), DeepEquals, ErrMissingMetadata{"root.json"}) - - // Init should create targets.json, but not signed yet - r.Init(false) - c.Assert(r.Commit(), DeepEquals, ErrMissingMetadata{"snapshot.json"}) - - genKey(c, r, "root") - - // commit without snapshot.json - genKey(c, r, "targets") - c.Assert(r.Sign("targets.json"), IsNil) - c.Assert(r.Commit(), DeepEquals, ErrMissingMetadata{"snapshot.json"}) - - // commit without timestamp.json - genKey(c, r, "snapshot") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Commit(), DeepEquals, ErrMissingMetadata{"timestamp.json"}) - - // commit with timestamp.json but no timestamp key - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), DeepEquals, ErrInsufficientSignatures{"timestamp.json", verify.ErrNoSignatures}) - - // commit success - genKey(c, r, "timestamp") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // commit with an invalid root hash in snapshot.json due to new key creation - genKey(c, r, "targets") - c.Assert(r.Sign("targets.json"), IsNil) - c.Assert(r.Commit(), DeepEquals, errors.New("tuf: invalid targets.json in snapshot.json: wrong length, expected 338 got 552")) - - // commit with an invalid targets hash in snapshot.json - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.AddTarget("bar.txt", nil), IsNil) - c.Assert(r.Commit(), DeepEquals, errors.New("tuf: invalid targets.json in snapshot.json: wrong length, expected 552 got 725")) - - // commit with an invalid timestamp - c.Assert(r.Snapshot(), IsNil) - err = r.Commit() - c.Assert(err, NotNil) - c.Assert(err.Error()[0:44], Equals, "tuf: invalid snapshot.json in timestamp.json") - - // commit with a role's threshold greater than number of keys - root, err := r.root() - c.Assert(err, IsNil) - role, ok := root.Roles["timestamp"] - if !ok { - c.Fatal("missing timestamp role") - } - c.Assert(role.KeyIDs, HasLen, 1) - c.Assert(role.Threshold, Equals, 1) - c.Assert(r.RevokeKey("timestamp", role.KeyIDs[0]), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), DeepEquals, ErrNotEnoughKeys{"timestamp", 0, 1}) -} - -func (rs *RepoSuite) TestCommitVersions(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // on initial commit everything should be at version 1. - rootVersion, err := r.RootVersion() - c.Assert(err, IsNil) - c.Assert(rootVersion, Equals, int64(1)) - - targetsVersion, err := r.TargetsVersion() - c.Assert(err, IsNil) - c.Assert(targetsVersion, Equals, int64(1)) - - snapshotVersion, err := r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(snapshotVersion, Equals, int64(1)) - - timestampVersion, err := r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(timestampVersion, Equals, int64(1)) - - // taking a snapshot should only increment snapshot and timestamp. - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - rootVersion, err = r.RootVersion() - c.Assert(err, IsNil) - c.Assert(rootVersion, Equals, int64(1)) - - targetsVersion, err = r.TargetsVersion() - c.Assert(err, IsNil) - c.Assert(targetsVersion, Equals, int64(1)) - - snapshotVersion, err = r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(snapshotVersion, Equals, int64(2)) - - timestampVersion, err = r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(timestampVersion, Equals, int64(2)) - - // rotating multiple keys should increment the root once. - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - rootVersion, err = r.RootVersion() - c.Assert(err, IsNil) - c.Assert(rootVersion, Equals, int64(2)) - - targetsVersion, err = r.TargetsVersion() - c.Assert(err, IsNil) - c.Assert(targetsVersion, Equals, int64(1)) - - snapshotVersion, err = r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(snapshotVersion, Equals, int64(3)) - - timestampVersion, err = r.TimestampVersion() - c.Assert(err, IsNil) - c.Assert(timestampVersion, Equals, int64(3)) -} - -type tmpDir struct { - path string - c *C -} - -func newTmpDir(c *C) *tmpDir { - return &tmpDir{path: c.MkDir(), c: c} -} - -func (t *tmpDir) assertExists(path string) { - if _, err := os.Stat(filepath.Join(t.path, path)); os.IsNotExist(err) { - t.c.Fatalf("expected path to exist but it doesn't: %s", path) - } -} - -func (t *tmpDir) assertNotExist(path string) { - if _, err := os.Stat(filepath.Join(t.path, path)); !os.IsNotExist(err) { - t.c.Fatalf("expected path to not exist but it does: %s", path) - } -} - -func (t *tmpDir) assertHashedFilesExist(path string, hashes data.Hashes) { - t.c.Assert(len(hashes) > 0, Equals, true) - for _, path := range util.HashedPaths(path, hashes) { - t.assertExists(path) - } -} - -func (t *tmpDir) assertHashedFilesNotExist(path string, hashes data.Hashes) { - for _, path := range util.HashedPaths(path, hashes) { - t.assertNotExist(path) - } -} - -func (t *tmpDir) assertVersionedFileExist(path string, version int64) { - t.assertExists(util.VersionedPath(path, version)) -} - -func (t *tmpDir) assertVersionedFileNotExist(path string, version int64) { - t.assertNotExist(util.VersionedPath(path, version)) -} - -func (t *tmpDir) assertEmpty(dir string) { - path := filepath.Join(t.path, dir) - f, err := os.Stat(path) - if os.IsNotExist(err) { - t.c.Fatalf("expected dir to exist but it doesn't: %s", dir) - } - t.c.Assert(err, IsNil) - t.c.Assert(f.IsDir(), Equals, true) - - entries, err := os.ReadDir(path) - t.c.Assert(err, IsNil) - // check that all (if any) entries are also empty - for _, e := range entries { - t.assertEmpty(filepath.Join(dir, e.Name())) - } -} - -func (t *tmpDir) assertFileContent(path, content string) { - actual := t.readFile(path) - t.c.Assert(string(actual), Equals, content) -} - -func (t *tmpDir) stagedTargetPath(path string) string { - return filepath.Join(t.path, "staged", "targets", path) -} - -func (t *tmpDir) writeStagedTarget(path, data string) { - path = t.stagedTargetPath(path) - t.c.Assert(os.MkdirAll(filepath.Dir(path), 0755), IsNil) - t.c.Assert(os.WriteFile(path, []byte(data), 0644), IsNil) -} - -func (t *tmpDir) readFile(path string) []byte { - t.assertExists(path) - data, err := os.ReadFile(filepath.Join(t.path, path)) - t.c.Assert(err, IsNil) - return data -} - -func (rs *RepoSuite) TestCommitFileSystem(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // don't use consistent snapshots to make the checks simpler - c.Assert(r.Init(false), IsNil) - - // cleaning with nothing staged or committed should fail - c.Assert(r.Clean(), Equals, ErrNewRepository) - - // generating keys should stage root.json and create repo dirs - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - tmp.assertExists("staged/root.json") - tmp.assertEmpty("repository") - tmp.assertEmpty("staged/targets") - - // cleaning with nothing committed should fail - c.Assert(r.Clean(), Equals, ErrNewRepository) - - // adding a non-existent file fails - c.Assert(r.AddTarget("foo.txt", nil), Equals, ErrFileNotFound{tmp.stagedTargetPath("foo.txt")}) - tmp.assertEmpty("repository") - - // adding a file stages targets.json - tmp.writeStagedTarget("foo.txt", "foo") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - tmp.assertExists("staged/targets.json") - tmp.assertEmpty("repository") - t, err := r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(t.Targets, HasLen, 1) - if _, ok := t.Targets["foo.txt"]; !ok { - c.Fatal("missing target file: foo.txt") - } - - // Snapshot() stages snapshot.json - c.Assert(r.Snapshot(), IsNil) - tmp.assertExists("staged/snapshot.json") - tmp.assertEmpty("repository") - - // Timestamp() stages timestamp.json - c.Assert(r.Timestamp(), IsNil) - tmp.assertExists("staged/timestamp.json") - tmp.assertEmpty("repository") - - // committing moves files from staged -> repository - c.Assert(r.Commit(), IsNil) - tmp.assertExists("repository/root.json") - tmp.assertExists("repository/targets.json") - tmp.assertExists("repository/snapshot.json") - tmp.assertExists("repository/timestamp.json") - tmp.assertFileContent("repository/targets/foo.txt", "foo") - tmp.assertEmpty("staged/targets") - tmp.assertEmpty("staged") - - // adding and committing another file moves it into repository/targets - tmp.writeStagedTarget("path/to/bar.txt", "bar") - c.Assert(r.AddTarget("path/to/bar.txt", nil), IsNil) - tmp.assertExists("staged/targets.json") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - tmp.assertFileContent("repository/targets/foo.txt", "foo") - tmp.assertFileContent("repository/targets/path/to/bar.txt", "bar") - tmp.assertEmpty("staged/targets") - tmp.assertEmpty("staged") - - // removing and committing a file removes it from repository/targets - c.Assert(r.RemoveTarget("foo.txt"), IsNil) - tmp.assertExists("staged/targets.json") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - tmp.assertNotExist("repository/targets/foo.txt") - tmp.assertFileContent("repository/targets/path/to/bar.txt", "bar") - tmp.assertEmpty("staged/targets") - tmp.assertEmpty("staged") -} - -func (rs *RepoSuite) TestCommitFileSystemWithNewRepositories(c *C) { - tmp := newTmpDir(c) - - newRepo := func() *Repo { - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - return r - } - - genKey(c, newRepo(), "root") - genKey(c, newRepo(), "targets") - genKey(c, newRepo(), "snapshot") - genKey(c, newRepo(), "timestamp") - - tmp.writeStagedTarget("foo.txt", "foo") - c.Assert(newRepo().AddTarget("foo.txt", nil), IsNil) - c.Assert(newRepo().Snapshot(), IsNil) - c.Assert(newRepo().Timestamp(), IsNil) - c.Assert(newRepo().Commit(), IsNil) -} - -func (rs *RepoSuite) TestConsistentSnapshot(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local, "sha512", "sha256") - c.Assert(err, IsNil) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - tmp.writeStagedTarget("foo.txt", "foo") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - tmp.writeStagedTarget("dir/bar.txt", "bar") - c.Assert(r.AddTarget("dir/bar.txt", nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - versions, err := r.fileVersions() - c.Assert(err, IsNil) - c.Assert(versions["root.json"], Equals, int64(1)) - c.Assert(versions["targets.json"], Equals, int64(1)) - c.Assert(versions["snapshot.json"], Equals, int64(1)) - - hashes, err := r.fileHashes() - c.Assert(err, IsNil) - - // root.json, targets.json and snapshot.json should exist at both versioned and unversioned paths - for _, meta := range []string{"root.json", "targets.json", "snapshot.json"} { - repoPath := path.Join("repository", meta) - if meta != "root.json" { - c.Assert(len(hashes[meta]) > 0, Equals, true) - } - tmp.assertHashedFilesNotExist(repoPath, hashes[meta]) - tmp.assertVersionedFileExist(repoPath, versions[meta]) - tmp.assertExists(repoPath) - } - - // target files should exist at hashed but not unhashed paths - for _, target := range []string{"targets/foo.txt", "targets/dir/bar.txt"} { - repoPath := path.Join("repository", target) - tmp.assertHashedFilesExist(repoPath, hashes[target]) - tmp.assertNotExist(repoPath) - } - - // timestamp.json should exist at an unversioned and unhashed path (it doesn't have a hash) - c.Assert(hashes["repository/timestamp.json"], IsNil) - tmp.assertVersionedFileNotExist("repository/timestamp.json", versions["repository/timestamp.json"]) - tmp.assertExists("repository/timestamp.json") - - // removing a file should remove the hashed files - c.Assert(r.RemoveTarget("foo.txt"), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - versions, err = r.fileVersions() - c.Assert(err, IsNil) - c.Assert(versions["root.json"], Equals, int64(1)) - c.Assert(versions["targets.json"], Equals, int64(2)) - c.Assert(versions["snapshot.json"], Equals, int64(2)) - - // Save the old hashes for foo.txt to make sure we can assert it doesn't exist later. - fooHashes := hashes["targets/foo.txt"] - hashes, err = r.fileHashes() - c.Assert(err, IsNil) - - // root.json, targets.json and snapshot.json should exist at both versioned and unversioned paths - for _, meta := range []string{"root.json", "targets.json", "snapshot.json"} { - repoPath := path.Join("repository", meta) - if meta != "root.json" { - c.Assert(len(hashes[meta]) > 0, Equals, true) - } - tmp.assertHashedFilesNotExist(repoPath, hashes[meta]) - tmp.assertVersionedFileExist(repoPath, versions[meta]) - tmp.assertExists(repoPath) - } - - tmp.assertHashedFilesNotExist("repository/targets/foo.txt", fooHashes) - tmp.assertNotExist("repository/targets/foo.txt") - - // targets should be returned by new repo - newRepo, err := NewRepo(local, "sha512", "sha256") - c.Assert(err, IsNil) - t, err := newRepo.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(t.Targets, HasLen, 1) - if _, ok := t.Targets["dir/bar.txt"]; !ok { - c.Fatal("missing targets file: dir/bar.txt") - } -} - -func (rs *RepoSuite) TestExpiresAndVersion(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - past := time.Now().Add(-1 * time.Second) - _, genKeyErr := r.GenKeyWithExpires("root", past) - for _, err := range []error{ - genKeyErr, - r.AddTargetWithExpires("foo.txt", nil, past), - r.RemoveTargetWithExpires("foo.txt", past), - r.SnapshotWithExpires(past), - r.TimestampWithExpires(past), - } { - c.Assert(err, Equals, ErrInvalidExpires{past}) - } - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Version, Equals, int64(1)) - - expires := time.Now().Add(24 * time.Hour) - _, err = r.GenKeyWithExpires("root", expires) - c.Assert(err, IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Expires.Unix(), DeepEquals, expires.Round(time.Second).Unix()) - c.Assert(root.Version, Equals, int64(2)) - - expires = time.Now().Add(12 * time.Hour) - role, ok := root.Roles["root"] - if !ok { - c.Fatal("missing root role") - } - c.Assert(role.KeyIDs, HasLen, 2) - c.Assert(r.RevokeKeyWithExpires("root", role.KeyIDs[0], expires), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - root, err = r.root() - c.Assert(err, IsNil) - c.Assert(root.Expires.Unix(), DeepEquals, expires.Round(time.Second).Unix()) - c.Assert(root.Version, Equals, int64(3)) - - expires = time.Now().Add(6 * time.Hour) - c.Assert(r.AddTargetWithExpires("foo.txt", nil, expires), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - targets, err := r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(targets.Expires.Unix(), Equals, expires.Round(time.Second).Unix()) - c.Assert(targets.Version, Equals, int64(2)) - - expires = time.Now().Add(2 * time.Hour) - c.Assert(r.RemoveTargetWithExpires("foo.txt", expires), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - targets, err = r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(targets.Expires.Unix(), Equals, expires.Round(time.Second).Unix()) - c.Assert(targets.Version, Equals, int64(3)) - - expires = time.Now().Add(time.Hour) - c.Assert(r.SnapshotWithExpires(expires), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Expires.Unix(), Equals, expires.Round(time.Second).Unix()) - c.Assert(snapshot.Version, Equals, int64(6)) - - _, snapshotHasRoot := snapshot.Meta["root.json"] - c.Assert(snapshotHasRoot, Equals, false) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, targets.Version) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Version, Equals, int64(7)) - - expires = time.Now().Add(10 * time.Minute) - c.Assert(r.TimestampWithExpires(expires), IsNil) - c.Assert(r.Commit(), IsNil) - timestamp, err := r.timestamp() - c.Assert(err, IsNil) - c.Assert(timestamp.Expires.Unix(), Equals, expires.Round(time.Second).Unix()) - c.Assert(timestamp.Version, Equals, int64(8)) - - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - timestamp, err = r.timestamp() - c.Assert(err, IsNil) - c.Assert(timestamp.Version, Equals, int64(9)) - c.Assert(timestamp.Meta["snapshot.json"].Version, Equals, snapshot.Version) -} - -func (rs *RepoSuite) TestHashAlgorithm(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - type hashTest struct { - args []string - expected []string - } - for _, test := range []hashTest{ - {args: []string{}, expected: []string{"sha512"}}, - {args: []string{"sha256"}}, - {args: []string{"sha512", "sha256"}}, - } { - // generate metadata with specific hash functions - r, err := NewRepo(local, test.args...) - c.Assert(err, IsNil) - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - - // check metadata has correct hash functions - if test.expected == nil { - test.expected = test.args - } - targets, err := r.topLevelTargets() - c.Assert(err, IsNil) - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - timestamp, err := r.timestamp() - c.Assert(err, IsNil) - for name, file := range map[string]data.FileMeta{ - "foo.txt": targets.Targets["foo.txt"].FileMeta, - "targets.json": {Length: snapshot.Meta["targets.json"].Length, Hashes: snapshot.Meta["targets.json"].Hashes}, - "snapshot.json": {Length: timestamp.Meta["snapshot.json"].Length, Hashes: timestamp.Meta["snapshot.json"].Hashes}, - } { - for _, hashAlgorithm := range test.expected { - if _, ok := file.Hashes[hashAlgorithm]; !ok { - c.Fatalf("expected %s hash to contain hash func %s, got %s", name, hashAlgorithm, file.Hashes.HashAlgorithms()) - } - } - } - } -} - -func (rs *RepoSuite) TestKeyPersistence(c *C) { - tmp := newTmpDir(c) - oldPassphrase := []byte("old_s3cr3t") - newPassphrase := []byte("new_s3cr3t") - // returnNewPassphrase is used to force the passphrase function to return the new passphrase when called by the SaveSigner() method - returnNewPassphrase := false - // passphrase mock function - testPassphraseFunc := func(a string, b, change bool) ([]byte, error) { - if change || returnNewPassphrase { - return newPassphrase, nil - } - return oldPassphrase, nil - } - store := FileSystemStore(tmp.path, testPassphraseFunc) - - assertKeys := func(role string, enc bool, expected []*data.PrivateKey) { - keysJSON := tmp.readFile("keys/" + role + ".json") - pk := &persistedKeys{} - c.Assert(json.Unmarshal(keysJSON, pk), IsNil) - - // check the persisted keys are correct - var actual []*data.PrivateKey - pass := oldPassphrase - if enc { - c.Assert(pk.Encrypted, Equals, true) - if returnNewPassphrase { - pass = newPassphrase - } - decrypted, err := encrypted.Decrypt(pk.Data, pass) - c.Assert(err, IsNil) - c.Assert(json.Unmarshal(decrypted, &actual), IsNil) - } else { - c.Assert(pk.Encrypted, Equals, false) - c.Assert(json.Unmarshal(pk.Data, &actual), IsNil) - } - - // Compare slices of unique elements disregarding order. - c.Assert(actual, HasLen, len(expected)) - for _, gotKey := range actual { - expectedNumMatches := 0 - for _, x := range actual { - if reflect.DeepEqual(gotKey, x) { - expectedNumMatches++ - } - } - - numMatches := 0 - for _, wantKey := range expected { - wantCanon, err := cjson.EncodeCanonical(wantKey) - c.Assert(err, IsNil) - - gotCanon, err := cjson.EncodeCanonical(gotKey) - c.Assert(err, IsNil) - - if string(wantCanon) == string(gotCanon) { - numMatches++ - } - } - - c.Assert(numMatches, Equals, expectedNumMatches, Commentf("actual: %+v, expected: %+v", actual, expected)) - } - - // check GetKeys is correct - signers, err := store.GetSigners(role) - c.Assert(err, IsNil) - - // Compare slices of unique elements disregarding order. - c.Assert(signers, HasLen, len(expected)) - for _, s := range signers { - expectedNumMatches := 0 - for _, x := range signers { - if reflect.DeepEqual(s, x) { - expectedNumMatches++ - } - } - - numMatches := 0 - for _, e := range expected { - v, err := keys.GetSigner(e) - c.Assert(err, IsNil) - - if reflect.DeepEqual(s.PublicData().IDs(), v.PublicData().IDs()) { - numMatches++ - } - } - - c.Assert(numMatches, Equals, expectedNumMatches, Commentf("signers: %+v, expected: %+v", signers, expected)) - } - } - - // save a key and check it gets encrypted - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - privateKey, err := signer.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(store.SaveSigner("root", signer), IsNil) - assertKeys("root", true, []*data.PrivateKey{privateKey}) - - // save another key and check it gets added to the existing keys - newKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - newPrivateKey, err := newKey.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(store.SaveSigner("root", newKey), IsNil) - assertKeys("root", true, []*data.PrivateKey{privateKey, newPrivateKey}) - - // check saving a key to an encrypted file without a passphrase fails - insecureStore := FileSystemStore(tmp.path, nil) - signer, err = keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(insecureStore.SaveSigner("root", signer), Equals, ErrPassphraseRequired{"root"}) - - // save a key to an insecure store and check it is not encrypted - signer, err = keys.GenerateEd25519Key() - c.Assert(err, IsNil) - privateKey, err = signer.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(insecureStore.SaveSigner("targets", signer), IsNil) - assertKeys("targets", false, []*data.PrivateKey{privateKey}) - - c.Assert(insecureStore.SaveSigner("foo", signer), IsNil) - assertKeys("foo", false, []*data.PrivateKey{privateKey}) - - // Test changing the passphrase - // 1. Create a secure store with a passphrase (create new object and temp folder so we discard any previous state) - tmp = newTmpDir(c) - var logBytes bytes.Buffer - storeOpts := StoreOpts{ - Logger: log.New(&logBytes, "", 0), - PassFunc: testPassphraseFunc, - } - store = FileSystemStoreWithOpts(tmp.path, storeOpts) - - // 1.5. Changing passphrase works for top-level and delegated roles. - r, err := NewRepo(store) - c.Assert(err, IsNil) - - c.Assert(r.ChangePassphrase("targets"), NotNil) - c.Assert(r.ChangePassphrase("foo"), NotNil) - - // 2. Test changing the passphrase when the keys file does not exist - should FAIL - c.Assert(store.(PassphraseChanger).ChangePassphrase("root"), NotNil) - c.Assert(strings.Contains(logBytes.String(), "Missing keys file"), Equals, true) - - // 3. Generate a new key - signer, err = keys.GenerateEd25519Key() - c.Assert(err, IsNil) - privateKey, err = signer.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(store.SaveSigner("root", signer), IsNil) - - // 4. Verify the key file can be decrypted using the original passphrase - should SUCCEED - assertKeys("root", true, []*data.PrivateKey{privateKey}) - - // 5. Change the passphrase (our mock passphrase function is called with change=true thus returning the newPassphrase value) - c.Assert(store.(PassphraseChanger).ChangePassphrase("root"), IsNil) - - // 6. Try to add a key and implicitly decrypt the keys file using the OLD passphrase - should FAIL - newKey, err = keys.GenerateEd25519Key() - c.Assert(err, IsNil) - _, err = newKey.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(store.SaveSigner("root", newKey), NotNil) - - // 7. Try to add a key and implicitly decrypt the keys using the NEW passphrase - should SUCCEED - returnNewPassphrase = true - newKey, err = keys.GenerateEd25519Key() - c.Assert(err, IsNil) - newPrivateKey, err = newKey.MarshalPrivateKey() - c.Assert(err, IsNil) - c.Assert(store.SaveSigner("root", newKey), IsNil) - - // 8. Verify again that the key entries are what we expect after decrypting them using the NEW passphrase - assertKeys("root", true, []*data.PrivateKey{privateKey, newPrivateKey}) -} - -func (rs *RepoSuite) TestManageMultipleTargets(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - // don't use consistent snapshots to make the checks simpler - c.Assert(r.Init(false), IsNil) - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - assertRepoTargets := func(paths ...string) { - t, err := r.topLevelTargets() - c.Assert(err, IsNil) - for _, path := range paths { - if _, ok := t.Targets[path]; !ok { - c.Fatalf("missing target file: %s", path) - } - } - } - - // adding and committing multiple files moves correct targets from staged -> repository - tmp.writeStagedTarget("foo.txt", "foo") - tmp.writeStagedTarget("bar.txt", "bar") - c.Assert(r.AddTargets([]string{"foo.txt", "bar.txt"}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - assertRepoTargets("foo.txt", "bar.txt") - tmp.assertExists("repository/targets/foo.txt") - tmp.assertExists("repository/targets/bar.txt") - - // adding all targets moves them all from staged -> repository - count := 10 - files := make([]string, count) - for i := 0; i < count; i++ { - files[i] = fmt.Sprintf("file%d.txt", i) - tmp.writeStagedTarget(files[i], "data") - } - c.Assert(r.AddTargets(nil, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - tmp.assertExists("repository/targets/foo.txt") - tmp.assertExists("repository/targets/bar.txt") - assertRepoTargets(files...) - for _, file := range files { - tmp.assertExists("repository/targets/" + file) - } - tmp.assertEmpty("staged/targets") - tmp.assertEmpty("staged") - - // removing all targets removes them from the repository and targets.json - c.Assert(r.RemoveTargets(nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - tmp.assertNotExist("repository/targets") - t, err := r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(t.Targets, HasLen, 0) -} - -func (rs *RepoSuite) TestCustomTargetMetadata(c *C) { - files := map[string][]byte{ - "foo.txt": []byte("foo"), - "bar.txt": []byte("bar"), - "baz.txt": []byte("baz"), - } - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - generateAndAddPrivateKey(c, r, "targets") - - custom := json.RawMessage(`{"foo":"bar"}`) - assertCustomMeta := func(file string, custom *json.RawMessage) { - t, err := r.topLevelTargets() - c.Assert(err, IsNil) - target, ok := t.Targets[file] - if !ok { - c.Fatalf("missing target file: %s", file) - } - c.Assert(target.Custom, DeepEquals, custom) - } - - // check custom metadata gets added to the target - c.Assert(r.AddTarget("foo.txt", custom), IsNil) - assertCustomMeta("foo.txt", &custom) - - // check adding bar.txt with no metadata doesn't affect foo.txt - c.Assert(r.AddTarget("bar.txt", nil), IsNil) - assertCustomMeta("bar.txt", nil) - assertCustomMeta("foo.txt", &custom) - - // check adding all files with no metadata doesn't reset existing metadata - c.Assert(r.AddTargets(nil, nil), IsNil) - assertCustomMeta("baz.txt", nil) - assertCustomMeta("bar.txt", nil) - assertCustomMeta("foo.txt", &custom) -} - -func (rs *RepoSuite) TestUnknownKeyIDs(c *C) { - // generate a repo - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - // add a new key to the root metadata with an unknown key id. - signer, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - root, err := r.root() - c.Assert(err, IsNil) - c.Assert(root.Version, Equals, int64(1)) - - root.Keys["unknown-key-id"] = signer.PublicData() - r.setMeta("root.json", root) - - // commit the metadata to the store. - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // validate that the unknown key id wasn't stripped when written to the - // store. - meta, err := local.GetMeta() - c.Assert(err, IsNil) - - rootJSON, ok := meta["root.json"] - c.Assert(ok, Equals, true) - - var signedRoot struct { - Signed data.Root `json:"signed"` - Signatures []data.Signature `json:"signatures"` - } - c.Assert(json.Unmarshal(rootJSON, &signedRoot), IsNil) - c.Assert(signedRoot.Signed.Version, Equals, int64(1)) - - unknownKey, ok := signedRoot.Signed.Keys["unknown-key-id"] - c.Assert(ok, Equals, true) - c.Assert(unknownKey, DeepEquals, signer.PublicData()) - - // a new root should preserve the unknown key id. - root, err = r.root() - c.Assert(root, NotNil) - c.Assert(err, IsNil) - - genKey(c, r, "timestamp") - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - meta, err = local.GetMeta() - c.Assert(err, IsNil) - - rootJSON, ok = meta["root.json"] - c.Assert(ok, Equals, true) - - c.Assert(json.Unmarshal(rootJSON, &signedRoot), IsNil) - c.Assert(signedRoot.Signed.Version, Equals, int64(2)) - - unknownKey, ok = signedRoot.Signed.Keys["unknown-key-id"] - c.Assert(ok, Equals, true) - c.Assert(unknownKey, DeepEquals, signer.PublicData()) -} - -func (rs *RepoSuite) TestThreshold(c *C) { - local := MemoryStore(make(map[string]json.RawMessage), nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - _, err = r.GetThreshold("root") - c.Assert(err, DeepEquals, ErrInvalidRole{"root", "role missing from root metadata"}) - err = r.SetThreshold("root", 2) - c.Assert(err, DeepEquals, ErrInvalidRole{"root", "role missing from root metadata"}) - - // Add one key to each role - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - t, err := r.GetThreshold("root") - c.Assert(err, IsNil) - c.Assert(t, Equals, 1) - - _, err = r.GetThreshold("foo") - c.Assert(err, DeepEquals, ErrInvalidRole{"foo", "only thresholds for top-level roles supported"}) - err = r.SetThreshold("foo", 2) - c.Assert(err, DeepEquals, ErrInvalidRole{"foo", "only thresholds for top-level roles supported"}) - - // commit the metadata to the store. - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // Set a new threshold. Commit without threshold keys - c.Assert(r.SetThreshold("root", 2), IsNil) - t, err = r.GetThreshold("root") - c.Assert(err, IsNil) - c.Assert(t, Equals, 2) - c.Assert(r.Commit(), DeepEquals, ErrNotEnoughKeys{"root", 1, 2}) - - // Add a second root key and try again - genKey(c, r, "root") - c.Assert(r.Sign("root.json"), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // Check versions updated - rootVersion, err := r.RootVersion() - c.Assert(err, IsNil) - c.Assert(rootVersion, Equals, int64(2)) - - targetsVersion, err := r.TargetsVersion() - c.Assert(err, IsNil) - c.Assert(targetsVersion, Equals, int64(1)) - - snapshotVersion, err := r.SnapshotVersion() - c.Assert(err, IsNil) - c.Assert(snapshotVersion, Equals, int64(2)) - - timestampVersion, err := r.TimestampVersion() - c.Assert(err, IsNil) - c.Assert(timestampVersion, Equals, int64(2)) -} - -func (rs *RepoSuite) TestAddOrUpdateSignatures(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // don't use consistent snapshots to make the checks simpler - c.Assert(r.Init(false), IsNil) - - // generate root key offline and add as a verification key - rootKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("root", rootKey.PublicData()), IsNil) - targetsKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("targets", targetsKey.PublicData()), IsNil) - snapshotKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("snapshot", snapshotKey.PublicData()), IsNil) - timestampKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("timestamp", timestampKey.PublicData()), IsNil) - - // generate signatures externally and append - rootMeta, err := r.SignedMeta("root.json") - c.Assert(err, IsNil) - rootCanonical, err := cjson.EncodeCanonical(rootMeta.Signed) - c.Assert(err, IsNil) - rootSig, err := rootKey.SignMessage(rootCanonical) - c.Assert(err, IsNil) - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), IsNil) - } - - // add targets and sign - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - targetsMeta, err := r.SignedMeta("targets.json") - c.Assert(err, IsNil) - targetsCanonical, err := cjson.EncodeCanonical(targetsMeta.Signed) - c.Assert(err, IsNil) - targetsSig, err := targetsKey.SignMessage(targetsCanonical) - c.Assert(err, IsNil) - for _, id := range targetsKey.PublicData().IDs() { - r.AddOrUpdateSignature("targets.json", data.Signature{ - KeyID: id, - Signature: targetsSig}) - } - - // snapshot and timestamp - c.Assert(r.Snapshot(), IsNil) - snapshotMeta, err := r.SignedMeta("snapshot.json") - c.Assert(err, IsNil) - snapshotCanonical, err := cjson.EncodeCanonical(snapshotMeta.Signed) - c.Assert(err, IsNil) - snapshotSig, err := snapshotKey.SignMessage(snapshotCanonical) - c.Assert(err, IsNil) - for _, id := range snapshotKey.PublicData().IDs() { - r.AddOrUpdateSignature("snapshot.json", data.Signature{ - KeyID: id, - Signature: snapshotSig}) - } - - c.Assert(r.Timestamp(), IsNil) - timestampMeta, err := r.SignedMeta("timestamp.json") - c.Assert(err, IsNil) - timestampCanonical, err := cjson.EncodeCanonical(timestampMeta.Signed) - c.Assert(err, IsNil) - timestampSig, err := timestampKey.SignMessage(timestampCanonical) - c.Assert(err, IsNil) - for _, id := range timestampKey.PublicData().IDs() { - r.AddOrUpdateSignature("timestamp.json", data.Signature{ - KeyID: id, - Signature: timestampSig}) - } - - // commit successfully! - c.Assert(r.Commit(), IsNil) -} - -func (rs *RepoSuite) TestBadAddOrUpdateSignatures(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // don't use consistent snapshots to make the checks simpler - c.Assert(r.Init(false), IsNil) - - c.Assert(r.AddOrUpdateSignature("targets.json", data.Signature{ - KeyID: "foo", - Signature: nil}), Equals, ErrInvalidRole{"targets", "role is not in verifier DB"}) - - // generate root key offline and add as a verification key - rootKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("root", rootKey.PublicData()), IsNil) - targetsKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("targets", targetsKey.PublicData()), IsNil) - snapshotKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("snapshot", snapshotKey.PublicData()), IsNil) - timestampKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - c.Assert(r.AddVerificationKey("timestamp", timestampKey.PublicData()), IsNil) - - // attempt to sign `root`, rather than `root.json` - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root", data.Signature{ - KeyID: id, - Signature: nil}), Equals, ErrMissingMetadata{"root"}) - } - - // add a signature with a bad role - rootMeta, err := r.SignedMeta("root.json") - c.Assert(err, IsNil) - rootCanonical, err := cjson.EncodeCanonical(rootMeta.Signed) - c.Assert(err, IsNil) - rootSig, err := rootKey.Sign(rand.Reader, rootCanonical, crypto.Hash(0)) - c.Assert(err, IsNil) - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("invalid_root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), Equals, ErrInvalidRole{"invalid_root", "no trusted keys for role"}) - } - - // add a root signature with an key ID that is for the targets role - for _, id := range targetsKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), Equals, verify.ErrInvalidKey) - } - - // attempt to add a bad signature to root - badSig, err := rootKey.Sign(rand.Reader, []byte(""), crypto.Hash(0)) - c.Assert(err, IsNil) - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: badSig}), Equals, verify.ErrInvalid) - } - - // add the correct root signature - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), IsNil) - } - checkSigIDs := func(role string) { - s, err := r.SignedMeta(role) - c.Assert(err, IsNil) - db, err := r.topLevelKeysDB() - c.Assert(err, IsNil) - // keys is a map of key IDs. - keys := db.GetRole(strings.TrimSuffix(role, ".json")).KeyIDs - c.Assert(s.Signatures, HasLen, len(keys)) - // If the lengths are equal, and each signature key ID appears - // in the role keys, they Sig IDs are equal to keyIDs. - for _, sig := range s.Signatures { - if _, ok := keys[sig.KeyID]; !ok { - c.Fatal("missing key ID in signatures") - } - } - } - checkSigIDs("root.json") - - // re-adding should not duplicate. this is checked by verifying - // signature key IDs match with the map of role key IDs. - for _, id := range rootKey.PublicData().IDs() { - c.Assert(r.AddOrUpdateSignature("root.json", data.Signature{ - KeyID: id, - Signature: rootSig}), IsNil) - } - checkSigIDs("root.json") -} - -func (rs *RepoSuite) TestSignDigest(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - digest := "sha256:bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c" - hash := "bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c" - size := int64(42) - - c.Assert(r.AddTargetsWithDigest(hash, "sha256", size, digest, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - digest_bytes, err := hex.DecodeString("bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c") - hex_digest_bytes := data.HexBytes(digest_bytes) - c.Assert(err, IsNil) - - targets, err := r.topLevelTargets() - c.Assert(err, IsNil) - c.Assert(targets.Targets["sha256:bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c"].FileMeta.Length, Equals, size) - c.Assert(targets.Targets["sha256:bc11b176a293bb341a0f2d0d226f52e7fcebd186a7c4dfca5fc64f305f06b94c"].FileMeta.Hashes["sha256"], DeepEquals, hex_digest_bytes) -} - -func concat(ss ...[]string) []string { - ret := []string{} - for _, s := range ss { - ret = append(ret, s...) - } - return ret -} - -func checkSigKeyIDs(c *C, local LocalStore, fileToKeyIDs map[string][]string) { - metas, err := local.GetMeta() - c.Assert(err, IsNil) - - for f, keyIDs := range fileToKeyIDs { - meta, ok := metas[f] - c.Assert(ok, Equals, true, Commentf("meta file: %v", f)) - - s := &data.Signed{} - err = json.Unmarshal(meta, s) - c.Assert(err, IsNil) - - gotKeyIDs := []string{} - for _, sig := range s.Signatures { - gotKeyIDs = append(gotKeyIDs, sig.KeyID) - } - gotKeyIDs = sets.DeduplicateStrings(gotKeyIDs) - sort.Strings(gotKeyIDs) - - sort.Strings(keyIDs) - c.Assert(gotKeyIDs, DeepEquals, keyIDs) - } -} - -func (rs *RepoSuite) TestDelegations(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Add one key to each role - genKey(c, r, "root") - targetsKeyIDs := genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - // commit the metadata to the store. - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 1) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(1)) - - checkSigKeyIDs(c, local, map[string][]string{ - "1.targets.json": targetsKeyIDs, - }) - - saveNewKey := func(role string) keys.Signer { - key, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - err = local.SaveSigner(role, key) - c.Assert(err, IsNil) - - return key - } - - // Delegate from targets -> role1 for A/*, B/* with one key, threshold 1. - role1ABKey := saveNewKey("role1") - role1AB := data.DelegatedRole{ - Name: "role1", - KeyIDs: role1ABKey.PublicData().IDs(), - Paths: []string{"A/*", "B/*"}, - Threshold: 1, - } - err = r.AddDelegatedRole("targets", role1AB, []*data.PublicKey{ - role1ABKey.PublicData(), - }) - c.Assert(err, IsNil) - - // Adding duplicate delegation should return an error. - err = r.AddDelegatedRole("targets", role1AB, []*data.PublicKey{ - role1ABKey.PublicData(), - }) - c.Assert(err, NotNil) - - // Delegate from targets -> role2 for C/*, D/* with three key, threshold 2. - role2CDKey1 := saveNewKey("role2") - role2CDKey2 := saveNewKey("role2") - role2CDKey3 := saveNewKey("role2") - role2CD := data.DelegatedRole{ - Name: "role2", - KeyIDs: concat( - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - ), - Paths: []string{"C/*", "D/*"}, - Threshold: 2, - } - err = r.AddDelegatedRole("targets", role2CD, []*data.PublicKey{ - role2CDKey1.PublicData(), - role2CDKey2.PublicData(), - role2CDKey3.PublicData(), - }) - c.Assert(err, IsNil) - - // Delegate from role1 -> role2 for A/allium.txt with one key, threshold 1. - role1To2Key := saveNewKey("role2") - role1To2 := data.DelegatedRole{ - Name: "role2", - KeyIDs: role1To2Key.PublicData().IDs(), - Paths: []string{"A/allium.txt"}, - Threshold: 1, - Terminating: true, - } - err = r.AddDelegatedRole("role1", role1To2, []*data.PublicKey{ - role1To2Key.PublicData(), - }) - c.Assert(err, IsNil) - - checkDelegations := func(delegator string, delegatedRoles ...data.DelegatedRole) { - t, err := r.targets(delegator) - c.Assert(err, IsNil) - - // Check if there are no delegations. - if t.Delegations == nil { - if delegatedRoles != nil { - c.Fatal("expected delegated roles on delegator") - } - return - } - - // Check that delegated roles are copied verbatim. - c.Assert(t.Delegations.Roles, DeepEquals, delegatedRoles) - - // Check that public keys match key IDs in roles. - expectedKeyIDs := []string{} - for _, dr := range delegatedRoles { - expectedKeyIDs = append(expectedKeyIDs, dr.KeyIDs...) - } - expectedKeyIDs = sets.DeduplicateStrings(expectedKeyIDs) - sort.Strings(expectedKeyIDs) - - gotKeyIDs := []string{} - for _, k := range t.Delegations.Keys { - gotKeyIDs = append(gotKeyIDs, k.IDs()...) - } - gotKeyIDs = sets.DeduplicateStrings(gotKeyIDs) - sort.Strings(gotKeyIDs) - - c.Assert(gotKeyIDs, DeepEquals, expectedKeyIDs) - } - - checkDelegations("targets", role1AB, role2CD) - checkDelegations("role1", role1To2) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(2)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(1)) - - checkSigKeyIDs(c, local, map[string][]string{ - "2.targets.json": targetsKeyIDs, - "1.role1.json": role1ABKey.PublicData().IDs(), - "1.role2.json": concat( - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - role1To2Key.PublicData().IDs(), - ), - }) - - // Add a variety of targets. - files := map[string]string{ - // targets.json - "potato.txt": "potatoes can be starchy or waxy", - // role1.json - "A/apple.txt": "apples are sometimes red", - "B/banana.txt": "bananas are yellow and sometimes brown", - // role2.json - "C/clementine.txt": "clementines are a citrus fruit", - "D/durian.txt": "durians are spiky", - "A/allium.txt": "alliums include garlic and leeks", - } - for name, content := range files { - tmp.writeStagedTarget(name, content) - c.Assert(r.AddTarget(name, nil), IsNil) - } - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - // All roles should have new targets. - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(2)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(2)) - - checkSigKeyIDs(c, local, map[string][]string{ - "3.targets.json": targetsKeyIDs, - "2.role1.json": role1ABKey.PublicData().IDs(), - "2.role2.json": concat( - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - role1To2Key.PublicData().IDs(), - ), - }) - - // Check that the given targets role has signed for the given filenames, with - // the correct file metadata. - checkTargets := func(role string, filenames ...string) { - t, err := r.targets(role) - c.Assert(err, IsNil) - c.Assert(t.Targets, HasLen, len(filenames)) - - for _, fn := range filenames { - content := files[fn] - - fm, err := util.GenerateTargetFileMeta(strings.NewReader(content)) - c.Assert(err, IsNil) - - c.Assert(util.TargetFileMetaEqual(t.Targets[fn], fm), IsNil) - } - } - - checkTargets("targets", "potato.txt") - checkTargets("role1", "A/apple.txt", "B/banana.txt") - checkTargets("role2", "C/clementine.txt", "D/durian.txt", "A/allium.txt") - - // Test AddTargetToPreferredRole. - // role2 is the default signer for A/allium.txt, but role1 is also eligible - // for A/*.txt according to the delegation from the top-level targets role. - c.Assert(r.RemoveTarget("A/allium.txt"), IsNil) - tmp.writeStagedTarget("A/allium.txt", files["A/allium.txt"]) - c.Assert(r.AddTargetToPreferredRole("A/allium.txt", nil, "role1"), IsNil) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - // Only role1 and role2 should have bumped versions. - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(3)) - - checkSigKeyIDs(c, local, map[string][]string{ - "3.targets.json": targetsKeyIDs, - "3.role1.json": role1ABKey.PublicData().IDs(), - "3.role2.json": concat( - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - role1To2Key.PublicData().IDs(), - ), - }) - - // role1 now signs A/allium.txt. - checkTargets("targets", "potato.txt") - checkTargets("role1", "A/apple.txt", "B/banana.txt", "A/allium.txt") - checkTargets("role2", "C/clementine.txt", "D/durian.txt") - - // Remove the delegation from role1 to role2. - c.Assert(r.ResetTargetsDelegations("role1"), IsNil) - checkDelegations("targets", role1AB, role2CD) - checkDelegations("role1") - - // Try to sign A/allium.txt with role2. - // It should fail since we removed the role1 -> role2 delegation. - c.Assert(r.RemoveTarget("A/allium.txt"), IsNil) - tmp.writeStagedTarget("A/allium.txt", files["A/allium.txt"]) - c.Assert(r.AddTargetToPreferredRole("A/allium.txt", nil, "role2"), Equals, ErrNoDelegatedTarget{Path: "A/allium.txt"}) - - // Try to sign A/allium.txt with the default role (role1). - c.Assert(r.AddTarget("A/allium.txt", nil), IsNil) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - // Only role1 should have a bumped version. - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(4)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(3)) - - checkSigKeyIDs(c, local, map[string][]string{ - "3.targets.json": targetsKeyIDs, - "4.role1.json": role1ABKey.PublicData().IDs(), - "3.role2.json": concat( - // Metadata (and therefore signers) for role2.json shouldn't have - // changed, even though we revoked role1To2Key. Clients verify the - // signature using keys specified by 4.role1.json, so role1To2Key - // shouldn't contribute to the threshold. - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - role1To2Key.PublicData().IDs(), - ), - }) - - // Re-sign target signed by role2 to test that role1To2Key is not used going - // forward. - c.Assert(r.RemoveTarget("C/clementine.txt"), IsNil) - tmp.writeStagedTarget("C/clementine.txt", files["C/clementine.txt"]) - c.Assert(r.AddTarget("C/clementine.txt", nil), IsNil) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - // Only role2 should have a bumped version. - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(4)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(4)) - - checkSigKeyIDs(c, local, map[string][]string{ - "3.targets.json": targetsKeyIDs, - "4.role1.json": role1ABKey.PublicData().IDs(), - "4.role2.json": concat( - role2CDKey1.PublicData().IDs(), - role2CDKey2.PublicData().IDs(), - role2CDKey3.PublicData().IDs(), - // Note that role1To2Key no longer signs since the role1 -> role2 - // delegation was removed. - ), - }) - - // Targets should still be signed by the same roles. - checkTargets("targets", "potato.txt") - checkTargets("role1", "A/apple.txt", "B/banana.txt", "A/allium.txt") - checkTargets("role2", "C/clementine.txt", "D/durian.txt") - - // Add back the role1 -> role2 delegation, and verify that it doesn't change - // existing targets in role2.json. - err = r.AddDelegatedRole("role1", role1To2, []*data.PublicKey{ - role1To2Key.PublicData(), - }) - c.Assert(err, IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 3) - // Both role1 and role2 should have a bumped version. - // role1 is bumped because the delegations changed. - // role2 is only bumped because its expiration is bumped. - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(5)) - c.Assert(snapshot.Meta["role2.json"].Version, Equals, int64(5)) - - checkTargets("targets", "potato.txt") - checkTargets("role1", "A/apple.txt", "B/banana.txt", "A/allium.txt") - checkTargets("role2", "C/clementine.txt", "D/durian.txt") -} - -func (rs *RepoSuite) TestHashBinDelegations(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Add one key to each role - genKey(c, r, "root") - targetsKeyIDs := genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - hb, err := targets.NewHashBins("bins_", 3) - if err != nil { - c.Assert(err, IsNil) - } - - // Generate key for the intermediate bins role. - binsKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - err = local.SaveSigner("bins", binsKey) - c.Assert(err, IsNil) - - // Generate key for the leaf bins role. - leafKey, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - for i := uint64(0); i < hb.NumBins(); i++ { - b := hb.GetBin(i) - err = local.SaveSigner(b.RoleName(), leafKey) - if err != nil { - c.Assert(err, IsNil) - } - } - - err = r.AddDelegatedRole("targets", data.DelegatedRole{ - Name: "bins", - KeyIDs: binsKey.PublicData().IDs(), - Paths: []string{"*.txt"}, - Threshold: 1, - }, []*data.PublicKey{ - binsKey.PublicData(), - }) - c.Assert(err, IsNil) - - err = r.AddDelegatedRolesForPathHashBins("bins", hb, []*data.PublicKey{leafKey.PublicData()}, 1) - c.Assert(err, IsNil) - targets, err := r.targets("bins") - c.Assert(err, IsNil) - c.Assert(targets.Delegations.Roles, HasLen, 8) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - tmp.writeStagedTarget("foo.txt", "foo") - err = r.AddTarget("foo.txt", nil) - c.Assert(err, IsNil) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - // 1 targets.json, 1 bins.json, 8 bins_*.json. - c.Assert(snapshot.Meta, HasLen, 10) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_0-1.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_2-3.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_4-5.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_6-7.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_8-9.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_a-b.json"].Version, Equals, int64(1)) - c.Assert(snapshot.Meta["bins_c-d.json"].Version, Equals, int64(2)) - c.Assert(snapshot.Meta["bins_e-f.json"].Version, Equals, int64(1)) - - targets, err = r.targets("bins_c-d") - c.Assert(err, IsNil) - c.Assert(targets.Targets, HasLen, 1) - - checkSigKeyIDs(c, local, map[string][]string{ - "targets.json": targetsKeyIDs, - "1.bins.json": binsKey.PublicData().IDs(), - "1.bins_0-1.json": leafKey.PublicData().IDs(), - "1.bins_2-3.json": leafKey.PublicData().IDs(), - "1.bins_4-5.json": leafKey.PublicData().IDs(), - "1.bins_6-7.json": leafKey.PublicData().IDs(), - "1.bins_8-9.json": leafKey.PublicData().IDs(), - "1.bins_a-b.json": leafKey.PublicData().IDs(), - "1.bins_c-d.json": leafKey.PublicData().IDs(), - "2.bins_c-d.json": leafKey.PublicData().IDs(), - "1.bins_e-f.json": leafKey.PublicData().IDs(), - }) -} - -func (rs *RepoSuite) TestResetTargetsDelegationsWithExpires(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Add one key to each role - genKey(c, r, "root") - targetsKeyIDs := genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - // commit the metadata to the store. - c.Assert(r.AddTargets([]string{}, nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err := r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 1) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(1)) - - checkSigKeyIDs(c, local, map[string][]string{ - "1.targets.json": targetsKeyIDs, - }) - - role1Key, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - err = local.SaveSigner("role1", role1Key) - c.Assert(err, IsNil) - - // Delegate from targets -> role1 for A/*, B/* with one key, threshold 1. - role1 := data.DelegatedRole{ - Name: "role1", - KeyIDs: role1Key.PublicData().IDs(), - Paths: []string{"A/*", "B/*"}, - Threshold: 1, - } - err = r.AddDelegatedRole("targets", role1, []*data.PublicKey{ - role1Key.PublicData(), - }) - c.Assert(err, IsNil) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 2) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(2)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(1)) - - checkSigKeyIDs(c, local, map[string][]string{ - "1.targets.json": targetsKeyIDs, - "targets.json": targetsKeyIDs, - "1.role1.json": role1Key.PublicData().IDs(), - "role1.json": role1Key.PublicData().IDs(), - }) - - c.Assert(r.ResetTargetsDelegations("targets"), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - snapshot, err = r.snapshot() - c.Assert(err, IsNil) - c.Assert(snapshot.Meta, HasLen, 2) - c.Assert(snapshot.Meta["targets.json"].Version, Equals, int64(3)) - c.Assert(snapshot.Meta["role1.json"].Version, Equals, int64(1)) - - checkSigKeyIDs(c, local, map[string][]string{ - "2.targets.json": targetsKeyIDs, - "targets.json": targetsKeyIDs, - "1.role1.json": role1Key.PublicData().IDs(), - "role1.json": role1Key.PublicData().IDs(), - }) -} - -func (rs *RepoSuite) TestSignWithDelegations(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Add one key to each role - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - role1Key, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - role1 := data.DelegatedRole{ - Name: "role1", - KeyIDs: role1Key.PublicData().IDs(), - Paths: []string{"A/*", "B/*"}, - Threshold: 1, - } - err = r.AddDelegatedRole("targets", role1, []*data.PublicKey{ - role1Key.PublicData(), - }) - c.Assert(err, IsNil) - - // targets.json should be signed, but role1.json is not signed because there - // is no key in the local store. - m, err := local.GetMeta() - c.Assert(err, IsNil) - targetsMeta := &data.Signed{} - c.Assert(json.Unmarshal(m["targets.json"], targetsMeta), IsNil) - c.Assert(len(targetsMeta.Signatures), Equals, 1) - role1Meta := &data.Signed{} - c.Assert(json.Unmarshal(m["role1.json"], role1Meta), IsNil) - c.Assert(len(role1Meta.Signatures), Equals, 0) - - c.Assert(r.Snapshot(), DeepEquals, ErrInsufficientSignatures{"role1.json", verify.ErrNoSignatures}) - - // Sign role1.json. - c.Assert(local.SaveSigner("role1", role1Key), IsNil) - c.Assert(r.Sign("role1.json"), IsNil) - - m, err = local.GetMeta() - c.Assert(err, IsNil) - targetsMeta = &data.Signed{} - c.Assert(json.Unmarshal(m["targets.json"], targetsMeta), IsNil) - c.Assert(len(targetsMeta.Signatures), Equals, 1) - role1Meta = &data.Signed{} - c.Assert(json.Unmarshal(m["role1.json"], role1Meta), IsNil) - c.Assert(len(role1Meta.Signatures), Equals, 1) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) -} - -func (rs *RepoSuite) TestAddOrUpdateSignatureWithDelegations(c *C) { - tmp := newTmpDir(c) - local := FileSystemStore(tmp.path, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Add one key to each role - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - - role1Key, err := keys.GenerateEd25519Key() - c.Assert(err, IsNil) - - role1 := data.DelegatedRole{ - Name: "role1", - KeyIDs: role1Key.PublicData().IDs(), - Paths: []string{"A/*", "B/*"}, - Threshold: 1, - } - err = r.AddDelegatedRole("targets", role1, []*data.PublicKey{ - role1Key.PublicData(), - }) - c.Assert(err, IsNil) - - // targets.json should be signed, but role1.json is not signed because there - // is no key in the local store. - m, err := local.GetMeta() - c.Assert(err, IsNil) - targetsMeta := &data.Signed{} - c.Assert(json.Unmarshal(m["targets.json"], targetsMeta), IsNil) - c.Assert(len(targetsMeta.Signatures), Equals, 1) - role1Meta := &data.Signed{} - c.Assert(json.Unmarshal(m["role1.json"], role1Meta), IsNil) - c.Assert(len(role1Meta.Signatures), Equals, 0) - - c.Assert(r.Snapshot(), DeepEquals, ErrInsufficientSignatures{"role1.json", verify.ErrNoSignatures}) - - // Sign role1.json. - canonical, err := cjson.EncodeCanonical(role1Meta.Signed) - c.Assert(err, IsNil) - sig, err := role1Key.SignMessage(canonical) - c.Assert(err, IsNil) - err = r.AddOrUpdateSignature("role1.json", data.Signature{ - KeyID: role1Key.PublicData().IDs()[0], - Signature: sig, - }) - c.Assert(err, IsNil) - - m, err = local.GetMeta() - c.Assert(err, IsNil) - targetsMeta = &data.Signed{} - c.Assert(json.Unmarshal(m["targets.json"], targetsMeta), IsNil) - c.Assert(len(targetsMeta.Signatures), Equals, 1) - role1Meta = &data.Signed{} - c.Assert(json.Unmarshal(m["role1.json"], role1Meta), IsNil) - c.Assert(len(role1Meta.Signatures), Equals, 1) - - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) -} - -// Test the offline signature flow: Payload -> SignPayload -> AddSignature -func (rs *RepoSuite) TestOfflineFlow(c *C) { - // Set up repo. - meta := make(map[string]json.RawMessage) - local := MemoryStore(meta, nil) - r, err := NewRepo(local) - c.Assert(err, IsNil) - c.Assert(r.Init(false), IsNil) - // Use ECDSA because it has a newline which is a difference between JSON and cJSON. - _, err = r.GenKeyWithSchemeAndExpires("root", data.DefaultExpires("root"), data.KeySchemeECDSA_SHA2_P256) - c.Assert(err, IsNil) - - // Get the payload to sign - _, err = r.Payload("badrole.json") - c.Assert(err, Equals, ErrMissingMetadata{"badrole.json"}) - _, err = r.Payload("root") - c.Assert(err, Equals, ErrMissingMetadata{"root"}) - payload, err := r.Payload("root.json") - c.Assert(err, IsNil) - - root, err := r.SignedMeta("root.json") - c.Assert(err, IsNil) - rootCanonical, err := cjson.EncodeCanonical(root.Signed) - c.Assert(err, IsNil) - if !bytes.Equal(payload, rootCanonical) { - c.Fatalf("Payload(): not canonical.\n%s\n%s", string(payload), string(rootCanonical)) - } - - // Sign the payload - _, err = r.SignRaw("targets", payload) - c.Assert(err, Equals, ErrNoKeys{"targets"}) - signatures, err := r.SignRaw("root", payload) - c.Assert(err, IsNil) - c.Assert(len(signatures), Equals, 1) - - // Add the payload signatures back - for _, sig := range signatures { - // This method checks that the signature verifies! - err = r.AddOrUpdateSignature("root.json", sig) - c.Assert(err, IsNil) - } -} - -// Regression test: Snapshotting an invalid root should fail. -func (rs *RepoSuite) TestSnapshotWithInvalidRoot(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Init should create targets.json, but not signed yet - r.Init(false) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - - // Clear the root signature so that signature verification fails. - s, err := r.SignedMeta("root.json") - c.Assert(err, IsNil) - c.Assert(s.Signatures, HasLen, 1) - s.Signatures[0].Signature = data.HexBytes{} - b, err := r.jsonMarshal(s) - c.Assert(err, IsNil) - r.meta["root.json"] = b - local.SetMeta("root.json", b) - - // Snapshotting should fail. - c.Assert(r.Snapshot(), Equals, ErrInsufficientSignatures{ - "root.json", verify.ErrRoleThreshold{Expected: 1, Actual: 0}}) - - // Correctly sign root - c.Assert(r.Sign("root.json"), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) -} - -// Regression test: Do not omit length in target metadata files. -func (rs *RepoSuite) TestTargetMetadataLength(c *C) { - files := map[string][]byte{"foo.txt": []byte("")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - // Init should create targets.json, but not signed yet - r.Init(false) - - genKey(c, r, "root") - genKey(c, r, "targets") - genKey(c, r, "snapshot") - genKey(c, r, "timestamp") - c.Assert(r.AddTarget("foo.txt", nil), IsNil) - c.Assert(r.Snapshot(), IsNil) - c.Assert(r.Timestamp(), IsNil) - c.Assert(r.Commit(), IsNil) - - // Check length field of foo.txt exists. - meta, err := local.GetMeta() - c.Assert(err, IsNil) - targetsJSON, ok := meta["targets.json"] - if !ok { - c.Fatal("missing targets metadata") - } - s := &data.Signed{} - c.Assert(json.Unmarshal(targetsJSON, s), IsNil) - fmt.Fprint(os.Stderr, s.Signed) - var objMap map[string]json.RawMessage - c.Assert(json.Unmarshal(s.Signed, &objMap), IsNil) - targetsMap, ok := objMap["targets"] - if !ok { - c.Fatal("missing targets field in targets metadata") - } - c.Assert(json.Unmarshal(targetsMap, &objMap), IsNil) - targetsMap, ok = objMap["foo.txt"] - if !ok { - c.Fatal("missing foo.txt in targets") - } - c.Assert(json.Unmarshal(targetsMap, &objMap), IsNil) - lengthMsg, ok := objMap["length"] - if !ok { - c.Fatal("missing length field in foo.txt file meta") - } - var length int64 - c.Assert(json.Unmarshal(lengthMsg, &length), IsNil) - c.Assert(length, Equals, int64(0)) -} - -func (rs *RepoSuite) TestDeprecatedHexEncodedKeysFails(c *C) { - files := map[string][]byte{"foo.txt": []byte("foo")} - local := MemoryStore(make(map[string]json.RawMessage), files) - r, err := NewRepo(local) - c.Assert(err, IsNil) - - r.Init(false) - // Add a root key with hex-encoded ecdsa format - signer, err := keys.GenerateEcdsaKey() - c.Assert(err, IsNil) - type deprecatedP256Verifier struct { - PublicKey data.HexBytes `json:"public"` - } - pub := signer.PublicKey - keyValBytes, err := json.Marshal(&deprecatedP256Verifier{PublicKey: elliptic.Marshal(pub.Curve, pub.X, pub.Y)}) - c.Assert(err, IsNil) - publicData := &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } - err = r.AddVerificationKey("root", publicData) - c.Assert(err, IsNil) - // TODO: AddVerificationKey does no validation, so perform a sign operation. - c.Assert(r.Sign("root.json"), ErrorMatches, "tuf: error unmarshalling key: invalid PEM value") -} diff --git a/requirements-test.txt b/requirements-test.txt deleted file mode 100644 index 964791d1..00000000 --- a/requirements-test.txt +++ /dev/null @@ -1,5 +0,0 @@ -iso8601==2.1.0 -requests==2.31.0 -securesystemslib==0.31.0 -six==1.16.0 -tuf==3.1.0 diff --git a/sign/sign.go b/sign/sign.go deleted file mode 100644 index aa6d958c..00000000 --- a/sign/sign.go +++ /dev/null @@ -1,80 +0,0 @@ -package sign - -import ( - "encoding/json" - "errors" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -const maxSignatures = 1024 - -// MakeSignatures creates data.Signatures for canonical using signer k. -// -// There will be one data.Signature for each of k's IDs, each wih the same -// signature data. -func MakeSignatures(canonical []byte, k keys.Signer) ([]data.Signature, error) { - sigData, err := k.SignMessage(canonical) - if err != nil { - return nil, err - } - - ids := k.PublicData().IDs() - signatures := make([]data.Signature, 0, len(ids)) - for _, id := range ids { - signatures = append(signatures, data.Signature{ - KeyID: id, - Signature: sigData, - }) - } - - return signatures, nil -} - -// Sign signs the to-be-signed part of s using the signer k. -// -// The new signature(s) (one for each of k's key IDs) are appended to -// s.Signatures. Existing signatures for the Key IDs are replaced. -func Sign(s *data.Signed, k keys.Signer) error { - canonical, err := cjson.EncodeCanonical(s.Signed) - if err != nil { - return err - } - - size := len(s.Signatures) - if size > maxSignatures-1 { - return errors.New("value too large") - } - signatures := make([]data.Signature, 0, size+1) - for _, oldSig := range s.Signatures { - if !k.PublicData().ContainsID(oldSig.KeyID) { - signatures = append(signatures, oldSig) - } - } - - newSigs, err := MakeSignatures(canonical, k) - if err != nil { - return err - } - signatures = append(signatures, newSigs...) - - s.Signatures = signatures - return nil -} - -func Marshal(v interface{}, keys ...keys.Signer) (*data.Signed, error) { - b, err := json.Marshal(v) - if err != nil { - return nil, err - } - s := &data.Signed{Signed: b, Signatures: make([]data.Signature, 0)} - for _, k := range keys { - if err := Sign(s, k); err != nil { - return nil, err - } - - } - return s, nil -} diff --git a/testutils/repository_data/keystore/delegation_key b/testutils/repository_data/keystore/delegation_key new file mode 100644 index 00000000..461169d6 --- /dev/null +++ b/testutils/repository_data/keystore/delegation_key @@ -0,0 +1 @@ +68593a508472ad3007915379e6b1f3c0@@@@100000@@@@615986af4d1ba89aeadc2f489f89b0e8d46da133a6f75c7b162b8f99f63f86ed@@@@8319255f9856c4f40f9d71bc10e79e5d@@@@1dc7b20f1c668a1f544dc39c7a9fcb3c4a4dd34d1cc8c9d8f779bab026cf0b8e0f46e53bc5ed20bf0e5048b94a5d2ea176e79c12bcc7daa65cd55bf810deebeec5bc903ce9e5316d7dbba88f1a2b51d3f9bc782f8fa9b21dff91609ad0260e21a2039223f816d0fe97ace2e204d0025d327b38d27aa6cd87e85aa8883bfcb6d12f93155d72ffd3c7717a0570cf9811eb6d6a340baa0f27433315d83322c685fec02053ff8c173c4ebf91a258e83402f39546821e3352baa7b246e33b2a573a8ff7b289682407abbcb9184249d4304db68d3bf8e124e94377fd62dde5c4f3b7617d483776345154d047d139b1e559351577da315f54e16153c510159e1908231574bcf49c4f96cafe6530e86a09e9eee47bcff78f2fed2984754c895733938999ff085f9e3532d7174fd76dc09921506dd2137e16ec4926998f5d9df8a8ffb3e6649c71bc32571b2e24357739fa1a56be \ No newline at end of file diff --git a/testutils/repository_data/keystore/delegation_key.pub b/testutils/repository_data/keystore/delegation_key.pub new file mode 100644 index 00000000..d600bffb --- /dev/null +++ b/testutils/repository_data/keystore/delegation_key.pub @@ -0,0 +1 @@ +{"keyval": {"public": "fcf224e55fa226056adf113ef1eb3d55e308b75b321c8c8316999d8c4fd9e0d9"}, "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"]} \ No newline at end of file diff --git a/testutils/repository_data/keystore/root_key b/testutils/repository_data/keystore/root_key new file mode 100644 index 00000000..53e754d2 --- /dev/null +++ b/testutils/repository_data/keystore/root_key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQDydf/VEpxBOCDoxpM6IVhq9i67P9BiVv2zwZSUO/M0RTToAvFv +NgDKXwtnp8LyjVk++wMA1aceMa+pS7vYrKvPIJa7WIT+mwy86/fIdnllJDMw5tmL +r2mE3oBMxOhpEiD2tO+liGacklFNk6nHHorX9S91iqpdRVa3zJw5ALvLdwIDAQAB +AoGBAJlhwoUVb9nmWxNGw86LV7bapDd6qCX96CL2PDsGLdWMTmrTqc5zuE5NkBZz +z2THvISWIJE/l6gHQJv1uBDbMxfquhK40k+GfE/fApVODN8KeBLLRUzYyHNz7KwW +aNF3jY8AbO4HzWpdaFYce5r+YqlWZoaVPR9i6LCW3sZXALyRAkEA/lSVaT0azp55 +2GI4Gn+EQQFqFJWEbNwJ8i3FZ4aG+/gnw2WmxJr+2nQcUlLb2cpQCCcMyWxvCfLK ++DapvvgZXwJBAPQNd+liOrKKd1gPR3S6y+D4h1ewj8ii1MHzRtAsCKCRG/e+v+hC +xp77Rc/qtZXKvVTGrccnKqCVAvG7F15rzOkCQQDCswgKn6+0+5c1ssNWbcZWaXnH +NktBdxXaI3Ya8d7GaEwwhtIrcqilnfvMfgg2a23nP9XHIU7EI+2EJXy/aHkrAkBH +wH30u9COFW+pEDTt+M1gQzFncp2TW2w56ZB0O739lywl1osNejRzIWURD+x7MbQg +bJlC6Bz8QVMwRtVECWWhAkAflD6eIJeceDhVHClHB/QwmF8mwR1o63RN7ZFlgel1 +kwMt6bPZZ1cyrRoj6Cdi4pyqBssDBuQmbBLWyYuijIwz +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/root_key.pub b/testutils/repository_data/keystore/root_key.pub new file mode 100644 index 00000000..095c0663 --- /dev/null +++ b/testutils/repository_data/keystore/root_key.pub @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDydf/VEpxBOCDoxpM6IVhq9i67 +P9BiVv2zwZSUO/M0RTToAvFvNgDKXwtnp8LyjVk++wMA1aceMa+pS7vYrKvPIJa7 +WIT+mwy86/fIdnllJDMw5tmLr2mE3oBMxOhpEiD2tO+liGacklFNk6nHHorX9S91 +iqpdRVa3zJw5ALvLdwIDAQAB +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/root_key2 b/testutils/repository_data/keystore/root_key2 new file mode 100644 index 00000000..c2b5bdc1 --- /dev/null +++ b/testutils/repository_data/keystore/root_key2 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXwIBAAKBgQC9sG1iNSW+JbnSuITAuWL46YphgqOXU3DhGZp2hM/1FaaRzLlR +HTyH7EvzbKqlaGBs9Caatx6KlN7e8J45vpLO1PkKnLOHdKBuy39Fzxw1dhxJWvTI +0mNDv68JbWxvgRxjEPE7wc24jYubovxiiBD8g2DbOnWEkyt7owECPRlXAwIDAQAB +AoGBAKquh54oqG9yTsRXF8y6g13p9oRLIpxVjmpduWkPlHe5JYpnphBguEitzKGa +k+oGA03GWr44K5kS33/HDvhyjHFXCqniittlVUwbaa4kbJiWi4lQ3K/m8F2DzHJP +s4YaqmzG30v9j9z3nOgLhM7iye65beala72zJnGOXivUAuhRAkEA3KnfY/SFjTbo +rsluVa03hC5KVQm/yDf4wShDnl8drYHnJ1XFkSC0UbBruRyu8JeWE93dAKu9IxdK +WEdHOtxR3wJBANwQwX/wPJ8/+yo4lToyUuN0omx94sK/JuRmvi9dzCbdfQbkgvDa +MEyWc0LNwxDBPYJ2bej/ORGmD+nOJo59h10CQQCCj/x+jvrKcFfCu6qOBRyZGC6h +HFCebgfAektwFIVh2T/lNUndsgUfZIyIjeEwt/Bzts2CDRuu/KPfkeUifaPvAkEA +m9iR8FTl2bGp4cCojcpNwR88V7DfAiP1GxNX5Jt8lJmOjW8O/BrI0bRKdCjb1+XB +9b6BH9x/QexkoKOJ0qc7UQJBAINLHep9QG2b3AEGZ692Z+iyU1Lub7rWNBKsmodh +0x9rwYs0D0EJo0BYozYhExz7ugaSzXW61H26IWbHtsg+5a0= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/root_key2.pub b/testutils/repository_data/keystore/root_key2.pub new file mode 100644 index 00000000..4c8eb053 --- /dev/null +++ b/testutils/repository_data/keystore/root_key2.pub @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9sG1iNSW+JbnSuITAuWL46Yph +gqOXU3DhGZp2hM/1FaaRzLlRHTyH7EvzbKqlaGBs9Caatx6KlN7e8J45vpLO1PkK +nLOHdKBuy39Fzxw1dhxJWvTI0mNDv68JbWxvgRxjEPE7wc24jYubovxiiBD8g2Db +OnWEkyt7owECPRlXAwIDAQAB +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/snapshot_key b/testutils/repository_data/keystore/snapshot_key new file mode 100644 index 00000000..cac57dd6 --- /dev/null +++ b/testutils/repository_data/keystore/snapshot_key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQCPQoHresXRRRGoinN3bNn+BI23KolXdXLGqYkTvr9AjemUQJxb +qmvZXHboQMAYw8OuBrRNt5Fz20wjsrJwOBEU5U3nHSJI4zYPGckYci0/0Eo2Kjws +5BmIj38qgIfhsH4zyZ4FZZ+GLRn+W3i3wl6SfRMC/HCg0DDwi75faC0vGQIDAQAB +AoGAbPFYt2hf8qqhqRfQgysmA4QW+QnB895+8BCRC5DtA/xnerQ/s33AEkW8rxY+ +fxawQjEbAFbup7pHBoaoJ6qbYbKDBSGgZFSEbh40nriX1V0oYb9E+BCAFHE+42Rj +WYYNxXRp7LGoUQqisTsfoR1bvmrLC+9I/tDArHuMudm1slkCQQDOVn9AKTcaBGuQ +Y+JQqoRmi9eMN6XztKIAKQ+P/57BofwlKJDFnwttsvMxRud6rvN1FCnCDM638HNb +I0JDY0JXAkEAsb10uNV+SaWsHJOxfHzwK+uZJV1SkYzpBMizUREHuIyKT4MfpYNw +kn00KpyCvhIp6buwNyYo76TssejYN86UDwJAGi3ZSU+xYQisiQ5TOX7Y+5XEjFLH +KGuDnleXVOLOxqyBrElATQKH1aw9tMPVPLiTxQgA4FD1rVrBmA+aKaifUwJALBp8 +yhh/u7qWWIj1c5R07BEL8U+U23UBpSRACo+VQN/uuggpZCKXXmIe/avUbWGIcO0X +rreTVNOxv/utGzvxVQJBAL7Kpqt9d50SL1ndLr2EdqGw8ZB/B2dKMlZf7AWwbk0k +HHdvWfSDYhtvGo3ilLibHLesE/Tq1fm/2aEOds95/Eo= +-----END RSA PRIVATE KEY----- diff --git a/testutils/repository_data/keystore/snapshot_key.pub b/testutils/repository_data/keystore/snapshot_key.pub new file mode 100644 index 00000000..a0df8cf1 --- /dev/null +++ b/testutils/repository_data/keystore/snapshot_key.pub @@ -0,0 +1,2 @@ +{"keyval": {"public": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCG5DWxCcw4FW2G21RwTmuR7gdkv+ZrjZVOx0KsvJc/51QBxo/Y9xPVeoFF7YrhE8EV6A6b0qsLufIo1E63sQ6kjLOPfIMjag6dYPlmEyGcbxNDokv2elxZk7jS98iBQLxEmJLicrdERmxC2t2OOEQ6ELi5dt+C13QvNJFg4+OaTwIDAQAB"}, "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"]} + diff --git a/testutils/repository_data/keystore/targets_key b/testutils/repository_data/keystore/targets_key new file mode 100644 index 00000000..800dae9a --- /dev/null +++ b/testutils/repository_data/keystore/targets_key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQCjm6HPktvTGsygQ8Gvmu+zydTNe1zqoxLxV7mVRbmsCI4kn7JT +Hc4fmWZwvo7f/Wbto6Xj5HqGJFSlYIGZuTwZqPg3w8wqv8cuPxbmsFSxMoHfzBBI +uJe0FlwXFysojbdhrSUqNL84tlwTFXEhePYrpTNMDn+9T55B0WJYT/VPxwIDAQAB +AoGANYaYRLHWS1WMNq6UMmBtJZPVlDhU6MrbSqwZojWCjj7qSh8ZF0o8AmiMdDxT +wAJGZ17PyiQY1cQTEVvmaqWIfJKvipAcTvkiXFrAxeIf/HYIVfCP9UB8RqhJufsc +XzDQyvZTmJdatHfKe2JV+q42GrsN4VN61wFEed3NuF8NGjECQQDSA5b+N1wMn5X4 +G5fxPYjhlwQmK3tlBHIPIVcVAsGOxU9Ry55xLQ8LpfKwJZIt2+LvgBIXf4DZY2u6 +GEnyR7epAkEAx267l7XX+9Dh8bHPluQSgH/tDrCp1hUNmyV4XzZCwavI/FaucANa +h8ChpUOSZTq5mR76YaUL7O3Sx8N7L/2x7wJAZDvgYf6sCT5VhnAtCa+T2A+KpGkW +YLVJdt0zwcxp8ylK3UAwo9Wcm7Oda+LSrN6IpkRa3io1pguki9Ix4NfH2QJATsXA +NxZOb1p8RFk1Y6ZGYJcm7Wx+SN8b9rIAL6thBtpxkqoyUHAirAg8UOi1xGJDuOVx +hGwKn9T4MotV9wi/5QJAB+1/2TaUMKjyL5Ca8Fh5SMigrwHp8SnX2vl7HV4hiBXi +0FaVxMPGH94tuFqHQ+q53tiTT1cp6YwcMMgpezTRRA== +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/targets_key.pub b/testutils/repository_data/keystore/targets_key.pub new file mode 100644 index 00000000..21fae67c --- /dev/null +++ b/testutils/repository_data/keystore/targets_key.pub @@ -0,0 +1 @@ +{"keyval": {"public": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjm6HPktvTGsygQ8Gvmu+zydTNe1zqoxLxV7mVRbmsCI4kn7JTHc4fmWZwvo7f/Wbto6Xj5HqGJFSlYIGZuTwZqPg3w8wqv8cuPxbmsFSxMoHfzBBIuJe0FlwXFysojbdhrSUqNL84tlwTFXEhePYrpTNMDn+9T55B0WJYT/VPxwIDAQAB"}, "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"]} \ No newline at end of file diff --git a/testutils/repository_data/keystore/timestamp_key b/testutils/repository_data/keystore/timestamp_key new file mode 100644 index 00000000..4d5bbddb --- /dev/null +++ b/testutils/repository_data/keystore/timestamp_key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWgIBAAKBgHXjYnWGuCIOh5T3XGmgG/RsXWHPTbyu7OImP6O+uHg8hui8C1nY +/mcJdFdxqgl1vKEco/Nwebh2T8L6XbNfcgV9VVstWpeCalZYWi55lZSLe9KixQIA +yg15rNdhN9pcD3OuLmFvslgTx+dTbZ3ZoYMbcb4C5yqvqzcOoCTQMeWbAgMBAAEC +gYAMlDvAUKS7NZOwCIj62FPDTADW2/juhjfOlcg6n7ItWkAG+3G2n5ndwruATSeY +pNCA3H5+DmVeknlGU9LFvgx7dhJMw3WSkq7rImOGbwLN1jCVfwKP0AEEqb7GrtCU +a9lvm2ZFvKj+2VVFS2yifeluDG1Xm10ygq+RDd2lL2g6eQJBAMZrMTUwxWT/Cc0j +Yi7CFPl9V8GkYzLCKRQGR3x4QiNuXpNtQ3D+ivxHieBMEtw6M244PMDC+GpLxAfc +DtiGEl8CQQCYGXeycwkgn2YfH3w1/Mw6TWsdv4rVLPOieiQPrhZbVsBc6NT24MYW +b3c7osW5ypf7lo+xU8E6ylFUyeeVSk5FAkADTAqwSJQvHnHKP9lEz6LLloKbzCB9 +2m4WUBhmABWRQyc9Keah/QjQMlwfJwR1Nl5eaX7Q8Sxxj7q9KrHwdSHfAkAS1yTC +kAlTZytJM6c5MMVDe4+HMdDKszTCrYqF/rR6P/a4C4dFxXYEFW6ZjoIbj4LgAThv +aMaIt8L3U8NB9OBZAkA3ke4kilnVnjEyB9ibJ/SbDiUgh7e7M/XDbNQuXwSipFft +keBYEwL4Njms9uwMT4Gl59HyQls7BE2XEoiFjsY1 +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/testutils/repository_data/keystore/timestamp_key.pub b/testutils/repository_data/keystore/timestamp_key.pub new file mode 100644 index 00000000..6edc5c95 --- /dev/null +++ b/testutils/repository_data/keystore/timestamp_key.pub @@ -0,0 +1 @@ +{"keyval": {"public": "MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHXjYnWGuCIOh5T3XGmgG/RsXWHPTbyu7OImP6O+uHg8hui8C1nY/mcJdFdxqgl1vKEco/Nwebh2T8L6XbNfcgV9VVstWpeCalZYWi55lZSLe9KixQIAyg15rNdhN9pcD3OuLmFvslgTx+dTbZ3ZoYMbcb4C5yqvqzcOoCTQMeWbAgMBAAE="}, "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"]} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/1.root.json b/testutils/repository_data/repository/metadata/1.root.json new file mode 100644 index 00000000..21cb5877 --- /dev/null +++ b/testutils/repository_data/repository/metadata/1.root.json @@ -0,0 +1,72 @@ +{ + "signatures": [ + { + "keyid": "d5fa855fce82db75ec64283e828cc90517df5edf5cdc57e7958a890d6556f5b7", + "sig": "1307990e6ba5ca145eb35e99182a9bec46531bc54ddf656a602c780fa0240dee" + } + ], + "signed": { + "_type": "root", + "consistent_snapshot": true, + "expires": "2030-08-15T14:30:45.0000001Z", + "keys": { + "0a5842e65e9c8c428354f40708435de6793ac379a275effe40d6358be2de835c": { + "keytype": "ed25519", + "keyval": { + "public": "4e10fe156f07e6f6e1f6fb1579105b7d3e62790b6a62dbf7727b91f82d2bc9db" + }, + "scheme": "ed25519" + }, + "409fb816e403e0c00646665eac21cb8adfab8e318272ca7589b2d1fc0bccb255": { + "keytype": "ed25519", + "keyval": { + "public": "23e5dc4eb18d5c116e76a92b02e44a7d7279622574457050b85fb8fd9260422c" + }, + "scheme": "ed25519" + }, + "700464ea12f4cb5f06a7512c75b73c0b6eeb2cd42854b085eed5b3c993607cba": { + "keytype": "ed25519", + "keyval": { + "public": "1603f99998ca46c35c238a2c1a2a015e0f32b38771e4fa5401348ce0a677d63f" + }, + "scheme": "ed25519" + }, + "d5fa855fce82db75ec64283e828cc90517df5edf5cdc57e7958a890d6556f5b7": { + "keytype": "ed25519", + "keyval": { + "public": "17454b5e7a6594e7f00ceadda10d0267b94d0118b82f541f4f69f0d327c5a41a" + }, + "scheme": "ed25519" + } + }, + "roles": { + "root": { + "keyids": [ + "d5fa855fce82db75ec64283e828cc90517df5edf5cdc57e7958a890d6556f5b7" + ], + "threshold": 1 + }, + "snapshot": { + "keyids": [ + "700464ea12f4cb5f06a7512c75b73c0b6eeb2cd42854b085eed5b3c993607cba" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "409fb816e403e0c00646665eac21cb8adfab8e318272ca7589b2d1fc0bccb255" + ], + "threshold": 1 + }, + "timestamp": { + "keyids": [ + "0a5842e65e9c8c428354f40708435de6793ac379a275effe40d6358be2de835c" + ], + "threshold": 1 + } + }, + "spec_version": "1.0.31", + "version": 1, + "test": "true" + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/role1.json b/testutils/repository_data/repository/metadata/role1.json new file mode 100644 index 00000000..0ac4687e --- /dev/null +++ b/testutils/repository_data/repository/metadata/role1.json @@ -0,0 +1,49 @@ +{ + "signatures": [ + { + "keyid": "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a", + "sig": "9408b46569e622a46f1d35d9fa3c10e17a9285631ced4f2c9c2bba2c2842413fcb796db4e81d6f988fc056c21c407fdc3c10441592cf1e837e088f2e2dfd5403" + } + ], + "signed": { + "_type": "targets", + "delegations": { + "keys": { + "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a": { + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keytype": "ed25519", + "keyval": { + "public": "fcf224e55fa226056adf113ef1eb3d55e308b75b321c8c8316999d8c4fd9e0d9" + }, + "scheme": "ed25519" + } + }, + "roles": [ + { + "keyids": [ + "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a" + ], + "name": "role2", + "paths": [], + "terminating": false, + "threshold": 1 + } + ] + }, + "expires": "2030-01-01T00:00:00Z", + "spec_version": "1.0.0", + "targets": { + "file3.txt": { + "hashes": { + "sha256": "141f740f53781d1ca54b8a50af22cbf74e44c21a998fa2a8a05aaac2c002886b", + "sha512": "ef5beafa16041bcdd2937140afebd485296cd54f7348ecd5a4d035c09759608de467a7ac0eb58753d0242df873c305e8bffad2454aa48f44480f15efae1cacd0" + }, + "length": 28 + } + }, + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/role2.json b/testutils/repository_data/repository/metadata/role2.json new file mode 100644 index 00000000..9c49e165 --- /dev/null +++ b/testutils/repository_data/repository/metadata/role2.json @@ -0,0 +1,15 @@ +{ + "signatures": [ + { + "keyid": "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a", + "sig": "75b196a224fd200e46e738b1216b3316c5384f61083872f8d14b8b0a378b2344e64b1a6f1a89a711206a66a0b199d65ac0e30fe15ddbc4de89fa8ff645f99403" + } + ], + "signed": { + "_type": "targets", + "expires": "2030-01-01T00:00:00Z", + "spec_version": "1.0.0", + "targets": {}, + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/root.json b/testutils/repository_data/repository/metadata/root.json new file mode 100644 index 00000000..584a3ec9 --- /dev/null +++ b/testutils/repository_data/repository/metadata/root.json @@ -0,0 +1,71 @@ +{ + "signatures": [ + { + "keyid": "74b58be26a6ff00ab2eec9b14da29038591a69c212223033f4efdf24489913f2", + "sig": "d0283ac0653e324ce132e47a518f8a1539b59430efe5cdec58ec53f824bec28628b57dd5fb2452bde83fc8f5d11ab0b7350a9bbcbefc7acc6c447785545fa1e36f1352c9e20dd1ebcc3ab16a2a7ff702e32e481ceba88e0f348dc2cddd26ca577445d00c7194e8656d901fd2382c479555af93a64eef48cf79cdff6ecdcd7cb7" + } + ], + "signed": { + "_type": "root", + "consistent_snapshot": true, + "expires": "2030-08-15T14:30:45.0000001Z", + "keys": { + "142919f8e933d7045abff3be450070057814da36331d7a22ccade8b35a9e3946": { + "keytype": "rsa", + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHXjYnWGuCIOh5T3XGmgG/RsXWHP\nTbyu7OImP6O+uHg8hui8C1nY/mcJdFdxqgl1vKEco/Nwebh2T8L6XbNfcgV9VVst\nWpeCalZYWi55lZSLe9KixQIAyg15rNdhN9pcD3OuLmFvslgTx+dTbZ3ZoYMbcb4C\n5yqvqzcOoCTQMeWbAgMBAAE=\n-----END PUBLIC KEY-----\n" + }, + "scheme": "rsassa-pss-sha256" + }, + "282612f348dcd7fe3f19e0f890e89fad48d45335deeb91deef92873934e6fe6d": { + "keytype": "rsa", + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjm6HPktvTGsygQ8Gvmu+zydTN\ne1zqoxLxV7mVRbmsCI4kn7JTHc4fmWZwvo7f/Wbto6Xj5HqGJFSlYIGZuTwZqPg3\nw8wqv8cuPxbmsFSxMoHfzBBIuJe0FlwXFysojbdhrSUqNL84tlwTFXEhePYrpTNM\nDn+9T55B0WJYT/VPxwIDAQAB\n-----END PUBLIC KEY-----\n" + }, + "scheme": "rsassa-pss-sha256" + }, + "74b58be26a6ff00ab2eec9b14da29038591a69c212223033f4efdf24489913f2": { + "keytype": "rsa", + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDydf/VEpxBOCDoxpM6IVhq9i67\nP9BiVv2zwZSUO/M0RTToAvFvNgDKXwtnp8LyjVk++wMA1aceMa+pS7vYrKvPIJa7\nWIT+mwy86/fIdnllJDMw5tmLr2mE3oBMxOhpEiD2tO+liGacklFNk6nHHorX9S91\niqpdRVa3zJw5ALvLdwIDAQAB\n-----END PUBLIC KEY-----\n" + }, + "scheme": "rsassa-pss-sha256" + }, + "8a14f637b21578cc292a67899df0e46cc160d7fd56e9beae898adb666f4fd9d6": { + "keytype": "rsa", + "keyval": { + "public": "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPQoHresXRRRGoinN3bNn+BI23\nKolXdXLGqYkTvr9AjemUQJxbqmvZXHboQMAYw8OuBrRNt5Fz20wjsrJwOBEU5U3n\nHSJI4zYPGckYci0/0Eo2Kjws5BmIj38qgIfhsH4zyZ4FZZ+GLRn+W3i3wl6SfRMC\n/HCg0DDwi75faC0vGQIDAQAB\n-----END PUBLIC KEY-----\n" + }, + "scheme": "rsassa-pss-sha256" + } + }, + "roles": { + "root": { + "keyids": [ + "74b58be26a6ff00ab2eec9b14da29038591a69c212223033f4efdf24489913f2" + ], + "threshold": 1 + }, + "snapshot": { + "keyids": [ + "8a14f637b21578cc292a67899df0e46cc160d7fd56e9beae898adb666f4fd9d6" + ], + "threshold": 1 + }, + "targets": { + "keyids": [ + "282612f348dcd7fe3f19e0f890e89fad48d45335deeb91deef92873934e6fe6d" + ], + "threshold": 1 + }, + "timestamp": { + "keyids": [ + "142919f8e933d7045abff3be450070057814da36331d7a22ccade8b35a9e3946" + ], + "threshold": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/snapshot.json b/testutils/repository_data/repository/metadata/snapshot.json new file mode 100644 index 00000000..ed379e01 --- /dev/null +++ b/testutils/repository_data/repository/metadata/snapshot.json @@ -0,0 +1,25 @@ +{ + "signatures": [ + { + "keyid": "8a14f637b21578cc292a67899df0e46cc160d7fd56e9beae898adb666f4fd9d6", + "sig": "3075fe9ef3008603eb0531500a93101b8f7eb52b07ce63fb71abaffd5eb20784bcab888abfca8041798b13dd35c6e18ff4a64d536161c4d5e7535f006edec3a46c71684a632269222da82d50bf380e20eb477032e45df0b44af9e1dc46f25cd72f9901b4fc41b90869649b6257a66188b61b83c7295baf16f113e9cc4d39b3a6" + } + ], + "signed": { + "_type": "snapshot", + "expires": "2030-08-15T14:30:45.0000001Z", + "meta": { + "role1.json": { + "version": 1 + }, + "role2.json": { + "version": 1 + }, + "targets.json": { + "version": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/targets.json b/testutils/repository_data/repository/metadata/targets.json new file mode 100644 index 00000000..41399c90 --- /dev/null +++ b/testutils/repository_data/repository/metadata/targets.json @@ -0,0 +1,50 @@ +{ + "signatures": [ + { + "keyid": "282612f348dcd7fe3f19e0f890e89fad48d45335deeb91deef92873934e6fe6d", + "sig": "80cd125a4b128c9508df8bc6f71ad2ed9896a9e7afccd53fca9e7dbc2f02db69c3ae712234d3730c929d891fa035bdf059736e7debf62cbac6f0e8d22ab0c5de3b3e47b249eb0d41dea66d9fda9588893cde824a95614129263b6fed72fafb21cd7114e603fe3a30e3871e9eb5b5029e3e9a8353190f1bcb332a81ec211a93eb" + } + ], + "signed": { + "_type": "targets", + "delegations": { + "keys": { + "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a": { + "keyid_hash_algorithms": [ + "sha256", + "sha512" + ], + "keytype": "ed25519", + "keyval": { + "public": "fcf224e55fa226056adf113ef1eb3d55e308b75b321c8c8316999d8c4fd9e0d9" + }, + "scheme": "ed25519" + } + }, + "roles": [ + { + "keyids": [ + "c8022fa1e9b9cb239a6b362bbdffa9649e61ad2cb699d2e4bc4fdf7930a0e64a" + ], + "name": "role1", + "paths": [ + "file3.txt" + ], + "terminating": false, + "threshold": 1 + } + ] + }, + "expires": "2030-08-15T14:30:45.0000001Z", + "spec_version": "1.0.31", + "targets": { + "file1.txt": { + "hashes": { + "sha256": "65b8c67f51c993d898250f40aa57a317d854900b3a04895464313e48785440da" + }, + "length": 31 + } + }, + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/metadata/timestamp.json b/testutils/repository_data/repository/metadata/timestamp.json new file mode 100644 index 00000000..aa11c742 --- /dev/null +++ b/testutils/repository_data/repository/metadata/timestamp.json @@ -0,0 +1,19 @@ +{ + "signatures": [ + { + "keyid": "142919f8e933d7045abff3be450070057814da36331d7a22ccade8b35a9e3946", + "sig": "639c9ce3dbb705265b5e9ad6d67fea2b38780c48ff7917e372adace8e50a7a2f054383d5960457a113059be521b8ce7e6d8a5787c600c4850b8c0ed1ae17a931a6bfe794476e7824c6f53df5232561e0a2e146b11dde7889b397c6f8136e2105bbb21b4b59b5addc032a0e755d97e531255f3b458d474184168541e542626e81" + } + ], + "signed": { + "_type": "timestamp", + "expires": "2030-08-15T14:30:45.0000001Z", + "meta": { + "snapshot.json": { + "version": 1 + } + }, + "spec_version": "1.0.31", + "version": 1 + } +} \ No newline at end of file diff --git a/testutils/repository_data/repository/targets/file1.txt b/testutils/repository_data/repository/targets/file1.txt new file mode 100644 index 00000000..7bf3499f --- /dev/null +++ b/testutils/repository_data/repository/targets/file1.txt @@ -0,0 +1 @@ +This is an example target file. \ No newline at end of file diff --git a/testutils/repository_data/repository/targets/file2.txt b/testutils/repository_data/repository/targets/file2.txt new file mode 100644 index 00000000..606f18ef --- /dev/null +++ b/testutils/repository_data/repository/targets/file2.txt @@ -0,0 +1 @@ +This is an another example target file. \ No newline at end of file diff --git a/testutils/repository_data/repository/targets/file3.txt b/testutils/repository_data/repository/targets/file3.txt new file mode 100644 index 00000000..60464604 --- /dev/null +++ b/testutils/repository_data/repository/targets/file3.txt @@ -0,0 +1 @@ +This is role1's target file. \ No newline at end of file diff --git a/testutils/simulator/repository_simulator.go b/testutils/simulator/repository_simulator.go new file mode 100644 index 00000000..3d45b68a --- /dev/null +++ b/testutils/simulator/repository_simulator.go @@ -0,0 +1,620 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package simulator + +// Test utility to simulate a repository + +// RepositorySimulator provides methods to modify repository metadata so that it's +// easy to "publish" new repository versions with modified metadata, while serving +// the versions to client test code. + +// RepositorySimulator implements FetcherInterface so Updaters in tests can use it +// as a way to "download" new metadata from remote: in practice no downloading, +// network connections or even file access happens as RepositorySimulator serves +// everything from memory. + +// Metadata and targets "hosted" by the simulator are made available in URL paths +// "/metadata/..." and "/targets/..." respectively. + +// Example:: + +// // Initialize repository with top-level metadata +// sim := simulator.NewRepository() + +// // metadata can be modified directly: it is immediately available to clients +// sim.Snapshot.Version += 1 + +// // As an exception, new root versions require explicit publishing +// sim.Root.Version += 1 +// sim.PublishRoot() + +// // there are helper functions +// sim.AddTarget("targets", b"content", "targetpath") +// sim.Targets.Version += 1 +// sim.UpdateSnapshot() +// """ + +import ( + "bytes" + "crypto" + "crypto/ed25519" + "crypto/sha256" + "fmt" + "net/url" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + "github.com/sigstore/sigstore/pkg/signature" + log "github.com/sirupsen/logrus" + "github.com/theupdateframework/go-tuf/v2/metadata" + "github.com/theupdateframework/go-tuf/v2/metadata/fetcher" +) + +var SPEC_VER = "." + metadata.SPECIFICATION_VERSION + +type FTMetadata struct { + Name string + Value int +} + +type FTTargets struct { + Name string + Value *string +} + +// FetchTracker contains actual target data +// and the related target metadata +type FetchTracker struct { + Metadata []FTMetadata + Targets []FTTargets +} + +// RepositoryTarget contains actual target data +// and the related target metadata +type RepositoryTarget struct { + Data []byte + TargetFile *metadata.TargetFiles +} + +// RepositorySimulator simulates a repository that can be used for testing +type RepositorySimulator struct { + fetcher.Fetcher + MDDelegates map[string]metadata.Metadata[metadata.TargetsType] + SignedRoots [][]byte + Signers map[string]map[string]*signature.Signer + TargetFiles map[string]RepositoryTarget + ComputeMetafileHashesAndLength bool + PrefixTargetsWithHash bool + DumpDir string + DumpVersion int64 + FetchTracker FetchTracker + SafeExpiry time.Time + MDTargets *metadata.Metadata[metadata.TargetsType] + MDSnapshot *metadata.Metadata[metadata.SnapshotType] + MDTimestamp *metadata.Metadata[metadata.TimestampType] + MDRoot *metadata.Metadata[metadata.RootType] + LocalDir string +} + +// New initializes a RepositorySimulator +func NewRepository() *RepositorySimulator { + now := time.Now().UTC() + + rs := RepositorySimulator{ + MDDelegates: map[string]metadata.Metadata[metadata.TargetsType]{}, + + // Other metadata is signed on-demand (when fetched) but roots must be + // explicitly published with PublishRoot() which maintains this list + SignedRoots: [][]byte{}, + + // Signers are used on-demand at fetch time to sign metadata + // keys are roles, values are map of {keyid: signer} + Signers: make(map[string]map[string]*signature.Signer), + + // Target downloads are served from this map + TargetFiles: make(map[string]RepositoryTarget), + + // Whether to compute hashes and length for meta in snapshot/timestamp + ComputeMetafileHashesAndLength: false, + + // Enable hash-prefixed target file names + PrefixTargetsWithHash: true, + + DumpDir: "", + DumpVersion: 0, + + FetchTracker: FetchTracker{ + Metadata: []FTMetadata{}, + Targets: []FTTargets{}, + }, + + SafeExpiry: now.Truncate(time.Second).AddDate(0, 0, 30), + } + rs.setupMinimalValidRepository() + + return &rs +} + +func (rs *RepositorySimulator) setupMinimalValidRepository() { + rs.MDTargets = metadata.Targets(rs.SafeExpiry) + rs.MDSnapshot = metadata.Snapshot(rs.SafeExpiry) + rs.MDTimestamp = metadata.Timestamp(rs.SafeExpiry) + rs.MDRoot = metadata.Root(rs.SafeExpiry) + + for _, role := range metadata.TOP_LEVEL_ROLE_NAMES { + publicKey, _, signer := CreateKey() + + mtdkey, err := metadata.KeyFromPublicKey(*publicKey) + if err != nil { + log.Fatalf("repository simulator: key conversion failed while setting repository: %v", err) + } + + err = rs.MDRoot.Signed.AddKey(mtdkey, role) + if err != nil { + log.Debugf("repository simulator: failed to add key: %v", err) + } + rs.AddSigner(role, mtdkey.ID(), *signer) + } + + rs.PublishRoot() +} + +func (rs *RepositorySimulator) Root() metadata.RootType { + return rs.MDRoot.Signed +} + +func (rs *RepositorySimulator) Timestamp() metadata.TimestampType { + return rs.MDTimestamp.Signed +} + +func (rs *RepositorySimulator) Snapshot() metadata.SnapshotType { + return rs.MDSnapshot.Signed +} + +func (rs *RepositorySimulator) Targets() metadata.TargetsType { + return rs.MDTargets.Signed +} + +// AllTargets allows receiving role name and signed portion of targets one by one +func (rs *RepositorySimulator) AllTargets() <-chan metadata.TargetsType { + ch := make(chan metadata.TargetsType) + go func() { + ch <- rs.MDTargets.Signed + for role, md := range rs.MDDelegates { + targets := metadata.TargetsType{ + Type: role, + Version: md.Signed.Version, + Delegations: md.Signed.Delegations, + } + ch <- targets + } + close(ch) + }() + return ch +} + +func CreateKey() (*ed25519.PublicKey, *ed25519.PrivateKey, *signature.Signer) { + public, private, err := ed25519.GenerateKey(nil) + if err != nil { + log.Printf("failed to generate key: %v", err) + } + + signer, err := signature.LoadSigner(private, crypto.Hash(0)) + if err != nil { + log.Printf("failed to load signer: %v", err) + } + return &public, &private, &signer +} + +func (rs *RepositorySimulator) AddSigner(role string, keyID string, signer signature.Signer) { + if _, ok := rs.Signers[role]; !ok { + rs.Signers[role] = make(map[string]*signature.Signer) + } + rs.Signers[role][keyID] = &signer +} + +// RotateKeys removes all keys for role, then add threshold of new keys +func (rs *RepositorySimulator) RotateKeys(role string) { + rs.MDRoot.Signed.Roles[role].KeyIDs = []string{} + for k := range rs.Signers[role] { + delete(rs.Signers[role], k) + } + for i := 0; i < rs.MDRoot.Signed.Roles[role].Threshold; i++ { + + publicKey, _, signer := CreateKey() + mtdkey, err := metadata.KeyFromPublicKey(*publicKey) + if err != nil { + log.Fatalf("repository simulator: key conversion failed while rotating keys: %v", err) + } + err = rs.MDRoot.Signed.AddKey(mtdkey, role) + if err != nil { + log.Debugf("repository simulator: failed to add key: %v", err) + } + rs.AddSigner(role, mtdkey.ID(), *signer) + } +} + +// PublishRoot signs and stores a new serialized version of root +func (rs *RepositorySimulator) PublishRoot() { + rs.MDRoot.ClearSignatures() + for _, signer := range rs.Signers[metadata.ROOT] { + _, err := rs.MDRoot.Sign(*signer) + if err != nil { + log.Debugf("repository simulator: failed to sign root: %v", err) + } + } + + mtd, err := rs.MDRoot.MarshalJSON() + if err != nil { + log.Debugf("failed to marshal metadata while publishing root: %v", err) + } + rs.SignedRoots = append(rs.SignedRoots, mtd) + log.Debugf("published root v%d", rs.MDRoot.Signed.Version) +} + +func lastIndex(str string, delimiter string) (string, string, string) { + // TODO: check if contained and lengths + spl := strings.Split(str, delimiter) + res := strings.SplitAfterN(str, delimiter, len(spl)-1) + return res[0], delimiter, res[1] +} + +func partition(s string, delimiter string) (string, string) { + splitted := strings.Split(s, delimiter) + version := "" + role := "" + switch len(splitted) { + case 1: + role = splitted[0] + case 2: + version = splitted[0] + role = splitted[1] + case 3: + version = splitted[0] + if splitted[1] == "" && splitted[2] == "" { + role = "." + } + case 4: + version = splitted[0] + if splitted[1] == "" && splitted[2] == "" && splitted[3] == "" { + role = ".." + } + } + return version, role +} + +func (rs *RepositorySimulator) DownloadFile(urlPath string, maxLength int64, timeout time.Duration) ([]byte, error) { + data, err := rs.fetch(urlPath) + if err != nil { + return data, err + } + if len(data) > int(maxLength) { + err = metadata.ErrDownloadLengthMismatch{ + Msg: fmt.Sprintf("Downloaded %d bytes exceeding the maximum allowed length of %d", len(data), maxLength), + } + } + return data, err +} + +func (rs *RepositorySimulator) fetch(urlPath string) ([]byte, error) { + parsedURL, _ := url.Parse(urlPath) + path := strings.TrimPrefix(parsedURL.Path, rs.LocalDir) + if strings.HasPrefix(path, "/metadata/") && strings.HasSuffix(path, ".json") { + fileName := path[len("/metadata/"):] + verAndName := fileName[:len(path)-len("/metadata/")-len(".json")] + versionStr, role := partition(verAndName, ".") + var version int + var err error + if role == metadata.ROOT || (rs.MDRoot.Signed.ConsistentSnapshot && verAndName != metadata.TIMESTAMP) { + version, err = strconv.Atoi(versionStr) + if err != nil { + log.Printf("repository simulator: downloading file: failed to convert version: %v", err) + } + } else { + role = verAndName + version = -1 + } + return rs.FetchMetadata(role, &version) + } else if strings.HasPrefix(path, "/targets/") { + targetPath := path[len("/targets/"):] + dirParts, sep, prefixedFilename := lastIndex(targetPath, "/") + var filename string + prefix := "" + filename = prefixedFilename + if rs.MDRoot.Signed.ConsistentSnapshot && rs.PrefixTargetsWithHash { + prefix, filename = partition(prefixedFilename, ".") + } + targetPath = fmt.Sprintf("%s%s%s", dirParts, sep, filename) + target, err := rs.FetchTarget(targetPath, prefix) + if err != nil { + log.Printf("failed to fetch target: %v", err) + } + return target, err + } + return nil, nil +} + +// FetchTarget returns data for 'targetPath', checking 'targetHash' if it is given. +// If hash is None, then consistentSnapshot is not used +func (rs *RepositorySimulator) FetchTarget(targetPath string, targetHash string) ([]byte, error) { + rs.FetchTracker.Targets = append(rs.FetchTracker.Targets, FTTargets{Name: targetPath, Value: &targetHash}) + repoTarget, ok := rs.TargetFiles[targetPath] + if !ok { + return nil, fmt.Errorf("no target %s", targetPath) + } + if targetHash != "" && !contains(repoTarget.TargetFile.Hashes, []byte(targetHash)) { + return nil, fmt.Errorf("hash mismatch for %s", targetPath) + } + log.Printf("fetched target %s", targetPath) + return repoTarget.Data, nil +} + +func contains(hashes map[string]metadata.HexBytes, targetHash []byte) bool { + for _, value := range hashes { + if bytes.Equal(value, targetHash) { + return true + } + } + return false +} + +// FetchMetadata returns signed metadata for 'role', using 'version' if it is given. +// If version is None, non-versioned metadata is being requested +func (rs *RepositorySimulator) FetchMetadata(role string, version *int) ([]byte, error) { + rs.FetchTracker.Metadata = append(rs.FetchTracker.Metadata, FTMetadata{Name: role, Value: *version}) + // Decode role for the metadata + // role, _ = strconv.Unquote(role) + if role == metadata.ROOT { + // Return a version previously serialized in PublishRoot() + if version == nil || *version > len(rs.SignedRoots) && *version > 0 { + log.Printf("unknown root version %d", *version) + return []byte{}, metadata.ErrDownloadHTTP{StatusCode: 404} + } + log.Printf("fetched root version %d", version) + return rs.SignedRoots[*version-1], nil + } + + // Sign and serialize the requested metadata + if role == metadata.TIMESTAMP { + return signMetadata(role, rs.MDTimestamp, rs) + } else if role == metadata.SNAPSHOT { + return signMetadata(role, rs.MDSnapshot, rs) + } else if role == metadata.TARGETS { + return signMetadata(role, rs.MDTargets, rs) + } else { + md, ok := rs.MDDelegates[role] + if !ok { + log.Printf("unknown role %s", role) + return []byte{}, metadata.ErrDownloadHTTP{StatusCode: 404} + } + return signMetadata(role, &md, rs) + } +} + +func signMetadata[T metadata.Roles](role string, md *metadata.Metadata[T], rs *RepositorySimulator) ([]byte, error) { + md.Signatures = []metadata.Signature{} + for _, signer := range rs.Signers[role] { + // TODO: check if a bool argument should be added to Sign as in python-tuf + // Not appending only for a local repo example !!! missing type for signers + _, err := md.Sign(*signer) + if err != nil { + log.Debugf("repository simulator: failed to sign metadata: %v", err) + } + } + // TODO: test if the version is the correct one + // log.Printf("fetched %s v%d with %d sigs", role, md.GetVersion(), len(rs.Signers[role])) + mtd, err := md.MarshalJSON() + if err != nil { + log.Printf("failed to marshal metadata while signing for role %s: %v", role, err) + } + return mtd, err +} + +func (rs *RepositorySimulator) computeHashesAndLength(role string) (map[string]metadata.HexBytes, int) { + noVersion := -1 + data, err := rs.FetchMetadata(role, &noVersion) + if err != nil { + log.Debugf("failed to fetch metadata: %v", err) + } + digest := sha256.Sum256(data) + hashes := map[string]metadata.HexBytes{"sha256": digest[:]} + return hashes, len(data) +} + +// UpdateTimestamp updates timestamp and assign snapshot version +// to snapshot meta version +func (rs *RepositorySimulator) UpdateTimestamp() { + hashes := make(map[string]metadata.HexBytes) + length := 0 + if rs.ComputeMetafileHashesAndLength { + hashes, length = rs.computeHashesAndLength(metadata.SNAPSHOT) + } + rs.MDTimestamp.Signed.Meta[fmt.Sprintf("%s.json", metadata.SNAPSHOT)] = &metadata.MetaFiles{ + Length: int64(length), + Hashes: hashes, + Version: rs.MDSnapshot.Signed.Version, + } + + rs.MDTimestamp.Signed.Version += 1 +} + +// UpdateSnapshot updates snapshot, assigns targets versions +// and updates timestamp +func (rs *RepositorySimulator) UpdateSnapshot() { + for target := range rs.AllTargets() { + hashes := make(map[string]metadata.HexBytes) + length := 0 + if rs.ComputeMetafileHashesAndLength { + hashes, length = rs.computeHashesAndLength(target.Type) + } + + rs.MDSnapshot.Signed.Meta[fmt.Sprintf("%s.json", target.Type)] = &metadata.MetaFiles{ + Length: int64(length), + Hashes: hashes, + Version: target.Version, + } + } + rs.MDSnapshot.Signed.Version += 1 + rs.UpdateTimestamp() +} + +// Given a delegator name return, its corresponding TargetsType object +func (rs *RepositorySimulator) getDelegator(delegatorName string) *metadata.TargetsType { + if delegatorName == metadata.TARGETS { + return &rs.MDTargets.Signed + } + delegation := rs.MDDelegates[delegatorName] + return &delegation.Signed +} + +// AddTarget creates a target from data and adds it to the TargetFiles. +func (rs *RepositorySimulator) AddTarget(role string, data []byte, path string) { + targets := rs.getDelegator(role) + target, err := metadata.TargetFile().FromBytes(path, data, "sha256") + if err != nil { + log.Panicf("failed to add target from %s: %v", path, err) + } + targets.Targets[path] = target + rs.TargetFiles[path] = RepositoryTarget{ + Data: data, + TargetFile: target, + } +} + +// AddDelegation adds delegated target role to the repository +func (rs *RepositorySimulator) AddDelegation(delegatorName string, role metadata.DelegatedRole, targets metadata.TargetsType) { + delegator := rs.getDelegator(delegatorName) + if delegator.Delegations != nil && delegator.Delegations.SuccinctRoles != nil { + log.Fatalln("can't add a role when SuccinctRoles is used") + } + // Create delegation + if delegator.Delegations == nil { + delegator.Delegations = &metadata.Delegations{ + Keys: map[string]*metadata.Key{}, + Roles: []metadata.DelegatedRole{}, + } + } + // Put delegation last by default + delegator.Delegations.Roles = append(delegator.Delegations.Roles, role) + + // By default add one new key for the role + publicKey, _, signer := CreateKey() + mdkey, err := metadata.KeyFromPublicKey(*publicKey) + if err != nil { + log.Fatalf("repository simulator: key conversion failed while adding delegation: %v", err) + } + err = delegator.AddKey(mdkey, role.Name) + if err != nil { + log.Debugf("repository simulator: failed to add key: %v", err) + } + rs.AddSigner(role.Name, mdkey.ID(), *signer) + if _, ok := rs.MDDelegates[role.Name]; !ok { + rs.MDDelegates[role.Name] = metadata.Metadata[metadata.TargetsType]{ + Signed: targets, + UnrecognizedFields: map[string]interface{}{}, + } + } +} + +// AddSuccinctRoles adds succinct roles info to a delegator with name "delegatorName". +// +// Note that for each delegated role represented by succinct roles an empty +// Targets instance is created +func (rs *RepositorySimulator) AddSuccinctRoles(delegatorName string, bitLength int, namePrefix string) { + delegator := rs.getDelegator(delegatorName) + if delegator.Delegations != nil && delegator.Delegations.Roles != nil { + log.Fatalln("can't add a SuccinctRoles when delegated roles are used") + } + publicKey, _, signer := CreateKey() + mdkey, err := metadata.KeyFromPublicKey(*publicKey) + if err != nil { + log.Fatalf("repository simulator: key conversion failed while adding succinct roles: %v", err) + } + succinctRoles := &metadata.SuccinctRoles{ + KeyIDs: []string{}, + Threshold: 1, + BitLength: bitLength, + NamePrefix: namePrefix, + } + delegator.Delegations = &metadata.Delegations{Roles: nil, SuccinctRoles: succinctRoles} + // Add targets metadata for all bins + for _, delegatedName := range succinctRoles.GetRoles() { + rs.MDDelegates[delegatedName] = metadata.Metadata[metadata.TargetsType]{ + Signed: metadata.TargetsType{ + Expires: rs.SafeExpiry, + }, + } + rs.AddSigner(delegatedName, mdkey.ID(), *signer) + } + err = delegator.AddKey(mdkey, metadata.TARGETS) + if err != nil { + log.Debugf("repository simulator: failed to add key: %v", err) + } +} + +// Write dumps current repository metadata to rs.DumpDir + +// This is a debugging tool: dumping repository state before running +// Updater refresh may be useful while debugging a test. +func (rs *RepositorySimulator) Write() { + if rs.DumpDir == "" { + rs.DumpDir = os.TempDir() + log.Debugf("Repository Simulator dumps in %s\n", rs.DumpDir) + } + rs.DumpVersion += 1 + destDir := filepath.Join(rs.DumpDir, strconv.Itoa(int(rs.DumpVersion))) + err := os.MkdirAll(destDir, os.ModePerm) + if err != nil { + log.Debugf("repository simulator: failed to create dir: %v", err) + } + for ver := 1; ver < len(rs.SignedRoots)+1; ver++ { + f, _ := os.Create(filepath.Join(destDir, fmt.Sprintf("%d.root.json", ver))) + defer f.Close() + meta, err := rs.FetchMetadata(metadata.ROOT, &ver) + if err != nil { + log.Debugf("failed to fetch metadata: %v", err) + } + _, err = f.Write(meta) + if err != nil { + log.Debugf("repository simulator: failed to write signed roots: %v", err) + } + } + noVersion := -1 + for _, role := range []string{metadata.TIMESTAMP, metadata.SNAPSHOT, metadata.TARGETS} { + f, _ := os.Create(filepath.Join(destDir, fmt.Sprintf("%s.json", role))) + defer f.Close() + meta, err := rs.FetchMetadata(role, &noVersion) + if err != nil { + log.Debugf("failed to fetch metadata: %v", err) + } + _, err = f.Write(meta) + if err != nil { + log.Debugf("repository simulator: failed to write signed roots: %v", err) + } + } + for role := range rs.MDDelegates { + quotedRole := url.PathEscape(role) + f, _ := os.Create(filepath.Join(destDir, fmt.Sprintf("%s.json", quotedRole))) + defer f.Close() + meta, err := rs.FetchMetadata(role, &noVersion) + if err != nil { + log.Debugf("failed to fetch metadata: %v", err) + } + _, err = f.Write(meta) + if err != nil { + log.Debugf("repository simulator: failed to write signed roots: %v", err) + } + } +} diff --git a/testutils/simulator/repository_simulator_setup.go b/testutils/simulator/repository_simulator_setup.go new file mode 100644 index 00000000..18208866 --- /dev/null +++ b/testutils/simulator/repository_simulator_setup.go @@ -0,0 +1,87 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package simulator + +import ( + "os" + "time" + + log "github.com/sirupsen/logrus" +) + +var ( + MetadataURL = "https://jku.github.io/tuf-demo/metadata" + TargetsURL = "https://jku.github.io/tuf-demo/targets" + + MetadataDir string + RootBytes []byte + PastDateTime time.Time + Sim *RepositorySimulator + + metadataPath = "/metadata" + targetsPath = "/targets" + LocalDir string + DumpDir string +) + +func InitLocalEnv() error { + + tmp := os.TempDir() + + tmpDir, err := os.MkdirTemp(tmp, "0750") + if err != nil { + log.Fatal("failed to create temporary directory: ", err) + } + + err = os.Mkdir(tmpDir+metadataPath, 0750) + if err != nil { + log.Debugf("repository simulator: failed to create dir: %v", err) + } + err = os.Mkdir(tmpDir+targetsPath, 0750) + if err != nil { + log.Debugf("repository simulator: failed to create dir: %v", err) + } + LocalDir = tmpDir + return nil +} + +func InitMetadataDir() (*RepositorySimulator, string, string, error) { + err := InitLocalEnv() + if err != nil { + log.Fatal("failed to initialize environment: ", err) + } + metadataDir := LocalDir + metadataPath + + sim := NewRepository() + + f, err := os.Create(metadataDir + "/root.json") + if err != nil { + log.Fatalf("failed to create root: %v", err) + } + + _, err = f.Write(sim.SignedRoots[0]) + if err != nil { + log.Debugf("repository simulator setup: failed to write signed roots: %v", err) + } + targetsDir := LocalDir + targetsPath + sim.LocalDir = LocalDir + return sim, metadataDir, targetsDir, err +} + +func GetRootBytes(localMetadataDir string) ([]byte, error) { + return os.ReadFile(localMetadataDir + "/root.json") +} + +func RepositoryCleanup(tmpDir string) { + log.Printf("Cleaning temporary directory: %s\n", tmpDir) + os.RemoveAll(tmpDir) +} diff --git a/testutils/testutils/setup.go b/testutils/testutils/setup.go new file mode 100644 index 00000000..dfd71a1b --- /dev/null +++ b/testutils/testutils/setup.go @@ -0,0 +1,102 @@ +// Copyright 2023 VMware, Inc. +// +// This product is licensed to you under the BSD-2 license (the "License"). +// You may not use this product except in compliance with the BSD-2 License. +// This product may include a number of subcomponents with separate copyright +// notices and license terms. Your use of these subcomponents is subject to +// the terms and conditions of the subcomponent's license, as noted in the +// LICENSE file. +// +// SPDX-License-Identifier: BSD-2-Clause + +package testutils + +import ( + "fmt" + "log" + "os" + "path/filepath" +) + +var ( + TempDir string + RepoDir string + TargetsDir string + KeystoreDir string +) + +func SetupTestDirs(repoPath string, targetsPath string, keystorePath string) error { + tmp := os.TempDir() + var err error + TempDir, err = os.MkdirTemp(tmp, "0750") + if err != nil { + return fmt.Errorf("failed to create temporary directory: %w", err) + } + + RepoDir = fmt.Sprintf("%s/repository_data/repository", TempDir) + absPath, err := filepath.Abs(repoPath) + if err != nil { + return fmt.Errorf("failed to get absolute path: %w", err) + } + err = Copy(absPath, RepoDir) + if err != nil { + return fmt.Errorf("failed to copy metadata to %s: %w", RepoDir, err) + } + + TargetsDir = fmt.Sprintf("%s/repository_data/repository/targets", TempDir) + targetsAbsPath, err := filepath.Abs(targetsPath) + if err != nil { + return fmt.Errorf("failed to get absolute targets path: %w", err) + } + err = Copy(targetsAbsPath, TargetsDir) + if err != nil { + return fmt.Errorf("failed to copy metadata to %s: %w", RepoDir, err) + } + + KeystoreDir = fmt.Sprintf("%s/keystore", TempDir) + err = os.Mkdir(KeystoreDir, 0750) + if err != nil { + return fmt.Errorf("failed to create keystore dir %s: %w", KeystoreDir, err) + } + absPath, err = filepath.Abs(keystorePath) + if err != nil { + return fmt.Errorf("failed to get absolute path: %w", err) + } + err = Copy(absPath, KeystoreDir) + if err != nil { + return fmt.Errorf("failed to copy keystore to %s: %w", KeystoreDir, err) + } + + return nil +} + +func Copy(fromPath string, toPath string) error { + err := os.MkdirAll(toPath, 0750) + if err != nil { + return fmt.Errorf("failed to create directory %s: %w", toPath, err) + } + files, err := os.ReadDir(fromPath) + if err != nil { + return fmt.Errorf("failed to read path %s: %w", fromPath, err) + } + for _, file := range files { + data, err := os.ReadFile(fmt.Sprintf("%s/%s", fromPath, file.Name())) + if err != nil { + return fmt.Errorf("failed to read file %s: %w", file.Name(), err) + } + filePath := fmt.Sprintf("%s/%s", toPath, file.Name()) + err = os.WriteFile(filePath, data, 0750) + if err != nil { + return fmt.Errorf("failed to write file %s: %w", filePath, err) + } + } + return nil +} + +func Cleanup() { + log.Printf("cleaning temporary directory: %s\n", TempDir) + err := os.RemoveAll(TempDir) + if err != nil { + log.Fatalf("failed to cleanup test directories: %v", err) + } +} diff --git a/util/util.go b/util/util.go deleted file mode 100644 index 049169db..00000000 --- a/util/util.go +++ /dev/null @@ -1,332 +0,0 @@ -package util - -import ( - "bytes" - "crypto/hmac" - "crypto/sha256" - "crypto/sha512" - "encoding/hex" - "encoding/json" - "fmt" - "hash" - "io" - "os" - "path" - "path/filepath" - "strconv" - "strings" - - "github.com/theupdateframework/go-tuf/data" -) - -type ErrWrongLength struct { - Expected int64 - Actual int64 -} - -func (e ErrWrongLength) Error() string { - return fmt.Sprintf("wrong length, expected %d got %d", e.Expected, e.Actual) -} - -type ErrWrongVersion struct { - Expected int64 - Actual int64 -} - -func (e ErrWrongVersion) Error() string { - return fmt.Sprintf("wrong version, expected %d got %d", e.Expected, e.Actual) -} - -type ErrWrongHash struct { - Type string - Expected data.HexBytes - Actual data.HexBytes -} - -func (e ErrWrongHash) Error() string { - return fmt.Sprintf("wrong %s hash, expected %s got %s", e.Type, hex.EncodeToString(e.Expected), hex.EncodeToString(e.Actual)) -} - -type ErrNoCommonHash struct { - Expected data.Hashes - Actual data.Hashes -} - -func (e ErrNoCommonHash) Error() string { - types := func(a data.Hashes) []string { - t := make([]string, 0, len(a)) - for typ := range a { - t = append(t, typ) - } - return t - } - return fmt.Sprintf("no common hash function, expected one of %s, got %s", types(e.Expected), types(e.Actual)) -} - -type ErrUnknownHashAlgorithm struct { - Name string -} - -func (e ErrUnknownHashAlgorithm) Error() string { - return fmt.Sprintf("unknown hash algorithm: %s", e.Name) -} - -type PassphraseFunc func(role string, confirm bool, change bool) ([]byte, error) - -func FileMetaEqual(actual data.FileMeta, expected data.FileMeta) error { - if actual.Length != expected.Length { - return ErrWrongLength{expected.Length, actual.Length} - } - - if err := hashEqual(actual.Hashes, expected.Hashes); err != nil { - return err - } - - return nil -} - -func BytesMatchLenAndHashes(fetched []byte, length int64, hashes data.Hashes) error { - flen := int64(len(fetched)) - if length != 0 && flen != length { - return ErrWrongLength{length, flen} - } - - for alg, expected := range hashes { - var h hash.Hash - switch alg { - case "sha256": - h = sha256.New() - case "sha512": - h = sha512.New() - default: - return ErrUnknownHashAlgorithm{alg} - } - h.Write(fetched) - hash := h.Sum(nil) - if !hmac.Equal(hash, expected) { - return ErrWrongHash{alg, expected, hash} - } - } - - return nil -} - -func hashEqual(actual data.Hashes, expected data.Hashes) error { - hashChecked := false - for typ, hash := range expected { - if h, ok := actual[typ]; ok { - hashChecked = true - if !hmac.Equal(h, hash) { - return ErrWrongHash{typ, hash, h} - } - } - } - if !hashChecked { - return ErrNoCommonHash{expected, actual} - } - return nil -} - -func VersionEqual(actual int64, expected int64) error { - if actual != expected { - return ErrWrongVersion{expected, actual} - } - return nil -} - -func SnapshotFileMetaEqual(actual data.SnapshotFileMeta, expected data.SnapshotFileMeta) error { - // TUF-1.0 no longer considers the length and hashes to be a required - // member of snapshots. However they are considering requiring hashes - // for delegated roles to avoid an attack described in Section 5.6 of - // the Mercury paper: - // https://github.com/theupdateframework/specification/pull/40 - if expected.Length != 0 && actual.Length != expected.Length { - return ErrWrongLength{expected.Length, actual.Length} - } - // 5.6.2 - Check against snapshot role's targets hash - if len(expected.Hashes) != 0 { - if err := hashEqual(actual.Hashes, expected.Hashes); err != nil { - return err - } - } - // 5.6.4 - Check against snapshot role's snapshot version - if err := VersionEqual(actual.Version, expected.Version); err != nil { - return err - } - - return nil -} - -func TargetFileMetaEqual(actual data.TargetFileMeta, expected data.TargetFileMeta) error { - return FileMetaEqual(actual.FileMeta, expected.FileMeta) -} - -func TimestampFileMetaEqual(actual data.TimestampFileMeta, expected data.TimestampFileMeta) error { - // TUF no longer considers the length and hashes to be a required - // member of Timestamp. - if expected.Length != 0 && actual.Length != expected.Length { - return ErrWrongLength{expected.Length, actual.Length} - } - // 5.5.2 - Check against timestamp role's snapshot hash - if len(expected.Hashes) != 0 { - if err := hashEqual(actual.Hashes, expected.Hashes); err != nil { - return err - } - } - // 5.5.4 - Check against timestamp role's snapshot version - if err := VersionEqual(actual.Version, expected.Version); err != nil { - return err - } - - return nil -} - -const defaultHashAlgorithm = "sha512" - -func GenerateFileMeta(r io.Reader, hashAlgorithms ...string) (data.FileMeta, error) { - if len(hashAlgorithms) == 0 { - hashAlgorithms = []string{defaultHashAlgorithm} - } - hashes := make(map[string]hash.Hash, len(hashAlgorithms)) - for _, hashAlgorithm := range hashAlgorithms { - var h hash.Hash - switch hashAlgorithm { - case "sha256": - h = sha256.New() - case "sha512": - h = sha512.New() - default: - return data.FileMeta{}, ErrUnknownHashAlgorithm{hashAlgorithm} - } - hashes[hashAlgorithm] = h - r = io.TeeReader(r, h) - } - n, err := io.Copy(io.Discard, r) - if err != nil { - return data.FileMeta{}, err - } - m := data.FileMeta{Length: n, Hashes: make(data.Hashes, len(hashes))} - for hashAlgorithm, h := range hashes { - m.Hashes[hashAlgorithm] = h.Sum(nil) - } - return m, nil -} - -type versionedMeta struct { - Version int64 `json:"version"` -} - -func generateVersionedFileMeta(r io.Reader, hashAlgorithms ...string) (data.FileMeta, int64, error) { - b, err := io.ReadAll(r) - if err != nil { - return data.FileMeta{}, 0, err - } - - m, err := GenerateFileMeta(bytes.NewReader(b), hashAlgorithms...) - if err != nil { - return data.FileMeta{}, 0, err - } - - s := data.Signed{} - if err := json.Unmarshal(b, &s); err != nil { - return data.FileMeta{}, 0, err - } - - vm := versionedMeta{} - if err := json.Unmarshal(s.Signed, &vm); err != nil { - return data.FileMeta{}, 0, err - } - - return m, vm.Version, nil -} - -func GenerateSnapshotFileMeta(r io.Reader, hashAlgorithms ...string) (data.SnapshotFileMeta, error) { - m, v, err := generateVersionedFileMeta(r, hashAlgorithms...) - if err != nil { - return data.SnapshotFileMeta{}, err - } - return data.SnapshotFileMeta{ - Length: m.Length, - Hashes: m.Hashes, - Version: v, - }, nil -} - -func GenerateTargetFileMeta(r io.Reader, hashAlgorithms ...string) (data.TargetFileMeta, error) { - m, err := GenerateFileMeta(r, hashAlgorithms...) - if err != nil { - return data.TargetFileMeta{}, err - } - return data.TargetFileMeta{ - FileMeta: m, - }, nil -} - -func GenerateTimestampFileMeta(r io.Reader, hashAlgorithms ...string) (data.TimestampFileMeta, error) { - m, v, err := generateVersionedFileMeta(r, hashAlgorithms...) - if err != nil { - return data.TimestampFileMeta{}, err - } - return data.TimestampFileMeta{ - Length: m.Length, - Hashes: m.Hashes, - Version: v, - }, nil -} - -func NormalizeTarget(p string) string { - // FIXME(TUF-0.9) TUF-1.0 is considering banning paths that begin with - // a leading path separator, to avoid surprising behavior when joining - // target and delgated paths. python-tuf raises an exception if any - // path starts with '/', but since we need to be cross compatible with - // TUF-0.9 we still need to support leading slashes. For now, we will - // just strip them out, but eventually we should also consider turning - // them into an error. - return strings.TrimPrefix(path.Join("/", p), "/") -} - -func VersionedPath(p string, version int64) string { - return path.Join(path.Dir(p), strconv.FormatInt(version, 10)+"."+path.Base(p)) -} - -func HashedPaths(p string, hashes data.Hashes) []string { - paths := make([]string, 0, len(hashes)) - for _, hash := range hashes { - hashedPath := path.Join(path.Dir(p), hash.String()+"."+path.Base(p)) - paths = append(paths, hashedPath) - } - return paths -} - -func AtomicallyWriteFile(filename string, data []byte, perm os.FileMode) error { - dir, name := filepath.Split(filename) - f, err := os.CreateTemp(dir, name) - if err != nil { - return err - } - - _, err = f.Write(data) - if err != nil { - f.Close() - os.Remove(f.Name()) - return err - } - - if err = f.Chmod(perm); err != nil { - f.Close() - os.Remove(f.Name()) - return err - } - - if err := f.Close(); err != nil { - os.Remove(f.Name()) - return err - } - - if err := os.Rename(f.Name(), filename); err != nil { - os.Remove(f.Name()) - return err - } - - return nil -} diff --git a/util/util_test.go b/util/util_test.go deleted file mode 100644 index ca691efe..00000000 --- a/util/util_test.go +++ /dev/null @@ -1,282 +0,0 @@ -package util - -import ( - "bytes" - "crypto/sha256" - "crypto/sha512" - "encoding/hex" - "hash" - "testing" - - "github.com/theupdateframework/go-tuf/data" - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type UtilSuite struct{} - -var _ = Suite(&UtilSuite{}) - -func (UtilSuite) TestGenerateTargetFileMetaDefault(c *C) { - // default is sha512 - r := bytes.NewReader([]byte("foo")) - meta, err := GenerateTargetFileMeta(r) - c.Assert(err, IsNil) - c.Assert(meta.Length, Equals, int64(3)) - hashes := meta.Hashes - c.Assert(hashes, HasLen, 1) - hash, ok := hashes["sha512"] - if !ok { - c.Fatal("missing sha512 hash") - } - c.Assert(hash.String(), DeepEquals, "f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7") -} - -func (UtilSuite) TestGenerateTargetFileMetaExplicit(c *C) { - r := bytes.NewReader([]byte("foo")) - meta, err := GenerateTargetFileMeta(r, "sha256", "sha512") - c.Assert(err, IsNil) - c.Assert(meta.Length, Equals, int64(3)) - hashes := meta.Hashes - c.Assert(hashes, HasLen, 2) - for name, val := range map[string]string{ - "sha256": "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae", - "sha512": "f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7", - } { - hash, ok := hashes[name] - if !ok { - c.Fatalf("missing %s hash", name) - } - c.Assert(hash.String(), DeepEquals, val) - } -} - -func makeHashes(c *C, hashes map[string]string) data.Hashes { - h := make(map[string]data.HexBytes, len(hashes)) - for typ, hash := range hashes { - v, err := hex.DecodeString(hash) - c.Assert(err, IsNil) - h[typ] = v - } - return h -} - -type testMetaFile struct { - name string - actual data.FileMeta - expected data.FileMeta - err func(testMetaFile) error -} - -func testMetaFileCases(c *C) []testMetaFile { - fileMeta := func(c *C, length int64, hashes map[string]string) data.FileMeta { - return data.FileMeta{ - Length: length, - Hashes: makeHashes(c, hashes), - } - } - - return []testMetaFile{ - { - name: "wrong length", - actual: data.FileMeta{Length: 1}, - expected: data.FileMeta{Length: 2}, - err: func(testMetaFile) error { return ErrWrongLength{Actual: 1, Expected: 2} }, - }, - { - name: "wrong sha512 hash", - actual: fileMeta(c, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(c, 10, map[string]string{"sha512": "222222"}), - err: func(t testMetaFile) error { - return ErrWrongHash{"sha512", t.expected.Hashes["sha512"], t.actual.Hashes["sha512"]} - }, - }, - { - name: "intersecting hashes", - actual: fileMeta(c, 10, map[string]string{"sha512": "111111", "md5": "222222"}), - expected: fileMeta(c, 10, map[string]string{"sha512": "111111", "sha256": "333333"}), - err: func(testMetaFile) error { return nil }, - }, - { - name: "no common hashes", - actual: fileMeta(c, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(c, 10, map[string]string{"sha256": "222222", "md5": "333333"}), - err: func(t testMetaFile) error { return ErrNoCommonHash{t.expected.Hashes, t.actual.Hashes} }, - }, - } -} - -func (UtilSuite) TestSnapshotFileMetaEqual(c *C) { - type test struct { - name string - actual data.SnapshotFileMeta - expected data.SnapshotFileMeta - err func(test) error - } - - fileMeta := func(version int64, length int64, hashes map[string]string) data.SnapshotFileMeta { - return data.SnapshotFileMeta{ - Length: length, - Hashes: makeHashes(c, hashes), - Version: version, - } - } - - tests := []test{ - { - name: "same version", - actual: fileMeta(1, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(1, 10, map[string]string{"sha512": "111111"}), - err: func(test) error { return nil }, - }, - { - name: "wrong version", - actual: fileMeta(0, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(1, 10, map[string]string{"sha512": "111111"}), - err: func(test) error { return ErrWrongVersion{Expected: 1, Actual: 0} }, - }, - { - name: "wrong version", - actual: fileMeta(1, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(0, 10, map[string]string{"sha512": "111111"}), - err: func(test) error { return ErrWrongVersion{Expected: 0, Actual: 1} }, - }, - { - name: "wrong version", - actual: fileMeta(1, 10, map[string]string{"sha512": "111111"}), - expected: fileMeta(2, 10, map[string]string{"sha512": "111111"}), - err: func(test) error { return ErrWrongVersion{Expected: 2, Actual: 1} }, - }, - } - - for _, t := range tests { - c.Assert(SnapshotFileMetaEqual(t.actual, t.expected), DeepEquals, t.err(t), Commentf("name = %s", t.name)) - } - - for _, t := range testMetaFileCases(c) { - actual := data.SnapshotFileMeta{Length: t.actual.Length, Hashes: t.actual.Hashes} - expected := data.SnapshotFileMeta{Length: t.expected.Length, Hashes: t.expected.Hashes} - c.Assert(SnapshotFileMetaEqual(actual, expected), DeepEquals, t.err(t), Commentf("name = %s %d %d", t.name, t.actual.Length, t.expected.Length)) - c.Assert(FileMetaEqual(t.actual, t.expected), DeepEquals, t.err(t), Commentf("name = %s", t.name)) - } -} - -func (UtilSuite) TestNormalizeTarget(c *C) { - for before, after := range map[string]string{ - "": "", - "foo.txt": "foo.txt", - "/bar.txt": "bar.txt", - "foo//bar.txt": "foo/bar.txt", - "/with/./a/dot": "with/a/dot", - "/with/double/../dot": "with/dot", - } { - c.Assert(NormalizeTarget(before), Equals, after) - } -} - -func (UtilSuite) TestHashedPaths(c *C) { - hexBytes := func(s string) data.HexBytes { - v, err := hex.DecodeString(s) - c.Assert(err, IsNil) - return v - } - hashes := data.Hashes{ - "sha512": hexBytes("abc123"), - "sha256": hexBytes("def456"), - } - paths := HashedPaths("foo/bar.txt", hashes) - // cannot use DeepEquals as the returned order is non-deterministic - c.Assert(paths, HasLen, 2) - expected := map[string]struct{}{"foo/abc123.bar.txt": {}, "foo/def456.bar.txt": {}} - for _, path := range paths { - if _, ok := expected[path]; !ok { - c.Fatalf("unexpected path: %s", path) - } - delete(expected, path) - } -} - -func (UtilSuite) TestVersionEqual(c *C) { - c.Assert(VersionEqual(1, 1), IsNil) - c.Assert(VersionEqual(1, 3), Equals, ErrWrongVersion{3, 1}) -} - -func makeHash(b []byte, alg string) []byte { - var h hash.Hash - - switch alg { - case "sha256": - h = sha256.New() - case "sha512": - h = sha512.New() - } - h.Write(b) - return h.Sum(nil) -} - -func (UtilSuite) TestBytesMatchLenAndHashes(c *C) { - type test struct { - name string - bytes []byte - length int64 - hashes data.Hashes - err func(test) error - } - - b := []byte{82, 253, 252, 7, 33, 130, 101, 79, 22, 63, 95, 15, 154, 98, 29, 114} - bhashes := data.Hashes{ - "sha512": makeHash(b, "sha512"), - "sha256": makeHash(b, "sha256"), - } - - tests := []test{ - { - name: "correct len and hashes", - bytes: b, - length: 16, - hashes: bhashes, - err: func(test) error { return nil }, - }, - { - name: "incorrect len", - bytes: b, - length: 32, - hashes: bhashes, - err: func(test) error { return ErrWrongLength{32, 16} }, - }, - { - name: "incorrect hashes sha512", - bytes: b, - length: 16, - hashes: data.Hashes{ - "sha512": makeHash(b, "sha256"), - }, - err: func(test) error { return ErrWrongHash{"sha512", bhashes["sha256"], bhashes["sha512"]} }, - }, - { - name: "incorrect hashes sha256", - bytes: b, - length: 16, - hashes: data.Hashes{ - "sha256": makeHash(b, "sha512"), - }, - err: func(test) error { return ErrWrongHash{"sha256", bhashes["sha512"], bhashes["sha256"]} }, - }, - { - name: "incorrect len and hashes", - bytes: b, - length: 32, - hashes: data.Hashes{ - "sha512": makeHash(b, "sha256"), - "sha256": makeHash(b, "sha512"), - }, - err: func(test) error { return ErrWrongLength{32, 16} }, - }, - } - - for _, t := range tests { - c.Assert(BytesMatchLenAndHashes(t.bytes, t.length, t.hashes), DeepEquals, t.err(t), Commentf("name = %s", t.name)) - } -} diff --git a/verify/db.go b/verify/db.go deleted file mode 100644 index 04f5bf1c..00000000 --- a/verify/db.go +++ /dev/null @@ -1,104 +0,0 @@ -package verify - -import ( - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/roles" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -type Role struct { - KeyIDs map[string]struct{} - Threshold int -} - -func (r *Role) ValidKey(id string) bool { - _, ok := r.KeyIDs[id] - return ok -} - -type DB struct { - roles map[string]*Role - verifiers map[string]keys.Verifier -} - -func NewDB() *DB { - return &DB{ - roles: make(map[string]*Role), - verifiers: make(map[string]keys.Verifier), - } -} - -// NewDBFromDelegations returns a DB that verifies delegations -// of a given Targets. -func NewDBFromDelegations(d *data.Delegations) (*DB, error) { - db := &DB{ - roles: make(map[string]*Role, len(d.Roles)), - verifiers: make(map[string]keys.Verifier, len(d.Keys)), - } - for _, r := range d.Roles { - if _, ok := roles.TopLevelRoles[r.Name]; ok { - return nil, ErrInvalidDelegatedRole - } - role := &data.Role{Threshold: r.Threshold, KeyIDs: r.KeyIDs} - if err := db.AddRole(r.Name, role); err != nil { - return nil, err - } - } - for id, k := range d.Keys { - if err := db.AddKey(id, k); err != nil { - return nil, err - } - } - return db, nil -} - -func (db *DB) AddKey(id string, k *data.PublicKey) error { - verifier, err := keys.GetVerifier(k) - if err != nil { - return err // ErrInvalidKey - } - - // TUF is considering in TAP-12 removing the - // requirement that the keyid hash algorithm be derived - // from the public key. So to be forwards compatible, - // we allow any key ID, rather than checking k.ContainsID(id) - // - // AddKey should be idempotent, so we allow re-adding the same PublicKey. - // - // TAP-12: https://github.com/theupdateframework/taps/blob/master/tap12.md - if oldVerifier, exists := db.verifiers[id]; exists && oldVerifier.Public() != verifier.Public() { - return ErrRepeatID{id} - } - - db.verifiers[id] = verifier - return nil -} - -func (db *DB) AddRole(name string, r *data.Role) error { - if r.Threshold < 1 { - return ErrInvalidThreshold - } - - role := &Role{ - KeyIDs: make(map[string]struct{}), - Threshold: r.Threshold, - } - for _, id := range r.KeyIDs { - role.KeyIDs[id] = struct{}{} - } - - db.roles[name] = role - return nil -} - -func (db *DB) GetVerifier(id string) (keys.Verifier, error) { - k, ok := db.verifiers[id] - if !ok { - return nil, ErrMissingKey - } - return k, nil -} - -func (db *DB) GetRole(name string) *Role { - return db.roles[name] -} diff --git a/verify/db_test.go b/verify/db_test.go deleted file mode 100644 index 01d7a308..00000000 --- a/verify/db_test.go +++ /dev/null @@ -1,131 +0,0 @@ -package verify - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -func TestDelegationsDB(t *testing.T) { - key, err := keys.GenerateEd25519Key() - assert.Nil(t, err, "generating key failed") - var dbTests = []struct { - testName string - delegations *data.Delegations - initErr error - unmarshalErr error - }{ - { - testName: "empty state", - delegations: &data.Delegations{}, - unmarshalErr: ErrNoSignatures, - }, - { - testName: "top level role", - delegations: &data.Delegations{Roles: []data.DelegatedRole{ - {Name: "root"}, - }}, - initErr: ErrInvalidDelegatedRole, - }, - { - testName: "invalid role", - delegations: &data.Delegations{Roles: []data.DelegatedRole{ - {Threshold: 0}, - }}, - initErr: ErrInvalidThreshold, - }, - { - testName: "standard (SHA256) key IDs supported", - delegations: &data.Delegations{ - Keys: map[string]*data.PublicKey{ - key.PublicData().IDs()[0]: key.PublicData(), - }, - Roles: []data.DelegatedRole{{ - Name: "rolename", - KeyIDs: key.PublicData().IDs(), - Threshold: 1, - }, - }, - }, - // If we get to ErrNoSignatures, we've passed key loading; see - // delegations_test.go to see tests that delegation DB *fully* works - // with valid signatures set up. - unmarshalErr: ErrNoSignatures, - }, - { - testName: "arbitrary (non-SHA256, per TAP-12) key IDs supported", - delegations: &data.Delegations{ - Keys: map[string]*data.PublicKey{ - "a": key.PublicData(), - }, - Roles: []data.DelegatedRole{{ - Name: "rolename", - KeyIDs: []string{"a"}, - Threshold: 1, - }, - }, - }, - // If we get to ErrNoSignatures, we've passed key loading; see - // delegations_test.go to see tests that delegation DB *fully* works - // with valid signatures set up. - unmarshalErr: ErrNoSignatures, - }, - } - - for _, tt := range dbTests { - t.Run(tt.testName, func(t *testing.T) { - db, err := NewDBFromDelegations(tt.delegations) - assert.Equal(t, tt.initErr, err) - if err == nil { - assert.NotNil(t, db) - var targets data.Targets - err = db.Unmarshal([]byte(`{"a":"b"}`), targets, "tree", 0) - assert.Equal(t, tt.unmarshalErr, err) - } - }) - } -} - -// Test key database for compliance with TAP-12. -// -// Previously, every key's key ID was the SHA256 of the public key. TAP-12 -// allows arbitrary key IDs, with no loss in security. -// -// TAP-12: https://github.com/theupdateframework/taps/blob/master/tap12.md -func TestTAP12(t *testing.T) { - db := NewDB() - // Need to use a signer type that supports random signatures. - key1, _ := keys.GenerateRsaKey() - key2, _ := keys.GenerateRsaKey() - msg := []byte("{}") - sig1, _ := key1.SignMessage(msg) - sig1Duplicate, _ := key1.SignMessage(msg) - assert.NotEqual(t, sig1, sig1Duplicate, "Signatures should be random") - sig2, _ := key2.SignMessage(msg) - - // Idempotent: adding the same key with the same ID is okay. - assert.Nil(t, db.AddKey("key1", key1.PublicData()), "initial add") - assert.Nil(t, db.AddKey("key1", key1.PublicData()), "re-add") - // Adding a different key is allowed, unless the key ID is the same. - assert.Nil(t, db.AddKey("key2", key2.PublicData()), "different key with different ID") - assert.ErrorIs(t, db.AddKey("key1", key2.PublicData()), ErrRepeatID{"key1"}, "different key with same key ID") - assert.Nil(t, db.AddKey("key1-duplicate", key1.PublicData()), "same key with different ID should succeed") - assert.Nil(t, db.AddRole("diffkeys", &data.Role{ - KeyIDs: []string{"key1", "key2"}, - Threshold: 2, - }), "adding role") - assert.Nil(t, db.AddRole("samekeys", &data.Role{ - KeyIDs: []string{"key1", "key1-alt"}, - Threshold: 2, - }), "adding role") - assert.Nil(t, db.VerifySignatures(&data.Signed{ - Signed: msg, - Signatures: []data.Signature{{KeyID: "key1", Signature: sig1}, {KeyID: "key2", Signature: sig2}}, - }, "diffkeys"), "Signature with different keys: ") - assert.ErrorIs(t, db.VerifySignatures(&data.Signed{ - Signed: msg, - Signatures: []data.Signature{{KeyID: "key1", Signature: sig1}, {KeyID: "key1-alt", Signature: sig1Duplicate}}, - }, "samekeys"), ErrRoleThreshold{2, 1}, "Threshold signing with repeat key") -} diff --git a/verify/errors.go b/verify/errors.go deleted file mode 100644 index f71d4bda..00000000 --- a/verify/errors.go +++ /dev/null @@ -1,73 +0,0 @@ -package verify - -import ( - "errors" - "fmt" - "time" -) - -var ( - ErrMissingKey = errors.New("tuf: missing key") - ErrNoSignatures = errors.New("tuf: data has no signatures") - ErrInvalid = errors.New("tuf: signature verification failed") - ErrWrongMethod = errors.New("tuf: invalid signature type") - ErrWrongMetaType = errors.New("tuf: meta file has wrong type") - ErrExists = errors.New("tuf: key already in db") - ErrInvalidKey = errors.New("tuf: invalid key") - ErrInvalidRole = errors.New("tuf: invalid role") - ErrInvalidDelegatedRole = errors.New("tuf: invalid delegated role") - ErrInvalidKeyID = errors.New("tuf: invalid key id") - ErrInvalidThreshold = errors.New("tuf: invalid role threshold") - ErrMissingTargetFile = errors.New("tuf: missing previously listed targets metadata file") -) - -type ErrRepeatID struct { - KeyID string -} - -func (e ErrRepeatID) Error() string { - return fmt.Sprintf("tuf: duplicate key id (%s)", e.KeyID) -} - -type ErrUnknownRole struct { - Role string -} - -func (e ErrUnknownRole) Error() string { - return fmt.Sprintf("tuf: unknown role %q", e.Role) -} - -type ErrExpired struct { - Expired time.Time -} - -func (e ErrExpired) Error() string { - return fmt.Sprintf("expired at %s", e.Expired) -} - -type ErrLowVersion struct { - Actual int64 - Current int64 -} - -func (e ErrLowVersion) Error() string { - return fmt.Sprintf("version %d is lower than current version %d", e.Actual, e.Current) -} - -type ErrWrongVersion struct { - Given int64 - Expected int64 -} - -func (e ErrWrongVersion) Error() string { - return fmt.Sprintf("version %d does not match the expected version %d", e.Given, e.Expected) -} - -type ErrRoleThreshold struct { - Expected int - Actual int -} - -func (e ErrRoleThreshold) Error() string { - return "tuf: valid signatures did not meet threshold" -} diff --git a/verify/verify.go b/verify/verify.go deleted file mode 100644 index e62042ee..00000000 --- a/verify/verify.go +++ /dev/null @@ -1,187 +0,0 @@ -package verify - -import ( - "encoding/json" - "strings" - "time" - - "github.com/secure-systems-lab/go-securesystemslib/cjson" - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/internal/roles" - "github.com/theupdateframework/go-tuf/pkg/keys" -) - -type signedMeta struct { - Type string `json:"_type"` - Expires time.Time `json:"expires"` - Version int64 `json:"version"` -} - -// VerifySignature takes a signed JSON message, a signature, and a -// verifier and verifies the given signature on the JSON message -// using the verifier. It returns an error if verification fails. -func VerifySignature(signed json.RawMessage, sig data.HexBytes, - verifier keys.Verifier) error { - var decoded map[string]interface{} - if err := json.Unmarshal(signed, &decoded); err != nil { - return err - } - msg, err := cjson.EncodeCanonical(decoded) - if err != nil { - return err - } - return verifier.Verify(msg, sig) -} - -func (db *DB) VerifyIgnoreExpiredCheck(s *data.Signed, role string, minVersion int64) error { - if err := db.VerifySignatures(s, role); err != nil { - return err - } - - sm := &signedMeta{} - if err := json.Unmarshal(s.Signed, sm); err != nil { - return err - } - - if roles.IsTopLevelRole(role) { - // Top-level roles can only sign metadata of the same type (e.g. snapshot - // metadata must be signed by the snapshot role). - if !strings.EqualFold(sm.Type, role) { - return ErrWrongMetaType - } - } else { - // Delegated (non-top-level) roles may only sign targets metadata. - if strings.ToLower(sm.Type) != "targets" { - return ErrWrongMetaType - } - } - - if sm.Version < minVersion { - return ErrLowVersion{sm.Version, minVersion} - } - - return nil -} - -func (db *DB) Verify(s *data.Signed, role string, minVersion int64) error { - // Verify signatures and versions - err := db.VerifyIgnoreExpiredCheck(s, role, minVersion) - - if err != nil { - return err - } - - sm := &signedMeta{} - if err := json.Unmarshal(s.Signed, sm); err != nil { - return err - } - // Verify expiration - if IsExpired(sm.Expires) { - return ErrExpired{sm.Expires} - } - - return nil -} - -var IsExpired = func(t time.Time) bool { - return time.Until(t) <= 0 -} - -func (db *DB) VerifySignatures(s *data.Signed, role string) error { - if len(s.Signatures) == 0 { - return ErrNoSignatures - } - - roleData := db.GetRole(role) - if roleData == nil { - return ErrUnknownRole{role} - } - - // Verify that a threshold of keys signed the data. Since keys can have - // multiple key ids, we need to protect against multiple attached - // signatures that just differ on the key id. - verifiedKeyIDs := make(map[string]struct{}) - numVerifiedKeys := 0 - for _, sig := range s.Signatures { - if !roleData.ValidKey(sig.KeyID) { - continue - } - verifier, err := db.GetVerifier(sig.KeyID) - if err != nil { - continue - } - - if err := VerifySignature(s.Signed, sig.Signature, verifier); err != nil { - // If a signature fails verification, don't count it towards the - // threshold but also return early and error out immediately. - // Note: Because of this, it is impossible to distinguish between - // an error of an invalid signature and a threshold not achieved. - // Invalid signatures lead to not achieving the threshold. - continue - } - - // Only consider this key valid if we haven't seen any of it's - // key ids before. - // Careful: we must not rely on the key IDs _declared in the file_, - // instead we get to decide what key IDs this key correspond to. - // XXX dangerous; better stop supporting multiple key IDs altogether. - keyIDs := verifier.MarshalPublicKey().IDs() - wasKeySeen := false - for _, keyID := range keyIDs { - if _, present := verifiedKeyIDs[keyID]; present { - wasKeySeen = true - } - } - if !wasKeySeen { - for _, id := range keyIDs { - verifiedKeyIDs[id] = struct{}{} - } - - numVerifiedKeys++ - } - } - if numVerifiedKeys < roleData.Threshold { - return ErrRoleThreshold{roleData.Threshold, numVerifiedKeys} - } - - return nil -} - -func (db *DB) Unmarshal(b []byte, v interface{}, role string, minVersion int64) error { - s := &data.Signed{} - if err := json.Unmarshal(b, s); err != nil { - return err - } - if err := db.Verify(s, role, minVersion); err != nil { - return err - } - return json.Unmarshal(s.Signed, v) -} - -// UnmarshalExpired is exactly like Unmarshal except ignores expired timestamp error. -func (db *DB) UnmarshalIgnoreExpired(b []byte, v interface{}, role string, minVersion int64) error { - s := &data.Signed{} - if err := json.Unmarshal(b, s); err != nil { - return err - } - // Note: If verification fails, then we wont attempt to unmarshal - // unless when verification error is errExpired. - verifyErr := db.Verify(s, role, minVersion) - if verifyErr != nil { - if _, ok := verifyErr.(ErrExpired); !ok { - return verifyErr - } - } - return json.Unmarshal(s.Signed, v) -} - -func (db *DB) UnmarshalTrusted(b []byte, v interface{}, role string) error { - s := &data.Signed{} - if err := json.Unmarshal(b, s); err != nil { - return err - } - if err := db.VerifySignatures(s, role); err != nil { - return err - } - return json.Unmarshal(s.Signed, v) -} diff --git a/verify/verify_test.go b/verify/verify_test.go deleted file mode 100644 index 191c1ed0..00000000 --- a/verify/verify_test.go +++ /dev/null @@ -1,302 +0,0 @@ -package verify - -import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/sha256" - "encoding/json" - "errors" - "testing" - "time" - - "github.com/theupdateframework/go-tuf/data" - "github.com/theupdateframework/go-tuf/pkg/keys" - "github.com/theupdateframework/go-tuf/sign" - "golang.org/x/crypto/ed25519" - - . "gopkg.in/check.v1" -) - -// Hook up gocheck into the "go test" runner. -func Test(t *testing.T) { TestingT(t) } - -type VerifySuite struct{} - -var _ = Suite(&VerifySuite{}) - -type ecdsaSigner struct { - *ecdsa.PrivateKey -} - -type ecdsaPublic struct { - PublicKey *keys.PKIXPublicKey `json:"public"` -} - -func (s ecdsaSigner) PublicData() *data.PublicKey { - keyValBytes, _ := json.Marshal(ecdsaPublic{PublicKey: &keys.PKIXPublicKey{PublicKey: s.Public()}}) - return &data.PublicKey{ - Type: data.KeyTypeECDSA_SHA2_P256, - Scheme: data.KeySchemeECDSA_SHA2_P256, - Algorithms: data.HashAlgorithms, - Value: keyValBytes, - } -} - -func (s ecdsaSigner) SignMessage(message []byte) ([]byte, error) { - hash := sha256.Sum256(message) - return s.PrivateKey.Sign(rand.Reader, hash[:], crypto.SHA256) -} - -func (s ecdsaSigner) ContainsID(id string) bool { - return s.PublicData().ContainsID(id) -} - -func (ecdsaSigner) MarshalPrivateKey() (*data.PrivateKey, error) { - return nil, errors.New("not implemented for test") -} - -func (ecdsaSigner) UnmarshalPrivateKey(key *data.PrivateKey) error { - return errors.New("not implemented for test") -} - -func (VerifySuite) Test(c *C) { - type test struct { - name string - keys []*data.PublicKey - roles map[string]*data.Role - s *data.Signed - ver int64 - exp *time.Time - typ string - role string - err error - mut func(*test) - } - - expiredTime := time.Now().Add(-time.Hour) - minVer := int64(10) - tests := []test{ - { - name: "no signatures", - mut: func(t *test) { t.s.Signatures = []data.Signature{} }, - err: ErrNoSignatures, - }, - { - name: "unknown role", - role: "foo", - err: ErrUnknownRole{"foo"}, - }, - { - // It is impossible to distinguish between an error of an invalid - // signature and a threshold not achieved. Invalid signatures lead - // to not achieving the threshold. - name: "signature wrong length", - mut: func(t *test) { t.s.Signatures[0].Signature = []byte{0} }, - err: ErrRoleThreshold{1, 0}, - }, - { - name: "key missing from role", - mut: func(t *test) { t.roles["root"].KeyIDs = nil }, - err: ErrRoleThreshold{1, 0}, - }, - { - name: "invalid signature", - mut: func(t *test) { t.s.Signatures[0].Signature = make([]byte, ed25519.SignatureSize) }, - err: ErrRoleThreshold{1, 0}, - }, - { - name: "enough signatures with extra invalid signature", - mut: func(t *test) { - t.s.Signatures = append(t.s.Signatures, data.Signature{ - KeyID: t.s.Signatures[0].KeyID, - Signature: make([]byte, ed25519.SignatureSize)}) - }, - }, - { - name: "not enough signatures", - mut: func(t *test) { t.roles["root"].Threshold = 2 }, - err: ErrRoleThreshold{2, 1}, - }, - { - name: "exactly enough signatures", - }, - { - name: "more than enough signatures", - mut: func(t *test) { - k, _ := keys.GenerateEd25519Key() - sign.Sign(t.s, k) - t.keys = append(t.keys, k.PublicData()) - t.roles["root"].KeyIDs = append(t.roles["root"].KeyIDs, k.PublicData().IDs()...) - }, - }, - { - name: "duplicate key id", - mut: func(t *test) { - t.roles["root"].Threshold = 2 - t.s.Signatures = append(t.s.Signatures, t.s.Signatures[0]) - }, - err: ErrRoleThreshold{2, 1}, - }, - { - name: "unknown key", - mut: func(t *test) { - k, _ := keys.GenerateEd25519Key() - sign.Sign(t.s, k) - }, - }, - { - name: "unknown key below threshold", - mut: func(t *test) { - k, _ := keys.GenerateEd25519Key() - sign.Sign(t.s, k) - t.roles["root"].Threshold = 2 - }, - err: ErrRoleThreshold{2, 1}, - }, - { - name: "unknown keys in db", - mut: func(t *test) { - k, _ := keys.GenerateEd25519Key() - sign.Sign(t.s, k) - t.keys = append(t.keys, k.PublicData()) - }, - }, - { - name: "unknown keys in db below threshold", - mut: func(t *test) { - k, _ := keys.GenerateEd25519Key() - sign.Sign(t.s, k) - t.keys = append(t.keys, k.PublicData()) - t.roles["root"].Threshold = 2 - }, - err: ErrRoleThreshold{2, 1}, - }, - { - name: "wrong type", - typ: "bar", - err: ErrWrongMetaType, - }, - { - name: "low version", - ver: minVer - 1, - err: ErrLowVersion{minVer - 1, minVer}, - }, - { - name: "expired", - exp: &expiredTime, - err: ErrExpired{expiredTime}, - }, - { - name: "valid ecdsa signature", - mut: func(t *test) { - k, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - s := ecdsaSigner{k} - sign.Sign(t.s, s) - t.s.Signatures = t.s.Signatures[1:] - t.keys = []*data.PublicKey{s.PublicData()} - t.roles["root"].KeyIDs = s.PublicData().IDs() - }, - }, - { - // The threshold is still achieved. - name: "invalid second ecdsa signature", - mut: func(t *test) { - k, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - s := ecdsaSigner{k} - sign.Sign(t.s, s) - t.s.Signatures[1].Signature[0]++ - t.keys = append(t.keys, s.PublicData()) - t.roles["root"].KeyIDs = append(t.roles["root"].KeyIDs, s.PublicData().IDs()...) - }, - }, - } - for _, t := range tests { - if t.role == "" { - t.role = "root" - } - if t.ver == 0 { - t.ver = minVer - } - if t.exp == nil { - expires := time.Now().Add(time.Hour) - t.exp = &expires - } - if t.typ == "" { - t.typ = t.role - } - if t.keys == nil && t.s == nil { - k, _ := keys.GenerateEd25519Key() - t.s, _ = sign.Marshal(&signedMeta{Type: t.typ, Version: t.ver, Expires: *t.exp}, k) - t.keys = []*data.PublicKey{k.PublicData()} - } - if t.roles == nil { - t.roles = map[string]*data.Role{ - "root": { - KeyIDs: t.keys[0].IDs(), - Threshold: 1, - }, - } - } - if t.mut != nil { - t.mut(&t) - } - - db := NewDB() - for _, k := range t.keys { - for _, id := range k.IDs() { - err := db.AddKey(id, k) - c.Assert(err, IsNil) - } - } - for n, r := range t.roles { - err := db.AddRole(n, r) - c.Assert(err, IsNil) - } - - err := db.Verify(t.s, t.role, minVer) - if e, ok := t.err.(ErrExpired); ok { - assertErrExpired(c, err, e) - } else { - c.Assert(err, DeepEquals, t.err, Commentf("name = %s", t.name)) - } - } -} - -func (VerifySuite) TestVerifyIgnoreExpired(c *C) { - minVer := int64(10) - role := "root" - k, _ := keys.GenerateEd25519Key() - s, _ := sign.Marshal(&signedMeta{Type: role, Version: minVer, Expires: time.Now().Add(-time.Hour)}, k) - keys := []*data.PublicKey{k.PublicData()} - roles := map[string]*data.Role{ - "root": { - KeyIDs: keys[0].IDs(), - Threshold: 1, - }, - } - - db := NewDB() - for _, k := range keys { - for _, id := range k.IDs() { - err := db.AddKey(id, k) - c.Assert(err, IsNil) - } - } - for n, r := range roles { - err := db.AddRole(n, r) - c.Assert(err, IsNil) - } - - err := db.VerifyIgnoreExpiredCheck(s, role, minVer) - c.Assert(err, IsNil) -} - -func assertErrExpired(c *C, err error, expected ErrExpired) { - actual, ok := err.(ErrExpired) - if !ok { - c.Fatalf("expected err to have type ErrExpired, got %T", err) - } - c.Assert(actual.Expired.Unix(), Equals, expected.Expired.Unix()) -}