@@ -469,8 +469,42 @@ flag exists so it can be configured in $STEPPATH/config/defaults.json.`,
469469 }
470470
471471 KMSUri = cli.StringFlag {
472- Name : "kms" ,
473- Usage : "The <uri> to configure a Cloud KMS or an HSM." ,
472+ Name : "kms" ,
473+ Usage : `The <uri> to configure a (cloud) KMS or an HSM.
474+ <uri> is formatted as **kmstype:[key=value;...]?[key=value&...]**. The **;**-separated
475+ parameters identify the KMS, and **&**-separated parameters contain credentials and additional configuration for those credentials.
476+
477+ : Supported KMS types:
478+
479+ **YubiKey PIV**
480+ : Use **yubikey:** URIs. Parameters: **serial**, **pin-value**, **pin-source**, **management-key**, **management-key-source**.
481+
482+ **PKCS #11**
483+ : Use **pkcs11:** URIs. Parameters: **module-path**, **token**, **id**, **object**, **pin-value**, **pin-source**.
484+
485+ **TPM 2.0**
486+ : Use **tpmkms:** URIs. Parameters: **name**, **device**, **attestation-ca-url**.
487+
488+ **Google Cloud KMS**
489+ : Use **cloudkms:** URIs. Parameters: **credentials-file**.
490+
491+ **AWS KMS**
492+ : Use **awskms:** URIs. Parameters: **region**, **profile**, **credentials-file**.
493+
494+ **Azure Key Vault**
495+ : Use **azurekms:** URIs. Parameters: **tenant-id**, **client-id**, **client-secret**, **client-certificate-file**.
496+
497+ : Examples:
498+
499+ '''
500+ yubikey:pin-value=123456
501+ pkcs11:module-path=/usr/lib/softhsm/libsofthsm2.so;token=smallstep?pin-value=pass
502+ tpmkms:name=my-key;device=/dev/tpmrm0
503+ awskms:region=us-east-1
504+ azurekms:client-id=fooo;client-secret=bar;tenant-id=9de53416-4431-4181-7a8b-23af3EXAMPLE
505+ '''
506+
507+ For more information, see https://smallstep.com/docs/step-ca/cryptographic-protection/.` ,
474508 }
475509
476510 AttestationURI = cli.StringFlag {
0 commit comments