Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Работа с плагином cadesplugin_api.js в проекте на TypeScript (Angular)
Статус: Участник
Группы: Участники
Зарегистрирован: 12.07.2022(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 2 раз
|
Всем привет. Подскажите что нужно сделать, чтобы на компоненте можно было посчитать хеш переданного сообщения и подписать его с помощью плагина. Я делаю следующим образом. Закинул cadesplugin_api.js по пути /src/assets/js/cadesplugin_api.js, и в angular.json в массиве "scripts": ["src/assets/js/cadesplugin_api.js"] - указал путь на него. В шаблоне компонента (.html) подключаю этот скрипт: <script language="javascript" src="/src/assets/js/cadesplugin_api.js"></script>. Теперь хочу вызвать функцию (она также на JS): Код:
function customSignedData(data, thumbprint, callback) {
console.log('js customSignedData scrpt loaded!')
var CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100;
var CADESCOM_BASE64_TO_BINARY = 1;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_MY_STORE = "my";
var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
var CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
var CADESCOM_CADES_BES = 1;
var hashedDataPromise = cadesplugin.createObjectAsync("CAdESCOM.HashedData");
hashedDataPromise.then(
function(hashObject) {
hashObject.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
hashObject.DataEncoding = CADESCOM_BASE64_TO_BINARY;
// Получение сертификата по отпечатку
var oStorePromise = cadesplugin.createObjectAsync("CAPICOM.Store");
oStorePromise.then(
function(oStore) {
oStore.Open(CAPICOM_CURRENT_USER_STORE,
CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var certificate = oStore.Certificates
.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint)
.Item(1);
// Подпись хэша
var signerPromise = cadesplugin.createObjectAsync("CAdESCOM.CPSigner");
signerPromise.then(
function (signerObject) {
signerObject.Certificate = certificate;
signerObject.TSAAddress = "https://www.cryptopro.ru/tsp/";
var signedDataPromise = cadesplugin.createObjectAsync("CAdESCOM.CadesSignedData");
signedDataPromise.then(
function (signedDataObject) {
signedDataObject.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
hashObject.Hash(data.Data);
var signatureHex = signedDataObject.SignHash(hashObject, signerObject, CADESCOM_CADES_BES);
data.Signature = signatureHex;
data.SignDate = new Date();
callback(data);
})
});
});
});
};
Я пробовал добавлять ее внутрь cadesplugin_api.js и вызывать оттуда; Создавал отдельный signature_script.js, подключал аналогично как плагин и объявлял в компоненте(.ts): declare function customSignedData(data: any, thumbprint: any, callback: any): any; При вызове этой функции получаю сообщения: В первом случае: "customSignedData is not defined", во втором: "cadesplugin.createObjectAsync is not a function". т.е. во втором варианте(когда эта функция отдельно в signature_script.js) компонент ее видит, но не видит методы объекта cadesplugin. Что я делаю неправильно (может надо экспортировать что-то из cadesplugin_api.js в компонент? но там функция выглядит так Код:;(function () { if(window.cadesplugin) return;
var pluginObject; ...}());
Не понимаю как заставить это работать?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2022(UTC) Сообщений: 26 Откуда: Moscow
|
// Из базовых примеров в CertListBox = base64_encode('тело_самого_файла'); // Лучше жать на PHP, но можно и их функцией, стандартная btoa() - глючит символы. sign_file = Common_SignCadesBES_File('CertListBox'); alert(sign_file);
// А на самом деле из неё передаётся в Common_SignCadesBES_File(id, thumbprint, output_sign_file);
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Работа с плагином cadesplugin_api.js в проекте на TypeScript (Angular)
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close