JCToken

@protocol JCToken <NSObject>

Протокол базового взаимодействия с токенами.

Поля

type

@property (nonatomic, readonly, assign) JCTokenType type;
Тип - JCTokenType
Тип токена.

isNFCSmartCard

@property (nonatomic, readonly, assign) BOOL isNFCSmartCard;
Тип - BOOL
Признак расположен ли токен на NFC смарт-карте.

label

@property (nonatomic, readonly, copy, nullable) NSString *label;
Тип - NSString*
Метка токена.

manufacturerID

@property (nonatomic, readonly, copy, nullable) NSString *manufacturerID;
Тип - NSString*
Идентификатор производителя.

model

@property (nonatomic, readonly, copy, nullable) NSString *model;
Тип - NSString*
Модель токена.

serialNumber

@property (nonatomic, readonly, copy, nullable) NSString *serialNumber;
Тип - NSString*
Серийный номер токена.

jaCartaTag

@property (nonatomic, readonly, copy, nullable) NSString *jaCartaTag;
Тип - NSString*
Специализированная метка токена.

hardwareVersion

@property (nonatomic, readonly, copy, nullable) NSString *hardwareVersion;
Тип - NSString*
Версия железа.

firmwareVersion

@property (nonatomic, readonly, copy, nullable) NSString *firmwareVersion;
Тип - NSString*
Версия прошивки.

Методы

asJCTokenCT2

- (nullable id<JCTokenCT2>)asJCTokenCT2;

Возвращает токен как JCTokenCT2 объект.

Результат:

Возвращает объект протокола id<JCTokenCT2>, если он соответствует ему; в противном случае - nil.

asJCTokenLaser

- (nullable id<JCTokenLaser>)asJCTokenLaser;

Возвращает токен как JCTokenLaser объект.

Результат:

Возвращает объект протокола id<JCTokenLaser>, если он соответствует ему; в противном случае - nil.

execBlock

- (void)execBlock:(JCErrorHandlerType)block;

Запуск асинхронного выполнения переданного блока.

Метод асинхронно выполняет переданный блок. Если токен получен из ридера, то блок выполняется в отдельной очереди.
Если токен получен из NFC смарт-карты, то будет
  • запущена NFC сессия,
  • найден текущий токен,
  • попытка логина на токене (если в предыдущей сессии был вызван loginByUserPIN, но не был вызван logout),
  • выполнение переданного блока.

Пример: Выполнение операций над токенами.

Примечание

Все синхронные методы токенов следует выполнять внутри переданного блока.
Не стоит вызывать этот метод внутри getTokensWithAlertMessage, т.к. это приведет к попытке открыть вторую NFC сессию, которая завершится ошибкой.

Аргументы:

execBlockWithParameters

- (void)execBlockWithParameters:(NSDictionary * _Nullable)parameters block:(JCErrorHandlerType)block;

Запуск асинхронного выполнения переданного блока с дополнительными параметрами.

Метод асинхронно выполняет переданный блок. Если токен получен из ридера, то блок выполняется в отдельной очереди.
Если токен получен из NFC смарт-карты, то будет
  • запущена NFC сессия,
  • найден текущий токен,
  • попытка логина на токене (если в предыдущей сессии был вызван loginByUserPIN, но не был вызван logout),
  • выполнение переданного блока.

Пример: Выполнение операций над токенами.

Примечание

Все синхронные методы токенов следует выполнять внутри переданного блока.
Не стоит вызывать этот метод внутри getTokensWithAlertMessage, т.к. это приведет к попытке открыть вторую NFC сессию, которая завершится ошибкой.

Аргументы:

  • parameters (NSDictionary*) - дополнительные параметры. Доступные параметры: JCTokenParamNFCAlertMessage - отображаемое сообщение пользователю при открытии NFC сессии;
  • block (JCErrorHandlerType) - выполняемый блок.

loginByUserPIN

- (JCResult*)loginByUserPIN:(NSString *)userPIN;

Предъявление PIN-кода пользователя.

Примечание

Метод следует вызывать внутри блока, передаваемого в execBlockWithParameters или execBlock.

Аргументы:

  • userPIN (NSString*) - PIN-код пользователя.

Результат:

Возвращает объект типа JCResult, где:
  • error - nil, если операция выполнена успешно; в противном случае объект класса NSError.

logout

- (JCResult*)logout;

Сброс предъявления PIN-кода.

Примечание

Метод следует вызывать внутри блока, передаваемого в execBlockWithParameters или execBlock, но для токенов из NFC смарт-карты, допускается вызов вне блока.

Результат:

Возвращает объект типа JCResult, где:
  • error - nil, если операция выполнена успешно; в противном случае объект класса NSError.

readCertificates

- (JCCertificateListResult*)readCertificates;

Получение списка сертификатов с токена.

Примечание

Метод следует вызывать внутри блока, передаваемого в execBlockWithParameters или execBlock.

Результат:

Возвращает объект типа JCCertificateListResult, где:
  • value - массив найденных на токене сертификатов;
  • error - nil, если операция выполнена успешно; в противном случае объект класса NSError.

createSelfSignedCertificateWithLabel

- (JCCertificateResult*)createSelfSignedCertificateWithLabel:(NSString *)label identifier:(NSData *)identifier serial:(NSString *)serial dn:(NSDictionary<NSString*, NSString*> *)dn exts:(NSDictionary<NSString*, NSArray<NSString*>*> * _Nullable)exts;

Создание самоподписанного сертификата и ключевой паре на токене.

В процессе выполняет следующие действия:

  • создает ключевую пару на токене;
  • формирует запрос на сертификат (CSR);
  • на основе CSR генерирует сертификат;
  • сохраняет сертификат на токен.

Примечание

Метод следует вызывать внутри блока, передаваемого в execBlockWithParameters или execBlock.

Аргументы:

  • userPIN (NSString*) - PIN-код пользователя.

  • label (NSString*) - метка сертификата и ключевой пары;

  • identifier (NSData*) - идентификатор сертификата и ключевой пары;

  • serial (NSString*) - серийный номер сертификата;

  • dn (NSDictionary<NSString*, NSString*>*) - словарь, описывающий Distinguished name запроса на сертификат.
    Ключ - тип или идентификатор поля (OID), например: CN или 2.5.4.3.
    Значение - значение поля, например: Andrey Borisov.
  • exts (NSDictionary<NSString*, NSArray<NSString*>*>*) - словарь, описывающий расширения запроса на сертификат.
    Ключ - тип или идентификатор поля (OID).
    Значение - значение поля.

Результат:

Возвращает объект типа JCCertificateResult, где:
  • value - созданный сертификат;
  • error - nil, если операция выполнена успешно; в противном случае объект класса NSError.