КриптоПро TSP SDK: Низкоуровневый интерфейс

Класс CToken

Штамп времени (RFC 3161, раздел 2.4.2). Подробнее...

#include <tsp.h>

Полный список членов класса

Открытые члены

 CToken (const char *policy, const ASN1::CAlgorithmIdentifierEx &hashAlgorithm, const CBlob &hashedMessage, const ASN1::CBigInteger &serialNumber, const CDateTime &genTime, bool ordering=false)
 Создает и инициализирует объект.
 CToken ()
 Создает пустой объект.
 CToken (const CToken &src)
 Создает копию заданного объекта.
CTokenoperator= (const CToken &src)
 Копирует заданный объект в текущий.
 ~CToken ()
 Уничтожает объект.
DWORD get_version () const
 Возвращает версию штампа.
const char * get_policy () const
 Возвращает политику по которой выпущен штамп.
const ASN1::CAlgorithmIdentifierEx & get_hashAlgorithm () const
 Возвращает алгоритм хэша, использованного при хэшировании данных.
const CBlob & get_hashedMessage () const
 Возвращает значение хэша данных, на которые выдан штамп времени.
const ASN1::CBigInteger & get_serialNumber () const
 Возвращает серийный номер штампа времени.
CDateTime get_genTime () const
 Возвращает время выдачи штампа.
const char * get_genTimeZ () const
 Возвращает время выдачи штампа в виде строки в формате GeneralizedTime.
bool get_ordering () const
 Возвращает значение поля ordering.
const ASN1::CSignerInfo & get_signerInfo () const
 Возвращает структуру SignerInfo (информация о подписчике).
const CAccuracyget_accuracy () const
 Возвращает точность, с которой выпущен штамп времени.
const ASN1::CBigInteger * get_nonce () const
 Возвращает поле nonce запроса на штамп времени.
const ASN1::CGeneralName * get_tsa () const
 Возвращает закодированное имя службы штампов времени.
const ASN1::CExtensions * get_extensions () const
 Возвращает списко расширений, вложенных в штамп.
const ASN1::CAttributes * get_signedAttributes () const
 Возвращает список подписанных аттрибутов, вложенных в штамп времени.
const ASN1::CAttributes * get_unsignedAttributes () const
 Возвращает список неподписанных аттрибутов, вложенных в штамп времени.
const ASN1::CEncodedCertificateList * get_certificates () const
 Возвращает сертификаты вложенные в штамп времени.
void put_accuracy (const CAccuracy *accuracy)
 Устанавливает значение поля accuracy (точность с которой выдан штамп).
void put_nonce (const ASN1::CBigInteger *nonce)
 Устанавливает значение поля nonce.
void put_tsa (const ASN1::CGeneralName *tsa)
 Устанавливает значение имени службы штампов времени, выдавшей штамп.
void put_extensions (const ASN1::CExtensions *extensions)
 Вкладывает расширения в штамп времени.
void put_signedAttributes (const ASN1::CAttributes *attributes)
 Вкладывает подписанные атрибуты в штамп времени.
void put_unsignedAttributes (const ASN1::CAttributes *attributes)
 Вкладывает неподписанные атрибуты в штамп времени.
void put_certificates (const ASN1::CEncodedCertificateList *certificateList)
 Вкладывает дополнительные сертификаты в штамп времени.
CBlob encode () const
 Кодирует штамп времени в ASN.1 DER представление.
void decode (const CBlob &encodedTSToken)
 Декодирует штамп времени из его закодированного ASN.1 DER представления.
void sign (HCRYPTPROV hCryptProv, DWORD dwKeySpec, const CBlob &encodedCert, const ASN1::CAlgorithmIdentifierEx &hashAlgorithm)
 Подписывает штамп времени.
bool verify (const CBlob &encodedTSACertificate) const
 Проверяет подпись штампа времени.


Подробное описание

Штамп времени (RFC 3161, раздел 2.4.2).

Класс позволяет создавать, кодировать и декодировать штамп времени. Штамп времени представляет собой подписанное CMS сообщение (ContentInfo содержащий SignerInfo, типом содержимого eContentType равным id-ct-TSTInfo). Метод, осуществляющий подпись сообщения, нужно вызывать после заполнения всех информационных полей.


Конструктор(ы)

CToken const char *  policy,
const ASN1::CAlgorithmIdentifierEx &  hashAlgorithm,
const CBlob &  hashedMessage,
const ASN1::CBigInteger &  serialNumber,
const CDateTime &  genTime,
bool  ordering = false
 

Создает и инициализирует объект.

В конструкторе задаются только обязательные атрибуты запроса.

Аргументы:
policy [in] OID политики службы штампов времени
hashAlgorithm [in] алгоритм хэша
hashedMessage [in] хэш данных для которых запрашивается штамп времени
serialNumber [in] уникальный серийный номер штампа времени
genTime [in] время создания штампа времени (UTC)
ordering [in] флаг, определяющий можно ли упорядочивать запросы не учитывая поле accuracy

CToken const CToken src  ) 
 

Создает копию заданного объекта.

Аргументы:
src [in] объект, копия которого создается


Методы

void decode const CBlob &  encodedTSToken  ) 
 

Декодирует штамп времени из его закодированного ASN.1 DER представления.

Аргументы:
encodedTSToken [in] блок данных содержащий закодированное представление штампа времени

CBlob encode  )  const
 

Кодирует штамп времени в ASN.1 DER представление.

Возвращает:
блок данных содержащий закодированное представление штампа времени

const CAccuracy* get_accuracy  )  const
 

Возвращает точность, с которой выпущен штамп времени.

Возвращает:
Указатель на структуру, содержащую данные о точности по времени с которой выдан штамп
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

const ASN1::CEncodedCertificateList* get_certificates  )  const
 

