Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline pavenko_sv  
#1 Оставлено : 23 августа 2017 г. 13:26:53(UTC)
pavenko_sv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2017(UTC)
Сообщений: 70
Мужчина
Российская Федерация
Откуда: Нижний Новгород

Сказал «Спасибо»: 39 раз
Решаю задачу:

1) Серилизовать в JSON для последующей переди post-запросом закрытые и открытые ключи

Текущая реализация:

1) Список сертификатов получен через КриптоПро плагин

Код:

function FillCertList_NPAPI() {

    let certList = [];
    let dateObj = new Date();
    let count = 0;
    let text;
    let certCnt;
    let oStore;
    let cert;

    try {
        oStore = cadesplugin.CreateObject("CAdESCOM.Store");
        //https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa388130(v=vs.85).aspx
        oStore.Open();
    } catch (ex) {
        return "Ошибка при открытии хранилища: " + GetErrorMessage(ex);
    }

    try {
        certCnt = oStore.Certificates.Count;
        if (certCnt == 0) {
            return certList;
        }

    } catch (ex) {

        let message = GetErrorMessage(ex);
        if ("Cannot find object or property. (0x80092004)" == message ||
            "oStore.Certificates is undefined" == message ||
            "Объект или свойство не найдено. (0x80092004)" == message) {
            oStore.Close();
            return message;
        }
    }

    for (let i = 1; i <= certCnt; i++) {

        try {
            cert = oStore.Certificates.Item(i);
        } catch (ex) {
            return "Ошибка при перечислении сертификатов: " + GetErrorMessage(ex);
        }

        try {

            if (dateObj < cert.ValidToDate && cert.HasPrivateKey() && cert.IsValid().Result) {
                let issuedBy = cert.GetInfo(1);
                issuedBy = issuedBy || "";
                let certObj = new CertificateObj(cert);
                text = certObj.GetCertString();                
                
                //let oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner");
                //oSigner.Certificate = cert;

                let certBinary = cert.Export(CADESCOM_ENCODE_BASE64);
               
                certList.push({
                    'value': text.replace(/^cn=([^;]+);.+/i, '$1'),
                    'text': text.replace("CN=", "") + " " + issuedBy,
                    'subject': certObj.GetCertName(),
                    'issuer': certObj.GetIssuer(),
                    'from': certObj.GetCertFromDate(),
                    'till': certObj.GetCertTillDate(),
                    'algorithm': certObj.GetPubKeyAlgorithm(),
                    'provname': certObj.GetPrivateKeyProviderName(),
                    'thumbprint': cert.Thumbprint,
                    'privateKey': cert.PrivateKey,
                    'signature': certBinary
                });

                count++;

            } else { continue; }
        } catch (ex) {
            return "Ошибка при получении свойства SubjectName: " + GetErrorMessage(ex);
        }
    }

    oStore.Close();
    return certList;
}

Далее планируется выбор сертификата и отправка через Angular 2 серилизованной JSON строкой на наш внутренний локальный api

Вопросы:
Прошу помочь корректно получить параметры PrivateKey и PublicKey


Зараннее спасибо.
Offline pavenko_sv  
#2 Оставлено : 24 августа 2017 г. 15:10:50(UTC)
pavenko_sv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2017(UTC)
Сообщений: 70
Мужчина
Российская Федерация
Откуда: Нижний Новгород

Сказал «Спасибо»: 39 раз
Я смогу долждаться ответа на заданный вопрос?
Offline cross  
#3 Оставлено : 24 августа 2017 г. 17:50:44(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Плагин не даст вам закрытый ключ для сериализации. Такая операция не является безопасной для пользователя и она запрещена.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline pavenko_sv  
#4 Оставлено : 25 августа 2017 г. 7:32:53(UTC)
pavenko_sv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2017(UTC)
Сообщений: 70
Мужчина
Российская Федерация
Откуда: Нижний Новгород

Сказал «Спасибо»: 39 раз
Автор: cross Перейти к цитате
Плагин не даст вам закрытый ключ для сериализации. Такая операция не является безопасной для пользователя и она запрещена.


Благодарю за ответ.
Offline pavenko_sv  
#5 Оставлено : 25 августа 2017 г. 7:41:37(UTC)
pavenko_sv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.08.2017(UTC)
Сообщений: 70
Мужчина
Российская Федерация
Откуда: Нижний Новгород

Сказал «Спасибо»: 39 раз
Автор: cross Перейти к цитате
Плагин не даст вам закрытый ключ для сериализации. Такая операция не является безопасной для пользователя и она запрещена.


По открытому ключу можно описание набора данных?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.