Добрый день. У меня есть код, смысл подписание хеша на клиенте с возвратом на сервер.
Это часть кода, смысл высылать весь я не вижу. Я пытаюсь плучить OID если он есть
каждый раз в среде разработчика в браузере выдается ошибка
"Uncaught (in promise) TypeError: Cannot read property 'PublicKey' of undefined"
Да я прекрасно понимаю, что вы можете сказать убери его из Promise, я делал и без него результат абсолютно идентичный.
Единственное что, нет задачи использования генератора, поэтому все связанное с yield отпадает напрочь.
CryptoPro, также как и плагин установлены. Сертификатами проверял разными и вашим тестовым ГОСТ 34.11 и рабочим, которым все прекрасно подписывается на рабочей станции. Также локальный сервер добавлен в доверенный в настройках ЭЦП.
Сам код из области oid смотрел как в интернете, так и в функциях внутри скрипта Code.js который есть на тестовой странице CryptoPro. То есть по сути я угрохал 3 дня, но так и не могу понять, что я делаю не так. У меня просто уже начался полный ступор от переисбытка информации, я чрезмерно много раз менял код но результат тот же самый. Естествено ошибок в нем было намного больше, но по факту осталось вот эта одна.
Заранее спасибо!
var oStorePromise = cadesplugin.CreateObjectAsync("CAPICOM.Store");
oStorePromise.then(
function (oStore) {
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
certificate = global_selectbox_container[selectedCertID];
oStore.Certificate = certificate;
alert('oStore - ok');
var oSignerData = cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
oSignerData.then(
function (oSigner) {
oSigner.Certificate = certificate;
oSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
oSigner.TSAAddress = "https://www.cryptopro.ru/tsp/";
alert('oSigner - ok');
var oHashedDataPromise = cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
oHashedDataPromise.then(
function (oHashedData) {
var pubkey = certificate.PublicKey();
var alg = pubkey.Algorithm;
var oid = alg.Value;
alert('cert-ok');
if (oid == "1.2.643.7.1.1.1.1") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
}
else if (oid == "1.2.643.7.1.1.1.2") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512;
}
else if (oid == "1.2.643.2.2.19") {
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
}
else {
alert('Невозможно подписать этим сертификатом! OID ' + oid);
return;
}
oHashedData.SetHashValue(dataToSign.Hash);
alert('OID: ' + oid + ' Hash - Ok');
Отредактировано пользователем 8 декабря 2018 г. 20:14:53(UTC)
| Причина: Не указана