@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.
- package/README.md +448 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +174 -0
- package/dist/config.js.map +1 -0
- package/dist/eimzo.d.ts +14 -0
- package/dist/eimzo.d.ts.map +1 -0
- package/dist/eimzo.js +142 -0
- package/dist/eimzo.js.map +1 -0
- package/dist/errors.d.ts +45 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +45 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/messages.d.ts +19 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +19 -0
- package/dist/messages.js.map +1 -0
- package/dist/sign/attach.d.ts +11 -0
- package/dist/sign/attach.d.ts.map +1 -0
- package/dist/sign/attach.js +46 -0
- package/dist/sign/attach.js.map +1 -0
- package/dist/sign/getAcceptSignature.d.ts +15 -0
- package/dist/sign/getAcceptSignature.d.ts.map +1 -0
- package/dist/sign/getAcceptSignature.js +90 -0
- package/dist/sign/getAcceptSignature.js.map +1 -0
- package/dist/sign/getSignature.d.ts +12 -0
- package/dist/sign/getSignature.d.ts.map +1 -0
- package/dist/sign/getSignature.js +66 -0
- package/dist/sign/getSignature.js.map +1 -0
- package/dist/sign/index.d.ts +8 -0
- package/dist/sign/index.d.ts.map +1 -0
- package/dist/sign/index.js +8 -0
- package/dist/sign/index.js.map +1 -0
- package/dist/sign/keyLoaders.d.ts +21 -0
- package/dist/sign/keyLoaders.d.ts.map +1 -0
- package/dist/sign/keyLoaders.js +87 -0
- package/dist/sign/keyLoaders.js.map +1 -0
- package/dist/sign/pkcs7.d.ts +33 -0
- package/dist/sign/pkcs7.d.ts.map +1 -0
- package/dist/sign/pkcs7.js +182 -0
- package/dist/sign/pkcs7.js.map +1 -0
- package/dist/sign/sign.d.ts +11 -0
- package/dist/sign/sign.d.ts.map +1 -0
- package/dist/sign/sign.js +42 -0
- package/dist/sign/sign.js.map +1 -0
- package/dist/sign/types.d.ts +48 -0
- package/dist/sign/types.d.ts.map +1 -0
- package/dist/sign/types.js +3 -0
- package/dist/sign/types.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/parseData.d.ts +13 -0
- package/dist/utils/parseData.d.ts.map +1 -0
- package/dist/utils/parseData.js +96 -0
- package/dist/utils/parseData.js.map +1 -0
- package/package.json +41 -0
package/dist/eimzo.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Основная логика работы с EIMZO
|
|
2
|
+
import { CAPIWS } from './vendors/e-imzo';
|
|
3
|
+
import { EimzoError, EimzoErrorCode, ok, err } from './errors';
|
|
4
|
+
import { parseData, parseValidDate } from './utils/parseData';
|
|
5
|
+
import { getInitialized } from './config';
|
|
6
|
+
import { ERROR_MESSAGES } from './messages';
|
|
7
|
+
/**
|
|
8
|
+
* Получить все сертификаты через certkey плагин
|
|
9
|
+
*/
|
|
10
|
+
async function getAllCertificatesCertkey() {
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
if (!getInitialized()) {
|
|
13
|
+
resolve(err(new EimzoError(EimzoErrorCode.INITIALIZATION_FAILED, ERROR_MESSAGES.NOT_INITIALIZED)));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
CAPIWS.callFunction({
|
|
17
|
+
plugin: 'certkey',
|
|
18
|
+
name: 'list_all_certificates',
|
|
19
|
+
}, (_event, data) => {
|
|
20
|
+
if (data && data.certificates) {
|
|
21
|
+
resolve(ok(data));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, data?.reason || ERROR_MESSAGES.GET_CERTKEY_CERTS_ERROR, data)));
|
|
25
|
+
}
|
|
26
|
+
}, (error) => {
|
|
27
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, ERROR_MESSAGES.CONNECT_CERTKEY_ERROR, error)));
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Получить все сертификаты через pfx плагин
|
|
33
|
+
*/
|
|
34
|
+
async function getAllCertificatesPfx() {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
if (!getInitialized()) {
|
|
37
|
+
resolve(err(new EimzoError(EimzoErrorCode.INITIALIZATION_FAILED, ERROR_MESSAGES.NOT_INITIALIZED)));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
CAPIWS.callFunction({
|
|
41
|
+
plugin: 'pfx',
|
|
42
|
+
name: 'list_all_certificates',
|
|
43
|
+
}, (_event, data) => {
|
|
44
|
+
if (data && data.certificates) {
|
|
45
|
+
resolve(ok(data));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, data?.reason || ERROR_MESSAGES.GET_PFX_CERTS_ERROR, data)));
|
|
49
|
+
}
|
|
50
|
+
}, (error) => {
|
|
51
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, ERROR_MESSAGES.CONNECT_PFX_ERROR, error)));
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Получить все сертификаты (объединяет certkey и pfx)
|
|
57
|
+
* @param uid - опциональный фильтр по ИНН/ПИНФЛ пользователя
|
|
58
|
+
* @returns Result с массивом сертификатов
|
|
59
|
+
*/
|
|
60
|
+
export async function getAllCertificates(uid) {
|
|
61
|
+
try {
|
|
62
|
+
// Получаем сертификаты из обоих источников
|
|
63
|
+
const pfxResult = await getAllCertificatesPfx();
|
|
64
|
+
const certkeyResult = await getAllCertificatesCertkey();
|
|
65
|
+
// Обрабатываем ошибки
|
|
66
|
+
if (!pfxResult.success && !certkeyResult.success) {
|
|
67
|
+
// Если оба источника вернули ошибку, возвращаем первую
|
|
68
|
+
return err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, ERROR_MESSAGES.NO_CERTS_SOURCES, {
|
|
69
|
+
pfx: pfxResult.success ? undefined : pfxResult.error,
|
|
70
|
+
certkey: certkeyResult.success ? undefined : certkeyResult.error
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
// Собираем сертификаты из успешных источников
|
|
74
|
+
const pfxCerts = pfxResult.success ? pfxResult.data.certificates || [] : [];
|
|
75
|
+
const certkeyCerts = certkeyResult.success
|
|
76
|
+
? certkeyResult.data.certificates || []
|
|
77
|
+
: [];
|
|
78
|
+
// Парсим данные
|
|
79
|
+
const parsedPfxCerts = parseData(pfxCerts, 'pfx');
|
|
80
|
+
const parsedCertkeyCerts = parseData(certkeyCerts, 'certkey');
|
|
81
|
+
// Объединяем и обрабатываем
|
|
82
|
+
const allCerts = [...parsedPfxCerts, ...parsedCertkeyCerts]
|
|
83
|
+
.map((cert) => {
|
|
84
|
+
// Определяем просроченность сертификата
|
|
85
|
+
const validTo = cert.parsedAlias?.validto;
|
|
86
|
+
let overdue = false;
|
|
87
|
+
if (validTo) {
|
|
88
|
+
const validDate = parseValidDate(validTo);
|
|
89
|
+
// Добавляем 1 день для учета времени
|
|
90
|
+
validDate.setDate(validDate.getDate() + 1);
|
|
91
|
+
overdue = new Date() > validDate;
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
...cert,
|
|
95
|
+
overdue,
|
|
96
|
+
};
|
|
97
|
+
})
|
|
98
|
+
.sort((a, b) => {
|
|
99
|
+
// Сортируем: сначала не просроченные, потом просроченные
|
|
100
|
+
const aOverdue = a.overdue ? 1 : 0;
|
|
101
|
+
const bOverdue = b.overdue ? 1 : 0;
|
|
102
|
+
return aOverdue - bOverdue;
|
|
103
|
+
});
|
|
104
|
+
// Фильтруем по uid, если указан
|
|
105
|
+
if (uid) {
|
|
106
|
+
const filteredCerts = allCerts.filter((cert) => cert.inn === uid ||
|
|
107
|
+
cert.parsedAlias?.['1.2.860.3.16.1.2'] === uid);
|
|
108
|
+
return ok(filteredCerts);
|
|
109
|
+
}
|
|
110
|
+
return ok(allCerts);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return err(new EimzoError(EimzoErrorCode.UNKNOWN_ERROR, ERROR_MESSAGES.UNEXPECTED_ERROR, error));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Получить список USB-токенов (CKC устройств)
|
|
118
|
+
* @returns Result с массивом строк описаний устройств
|
|
119
|
+
*/
|
|
120
|
+
export async function getEimzoUSBTokens() {
|
|
121
|
+
return new Promise((resolve) => {
|
|
122
|
+
if (!getInitialized()) {
|
|
123
|
+
resolve(err(new EimzoError(EimzoErrorCode.INITIALIZATION_FAILED, ERROR_MESSAGES.NOT_INITIALIZED)));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
CAPIWS.callFunction({
|
|
127
|
+
plugin: 'ckc',
|
|
128
|
+
name: 'list_ckc',
|
|
129
|
+
}, (_event, data) => {
|
|
130
|
+
if (data && data.devices) {
|
|
131
|
+
const devices = data.devices.map((device) => `${device?.type} - ${device?.deviceID}`);
|
|
132
|
+
resolve(ok(devices));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, data?.reason || 'Ошибка при получении списка USB-токенов', data)));
|
|
136
|
+
}
|
|
137
|
+
}, (error) => {
|
|
138
|
+
resolve(err(new EimzoError(EimzoErrorCode.EIMZO_SERVICE_ERROR, 'Ошибка при подключении к EIMZO сервису (ckc)', error)));
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=eimzo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eimzo.js","sourceRoot":"","sources":["../src/eimzo.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Pattern для обработки ошибок
|
|
3
|
+
*/
|
|
4
|
+
export type Result<T, E> = {
|
|
5
|
+
success: true;
|
|
6
|
+
data: T;
|
|
7
|
+
} | {
|
|
8
|
+
success: false;
|
|
9
|
+
error: E;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Енум кодов ошибок EIMZO
|
|
13
|
+
*/
|
|
14
|
+
export declare enum EimzoErrorCode {
|
|
15
|
+
INITIALIZATION_FAILED = "INITIALIZATION_FAILED",
|
|
16
|
+
CERTIFICATE_NOT_FOUND = "CERTIFICATE_NOT_FOUND",
|
|
17
|
+
PASSWORD_INCORRECT = "PASSWORD_INCORRECT",
|
|
18
|
+
EIMZO_SERVICE_ERROR = "EIMZO_SERVICE_ERROR",
|
|
19
|
+
TIMESTAMP_ERROR = "TIMESTAMP_ERROR",
|
|
20
|
+
SIGNATURE_ERROR = "SIGNATURE_ERROR",
|
|
21
|
+
WEBSOCKET_ERROR = "WEBSOCKET_ERROR",
|
|
22
|
+
INVALID_PARAMETERS = "INVALID_PARAMETERS",
|
|
23
|
+
SIGNATURE_CREATION_FAILED = "SIGNATURE_CREATION_FAILED",
|
|
24
|
+
KEY_LOAD_FAILED = "KEY_LOAD_FAILED",
|
|
25
|
+
TIMESTAMP_ATTACH_FAILED = "TIMESTAMP_ATTACH_FAILED",
|
|
26
|
+
INVALID_CERTIFICATE_TYPE = "INVALID_CERTIFICATE_TYPE",
|
|
27
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR"
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Класс ошибки EIMZO
|
|
31
|
+
*/
|
|
32
|
+
export declare class EimzoError extends Error {
|
|
33
|
+
code: EimzoErrorCode;
|
|
34
|
+
details?: unknown;
|
|
35
|
+
constructor(code: EimzoErrorCode, message: string, details?: unknown);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Утилита для создания успешного результата
|
|
39
|
+
*/
|
|
40
|
+
export declare function ok<T>(data: T): Result<T, never>;
|
|
41
|
+
/**
|
|
42
|
+
* Утилита для создания результата с ошибкой
|
|
43
|
+
*/
|
|
44
|
+
export declare function err<E>(error: E): Result<never, E>;
|
|
45
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IACnB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEjC;;GAEG;AACH,oBAAY,cAAc;IACxB,qBAAqB,0BAA0B;IAC/C,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IACzC,yBAAyB,8BAA8B;IACvD,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,wBAAwB,6BAA6B;IACrD,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAE1B,IAAI,EAAE,cAAc;IAEpB,OAAO,CAAC;gBAFR,IAAI,EAAE,cAAc,EAC3B,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,SAAS;CAM3B;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAEjD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Result Pattern и енумы ошибок для EIMZO
|
|
2
|
+
/**
|
|
3
|
+
* Енум кодов ошибок EIMZO
|
|
4
|
+
*/
|
|
5
|
+
export var EimzoErrorCode;
|
|
6
|
+
(function (EimzoErrorCode) {
|
|
7
|
+
EimzoErrorCode["INITIALIZATION_FAILED"] = "INITIALIZATION_FAILED";
|
|
8
|
+
EimzoErrorCode["CERTIFICATE_NOT_FOUND"] = "CERTIFICATE_NOT_FOUND";
|
|
9
|
+
EimzoErrorCode["PASSWORD_INCORRECT"] = "PASSWORD_INCORRECT";
|
|
10
|
+
EimzoErrorCode["EIMZO_SERVICE_ERROR"] = "EIMZO_SERVICE_ERROR";
|
|
11
|
+
EimzoErrorCode["TIMESTAMP_ERROR"] = "TIMESTAMP_ERROR";
|
|
12
|
+
EimzoErrorCode["SIGNATURE_ERROR"] = "SIGNATURE_ERROR";
|
|
13
|
+
EimzoErrorCode["WEBSOCKET_ERROR"] = "WEBSOCKET_ERROR";
|
|
14
|
+
EimzoErrorCode["INVALID_PARAMETERS"] = "INVALID_PARAMETERS";
|
|
15
|
+
EimzoErrorCode["SIGNATURE_CREATION_FAILED"] = "SIGNATURE_CREATION_FAILED";
|
|
16
|
+
EimzoErrorCode["KEY_LOAD_FAILED"] = "KEY_LOAD_FAILED";
|
|
17
|
+
EimzoErrorCode["TIMESTAMP_ATTACH_FAILED"] = "TIMESTAMP_ATTACH_FAILED";
|
|
18
|
+
EimzoErrorCode["INVALID_CERTIFICATE_TYPE"] = "INVALID_CERTIFICATE_TYPE";
|
|
19
|
+
EimzoErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
20
|
+
})(EimzoErrorCode || (EimzoErrorCode = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Класс ошибки EIMZO
|
|
23
|
+
*/
|
|
24
|
+
export class EimzoError extends Error {
|
|
25
|
+
constructor(code, message, details) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.code = code;
|
|
28
|
+
this.details = details;
|
|
29
|
+
this.name = 'EimzoError';
|
|
30
|
+
Object.setPrototypeOf(this, EimzoError.prototype);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Утилита для создания успешного результата
|
|
35
|
+
*/
|
|
36
|
+
export function ok(data) {
|
|
37
|
+
return { success: true, data };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Утилита для создания результата с ошибкой
|
|
41
|
+
*/
|
|
42
|
+
export function err(error) {
|
|
43
|
+
return { success: false, error };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAS1C;;GAEG;AACH,MAAM,CAAN,IAAY,cAcX;AAdD,WAAY,cAAc;IACxB,iEAA+C,CAAA;IAC/C,iEAA+C,CAAA;IAC/C,2DAAyC,CAAA;IACzC,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,2DAAyC,CAAA;IACzC,yEAAuD,CAAA;IACvD,qDAAmC,CAAA;IACnC,qEAAmD,CAAA;IACnD,uEAAqD,CAAA;IACrD,iDAA+B,CAAA;AACjC,CAAC,EAdW,cAAc,KAAd,cAAc,QAczB;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YACS,IAAoB,EAC3B,OAAe,EACR,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAgB;QAEpB,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { startApi, getInitialized, reset, setConfig, getTimestamper, setDefaultKeyId, getDefaultKeyId, clearDefaultKeyId, } from './config';
|
|
2
|
+
export { getAllCertificates, getEimzoUSBTokens } from './eimzo';
|
|
3
|
+
export { sign, getSignature, attach, getAcceptSignature } from './sign';
|
|
4
|
+
export type { SignOptions, SignResult, KeyIdentifier, Signer, AttachOptions, JoinSignaturesFunction, } from './sign';
|
|
5
|
+
export type { ICert, EimzoConfig, TimestamperFunction, TimestampResponse, IGetCertsRes, } from './types';
|
|
6
|
+
export { EimzoError, EimzoErrorCode, ok, err } from './errors';
|
|
7
|
+
export type { Result } from './errors';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,KAAK,EACL,SAAS,EACT,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACxE,YAAY,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,sBAAsB,GACvB,MAAM,QAAQ,CAAC;AAGhB,YAAY,EACV,KAAK,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Главный файл экспорта пакета
|
|
2
|
+
// Экспорт функций инициализации
|
|
3
|
+
export { startApi, getInitialized, reset, setConfig, getTimestamper, setDefaultKeyId, getDefaultKeyId, clearDefaultKeyId, } from './config';
|
|
4
|
+
// Экспорт функций работы с сертификатами
|
|
5
|
+
export { getAllCertificates, getEimzoUSBTokens } from './eimzo';
|
|
6
|
+
// Экспорт функций подписания
|
|
7
|
+
export { sign, getSignature, attach, getAcceptSignature } from './sign';
|
|
8
|
+
// Экспорт ошибок и Result Pattern
|
|
9
|
+
export { EimzoError, EimzoErrorCode, ok, err } from './errors';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,gCAAgC;AAChC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,KAAK,EACL,SAAS,EACT,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,yCAAyC;AACzC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,6BAA6B;AAC7B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAmBxE,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Тексты ошибок для функций работы с EIMZO
|
|
3
|
+
*/
|
|
4
|
+
export declare const ERROR_MESSAGES: {
|
|
5
|
+
readonly NOT_INITIALIZED: "EIMZO API не инициализирован. Вызовите startApi() перед использованием.";
|
|
6
|
+
readonly GET_CERTKEY_CERTS_ERROR: "Ошибка при получении сертификатов certkey";
|
|
7
|
+
readonly CONNECT_CERTKEY_ERROR: "Ошибка при подключении к EIMZO сервису (certkey)";
|
|
8
|
+
readonly GET_PFX_CERTS_ERROR: "Ошибка при получении сертификатов pfx";
|
|
9
|
+
readonly CONNECT_PFX_ERROR: "Ошибка при подключении к EIMZO сервису (pfx)";
|
|
10
|
+
readonly NO_CERTS_SOURCES: "Не удалось получить сертификаты ни из одного источника";
|
|
11
|
+
readonly UNEXPECTED_ERROR: "Неожиданная ошибка при получении сертификатов";
|
|
12
|
+
readonly SIGNATURE_CREATION_FAILED: "Ошибка создания подписи";
|
|
13
|
+
readonly KEY_LOAD_FAILED: "Ошибка загрузки ключа";
|
|
14
|
+
readonly TIMESTAMP_ATTACH_FAILED: "Ошибка добавления временной метки";
|
|
15
|
+
readonly INVALID_CERTIFICATE_TYPE: "Неверный тип сертификата";
|
|
16
|
+
readonly NO_KEY_IDENTIFIER: "Не указан идентификатор ключа и сертификат не передан";
|
|
17
|
+
readonly CERTIFICATE_NOT_SELECTED: "Не удалось выбрать сертификат для подписания";
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAejB,CAAC"}
|
package/dist/messages.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Тексты ошибок для функций работы с EIMZO
|
|
3
|
+
*/
|
|
4
|
+
export const ERROR_MESSAGES = {
|
|
5
|
+
NOT_INITIALIZED: 'EIMZO API не инициализирован. Вызовите startApi() перед использованием.',
|
|
6
|
+
GET_CERTKEY_CERTS_ERROR: 'Ошибка при получении сертификатов certkey',
|
|
7
|
+
CONNECT_CERTKEY_ERROR: 'Ошибка при подключении к EIMZO сервису (certkey)',
|
|
8
|
+
GET_PFX_CERTS_ERROR: 'Ошибка при получении сертификатов pfx',
|
|
9
|
+
CONNECT_PFX_ERROR: 'Ошибка при подключении к EIMZO сервису (pfx)',
|
|
10
|
+
NO_CERTS_SOURCES: 'Не удалось получить сертификаты ни из одного источника',
|
|
11
|
+
UNEXPECTED_ERROR: 'Неожиданная ошибка при получении сертификатов',
|
|
12
|
+
SIGNATURE_CREATION_FAILED: 'Ошибка создания подписи',
|
|
13
|
+
KEY_LOAD_FAILED: 'Ошибка загрузки ключа',
|
|
14
|
+
TIMESTAMP_ATTACH_FAILED: 'Ошибка добавления временной метки',
|
|
15
|
+
INVALID_CERTIFICATE_TYPE: 'Неверный тип сертификата',
|
|
16
|
+
NO_KEY_IDENTIFIER: 'Не указан идентификатор ключа и сертификат не передан',
|
|
17
|
+
CERTIFICATE_NOT_SELECTED: 'Не удалось выбрать сертификат для подписания',
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,eAAe,EACb,yEAAyE;IAC3E,uBAAuB,EAAE,2CAA2C;IACpE,qBAAqB,EAAE,kDAAkD;IACzE,mBAAmB,EAAE,uCAAuC;IAC5D,iBAAiB,EAAE,8CAA8C;IACjE,gBAAgB,EAAE,wDAAwD;IAC1E,gBAAgB,EAAE,+CAA+C;IACjE,yBAAyB,EAAE,yBAAyB;IACpD,eAAe,EAAE,uBAAuB;IACxC,uBAAuB,EAAE,mCAAmC;IAC5D,wBAAwB,EAAE,0BAA0B;IACpD,iBAAiB,EAAE,uDAAuD;IAC1E,wBAAwB,EAAE,8CAA8C;CAChE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Result, EimzoError } from '../errors';
|
|
2
|
+
import { Signer, SignResult, AttachOptions } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Присоединить подпись к существующей PKCS7 подписи
|
|
5
|
+
* @param existingPkcs7 - существующая PKCS7 подпись в base64
|
|
6
|
+
* @param signer - опциональный сертификат или USB-токен ('idcard'/'ckc')
|
|
7
|
+
* @param options - опции для присоединения подписи
|
|
8
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
9
|
+
*/
|
|
10
|
+
export declare function attach(existingPkcs7: string, signer?: Signer, options?: AttachOptions): Promise<Result<SignResult, EimzoError>>;
|
|
11
|
+
//# sourceMappingURL=attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../src/sign/attach.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAuB,MAAM,WAAW,CAAC;AAIpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5D;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CA0DzC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Функция для присоединения подписи к существующей PKCS7 подписи
|
|
2
|
+
import { EimzoError, EimzoErrorCode, err } from '../errors';
|
|
3
|
+
import { getAllCertificates } from '../eimzo';
|
|
4
|
+
import { getDefaultKeyId } from '../config';
|
|
5
|
+
import { ERROR_MESSAGES } from '../messages';
|
|
6
|
+
import { getAcceptSignature } from './getAcceptSignature';
|
|
7
|
+
/**
|
|
8
|
+
* Присоединить подпись к существующей PKCS7 подписи
|
|
9
|
+
* @param existingPkcs7 - существующая PKCS7 подпись в base64
|
|
10
|
+
* @param signer - опциональный сертификат или USB-токен ('idcard'/'ckc')
|
|
11
|
+
* @param options - опции для присоединения подписи
|
|
12
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
13
|
+
*/
|
|
14
|
+
export async function attach(existingPkcs7, signer, options) {
|
|
15
|
+
// Если сертификат/ключ не передан и не указан ignoreSearch, пытаемся использовать сохраненный идентификатор
|
|
16
|
+
if (!signer && !options?.ignoreSearch) {
|
|
17
|
+
const defaultKeyId = getDefaultKeyId();
|
|
18
|
+
if (!defaultKeyId) {
|
|
19
|
+
return err(new EimzoError(EimzoErrorCode.INVALID_PARAMETERS, ERROR_MESSAGES.NO_KEY_IDENTIFIER));
|
|
20
|
+
}
|
|
21
|
+
// Проверяем тип идентификатора
|
|
22
|
+
if (defaultKeyId === 'idcard' || defaultKeyId === 'ckc') {
|
|
23
|
+
// Для USB-токенов используем идентификатор напрямую
|
|
24
|
+
signer = defaultKeyId;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Для сертификатов получаем по ИНН
|
|
28
|
+
const certsResult = await getAllCertificates(defaultKeyId);
|
|
29
|
+
if (!certsResult.success) {
|
|
30
|
+
return err(certsResult.error);
|
|
31
|
+
}
|
|
32
|
+
if (certsResult.data.length === 0) {
|
|
33
|
+
return err(new EimzoError(EimzoErrorCode.CERTIFICATE_NOT_FOUND, ERROR_MESSAGES.CERTIFICATE_NOT_SELECTED, { keyId: defaultKeyId }));
|
|
34
|
+
}
|
|
35
|
+
// Берем первый не просроченный сертификат
|
|
36
|
+
signer = certsResult.data[0];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Если signer все еще undefined, возвращаем ошибку
|
|
40
|
+
if (!signer) {
|
|
41
|
+
return err(new EimzoError(EimzoErrorCode.INVALID_PARAMETERS, ERROR_MESSAGES.NO_KEY_IDENTIFIER));
|
|
42
|
+
}
|
|
43
|
+
// Присоединяем подпись
|
|
44
|
+
return getAcceptSignature(signer, existingPkcs7, options, options?.originalString, options?.joinSignatures);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/sign/attach.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAU,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,aAAqB,EACrB,MAAe,EACf,OAAuB;IAEvB,4GAA4G;IAC5G,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;QACrC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QAEvC,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,GAAG,CACR,IAAI,UAAU,CACZ,cAAc,CAAC,kBAAkB,EACjC,cAAc,CAAC,iBAAiB,CACjC,CACF,CAAC;SACH;QAED,+BAA+B;QAC/B,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,KAAK,EAAE;YACvD,oDAAoD;YACpD,MAAM,GAAG,YAAY,CAAC;SACvB;aAAM;YACL,mCAAmC;YACnC,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBACxB,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;YAED,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjC,OAAO,GAAG,CACR,IAAI,UAAU,CACZ,cAAc,CAAC,qBAAqB,EACpC,cAAc,CAAC,wBAAwB,EACvC,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CACF,CAAC;aACH;YAED,0CAA0C;YAC1C,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9B;KACF;IAED,mDAAmD;IACnD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,GAAG,CACR,IAAI,UAAU,CACZ,cAAc,CAAC,kBAAkB,EACjC,cAAc,CAAC,iBAAiB,CACjC,CACF,CAAC;KACH;IAED,uBAAuB;IACvB,OAAO,kBAAkB,CACvB,MAAM,EACN,aAAa,EACb,OAAO,EACP,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,CACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result, EimzoError } from '../errors';
|
|
2
|
+
import { ICert } from '../types';
|
|
3
|
+
import { SignOptions, SignResult } from './types';
|
|
4
|
+
import { JoinSignaturesFunction } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Создать подпись, которая присоединяется к существующей PKCS7 подписи
|
|
7
|
+
* @param signer - сертификат, 'idcard' или 'ckc'
|
|
8
|
+
* @param existingPkcs7 - существующая PKCS7 подпись в base64
|
|
9
|
+
* @param options - опции подписания
|
|
10
|
+
* @param originalString - оригинальная строка для подписания (используется для idcard/ckc)
|
|
11
|
+
* @param joinSignatures - опциональная функция для объединения подписей (для idcard/ckc)
|
|
12
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAcceptSignature(signer: ICert | 'idcard' | 'ckc', existingPkcs7: string, options?: SignOptions, originalString?: string, joinSignatures?: JoinSignaturesFunction): Promise<Result<SignResult, EimzoError>>;
|
|
15
|
+
//# sourceMappingURL=getAcceptSignature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAcceptSignature.d.ts","sourceRoot":"","sources":["../../src/sign/getAcceptSignature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2B,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,EAChC,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,WAAW,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,sBAAsB,GACtC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAmGzC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Функция для присоединения подписи к существующей PKCS7 подписи
|
|
2
|
+
import { EimzoError, EimzoErrorCode, ok, err } from '../errors';
|
|
3
|
+
import { loadCertkeyKey, getPfxKeyId } from './keyLoaders';
|
|
4
|
+
import { appendPkcs7Attached } from './pkcs7';
|
|
5
|
+
import { sign } from './sign';
|
|
6
|
+
import { ERROR_MESSAGES } from '../messages';
|
|
7
|
+
/**
|
|
8
|
+
* Создать подпись, которая присоединяется к существующей PKCS7 подписи
|
|
9
|
+
* @param signer - сертификат, 'idcard' или 'ckc'
|
|
10
|
+
* @param existingPkcs7 - существующая PKCS7 подпись в base64
|
|
11
|
+
* @param options - опции подписания
|
|
12
|
+
* @param originalString - оригинальная строка для подписания (используется для idcard/ckc)
|
|
13
|
+
* @param joinSignatures - опциональная функция для объединения подписей (для idcard/ckc)
|
|
14
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
15
|
+
*/
|
|
16
|
+
export async function getAcceptSignature(signer, existingPkcs7, options, originalString, joinSignatures) {
|
|
17
|
+
const useTimestamp = options?.useTimestamp ?? true;
|
|
18
|
+
// Обработка USB-токенов (idcard/ckc) с originalString
|
|
19
|
+
if ((signer === 'idcard' || signer === 'ckc') && originalString) {
|
|
20
|
+
if (!joinSignatures) {
|
|
21
|
+
return err(new EimzoError(EimzoErrorCode.INVALID_PARAMETERS, 'Для idcard/ckc с originalString требуется функция joinSignatures'));
|
|
22
|
+
}
|
|
23
|
+
// Создаем новую подпись для originalString
|
|
24
|
+
const signResult = await sign(originalString, signer, {
|
|
25
|
+
...options,
|
|
26
|
+
isBase64: !!originalString,
|
|
27
|
+
});
|
|
28
|
+
if (!signResult.success) {
|
|
29
|
+
return err(signResult.error);
|
|
30
|
+
}
|
|
31
|
+
// Объединяем подписи
|
|
32
|
+
const joinResult = await joinSignatures(existingPkcs7, signResult.data.signature);
|
|
33
|
+
if (!joinResult.success) {
|
|
34
|
+
return err(joinResult.error);
|
|
35
|
+
}
|
|
36
|
+
return ok({
|
|
37
|
+
signature: joinResult.data.pkcs7B64,
|
|
38
|
+
signerSerialNumber: signResult.data.signerSerialNumber,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Обработка сертификатов и USB-токенов без originalString
|
|
42
|
+
if (typeof signer === 'object' && signer.type) {
|
|
43
|
+
if (signer.type === 'certkey') {
|
|
44
|
+
// Загружаем ключ для certkey
|
|
45
|
+
const keyIdResult = await loadCertkeyKey(signer);
|
|
46
|
+
if (!keyIdResult.success) {
|
|
47
|
+
return err(keyIdResult.error);
|
|
48
|
+
}
|
|
49
|
+
// Присоединяем подпись
|
|
50
|
+
const pkcs7Result = await appendPkcs7Attached(keyIdResult.data, existingPkcs7, useTimestamp);
|
|
51
|
+
if (pkcs7Result.success) {
|
|
52
|
+
return ok({
|
|
53
|
+
signature: pkcs7Result.data.pkcs7,
|
|
54
|
+
signerSerialNumber: pkcs7Result.data.signerSerialNumber,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return err(pkcs7Result.error);
|
|
58
|
+
}
|
|
59
|
+
else if (signer.type === 'pfx') {
|
|
60
|
+
// Получаем ID ключа для pfx (из кэша или загружаем)
|
|
61
|
+
const keyIdResult = await getPfxKeyId(signer);
|
|
62
|
+
if (!keyIdResult.success) {
|
|
63
|
+
return err(keyIdResult.error);
|
|
64
|
+
}
|
|
65
|
+
// Присоединяем подпись
|
|
66
|
+
const pkcs7Result = await appendPkcs7Attached(keyIdResult.data, existingPkcs7, useTimestamp);
|
|
67
|
+
if (pkcs7Result.success) {
|
|
68
|
+
return ok({
|
|
69
|
+
signature: pkcs7Result.data.pkcs7,
|
|
70
|
+
signerSerialNumber: pkcs7Result.data.signerSerialNumber,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return err(pkcs7Result.error);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else if (signer === 'idcard' || signer === 'ckc') {
|
|
77
|
+
// USB-токен без originalString - просто присоединяем подпись
|
|
78
|
+
const pkcs7Result = await appendPkcs7Attached(signer, existingPkcs7, useTimestamp);
|
|
79
|
+
if (pkcs7Result.success) {
|
|
80
|
+
return ok({
|
|
81
|
+
signature: pkcs7Result.data.pkcs7,
|
|
82
|
+
signerSerialNumber: pkcs7Result.data.signerSerialNumber,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return err(pkcs7Result.error);
|
|
86
|
+
}
|
|
87
|
+
// Неизвестный тип сертификата
|
|
88
|
+
return err(new EimzoError(EimzoErrorCode.INVALID_CERTIFICATE_TYPE, ERROR_MESSAGES.INVALID_CERTIFICATE_TYPE, { signer }));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=getAcceptSignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAcceptSignature.js","sourceRoot":"","sources":["../../src/sign/getAcceptSignature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Result, EimzoError } from '../errors';
|
|
2
|
+
import { ICert } from '../types';
|
|
3
|
+
import { SignOptions, SignResult } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Создать подпись для сертификата или USB-токена
|
|
6
|
+
* @param signer - сертификат, 'idcard' или 'ckc'
|
|
7
|
+
* @param data - данные для подписания
|
|
8
|
+
* @param options - опции подписания
|
|
9
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
10
|
+
*/
|
|
11
|
+
export declare function getSignature(signer: ICert | 'idcard' | 'ckc', data: string, options?: SignOptions): Promise<Result<SignResult, EimzoError>>;
|
|
12
|
+
//# sourceMappingURL=getSignature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSignature.d.ts","sourceRoot":"","sources":["../../src/sign/getSignature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2B,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKlD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAwEzC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Функция создания подписи по типу сертификата
|
|
2
|
+
import { EimzoError, EimzoErrorCode, ok, err } from '../errors';
|
|
3
|
+
import { loadCertkeyKey, getPfxKeyId } from './keyLoaders';
|
|
4
|
+
import { createPkcs7 } from './pkcs7';
|
|
5
|
+
import { ERROR_MESSAGES } from '../messages';
|
|
6
|
+
/**
|
|
7
|
+
* Создать подпись для сертификата или USB-токена
|
|
8
|
+
* @param signer - сертификат, 'idcard' или 'ckc'
|
|
9
|
+
* @param data - данные для подписания
|
|
10
|
+
* @param options - опции подписания
|
|
11
|
+
* @returns Result с подписью в формате PKCS7 base64
|
|
12
|
+
*/
|
|
13
|
+
export async function getSignature(signer, data, options) {
|
|
14
|
+
const isBase64 = options?.isBase64 ?? false;
|
|
15
|
+
const useTimestamp = options?.useTimestamp ?? true;
|
|
16
|
+
// Обработка USB-токенов (idcard/ckc)
|
|
17
|
+
if (signer === 'idcard' || signer === 'ckc') {
|
|
18
|
+
// Для USB-токенов используем идентификатор напрямую как keyId
|
|
19
|
+
const result = await createPkcs7(signer, data, isBase64, useTimestamp);
|
|
20
|
+
if (result.success) {
|
|
21
|
+
return ok({
|
|
22
|
+
signature: result.data.pkcs7,
|
|
23
|
+
signerSerialNumber: result.data.signerSerialNumber,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return err(result.success ? undefined : result.error);
|
|
27
|
+
}
|
|
28
|
+
// Обработка сертификатов
|
|
29
|
+
if (typeof signer === 'object' && signer.type) {
|
|
30
|
+
if (signer.type === 'certkey') {
|
|
31
|
+
// Загружаем ключ для certkey
|
|
32
|
+
const keyIdResult = await loadCertkeyKey(signer);
|
|
33
|
+
if (!keyIdResult.success) {
|
|
34
|
+
return err(keyIdResult.error);
|
|
35
|
+
}
|
|
36
|
+
// Создаем подпись
|
|
37
|
+
const pkcs7Result = await createPkcs7(keyIdResult.data, data, isBase64, useTimestamp);
|
|
38
|
+
if (pkcs7Result.success) {
|
|
39
|
+
return ok({
|
|
40
|
+
signature: pkcs7Result.data.pkcs7,
|
|
41
|
+
signerSerialNumber: pkcs7Result.data.signerSerialNumber,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return err(pkcs7Result.error);
|
|
45
|
+
}
|
|
46
|
+
else if (signer.type === 'pfx') {
|
|
47
|
+
// Получаем ID ключа для pfx (из кэша или загружаем)
|
|
48
|
+
const keyIdResult = await getPfxKeyId(signer);
|
|
49
|
+
if (!keyIdResult.success) {
|
|
50
|
+
return err(keyIdResult.error);
|
|
51
|
+
}
|
|
52
|
+
// Создаем подпись
|
|
53
|
+
const pkcs7Result = await createPkcs7(keyIdResult.data, data, isBase64, useTimestamp);
|
|
54
|
+
if (pkcs7Result.success) {
|
|
55
|
+
return ok({
|
|
56
|
+
signature: pkcs7Result.data.pkcs7,
|
|
57
|
+
signerSerialNumber: pkcs7Result.data.signerSerialNumber,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return err(pkcs7Result.error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Неизвестный тип сертификата
|
|
64
|
+
return err(new EimzoError(EimzoErrorCode.INVALID_CERTIFICATE_TYPE, ERROR_MESSAGES.INVALID_CERTIFICATE_TYPE, { signer }));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=getSignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSignature.js","sourceRoot":"","sources":["../../src/sign/getSignature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { sign } from './sign';
|
|
2
|
+
export { getSignature } from './getSignature';
|
|
3
|
+
export { getAcceptSignature } from './getAcceptSignature';
|
|
4
|
+
export { attach } from './attach';
|
|
5
|
+
export { createPkcs7, attachTimestampToken, appendPkcs7Attached } from './pkcs7';
|
|
6
|
+
export { loadCertkeyKey, loadPfxKey, getPfxKeyId } from './keyLoaders';
|
|
7
|
+
export type { SignOptions, SignResult, KeyIdentifier, Signer, AttachOptions, JoinSignaturesFunction, } from './types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sign/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,aAAa,EACb,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
|