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

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

Verify与 AWS SDK 或 CLI 配合使用

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

CLI
AWS CLI

验证数字签名

以下 verify 示例验证一条 Base64 编码短消息的加密签名。密钥 ID、消息、消息类型和签名算法必须与用于签名该消息的相同。您指定的签名不得采用 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 版本的详细信息。