@nicksakerin/eimzo 0.1.0

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.
Files changed (62) hide show
  1. package/README.md +448 -0
  2. package/dist/config.d.ts +42 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +174 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/eimzo.d.ts +14 -0
  7. package/dist/eimzo.d.ts.map +1 -0
  8. package/dist/eimzo.js +142 -0
  9. package/dist/eimzo.js.map +1 -0
  10. package/dist/errors.d.ts +45 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +45 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +10 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/messages.d.ts +19 -0
  19. package/dist/messages.d.ts.map +1 -0
  20. package/dist/messages.js +19 -0
  21. package/dist/messages.js.map +1 -0
  22. package/dist/sign/attach.d.ts +11 -0
  23. package/dist/sign/attach.d.ts.map +1 -0
  24. package/dist/sign/attach.js +46 -0
  25. package/dist/sign/attach.js.map +1 -0
  26. package/dist/sign/getAcceptSignature.d.ts +15 -0
  27. package/dist/sign/getAcceptSignature.d.ts.map +1 -0
  28. package/dist/sign/getAcceptSignature.js +90 -0
  29. package/dist/sign/getAcceptSignature.js.map +1 -0
  30. package/dist/sign/getSignature.d.ts +12 -0
  31. package/dist/sign/getSignature.d.ts.map +1 -0
  32. package/dist/sign/getSignature.js +66 -0
  33. package/dist/sign/getSignature.js.map +1 -0
  34. package/dist/sign/index.d.ts +8 -0
  35. package/dist/sign/index.d.ts.map +1 -0
  36. package/dist/sign/index.js +8 -0
  37. package/dist/sign/index.js.map +1 -0
  38. package/dist/sign/keyLoaders.d.ts +21 -0
  39. package/dist/sign/keyLoaders.d.ts.map +1 -0
  40. package/dist/sign/keyLoaders.js +87 -0
  41. package/dist/sign/keyLoaders.js.map +1 -0
  42. package/dist/sign/pkcs7.d.ts +33 -0
  43. package/dist/sign/pkcs7.d.ts.map +1 -0
  44. package/dist/sign/pkcs7.js +182 -0
  45. package/dist/sign/pkcs7.js.map +1 -0
  46. package/dist/sign/sign.d.ts +11 -0
  47. package/dist/sign/sign.d.ts.map +1 -0
  48. package/dist/sign/sign.js +42 -0
  49. package/dist/sign/sign.js.map +1 -0
  50. package/dist/sign/types.d.ts +48 -0
  51. package/dist/sign/types.d.ts.map +1 -0
  52. package/dist/sign/types.js +3 -0
  53. package/dist/sign/types.js.map +1 -0
  54. package/dist/types.d.ts +43 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +3 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/utils/parseData.d.ts +13 -0
  59. package/dist/utils/parseData.d.ts.map +1 -0
  60. package/dist/utils/parseData.js +96 -0
  61. package/dist/utils/parseData.js.map +1 -0
  62. package/package.json +41 -0
