ここに記載されているように、Python 暗号化ライブラリを使用して署名を検証しようとしています https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/
これはクライアント サーバー TCP チャット アプリのコンテキストであり、クライアントは署名を計算し、それをクライアントに送信して、それが実際に正しいサーバーであることを確認します。署名は検証のために関数に渡されます。
def VerifySignature(signature):
with open("server_publickey.pem", "rb") as key_file:
public_key = serialization.load_pem_public_key(
key_file.read(),
#password=None,
backend=default_backend()
)
verifier = public_key.verifier(
signature,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
message = b"the message that the server verified"
verifier.update(message)
if verifier.verify():
return 1
else:
return 0
0 が返されていることに気付きました。Cryptography の仕様によると、verifier.verify() が失敗すると例外が返されるように見えるため、これをテストする他の方法がわかりません。