CmdID

CmdID / aws / aws kms

aws kms sign

Creates a digital signature for a message or message digest by using the private key in an asymmetric signing KMS key. AWS CLI reference

2 examples 6 options Its page in the AWS CLI reference

Opens CmdID with your command. It is read in your browser and sent nowhere.

Examples

from aws-cli, each command read by CmdID

Example 1: To generate a digital signature for a message

The following sign example generates a cryptographic signature for a short message. The output of the command includes a base-64 encoded Signature field that you can verify by using the verify command.

You must specify a message to sign and a signing algorithm that your asymmetric KMS key supports. To get the signing algorithms for your KMS key, use the describe-key command.

In AWS CLI v2, the value of the message parameter must be Base64-encoded. Or, you can save the message in a file and use the fileb:// prefix, which tells the AWS CLI to read binary data from the file.

Before running this command, replace the example key ID with a valid key ID from your AWS account. The key ID must represent an asymmetric KMS key with a key usage of SIGN_VERIFY.

msg=(echo 'Hello World' | base64)

aws kms sign \
    --key-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
    --message fileb://UnsignedMessage \
    --message-type RAW \
    --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256
Its output
{
    "KeyId": "arn:aws:kms:us-west-2:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "Signature": "ABCDEFhpyVYyTxbafE74ccSvEJLJr3zuoV1Hfymz4qv+/fxmxNLA7SE1SiF8lHw80fKZZ3bJ...",
    "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256"
}

For more information about using asymmetric KMS keys in AWS KMS, see Asymmetric keys in AWS KMS in the AWS Key Management Service Developer Guide.

Example 2: To save a digital signature in a file (Linux and macOs)

The following sign example generates a cryptographic signature for a short message stored in a local file. The command also gets the Signature property from the response, Base64-decodes it and saves it in the ExampleSignature file. You can use the signature file in a verify command that verifies the signature.

The sign command requires a Base64-encoded message and a signing algorithm that your asymmetric KMS key supports. To get the signing algorithms that your KMS key supports, use the describe-key command.

Before running this command, replace the example key ID with a valid key ID from your AWS account. The key ID must represent an asymmetric KMS key with a key usage of SIGN_VERIFY.

First, Base64-encode the message and save it in the EncodedMessage file.

echo 'hello world' | base64 > EncodedMessage

Then, sign the encoded message.

aws kms sign --key-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 --message fileb://EncodedMessage --message-type RAW --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 --output text --query Signature | base64 --decode > ExampleSignatureIdentify
--key-idIdentifies an asymmetric KMS key.
--messageSpecifies the message or message digest to sign.
--message-typeTells KMS whether the value of the Message parameter should be hashed as part of the signing algorithm.
--signing-algorithmSpecifies the signing algorithm to use when signing the message.
--outputThe formatting style for command output.
--queryA JMESPath query to use in filtering the response data.

Trips 1 Sigma rule: lowDecode Base64 Encoded Text by Daniil Yugoslavskiy, oscd.community

This command produces no output. This example extracts the Signature property of the output and saves it in a file.

For more information about using asymmetric KMS keys in AWS KMS, see Asymmetric keys in AWS KMS in the AWS Key Management Service Developer Guide.

Options

6 in the AWS CLI reference
--dry-runChecks if your request will succeed.
--grant-tokensA list of grant tokens.
--key-idIdentifies an asymmetric KMS key.
--message-typeTells KMS whether the value of the Message parameter should be hashed as part of the signing algorithm.
--messageSpecifies the message or message digest to sign.
--signing-algorithmSpecifies the signing algorithm to use when signing the message.