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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Vad21im  
#1 Оставлено : 14 июля 2022 г. 20:20:47(UTC)
Vad21im

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.07.2022(UTC)
Сообщений: 3
Российская Федерация
Откуда: Республика Дагестан. г. Хасавюрт

Добрый день, заранее спасибо всем кто уделит время и внимание.
Потратил три дня но все еще не решил задачу.
Использую npm пакет crypto-pro

Импортирую методы
import { getUserCertificates, Certificate, getCertificate, exportBase64 } from 'crypto-pro';

Делаю первый шаг авторизации.
Выбор ключа работает и все ок.
После выбора вызываю функцию stepOne
async stepOne(cert){
this.certSt = cert.thumbprint ------------------------------------------------------------------------- получаю thumbprint сертификата что выбрал.
const certIn = await getCertificate(cert.thumbprint) --------------------------------------------------- Кладу сертификат в certIn
this.$sendMessageToLine(messages.DIADOC_CONNECT, {public_certificate: await (certIn.exportBase64())})--- Отправляю закодированный в Base64 свой публичный ключ
},

В ответ с сервера получаю
encrypted_string_base64: "MIIEJgYJKoZIhvcNAQcDoIIEFzCCBBMCAQAxggLaMIIC1gIBADCCAf8wggHoMRswGQYJKoZIhvcNAQkBFgxjYUBzZXJ0dW0ucnUxGDAWBgUqhQNkARINMTExNjY3MzAwODUzOTEaMBgGCCqFAwOBAwEBEgwwMDY2NzMyNDAzMjgxCzAJBgNVBAYTAlJVMTMwMQYDVQQIDCo2NiDQodCy0LXRgNC00LvQvtCy0YHQutCw0Y8g0L7QsdC70LDRgdGC0YwxITAfBgNVBAcMGNCV0LrQsNGC0LXRgNC40L3QsdGD0YDQszFSMFAGA1UECQxJ0YPQu9C40YbQsCDQo9C70YzRj9C90L7QstGB0LrQsNGPLCDQtC4gMTMsINC70LjRgtC10YAg0JAsINC+0YTQuNGBIDIwOSDQkTFsMGoGA1UECgxj0J7QsdGJ0LXRgdGC0LLQviDRgSDQvtCz0YDQsNC90LjRh9C10L3QvdC+0Lkg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0YHRgtGM0Y4gItCh0LXRgNGC0YPQvC3Qn9GA0L4iMWwwagYDVQQDDGPQntCx0YnQtdGB0YLQstC+INGBINC+0LPRgNCw0L3QuNGH0LXQvdC90L7QuSDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7RgdGC0YzRjiAi0KHQtdGA0YLRg9C8LdCf0YDQviICEQMxj5AA2q1Wi0kJJzePc7tvMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICBIGsMIGpMCgEIOvrTsivSxJ96DYqDIDPy7yMmBANpgPL9+POc5qLWgxNBAQ9mC/4oH0GCSqFAwcBAgUBAaBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEDSdGWL/30dMv0lKPbAAAfUYuPLTc9QJzIbsxycRhujQYcHbJo1fyAjlmKxn2u34l6jgQzKVQqb+4j2B9JUjR+EBAh27xaXlT3sgDCCAS4GCSqGSIb3DQEHATAdBgYqhQMCAhUwEwQIVJOwYjO58BcGByqFAwICHwGAggEA3mo03YkI8qjKo/eRhzU2ba7lFdKlkbI+M/5jJQ6Mh3cg6evHCzuYw1L/j1toVauP/1QNCciRgFKZDFMNzFVUUMuH0dhklWihgFdM1mK4iI7TwPhUmG8dBkXkR9H/tNV89OXwFa4efW8R/OajFaUUOiPDFaZ3gI6iYEWZNaiCBECkJpUpin5Cxi9z241QmBeAoEHHSbSRIvYWz1vZqKpdM/2RveYQUB2+SoGag1Z0Xv3yBcCPswCisiVU3mycmQp9UId8F+kB/sbbFkSnaVtKIxnq1Z0jz8A2zlaMiVz3lX+PfSAcctWi4A9Q7W+eXyDWYpL/IYsd1J1sxJ2ViDLedw=="

const encrypted_string_base64in = encrypted_string_base64

Теперь вызываю функцию stepTwo и нужно осуществить следующие:

async stepTwo(cert64){
1. расшифровать encrypted_string_base64in в байт
2. затем зашифровать приватным ключом результат пункта 1
3. затем результат пункта 2 закодировать в base64 и отправить на сервер.
}
Помогите пожалуйста с методами) убил весь 3 дня и особо нечего не получилось.

