Verify与 AWS SDK 或 CLI 配合使用 - AWS Key Management Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Verify与 AWS SDK 或 CLI 配合使用

以下代码示例演示如何使用 Verify

CLI
AWS CLI

验证数字签名

以下verify命令验证一条由 Base64 编码的简短消息的加密签名。密钥 ID、消息、消息类型和签名算法必须与用于签名该消息的相同。

在 AWS CLI v2 中,message参数的值必须采用 Base64 编码。或者,您可以将消息保存在文件中并使用fileb://前缀,它告诉 AWS CLI 从文件中读取二进制数据。

您指定的签名不得采用 base64 编码。如需解码 sign 命令返回的签名的帮助,请参阅 sign 命令示例。

该命令的输出包括一个布尔 SignatureValid 字段,表示签名已通过验证。如果签名验证失败,verify 命令也会失败。

在运行此命令之前,请将示例密钥 ID 替换为 AWS 账户中的有效密钥 ID。

aws kms verify \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --signature fileb://ExampleSignature

输出:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "SignatureValid": true, "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

有关在 KMS 中 AWS 使用非对称 KMS 密钥的更多信息,请参阅密钥管理服务开发人员指南中的AWS 使用非对称密钥

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 Verify

Python
适用于 Python 的 SDK(Boto3)
注意

还有更多相关信息 GitHub。在 AWS 代码示例存储库中查找完整示例,了解如何进行设置和运行。

class KeyEncrypt: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyEncrypt": """ Creates a KeyEncrypt instance with a default KMS client. :return: An instance of KeyEncrypt initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def verify(self, key_id: str, message: str, signature: str) -> bool: """ Verifies a signature against a message. :param key_id: The ARN or ID of the key used to sign the message. :param message: The message to verify. :param signature: The signature to verify. :return: True when the signature matches the message, otherwise False. """ try: response = self.kms_client.verify( KeyId=key_id, Message=message.encode(), Signature=signature, SigningAlgorithm="RSASSA_PSS_SHA_256", ) valid = response["SignatureValid"] print(f"The signature is {'valid' if valid else 'invalid'}.") return valid except ClientError as err: if err.response["Error"]["Code"] == "SignatureDoesNotMatchException": print("The signature is not valid.") else: logger.error( "Couldn't verify your signature. Here's why: %s", err.response["Error"]["Message"], ) raise
  • 有关 API 详细信息,请参阅《AWS SDK for Python(Boto3)API 参考》中的 Verify

有关 S AWS DK 开发者指南和代码示例的完整列表,请参阅将此服务与 AWS SDK 配合使用。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。