use-eimzo
v3.0.2
Published
React va TypeScript ilovalarida raqamli imzolar bilan ishlash uchun oddiy paket.
Downloads
41
Maintainers
Readme
use-eimzo
use-eimzo — bu React hooki bo‘lib, E-IMZO (Elektron Imzo) bilan ishlashni osonlashtiradi. U ID-card, BAIK token yoki sertifikat kalitlaridan PKCS#7 yaratish, kalitlarni ro‘yxatlash va API key’larni boshqarishni qo‘llab-quvvatlaydi.
O'rnatish
Paketni npm yoki yarn orqali o'rnating:
npm install use-eimzoyoki
yarn add use-eimzoXususiyatlar
- E-IMZO versiyasini tekshirish (
checkVersion) - API key’larni o‘rnatish (
install,addApiKey) - Foydalanuvchi kalitlarini ro‘yxatlash (
listAllKeys) - Sertifikat kaliti bilan PKCS#7 yaratish (
signKey) - ID-card bilan PKCS#7 yaratish (
signIdCard) - BAIK token bilan PKCS#7 yaratish (
signBaik)
Foydalanish
EImzoProvider
EImzoProvider komponenti yordamida ilovangizni o'rab oling, bu E-IMZO skriptining to'g'ri yuklanishini ta'minlaydi.
import { EImzoProvider } from 'use-eimzo'
function App() {
return (
<EImzoProvider>
<YourComponent />
</EImzoProvider>
)
}useEImzo Hook
useEImzo hookidan foydalanib, E-IMZO funksiyalariga kirish mumkin.
import React, { useEffect, useState } from 'react'
import { useEImzo } from 'use-eimzo'
import type { Cert } from 'use-eimzo/types'
const MyComponent = () => {
const { listAllKeys, signKey, signIdCard, signBaik, addApiKey, install } = useEImzo()
const [keys, setKeys] = useState<Cert[]>([])
const [pkcs7, setPkcs7] = useState<string | null>(null)
useEffect(() => {
const init = async () => {
try {
await install() // API keys va E-IMZO ni ishga tushirish
const allKeys = await listAllKeys()
setKeys(allKeys)
} catch (err) {
console.error('E-IMZO init xatolik:', err)
}
}
init()
}, [])
const handleSignKey = async (cert: Cert) => {
try {
const result = await signKey(cert, 'my-challenge-string')
setPkcs7(result)
} catch (err) {
console.error(err)
}
}
const handleSignIdCard = async () => {
try {
const result = await signIdCard('my-challenge-string')
setPkcs7(result)
} catch (err) {
console.error(err)
}
}
const handleSignBaik = async () => {
try {
const result = await signBaik('my-challenge-string')
setPkcs7(result)
} catch (err) {
console.error(err)
}
}
return (
<div>
<h1>E-IMZO Demo</h1>
<button onClick={handleSignIdCard}>Sign with ID-card</button>
<button onClick={handleSignBaik}>Sign with BAIK token</button>
{keys.map((cert) => (
<div key={cert.serialNumber}>
<p>
{cert.CN} - {cert.TIN}
</p>
<button onClick={() => handleSignKey(cert)}>Sign with Certificate</button>
</div>
))}
{pkcs7 && <pre>{pkcs7}</pre>}
</div>
)
}EimzoDefaultItem Komponenti
EimzoDefaultItem komponentidan sertifikat tafsilotlarini ko'rsatish uchun foydalaning.
import { EimzoDefaultItem } from 'use-eimzo'
function CertificateList({ data }) {
return (
<div>
{data.map((cert, index) => (
<EimzoDefaultItem key={index} data={cert} />
))}
</div>
)
}API
install(): Promise<void>
E-IMZO API’ni ishga tushiradi va API key’larni o‘rnatadi.
addApiKey(domain: string, key: string)
Berilgan domain va key bilan API key qo‘shadi.
listAllKeys(): Promise<Cert[]>
Foydalanuvchi sertifikatlarini ro‘yxatlaydi.
createPkcs7(keyId: string, challenge: string): Promise<string>
Berilgan keyId bilan PKCS#7 yaratadi.
signKey(item: Cert, challenge: string): Promise<string>
Sertifikat kaliti bilan PKCS#7 yaratadi.
signIdCard(challenge: string): Promise<string>
ID-card bilan PKCS#7 yaratadi. Agar karta ulanmagan bo‘lsa, xato qaytaradi.
signBaik(challenge: string): Promise<string>
BAIK token bilan PKCS#7 yaratadi. Agar token ulanmagan bo‘lsa, xato qaytaradi.
Talablar
- Hook faqat browser muhitida ishlaydi.
- E-IMZO dasturi o‘rnatilgan va ishga tushirilgan bo‘lishi kerak.
- ID-card va BAIK token ishlashi uchun ularning ulanmaganligini tekshirish zarur.
- challenge parametri istalgan string bo‘lishi mumkin, bu server tomonidan tekshiriladi.
- React 17+
Litsenziya
MIT
