Back to projects page

Генерация ECDSA/RSA ключей в браузере, подпись и верификация строк, созданным/импортированным ключом

2000₽

Необходимо используя встроенные возможности браузера (SubtleCrypto.generateKey()) или используя другие готовые библиотеки написать функции, которые будут:
1. Создавать пару ключей в формате RSA/ECDSA и уметь экспортировать её в PEM (crypto.subtle.exportKey("pkcs8", keyPair)). Тут есть проблема, Firefox до сих пор pkcs8 не поддерживает, поэтому лучше сразу создавать в jwl, а потом конвертировать в pem через какой-нибудь js-crypto-key-utils или другое решение. Это, пожалуй, самая непонятная для меня часть, т.к. всё остальное делается очень легко даже на коде примеров в developer.mozilla.
2. Делать обратное: брать текст pem ключа и конвертировать в jwl, а затем в пару SubtleCrypto.importKey(). Если pem неправильный, то возвращать false.
3. Подписывать любой текст приватным ключом, возвращая подпись в base64.
4. Верифицировать подпись, которая находится в base64 публичным ключом,  возвращая true / false.

Всё это должно работать во всех современных браузерах (IE/Edge могут идти лесом).
Мне нужно всё подружить, чтобы на выходе у меня были простые функции вроде:
generateKeyPair( format, settings ) на выходе пара, из которой потом легко получить jwl приватного и публичных ключей через SubtleCrypto.exportKey()
jwlTopem( jwlJson) на выходе string с pem, либо false если данные неправильные
pemTojwl( pemText ) на выходе jwl json
jwlToKeyPair (по сути импорт SubtleCrypto.importKey() с автодетектом формата)
signMessageWithPrivate ( keyPair.privateKey ) на выходе подпись в base64
verifyMessageWith( message, keyPair.publicKey ) на выходе true / false


Названия функций я для пример написал. Важно чтобы работало и как можно проще было делать действия из четырёх пунктов выше.

Project page in Fl.ru

Site: Fl.ru | Программирование, Веб-программирование

Published by:

Similar projects

Написать софт для соц сети linkedin

- менеджеры находят домены нужных компаний и добавляют их в гугл эксель - софт должен брать эти д...

Связать платформу codeigniter + API BigBlueButton

Задача Уважаемые фрилансеры! Нужно связать действующую платформу, написанную на Codeigniter, с уж...

Не работает сайт скорее всего ошибка 500

Не работает сайт скорее всего ошибка 500

Передавать данные с формы Tilda на сторонний сайт по API

Передавать данные с формы Tilda на сторонний сайт по API.  ТЗ во вложении, стек – на ваше усмотре...

Ищем в команду Веб-разработчика

Требуемый опыт работы: 3-6 лет Полная занятость, полный день, удаленная работа Обязанности: Созда...

Ищем Node.js разработчика

Мы используем:          – Node.js (Typescript)          – Puppeteer          – Browserless Основн...

Доработка проекта на Yii

Требуется PHP-программист для доработки бэкенда проекта. Стек: PHP, Yii, PostgreSQL. Оплата сдель...

Исправить вывод decription в интернет магазине на Битрикс

Неделю назад прописывали дескрипшн для 1 категории, видимо ошиблись и теперь во всех категориях и...