Смотрел сюда https://docs.cryptopro.r...n-samples-enveloped-data
не до конца понял как работает этот код.
На пример var oEnvelopedData = cadesplugin.CreateObject("CAdESCOM.CPEnvelopedData"); Как получить этот объект? cadesplugin? в npm пакете crypto-pro

Ну или есть у кого то пример этого дела? Буду очень благодарен.

Когда решу эту задачу напишу подробный туториал. Спасибо.
Offline Санчир Момолдаев  
#2 Оставлено : 15 июля 2022 г. 9:16:53(UTC)
Санчир Момолдаев

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

Группы: Администраторы, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,244
Российская Федерация

Сказал(а) «Спасибо»: 106 раз
Поблагодарили: 300 раз в 278 постах
замечу что официальных npm пакетов от нашей компании нет
Техническую поддержку оказываем тут
Наша база знаний
Offline Vad21im  
#3 Оставлено : 15 июля 2022 г. 11:16:23(UTC)
Vad21im

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.07.2022(UTC)
Сообщений: 3
Российская Федерация
Откуда: Республика Дагестан. г. Хасавюрт

Не много повозился и смог расшифровать, только не понятно правильно ли я это сделал,

так же под вопросом этим три строки:
await oEnvelopedData.propset_Content(btoa(encMessage))
console.log('2')
oEnvelopedData.propset_Recipients.Recipients.Add(oCertEncrypt)
console.log('3')
let encMessageComplite = oEnvelopedData.Encrypt(CADESCOM_ENCODE_BASE64)

Вся функция целиком

async stepTwo(cert64){
const certsApi = await ccpa
certsApi.EnCode = async function EnCodeDiadoc(cert64, CertEncrypt){
// Cert64 - То что приходит с бэкенда
// CertEncrypt - Cертификат которым надо расшифровать и зашифровать обратно
cadescomMethods.oEnvelopedData = async function oEnvelopedData () {
return this.createObject("CAdESCOM.CPEnvelopedData");
};
const oEnvelopedDataDecrypt = await cadescomMethods.oEnvelopedData()
await oEnvelopedDataDecrypt.Decrypt(cert64)
const encMessage = oEnvelopedDataDecrypt.Content
let oCertSignature = CertEncrypt
let oCertEncrypt = CertEncrypt
const oEnvelopedData = await cadescomMethods.oEnvelopedData()
console.log('1')
await oEnvelopedData.propset_Content(btoa(encMessage))
console.log('2')
oEnvelopedData.propset_Recipients.Recipients.Add(oCertEncrypt)
console.log('3')
let encMessageComplite = oEnvelopedData.Encrypt(CADESCOM_ENCODE_BASE64)

}
certsApi.EnCode(cert64, this.certIn)


Помогите пожалуйста разобраться)

Отредактировано пользователем 15 июля 2022 г. 11:17:06(UTC)  | Причина: Не указана

Offline Vad21im  
#4 Оставлено : 15 июля 2022 г. 13:20:30(UTC)
Vad21im

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.07.2022(UTC)
Сообщений: 3
Российская Федерация
Откуда: Республика Дагестан. г. Хасавюрт

Проблема решена
Оказалось что в случае
await oEnvelopedDataDecrypt.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY)
функция принимая в base64 возвращает уже шифрованные данные в base64 которые надо отправить на бэк

import cadescomMethods from 'cadesplugin-crypto-pro-api/src/cadescomMethods.js'
import { CADESCOM_BASE64_TO_BINARY, } from 'cadesplugin-crypto-pro-api/src/constants/cadescom.js'

async stepTwo(cert64){
const certsApi = await ccpa
certsApi.EnCode = async function EnCodeDiadoc(cert64, thumbprint){
const currentCert = await this.currentCadesCert(thumbprint);
cadescomMethods.oEnvelopedData = async function oEnvelopedData () {
return this.createObject("CAdESCOM.CPEnvelopedData");
};
const oEnvelopedDataDecrypt = await cadescomMethods.oEnvelopedData()
await oEnvelopedDataDecrypt.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY)
await (await oEnvelopedDataDecrypt.Recipients).Clear()
await (await oEnvelopedDataDecrypt.Recipients).Add(currentCert)
oEnvelopedDataDecrypt.Decrypt(cert64)
const encMessage = oEnvelopedDataDecrypt.Content
return encMessage
}

Отредактировано пользователем 15 июля 2022 г. 13:21:35(UTC)  | Причина: Не указана

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