eimzo-ts: подключение E-IMZO на сайте
TypeScript-библиотека для работы с E-IMZO из браузера: список ключей ЭЦП, подпись PKCS#7, вход по ЭЦП.
Неофициальная библиотека. Не связана с разработчиками E-IMZO.
Что это
Замена e-imzo.js и e-imzo-client.js из официального примера: те же вызовы E-IMZO, но на
Promise, с типами и кодами ошибок, без глобальных переменных и без зависимостей. Сообщения об ошибках на русском,
узбекском (латиница и кириллица), каракалпакском и английском.
Установка
npm install eimzo-ts
Пример
import { createEimzo, createFetchBackend, DEV_API_KEYS } from 'eimzo-ts';
const eimzo = createEimzo({
apiKeys: { ...DEV_API_KEYS, 'my-site.uz': 'API-KEY для my-site.uz' },
backend: createFetchBackend({
challengeUrl: '/api/eimzo/challenge',
loginUrl: '/api/eimzo/login',
timestampUrl: '/api/eimzo/timestamp',
}),
});
const keys = await eimzo.listKeys(); // ключи пользователя
const user = await eimzo.login(keys[0]); // вход: пароль спросит окно E-IMZO
const pkcs7 = await eimzo.signDocument('документ'); // подпись + метка времени
Как это работает
- Страница подключается к E-IMZO на компьютере пользователя:
ws://127.0.0.1:64646(http) илиwss://127.0.0.1:64443(https). - Пароль вводится в окне E-IMZO, сайт его не видит.
- Подпись проверяет ваш backend через e-imzo-server. Библиотека подписи не проверяет.
Когда не подходит
- Проверка подписи — только e-imzo-server на сервере.
- Мобильная подпись (ID-CARD E-IMZO MOBILE) — пока не поддерживается.
- Готовые UI-компоненты — их нет.
Документация
- README на русском: API, ошибки, пароль, фреймворки.
- Backend: эндпоинты, пример на Spring Boot, статусы
/backend/auth, безопасность. - Переход с e-imzo.js.
- Демо — работает и без E-IMZO.
- Подробная документация на английском: вход, подпись, API, FAQ, ошибки.