Использование
Полный пример использования можно посмотреть на странице example.html.
Создание экземпляра
let crypto = new CryptoHelper(); crypto.init().then(() => { // плагин инициализирован и готов к работе }).catch(() => { // пользователь отклонил запрос }); // здесь плагин еще не инизиализирован
При вызове у пользователя будет запрошено разрешение на выполнение операций с ключами или сертификатами — если пользователь отклонит запрос, то плагин не будет активирован и дальнейшая работа станет бесполезной.
Получение сертификатов
Их хранилища пользователя запрашиваются только активные и валидные сертификаты.
let certificates = await crypto.getCertificates(); // => [{ // $original: Object, // subject: Object { name, email, company, city, ...}, // issuer: Object { name, email, company, ...}, // version: 3, // serialNumber: "12003B1267D658852004813D6F0001003B1267", // thumbprint: "75C9AD57EEC3A3E914FE1EDB518BD817EDE81797", // validFrom: "2019-09-18T11:38:09.000Z", // validTo: "2019-12-18T11:48:09.000Z", // hasPrivate: true, // isValid: true // }, ...]
Подписание
Класс содержит несколько методов подписания данных:
Метод | Аргументы | Описание |
---|---|---|
sign | (Сertificate, String | File | FileList | HtmlInputElement) | Общий метод |
signString | (Сertificate, String, toBase64 = true) | Подписание строки |
signFile | (Сertificate, File) | Подписание файла |
signFileList | (Сertificate, FileList) | Подписание списка файлов |
Предпочтительней использовать общий метод, который автоматически выбирает нужны метод на основании переданных данных.
// Подписание строки let secret = 'My secret string'; let sign = await crypto.sign(certificate, secret); // => 'MIIIgAYJKoZIhvc...'
// Подписание файлов из <input id='filesToSign' type='file'> let filesInput = document.getElementById('filesToSign'); let signs = await crypto.sign(certificate, filesInput); // => // Или так let signs = await crypto.sign(certificate, filesInput.files); // Подписание произвольного файла let sign = await crypto.sign(certificate, filesInput.files); // => 'MIII4QYJKoZIhv...'
Верификация
Для проверки подлинности подписи для документа используется метод
let data = 'My secret string'; let sign = 'MIIIgAYJKoZIhvc...'; let signInfo = await crypto.verify(data, sign, true); if (!signInfo) { // Подпись не валидна } else { // Подпись валидна, вывести список подписей for (let sign in signInfo) { console.log(`Timestamp: ${sign.ts}, Name: ${sign.cert.subject.name}`); } }