eimzo-sign-core 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -40
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,65 +1,137 @@
|
|
|
1
1
|
# eimzo-sign-core
|
|
2
2
|
|
|
3
|
-
E-IMZO
|
|
4
|
-
Vue / React /
|
|
3
|
+
E-IMZO bilan imzolash mantig'i — **oynasiz**, framework'siz.
|
|
4
|
+
UI'ni o'zingiz qurasiz. Vue / React / oddiy JS — farqi yo'q.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
Tayyor Vue modal kerak bo'lsa — [`eimzo-sign-vue`](https://www.npmjs.com/package/eimzo-sign-vue).
|
|
6
|
+
Tayyor Vue oyna kerak bo'lsa: [`eimzo-sign-vue`](https://www.npmjs.com/package/eimzo-sign-vue).
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
---
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
- `signBatch` kalitni **bir marta** yuklaydi — parol bir marta so'raladi.
|
|
13
|
-
- Har imzodan keyin **seriya raqami** tanlangan sertifikatga tekshiriladi
|
|
14
|
-
(`E_SERIAL_MISMATCH`).
|
|
15
|
-
- Sessiya tugagach yuklangan kalit holati JS'da **saqlanmaydi**.
|
|
16
|
-
- `console` ga **hech narsa yozilmaydi** — barchasi `onAudit(event)` orqali,
|
|
17
|
-
faqat `serial` / `docId` (shaxsiy ma'lumot emas).
|
|
18
|
-
- Barcha rad etishlar `EimzoError` — barqaror `.code` bilan.
|
|
10
|
+
## O'rnatish
|
|
19
11
|
|
|
20
|
-
|
|
12
|
+
```sh
|
|
13
|
+
npm i eimzo-sign-core
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Ishlatish
|
|
21
19
|
|
|
22
20
|
```ts
|
|
23
21
|
import { EimzoClient } from 'eimzo-sign-core'
|
|
24
22
|
|
|
25
23
|
const eimzo = new EimzoClient({
|
|
26
|
-
apiKeys: [['example.uz',
|
|
27
|
-
timeoutMs: 30_000,
|
|
28
|
-
onAudit: (e) => auditLog.write(e),
|
|
24
|
+
apiKeys: [['example.uz', import.meta.env.VITE_EIMZO_KEY]], // .env dan
|
|
29
25
|
})
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
// 1. E-IMZO ga ulanish
|
|
28
|
+
await eimzo.install()
|
|
29
|
+
|
|
30
|
+
// 2. Sertifikatlar ro'yxati
|
|
31
|
+
const certs = await eimzo.listCerts()
|
|
32
|
+
|
|
33
|
+
// 3. Imzolash
|
|
34
|
+
const res = await eimzo.sign(certs[0], 'Salom dunyo')
|
|
35
|
+
console.log(res.pkcs7_64) // imzo — serverga shuni yuborasiz
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Bir nechta hujjat
|
|
39
|
+
|
|
40
|
+
Kalit **bir marta** yuklanadi (bitta parol):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
33
43
|
const items = await eimzo.signBatch(certs[0], [
|
|
34
|
-
{ id: '
|
|
35
|
-
{ id: '
|
|
44
|
+
{ id: 'a', content: xml1 },
|
|
45
|
+
{ id: 'b', content: xml2 },
|
|
46
|
+
{ id: 'c', content: xml3 },
|
|
36
47
|
], {
|
|
37
|
-
|
|
38
|
-
onProgress: (p) => console.debug(p.done, '/', p.total),
|
|
48
|
+
onProgress: (p) => console.log(`${p.done}/${p.total}`),
|
|
39
49
|
})
|
|
40
|
-
|
|
50
|
+
|
|
51
|
+
for (const it of items) {
|
|
52
|
+
if (it.ok) await api.send(it) // { id, pkcs7_64, signature_hex, signer_serial_number }
|
|
53
|
+
else console.warn(it.id, it.error.code) // bittasi xato bo'lsa qolganlari davom etadi
|
|
54
|
+
}
|
|
41
55
|
```
|
|
42
56
|
|
|
43
|
-
|
|
57
|
+
### Xatolarni ushlash
|
|
44
58
|
|
|
45
|
-
|
|
59
|
+
```ts
|
|
60
|
+
import { EimzoError } from 'eimzo-sign-core'
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
await eimzo.install()
|
|
64
|
+
} catch (e) {
|
|
65
|
+
if (EimzoError.is(e, 'E_NOT_INSTALLED')) alert('E-IMZO dasturini ishga tushiring')
|
|
66
|
+
else if (EimzoError.is(e, 'E_VERSION_LOW')) alert('E-IMZO ni yangilang')
|
|
67
|
+
else throw e
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Metodlar
|
|
74
|
+
|
|
75
|
+
| Metod | Nima qiladi |
|
|
46
76
|
|---|---|
|
|
47
|
-
| `install()` |
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `signBatch(cert, docs, opts?)` |
|
|
52
|
-
| `
|
|
53
|
-
|
|
77
|
+
| `install()` | Versiyani tekshiradi, API kalitlarini o'rnatadi. Boshida bir marta. |
|
|
78
|
+
| `listCerts()` | Sertifikatlar ro'yxati (`Cert[]`) |
|
|
79
|
+
| `isIdCardPlugged()` | ID-karta o'quvchi ulanganmi (`boolean`) |
|
|
80
|
+
| `sign(cert, matn)` | Bitta hujjatni imzolaydi |
|
|
81
|
+
| `signBatch(cert, docs, opts?)` | Bir nechta hujjatni bitta kalit bilan imzolaydi |
|
|
82
|
+
| `EimzoClient.idCardCert()` | ID-karta uchun "sertifikat" obyekti |
|
|
83
|
+
|
|
84
|
+
Yordamchilar: `sortCerts` (amaldagilar tepada), `certIsUsable`, `certIsExpired`,
|
|
85
|
+
`certExpiresSoon`, `dedupeCerts`.
|
|
86
|
+
|
|
87
|
+
### `signBatch` natijasi
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
[
|
|
91
|
+
{ id: 'a', ok: true, pkcs7_64, signature_hex, signer_serial_number },
|
|
92
|
+
{ id: 'b', ok: false, error: EimzoError },
|
|
93
|
+
]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Sozlamalar
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
new EimzoClient({
|
|
102
|
+
apiKeys: [['domen', 'kalit']], // majburiy — E-IMZO beradi
|
|
103
|
+
timeoutMs: 30_000, // har chaqiruv uchun kutish
|
|
104
|
+
onAudit: (e) => log(e), // kuzatuv; kutubxona console ga yozmaydi
|
|
105
|
+
})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Xato kodlari
|
|
111
|
+
|
|
112
|
+
`error.code` (matnni emas):
|
|
113
|
+
|
|
114
|
+
`E_NOT_INSTALLED` · `E_VERSION_LOW` · `E_API_KEY_REJECTED` · `E_NO_CERTS` ·
|
|
115
|
+
`E_KEY_LOAD_CANCELLED` · `E_SERIAL_MISMATCH` · `E_SIGN_FAILED` · `E_TIMEOUT` ·
|
|
116
|
+
`E_CANCELLED` · `E_TRANSPORT` · `E_MISCONFIGURED`
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Nima kafolatlanadi
|
|
121
|
+
|
|
122
|
+
- Har chaqiruvda timeout bor — osilib qolmaydi.
|
|
123
|
+
- `signBatch` da parol bir marta so'raladi.
|
|
124
|
+
- Har imzodan keyin sertifikat raqami tekshiriladi (`E_SERIAL_MISMATCH`).
|
|
125
|
+
- Kutubxona `console` ga hech narsa yozmaydi — hammasi `onAudit` orqali,
|
|
126
|
+
faqat `serial` va `docId` (shaxsiy ma'lumot emas).
|
|
127
|
+
|
|
128
|
+
**Serverda tekshiring** — bu kutubxona imzo yasaydi, autentifikatsiya qilmaydi.
|
|
54
129
|
|
|
55
|
-
|
|
56
|
-
`certExpiresSoon`, `sortCerts`, `dedupeCerts`.
|
|
130
|
+
---
|
|
57
131
|
|
|
58
132
|
## Vendored SDK
|
|
59
133
|
|
|
60
|
-
`src/vendor/` — E-IMZO rasmiy brauzer SDK'si
|
|
61
|
-
|
|
62
|
-
[`src/vendor/VENDOR.md`](src/vendor/VENDOR.md).
|
|
134
|
+
`src/vendor/` — E-IMZO rasmiy brauzer SDK'si (3–4 qatorlik bundler-moslik patchi bilan).
|
|
135
|
+
Manba, versiya, SHA-256: [`src/vendor/VENDOR.md`](src/vendor/VENDOR.md).
|
|
63
136
|
|
|
64
|
-
>
|
|
65
|
-
> brauzerda import qiling.
|
|
137
|
+
> Faqat brauzerda import qiling (SSR emas).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eimzo-sign-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Framework-agnostik E-IMZO (O'zbekiston ARM) imzolash yadrosi: tiplangan xatolar, timeout, audit hook, serial tekshiruvi. Ishlab chiqarish muhiti uchun.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|