@@ -0,0 +1,96 @@
1
+ // Парсинг данных сертификатов
2
+ /**
3
+ * Вспомогательная функция для получения значения из X500 строки
4
+ * Эмулирует splitKeep - разделяет строку с сохранением разделителей
5
+ */
6
+ function getX500Val(s, f) {
7
+ // Ищем паттерн "FIELD=" в строке
8
+ const searchPattern = f + '=';
9
+ const index = s.indexOf(searchPattern);
10
+ if (index === -1) {
11
+ return '';
12
+ }
13
+ // Берем значение после "FIELD="
14
+ const valueStart = index + searchPattern.length;
15
+ const remaining = s.substring(valueStart);
16
+ // Ищем следующий разделитель (паттерн ,[A-Z]+=)
17
+ const nextDelimiterMatch = remaining.match(/,[A-Z]+=/);
18
+ if (nextDelimiterMatch && nextDelimiterMatch.index !== undefined) {
19
+ // Возвращаем значение до следующего разделителя
20
+ return remaining.substring(0, nextDelimiterMatch.index);
21
+ }
22
+ // Если разделителя нет, возвращаем все оставшееся значение
23
+ return remaining;
24
+ }
25
+ /**
26
+ * Парсинг данных сертификатов
27
+ * @param data - массив сырых данных сертификатов
28
+ * @param type - тип сертификата ('pfx' или 'certkey')
29
+ * @returns массив распарсенных сертификатов
30
+ */
31
+ export function parseData(data, type) {
32
+ if (!data || data.length === 0) {
33
+ return [];
34
+ }
35
+ return data.map((item) => {
36
+ let array = [];
37
+ if (type === 'pfx') {
38
+ array = item.alias ? item.alias.split(',') : [];
39
+ }
40
+ else {
41
+ array = item.subjectName ? item.subjectName.split(',') : [];
42
+ }
43
+ const json = {};
44
+ array.forEach((itemStr) => {
45
+ const parsedItem = itemStr.split('=');
46
+ if (parsedItem.length >= 2) {
47
+ json[parsedItem[0]] = parsedItem[1];
48
+ }
49
+ });
50
+ let inn = '';
51
+ let serialNumber = '';
52
+ if (type === 'certkey') {
53
+ const x500name_ex = (item.subjectName || '').toUpperCase();
54
+ const x500name_normalized = x500name_ex
55
+ .replace(/1\.2\.860\.3\.16\.1\.1=/g, 'INN=')
56
+ .replace(/1\.2\.860\.3\.16\.1\.2=/g, 'PINFL=');
57
+ inn =
58
+ getX500Val(x500name_normalized, 'INITIALS') ||
59
+ getX500Val(x500name_normalized, 'INN') ||
60
+ getX500Val(x500name_normalized, 'UID') ||
61
+ '';
62
+ serialNumber = getX500Val((item.subjectName || '').toUpperCase(), 'SERIALNUMBER');
63
+ }
64
+ else {
65
+ const x500name_ex = (item.alias || '').toUpperCase();
66
+ const x500name_normalized = x500name_ex
67
+ .replace(/1\.2\.860\.3\.16\.1\.1=/g, 'INN=')
68
+ .replace(/1\.2\.860\.3\.16\.1\.2=/g, 'PINFL=');
69
+ inn =
70
+ getX500Val(x500name_normalized, 'INN') ||
71
+ getX500Val(x500name_normalized, 'UID') ||
72
+ '';
73
+ serialNumber = getX500Val((item.alias || '').toUpperCase(), 'SERIALNUMBER');
74
+ }
75
+ return {
76
+ ...item,
77
+ inn,
78
+ serialNumber,
79
+ type,
80
+ parsedAlias: json,
81
+ };
82
+ });
83
+ }
84
+ /**
85
+ * Парсинг даты из формата DD.MM.YYYY
86
+ */
87
+ export function parseValidDate(date) {
88
+ if (!date) {
89
+ return new Date();
90
+ }
91
+ // Формат: "DD.MM.YYYY HH:mm:ss" -> берем только дату
92
+ const datePart = date.split(' ')[0];
93
+ const [day, month, year] = datePart.split('.');
94
+ return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
95
+ }
96
+ //# sourceMappingURL=parseData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseData.js","sourceRoot":"","sources":["../../src/utils/parseData.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@nicksakerin/eimzo",
3
+ "version": "0.1.0",
4
+ "description": "Библиотека для работы с клиентом EIMZO",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "module": "dist/index.js",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "prepublishOnly": "npm run build",
11
+ "test": "node node_modules/vitest/vitest.mjs run",
12
+ "test:watch": "node node_modules/vitest/vitest.mjs",
13
+ "test:ui": "node node_modules/vitest/vitest.mjs --ui",
14
+ "test:coverage": "node node_modules/vitest/vitest.mjs run --coverage"
15
+ },
16
+ "keywords": [
17
+ "eimzo",
18
+ "e-signature",
19
+ "digital-signature",
20
+ "uzbekistan"
21
+ ],
22
+ "author": "Nikita Sakerin",
23
+ "license": "ISC",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/sakerinn/eimzo.git"
27
+ },
28
+ "homepage": "https://github.com/sakerinn/eimzo#readme",
29
+ "bugs": {
30
+ "url": "https://github.com/sakerinn/eimzo/issues"
31
+ },
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "devDependencies": {
36
+ "@types/node": "^25.0.3",
37
+ "@vitest/ui": "^3.2.4",
38
+ "jsdom": "^27.0.1",
39
+ "vitest": "^3.2.4"
40
+ }
41
+ }