Сертификат выпускается при помощи интеграции с каким-либо провайдером, предоставляющим услуги по выпуску сертификатов электронных подписей и подписанию пользовательских данных.

Type parameters

Hierarchy

Properties

Readonly code

code: string

Код приложения цели ссылки (код приложения).

Readonly data

data: Based<Partial<DigitalSignItemData>>

Значения полей объекта.

Readonly fields

fields: Readonly<object>

Описание полей объекта.

Readonly id

id: string

Идентификатор цели ссылки.

Readonly namespace

namespace: string

Пространство имен цели ссылки (код раздела приложения).

Methods

confirm

  • confirm(secret: string): Promise<boolean>
  • Подтверждение выпуска сертификата электронной подписи.

    Parameters

    • secret: string

    Returns Promise<boolean>

fetch

getIdentification

  • Получает тип идентификации.

    Метод возвращает тип идентификации личности, который используется для выпуска сертификата электронной подписи.

    В примере показана ситуация, когда в зависимости от типа идентификации должны выполняться различные действия. Сначала получим последнюю созданную подпись с помощью метода DigitalSigns.getLastRequest. Затем определим дальнейшие действия: при идентификации через Госуслуги никаких действий не требуется, но при авторизации с помощью пароля необходимо ввести пароль, полученный от провайдера.

    const lastDigitalSign = await System.signs.digitalSigns.getLastRequest();
    
    if (lastDigitalSign.getIdentification() === DigitalSignIdentificationType.ESIA) {
        // Если используется идентификация через Госуслуги, действий не требуется
        return;
    }
    
    if (lastDigitalSign.getIdentification() === DigitalSignIdentificationType.Secret) {
        // Если используется идентификация через пароль, запрашиваем его
        await lastDigitalSign.getSecret();
        // Отображаем окно для ввода пароля
        // Название функции приведено для примера
        // В качестве окна ввода пароля может быть использован любой подходящий виджет
        this.showConfirmWindow();
    }
    

    Returns DigitalSignIdentificationType

normalize

  • normalize(): void
  • Удаление дублирующихся данных в массивах.

    Выполнить удаление дубликатов в полях, в которых хранятся массивы ссылок на объекты системы (пользователи, файлы, элементы приложений, документы).

    Этот метод, например, можно вызвать после массового изменения данных в объекте.

    const app1 = await Context.data.app1.fetch();
    const app2 = await Context.data.app2.fetch();
    
    app1.data.executors.push(app2.data.executors);
    app1.normalize();
    
    // Далее перебираем элементы нового массива
    app1.data.executors.forEach( ... );
    

    Returns void

receiveSecret

  • receiveSecret(): Promise<void>
  • Получает пароль для подтверждения личности пользователя в рамках заявки на выпуск сертификата электронной подписи.

    Метод запрашивает у провайдера пароль для пользователя, выпускающего сертификат. Провайдер выполняет отправку пароля пользователю на контактные данные, указанные в заявке. Способ отправки данных зависит от провайдера и его настроек.

    В примере рассматривается получение последней заявки на выпуск сертификата и запрос пароля для этой заявки.

    // Получение последней созданной заявки
    const lastRequest = await System.signs.digitalSigns.getLastRequest();
    // Запрос пароля для заявки
    await lastRequest.receiveSecret();
    

    Returns Promise<void>

setAlias

  • setAlias(alias: string): Promise<void>
  • Метод устанавливает имя сертификата электронной подписи.

    Используя метод, можно задать удобное и понятное для пользователя имя сертификата.

    В примере стандартное имя сертификата с идентификатором, хранимым в контексте, заменяется на имя, удобное для пользователя:

    // Извлечение идентификатора электронной подписи из контекста
    const digitalSignId = Context.data.digitalSignId;
    if (!digitalSignId) {
        throw new Error('Идентификатор электронной подписи не найден');
    }
    
    const digitalSign = await System.signs.digitalSigns.search().where(q => q.__id.eq(digitalSign)).first();
    if (!digitalSign) {
        throw new Error('Электронная подпись не найдена');
    }
    await digitalSign.setAlias('Сертификат Иванова');
    

    Parameters

    • alias: string

    Returns Promise<void>

setPublicKey

  • setPublicKey(cert: ArrayBuffer): Promise<void>
  • Устанавливает публичный ключ.

    Публичный ключ содержит публичную информацию о выпущенной подписи, выданную провайдером. Необходимо указывать в кодировке ASN.1 DER. Хранится в системе для возможности проверки сертификата электронной подписи, визуализации информации об используемом сертификате, а также получения информации об удостоверяющем центре и организации, которые выпустили сертификат.

    В примере показано, как установить публичный ключ для электронной подписи по ее идентификатору в контексте:

    // Извлечение идентификатора электронной подписи из контекста
    const digitalSignId = Context.data.digitalSignId;
    if (!digitalSignId) {
        throw new Error('Идентификатор электронной подписи не найден');
    }
    
    const digitalSign = await System.signs.digitalSigns.search().where(q => q.__id.eq(digitalSign)).first();
    if (!digitalSign) {
        throw new Error('Электронная подпись не найдена');
    }
    
    // Получение содержимого электронной подписи от внешнего провайдера
    // Название функции приведено для примера
    const certData = await getCertDataFromExternalProvider();
    // Установка публичного ключа для подписи
    await digitalSign.setPublicKey(certData);
    

    Parameters

    • cert: ArrayBuffer

    Returns Promise<void>

setStatus

  • Метод выполняет установку статуса заявки на выпуск сертификата электронной подписи.

    Используется для изменения статуса заявки на выпуск сертификата электронной подписи при выпуске электронной подписи или его отмене. По статусу можно понять, на каком этапе выпуска находится электронная подпись. Список статусов указан в интерфейсе DigitalSignRequestStatus.

    В примере устанавливается статус для заявки по подписи с идентификатором, хранимым в контексте:

    // Извлечение идентификатора электронной подписи из контекста
    const digitalSignId = Context.data.digitalSignId;
    if (!digitalSignId) {
        throw new Error('Идентификатор электронной подписи не найден');
    }
    
    const digitalSign = await System.signs.digitalSigns.search().where(q => q.__id.eq(digitalSign)).first();
    if (!digitalSign) {
        throw new Error('Электронная подпись не найдена');
    }
    await digitalSign.setStatus(DigitalSignRequestStatus.Approved);
    

    Parameters

    Returns Promise<void>