Работа с УКЭП. Подписание ЭЦП. (КриптоПро + VBS) У меня получилось и у вас получится.

На множестве фрумов задают вопросы "Да кто такой этот ваш КриптоПро?". На данный момент существуе множество сервисов (в основном государственных), которые требуют подписание отправляемых данных по УКЭП. А как это сделать то?

Вот вам пример на VBS подписания произвольной строки открепленной цифровой подписью:

'-------------------- Получаем объекты -------------------------
		On Error Resume Next
		Set objCadeCom = CreateObject("CAdESCOM.CPSigner") 
		Set objCadeComStore = CreateObject("CAdESCOM.Store") 
		Set objSigningTimeAttr = CreateObject("CAdESCOM.CPAttribute")
		Set objSignedData = CreateObject("CAdESCOM.CadesSignedData")
		Set objSvrHTTPS = CreateObject("WinHttp.WinHttpRequest.5.1")
		Set WshShell = CreateObject("WScript.Shell" )
		Set objFSO = CreateObject("Scripting.FileSystemObject")
		Set ExpCrt = Nothing ' Тут магия. Если написать так, то вы увидете диалог опреционной системы для выбора сертификата
		public LogFilePath
		Path =  WshShell.CurrentDirectory
		LogFilePath = Path&"\auth_log.log" ' Имя файла лога
		 If objFSO.FileExists(LogFilePath) = 0 Then 'Содаем файл лога, если его нет. 
		  set objTSlog = objFSO.CreateTextFile(LogFilePath) 
		  objTSlog.Close
		 End If
		objCadeComStore.Open 2,"My",0
		Set Certs=objCadeComStore.Certificates
		If Err.Number <> 0 Then ' Запись сообщения об ошибке в лог
			Log (Err.Description)
		End If 		
		objCadeCom.Certificate = ExpCrt
		objSigningTimeAttr.Name=0
		objSigningTimeAttr.Value=Now
		objCadeCom.AuthenticatedAttributes2.Add(objSigningTimeAttr)
		TextForSign = "Работа с УКЭП это не просто"	 
		objSignedData.ContentEncoding = 0 'Тут 1 - если ваше сообщение закодировано в Base64 и 0 если нет.
		objSignedData.Content = TextForSign 
		sSignedMessage = objSignedData.SignCades(objCadeCom, 1,False, 0)
		sSignedMessage = Replace(sSignedMessage,Chr(13),"")
		sSignedMessage = Replace(sSignedMessage,Chr(10),"")
		Log sSignedMessage 'Запись подписанной строки в лог
		objSignedData = Unassgned
		objCadeCom = Unassgned
		objCadeComStore = Unassgned
		objSigningTimeAttr = Unassgned
		If Err.Number <> 0 Then ' Запись сообщения об ошибке в лог
			Log (Err.Description)
		End If
		wscript.quit
'---------------------------------------------------------------------
		Function Log (strLog)' Запись лога
		  Set objTSlog = objFSO.OpenTextFile(LogFilePath, 8)
		  objTSlog.Writeline Now & "    " & strLog
		  objTSlog.Close
		End Function

Ничего сложного. Только вот примеров подобной операции я нигде не нашел.
Подобным образом можно подписывать так же и файлы.