Введение

@jx_code/rsimzo-client Лёгкий JavaScript-клиент для взаимодействия с провайдером RsImzo, позволяющий аутентифицировать пользователей, получать сертификаты и подписывать документы с помощью ЭЦП.

@jx_code/rsimzo-client

Лёгкий JavaScript-клиент для работы с RsImzo через безопасные popup и iframe — позволяет выполнять аутентификацию, получать сертификаты и подписывать контент при помощи ЭЦП.


📦 Установка

# через npm
npm install @jx_code/rsimzo-client

# или через pnpm
pnpm add @jx_code/rsimzo-client

# или через yarn
yarn add @jx_code/rsimzo-client

🚀 Начало работы

1. Импорт и инициализация

import { RsimzoClient } from "@jx_code/rsimzo-client";

const rsimzo = new RsimzoClient({
  publicKey: "YOUR_PUBLIC_KEY",
  locale: "ru", // необязательно, по умолчанию 'uz'
});

⚠️ publicKey обязателен при создании экземпляра. Если не указан — будет выброшена ошибка.


🧩 API Справочник

new RsimzoClient(options)

Параметры:

ПараметрТипОбязательныйПо умолчаниюОписание
publicKeystring✅ ДаПубличный ключ, выданный RsImzo
locale'uz' | 'ru' | 'en'❌ Нет'uz'Язык интерфейса всплывающего окна

Пример:

const rsimzo = new RsimzoClient({ publicKey: "ABC123", locale: "ru" });

getCertificates(options?)

Получает список доступных ЭЦП-сертификатов через невидимый iframe.

Параметры:

ПараметрТипОбязательныйПо умолчаниюОписание
locale'uz' | 'ru' | 'en'❌ Неттекущая локаль экземпляраЯзык интерфейса провайдера

Возвращает:

Promise<RsPostMessageResult<{ serialNumber: string; owner: string }[]>>;

Пример:

const result = await rsimzo.getCertificates();
console.log(result);

sign(serialNumber, content, options?)

Открывает окно для подписи контента с помощью выбранного сертификата.

Параметры:

ИмяТипОбязательныйПо умолчаниюОписание
serialNumberstring✅ ДаСерийный номер сертификата
contentstring✅ ДаПодписываемое содержимое (например, base64-строка)
options.locale'uz' | 'ru' | 'en'❌ Нетлокаль экземпляраЯзык окна подписи
options.attachedboolean❌ НетtrueУказывает, будет ли подпись прикреплённой

Возвращает:

Promise<RsPostMessageResult<string>>;

Пример:

const signed = await rsimzo.sign("123456789", "Hello world!");
console.log(signed);

auth(options?)

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

Параметры:

ПараметрТипОбязательныйПо умолчаниюОписание
locale'uz' | 'ru' | 'en'❌ Нетлокаль экземпляраЯзык окна аутентификации

Возвращает:

Promise<RsPostMessageResult<string>>;

Пример:

const authResult = await rsimzo.auth();
console.log(authResult);

⚙️ Обработка ошибок

Каждый метод возвращает стандартную структуру:

type RsPostMessageResult<T> = {
  data: T | null;
  error?: {
    errorCode: number;
    errorMessage: string;
  };
};
КодСообщениеОписание
13Неверный парольВведён неверный пароль при подписи
10001Окно закрытоПользователь закрыл всплывающее окно
10002Ошибка токенаНе удалось получить или проверить токен
10003Нет результатаДействие завершено без результата
10004Сертификат не найденНе найден соответствующий ЭЦП-сертификат
10005Недействительный токенОшибка проверки токена
10006Неверные параметрыНекорректные или отсутствующие входные данные
10008ТаймаутОперация превысила 60 секунд
10009Popup заблокированБраузер заблокировал всплывающее окно

🌐 Пример интеграции

import { RsimzoClient } from "@jx_code/rsimzo-client";

const rsimzo = new RsimzoClient({ publicKey: "ABC123", locale: "ru" });

async function run() {
  const auth = await rsimzo.auth();
  if (auth.error) return console.error(auth.error);

  const certs = await rsimzo.getCertificates();
  if (certs.error) return console.error(certs.error);

  const signed = await rsimzo.sign(certs.data[0].serialNumber, "text-to-sign");
  console.log("Подписанные данные:", signed);
}

run();