WebCrypto поддерживает RSA, но заставляет вас выбирать схему заполнения для различных операций, которые вы можете выполнять. RSA может выполнять как подписание / проверку, так и шифрование / дешифрование (+ перенос ключей), но это не очень возможно с API webcrypto.
Когда я генерирую ключ RSA с помощью RSA-OAEP, тот же ключ можно было бы использовать для RSA-PSS, однако нет четкого способа обойти тех, кто использует API webcrypto.
Моя первоначальная мысль заключалась в том, чтобы предпринять следующие шаги для преобразования ключей:
- экспортировать ключ, используя
exportKey
сjwk
- "исправить"
alg
с (например)RSA-OAEP-512
наPS512
"исправить"
key_ops
a.
encrypt
->verify
b.
decrypt
->sign
Импортируйте «фиксированный» ключ с правильным алгоритмом.
Эта система выходит из строя, когда ключ не экспортируется, что я хочу сделать для дополнительной безопасности закрытых ключей (вредоносные скрипты, self-xss и т. Д.).
Что было бы хорошим способом «конвертировать» между типами алгоритмов, кроме сохранения ключа без возможности экспорта?