Как проверить сообщение, содержащее символьные точки Unicode, с помощью библиотеки криптографии Python - PullRequest
0 голосов
/ 10 марта 2020

Я уже некоторое время пользуюсь библиотекой криптографии python и у меня есть вопрос о проверке подписей полезных данных, содержащих юникод ...

Это то, что библиотека официально поддерживает? Мне не удалось получить исключение (только тихий сбой) при передаче байтов, которые не являются простыми аргументами для аргумента 'message' (2nd) метода проверки RSA

https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/#verification

В настоящее время мое приложение генерирует подпись на устройстве, используя JS, и я хотел бы проверить подпись и сообщение, используя python, однако существуют небольшие расхождения между процессами сериализации base64 каждого языка, и это может быть признаком того, что я лаю не на том дереве ...

Вот как выглядит мой проверочный код в python:

try:
  public_key.verify(
     base64.b64decode(signature),
     message.encode('utf8', 'strict'),
     padding.PSS(
       mgf=padding.MGF1(hashes.SHA256()),
       alt_length=20
     ),
     hashes.SHA256()
  )
except Exception as e:
  print("This is run, but e is empty when the message has non-ascii characters")

и он успешно проверяет сообщения до тех пор, пока поскольку они содержат только символы ASCII. Любые не-ascii-символы в сообщении приводят к тому, что при проверке возникает сбой при вызове пустого исключения.

Любая помощь в понимании этой проверки подписи для символов Юникода будет принята с благодарностью! Спасибо ...

...