Возвращает сертификаты вложенные в штамп времени.

Возвращает:
Указатель на список закодированных сертификатов
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

const ASN1::CExtensions* get_extensions  )  const
 

Возвращает списко расширений, вложенных в штамп.

Возвращает:
Указатель на список расширений, вложенных в штамп времени
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

CDateTime get_genTime  )  const
 

Возвращает время выдачи штампа.

Возвращает:
Время выдачи штампа

const char* get_genTimeZ  )  const
 

Возвращает время выдачи штампа в виде строки в формате GeneralizedTime.

Возвращает время выдачи штампа в виде строки в формате GeneralizedTime в точно таком виде, в каком время хранится в штампе.

Возвращает:
Строка в формате GeneralizedTime

const ASN1::CAlgorithmIdentifierEx& get_hashAlgorithm  )  const
 

Возвращает алгоритм хэша, использованного при хэшировании данных.

Возвращает:
Идентификатор алгоритма

const CBlob& get_hashedMessage  )  const
 

Возвращает значение хэша данных, на которые выдан штамп времени.

Возвращает:
Блок данных, содержащий значение хэша

const ASN1::CBigInteger* get_nonce  )  const
 

Возвращает поле nonce запроса на штамп времени.

Возвращает:
Указатель на объект, представляющий большое целое число
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

bool get_ordering  )  const
 

Возвращает значение поля ordering.

Возвращает:
true или false

const char* get_policy  )  const
 

Возвращает политику по которой выпущен штамп.

Возвращает:
OID политики

const ASN1::CBigInteger& get_serialNumber  )  const
 

Возвращает серийный номер штампа времени.

Возвращает:
Объект, представляющий большое целое число

const ASN1::CAttributes* get_signedAttributes  )  const
 

Возвращает список подписанных аттрибутов, вложенных в штамп времени.

Возвращает:
Указатель на список аттрибутов
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

const ASN1::CSignerInfo& get_signerInfo  )  const
 

Возвращает структуру SignerInfo (информация о подписчике).

Возвращает:
Структура, содержащая информацию о подписчике (SignerInfo, RFC 3161)

const ASN1::CGeneralName* get_tsa  )  const
 

Возвращает закодированное имя службы штампов времени.

Возвращает:
Указатель на класс, содержащий информацию о службе штампов времени
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

const ASN1::CAttributes* get_unsignedAttributes  )  const
 

Возвращает список неподписанных аттрибутов, вложенных в штамп времени.

Возвращает:
Указатель на список аттрибутов
Прим.:
Опциональное поле. Если возвращаеся NULL, то данное поле не заполнено и отсутствует.

DWORD get_version  )  const
 

Возвращает версию штампа.

Возвращает:
Номер версии

CToken& operator= const CToken src  ) 
 

Копирует заданный объект в текущий.

Аргументы:
src [in] объект, который копируется в текущий
Возвращает:
Ссылка на текущий объект.

void put_accuracy const CAccuracy accuracy  ) 
 

Устанавливает значение поля accuracy (точность с которой выдан штамп).

Аргументы:
accuracy [in] указатель на структуру, содержащую данные о точности по времени с которой выдан штамп
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_certificates const ASN1::CEncodedCertificateList *  certificateList  ) 
 

Вкладывает дополнительные сертификаты в штамп времени.

Аргументы:
certificateList [in] список закодированных сертификатов
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_extensions const ASN1::CExtensions *  extensions  ) 
 

Вкладывает расширения в штамп времени.

Аргументы:
extensions [in] указатель на список расширений
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_nonce const ASN1::CBigInteger *  nonce  ) 
 

Устанавливает значение поля nonce.

Аргументы:
nonce [in] объект, представляющий большое целое число
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_signedAttributes const ASN1::CAttributes *  attributes  ) 
 

Вкладывает подписанные атрибуты в штамп времени.

Аргументы:
attributes [in] указатель на список атрибутов
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_tsa const ASN1::CGeneralName *  tsa  ) 
 

Устанавливает значение имени службы штампов времени, выдавшей штамп.

Аргументы:
tsa [in] Указатель на класс, содержащий информацию о службе штампов времени
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void put_unsignedAttributes const ASN1::CAttributes *  attributes  ) 
 

Вкладывает неподписанные атрибуты в штамп времени.

Аргументы:
attributes [in] указатель на список атрибутов
Прим.:
Опциональное поле. Если аргумент NULL, то данное поле становится не заполненным и отсутствует в штампе.

void sign HCRYPTPROV  hCryptProv,
DWORD  dwKeySpec,
const CBlob &  encodedCert,
const ASN1::CAlgorithmIdentifierEx &  hashAlgorithm
 

Подписывает штамп времени.

Аргументы:
hCryptProv [in] контекст криптопровайдера, открытый на закрытом ключе службы
dwKeySpec [in] назначение ключа
encodedCert [in] закодированный сертификат подписчика
hashAlgorithm [in] алгоритм, который будет использоваться для хэширования данных
Прим.:
Данная функция должна вызываться после заполнения всех полей, непосредственно перед кодированием штампа.
Обратите внимание, что данный метод является низкоуровневым и не проверяет наличие и правильность заполнения атрибутов, указанных в RFC 3161 (например, атрибута SigningCertificate или его аналогов).

bool verify const CBlob &  encodedTSACertificate  )  const
 

Проверяет подпись штампа времени.

Аргументы:
encodedTSACertificate [in] сертификат, использующийся для проверки подписи
Возвращает:
true, если подпись проверена успешно, иначе false
Обратите внимание, что данный метод проверяет только подпись штампа времени и не проверяет наличие и правильность заполнения атрибутов, указанных в RFC 3161 (например, атрибута SigningCertificate или его аналогов).