Импорт подписи JWK из файла и проверка информации API веб-криптографии - PullRequest
2 голосов
/ 10 июля 2019

Не удалось проверить подпись с помощью API-интерфейса криптографии и ключей алгоритма RSASSA-PKCS1-v1_5.

  1. Сохранить подпись, созданную с помощью функции sign в postgreSQL, в виде строки:

        window.crypto.subtle
          .sign("RSASSA-PKCS1-v1_5", key, this.str2ab(hash))
          .then(sigNature => {
            const sig = this.ab2hex(sigNature); //save sig -> postgreSQL
          });
Я пытаюсь с помощью подписи проверить, что я получаю от postgreSQL:
window.crypto.subtle
          .verify(
            "RSASSA-PKCS1-v1_5",
            key,
            this.str2ab(_signature), //from pSQL
            this.str2ab(_hash) //from pSQL
          )
          .then(isVerified => {
            console.log(isVerified);
          });

Утилиты: * String -> Функция ArrayBuffer:

private str2ab(str) {
    var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
    var bufView = new Uint16Array(buf);
    for (var i = 0, strLen = str.length; i < strLen; i++) {
      bufView[i] = str.charCodeAt(i);
    }
    return buf;
  }
  • ArrayBuffer -> HEX функция:
private ab2hex(buffer) {
    // buffer is an ArrayBuffer
    return Array.prototype.map
      .call(new Uint8Array(buffer), x => ("00" + x.toString(16)).slice(-2))
      .join("");
  }

Проблема в том, что я всегда получаю «ложь» в качестве ответа от функции проверки, даже если я использую правильную пару ключей для подписи и проверки

...