Spec-Zone.ru › Ruby 3.4
  1. OpenSSL::
  2. Временная метка::
  3. TokenInfo

class OpenSSL::Timestamp::TokenInfo

Родительский класс:
Object

Неизменяемое представление информации о токене временной метки только для чтения из Response.

Открытые методы класса

OpenSSL::Timestamp::TokenInfo.new(file) → token-info Показать исходный код
OpenSSL::Timestamp::TokenInfo.new(string) → token-info
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.

Открытые методы экземпляра

algorithm → string or nil Показать исходный код
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"
gen_time → Time Показать исходный код
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.

msg_imprint → string. Показать исходный код
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"
nonce → BN or nil Показать исходный код
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.

ordering → true, falses or nil Показать исходный код
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 указывает только время создания токена временной метки центром TSA. В этом случае токены временных меток, выданные одним и тем же или разными центрами TSA, можно упорядочить только тогда, когда разница между genTime первого и второго токенов временных меток превышает сумму погрешностей genTime для каждого токена временной метки.

Если поле ordering присутствует и имеет значение true, все токены временных меток, выданные одним и тем же центром TSA, всегда можно упорядочить на основе поля genTime независимо от точности genTime.

policy_id → string or nil Показать исходный код
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"
serial_number → BN or nil Показать исходный код
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.

to_der → string Показать исходный код
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.

to_text () Показать исходный код
static VALUE
ossl_ts_token_info_to_text(VALUE self)
{
    TS_TST_INFO *info;
    BIO *out;

    GetTSTokenInfo(self, info);

    out = BIO_new(BIO_s_mem());
    if (!out) ossl_raise(eTimestampError, NULL);

    if (!TS_TST_INFO_print_bio(out, info)) {
        BIO_free(out);
        ossl_raise(eTimestampError, NULL);
    }

    return ossl_membio2str(out);
}
version → Integer or nil Показать исходный код
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–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API