1.0.0 • Published 3 years ago

@3asoft/web-crypto-js v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

Обертка для работы с КриптоПро браузер Плагин

  • Модуль экспортирует глобальную переменную tscrypto
  • Интерфейс
{
        supported: true, 
        plugin: {
            getInfo: информация о плагине
        },
        browserInfo: инфорация о браузере,
        certificate: {
            all: все сертифкаты,
            gost: только ГОСТовые,
            notaryLike: получение сертифкатов по идентификаторам нотариусов (или ВРИО),
            getByHash: поиск по хешу,
            getBySn: поиск по серийному номеру,
            parserDN : разбор "Distinguished name" сертифката 
        },
        signData: подписать данные,
        signHash: подписать по хешу,
        calcHash: получить хеш,
        decryptData: асим. расшифровать данные,
        encryptData: асим. зашифровать на сертификате,
        symmetricAlgorithm: получить объект SymmetricAlgorithm
}

Сертификат

x509Certificate - сертификат, как объект КриптоПро;
subjectName - субъект;
sn          - серийный номер сертифката
thumbprint  - отпечаток сертифката
issuerName  - издатель
validFromDate - время действия с
validToDate   - время действия по
hasPrivateKey - наличие приватного ключа
isValid       - признак валидности
isGost        - ГОСТовый сертифкат

Разбор "Distinguished name" сертификата

метод tscrypto.certificates.parserDN(cert.subjectName)
возвращает объект
{
    full: string , // имя без изменений
    commonName: string, // CN 
    email:string, 
    position:string, // должность
    inn:string, // ИНН
    snils:string, // СНИЛС
    organizationName:string, // Наименование организации
    fio:string, // ФИО владельца
}

SymmetricAlgorithm (обертка на ISymmetricAlgorithm)

SymmetricAlgorithm - повторят методы ISymmetricAlgorithm, результат передается через Promise

Примеры

Получение списка сертификатов
    tscrypto.certificates.all().then(function(certs){
        console.log(certs);
    }, function(error){
        console.error(error);
    })
Получение списка сертификатов для нотариуса
    // tscrypto.certificates.notaryLike(ids, onlyValid)
    tscrypto.certificates.notaryLike(["94200005", "942A0007"], false).then(function(certs){
        console.log(certs);
    }, function(error){
        console.error(error);
    })
Создание открепленной подписи
    var sn='123456789';

    tscrypto.certificates.getBySn()
    .then(function(cert){
        if(cert){
            return tscrypto.signData(cert, base64Data);
        }else{
            throw new Error('Сертификат не найден');
        }
    })
    .then(function(signature){
        console.log(signature);
    })
    .catch(function(error){
        console.error(error);
    })
Создание наложенной подписи
    var sn='123456789';

    tscrypto.certificates.getBySn(sn)
    .then(function(cert){
        if(cert){
            //  signData(cert, data, pinCode, attached) 
            return tscrypto.signData(cert, base64Data, null, true);
        }else{
            throw new Error('Сертификат не найден');
        }
    })
    .then(function(signature){
        console.log(signature);
    })
    .catch(function(error){
        console.error(error);
    })
Шифрование на сертификате
    var sn='123456789';

    tscrypto.certificates.getBySn(sn)
    .then(function(cert){
        if(cert){
            return tscrypto.encryptData(base64Data, cert);
        }else{
            throw new Error('Сертифкат не найден');
        }
    })
    .then(function(signature){
        console.log(signature);
    })
    .catch(function(error){
        console.error(error);
    })