blob: 435f92adfca66fa4f06f8d91dba43e2dbd805e62 [file] [log] [blame]
.. _module-pw_software_update-cli:
---------------------------------
pw_software_update: CLI reference
---------------------------------
.. pigweed-module-subpage::
:name: pw_software_update
Overview
---------
Use the ``pw_software_update`` CLI to quickly learn and prototype a software
update system on your development PC before productionizing one. In the future
you will be able to use the CLI to update a reference
target.
.. code-block:: bash
~$ cd pigweed
~/pigweed$ source ./activate.sh
~/pigweed$ pw update [-h] <command>
.. csv-table::
:header: "Command", "Description"
:widths: 30, 70
:align: left
``generate-key``, "generates a local signing key"
``create-root-metadata``, "creates a TUF root metadata file"
``sign-root-metadata``, "signs a TUF root metadata"
``inspect-root-metadata``, "prints a TUF root metadata"
``create-empty-bundle``, "creates an empty update bundle"
``add-root-metadata-to-bundle``, "adds a root metadata to an existing bundle"
``add-file-to-bundle``, "adds a target file to an existing bundle"
``sign-bundle``, "signs an update bundle"
``inspect-bundle``, "prints an update bundle"
``verify-bundle``, "verifies an update bundle"
generate-key
------------
Generates an ECDSA SHA-256 public + private keypair.
.. code-block:: bash
$ pw update generate-key [-h] pathname
.. csv-table::
:header: "Argument", "Description"
:widths: 30, 70
:align: left
``pathname``, "output pathname for the new key pair"
create-root-metadata
--------------------
Creates a root metadata.
.. code-block:: bash
$ pw update create-root-metadata [-h]
[--version VERSION] \
--append-root-key ROOT_KEY \
--append-targets-key TARGETS_KEY \
-o/--out OUT
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--append-root-key``, "path to root key (public)"
``--append-targets-key``, "path to targets key (public)"
``--out``, "output path of newly created root metadata"
``--version``, "anti-rollback version number of the root metadata (defaults to 1)"
sign-root-metadata
------------------
Signs a given root metadata.
.. code-block:: bash
$ pw update sign-root-metadata [-h] \
--root-metadata ROOT_METADATA \
--root-key ROOT_KEY
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--root-metadata``, "Path of root metadata to be signed"
``--root-key``, "Path to root signing key (private)"
inspect-root-metadata
---------------------
Prints the contents of a given root metadata.
.. code-block:: bash
$ pw update inspect-root-metadata [-h] pathname
.. csv-table::
:header: "Argument", "Description"
:widths: 30, 70
:align: left
``pathname``, "Path to root metadata"
create-empty-bundle
-------------------
Creates an empty update bundle.
.. code-block:: bash
$ pw update create-empty-bundle [-h] \
[--target-metadata-version VERSION] \
pathname
.. csv-table::
:header: "Argument", "Description"
:widths: 30, 70
:align: left
``pathname``, "Path to newly created empty bundle"
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--target-metadata-version``, "Version number for targets metadata, defaults to 1"
add-root-metadata-to-bundle
---------------------------
Adds a root metadata to a bundle.
.. code-block:: bash
$ pw update add-root-metadata-to-bundle [-h] \
--append-root-metadata ROOT_METADATA \
--bundle BUNDLE
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--append-root-metadata``, "Path to root metadata"
``--bundle``, "Pathname of the bundle"
add-file-to-bundle
------------------
Adds a target file to an existing bundle.
.. code-block:: bash
$ pw update add-file-to-bundle [-h] \
[--new-name NEW_NAME] \
--bundle BUNDLE \
--file FILE_PATH
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--file``, "Path to a target file"
``--bundle``, "Pathname of the bundle"
``--new-name``, "Optional new name for target"
sign-bundle
-----------
Signs an existing bundle with a dev key.
.. code-block:: bash
$ pw update sign-bundle [-h] --bundle BUNDLE --key KEY
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
:align: left
``--key``, "The targets signing key (private)"
``--bundle``, "Pathname of the bundle"
inspect-bundle
--------------
Prints the contents of a given bundle.
.. code-block:: bash
$ pw update inspect-bundle [-h] pathname
.. csv-table::
:header: "Argument", "Description"
:widths: 30, 70
:align: left
``pathname``, "Pathname of the bundle"
verify-bundle
-------------
Performs verification of an existing bundle.
.. code-block:: bash
$ pw update verify-bundle [-h] \
--bundle BUNDLE
--trusted-root-metadata ROOT_METADATA
.. csv-table::
:header: "Option", "Description"
:widths: 30, 70
``--trusted-root-metadata``, "Trusted root metadata(anchor)"
``--bundle``, "Pathname of the bundle to be verified"