Rutoken Flash 2.0.1
Управление flash-памятью устройств Рутокен ЭЦП 3.0 Flash
rtflash-types.h
См. документацию.
1#ifndef RTFLASH_TYPES_H
2#define RTFLASH_TYPES_H
5#include "rtflash-macros.h"
6
7#include <stddef.h>
8#include <stdint.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#define RTFLASH_MIN_JOURNAL_SECTION_SIZE 500
15
16#define RTFLASH_LOCAL_PIN_MAX_SIZE 32
17#define RTFLASH_LOCAL_PIN_MIN_SIZE 6
18#define RTFLASH_PIN_MAX_SIZE 249
19#define RTFLASH_MAX_LOGIN_ATTEMPT_COUNT 10
20#define RTFLASH_MIN_LOGIN_ATTEMPT_COUNT 1
21#define RTFLASH_SECT_SEC_ATTR_COUNT 6
22
23#define RTFLASH_MVA_MAX_RECORD_SIZE 249
24#define RTFLASH_MVA_MAX_RECORD_COUNT 254
25#define RTFLASH_MVA_MAX_SIZE 33020
26
27typedef uint64_t rtflash_TokenSerial;
28typedef uint8_t rtflash_RecordId;
29typedef uint8_t rtflash_SectionId;
30typedef uint32_t rtflash_MemSizeMB;
31typedef uint64_t rtflash_UnixTime;
32
34typedef struct rtflash_String {
35 size_t size;
36 const char* ptr;
38
40
42typedef struct rtflash_MvaRecord {
43 size_t size;
44 const uint8_t* ptr;
46
49typedef uint16_t rtflash_SecretId;
50
52typedef enum rtflash_SecretType {
58
60typedef enum rtflash_SecureType {
66
69typedef struct rtflash_Secret {
73
75#define RTFLASH_SECRET_NONE \
76 { 0, RTFLASH_SECRET_T_NONE }
77
78#define RTFLASH_SECRET_MIN_ID 3
79#define RTFLASH_SECRET_MAX_ID 31
80#define RTFLASH_SECRET_MAX_COUNT 29
81
84
85#define RTFLASH_Token_NULL RTFLASH_NULL_PTR
86
87typedef struct rtflash_TokenImpl_* rtflash_Token;
88
89typedef enum rtflash_SectionType {
95
103
112
124typedef struct rtflash_PrConds {
128
130#define rtflash_PrConds_FORBIDDEN \
131 RTFLASH_PR_COND_GLOBAL_FORBIDDEN, RTFLASH_SECRET_NONE
132
134#define rtflash_PrConds_NONE \
135 RTFLASH_PR_COND_GLOBAL_NONE, RTFLASH_SECRET_NONE
136
138#define RTFLASH_PrConds_ADMIN_ONLY \
139 RTFLASH_PR_COND_GLOBAL_ADMIN, RTFLASH_SECRET_NONE
140
142#define RTFLASH_PrConds_USER_ONLY \
143 RTFLASH_PR_COND_GLOBAL_USER, RTFLASH_SECRET_NONE
144
146#define rtflash_PrConds_SECRET(secretId, secretType) \
147 RTFLASH_PR_COND_GLOBAL_NONE, { secretId, secretType }
148
158
164
167#define rtflash_SectionSecAttrs_JOURNAL_DEFAULT \
168 /* HI_PERM */ { rtflash_PrConds_FORBIDDEN }, \
169 /* RO_TEMP */ { rtflash_PrConds_NONE }, \
170 /* RO_PERM */ { rtflash_PrConds_FORBIDDEN }, \
171 /* RW_TEMP */ { rtflash_PrConds_FORBIDDEN }, \
172 /* RW_PERM */ { rtflash_PrConds_FORBIDDEN }, \
173 /* CD_PERM */ { rtflash_PrConds_FORBIDDEN }
174
176typedef struct rtflash_Section {
183
186typedef struct rtflash_MvaParams {
191
193typedef struct rtflash_PcInfo {
195 // Если имя пользователя недоступно, необходимо передать RTFLASH_NULL_PTR.
196
198 // Если ПК не является частью домена, необходимо передать RTFLASH_NULL_PTR.
199
201 // Если версия ОС недоступна, необходимо передать RTFLASH_NULL_PTR.
202
204 // Если имя ПК недоступно, необходимо передать RTFLASH_NULL_PTR.
205
206
209
210typedef uint16_t rtflash_Attempts;
211
212#ifdef __cplusplus
213}
214#endif
215
216#endif // RTFLASH_TYPES_H
Макросы
uint8_t rtflash_SectionId
Идентификатор раздела
Definition: rtflash-types.h:29
uint16_t rtflash_SecretId
Definition: rtflash-types.h:49
rtflash_SecureType
Тип защиты от при создании локального PIN-кода.
Definition: rtflash-types.h:60
@ RTFLASH_SECURE_T_USER
PIN-код Пользователя
Definition: rtflash-types.h:63
@ RTFLASH_SECURE_T_LOCAL_PIN
Локальный PIN-код
Definition: rtflash-types.h:64
@ RTFLASH_SECURE_T_NONE
Не заданно
Definition: rtflash-types.h:61
@ RTFLASH_SECURE_T_ADMIN
PIN-код Администратора
Definition: rtflash-types.h:62
rtflash_SecretId rtflash_LocalPinId
Идентификатор локального PIN-кода
Definition: rtflash-types.h:83
rtflash_SecretId rtflash_MvaId
Идентификатор MVA.
Definition: rtflash-types.h:82
struct rtflash_PcInfo rtflash_PcInfo
Представляет сведения о ПК пользователя для записи в журнал СБ.
#define RTFLASH_SECT_SEC_ATTR_COUNT
Количество атрибутов безопасности раздела
Definition: rtflash-types.h:21
uint8_t rtflash_RecordId
Идентификатор записи MVA.
Definition: rtflash-types.h:28
struct rtflash_TokenImpl_ * rtflash_Token
Definition: rtflash-types.h:87
uint64_t rtflash_UnixTime
Время в формате unix-time (неотрицательное целое число секунд с 1970.01.01.00:00:00)
Definition: rtflash-types.h:31
rtflash_String rtflash_PinCode
Definition: rtflash-types.h:39
struct rtflash_PrConds rtflash_PrConds
Условия защиты операции. Операцию можно защитить на глобальное условие защиты и/или аутентификацию по...
uint32_t rtflash_MemSizeMB
Память в МБ
Definition: rtflash-types.h:30
uint16_t rtflash_Attempts
struct rtflash_String rtflash_String
Строка
struct rtflash_MvaParams rtflash_MvaParams
Представляет входные параметры для создания MVA.
rtflash_SectionType
Definition: rtflash-types.h:89
@ RTFLASH_SECTION_ENCRYPTED
Зашифрованный раздел.
Definition: rtflash-types.h:93
@ RTFLASH_SECTION_JOURNAL_EVENTS
Журнал СБ.
Definition: rtflash-types.h:91
@ RTFLASH_SECTION_USER
Пользовательский раздел.
Definition: rtflash-types.h:90
@ RTFLASH_SECTION_JOURNAL_ACCESS
Журнал ФО.
Definition: rtflash-types.h:92
rtflash_SecretType
Тип секрета (rtflash_Secret).
Definition: rtflash-types.h:52
@ RTFLASH_SECRET_T_LOCAL_PIN
Локальный PIN-код
Definition: rtflash-types.h:55
@ RTFLASH_SECRET_T_MVA
MVA.
Definition: rtflash-types.h:54
@ RTFLASH_SECRET_T_UNKNOWN
Тип секрета не известен
Definition: rtflash-types.h:56
@ RTFLASH_SECRET_T_NONE
Тип секрета не задан
Definition: rtflash-types.h:53
rtflash_SectionAccessState
Режим доступа к разделу.
Definition: rtflash-types.h:97
@ RTFLASH_SECTION_ACCESS_RW
Полный доступ (чтение и запись).
@ RTFLASH_SECTION_ACCESS_RO
Только чтение.
Definition: rtflash-types.h:99
@ RTFLASH_SECTION_ACCESS_CD
CD-ROM.
@ RTFLASH_SECTION_ACCESS_HI
Раздел скрыт.
Definition: rtflash-types.h:98
struct rtflash_MvaRecord rtflash_MvaRecord
Запись MVA - байтовая последовательность.
rtflash_PrCondGlobal
Глобальное условие защиты операции.
@ RTFLASH_PR_COND_GLOBAL_USER
Аутентификация по PIN-коду Пользователя
@ RTFLASH_PR_COND_GLOBAL_FORBIDDEN
Операция не выполнима никогда.
@ RTFLASH_PR_COND_GLOBAL_NONE
Глобальное условие защиты отсутствует.
@ RTFLASH_PR_COND_GLOBAL_ADMIN_OR_USER
Аутентификация по PIN-коду Администратора ИЛИ Пользователя
@ RTFLASH_PR_COND_GLOBAL_ADMIN
Аутентификация по PIN-коду Администратора
struct rtflash_Secret rtflash_Secret
Представляет собой объект для аутентификации. Секрет - абстрактное понятие в рамках интерфейса библио...
struct rtflash_Section rtflash_Section
Представляет раздел flash-памяти токена и информацию о разделе.
uint64_t rtflash_TokenSerial
Серийный номер устройства
Definition: rtflash-types.h:27
rtflash_PrConds rtflash_SectionSecAttrs[6]
rtflash_SectionSecOp
Операции смены режима доступа к разделу (защищенные операции).
@ RTFLASH_SECT_OP_RW_PERM
Чтение и запись, постоянно.
@ RTFLASH_SECT_OP_RW_TEMP
Чтение и запись, временно.
@ RTFLASH_SECT_OP_RO_TEMP
Только чтение, временно.
@ RTFLASH_SECT_OP_HI_PERM
Скрыт, постоянно.
@ RTFLASH_SECT_OP_CD_PERM
Режим CD-ROM, постоянно.
@ RTFLASH_SECT_OP_RO_PERM
Только чтение, постоянно.
Представляет входные параметры для создания MVA.
uint8_t maxAttemptCount
Допустимый диапазон значений: [1, 10].
uint8_t maxRecordSize
Допустимый диапазон значений: [1, RTFLASH_MVA_MAX_RECORD_SIZE].
uint8_t maxRecordCount
Допустимый диапазон значений: [1, RTFLASH_MVA_MAX_RECORD_COUNT].
Запись MVA - байтовая последовательность.
Definition: rtflash-types.h:42
size_t size
Размер последовательности.
Definition: rtflash-types.h:43
const uint8_t * ptr
Указатель на последовательность.
Definition: rtflash-types.h:44
Представляет сведения о ПК пользователя для записи в журнал СБ.
rtflash_String domainName
Доменное имя ПК. Указатель на строку UTF-8, содержащую имя домена.
rtflash_String osVersion
Версия операционной системы ПК. Указатель на строку UTF-8, указывающую версию ОС.
rtflash_UnixTime systemTime
Системное время в формате unix-time.
rtflash_String userName
Имя пользователя ПК. Указатель на строку UTF-8, содержащую имя пользователя.
rtflash_String deviceName
Имя ПК. Указатель на строку UTF-8, содержащую имя ПК.
Условия защиты операции. Операцию можно защитить на глобальное условие защиты и/или аутентификацию по...
rtflash_PrCondGlobal global
Глобальное условие защиты.
rtflash_Secret secret
Секрет. Если secret.id = 0, то защита на секрет отсутствует.
Представляет собой объект для аутентификации. Секрет - абстрактное понятие в рамках интерфейса библио...
Definition: rtflash-types.h:69
rtflash_SecretId id
Definition: rtflash-types.h:70
rtflash_SecretType type
Definition: rtflash-types.h:71
Представляет раздел flash-памяти токена и информацию о разделе.
rtflash_SectionAccessState accessRights
Текущие права доступа к разделу.
rtflash_SectionId id
Уникальный идентификатор раздела.
rtflash_MemSizeMB size
Размер раздела в МБ.
rtflash_SectionType type
Тип раздела.
rtflash_SectionSecAttrs secAttrs
Атрибуты безопасности раздела.
Строка
Definition: rtflash-types.h:34
size_t size
Размер строки (без учета '\0').
Definition: rtflash-types.h:35
const char * ptr
Definition: rtflash-types.h:36