класс OpenSSL::Timestamp::TokenInfo
Неизменяемое и только для чтения представление информации о марке времени из Response.
Публичные методы класса
static VALUE
ossl_ts_token_info_initialize(VALUE self, VALUE der)
{
TS_TST_INFO *info = DATA_PTR(self);
BIO *in;
der = ossl_to_der_if_possible(der);
in = ossl_obj2bio(&der);
info = d2i_TS_TST_INFO_bio(in, &info);
BIO_free(in);
if (!info) {
DATA_PTR(self) = NULL;
ossl_raise(eTimestampError, "Error when decoding the timestamp token info");
}
DATA_PTR(self) = info;
return self;
} Создаёт TokenInfo из File или string параметра, соответствующий File или string должен быть закодирован в DER. Обратите внимание, что TokenInfo — неизменяемый класс только для чтения. Если вы хотите создать метки времени, обратитесь к Factory вместо этого.
Публичные методы экземпляра
static VALUE
ossl_ts_token_info_get_algorithm(VALUE self)
{
TS_TST_INFO *info;
TS_MSG_IMPRINT *mi;
X509_ALGOR *algo;
GetTSTokenInfo(self, info);
mi = TS_TST_INFO_get_msg_imprint(info);
algo = TS_MSG_IMPRINT_get_algo(mi);
return get_asn1obj(algo->algorithm);
} Возвращает «короткое имя» идентификатора объекта, представляющего алгоритм, который использовался для получения дайджеста отпечатка сообщения. Для действительных меток времени это то же значение, которое уже было задано в Request. Если статус — GRANTED или GRANTED_WITH_MODS, это никогда не nil.
Пример:
algo = token_info.algorithm puts algo -> "SHA1"
static VALUE
ossl_ts_token_info_get_gen_time(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return asn1time_to_time(TS_TST_INFO_get_time(info));
} Возвращает время создания этой метки времени. Если статус — GRANTED или GRANTED_WITH_MODS, это никогда не nil.
static VALUE
ossl_ts_token_info_get_msg_imprint(VALUE self)
{
TS_TST_INFO *info;
TS_MSG_IMPRINT *mi;
ASN1_OCTET_STRING *hashed_msg;
VALUE ret;
GetTSTokenInfo(self, info);
mi = TS_TST_INFO_get_msg_imprint(info);
hashed_msg = TS_MSG_IMPRINT_get_msg(mi);
ret = rb_str_new((const char *)hashed_msg->data, hashed_msg->length);
return ret;
} Возвращает дайджест отпечатка сообщения. Для действительных меток времени это то же значение, которое уже было задано в Request. Если статус — GRANTED или GRANTED_WITH_MODS, это никогда не nil.
Пример:
mi = token_info.msg_imprint puts mi -> "DEADBEEF"
static VALUE
ossl_ts_token_info_get_nonce(VALUE self)
{
TS_TST_INFO *info;
const ASN1_INTEGER *nonce;
GetTSTokenInfo(self, info);
if (!(nonce = TS_TST_INFO_get_nonce(info)))
return Qnil;
return asn1integer_to_num(nonce);
} Если маркер времени действителен, это поле содержит тот же nonce, который был передан серверу метки времени в исходном Request.
static VALUE
ossl_ts_token_info_get_ordering(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return TS_TST_INFO_get_ordering(info) ? Qtrue : Qfalse;
} Если поле ordering отсутствует или присутствует и установлено в false, то поле genTime указывает только время, когда маркер времени был создан УЦ. В таком случае, порядок маркеров времени, выпущенных тем же УЦ или различными УЦ, возможен только тогда, когда разность между genTime первого маркера времени и genTime второго маркера времени больше суммы точности genTime для каждого маркера времени.
Если поле ordering присутствует и установлено в true, каждый маркер времени от того же УЦ всегда может быть упорядочен по полю genTime, независимо от точности genTime.
static VALUE
ossl_ts_token_info_get_policy_id(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return get_asn1obj(TS_TST_INFO_get_policy_id(info));
} Возвращает идентификатор политики метки времени политики, в рамках которой была создана эта метка времени. Если статус — GRANTED или GRANTED_WITH_MODS, это никогда не nil.
Пример:
id = token_info.policy_id puts id -> "1.2.3.4.5"
static VALUE
ossl_ts_token_info_get_serial_number(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return asn1integer_to_num(TS_TST_INFO_get_serial(info));
} Возвращает порядковый номер маркера времени. Это значение никогда не должно быть одинаковым для двух маркеров времени, выпущенных авторитетным центром по меткам времени. Если статус — GRANTED или GRANTED_WITH_MODS, это никогда не nil.
static VALUE
ossl_ts_token_info_to_der(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return asn1_to_der((void *)info, (int (*)(void *, unsigned char **))i2d_TS_TST_INFO);
} Возвращает TokenInfo в DER-закодированном виде.
static VALUE
ossl_ts_token_info_get_version(VALUE self)
{
TS_TST_INFO *info;
GetTSTokenInfo(self, info);
return LONG2NUM(TS_TST_INFO_get_version(info));
} Возвращает номер версии информации о марке. У совместимых серверов это значение должно быть 1 если присутствует. Если статус — GRANTED или GRANTED_WITH_MODS.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.