Формат вызова:
СоздатьКрХэшПоИмени(НаКлиенте: целое; Имя: строка): КрХэш; /*только чтение*/
описание:
Функция создания объекта "криптографический хэш".
Формат вызова:
СоздатьПодпись7(НаКлиенте: целое): Подпись7; /*только чтение*/
описание:
Функция создания объекта "отсоединенная подпис".
Формат вызова:
СоздатьСертификат509(НаКлиенте, КакСистема: целое): Сертификат509; /*только чтение*/
описание:
Функция создания объекта "сертификат".
Формат вызова:
СоздатьШтампВремени: КрШтампВремени; /*только чтение*/
Формат вызова:
СоздатьПакет7: Пакет7; /*только чтение*/
Формат вызова:
СоздатьКрХМЛ(НаКлиенте: целое): КрХМЛ; /*только чтение*/
описание:
Объект, представляющий собой криптографический дайджест. Криптодайджест представляет собой дайджест - результат выполнения хэширующей функции над блоком данных. Кроме дайджеста, криптодайджест несет информацию об алгоритме, который был использован для его вычисления.
функции объекта:
АлгоритмФормат вызова:
КрДайджест.Алгоритм: строка; /*только чтение*/
описание:
Алгоритм хэш функции, при помощи которой был вычислен дайджест. Алгоритм представляется в формате oid, например - '1.2.840.113549.2.5', что означает MD5 хэш.
Формат вызова:
КрДайджест.КопияБуфера(Буф: Буфер): Буфер; /*только чтение*/
описание:
Копия значения вычисленного дайджеста, в бинарном формате. Копия означает то, что дальнейшие действия над буфером не изменят содержимое буфера, хранимого в самом объекте.
Формат вызова:
КрДайджест.Равен(Дайджест: КрДайджест): целое; /*только чтение*/
СформироватьЗапросШтампаВремени
Формат вызова:
КрДайджест.СформироватьЗапросШтампаВремени(Политика: строка; Сертификат, Метка: целое): Буфер; /*только чтение*/
Формат вызова:
КрДайджест.ТекстОшибки: строка; /*только чтение*/
Формат вызова:
КрДайджест.Содержит(Буф: Буфер): целое; /*только чтение*/
описание:
Объект, представляющий собой криптографический хэш. Криптографический хэш представляет собой функцию, вычисляющую дайджест для произвольного блока данных. Для блока данных произвольного размера, размер дайджеста всегда одинаков и зависит от алгоритма использованной хэш функции.
пример использования:
функция ТестКрХэш(НаКлиенте: Целое);
переменные
Хэш: КрХэш;
Дайджест: КрДайджест;
Буф, Рез: Буфер;
начало
Хэш := СоздатьКрХэшПоИмени(НаКлиенте, Oid_gost2012_256);
Буф := СоздатьБуфер;
Буф.ЗагрузитьИзФайла("C:\Temp\bs.xml");
Дайджест := Хэш.Вычислить(Буф);
если Дайджест тогда
начало
Рез := Дайджест.КопияБуфера;
ВывестиТекст("Получен дайджест ", Дайджест.Алгоритм, " размером ", Рез.Размер, ", содержимое:");
ВывестиТекст(Рез.ТекстBase64);
конец
иначе
ВывестиТекст("Ошибка при вычислении дайджеста: ", Хэш.ТекстОшибки);
конец;
функции объекта:
ВычислитьФормат вызова:
КрХэш.Вычислить(Данные: Буфер): КрДайджест; /*только чтение*/
описание:
Функция вычисления криптографического дайджеста над заданным блоком данных.
результат:
Объект "криптографический дайджест" в случае успеха, в случае ошибки 0.
Формат вызова:
КрХэш.ТекстОшибки: строка; /*только чтение*/
описание:
Текстовая информация о последней ошибке. Удачное выполнение операции над объектом очищает предыдущее значение.
Формат вызова:
КрХэш.Имя: строка; /*только чтение*/
описание:
Объект, представляющий собой криптографическую структуру X509, иными словами - публичный сертификат.
пример использования:
функция ТестСертификат509(НаКлиенте, КакСистема: Целое);
переменные
Буф: Буфер;
Серт: Сертификат509;
П: Подпись7;
С: Строка;
Ошиб, Статус: Целое;
ДатаВремя: Дробное;
начало
Буф := СоздатьБуфер;
Буф.ЗагрузитьИзФайла("C:\Temp\private-cp-2012-256-b.cer");
Серт := СоздатьСертификат509(НаКлиенте, КакСистема);
Ошиб := Серт.ЗагрузитьИзБуфера(Буф);
если Ошиб = 0 тогда
начало
ВывестиТекст("Серийный номер: ", Серт.СерийныйНомер, ", Алгоритм подписи: ", Серт.АлгоритмПодписи);
ВывестиТекст("Субъект: ", Серт.Субъект("CN"), ", Издатель: ", Серт.Издатель("CN"));
С := Серт.АдрКорневогоСертификата;
пока С делать
начало
ВывестиТекст("Коневой сертификат можно взять здесь: ", С);
С := Серт.СледующийАдрКорневогоСертификата;
конец;
С := Серт.АдрСпискаОтзывов;
пока С делать
начало
ВывестиТекст("Список отзывов можно взять здесь: ", С);
С := Серт.СледующийАдрСпискаОтзывов;
конец;
Ошиб := Серт.ЗагрузитьПоНомеру(Серт.СерийныйНомер);
если Ошиб = 0 тогда
начало
Ошиб := Серт.ПроверитьСертификат(Статус, 0, 0, 0, 0);
если Ошиб = 0 тогда
начало
ВывестиТекст("Статус сертификата сейчас: ", Статус);
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Ошиб, ", описание: ", Серт.ТекстОшибки);
Буф.ЗагрузитьИзФайла("C:\Temp\bs.xml");
ВывестиТекст("Пробуем подписать буфер:");
ВывестиТекст(Буф.Читать(Буф.Размер));
П := Серт.Подписать(Буф, ТекущаяДата, "");
если П тогда
начало
ВывестиТекст("Документ подписан, размер подписи: ", П.КопияБуфера.Размер);
ДатаВремя := П.ДатаВремя(Серт.КопияБуфера);
ВывестиТекст("Дата подписания: ", ДатаВСтроку(ДатаВремя), " ", ВремяВСтроку(ДатаВремя));
Ошиб := Серт.ПроверитьСертификат(Статус, ДатаВремя, 0, 0, $20000000);
если Ошиб = 0 тогда
начало
ВывестиТекст("Статус сертификата на ", ДатаВСтроку(ДатаВремя), " ", ВремяВСтроку(ДатаВремя), ": ", Статус);
если Статус тогда
ВывестиТекст(Серт.ТекстОшибки);
Ошиб := П.ПроверитьПодпись(Буф);
если Ошиб < 0 тогда
ВывестиТекст("Ошибка при выполнении операции: ", П.ТекстОшибки)
иначе если Ошиб > 0 тогда
ВывестиТекст("Подпись не действительна: ", П.ТекстОшибки)
иначе
начало
ВывестиТекст("Подпись действительна");
конец;
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Ошиб, ", описание: ", Серт.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Серт.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Ошиб, ", описание: ", Серт.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Ошиб, ", описание: ", Серт.ТекстОшибки);
конец;
функции объекта:
АдрКорневогоСертификатаФормат вызова:
Сертификат509.АдрКорневогоСертификата: строка; /*только чтение*/
описание:
Функция начала итерации по списку адресов корневых сертификатов данного сертификата. Данный список предоставляется необязательным расширением, входящим в состав сертификата. В связи с этим, списка адресов корневых сертификатов может и не быть.
результат:
Пустая строка в случае ошибки или отсутствия информации, адрес точки распространения корневого сертификата в случае успеха.
Формат вызова:
Сертификат509.АдрСпискаОтзывов: строка; /*только чтение*/
описание:
Функция начала итерации по списку адресов ресурсов, предоставляющих CRL. Каждый издатель ведет, обновляет и предоставляет доступ к списку отозванных сертификатов (CRL). Данный список предоставляется обязательным расширением, входящим в состав сертификата. Отсутствие информации о точках распространения списка отзывов в сертификате это повод задуматься о доверии к такому сертификату.
результат:
Пустая строка в случае ошибки, адрес точки распространения списка отзывов в случае успеха.
Формат вызова:
Сертификат509.АлгоритмПодписи: строка; /*только чтение*/
описание:
Алгоритм подписи, формируемой закрытой частью частью данного сертификата в формате oid, например - '1.2.643.7.1.1.3.2' означает ГОСТ-2012-256.
результат:
Пустая строка в случае ошибки, идентификатор алгоритма в формате oid в противном случае.
Формат вызова:
Сертификат509.ЗагрузитьИзБуфера(Буф: Буфер): целое; /*только чтение*/
описание:
Функция инициализации объекта загрузкой данных в бинарном формате (X509 ASN1 DER) из буфера.
результат:
В случае успеха - 0, в случае ошибки - код ошибки.
Формат вызова:
Сертификат509.ЗагрузитьПоНомеру(Номер, Хранилище: строка): целое; /*только чтение*/
описание:
Функция инициализации объекта поиском и загрузкой заданного сертификата из системного хранилища сертификатов.
результат:
В случае успеха - 0, в случае ошибки - код ошибки.
Формат вызова:
Сертификат509.Издатель(Ид: строка): строка; /*только чтение*/
описание:
Функция получения информации об издателе сертификата.
результат:
Пустая строка в случае ошибки или отсутствия информации, значение в случае успеха.
Формат вызова:
Сертификат509.КакБуфер: Буфер; /*только чтение*/
описание:
Копия бинарного представления сертификата (X509 ASN1 DER).
результат:
Объект в случае успеха, в случае ошибки - 0.
Формат вызова:
Сертификат509.Подписать(Буф: Буфер; ДатаВремя: дробное; Пин: строка): Подпись7; /*только чтение*/
описание:
Функция формирования отсоединенной подписи для заданного блока данных.
результат:
Объект в случае успеха, в случае ошибки - 0.
Формат вызова:
Сертификат509.ПроверитьСертификат(Статус: целое; ДатаВремя: дробное; ЛимитВремениНаОбновлениеМсек, УстареваниеСпискаОтзывовСек, ОпцииПроверки: целое): целое; /*только чтение*/
описание:
Функция проверки сертификата, представленного данным объектом. Проверка заключается в построении цепочки сертификатов от текущего до корневого, проверки каждого из них с учетом имеющихся списков отзывов, сроков действия и целей сертификатов. Проверка сертификата проводится на определенный момент времени.
результат:
В случае успеха возвращается 0, в случае ошибки - код ошибки. В случае успеха необходима дальнейшая проверка доверия к сертификату путем проверки значения "Статус".
Формат вызова:
Сертификат509.СерийныйНомер: строка; /*только чтение*/
описание:
Функция получения серийного номера сертификата.
результат:
Пустая строка в случае ошибки, значение в случае успеха.
СледующийАдрКорневогоСертификата
Формат вызова:
Сертификат509.СледующийАдрКорневогоСертификата: строка; /*только чтение*/
описание:
Функция продолжения итерации по списку адресов корневых сертификатов данного сертификата.
результат:
Пустая строка в случае ошибки, отсутствия информации или завершения итерации, адрес точки распространения корневого сертификата в случае успеха.
Формат вызова:
Сертификат509.СледующийАдрСпискаОтзывов: строка; /*только чтение*/
описание:
Функция продолжения итерации по списку адресов ресурсов, предоставляющих CRL.
результат:
Пустая строка в случае ошибки или завершения итерации, адрес точки распространения списка отзывов в случае успеха.
Формат вызова:
Сертификат509.Субъект(Ид: строка): строка; /*только чтение*/
описание:
Функция получения информации о владельце сертификата.
результат:
Пустая строка в случае ошибки или отсутствия информации, значение в случае успеха.
Формат вызова:
Сертификат509.ТекстОшибки: строка; /*только чтение*/
описание:
Текстовая информация о последней ошибке. Удачное выполнение операции над объектом очищает предыдущее значение.
Формат вызова:
Сертификат509.Хэш: КрХэш; /*только чтение*/
описание:
Функция получение объекта "криптографический хэш", соответствующего алгоритму подписи, указанного для данного сертификата.
результат:
Объект в случае успеха, в случае ошибки - 0.
Формат вызова:
Сертификат509.КопияБуфера(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Сертификат509.Зашифровать7(Буф: Буфер): Пакет7; /*только чтение*/
Формат вызова:
Сертификат509.Начало: дробное; /*только чтение*/
Формат вызова:
Сертификат509.Окончание: дробное; /*только чтение*/
Формат вызова:
Сертификат509.Подписать7(Буф: Буфер; ДатаВремя: дробное; Пин: строка): Пакет7; /*только чтение*/
Формат вызова:
Сертификат509.Проверить7(П: Пакет7; [Буф]: Буфер; [ДатаВремя]: дробное): Буфер; /*только чтение*/
Формат вызова:
Сертификат509.Расшифровать7(П: Пакет7; [Буф]: Буфер; [Пин]: строка): Буфер; /*только чтение*/
Формат вызова:
Сертификат509.РодительскийСерийник: строка; /*только чтение*/
Формат вызова:
Сертификат509.ПодписатьДайджест(Дайджест: КрДайджест; ДатаВремя: дробное; Пин: строка): Подпись7; /*только чтение*/
описание:
Объект, представляющий собой криптографическую структуру PKCS7-signed, иными словами - отсоединенную подпись.
пример использования:
функция ТестПодпись7(НаКлиенте: Целое);
переменные
Буф: Буфер;
П: Подпись7;
ДатаВремя: Дробное;
Ошиб: Целое;
начало
Буф := СоздатьБуфер;
Буф.ЗагрузитьИзФайла("C:\Temp\pkcs7");
П := СоздатьПодпись7(НаКлиенте);
Ошиб := П.ЗагрузитьИзБуфера(Буф);
если Ошиб = 0 тогда
начало
Буф := П.Сертификат;
пока Буф делать
начало
ДатаВремя := П.ДатаВремя(Буф);
если ДатаВремя тогда
начало
ВывестиТекст("Сертификат: размер ", Буф.Размер, ", дата подписания ", ДатаВСтроку(ДатаВремя), ", содержимое:");
ВывестиТекст(Буф.ТекстBase64);
конец
иначе
ВывестиТекст("Ошибка получения даты подписи сертификатом: ", П.ТекстОшибки);
Буф := П.СледующийСертификат;
конец;
конец
иначе
ВывестиТекст("Ошибка при выполнении операции: ", Ошиб, ", описание: ", П.ТекстОшибки);
конец;
функции объекта:
ДатаВремяФормат вызова:
Подпись7.ДатаВремя(Серт: Буфер): дробное; /*только чтение*/
описание:
Функция получения информации о времени формирования данной подписи заданным сертификатом. Внутри PKCS7 структуры это время хранится в UTC+0 временной зоне. Данная функция производит коррекцию времени из UTC+0 во временную зону сервера.
результат:
Время подписания в случае успеха, в случае ошибки - 0.
Формат вызова:
Подпись7.ЗагрузитьИзБуфера(Буф: Буфер): целое; /*только чтение*/
описание:
Функция инициализации объекта бинарными данными в виде PKCS7 структуры.
результат:
В случае успеха - 0, в случае ошибки - код ошибки.
Формат вызова:
Подпись7.КакБуфер: Буфер; /*только чтение*/
описание:
Копия бинарного представления отсоединенной подписи, иными словами - бинарное представление PKCS7 структуры.
результат:
Объект в случае успеха, в случае ошибки - 0.
Формат вызова:
Подпись7.ПроверитьПодпись(Буф: Буфер): целое; /*только чтение*/
описание:
Функция, выполняющая проверку подписи, представленной данным объектом по отношению к заданному (подписанному) блоку данных.
результат:
Отрицательное значение в случае ошибки. Значение 0 в случае отсутствия ошибки и положительного результата проверки подписи. Положительное значение в случае отрицательного результата проверки подписи.
Формат вызова:
Подпись7.Сертификат(Буф: Буфер): Буфер; /*только чтение*/
описание:
Функция начала итерации по сертификатам, хранимым в подписи (теоретически, их может быть произвольное количество).
результат:
Объект в случае успеха, в случае ошибки - 0.
Формат вызова:
Подпись7.СледующийСертификат(Буф: Буфер): Буфер; /*только чтение*/
описание:
Функция продолжения интерации по списку сертификатов, хранимых в подписи.
результат:
Объект в случае успеха, в случае ошибки или завершения итерации - 0.
Формат вызова:
Подпись7.ТекстОшибки: строка; /*только чтение*/
описание:
Текстовая информация о последней ошибке. Удачное выполнение операции над объектом очищает предыдущее значение.
Формат вызова:
Подпись7.КопияБуфера(Буф: Буфер): Буфер; /*только чтение*/
описание:
Объект, представляющий собой криптографический штамп времени. Штамп времени представляет собой результат запроса сервера штампа времени по определенной процедуре. Сам запрос формируется на основе предварительно вычисленного дайджеста (с указанием дополнительных параметров), пакуется в ASN1 DER TS_REQ структуру и отправляется на сервер метки времени с указанием Content-Type: application/timestamp-query. В случае положительного ответа сервера (200), заголовок Content-Type должен иметь значение "application/timestamp-reply", а тело содержать ASN1 DER TS_RESP структуру. Этот ответ необходимо поместить в объект КрШтампВремени для выполнения дальнейших действий.
пример использования:
функция ТестШтампВремени(НаКлиенте: Целое);
переменные
Хэш: КрХэш;
Дайджест: КрДайджест;
Буф, Рез: Буфер;
Запрос: СетевойЗапрос;
Штамп: КрШтампВремени;
начало
Хэш := СоздатьКрХэшПоИмени(НаКлиенте, Oid_gost2012_256);
Буф := СоздатьБуфер;
Буф.ЗагрузитьИзФайла("C:\Temp\bs.xml");
Дайджест := Хэш.Вычислить(Буф);
если Дайджест тогда
начало
Рез := Дайджест.КопияБуфера;
ВывестиТекст("Получен дайджест ", Дайджест.Алгоритм, " размером ", Рез.Размер, ", содержимое:");
ВывестиТекст(Рез.ТекстBase64);
Рез := Дайджест.СформироватьЗапросШтампаВремени("1.3.6.1.4.1.24138.1.1.5.3", 1, 1234);
если Рез тогда
начало
ВывестиТекст("Сформирован запрос размером ", Рез.Размер, ", содержимое:");
ВывестиТекст(Рез.ТекстBase64);
Запрос := СоздатьСетевойЗапрос;
Запрос.Протокол := "HTTP/1.0";
Запрос.ТипСодержимого := "application/timestamp-query";
Запрос.Документ.ЗагрузитьИзБуфера(Рез);
для Запрос.Прокси делать
начало
.Адрес := "proxy.krista.ru";
.Порт := 8080;
.Пользователь := "";
.Пароль := "";
конец;
для Запрос.Заголовок делать
начало
.Добавить("Cache-Control: no-cache");
.Добавить("Pragma: no-cache");
конец;
если Запрос.Выполнить("http://tsp2.taxnet.ru:80/tsp/tsp.srf", "POST") тогда
начало
если Запрос.КодОтвета = 200 тогда
начало
ВывестиТекст("Получен ответ сервера штампа времени, размер ", Запрос.Документ.Размер);
Штамп := СоздатьШтампВремени;
если Штамп.ЗагрузитьИзБуфера(Запрос.Документ) = 0 тогда
начало
если (Штамп.Статус = 0) или (Штамп.Статус = 1) тогда
начало
ВывестиТекст("=== Штамп времени ===");
ВывестиТекст("Дата: ", ДатаВСтроку(Штамп.ДатаВремя), ", время: ", ВремяВСтроку(Штамп.ДатаВремя), ", точность: ", ВремяВСтроку(Штамп.Точность));
ВывестиТекст("Серийный номер штампа: ", Штамп.СерийныйНомер, ", политика: ", Штамп.Политика, ", метка: ", Штамп.Метка);
ВывестиТекст("Дайджесты совпадают: ", Штамп.Дайджест.Равен(Дайджест));
ВывестиТекст("Штамп выдан: ", Штамп.Сервис("CN"));
конец
иначе
начало
ВывестиТекст("Не удалось получить штамп времени: ", Штамп.Статус, ", Отказ: ", Штамп.Отказ);
если Штамп.Подсказка тогда
ВывестиТекст("Информация об отказе: ", Штамп.Подсказка);
конец;
конец
иначе
ВывестиТекст("Ошибка разбора штампа времени: ", Штамп.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка сервера штампа времени: ", Запрос.СтрокаОтвета);
конец
иначе
ВывестиТекст(Запрос.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка формирования запроса штампа времени: ", Дайджест.ТекстОшибки);
конец
иначе
ВывестиТекст("Ошибка при вычислении дайджеста: ", Хэш.ТекстОшибки);
конец;
функции объекта:
ДайджестФормат вызова:
КрШтампВремени.Дайджест: КрДайджест; /*только чтение*/
описание:
Штамп времени, в своем составе, содержит копию дайджеста, для которого данный штамп был создан. Данная функция позволяет получить копию дайджеста, дла которого и был создан данный штамп времени.
результат:
Объект в случае успеха, 0 в случае неудачи.
Формат вызова:
КрШтампВремени.ДатаВремя: дробное; /*только чтение*/
описание:
Дата и время получения штампа времени. Семантически означает, что предоставленный на подпись документ (точнее - дайджест документа), был создан НЕ ПОЗЖЕ чем в указанный момент времени. Еще более точным является утверждение, что штам времени гарантирует, что документ уже существовал в диапазоне времени [ДатаВремя - Точность, ДатаВремя + Точность].
результат:
Дата и время в случае успеха, 0 в случае неудачи.
Формат вызова:
КрШтампВремени.ЗагрузитьИзБуфера(Буф: Буфер): целое; /*только чтение*/
описание:
Инициализирует объект бинарными данными: ASN1 (DER) структурой TS_RESP, которая представляет собой штамп времени, полученный от сервера штампа времени.
результат:
В случае успеха - 0, в случае ошибки - код ошибки.
Формат вызова:
КрШтампВремени.КопияБуфера(Буф: Буфер): Буфер; /*только чтение*/
описание:
Позволяет получить содержимое метки в ремени в бинарном формате (TS_RESP ASN1 DER). В зависимости от параметра, данные будут возвращены либо в копированием в аргумент функции, либо созданием нового буфера и копированием в него.
результат:
Объект в случае успеха, 0 в случае неудачи.
Формат вызова:
КрШтампВремени.Метка: целое; /*только чтение*/
описание:
Метка представляет совершенно не обязательный, но в ряде случаев полезный способ хранить в составе метки некое целочисленное значение, заданное при запросе штампа времени для документа. Обычно, на это значение накладывается требование уникальности в определенном контексте. Перед использование имеет смысл проконсультироваться.
результат:
0 в случае неудачи или при отсутствии значения метки, значение метки в случае успеха.
Формат вызова:
КрШтампВремени.Отказ: целое; /*только чтение*/
описание:
Целочисленный код причины отказа, представляющий собой битовый набор стандарных причин. Предназначен для программного анализа причин отказа и выбора дальнейших действий (т.е. не для прямого показа пользователю соответствующего текста). Рекомендуемая последовательность проверки результата запроса - проверить Статус и, если его значение не 0 и не 1, проверять отказ. В случае отказа никакие поля кроме Статус, Отказ и Подсказка не существуют.
Формат вызова:
КрШтампВремени.Подпись: Подпись7; /*только чтение*/
описание:
Штамп времени содержит в своем составе подпись сервера штампа времени, получив которую можно предпринять ряд действий, например, посмотреть сертификат сервера, проверить подпись самой метки времени и прочее. Данная функция позволяет получить подобную подпись.
результат:
Объект в случае успеха, 0 в случае неудачи.
Формат вызова:
КрШтампВремени.Подсказка: строка; /*только чтение*/
описание:
В состав штампа времени входит НЕОБЯЗАТЕЛЬНАЯ текстовая подсказка, позволяющая интерпритировать результат запроса штампа времени (Отказ и Статус). Поскольку данное поле является необязательным, нет смысла ориентироваться на его наличие и выводить пользователю в случае ошибки. Скорее всего, его можно использовать для диагностики проблем.
результат:
Пустая строка в случае неудачи или отсутствия значения, значение подсказки в случае успеха.
Формат вызова:
КрШтампВремени.Политика: строка; /*только чтение*/
описание:
Политика определяет собой особые условия, в рамках которого был выдан штамп времени. Выбор политики является обязательным условием при запросе штампа времени, нет "политики по-умолчанию". Политика, обычно, представляется в виде OID строки (например "1.2.3") и формируется администрацией сервера штампа времени самостоятельно. Очень часто политика определяет Точность метки времени (смотри комментарии к свойству Точность).
Формат вызова:
КрШтампВремени.Сервис(Ид: строка): строка; /*только чтение*/
описание:
Функция, позволяющая получить информацию о сервере штампа времени. Информация получается из состава штампа времени путем запроса по короткому имени (например "emailAddress") или по OID (например "1.2.840.113549.1.9.1").
Формат вызова:
КрШтампВремени.СерийныйНомер: строка; /*только чтение*/
описание:
В состав штампа времени входит серийный номер, выдаваемый сервисом штампа времени. Данный номер является уникальным (скорее всего инкрементальным) для каждого сервера штампа времени. Данная функция позволяет получить серийный номер штампа в виде строки шестнадцатеричных значений.
результат:
Пустая строка в случае неудачи, значение серийного номера в случае успеха.
Формат вызова:
КрШтампВремени.Статус: целое; /*только чтение*/
описание:
Целочисленный код результата запроса штампа времени. Представляет собой набор стандарных значений. Положительным результатом считаются значения 0 и 1. Рекомендуемая последовательность проверки результата запроса - проверить Статус и, если его значение не 0 и не 1, проверять отказ. В случае отказа никакие поля кроме Статус, Отказ и Подсказка не существуют.
Формат вызова:
КрШтампВремени.ТекстОшибки: строка; /*только чтение*/
описание:
Представляет собой описание ошибки выполнения операции. ТекстОшибки никак не связан с полями Статус, Отказ и Подсказка. Он содержит описание ошибки, возникающей при попытке использования объекта, находящегося в неподходящем для выполнения операции состоянии.
Формат вызова:
КрШтампВремени.Точность: дробное; /*только чтение*/
описание:
Точность представляет собой необязательное значение, возвращаемое сервером штампа времени в составе штампа времени. Если его значение отлично от нуля, тогда интервал, в котором был сформирован штамп (а значит и подтверждается существование документа) определяется как [ДатаВремя - Точность, ДатаВремя + Точность]. Если Точность не указана, тогда значение точности необходимо брать из политики (т.е. указывать руками, получив ее по описанию политики, полученной от сервиса, предоставляющего услуги сервера штампа времени).
результат:
0 в случае неудачи или при отсутствии заданного значения, значение точности в случае успеха.
функции объекта:
АлгоритмФормат вызова:
Пакет7.Алгоритм: строка; /*только чтение*/
Формат вызова:
Пакет7.ЗагрузитьИзБуфера(Буф: Буфер): целое; /*только чтение*/
Формат вызова:
Пакет7.КопияБуфера(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Пакет7.ПараметрыАлгоритма(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Пакет7.Подпись: строка; /*только чтение*/
Формат вызова:
Пакет7.Получатель: строка; /*только чтение*/
Формат вызова:
Пакет7.Сертификат(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Пакет7.СледующаяПодпись: строка; /*только чтение*/
Формат вызова:
Пакет7.СледующийПолучатель: строка; /*только чтение*/
Формат вызова:
Пакет7.СледующийСертификат(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Пакет7.Содержимое(Буф: Буфер): Буфер; /*только чтение*/
Формат вызова:
Пакет7.ТекстОшибки: строка; /*только чтение*/
Формат вызова:
Пакет7.Тип: строка; /*только чтение*/
Формат вызова:
Пакет7.ТипСодержимого: строка; /*только чтение*/
функции объекта:
ЗагрузитьИзБуфераФормат вызова:
КрХМЛ.ЗагрузитьИзБуфера(Буф: Буфер; [Кодировка]: строка; [Опции]: целое): целое; /*только чтение*/
Формат вызова:
КрХМЛ.Зашифровать(Прив, Пуб: Сертификат509; [Опции]: целое): целое; /*только чтение*/
Формат вызова:
КрХМЛ.ЗначениеПодписи(Буф: Буфер; [Узел]: строка): целое; /*только чтение*/
Формат вызова:
КрХМЛ.КопияБуфера([Буф]: Буфер; [Кодировка]: строка; [Опции]: целое): Буфер; /*только чтение*/
Формат вызова:
КрХМЛ.Подписать(Прив: Сертификат509; [Узел], [Пин]: строка; [Опции]: целое): целое; /*только чтение*/
Формат вызова:
КрХМЛ.ПрименитьШтампВремени(Штамп: КрШтампВремени; [Узел]: строка; [Опции]: целое): целое; /*только чтение*/
Формат вызова:
КрХМЛ.Проверить([Узел]: строка): целое; /*только чтение*/
Формат вызова:
КрХМЛ.Расшифровать(Прив: Сертификат509; [Пин]: строка; [Опции]: целое): целое; /*только чтение*/
Формат вызова:
КрХМЛ.ТекстОшибки: строка; /*только чтение*/