HTML
<script language="javascript" src="cadesplugin_api.js"></script>
Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.
JavaScript
function SignCreate(certSubjectName, dataToSign) {
var oStore = cadesplugin.CreateObject("CAdESCOM.Store");
oStore.Open(cadesplugin.CAPICOM_CURRENT_USER_STORE, cadesplugin.CAPICOM_MY_STORE,
cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oCertificates = oStore.Certificates.Find(
cadesplugin.CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
if (oCertificates.Count == 0) {
alert("Certificate not found: " + certSubjectName);
return;
}
var oCertificate = oCertificates.Item(1);
var oSigner = cadesplugin.CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = oCertificate;
oSigner.CheckCertificate = true;
var oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
oSignedData.ContentEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = dataToSign;
var sSignedMessage = "";
try {
sSignedMessage = oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);
} catch (err) {
alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
return;
}
oStore.Close();
return sSignedMessage;
}
function Verify(sSignedMessage, dataToVerify) {
var oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
try {
// Значение свойства ContentEncoding должно быть задано
// до заполнения свойства Content
oSignedData.ContentEncoding = cadesplugin.CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = dataToVerify;
oSignedData.VerifyCades(sSignedMessage, cadesplugin.CADESCOM_CADES_BES, true);
} catch (err) {
alert("Failed to verify signature. Error: " + cadesplugin.getLastError(err));
return false;
}
return true;
}
function run() {
var oCertName = document.getElementById("CertName");
var sCertName = oCertName.value; // Здесь следует заполнить SubjectName сертификата
if ("" == sCertName) {
alert("Введите имя сертификата (CN).");
return;
}
// Предварительно закодированные в BASE64 бинарные данные
// В данном случае закодирована строка "Some Data."
var dataInBase64 = "U29tZSBEYXRhLg==";
// Подписаны будут исходные бинарные данные (в данном случае - "Some Data.")
// Такая подпись должна проверяться в КриптоАРМ и cryptcp.exe
var signedMessage = SignCreate(sCertName, dataInBase64);
document.getElementById("signature").innerHTML = signedMessage;
var verifyResult = Verify(signedMessage, dataInBase64);
if (verifyResult) {
alert("Signature verified");
}
}