08.06.2006 18:04:18ЭЦП в системе документооборота Ответов: 1
Александр
Есть некая тиражируемая система документооборота на основе Oracle Collaboration Suit. Основная особенность - всё делается через так называемый тонкий клиент, по сути браузер (без установки дополнительного программного обеспечения). Задача состоит в подписании документов ЭЦП. Конкретный вопрос можно ли использовать функционал КриптоПро JCP на клиенте без инсталяции, то есть встроить в некий аплет, который будет загружаться, при необходимости, клиенту. Также интересует поддержка в КриптоПро JCP eToken'ов Аладдина.
 
Ответы:
08.06.2006 20:26:09Павел
Подписать документ на стороне клиента (используя IE 5.х) можно используя com объект CAPICOM.
<object
id="oCAPICOM"
classid="clsid:A996E48C-D3DC-4244-89F7-AFA33EC60679"
codebase="/capicom.cab#version=2,0,0,0">
</object>

<script>
function SignText(text)
{
var retStr = "";
try
{
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_STORE_OPEN_READ_ONLY = 0;
var CAPICOM_INFO_SUBJECT_SIMPLE_NAME = 0;
var CAPICOM_INFO_ISSUER_SIMPLE_NAME = 1;
var CAPICOM_INFO_SUBJECT_EMAIL_NAME = 2;
var CAPICOM_INFO_ISSUER_EMAIL_NAME = 3;
var CAPICOM_ENCODE_BASE64 = 0;
if (IsCAPICOMInstalled() != true)
alert("Библиотека CAPICOM не может быть загружена, возможно из-за низких прав доступа на данной локальной машине.");
else
{
var MyStore = new ActiveXObject("CAPICOM.Store");
MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);
var Certificates = MyStore.Certificates;
Certificates = Certificates.Select("Спискок сертификатов", "Выберите сертификат для подписи документа:");
var SigData = new ActiveXObject("CAPICOM.SignedData");
var Signer = new ActiveXObject("CAPICOM.Signer");
Signer.Certificate = Certificates.Item(1);
SigData.Content=text;
// retStr=SigData.Sign(Signer, true, CAPICOM_ENCODE_BASE64);
retStr=SigData.Sign(Signer, false, CAPICOM_ENCODE_BASE64);
}
}
catch(e)
{
alert("Исключение: " + e.description);
}
return retStr;
}

function IsCAPICOMInstalled()
{
if ((typeof(oCAPICOM) == "object") && (oCAPICOM.object != null)) return true;
return false;
}
</script>