Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: ActiveXObject, передать null
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » ActiveXObject, передать null

Страниц (1): [1]
 

1. Edwvee - 24 Ноября, 2014 - 15:46:11 - перейти к сообщению
Есть следующий код для создания цифровой подписи:
CODE (javascript):
скопировать код в буфер обмена
  1. function signMessage(message)
  2. {
  3.         var vSettings = new ActiveXObject("CAPICOM.Settings");
  4.         vSettings.EnablePromptForCertificateUI = true;
  5.         var vData = new ActiveXObject("CAPICOM.SignedData");
  6.         vData.Content = message;
  7.         return vData.Sign(null, true, CAPICOM_ENCODE_BASE64);
  8. }

vData.Sign(null, true, CAPICOM_ENCODE_BASE64); - в документации написано, что если первый аргумент null и EnablePromptForCertificateUI, то пользователю должен быть предложен выбор сертификата: http://msdn[dot]microsoft[dot]com/en-us/[dot][dot][dot]8v=vs[dot]85%29[dot]aspx
Но ie ругается: "Несоответствие типа".
CAPICOМ у меня на компьютере стоит, ЭЦП как таковой нет, но по идее на этом моменте не должно ведь крашится? Не хочу слишком разбираться в этой теме, нужен не очень большой функционал.
Как передать null то, чтобы оно схавало? Я уже даже пробовал new ActiveXObject('null')
2. Edwvee - 25 Ноября, 2014 - 12:00:45 - перейти к сообщению
Если кому-то есть дело, то сработал следующий вариант:
CODE (javascript):
скопировать код в буфер обмена
  1. function signMessage(message)
  2. {
  3.         var vSettings = new ActiveXObject("CAPICOM.Settings");
  4.         vSettings.EnablePromptForCertificateUI = true;
  5.         var vData = new ActiveXObject("CAPICOM.SignedData");
  6.         vData.Content = message;
  7.         var signer = new ActiveXObject("CAPICOM.Signer");
  8.        
  9.         return vData.Sign(signer, true, CAPICOM_ENCODE_BASE64);
  10. }

 

Powered by ExBB FM 1.0 RC1