Развернуть все
Свернуть все

Использование свойства CachePin объекта PrivateKey

Пример использования свойства CachePin объекта PrivateKey, предназначенного для сохранения пароля от контейнера закрытого ключа.

HTML
<script language="javascript" src="cadesplugin_api.js"></script>

Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.

JavaScript
        var CADESCOM_CADES_BES = 1;
        var CAPICOM_MY_STORE = "My";
        var CAPICOM_CURRENT_USER_STORE = 2;
        var CADESCOM_STRING_TO_UCS2LE = 0x00;
        var CADESCOM_BASE64_TO_BINARY = 0x01;
        var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
        var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
        var dataToSign = "Some data here.";
        var dataToSignBase64 = "U29tZSBkYXRhIGhlcmUu";

        var oStore = cadesplugin.CreateObject("CAdESCOM.Store");
        oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
        CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

        var oCertificates = oStore.Certificates.Find(
        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 oCertificatePrivateKey = oCertificate.PrivateKey;
        oCertificatePrivateKey.CachePin = true;

        var oSignedData1 = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
        oSignedData1.ContentEncoding = CADESCOM_STRING_TO_UCS2LE;
        oSignedData1.Content = dataToSign;

        try {
            var sSignedMessage = oSignedData1.SignCades(oSigner, CADESCOM_CADES_BES, true);
        } catch (err) {
            alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
            return;
        }

        var oSignedData2 = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
        oSignedData2.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
        oSignedData2.Content = dataToSignBase64;

        try {
            var sSignedMessage = oSignedData2.SignCades(oSigner, CADESCOM_CADES_BES, true);
        } catch (err) {
            alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
            return;
        }

        var oSignedData3 = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
        oSignedData3.ContentEncoding = CADESCOM_STRING_TO_UCS2LE;
        oSignedData3.Content = dataToSign;

        try {
            var sSignedMessage = oSignedData3.SignCades(oSigner, CADESCOM_CADES_BES, true);
        } catch (err) {
            alert("Failed to create signature. Error: " + cadesplugin.getLastError(err));
            return;
        }
        oStore.Close();